vxe-pc-ui 3.15.23 → 3.15.25

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 +96 -53
  2. package/es/date-panel/src/util.js +40 -3
  3. package/es/date-picker/src/date-picker.js +20 -13
  4. package/es/date-range-picker/src/date-range-picker.js +296 -132
  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 +110 -54
  12. package/lib/date-panel/src/date-panel.min.js +1 -1
  13. package/lib/date-panel/src/util.js +43 -5
  14. package/lib/date-panel/src/util.min.js +1 -1
  15. package/lib/date-picker/src/date-picker.js +20 -13
  16. package/lib/date-picker/src/date-picker.min.js +1 -1
  17. package/lib/date-range-picker/src/date-range-picker.js +318 -139
  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 +538 -240
  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 +102 -54
  33. package/packages/date-panel/src/util.ts +42 -3
  34. package/packages/date-picker/src/date-picker.ts +21 -13
  35. package/packages/date-range-picker/src/date-range-picker.ts +296 -131
  36. package/packages/tooltip/src/tooltip.ts +41 -20
  37. package/types/components/date-panel.d.ts +18 -3
  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.1783247770465.ttf} +0 -0
  41. /package/es/icon/{iconfont.1783073807010.woff → iconfont.1783247770465.woff} +0 -0
  42. /package/es/icon/{iconfont.1783073807010.woff2 → iconfont.1783247770465.woff2} +0 -0
  43. /package/es/{iconfont.1783073807010.ttf → iconfont.1783247770465.ttf} +0 -0
  44. /package/es/{iconfont.1783073807010.woff → iconfont.1783247770465.woff} +0 -0
  45. /package/es/{iconfont.1783073807010.woff2 → iconfont.1783247770465.woff2} +0 -0
  46. /package/lib/icon/style/{iconfont.1783073807010.ttf → iconfont.1783247770465.ttf} +0 -0
  47. /package/lib/icon/style/{iconfont.1783073807010.woff → iconfont.1783247770465.woff} +0 -0
  48. /package/lib/icon/style/{iconfont.1783073807010.woff2 → iconfont.1783247770465.woff2} +0 -0
  49. /package/lib/{iconfont.1783073807010.ttf → iconfont.1783247770465.ttf} +0 -0
  50. /package/lib/{iconfont.1783073807010.woff → iconfont.1783247770465.woff} +0 -0
  51. /package/lib/{iconfont.1783073807010.woff2 → iconfont.1783247770465.woff2} +0 -0
@@ -28,6 +28,27 @@ function _iterableToArrayLimit(r, l) { var t = null == r ? null : "undefined" !=
28
28
  function _arrayWithHoles(r) { if (Array.isArray(r)) return r; }
29
29
  var _createComponentLog = (0, _log.createComponentLog)('date-range-picker'),
30
30
  errLog = _createComponentLog.errLog;
31
+ function createReactData() {
32
+ return {
33
+ initialized: false,
34
+ panelIndex: 0,
35
+ visiblePanel: false,
36
+ isAniVisible: false,
37
+ panelStyle: {},
38
+ panelPlacement: '',
39
+ isActivated: false,
40
+ selectStValue: '',
41
+ selectEdValue: '',
42
+ paneStartVal: [],
43
+ paneEndVal: []
44
+ };
45
+ }
46
+ function createInternalData() {
47
+ return {
48
+ // selectStatus: false
49
+ // hpTimeout: undefined
50
+ };
51
+ }
31
52
  var _default2 = exports.default = /* define-vxe-component start */(0, _comp.defineVxeComponent)({
32
53
  name: 'VxeDateRangePicker',
33
54
  mixins: [_ui.globalMixins.sizeMixin],
@@ -188,26 +209,11 @@ var _default2 = exports.default = /* define-vxe-component start */(0, _comp.defi
188
209
  },
189
210
  data: function data() {
190
211
  var xID = _xeUtils.default.uniqueId();
191
- var reactData = {
192
- initialized: false,
193
- panelIndex: 0,
194
- visiblePanel: false,
195
- isAniVisible: false,
196
- panelStyle: {},
197
- panelPlacement: '',
198
- isActivated: false,
199
- startValue: '',
200
- endValue: ''
201
- };
202
- var internalData = {
203
- // selectStatus: false
204
- // hpTimeout: undefined
205
- };
206
- return {
212
+ var reactData = createReactData();
213
+ return Object.assign(Object.assign({}, {}), {
207
214
  xID: xID,
208
- reactData: reactData,
209
- internalData: internalData
210
- };
215
+ reactData: reactData
216
+ });
211
217
  },
212
218
  computed: Object.assign(Object.assign({}, {}), {
213
219
  computeBtnTransfer: function computeBtnTransfer() {
@@ -296,11 +302,18 @@ var _default2 = exports.default = /* define-vxe-component start */(0, _comp.defi
296
302
  endValue = props.endValue;
297
303
  return "".concat(startValue || '').concat(endValue || '');
298
304
  },
299
- computeIsDateTimeType: function computeIsDateTimeType() {
305
+ computeIsTimeType: function computeIsTimeType() {
306
+ var $xeDateRangePicker = this;
307
+ var props = $xeDateRangePicker;
308
+ var type = props.type;
309
+ return type === 'time';
310
+ },
311
+ computeIsTimeOrDateTimeType: function computeIsTimeOrDateTimeType() {
300
312
  var $xeDateRangePicker = this;
301
313
  var props = $xeDateRangePicker;
302
314
  var type = props.type;
303
- return type === 'time' || type === 'datetime';
315
+ var isTimeType = $xeDateRangePicker.computeIsTimeType;
316
+ return isTimeType || type === 'datetime';
304
317
  },
305
318
  computeIsDatePickerType: function computeIsDatePickerType() {
306
319
  var $xeDateRangePicker = this;
@@ -381,9 +394,9 @@ var _default2 = exports.default = /* define-vxe-component start */(0, _comp.defi
381
394
  computePanelLabelObj: function computePanelLabelObj() {
382
395
  var $xeDateRangePicker = this;
383
396
  var reactData = $xeDateRangePicker.reactData;
384
- var startValue = reactData.startValue,
385
- endValue = reactData.endValue;
386
- var vals = startValue || endValue ? [startValue || '', endValue || ''] : [];
397
+ var selectStValue = reactData.selectStValue,
398
+ selectEdValue = reactData.selectEdValue;
399
+ var vals = selectStValue || selectEdValue ? [selectStValue || '', selectEdValue || ''] : [];
387
400
  return $xeDateRangePicker.formatRangeLabel(vals);
388
401
  },
389
402
  computeInputLabel: function computeInputLabel() {
@@ -520,7 +533,8 @@ var _default2 = exports.default = /* define-vxe-component start */(0, _comp.defi
520
533
  var reactData = $xeDateRangePicker.reactData;
521
534
  var modelValue = props.value,
522
535
  startValue = props.startValue,
523
- endValue = props.endValue;
536
+ endValue = props.endValue,
537
+ valueFormat = props.valueFormat;
524
538
  var restObj = {
525
539
  sValue: '',
526
540
  eValue: ''
@@ -538,19 +552,31 @@ var _default2 = exports.default = /* define-vxe-component start */(0, _comp.defi
538
552
  restObj = $xeDateRangePicker.paraeUpdateModel();
539
553
  }
540
554
  }
541
- reactData.startValue = restObj.sValue;
542
- reactData.endValue = restObj.eValue;
555
+ var startRest = restObj.sValue;
556
+ var endRest = restObj.eValue;
557
+ if (valueFormat === 'timestamp') {
558
+ if (_xeUtils.default.isString(startRest) && /^\d+$/.test(startRest)) {
559
+ startRest = Number(startRest);
560
+ }
561
+ if (_xeUtils.default.isString(endRest) && /^\d+$/.test(endRest)) {
562
+ endRest = Number(endRest);
563
+ }
564
+ }
565
+ reactData.selectStValue = startRest;
566
+ reactData.selectEdValue = endRest;
567
+ reactData.paneEndVal = [startRest, endRest];
568
+ reactData.paneStartVal = [startRest, endRest];
543
569
  },
544
570
  triggerEvent: function triggerEvent(evnt) {
545
571
  var $xeDateRangePicker = this;
546
572
  var reactData = $xeDateRangePicker.reactData;
547
- var startValue = reactData.startValue,
548
- endValue = reactData.endValue;
549
- var value = $xeDateRangePicker.getRangeValue(startValue, endValue);
573
+ var selectStValue = reactData.selectStValue,
574
+ selectEdValue = reactData.selectEdValue;
575
+ var value = $xeDateRangePicker.getRangeValue(selectStValue, selectEdValue);
550
576
  $xeDateRangePicker.dispatchEvent(evnt.type, {
551
577
  value: value,
552
- startValue: startValue,
553
- endValue: endValue
578
+ startValue: selectStValue,
579
+ endValue: selectEdValue
554
580
  }, evnt);
555
581
  },
556
582
  handleChange: function handleChange(sValue, eValue, evnt) {
@@ -590,8 +616,8 @@ var _default2 = exports.default = /* define-vxe-component start */(0, _comp.defi
590
616
  });
591
617
  }
592
618
  }
593
- reactData.startValue = startRest;
594
- reactData.endValue = endRest;
619
+ reactData.selectStValue = startRest;
620
+ reactData.selectEdValue = endRest;
595
621
  var value = $xeDateRangePicker.getRangeValue(startRest, endRest);
596
622
  var isFinish = startRest && endRest || !startRest && !endRest;
597
623
  $xeDateRangePicker.$emit('update:modelValue', value);
@@ -635,13 +661,13 @@ var _default2 = exports.default = /* define-vxe-component start */(0, _comp.defi
635
661
  var reactData = $xeDateRangePicker.reactData;
636
662
  var isDisabled = $xeDateRangePicker.computeIsDisabled;
637
663
  if (!isDisabled) {
638
- var startValue = reactData.startValue,
639
- endValue = reactData.endValue;
640
- var value = $xeDateRangePicker.getRangeValue(startValue, endValue);
664
+ var selectStValue = reactData.selectStValue,
665
+ selectEdValue = reactData.selectEdValue;
666
+ var value = $xeDateRangePicker.getRangeValue(selectStValue, selectEdValue);
641
667
  $xeDateRangePicker.dispatchEvent('prefix-click', {
642
668
  value: value,
643
- startValue: startValue,
644
- endValue: endValue
669
+ startValue: selectStValue,
670
+ endValue: selectEdValue
645
671
  }, evnt);
646
672
  }
647
673
  },
@@ -690,8 +716,8 @@ var _default2 = exports.default = /* define-vxe-component start */(0, _comp.defi
690
716
  var date = _ref.date;
691
717
  var $xeDateRangePicker = this;
692
718
  var reactData = $xeDateRangePicker.reactData;
693
- var startValue = reactData.startValue;
694
- var endValue = reactData.endValue;
719
+ var startValue = reactData.selectStValue;
720
+ var endValue = reactData.selectEdValue;
695
721
  if (startValue && endValue) {
696
722
  var currTime = date.getTime();
697
723
  var startTime = _xeUtils.default.toStringDate(startValue).getTime();
@@ -708,18 +734,18 @@ var _default2 = exports.default = /* define-vxe-component start */(0, _comp.defi
708
734
  var reactData = $xeDateRangePicker.reactData;
709
735
  var internalData = $xeDateRangePicker.internalData;
710
736
  var autoClose = props.autoClose;
711
- var startValue = reactData.startValue,
712
- endValue = reactData.endValue;
737
+ var selectStValue = reactData.selectStValue,
738
+ selectEdValue = reactData.selectEdValue;
713
739
  var selectStatus = internalData.selectStatus;
714
740
  var isDatePickerType = $xeDateRangePicker.computeIsDatePickerType;
715
741
  if (autoClose) {
716
742
  if (selectStatus && isDatePickerType) {
717
- if (startValue && endValue) {
743
+ if (selectStValue && selectEdValue) {
718
744
  $xeDateRangePicker.hidePanel();
719
745
  }
720
746
  }
721
747
  } else {
722
- if (startValue && endValue) {
748
+ if (selectStValue && selectEdValue) {
723
749
  internalData.selectStatus = false;
724
750
  }
725
751
  }
@@ -729,13 +755,13 @@ var _default2 = exports.default = /* define-vxe-component start */(0, _comp.defi
729
755
  var reactData = $xeDateRangePicker.reactData;
730
756
  var isDisabled = $xeDateRangePicker.computeIsDisabled;
731
757
  if (!isDisabled) {
732
- var startValue = reactData.startValue,
733
- endValue = reactData.endValue;
734
- var value = $xeDateRangePicker.getRangeValue(startValue, endValue);
758
+ var selectStValue = reactData.selectStValue,
759
+ selectEdValue = reactData.selectEdValue;
760
+ var value = $xeDateRangePicker.getRangeValue(selectStValue, selectEdValue);
735
761
  $xeDateRangePicker.dispatchEvent('suffix-click', {
736
762
  value: value,
737
- startValue: startValue,
738
- endValue: endValue
763
+ startValue: selectStValue,
764
+ endValue: selectEdValue
739
765
  }, evnt);
740
766
  }
741
767
  },
@@ -744,20 +770,20 @@ var _default2 = exports.default = /* define-vxe-component start */(0, _comp.defi
744
770
  var reactData = $xeDateRangePicker.reactData;
745
771
  var $xeForm = $xeDateRangePicker.$xeForm;
746
772
  var formItemInfo = $xeDateRangePicker.formItemInfo;
747
- var startValue = reactData.startValue,
748
- endValue = reactData.endValue;
773
+ var selectStValue = reactData.selectStValue,
774
+ selectEdValue = reactData.selectEdValue;
749
775
  var inpImmediate = $xeDateRangePicker.computeInpImmediate;
750
776
  var value = '';
751
777
  if (!inpImmediate) {
752
- $xeDateRangePicker.handleChange(startValue, endValue, evnt);
778
+ $xeDateRangePicker.handleChange(selectStValue, selectEdValue, evnt);
753
779
  }
754
780
  if (!reactData.visiblePanel) {
755
781
  reactData.isActivated = false;
756
782
  }
757
783
  $xeDateRangePicker.dispatchEvent('blur', {
758
784
  value: value,
759
- startValue: startValue,
760
- endValue: endValue
785
+ startValue: selectStValue,
786
+ endValue: selectEdValue
761
787
  }, evnt);
762
788
  // 自动更新校验状态
763
789
  if ($xeForm && formItemInfo) {
@@ -774,12 +800,16 @@ var _default2 = exports.default = /* define-vxe-component start */(0, _comp.defi
774
800
  },
775
801
  confirmEvent: function confirmEvent(evnt) {
776
802
  var $xeDateRangePicker = this;
803
+ var isTimeType = $xeDateRangePicker.computeIsTimeType;
777
804
  var $startDatePanel = $xeDateRangePicker.$refs.refStartDatePanel;
778
805
  var $endDatePanel = $xeDateRangePicker.$refs.refEndDatePanel;
779
806
  if ($startDatePanel && $endDatePanel) {
780
807
  var startValue = $startDatePanel.getModelValue();
781
808
  var endValue = $endDatePanel.getModelValue();
782
- if (startValue && !endValue || !startValue && endValue) {
809
+ if (isTimeType) {
810
+ $startDatePanel.confirmByEvent(evnt);
811
+ $endDatePanel.confirmByEvent(evnt);
812
+ } else if (startValue && !endValue || !startValue && endValue) {
783
813
  $xeDateRangePicker.handleChange('', '', evnt);
784
814
  } else {
785
815
  $startDatePanel.confirmByEvent(evnt);
@@ -800,22 +830,34 @@ var _default2 = exports.default = /* define-vxe-component start */(0, _comp.defi
800
830
  var internalData = $xeDateRangePicker.internalData;
801
831
  var selectStatus = internalData.selectStatus;
802
832
  var value = params.value,
833
+ currValue = params.currValue,
803
834
  $event = params.$event;
804
- var endValue = selectStatus ? reactData.endValue : '';
805
- $xeDateRangePicker.handleChange(value, endValue, $event);
835
+ var paneVals = value ? _xeUtils.default.isString(value) ? value.split(',') : [value] : [];
836
+ var startValue = '';
837
+ var endValue = '';
838
+ if (selectStatus) {
839
+ startValue = paneVals[0];
840
+ if (paneVals[1]) {
841
+ endValue = paneVals[1];
842
+ } else {
843
+ endValue = reactData.selectEdValue;
844
+ }
845
+ } else {
846
+ startValue = currValue || _xeUtils.default.last(paneVals);
847
+ }
848
+ reactData.paneEndVal = [startValue, endValue];
849
+ reactData.paneStartVal = [startValue, endValue];
850
+ $xeDateRangePicker.handleChange(startValue, endValue, $event);
806
851
  $xeDateRangePicker.handleSelectClose();
807
- if (!selectStatus) {
852
+ if (selectStatus) {
853
+ if (startValue && endValue) {
854
+ internalData.selectStatus = false;
855
+ }
856
+ } else {
808
857
  internalData.selectStatus = true;
809
858
  }
810
859
  $xeDateRangePicker.$nextTick(function () {
811
- var $startDatePanel = $xeDateRangePicker.$refs.refStartDatePanel;
812
- var $endDatePanel = $xeDateRangePicker.$refs.refEndDatePanel;
813
- if ($startDatePanel && $endDatePanel) {
814
- var startValue = $startDatePanel.getModelValue();
815
- if (!endValue && startValue) {
816
- $endDatePanel.setPanelDate(_xeUtils.default.toStringDate(startValue));
817
- }
818
- }
860
+ $xeDateRangePicker.handleUpdateStartPanelDate();
819
861
  });
820
862
  },
821
863
  endPanelChangeEvent: function endPanelChangeEvent(params) {
@@ -824,90 +866,211 @@ var _default2 = exports.default = /* define-vxe-component start */(0, _comp.defi
824
866
  var internalData = $xeDateRangePicker.internalData;
825
867
  var selectStatus = internalData.selectStatus;
826
868
  var value = params.value,
869
+ currValue = params.currValue,
827
870
  $event = params.$event;
828
- var startValue = selectStatus ? reactData.startValue : '';
829
- $xeDateRangePicker.handleChange(startValue, value, $event);
871
+ var paneVals = value ? _xeUtils.default.isString(value) ? value.split(',') : [value] : [];
872
+ var startValue = '';
873
+ var endValue = '';
874
+ if (selectStatus) {
875
+ endValue = paneVals[0];
876
+ if (paneVals[1]) {
877
+ startValue = paneVals[0];
878
+ endValue = paneVals[1];
879
+ } else {
880
+ startValue = reactData.selectStValue;
881
+ }
882
+ } else {
883
+ endValue = currValue || _xeUtils.default.last(paneVals);
884
+ }
885
+ reactData.paneEndVal = [startValue, endValue];
886
+ reactData.paneStartVal = [startValue, endValue];
887
+ $xeDateRangePicker.handleChange(startValue, endValue, $event);
830
888
  $xeDateRangePicker.handleSelectClose();
831
- if (!selectStatus) {
889
+ if (selectStatus) {
890
+ if (startValue && endValue) {
891
+ internalData.selectStatus = false;
892
+ }
893
+ } else {
832
894
  internalData.selectStatus = true;
833
895
  }
834
896
  $xeDateRangePicker.$nextTick(function () {
835
- var $startDatePanel = $xeDateRangePicker.$refs.refStartDatePanel;
836
- var $endDatePanel = $xeDateRangePicker.$refs.refEndDatePanel;
837
- if ($startDatePanel && $endDatePanel) {
838
- var endValue = $endDatePanel.getModelValue();
839
- if (!startValue && endValue) {
840
- $startDatePanel.setPanelDate(_xeUtils.default.toStringDate(endValue));
841
- }
842
- }
897
+ $xeDateRangePicker.handleUpdateEndPanelDate();
843
898
  });
844
899
  },
845
- startPanelDateBtnChangeEvent: function startPanelDateBtnChangeEvent(params) {
900
+ handleUpdateStartPanelDate: function handleUpdateStartPanelDate() {
901
+ var $xeDateRangePicker = this;
902
+ var $startDatePanel = $xeDateRangePicker.$refs.refStartDatePanel;
903
+ var $endDatePanel = $xeDateRangePicker.$refs.refEndDatePanel;
904
+ if (!$startDatePanel || !$endDatePanel) {
905
+ return;
906
+ }
907
+ var startPanelDate = $startDatePanel.getPanelDate();
908
+ var endPanelDate = $endDatePanel.getPanelDate();
909
+ if (!startPanelDate || !endPanelDate) {
910
+ return;
911
+ }
912
+ var viewType = $startDatePanel.getViewType();
913
+ var startYear = startPanelDate.getFullYear();
914
+ var startMonth = startPanelDate.getMonth();
915
+ var endYear = endPanelDate.getFullYear();
916
+ var endMonth = endPanelDate.getMonth();
917
+ switch (viewType) {
918
+ case 'day':
919
+ case 'date':
920
+ case 'week':
921
+ {
922
+ if (endYear <= startYear && endMonth <= startMonth) {
923
+ $endDatePanel.setPanelDate((0, _util.getNextMonth)(startPanelDate));
924
+ }
925
+ break;
926
+ }
927
+ case 'month':
928
+ case 'quarter':
929
+ {
930
+ if (endYear <= startYear) {
931
+ $endDatePanel.setPanelDate((0, _util.getNextYear)(startPanelDate));
932
+ }
933
+ break;
934
+ }
935
+ case 'year':
936
+ {
937
+ var yearList = $startDatePanel.computeYearList;
938
+ if (yearList.some(function (item) {
939
+ return _xeUtils.default.isDateSame(item.date, endPanelDate, 'yyyy');
940
+ })) {
941
+ $endDatePanel.setPanelDate((0, _util.getNextYear)(startPanelDate, yearList.length));
942
+ }
943
+ break;
944
+ }
945
+ }
946
+ },
947
+ startPanelDateBtnChangeEvent: function startPanelDateBtnChangeEvent() {
846
948
  var $xeDateRangePicker = this;
847
949
  var props = $xeDateRangePicker;
848
950
  var linkedPanels = props.linkedPanels;
951
+ var $startDatePanel = $xeDateRangePicker.$refs.refStartDatePanel;
952
+ var $endDatePanel = $xeDateRangePicker.$refs.refEndDatePanel;
953
+ if (!$startDatePanel || !$endDatePanel) {
954
+ return;
955
+ }
956
+ var startPanelDate = $startDatePanel.getPanelDate();
957
+ var endPanelDate = $endDatePanel.getPanelDate();
958
+ if (!startPanelDate || !endPanelDate) {
959
+ return;
960
+ }
961
+ var viewType = $startDatePanel.getViewType();
849
962
  if (linkedPanels) {
850
- var viewType = params.viewType;
851
- var $startDatePanel = $xeDateRangePicker.$refs.refStartDatePanel;
852
- var $endDatePanel = $xeDateRangePicker.$refs.refEndDatePanel;
853
- if (!$startDatePanel || !$endDatePanel) {
854
- return;
855
- }
856
- var startPanelDate = $startDatePanel.getPanelDate();
857
- if (!startPanelDate) {
858
- return;
859
- }
860
- var endYear = startPanelDate.getFullYear();
861
- var endMonth = startPanelDate.getMonth();
862
963
  switch (viewType) {
863
964
  case 'day':
864
965
  case 'date':
865
966
  case 'week':
866
967
  {
867
- if (endMonth < 11) {
868
- startPanelDate.setMonth(endMonth + 1);
869
- } else {
870
- startPanelDate.setFullYear(endYear + 1);
871
- startPanelDate.setMonth(0);
872
- }
873
- $endDatePanel.setPanelDate(startPanelDate);
968
+ $endDatePanel.setPanelDate((0, _util.getNextMonth)(startPanelDate));
969
+ break;
970
+ }
971
+ case 'month':
972
+ case 'quarter':
973
+ {
974
+ $endDatePanel.setPanelDate((0, _util.getNextYear)(startPanelDate));
975
+ break;
976
+ }
977
+ case 'year':
978
+ {
979
+ var yearList = $startDatePanel.computeYearList;
980
+ $endDatePanel.setPanelDate((0, _util.getNextYear)(startPanelDate, yearList.length));
874
981
  break;
875
982
  }
876
983
  }
984
+ } else {
985
+ $xeDateRangePicker.handleUpdateStartPanelDate();
877
986
  }
878
987
  },
879
- endPanelDateBtnChangeEvent: function endPanelDateBtnChangeEvent(params) {
988
+ handleUpdateEndPanelDate: function handleUpdateEndPanelDate() {
989
+ var $xeDateRangePicker = this;
990
+ var $startDatePanel = $xeDateRangePicker.$refs.refStartDatePanel;
991
+ var $endDatePanel = $xeDateRangePicker.$refs.refEndDatePanel;
992
+ if (!$startDatePanel || !$endDatePanel) {
993
+ return;
994
+ }
995
+ var startPanelDate = $startDatePanel.getPanelDate();
996
+ var endPanelDate = $endDatePanel.getPanelDate();
997
+ if (!startPanelDate || !endPanelDate) {
998
+ return;
999
+ }
1000
+ var viewType = $endDatePanel.getViewType();
1001
+ var startYear = startPanelDate.getFullYear();
1002
+ var startMonth = startPanelDate.getMonth();
1003
+ var endYear = endPanelDate.getFullYear();
1004
+ var endMonth = endPanelDate.getMonth();
1005
+ switch (viewType) {
1006
+ case 'day':
1007
+ case 'date':
1008
+ case 'week':
1009
+ {
1010
+ if (startYear >= endYear && startMonth >= endMonth) {
1011
+ $startDatePanel.setPanelDate((0, _util.getPrevMonth)(endPanelDate));
1012
+ }
1013
+ break;
1014
+ }
1015
+ case 'month':
1016
+ case 'quarter':
1017
+ {
1018
+ if (startYear >= endYear) {
1019
+ $startDatePanel.setPanelDate((0, _util.getPrevYear)(endPanelDate));
1020
+ }
1021
+ break;
1022
+ }
1023
+ case 'year':
1024
+ {
1025
+ var yearList = $endDatePanel.computeYearList;
1026
+ if (yearList.some(function (item) {
1027
+ return _xeUtils.default.isDateSame(item.date, startPanelDate, 'yyyy');
1028
+ })) {
1029
+ $startDatePanel.setPanelDate((0, _util.getPrevYear)(endPanelDate, yearList.length));
1030
+ }
1031
+ break;
1032
+ }
1033
+ }
1034
+ },
1035
+ endPanelDateBtnChangeEvent: function endPanelDateBtnChangeEvent() {
880
1036
  var $xeDateRangePicker = this;
881
1037
  var props = $xeDateRangePicker;
882
1038
  var linkedPanels = props.linkedPanels;
1039
+ var $startDatePanel = $xeDateRangePicker.$refs.refStartDatePanel;
1040
+ var $endDatePanel = $xeDateRangePicker.$refs.refEndDatePanel;
1041
+ if (!$startDatePanel || !$endDatePanel) {
1042
+ return;
1043
+ }
1044
+ var startPanelDate = $startDatePanel.getPanelDate();
1045
+ var endPanelDate = $endDatePanel.getPanelDate();
1046
+ if (!startPanelDate || !endPanelDate) {
1047
+ return;
1048
+ }
1049
+ var viewType = $endDatePanel.getViewType();
883
1050
  if (linkedPanels) {
884
- var viewType = params.viewType;
885
- var $startDatePanel = $xeDateRangePicker.$refs.refStartDatePanel;
886
- var $endDatePanel = $xeDateRangePicker.$refs.refEndDatePanel;
887
- if (!$startDatePanel || !$endDatePanel) {
888
- return;
889
- }
890
- var endPanelDate = $endDatePanel.getPanelDate();
891
- if (!endPanelDate) {
892
- return;
893
- }
894
- var endYear = endPanelDate.getFullYear();
895
- var endMonth = endPanelDate.getMonth();
896
1051
  switch (viewType) {
897
1052
  case 'day':
898
1053
  case 'date':
899
1054
  case 'week':
900
1055
  {
901
- if (endMonth) {
902
- endPanelDate.setMonth(endMonth - 1);
903
- } else {
904
- endPanelDate.setFullYear(endYear - 1);
905
- endPanelDate.setMonth(11);
906
- }
907
- $startDatePanel.setPanelDate(endPanelDate);
1056
+ $startDatePanel.setPanelDate((0, _util.getPrevMonth)(endPanelDate));
1057
+ break;
1058
+ }
1059
+ case 'month':
1060
+ case 'quarter':
1061
+ {
1062
+ $startDatePanel.setPanelDate((0, _util.getPrevYear)(endPanelDate));
1063
+ break;
1064
+ }
1065
+ case 'year':
1066
+ {
1067
+ var yearList = $endDatePanel.computeYearList;
1068
+ $startDatePanel.setPanelDate((0, _util.getPrevYear)(endPanelDate, yearList.length));
908
1069
  break;
909
1070
  }
910
1071
  }
1072
+ } else {
1073
+ $xeDateRangePicker.handleUpdateEndPanelDate();
911
1074
  }
912
1075
  },
913
1076
  // 全局事件
@@ -1057,6 +1220,7 @@ var _default2 = exports.default = /* define-vxe-component start */(0, _comp.defi
1057
1220
  reactData.isAniVisible = true;
1058
1221
  setTimeout(function () {
1059
1222
  reactData.visiblePanel = true;
1223
+ $xeDateRangePicker.handleUpdateStartPanelDate();
1060
1224
  $xeDateRangePicker.updatePlacement();
1061
1225
  }, 10);
1062
1226
  $xeDateRangePicker.updateZindex();
@@ -1101,8 +1265,8 @@ var _default2 = exports.default = /* define-vxe-component start */(0, _comp.defi
1101
1265
  var autoClose = shortcutOpts.autoClose;
1102
1266
  var code = option.code,
1103
1267
  clickMethod = option.clickMethod;
1104
- var startValue = reactData.startValue;
1105
- var endValue = reactData.endValue;
1268
+ var startValue = reactData.selectStValue;
1269
+ var endValue = reactData.selectEdValue;
1106
1270
  var value = $xeDateRangePicker.getRangeValue(startValue, endValue);
1107
1271
  var shortcutParams = {
1108
1272
  $dateRangePicker: $xeDateRangePicker,
@@ -1161,8 +1325,8 @@ var _default2 = exports.default = /* define-vxe-component start */(0, _comp.defi
1161
1325
  setModelValue: function setModelValue(startValue, endValue) {
1162
1326
  var $xeDateRangePicker = this;
1163
1327
  var reactData = $xeDateRangePicker.reactData;
1164
- reactData.startValue = startValue || '';
1165
- reactData.endValue = endValue || '';
1328
+ reactData.selectStValue = startValue || '';
1329
+ reactData.selectEdValue = endValue || '';
1166
1330
  var value = $xeDateRangePicker.getRangeValue(startValue, endValue);
1167
1331
  $xeDateRangePicker.emitModel(value);
1168
1332
  },
@@ -1233,6 +1397,7 @@ var _default2 = exports.default = /* define-vxe-component start */(0, _comp.defi
1233
1397
  var type = props.type,
1234
1398
  separator = props.separator,
1235
1399
  autoClose = props.autoClose,
1400
+ valueFormat = props.valueFormat,
1236
1401
  showConfirmButton = props.showConfirmButton,
1237
1402
  showClearButton = props.showClearButton;
1238
1403
  var initialized = reactData.initialized,
@@ -1240,15 +1405,18 @@ var _default2 = exports.default = /* define-vxe-component start */(0, _comp.defi
1240
1405
  visiblePanel = reactData.visiblePanel,
1241
1406
  panelPlacement = reactData.panelPlacement,
1242
1407
  panelStyle = reactData.panelStyle,
1243
- startValue = reactData.startValue,
1244
- endValue = reactData.endValue;
1408
+ selectStValue = reactData.selectStValue,
1409
+ selectEdValue = reactData.selectEdValue,
1410
+ paneStartVal = reactData.paneStartVal,
1411
+ paneEndVal = reactData.paneEndVal;
1245
1412
  var vSize = $xeDateRangePicker.computeSize;
1246
1413
  var btnTransfer = $xeDateRangePicker.computeBtnTransfer;
1247
1414
  var shortcutOpts = $xeDateRangePicker.computeShortcutOpts;
1248
1415
  var isClearable = $xeDateRangePicker.computeIsClearable;
1249
1416
  var panelLabelObj = $xeDateRangePicker.computePanelLabelObj;
1250
1417
  var shortcutList = $xeDateRangePicker.computeShortcutList;
1251
- var isDateTimeType = $xeDateRangePicker.computeIsDateTimeType;
1418
+ var isTimeType = $xeDateRangePicker.computeIsTimeType;
1419
+ var isTimeOrDateTimeType = $xeDateRangePicker.computeIsTimeOrDateTimeType;
1252
1420
  var defaultDates = $xeDateRangePicker.computeDefaultDates;
1253
1421
  var defaultTimes = $xeDateRangePicker.computeDefaultTimes;
1254
1422
  var timeOpts = $xeDateRangePicker.computeTimeOpts;
@@ -1269,7 +1437,7 @@ var _default2 = exports.default = /* define-vxe-component start */(0, _comp.defi
1269
1437
  sdTime = _defaultTimes[0],
1270
1438
  edTime = _defaultTimes[1];
1271
1439
  var hasShortcutBtn = shortcutList.length > 0;
1272
- var showConfirmBtn = showConfirmButton === null ? isDateTimeType || !autoClose : showConfirmButton;
1440
+ var showConfirmBtn = showConfirmButton === null ? isTimeOrDateTimeType || !autoClose : showConfirmButton;
1273
1441
  var showClearBtn = showClearButton === null ? isClearable : showClearButton;
1274
1442
  return h('div', {
1275
1443
  ref: 'refInputPanel',
@@ -1298,15 +1466,18 @@ var _default2 = exports.default = /* define-vxe-component start */(0, _comp.defi
1298
1466
  }, [h(_datePanel.default, {
1299
1467
  ref: 'refStartDatePanel',
1300
1468
  props: {
1301
- value: startValue,
1469
+ value: paneStartVal,
1470
+ multiple: !isTimeType,
1471
+ valueSort: true,
1472
+ limitCount: 3,
1473
+ defaultMode: 'first',
1302
1474
  type: props.type,
1303
1475
  className: props.className,
1304
1476
  minDate: props.minDate,
1305
1477
  maxDate: props.maxDate,
1306
- endDate: endValue,
1307
1478
  startDay: props.startDay,
1308
1479
  labelFormat: props.labelFormat,
1309
- valueFormat: props.valueFormat,
1480
+ valueFormat: valueFormat === 'date' || valueFormat === 'timestamp' ? '' : valueFormat,
1310
1481
  timeFormat: props.timeFormat,
1311
1482
  defaultDate: sdDate,
1312
1483
  defaultTime: sdTime,
@@ -1325,15 +1496,18 @@ var _default2 = exports.default = /* define-vxe-component start */(0, _comp.defi
1325
1496
  }), h(_datePanel.default, {
1326
1497
  ref: 'refEndDatePanel',
1327
1498
  props: {
1328
- value: endValue,
1499
+ value: paneEndVal,
1500
+ multiple: !isTimeType,
1501
+ valueSort: true,
1502
+ limitCount: 3,
1503
+ defaultMode: 'last',
1329
1504
  type: props.type,
1330
1505
  className: props.className,
1331
1506
  minDate: props.minDate,
1332
1507
  maxDate: props.maxDate,
1333
- startDate: startValue,
1334
1508
  startDay: props.startDay,
1335
1509
  labelFormat: props.labelFormat,
1336
- valueFormat: props.valueFormat,
1510
+ valueFormat: valueFormat === 'date' || valueFormat === 'timestamp' ? '' : valueFormat,
1337
1511
  timeFormat: props.timeFormat,
1338
1512
  defaultDate: edDate,
1339
1513
  defaultTime: edTime,
@@ -1360,7 +1534,7 @@ var _default2 = exports.default = /* define-vxe-component start */(0, _comp.defi
1360
1534
  }, [showClearBtn ? h(_button.default, {
1361
1535
  props: {
1362
1536
  size: 'mini',
1363
- disabled: !(startValue || endValue),
1537
+ disabled: !(selectStValue || selectEdValue),
1364
1538
  content: (0, _ui.getI18n)('vxe.button.clear')
1365
1539
  },
1366
1540
  on: {
@@ -1404,14 +1578,14 @@ var _default2 = exports.default = /* define-vxe-component start */(0, _comp.defi
1404
1578
  var slots = $xeDateRangePicker.$scopedSlots;
1405
1579
  var reactData = $xeDateRangePicker.reactData;
1406
1580
  var suffixIcon = props.suffixIcon;
1407
- var startValue = reactData.startValue,
1408
- endValue = reactData.endValue;
1581
+ var selectStValue = reactData.selectStValue,
1582
+ selectEdValue = reactData.selectEdValue;
1409
1583
  var suffixSlot = slots.suffix;
1410
1584
  var isDisabled = $xeDateRangePicker.computeIsDisabled;
1411
1585
  var isClearable = $xeDateRangePicker.computeIsClearable;
1412
1586
  return h('div', {
1413
1587
  class: ['vxe-date-range-picker--suffix', {
1414
- 'is--clear': isClearable && !isDisabled && (startValue || endValue)
1588
+ 'is--clear': isClearable && !isDisabled && (selectStValue || selectEdValue)
1415
1589
  }]
1416
1590
  }, [isClearable ? h('div', {
1417
1591
  class: 'vxe-date-range-picker--clear-icon',
@@ -1448,8 +1622,8 @@ var _default2 = exports.default = /* define-vxe-component start */(0, _comp.defi
1448
1622
  type = props.type,
1449
1623
  name = props.name,
1450
1624
  autoComplete = props.autoComplete;
1451
- var startValue = reactData.startValue,
1452
- endValue = reactData.endValue,
1625
+ var selectStValue = reactData.selectStValue,
1626
+ selectEdValue = reactData.selectEdValue,
1453
1627
  visiblePanel = reactData.visiblePanel,
1454
1628
  isActivated = reactData.isActivated;
1455
1629
  var vSize = $xeDateRangePicker.computeSize;
@@ -1468,7 +1642,7 @@ var _default2 = exports.default = /* define-vxe-component start */(0, _comp.defi
1468
1642
  var suffix = $xeDateRangePicker.renderSuffixIcon(h);
1469
1643
  return h('div', {
1470
1644
  ref: 'refElem',
1471
- class: ['vxe-date-range-picker', "type--".concat(type), className, _defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty({}, "size--".concat(vSize), vSize), 'is--prefix', !!prefix), 'is--suffix', !!suffix), 'is--visible', visiblePanel), 'is--disabled', isDisabled), 'is--active', isActivated), 'show--clear', isClearable && !isDisabled && (startValue || endValue))],
1645
+ class: ['vxe-date-range-picker', "type--".concat(type), className, _defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty({}, "size--".concat(vSize), vSize), 'is--prefix', !!prefix), 'is--suffix', !!suffix), 'is--visible', visiblePanel), 'is--disabled', isDisabled), 'is--active', isActivated), 'show--clear', isClearable && !isDisabled && (selectStValue || selectEdValue))],
1472
1646
  attrs: {
1473
1647
  spellcheck: false
1474
1648
  }
@@ -1513,6 +1687,7 @@ var _default2 = exports.default = /* define-vxe-component start */(0, _comp.defi
1513
1687
  },
1514
1688
  created: function created() {
1515
1689
  var $xeDateRangePicker = this;
1690
+ $xeDateRangePicker.internalData = createInternalData();
1516
1691
  $xeDateRangePicker.updateModelValue(true);
1517
1692
  _ui.globalEvents.on($xeDateRangePicker, 'mousewheel', $xeDateRangePicker.handleGlobalMousewheelEvent);
1518
1693
  _ui.globalEvents.on($xeDateRangePicker, 'mousedown', $xeDateRangePicker.handleGlobalMousedownEvent);
@@ -1526,6 +1701,8 @@ var _default2 = exports.default = /* define-vxe-component start */(0, _comp.defi
1526
1701
  },
1527
1702
  beforeDestroy: function beforeDestroy() {
1528
1703
  var $xeDateRangePicker = this;
1704
+ var reactData = $xeDateRangePicker.reactData;
1705
+ var internalData = $xeDateRangePicker.internalData;
1529
1706
  var panelElem = $xeDateRangePicker.$refs.refInputPanel;
1530
1707
  if (panelElem && panelElem.parentNode) {
1531
1708
  panelElem.parentNode.removeChild(panelElem);
@@ -1535,6 +1712,8 @@ var _default2 = exports.default = /* define-vxe-component start */(0, _comp.defi
1535
1712
  _ui.globalEvents.off($xeDateRangePicker, 'mousedown');
1536
1713
  _ui.globalEvents.off($xeDateRangePicker, 'blur');
1537
1714
  _ui.globalEvents.off($xeDateRangePicker, 'resize');
1715
+ _xeUtils.default.assign(reactData, createReactData());
1716
+ _xeUtils.default.assign(internalData, createInternalData());
1538
1717
  },
1539
1718
  render: function render(h) {
1540
1719
  return this.renderVN(h);