vxe-pc-ui 3.15.23 → 3.15.24

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (51) hide show
  1. package/es/date-panel/src/date-panel.js +34 -14
  2. package/es/date-panel/src/util.js +30 -3
  3. package/es/date-picker/src/date-picker.js +1 -1
  4. package/es/date-range-picker/src/date-range-picker.js +205 -124
  5. package/es/icon/style.css +1 -1
  6. package/es/style.css +1 -1
  7. package/es/style.min.css +1 -1
  8. package/es/tooltip/src/tooltip.js +34 -21
  9. package/es/ui/index.js +1 -1
  10. package/es/ui/src/log.js +1 -1
  11. package/lib/date-panel/src/date-panel.js +46 -15
  12. package/lib/date-panel/src/date-panel.min.js +1 -1
  13. package/lib/date-panel/src/util.js +31 -5
  14. package/lib/date-panel/src/util.min.js +1 -1
  15. package/lib/date-picker/src/date-picker.js +1 -1
  16. package/lib/date-picker/src/date-picker.min.js +1 -1
  17. package/lib/date-range-picker/src/date-range-picker.js +217 -131
  18. package/lib/date-range-picker/src/date-range-picker.min.js +1 -1
  19. package/lib/icon/style/style.css +1 -1
  20. package/lib/icon/style/style.min.css +1 -1
  21. package/lib/index.umd.js +339 -181
  22. package/lib/index.umd.min.js +1 -1
  23. package/lib/style.css +1 -1
  24. package/lib/style.min.css +1 -1
  25. package/lib/tooltip/src/tooltip.js +36 -21
  26. package/lib/tooltip/src/tooltip.min.js +1 -1
  27. package/lib/ui/index.js +1 -1
  28. package/lib/ui/index.min.js +1 -1
  29. package/lib/ui/src/log.js +1 -1
  30. package/lib/ui/src/log.min.js +1 -1
  31. package/package.json +1 -1
  32. package/packages/date-panel/src/date-panel.ts +38 -15
  33. package/packages/date-panel/src/util.ts +30 -3
  34. package/packages/date-picker/src/date-picker.ts +1 -1
  35. package/packages/date-range-picker/src/date-range-picker.ts +207 -123
  36. package/packages/tooltip/src/tooltip.ts +41 -20
  37. package/types/components/date-panel.d.ts +15 -2
  38. package/types/components/date-range-picker.d.ts +5 -3
  39. package/types/components/tooltip.d.ts +1 -1
  40. /package/es/icon/{iconfont.1783073807010.ttf → iconfont.1783233735491.ttf} +0 -0
  41. /package/es/icon/{iconfont.1783073807010.woff → iconfont.1783233735491.woff} +0 -0
  42. /package/es/icon/{iconfont.1783073807010.woff2 → iconfont.1783233735491.woff2} +0 -0
  43. /package/es/{iconfont.1783073807010.ttf → iconfont.1783233735491.ttf} +0 -0
  44. /package/es/{iconfont.1783073807010.woff → iconfont.1783233735491.woff} +0 -0
  45. /package/es/{iconfont.1783073807010.woff2 → iconfont.1783233735491.woff2} +0 -0
  46. /package/lib/icon/style/{iconfont.1783073807010.ttf → iconfont.1783233735491.ttf} +0 -0
  47. /package/lib/icon/style/{iconfont.1783073807010.woff → iconfont.1783233735491.woff} +0 -0
  48. /package/lib/icon/style/{iconfont.1783073807010.woff2 → iconfont.1783233735491.woff2} +0 -0
  49. /package/lib/{iconfont.1783073807010.ttf → iconfont.1783233735491.ttf} +0 -0
  50. /package/lib/{iconfont.1783073807010.woff → iconfont.1783233735491.woff} +0 -0
  51. /package/lib/{iconfont.1783073807010.woff2 → iconfont.1783233735491.woff2} +0 -0
@@ -3,13 +3,34 @@ import XEUtils from 'xe-utils';
3
3
  import { getConfig, getIcon, getI18n, commands, globalEvents, createEvent, GLOBAL_EVENT_KEYS, globalMixins, renderEmptyElement } from '../../ui';
4
4
  import { getFuncText, getLastZIndex, nextZIndex, isEnableConf } from '../../ui/src/utils';
5
5
  import { updatePanelPlacement, getEventTargetNode } from '../../ui/src/dom';
6
- import { parseDateString, parseDateObj, getRangeDateByCode, handleValueFormat, hasTimestampValueType, hasDateValueType, parseDateValue } from '../../date-panel/src/util';
6
+ import { parseDateString, parseDateObj, getRangeDateByCode, handleValueFormat, hasTimestampValueType, hasDateValueType, parseDateValue, getPrevMonth, getNextMonth } from '../../date-panel/src/util';
7
7
  import { getSlotVNs } from '../../ui/src/vn';
8
8
  import { createComponentLog } from '../../ui/src/log';
9
9
  import VxeDatePanelComponent from '../../date-panel/src/date-panel';
10
10
  import VxeButtonComponent from '../../button/src/button';
11
11
  import VxeButtonGroupComponent from '../../button/src/button-group';
12
12
  const { errLog } = createComponentLog('date-range-picker');
13
+ function createReactData() {
14
+ return {
15
+ initialized: false,
16
+ panelIndex: 0,
17
+ visiblePanel: false,
18
+ isAniVisible: false,
19
+ panelStyle: {},
20
+ panelPlacement: '',
21
+ isActivated: false,
22
+ selectStValue: '',
23
+ selectEdValue: '',
24
+ paneStartVal: '',
25
+ paneEndVal: ''
26
+ };
27
+ }
28
+ function createInternalData() {
29
+ return {
30
+ // selectStatus: false
31
+ // hpTimeout: undefined
32
+ };
33
+ }
13
34
  export default {
14
35
  name: 'VxeDateRangePicker',
15
36
  mixins: [
@@ -150,26 +171,9 @@ export default {
150
171
  },
151
172
  data() {
152
173
  const xID = XEUtils.uniqueId();
153
- const reactData = {
154
- initialized: false,
155
- panelIndex: 0,
156
- visiblePanel: false,
157
- isAniVisible: false,
158
- panelStyle: {},
159
- panelPlacement: '',
160
- isActivated: false,
161
- startValue: '',
162
- endValue: ''
163
- };
164
- const internalData = {
165
- // selectStatus: false
166
- // hpTimeout: undefined
167
- };
168
- return {
169
- xID,
170
- reactData,
171
- internalData
172
- };
174
+ const reactData = createReactData();
175
+ return Object.assign(Object.assign({}, {}), { xID,
176
+ reactData });
173
177
  },
174
178
  computed: Object.assign(Object.assign({}, {}), { computeBtnTransfer() {
175
179
  const $xeDateRangePicker = this;
@@ -340,8 +344,8 @@ export default {
340
344
  computePanelLabelObj() {
341
345
  const $xeDateRangePicker = this;
342
346
  const reactData = $xeDateRangePicker.reactData;
343
- const { startValue, endValue } = reactData;
344
- const vals = startValue || endValue ? [startValue || '', endValue || ''] : [];
347
+ const { selectStValue, selectEdValue } = reactData;
348
+ const vals = selectStValue || selectEdValue ? [selectStValue || '', selectEdValue || ''] : [];
345
349
  return $xeDateRangePicker.formatRangeLabel(vals);
346
350
  },
347
351
  computeInputLabel() {
@@ -486,15 +490,15 @@ export default {
486
490
  restObj = $xeDateRangePicker.paraeUpdateModel();
487
491
  }
488
492
  }
489
- reactData.startValue = restObj.sValue;
490
- reactData.endValue = restObj.eValue;
493
+ reactData.selectStValue = restObj.sValue;
494
+ reactData.selectEdValue = restObj.eValue;
491
495
  },
492
496
  triggerEvent(evnt) {
493
497
  const $xeDateRangePicker = this;
494
498
  const reactData = $xeDateRangePicker.reactData;
495
- const { startValue, endValue } = reactData;
496
- const value = $xeDateRangePicker.getRangeValue(startValue, endValue);
497
- $xeDateRangePicker.dispatchEvent(evnt.type, { value, startValue, endValue }, evnt);
499
+ const { selectStValue, selectEdValue } = reactData;
500
+ const value = $xeDateRangePicker.getRangeValue(selectStValue, selectEdValue);
501
+ $xeDateRangePicker.dispatchEvent(evnt.type, { value, startValue: selectStValue, endValue: selectEdValue }, evnt);
498
502
  },
499
503
  handleChange(sValue, eValue, evnt) {
500
504
  const $xeDateRangePicker = this;
@@ -524,8 +528,8 @@ export default {
524
528
  endRest = parseDateValue(endRest, type, { valueFormat: dateValueFormat });
525
529
  }
526
530
  }
527
- reactData.startValue = startRest;
528
- reactData.endValue = endRest;
531
+ reactData.selectStValue = startRest;
532
+ reactData.selectEdValue = endRest;
529
533
  const value = $xeDateRangePicker.getRangeValue(startRest, endRest);
530
534
  const isFinish = (startRest && endRest) || (!startRest && !endRest);
531
535
  $xeDateRangePicker.$emit('update:modelValue', value);
@@ -565,9 +569,9 @@ export default {
565
569
  const reactData = $xeDateRangePicker.reactData;
566
570
  const isDisabled = $xeDateRangePicker.computeIsDisabled;
567
571
  if (!isDisabled) {
568
- const { startValue, endValue } = reactData;
569
- const value = $xeDateRangePicker.getRangeValue(startValue, endValue);
570
- $xeDateRangePicker.dispatchEvent('prefix-click', { value, startValue, endValue }, evnt);
572
+ const { selectStValue, selectEdValue } = reactData;
573
+ const value = $xeDateRangePicker.getRangeValue(selectStValue, selectEdValue);
574
+ $xeDateRangePicker.dispatchEvent('prefix-click', { value, startValue: selectStValue, endValue: selectEdValue }, evnt);
571
575
  }
572
576
  },
573
577
  hidePanel() {
@@ -608,8 +612,8 @@ export default {
608
612
  panelCellClassName({ date }) {
609
613
  const $xeDateRangePicker = this;
610
614
  const reactData = $xeDateRangePicker.reactData;
611
- const startValue = reactData.startValue;
612
- const endValue = reactData.endValue;
615
+ const startValue = reactData.selectStValue;
616
+ const endValue = reactData.selectEdValue;
613
617
  if (startValue && endValue) {
614
618
  const currTime = date.getTime();
615
619
  const startTime = XEUtils.toStringDate(startValue).getTime();
@@ -626,18 +630,18 @@ export default {
626
630
  const reactData = $xeDateRangePicker.reactData;
627
631
  const internalData = $xeDateRangePicker.internalData;
628
632
  const { autoClose } = props;
629
- const { startValue, endValue } = reactData;
633
+ const { selectStValue, selectEdValue } = reactData;
630
634
  const { selectStatus } = internalData;
631
635
  const isDatePickerType = $xeDateRangePicker.computeIsDatePickerType;
632
636
  if (autoClose) {
633
637
  if (selectStatus && isDatePickerType) {
634
- if (startValue && endValue) {
638
+ if (selectStValue && selectEdValue) {
635
639
  $xeDateRangePicker.hidePanel();
636
640
  }
637
641
  }
638
642
  }
639
643
  else {
640
- if (startValue && endValue) {
644
+ if (selectStValue && selectEdValue) {
641
645
  internalData.selectStatus = false;
642
646
  }
643
647
  }
@@ -647,9 +651,9 @@ export default {
647
651
  const reactData = $xeDateRangePicker.reactData;
648
652
  const isDisabled = $xeDateRangePicker.computeIsDisabled;
649
653
  if (!isDisabled) {
650
- const { startValue, endValue } = reactData;
651
- const value = $xeDateRangePicker.getRangeValue(startValue, endValue);
652
- $xeDateRangePicker.dispatchEvent('suffix-click', { value, startValue, endValue }, evnt);
654
+ const { selectStValue, selectEdValue } = reactData;
655
+ const value = $xeDateRangePicker.getRangeValue(selectStValue, selectEdValue);
656
+ $xeDateRangePicker.dispatchEvent('suffix-click', { value, startValue: selectStValue, endValue: selectEdValue }, evnt);
653
657
  }
654
658
  },
655
659
  blurEvent(evnt) {
@@ -657,16 +661,16 @@ export default {
657
661
  const reactData = $xeDateRangePicker.reactData;
658
662
  const $xeForm = $xeDateRangePicker.$xeForm;
659
663
  const formItemInfo = $xeDateRangePicker.formItemInfo;
660
- const { startValue, endValue } = reactData;
664
+ const { selectStValue, selectEdValue } = reactData;
661
665
  const inpImmediate = $xeDateRangePicker.computeInpImmediate;
662
666
  const value = '';
663
667
  if (!inpImmediate) {
664
- $xeDateRangePicker.handleChange(startValue, endValue, evnt);
668
+ $xeDateRangePicker.handleChange(selectStValue, selectEdValue, evnt);
665
669
  }
666
670
  if (!reactData.visiblePanel) {
667
671
  reactData.isActivated = false;
668
672
  }
669
- $xeDateRangePicker.dispatchEvent('blur', { value, startValue, endValue }, evnt);
673
+ $xeDateRangePicker.dispatchEvent('blur', { value, startValue: selectStValue, endValue: selectEdValue }, evnt);
670
674
  // 自动更新校验状态
671
675
  if ($xeForm && formItemInfo) {
672
676
  $xeForm.triggerItemEvent(evnt, formItemInfo.itemConfig.field, value);
@@ -704,22 +708,31 @@ export default {
704
708
  const reactData = $xeDateRangePicker.reactData;
705
709
  const internalData = $xeDateRangePicker.internalData;
706
710
  const { selectStatus } = internalData;
707
- const { value, $event } = params;
708
- const endValue = selectStatus ? reactData.endValue : '';
709
- $xeDateRangePicker.handleChange(value, endValue, $event);
711
+ const { value, currValue, $event } = params;
712
+ const paneVals = value ? (XEUtils.isString(value) ? value.split(',') : [value]) : [];
713
+ let startValue = '';
714
+ let endValue = '';
715
+ if (selectStatus) {
716
+ startValue = paneVals[0];
717
+ if (paneVals[1]) {
718
+ endValue = paneVals[1];
719
+ }
720
+ else {
721
+ endValue = reactData.selectEdValue;
722
+ }
723
+ }
724
+ else {
725
+ startValue = currValue || XEUtils.last(paneVals);
726
+ }
727
+ reactData.paneEndVal = [startValue, endValue].join(',');
728
+ reactData.paneStartVal = [startValue, endValue].join(',');
729
+ $xeDateRangePicker.handleChange(startValue, endValue, $event);
710
730
  $xeDateRangePicker.handleSelectClose();
711
731
  if (!selectStatus) {
712
732
  internalData.selectStatus = true;
713
733
  }
714
734
  $xeDateRangePicker.$nextTick(() => {
715
- const $startDatePanel = $xeDateRangePicker.$refs.refStartDatePanel;
716
- const $endDatePanel = $xeDateRangePicker.$refs.refEndDatePanel;
717
- if ($startDatePanel && $endDatePanel) {
718
- const startValue = $startDatePanel.getModelValue();
719
- if (!endValue && startValue) {
720
- $endDatePanel.setPanelDate(XEUtils.toStringDate(startValue));
721
- }
722
- }
735
+ $xeDateRangePicker.handleUpdateStartPanelDate();
723
736
  });
724
737
  },
725
738
  endPanelChangeEvent(params) {
@@ -727,91 +740,147 @@ export default {
727
740
  const reactData = $xeDateRangePicker.reactData;
728
741
  const internalData = $xeDateRangePicker.internalData;
729
742
  const { selectStatus } = internalData;
730
- const { value, $event } = params;
731
- const startValue = selectStatus ? reactData.startValue : '';
732
- $xeDateRangePicker.handleChange(startValue, value, $event);
743
+ const { value, currValue, $event } = params;
744
+ const paneVals = value ? (XEUtils.isString(value) ? value.split(',') : [value]) : [];
745
+ let startValue = '';
746
+ let endValue = '';
747
+ if (selectStatus) {
748
+ endValue = paneVals[0];
749
+ if (paneVals[1]) {
750
+ startValue = paneVals[0];
751
+ endValue = paneVals[1];
752
+ }
753
+ else {
754
+ startValue = reactData.selectStValue;
755
+ }
756
+ }
757
+ else {
758
+ endValue = currValue || XEUtils.last(paneVals);
759
+ }
760
+ reactData.paneEndVal = [startValue, endValue].join(',');
761
+ reactData.paneStartVal = [startValue, endValue].join(',');
762
+ $xeDateRangePicker.handleChange(startValue, endValue, $event);
733
763
  $xeDateRangePicker.handleSelectClose();
734
764
  if (!selectStatus) {
735
765
  internalData.selectStatus = true;
736
766
  }
737
767
  $xeDateRangePicker.$nextTick(() => {
738
- const $startDatePanel = $xeDateRangePicker.$refs.refStartDatePanel;
739
- const $endDatePanel = $xeDateRangePicker.$refs.refEndDatePanel;
740
- if ($startDatePanel && $endDatePanel) {
741
- const endValue = $endDatePanel.getModelValue();
742
- if (!startValue && endValue) {
743
- $startDatePanel.setPanelDate(XEUtils.toStringDate(endValue));
768
+ $xeDateRangePicker.handleUpdateEndPanelDate();
769
+ });
770
+ },
771
+ handleUpdateStartPanelDate() {
772
+ const $xeDateRangePicker = this;
773
+ const $startDatePanel = $xeDateRangePicker.$refs.refStartDatePanel;
774
+ const $endDatePanel = $xeDateRangePicker.$refs.refEndDatePanel;
775
+ if (!$startDatePanel || !$endDatePanel) {
776
+ return;
777
+ }
778
+ const startPanelDate = $startDatePanel.getPanelDate();
779
+ const endPanelDate = $endDatePanel.getPanelDate();
780
+ if (!startPanelDate || !endPanelDate) {
781
+ return;
782
+ }
783
+ const viewType = $startDatePanel.getViewType();
784
+ const startYear = startPanelDate.getFullYear();
785
+ const startMonth = startPanelDate.getMonth();
786
+ const endYear = endPanelDate.getFullYear();
787
+ const endMonth = endPanelDate.getMonth();
788
+ switch (viewType) {
789
+ case 'day':
790
+ case 'date':
791
+ case 'week': {
792
+ if (endYear <= startYear && endMonth <= startMonth) {
793
+ $endDatePanel.setPanelDate(getNextMonth(startPanelDate));
744
794
  }
795
+ break;
745
796
  }
746
- });
797
+ }
747
798
  },
748
- startPanelDateBtnChangeEvent(params) {
799
+ startPanelDateBtnChangeEvent() {
749
800
  const $xeDateRangePicker = this;
750
801
  const props = $xeDateRangePicker;
751
802
  const { linkedPanels } = props;
803
+ const $startDatePanel = $xeDateRangePicker.$refs.refStartDatePanel;
804
+ const $endDatePanel = $xeDateRangePicker.$refs.refEndDatePanel;
805
+ if (!$startDatePanel || !$endDatePanel) {
806
+ return;
807
+ }
808
+ const startPanelDate = $startDatePanel.getPanelDate();
809
+ const endPanelDate = $endDatePanel.getPanelDate();
810
+ if (!startPanelDate || !endPanelDate) {
811
+ return;
812
+ }
813
+ const viewType = $startDatePanel.getViewType();
752
814
  if (linkedPanels) {
753
- const { viewType } = params;
754
- const $startDatePanel = $xeDateRangePicker.$refs.refStartDatePanel;
755
- const $endDatePanel = $xeDateRangePicker.$refs.refEndDatePanel;
756
- if (!$startDatePanel || !$endDatePanel) {
757
- return;
758
- }
759
- const startPanelDate = $startDatePanel.getPanelDate();
760
- if (!startPanelDate) {
761
- return;
762
- }
763
- const endYear = startPanelDate.getFullYear();
764
- const endMonth = startPanelDate.getMonth();
765
815
  switch (viewType) {
766
816
  case 'day':
767
817
  case 'date':
768
818
  case 'week': {
769
- if (endMonth < 11) {
770
- startPanelDate.setMonth(endMonth + 1);
771
- }
772
- else {
773
- startPanelDate.setFullYear(endYear + 1);
774
- startPanelDate.setMonth(0);
775
- }
776
- $endDatePanel.setPanelDate(startPanelDate);
819
+ $endDatePanel.setPanelDate(getNextMonth(startPanelDate));
777
820
  break;
778
821
  }
779
822
  }
780
823
  }
824
+ else {
825
+ $xeDateRangePicker.handleUpdateStartPanelDate();
826
+ }
781
827
  },
782
- endPanelDateBtnChangeEvent(params) {
828
+ handleUpdateEndPanelDate() {
829
+ const $xeDateRangePicker = this;
830
+ const $startDatePanel = $xeDateRangePicker.$refs.refStartDatePanel;
831
+ const $endDatePanel = $xeDateRangePicker.$refs.refEndDatePanel;
832
+ if (!$startDatePanel || !$endDatePanel) {
833
+ return;
834
+ }
835
+ const startPanelDate = $startDatePanel.getPanelDate();
836
+ const endPanelDate = $endDatePanel.getPanelDate();
837
+ if (!startPanelDate || !endPanelDate) {
838
+ return;
839
+ }
840
+ const viewType = $endDatePanel.getViewType();
841
+ const startYear = startPanelDate.getFullYear();
842
+ const startMonth = startPanelDate.getMonth();
843
+ const endYear = endPanelDate.getFullYear();
844
+ const endMonth = endPanelDate.getMonth();
845
+ switch (viewType) {
846
+ case 'day':
847
+ case 'date':
848
+ case 'week': {
849
+ if (startYear >= endYear && startMonth >= endMonth) {
850
+ $startDatePanel.setPanelDate(getPrevMonth(endPanelDate));
851
+ }
852
+ break;
853
+ }
854
+ }
855
+ },
856
+ endPanelDateBtnChangeEvent() {
783
857
  const $xeDateRangePicker = this;
784
858
  const props = $xeDateRangePicker;
785
859
  const { linkedPanels } = props;
860
+ const $startDatePanel = $xeDateRangePicker.$refs.refStartDatePanel;
861
+ const $endDatePanel = $xeDateRangePicker.$refs.refEndDatePanel;
862
+ if (!$startDatePanel || !$endDatePanel) {
863
+ return;
864
+ }
865
+ const startPanelDate = $startDatePanel.getPanelDate();
866
+ const endPanelDate = $endDatePanel.getPanelDate();
867
+ if (!startPanelDate || !endPanelDate) {
868
+ return;
869
+ }
870
+ const viewType = $endDatePanel.getViewType();
786
871
  if (linkedPanels) {
787
- const { viewType } = params;
788
- const $startDatePanel = $xeDateRangePicker.$refs.refStartDatePanel;
789
- const $endDatePanel = $xeDateRangePicker.$refs.refEndDatePanel;
790
- if (!$startDatePanel || !$endDatePanel) {
791
- return;
792
- }
793
- const endPanelDate = $endDatePanel.getPanelDate();
794
- if (!endPanelDate) {
795
- return;
796
- }
797
- const endYear = endPanelDate.getFullYear();
798
- const endMonth = endPanelDate.getMonth();
799
872
  switch (viewType) {
800
873
  case 'day':
801
874
  case 'date':
802
875
  case 'week': {
803
- if (endMonth) {
804
- endPanelDate.setMonth(endMonth - 1);
805
- }
806
- else {
807
- endPanelDate.setFullYear(endYear - 1);
808
- endPanelDate.setMonth(11);
809
- }
810
- $startDatePanel.setPanelDate(endPanelDate);
876
+ $startDatePanel.setPanelDate(getPrevMonth(endPanelDate));
811
877
  break;
812
878
  }
813
879
  }
814
880
  }
881
+ else {
882
+ $xeDateRangePicker.handleUpdateEndPanelDate();
883
+ }
815
884
  },
816
885
  // 全局事件
817
886
  handleGlobalMousedownEvent(evnt) {
@@ -960,6 +1029,7 @@ export default {
960
1029
  reactData.isAniVisible = true;
961
1030
  setTimeout(() => {
962
1031
  reactData.visiblePanel = true;
1032
+ $xeDateRangePicker.handleUpdateStartPanelDate();
963
1033
  $xeDateRangePicker.updatePlacement();
964
1034
  }, 10);
965
1035
  $xeDateRangePicker.updateZindex();
@@ -1002,8 +1072,8 @@ export default {
1002
1072
  const shortcutOpts = $xeDateRangePicker.computeShortcutOpts;
1003
1073
  const { autoClose } = shortcutOpts;
1004
1074
  const { code, clickMethod } = option;
1005
- let startValue = reactData.startValue;
1006
- let endValue = reactData.endValue;
1075
+ let startValue = reactData.selectStValue;
1076
+ let endValue = reactData.selectEdValue;
1007
1077
  let value = $xeDateRangePicker.getRangeValue(startValue, endValue);
1008
1078
  const shortcutParams = {
1009
1079
  $dateRangePicker: $xeDateRangePicker,
@@ -1063,8 +1133,8 @@ export default {
1063
1133
  setModelValue(startValue, endValue) {
1064
1134
  const $xeDateRangePicker = this;
1065
1135
  const reactData = $xeDateRangePicker.reactData;
1066
- reactData.startValue = startValue || '';
1067
- reactData.endValue = endValue || '';
1136
+ reactData.selectStValue = startValue || '';
1137
+ reactData.selectEdValue = endValue || '';
1068
1138
  const value = $xeDateRangePicker.getRangeValue(startValue, endValue);
1069
1139
  $xeDateRangePicker.emitModel(value);
1070
1140
  },
@@ -1132,8 +1202,8 @@ export default {
1132
1202
  if (popupOpts.enabled === false) {
1133
1203
  return renderEmptyElement($xeDateRangePicker);
1134
1204
  }
1135
- const { type, separator, autoClose, showConfirmButton, showClearButton } = props;
1136
- const { initialized, isAniVisible, visiblePanel, panelPlacement, panelStyle, startValue, endValue } = reactData;
1205
+ const { type, separator, autoClose, valueFormat, showConfirmButton, showClearButton } = props;
1206
+ const { initialized, isAniVisible, visiblePanel, panelPlacement, panelStyle, selectStValue, selectEdValue, paneStartVal, paneEndVal } = reactData;
1137
1207
  const vSize = $xeDateRangePicker.computeSize;
1138
1208
  const btnTransfer = $xeDateRangePicker.computeBtnTransfer;
1139
1209
  const shortcutOpts = $xeDateRangePicker.computeShortcutOpts;
@@ -1209,15 +1279,18 @@ export default {
1209
1279
  h(VxeDatePanelComponent, {
1210
1280
  ref: 'refStartDatePanel',
1211
1281
  props: {
1212
- value: startValue,
1282
+ value: paneStartVal,
1283
+ multiple: true,
1284
+ valueSort: true,
1285
+ limitCount: 3,
1286
+ defaultMode: 'first',
1213
1287
  type: props.type,
1214
1288
  className: props.className,
1215
1289
  minDate: props.minDate,
1216
1290
  maxDate: props.maxDate,
1217
- endDate: endValue,
1218
1291
  startDay: props.startDay,
1219
1292
  labelFormat: props.labelFormat,
1220
- valueFormat: props.valueFormat,
1293
+ valueFormat: valueFormat === 'date' || valueFormat === 'timestamp' ? '' : valueFormat,
1221
1294
  timeFormat: props.timeFormat,
1222
1295
  defaultDate: sdDate,
1223
1296
  defaultTime: sdTime,
@@ -1237,15 +1310,18 @@ export default {
1237
1310
  h(VxeDatePanelComponent, {
1238
1311
  ref: 'refEndDatePanel',
1239
1312
  props: {
1240
- value: endValue,
1313
+ value: paneEndVal,
1314
+ multiple: true,
1315
+ valueSort: true,
1316
+ limitCount: 3,
1317
+ defaultMode: 'last',
1241
1318
  type: props.type,
1242
1319
  className: props.className,
1243
1320
  minDate: props.minDate,
1244
1321
  maxDate: props.maxDate,
1245
- startDate: startValue,
1246
1322
  startDay: props.startDay,
1247
1323
  labelFormat: props.labelFormat,
1248
- valueFormat: props.valueFormat,
1324
+ valueFormat: valueFormat === 'date' || valueFormat === 'timestamp' ? '' : valueFormat,
1249
1325
  timeFormat: props.timeFormat,
1250
1326
  defaultDate: edDate,
1251
1327
  defaultTime: edTime,
@@ -1285,7 +1361,7 @@ export default {
1285
1361
  ? h(VxeButtonComponent, {
1286
1362
  props: {
1287
1363
  size: 'mini',
1288
- disabled: !(startValue || endValue),
1364
+ disabled: !(selectStValue || selectEdValue),
1289
1365
  content: getI18n('vxe.button.clear')
1290
1366
  },
1291
1367
  on: {
@@ -1354,13 +1430,13 @@ export default {
1354
1430
  const slots = $xeDateRangePicker.$scopedSlots;
1355
1431
  const reactData = $xeDateRangePicker.reactData;
1356
1432
  const { suffixIcon } = props;
1357
- const { startValue, endValue } = reactData;
1433
+ const { selectStValue, selectEdValue } = reactData;
1358
1434
  const suffixSlot = slots.suffix;
1359
1435
  const isDisabled = $xeDateRangePicker.computeIsDisabled;
1360
1436
  const isClearable = $xeDateRangePicker.computeIsClearable;
1361
1437
  return h('div', {
1362
1438
  class: ['vxe-date-range-picker--suffix', {
1363
- 'is--clear': isClearable && !isDisabled && (startValue || endValue)
1439
+ 'is--clear': isClearable && !isDisabled && (selectStValue || selectEdValue)
1364
1440
  }]
1365
1441
  }, [
1366
1442
  isClearable
@@ -1410,7 +1486,7 @@ export default {
1410
1486
  const props = $xeDateRangePicker;
1411
1487
  const reactData = $xeDateRangePicker.reactData;
1412
1488
  const { className, type, name, autoComplete } = props;
1413
- const { startValue, endValue, visiblePanel, isActivated } = reactData;
1489
+ const { selectStValue, selectEdValue, visiblePanel, isActivated } = reactData;
1414
1490
  const vSize = $xeDateRangePicker.computeSize;
1415
1491
  const isDisabled = $xeDateRangePicker.computeIsDisabled;
1416
1492
  const formReadonly = $xeDateRangePicker.computeFormReadonly;
@@ -1434,7 +1510,7 @@ export default {
1434
1510
  'is--visible': visiblePanel,
1435
1511
  'is--disabled': isDisabled,
1436
1512
  'is--active': isActivated,
1437
- 'show--clear': isClearable && !isDisabled && (startValue || endValue)
1513
+ 'show--clear': isClearable && !isDisabled && (selectStValue || selectEdValue)
1438
1514
  }],
1439
1515
  attrs: {
1440
1516
  spellcheck: false
@@ -1486,6 +1562,7 @@ export default {
1486
1562
  },
1487
1563
  created() {
1488
1564
  const $xeDateRangePicker = this;
1565
+ $xeDateRangePicker.internalData = createInternalData();
1489
1566
  $xeDateRangePicker.updateModelValue(true);
1490
1567
  globalEvents.on($xeDateRangePicker, 'mousewheel', $xeDateRangePicker.handleGlobalMousewheelEvent);
1491
1568
  globalEvents.on($xeDateRangePicker, 'mousedown', $xeDateRangePicker.handleGlobalMousedownEvent);
@@ -1499,6 +1576,8 @@ export default {
1499
1576
  },
1500
1577
  beforeDestroy() {
1501
1578
  const $xeDateRangePicker = this;
1579
+ const reactData = $xeDateRangePicker.reactData;
1580
+ const internalData = $xeDateRangePicker.internalData;
1502
1581
  const panelElem = $xeDateRangePicker.$refs.refInputPanel;
1503
1582
  if (panelElem && panelElem.parentNode) {
1504
1583
  panelElem.parentNode.removeChild(panelElem);
@@ -1508,6 +1587,8 @@ export default {
1508
1587
  globalEvents.off($xeDateRangePicker, 'mousedown');
1509
1588
  globalEvents.off($xeDateRangePicker, 'blur');
1510
1589
  globalEvents.off($xeDateRangePicker, 'resize');
1590
+ XEUtils.assign(reactData, createReactData());
1591
+ XEUtils.assign(internalData, createInternalData());
1511
1592
  },
1512
1593
  render(h) {
1513
1594
  return this.renderVN(h);