Browse Source

DatePicker: fix incorrect interaction on range change when defaultTime provided

nighca 7 years ago
parent
commit
2880132de8
2 changed files with 34 additions and 29 deletions
  1. 2 3
      packages/date-picker/src/panel/date-range.vue
  2. 32 26
      test/unit/specs/date-picker.spec.js

+ 2 - 3
packages/date-picker/src/panel/date-range.vue

@@ -426,9 +426,8 @@
       },
 
       handleChangeRange(val) {
-        const defaultTime = this.defaultTime || [];
-        this.minDate = modifyWithGivenTime(val.minDate, defaultTime[0]);
-        this.maxDate = modifyWithGivenTime(val.maxDate, defaultTime[1]);
+        this.minDate = val.minDate;
+        this.maxDate = val.maxDate;
         this.rangeState = val.rangeState;
       },
 

+ 32 - 26
test/unit/specs/date-picker.spec.js

@@ -1272,20 +1272,23 @@ describe('DatePicker', () => {
           triggerEvent(leftCell, 'click', true);
           setTimeout(_ => {
             triggerEvent(rightCell, 'mousemove', true);
-            triggerEvent(rightCell, 'click', true);
-
             setTimeout(_ => {
-              const {
-                minDate,
-                maxDate
-              } = vmWithDefaultTime.picker;
-              expect(minDate.getHours()).to.be.equal(11);
-              expect(minDate.getMinutes()).to.be.equal(59);
-              expect(minDate.getSeconds()).to.be.equal(59);
-              expect(maxDate.getHours()).to.be.equal(0);
-              expect(maxDate.getMinutes()).to.be.equal(0);
-              expect(maxDate.getSeconds()).to.be.equal(0);
-              done();
+              expect(rightCell.classList.contains('in-range')).to.be.true;
+
+              triggerEvent(rightCell, 'click', true);
+              setTimeout(_ => {
+                const {
+                  minDate,
+                  maxDate
+                } = vmWithDefaultTime.picker;
+                expect(minDate.getHours()).to.be.equal(11);
+                expect(minDate.getMinutes()).to.be.equal(59);
+                expect(minDate.getSeconds()).to.be.equal(59);
+                expect(maxDate.getHours()).to.be.equal(0);
+                expect(maxDate.getMinutes()).to.be.equal(0);
+                expect(maxDate.getSeconds()).to.be.equal(0);
+                done();
+              }, DELAY);
             }, DELAY);
           }, DELAY);
         }, DELAY);
@@ -1317,20 +1320,23 @@ describe('DatePicker', () => {
           triggerEvent(leftCell, 'click', true);
           setTimeout(_ => {
             triggerEvent(rightCell, 'mousemove', true);
-            triggerEvent(rightCell, 'click', true);
-
             setTimeout(_ => {
-              const {
-                minDate,
-                maxDate
-              } = vmWithDefaultTime.picker;
-              expect(minDate.getHours()).to.be.equal(11);
-              expect(minDate.getMinutes()).to.be.equal(59);
-              expect(minDate.getSeconds()).to.be.equal(59);
-              expect(maxDate.getHours()).to.be.equal(18);
-              expect(maxDate.getMinutes()).to.be.equal(0);
-              expect(maxDate.getSeconds()).to.be.equal(0);
-              done();
+              expect(rightCell.classList.contains('in-range')).to.be.true;
+
+              triggerEvent(rightCell, 'click', true);
+              setTimeout(_ => {
+                const {
+                  minDate,
+                  maxDate
+                } = vmWithDefaultTime.picker;
+                expect(minDate.getHours()).to.be.equal(11);
+                expect(minDate.getMinutes()).to.be.equal(59);
+                expect(minDate.getSeconds()).to.be.equal(59);
+                expect(maxDate.getHours()).to.be.equal(18);
+                expect(maxDate.getMinutes()).to.be.equal(0);
+                expect(maxDate.getSeconds()).to.be.equal(0);
+                done();
+              }, DELAY);
             }, DELAY);
           }, DELAY);
         }, DELAY);