vxe-pc-ui 4.15.23 → 4.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 (62) hide show
  1. package/dist/all.esm.js +544 -277
  2. package/dist/style.css +1 -1
  3. package/dist/style.min.css +1 -1
  4. package/es/cascader/src/cascader.js +1 -0
  5. package/es/date-panel/src/date-panel.js +112 -67
  6. package/es/date-panel/src/util.js +38 -1
  7. package/es/date-picker/src/date-picker.js +20 -13
  8. package/es/date-range-picker/src/date-range-picker.js +295 -130
  9. package/es/form/src/form.js +1 -0
  10. package/es/icon/style.css +1 -1
  11. package/es/style.css +1 -1
  12. package/es/style.min.css +1 -1
  13. package/es/tooltip/src/tooltip.js +30 -18
  14. package/es/ui/index.js +1 -1
  15. package/es/ui/src/log.js +1 -1
  16. package/lib/cascader/src/cascader.js +1 -0
  17. package/lib/cascader/src/cascader.min.js +1 -1
  18. package/lib/date-panel/src/date-panel.js +132 -68
  19. package/lib/date-panel/src/date-panel.min.js +1 -1
  20. package/lib/date-panel/src/util.js +42 -2
  21. package/lib/date-panel/src/util.min.js +1 -1
  22. package/lib/date-picker/src/date-picker.js +22 -13
  23. package/lib/date-picker/src/date-picker.min.js +1 -1
  24. package/lib/date-range-picker/src/date-range-picker.js +322 -142
  25. package/lib/date-range-picker/src/date-range-picker.min.js +1 -1
  26. package/lib/form/src/form.js +1 -0
  27. package/lib/form/src/form.min.js +1 -1
  28. package/lib/icon/style/style.css +1 -1
  29. package/lib/icon/style/style.min.css +1 -1
  30. package/lib/index.umd.js +552 -249
  31. package/lib/index.umd.min.js +1 -1
  32. package/lib/style.css +1 -1
  33. package/lib/style.min.css +1 -1
  34. package/lib/tooltip/src/tooltip.js +29 -17
  35. package/lib/tooltip/src/tooltip.min.js +1 -1
  36. package/lib/ui/index.js +1 -1
  37. package/lib/ui/index.min.js +1 -1
  38. package/lib/ui/src/log.js +1 -1
  39. package/lib/ui/src/log.min.js +1 -1
  40. package/package.json +1 -1
  41. package/packages/cascader/src/cascader.ts +1 -0
  42. package/packages/date-panel/src/date-panel.ts +121 -70
  43. package/packages/date-panel/src/util.ts +41 -2
  44. package/packages/date-picker/src/date-picker.ts +22 -14
  45. package/packages/date-range-picker/src/date-range-picker.ts +292 -129
  46. package/packages/form/src/form.ts +1 -0
  47. package/packages/tooltip/src/tooltip.ts +33 -19
  48. package/types/components/date-panel.d.ts +18 -3
  49. package/types/components/date-range-picker.d.ts +5 -3
  50. package/types/components/tooltip.d.ts +1 -1
  51. /package/es/icon/{iconfont.1783073813654.ttf → iconfont.1783247320664.ttf} +0 -0
  52. /package/es/icon/{iconfont.1783073813654.woff → iconfont.1783247320664.woff} +0 -0
  53. /package/es/icon/{iconfont.1783073813654.woff2 → iconfont.1783247320664.woff2} +0 -0
  54. /package/es/{iconfont.1783073813654.ttf → iconfont.1783247320664.ttf} +0 -0
  55. /package/es/{iconfont.1783073813654.woff → iconfont.1783247320664.woff} +0 -0
  56. /package/es/{iconfont.1783073813654.woff2 → iconfont.1783247320664.woff2} +0 -0
  57. /package/lib/icon/style/{iconfont.1783073813654.ttf → iconfont.1783247320664.ttf} +0 -0
  58. /package/lib/icon/style/{iconfont.1783073813654.woff → iconfont.1783247320664.woff} +0 -0
  59. /package/lib/icon/style/{iconfont.1783073813654.woff2 → iconfont.1783247320664.woff2} +0 -0
  60. /package/lib/{iconfont.1783073813654.ttf → iconfont.1783247320664.ttf} +0 -0
  61. /package/lib/{iconfont.1783073813654.woff → iconfont.1783247320664.woff} +0 -0
  62. /package/lib/{iconfont.1783073813654.woff2 → iconfont.1783247320664.woff2} +0 -0
package/dist/all.esm.js CHANGED
@@ -81,7 +81,7 @@ function checkDynamic() {
81
81
  }
82
82
 
83
83
  const { log } = VxeUI;
84
- const uiVersion = `ui v${"4.15.23"}`;
84
+ const uiVersion = `ui v${"4.15.25"}`;
85
85
  function createComponentLog(name) {
86
86
  const tableVersion = VxeUI.tableVersion ? `table v${VxeUI.tableVersion}` : '';
87
87
  const ganttVersion = VxeUI.ganttVersion ? `gantt v${VxeUI.ganttVersion}` : '';
@@ -95,7 +95,7 @@ function createComponentLog(name) {
95
95
  const warnLog$g = log.create('warn', uiVersion);
96
96
  log.create('error', uiVersion);
97
97
 
98
- const version = "4.15.23";
98
+ const version = "4.15.25";
99
99
  VxeUI.uiVersion = version;
100
100
  VxeUI.dynamicApp = dynamicApp;
101
101
  function config(options) {
@@ -2545,6 +2545,28 @@ function deModelValue(nodeid) {
2545
2545
  return nodeid ? decodeURIComponent(`${nodeid}`) : nodeid;
2546
2546
  }
2547
2547
 
2548
+ function createReactData$l() {
2549
+ return {
2550
+ target: null,
2551
+ isUpdate: false,
2552
+ visible: false,
2553
+ tipPos: null,
2554
+ tipContent: '',
2555
+ tipActive: false,
2556
+ tipTarget: null,
2557
+ tipZindex: 0,
2558
+ tipStore: {
2559
+ style: {},
2560
+ placement: '',
2561
+ arrowStyle: {}
2562
+ }
2563
+ };
2564
+ }
2565
+ function createInternalData$k() {
2566
+ return {
2567
+ // showDelayTip: undefined
2568
+ };
2569
+ }
2548
2570
  var VxeTooltipComponent = defineVxeComponent({
2549
2571
  name: 'VxeTooltip',
2550
2572
  props: {
@@ -2633,22 +2655,8 @@ var VxeTooltipComponent = defineVxeComponent({
2633
2655
  const { slots, emit } = context;
2634
2656
  const xID = XEUtils.uniqueId();
2635
2657
  const { computeSize } = useSize(props);
2636
- const reactData = reactive({
2637
- target: null,
2638
- isUpdate: false,
2639
- visible: false,
2640
- tipPos: null,
2641
- tipContent: '',
2642
- tipActive: false,
2643
- tipTarget: null,
2644
- tipZindex: 0,
2645
- tipStore: {
2646
- style: {},
2647
- placement: '',
2648
- arrowStyle: {}
2649
- }
2650
- });
2651
- const internalData = {};
2658
+ const reactData = reactive(createReactData$l());
2659
+ const internalData = createInternalData$k();
2652
2660
  const refElem = ref();
2653
2661
  const contentWrapperfElem = ref();
2654
2662
  const computeWrapperStyle = computed(() => {
@@ -3032,6 +3040,7 @@ var VxeTooltipComponent = defineVxeComponent({
3032
3040
  }
3033
3041
  reactData.isUpdate = false;
3034
3042
  });
3043
+ handleDelayFn();
3035
3044
  onMounted(() => {
3036
3045
  const contentWrapperfEl = contentWrapperfElem.value;
3037
3046
  if (contentWrapperfEl) {
@@ -3090,7 +3099,10 @@ var VxeTooltipComponent = defineVxeComponent({
3090
3099
  }
3091
3100
  }
3092
3101
  });
3093
- handleDelayFn();
3102
+ onUnmounted(() => {
3103
+ XEUtils.assign(reactData, createReactData$l());
3104
+ XEUtils.assign(internalData, createInternalData$k());
3105
+ });
3094
3106
  $xeTooltip.renderVN = renderVN;
3095
3107
  return $xeTooltip;
3096
3108
  },
@@ -3854,13 +3866,13 @@ dynamicApp.use(VxeButton);
3854
3866
  VxeUI.component(VxeButtonComponent);
3855
3867
  const Button = VxeButton;
3856
3868
 
3857
- const { errLog: errLog$h } = createComponentLog('backtop');
3858
- function createInternalData$i() {
3869
+ const { errLog: errLog$i } = createComponentLog('backtop');
3870
+ function createInternalData$j() {
3859
3871
  return {
3860
3872
  targetEl: null
3861
3873
  };
3862
3874
  }
3863
- function createReactData$j() {
3875
+ function createReactData$k() {
3864
3876
  return {
3865
3877
  showBtn: false,
3866
3878
  backtopZindex: 0
@@ -3939,8 +3951,8 @@ var VxeBacktopComponent = defineVxeComponent({
3939
3951
  const xID = XEUtils.uniqueId();
3940
3952
  const refElem = ref();
3941
3953
  const { computeSize } = useSize(props);
3942
- const internalData = createInternalData$i();
3943
- const reactData = reactive(createReactData$j());
3954
+ const internalData = createInternalData$j();
3955
+ const reactData = reactive(createReactData$k());
3944
3956
  const refMaps = {
3945
3957
  refElem
3946
3958
  };
@@ -4032,13 +4044,13 @@ var VxeBacktopComponent = defineVxeComponent({
4032
4044
  const { target } = props;
4033
4045
  if (!target) {
4034
4046
  removeScrollEvent();
4035
- errLog$h('vxe.error.reqProp', ['target']);
4047
+ errLog$i('vxe.error.reqProp', ['target']);
4036
4048
  return;
4037
4049
  }
4038
4050
  if (XEUtils.isString(target)) {
4039
4051
  const tEl = document.querySelector(target);
4040
4052
  if (!tEl) {
4041
- errLog$h('vxe.error.errProp', [`target=${target}`, 'body']);
4053
+ errLog$i('vxe.error.errProp', [`target=${target}`, 'body']);
4042
4054
  }
4043
4055
  const { targetEl } = internalData;
4044
4056
  if (targetEl !== tEl) {
@@ -4117,8 +4129,8 @@ var VxeBacktopComponent = defineVxeComponent({
4117
4129
  });
4118
4130
  onBeforeUnmount(() => {
4119
4131
  removeScrollEvent();
4120
- XEUtils.assign(reactData, createReactData$j());
4121
- XEUtils.assign(internalData, createInternalData$i());
4132
+ XEUtils.assign(reactData, createReactData$k());
4133
+ XEUtils.assign(internalData, createInternalData$j());
4122
4134
  });
4123
4135
  $xeBacktop.renderVN = renderVN;
4124
4136
  return $xeBacktop;
@@ -4560,7 +4572,7 @@ function parseDateValue(val, type, options) {
4560
4572
  const { valueFormat } = options;
4561
4573
  if (val) {
4562
4574
  if (type === 'time') {
4563
- return toStringTimeDate(val);
4575
+ return toStringTimeDate(XEUtils.isArray(val) ? XEUtils.last(val) : val);
4564
4576
  }
4565
4577
  if (XEUtils.isNumber(val) || /^[0-9]{10,15}$/.test(`${val}`)) {
4566
4578
  return new Date(Number(val));
@@ -4568,6 +4580,9 @@ function parseDateValue(val, type, options) {
4568
4580
  if (XEUtils.isString(val)) {
4569
4581
  return XEUtils.toStringDate(XEUtils.last(val.split(',')), valueFormat);
4570
4582
  }
4583
+ if (XEUtils.isArray(val)) {
4584
+ return XEUtils.toStringDate(XEUtils.last(val), valueFormat);
4585
+ }
4571
4586
  return XEUtils.toStringDate(val, valueFormat);
4572
4587
  }
4573
4588
  return null;
@@ -4738,8 +4753,42 @@ function checkDateInputFormat(numStr, formatKey) {
4738
4753
  }
4739
4754
  return numVal;
4740
4755
  }
4756
+ const getPrevYear = (date, size = 1) => {
4757
+ const currtYear = date.getFullYear();
4758
+ date.setFullYear(currtYear - size);
4759
+ return date;
4760
+ };
4761
+ const getNextYear = (date, size = 1) => {
4762
+ const currtYear = date.getFullYear();
4763
+ date.setFullYear(currtYear + size);
4764
+ return date;
4765
+ };
4766
+ const getPrevMonth = (date) => {
4767
+ const currtYear = date.getFullYear();
4768
+ const currMonth = date.getMonth();
4769
+ if (currMonth) {
4770
+ date.setMonth(currMonth - 1);
4771
+ }
4772
+ else {
4773
+ date.setFullYear(currtYear - 1);
4774
+ date.setMonth(11);
4775
+ }
4776
+ return date;
4777
+ };
4778
+ const getNextMonth = (date) => {
4779
+ const currtYear = date.getFullYear();
4780
+ const currMonth = date.getMonth();
4781
+ if (currMonth < 11) {
4782
+ date.setMonth(currMonth + 1);
4783
+ }
4784
+ else {
4785
+ date.setFullYear(currtYear + 1);
4786
+ date.setMonth(0);
4787
+ }
4788
+ return date;
4789
+ };
4741
4790
 
4742
- const { errLog: errLog$g } = createComponentLog('calendar');
4791
+ const { errLog: errLog$h } = createComponentLog('calendar');
4743
4792
  const { menus: menus$2, getConfig: getConfig$2, getI18n: getI18n$1 } = VxeUI;
4744
4793
  var VxeCalendarComponent = defineVxeComponent({
4745
4794
  name: 'VxeCalendar',
@@ -6007,7 +6056,7 @@ var VxeCalendarComponent = defineVxeComponent({
6007
6056
  const { menuConfig } = props;
6008
6057
  const VxeUIContextMenu = VxeUI.getComponent('VxeContextMenu');
6009
6058
  if (menuConfig && !VxeUIContextMenu) {
6010
- errLog$g('vxe.error.reqComp', ['vxe-context-menu']);
6059
+ errLog$h('vxe.error.reqComp', ['vxe-context-menu']);
6011
6060
  }
6012
6061
  dateOpenPanel();
6013
6062
  });
@@ -6820,7 +6869,7 @@ function clearRowAnimate(elem, clss) {
6820
6869
  }, 500);
6821
6870
  }
6822
6871
 
6823
- const { errLog: errLog$f } = createComponentLog('tree');
6872
+ const { errLog: errLog$g } = createComponentLog('tree');
6824
6873
  function getRowKeyByField(row, keyField) {
6825
6874
  return row ? ('' + (row[keyField] || '')) : '';
6826
6875
  }
@@ -6831,7 +6880,7 @@ function getRowIdByField(row, keyField) {
6831
6880
  const rowKey = getRowKeyByField(row, keyField);
6832
6881
  return enModelValue(rowKey);
6833
6882
  }
6834
- function createReactData$i() {
6883
+ function createReactData$j() {
6835
6884
  return {
6836
6885
  scrollYLoad: false,
6837
6886
  bodyHeight: 0,
@@ -6851,7 +6900,7 @@ function createReactData$i() {
6851
6900
  dragTipText: ''
6852
6901
  };
6853
6902
  }
6854
- function createInternalData$h() {
6903
+ function createInternalData$i() {
6855
6904
  return {
6856
6905
  resizeObserver: undefined,
6857
6906
  fullData: [],
@@ -6924,8 +6973,8 @@ var VxeListComponent = defineVxeComponent({
6924
6973
  const xID = XEUtils.uniqueId();
6925
6974
  const browseObj = XEUtils.browse();
6926
6975
  const { computeSize } = useSize(props);
6927
- const reactData = reactive(createReactData$i());
6928
- const internalData = createInternalData$h();
6976
+ const reactData = reactive(createReactData$j());
6977
+ const internalData = createInternalData$i();
6929
6978
  const crossListDragRowInfo = getCrossListDragRowInfo();
6930
6979
  const refElem = ref();
6931
6980
  const refHeaderElem = ref();
@@ -8317,17 +8366,17 @@ var VxeListComponent = defineVxeComponent({
8317
8366
  const keyField = computeKeyField.value;
8318
8367
  if (!keyField) {
8319
8368
  if (showRadio) {
8320
- errLog$f('vxe.error.reqSupportProp', ['show-radio', 'row-config.keyField']);
8369
+ errLog$g('vxe.error.reqSupportProp', ['show-radio', 'row-config.keyField']);
8321
8370
  }
8322
8371
  if (showCheckbox) {
8323
- errLog$f('vxe.error.reqSupportProp', ['show-checkbox', 'row-config.keyField']);
8372
+ errLog$g('vxe.error.reqSupportProp', ['show-checkbox', 'row-config.keyField']);
8324
8373
  }
8325
8374
  if (isDrag) {
8326
- errLog$f('vxe.error.reqSupportProp', ['drag-config', 'row-config.keyField']);
8375
+ errLog$g('vxe.error.reqSupportProp', ['drag-config', 'row-config.keyField']);
8327
8376
  }
8328
8377
  }
8329
8378
  if (useKey && !keyField) {
8330
- errLog$f('vxe.error.reqSupportProp', ['row-config.useKey', 'row-config.keyField']);
8379
+ errLog$g('vxe.error.reqSupportProp', ['row-config.useKey', 'row-config.keyField']);
8331
8380
  }
8332
8381
  if (props.autoResize) {
8333
8382
  const el = refElem.value;
@@ -8347,8 +8396,8 @@ var VxeListComponent = defineVxeComponent({
8347
8396
  resizeObserver.disconnect();
8348
8397
  }
8349
8398
  globalEvents.off($xeList, 'resize');
8350
- XEUtils.assign(reactData, createReactData$i());
8351
- XEUtils.assign(internalData, createInternalData$h());
8399
+ XEUtils.assign(reactData, createReactData$j());
8400
+ XEUtils.assign(internalData, createInternalData$i());
8352
8401
  });
8353
8402
  $xeList.renderVN = renderVN;
8354
8403
  return $xeList;
@@ -11079,7 +11128,7 @@ const Input = VxeInput;
11079
11128
  function getNodeUniqueId$1() {
11080
11129
  return XEUtils.uniqueId('node_');
11081
11130
  }
11082
- function createReactData$h() {
11131
+ function createReactData$i() {
11083
11132
  return {
11084
11133
  initialized: false,
11085
11134
  searchValue: '',
@@ -11102,7 +11151,7 @@ function createReactData$h() {
11102
11151
  lazyOptFlag: 1
11103
11152
  };
11104
11153
  }
11105
- function createInternalData$g() {
11154
+ function createInternalData$h() {
11106
11155
  return {
11107
11156
  // hpTimeout: undefined,
11108
11157
  listVirtualYOpts: {
@@ -11229,8 +11278,8 @@ var VxeCascaderComponent = defineVxeComponent({
11229
11278
  const refInpSearch = ref();
11230
11279
  const refChunkWrapper = ref();
11231
11280
  const refOptionPanel = ref();
11232
- const reactData = reactive(createReactData$h());
11233
- const internalData = createInternalData$g();
11281
+ const reactData = reactive(createReactData$i());
11282
+ const internalData = createInternalData$h();
11234
11283
  const refMaps = {
11235
11284
  refElem
11236
11285
  };
@@ -12802,7 +12851,8 @@ var VxeCascaderComponent = defineVxeComponent({
12802
12851
  globalEvents.off($xeCascader, 'mousedown');
12803
12852
  globalEvents.off($xeCascader, 'blur');
12804
12853
  globalEvents.off($xeCascader, 'resize');
12805
- XEUtils.assign(internalData, createInternalData$g());
12854
+ XEUtils.assign(reactData, createReactData$i());
12855
+ XEUtils.assign(internalData, createInternalData$h());
12806
12856
  });
12807
12857
  provide('$xeCascader', $xeCascader);
12808
12858
  $xeCascader.renderVN = renderVN;
@@ -13206,10 +13256,10 @@ dynamicApp.use(VxeCheckboxButton);
13206
13256
  VxeUI.component(VxeCheckboxButtonComponent);
13207
13257
  const CheckboxButton = VxeCheckboxButton;
13208
13258
 
13209
- function createReactData$g() {
13259
+ function createReactData$h() {
13210
13260
  return {};
13211
13261
  }
13212
- function createInternalData$f() {
13262
+ function createInternalData$g() {
13213
13263
  return {
13214
13264
  // isLoaded: false
13215
13265
  };
@@ -13252,8 +13302,8 @@ var VxeCheckboxGroupComponent = defineVxeComponent({
13252
13302
  const $xeForm = inject('$xeForm', null);
13253
13303
  const formItemInfo = inject('xeFormItemInfo', null);
13254
13304
  const xID = XEUtils.uniqueId();
13255
- const reactData = reactive(createReactData$g());
13256
- const internalData = createInternalData$f();
13305
+ const reactData = reactive(createReactData$h());
13306
+ const internalData = createInternalData$g();
13257
13307
  const computeIsReadonly = computed(() => {
13258
13308
  const { readonly } = props;
13259
13309
  if (readonly === null) {
@@ -13425,8 +13475,8 @@ var VxeCheckboxGroupComponent = defineVxeComponent({
13425
13475
  });
13426
13476
  });
13427
13477
  onUnmounted(() => {
13428
- XEUtils.assign(reactData, createReactData$g());
13429
- XEUtils.assign(internalData, createInternalData$f());
13478
+ XEUtils.assign(reactData, createReactData$h());
13479
+ XEUtils.assign(internalData, createInternalData$g());
13430
13480
  });
13431
13481
  provide('$xeCheckboxGroup', $xeCheckboxGroup);
13432
13482
  $xeCheckboxGroup.renderVN = renderVN;
@@ -13559,7 +13609,7 @@ dynamicApp.use(VxeCol);
13559
13609
  VxeUI.component(VxeColComponent);
13560
13610
  const Col = VxeCol;
13561
13611
 
13562
- function createReactData$f() {
13612
+ function createReactData$g() {
13563
13613
  return {
13564
13614
  staticPanes: [],
13565
13615
  cachePaneMaps: {},
@@ -13567,7 +13617,7 @@ function createReactData$f() {
13567
13617
  openKeyFlag: 0
13568
13618
  };
13569
13619
  }
13570
- function createInternalData$e() {
13620
+ function createInternalData$f() {
13571
13621
  return {
13572
13622
  // esTime: null,
13573
13623
  activeKeyMaps: {},
@@ -13604,8 +13654,8 @@ var VxeCollapseComponent = defineVxeComponent({
13604
13654
  const xID = XEUtils.uniqueId();
13605
13655
  const { computeSize } = useSize(props);
13606
13656
  const refElem = ref();
13607
- const reactData = reactive(createReactData$f());
13608
- const internalData = createInternalData$e();
13657
+ const reactData = reactive(createReactData$g());
13658
+ const internalData = createInternalData$f();
13609
13659
  const refMaps = {
13610
13660
  refElem
13611
13661
  };
@@ -13884,8 +13934,8 @@ var VxeCollapseComponent = defineVxeComponent({
13884
13934
  if (esTime) {
13885
13935
  clearTimeout(esTime);
13886
13936
  }
13887
- XEUtils.assign(reactData, createReactData$f());
13888
- XEUtils.assign(internalData, createInternalData$e());
13937
+ XEUtils.assign(reactData, createReactData$g());
13938
+ XEUtils.assign(internalData, createInternalData$f());
13889
13939
  });
13890
13940
  provide('$xeCollapse', $xeCollapse);
13891
13941
  $xeCollapse.renderVN = renderVN;
@@ -16270,12 +16320,12 @@ dynamicApp.use(VxeColorPicker);
16270
16320
  VxeUI.component(VxeColorPickerComponent);
16271
16321
  const ColorPicker = VxeColorPicker;
16272
16322
 
16273
- function createInternalData$d() {
16323
+ function createInternalData$e() {
16274
16324
  return {
16275
16325
  // leaveTime: null
16276
16326
  };
16277
16327
  }
16278
- function createReactData$e() {
16328
+ function createReactData$f() {
16279
16329
  return {
16280
16330
  visible: false,
16281
16331
  activeOption: null,
@@ -16330,8 +16380,8 @@ var VxeContextMenuComponent = defineVxeComponent({
16330
16380
  const xID = XEUtils.uniqueId();
16331
16381
  const refElem = ref();
16332
16382
  const { computeSize } = useSize(props);
16333
- const internalData = createInternalData$d();
16334
- const reactData = reactive(createReactData$e());
16383
+ const internalData = createInternalData$e();
16384
+ const reactData = reactive(createReactData$f());
16335
16385
  const refMaps = {
16336
16386
  refElem
16337
16387
  };
@@ -16886,8 +16936,8 @@ var VxeContextMenuComponent = defineVxeComponent({
16886
16936
  globalEvents.off($xeContextMenu, 'keydown');
16887
16937
  globalEvents.off($xeContextMenu, 'mousedown');
16888
16938
  globalEvents.off($xeContextMenu, 'blur');
16889
- XEUtils.assign(reactData, createReactData$e());
16890
- XEUtils.assign(internalData, createInternalData$d());
16939
+ XEUtils.assign(reactData, createReactData$f());
16940
+ XEUtils.assign(internalData, createInternalData$e());
16891
16941
  });
16892
16942
  $xeContextMenu.renderVN = renderVN;
16893
16943
  return $xeContextMenu;
@@ -17390,10 +17440,11 @@ dynamicApp.use(VxeCountdown);
17390
17440
  VxeUI.component(VxeCountdownComponent);
17391
17441
  const Countdown = VxeCountdown;
17392
17442
 
17443
+ const { errLog: errLog$f } = createComponentLog('date-panel');
17393
17444
  var VxeDatePanelComponent = defineVxeComponent({
17394
17445
  name: 'VxeDatePanel',
17395
17446
  props: {
17396
- modelValue: [String, Number, Date],
17447
+ modelValue: [String, Number, Date, Array],
17397
17448
  type: {
17398
17449
  type: String,
17399
17450
  default: 'date'
@@ -17418,6 +17469,7 @@ var VxeDatePanelComponent = defineVxeComponent({
17418
17469
  type: [String, Number, Date],
17419
17470
  default: () => getConfig$3().datePanel.endDate
17420
17471
  },
17472
+ defaultMode: String,
17421
17473
  defaultDate: [String, Number, Date],
17422
17474
  defaultTime: [String, Number, Date],
17423
17475
  minDate: [String, Number, Date],
@@ -17429,6 +17481,7 @@ var VxeDatePanelComponent = defineVxeComponent({
17429
17481
  labelFormat: String,
17430
17482
  valueFormat: String,
17431
17483
  timeFormat: String,
17484
+ valueSort: Boolean,
17432
17485
  festivalMethod: {
17433
17486
  type: Function,
17434
17487
  default: () => getConfig$3().datePanel.festivalMethod
@@ -17473,32 +17526,26 @@ var VxeDatePanelComponent = defineVxeComponent({
17473
17526
  currentDate: null
17474
17527
  });
17475
17528
  const internalData = {
17476
- yearSize: 12,
17477
- monthSize: 20,
17478
- quarterSize: 8,
17529
+ yearSize: 16,
17530
+ monthSize: 12,
17531
+ quarterSize: 4,
17479
17532
  hpTimeout: undefined
17480
17533
  };
17481
17534
  const refElem = ref();
17482
17535
  const refPanelWrapper = ref();
17483
17536
  const refInputTimeBody = ref();
17484
- const refMaps = {
17485
- refElem
17486
- };
17487
- const $xeDatePanel = {
17488
- xID,
17489
- props,
17490
- context,
17491
- reactData,
17492
- internalData,
17493
- getRefMaps: () => refMaps
17494
- };
17495
- const computeIsDateTimeType = computed(() => {
17537
+ const computeIsTimeType = computed(() => {
17496
17538
  const { type } = props;
17497
- return type === 'time' || type === 'datetime';
17539
+ return type === 'time';
17540
+ });
17541
+ const computeIsTimeOrDateTimeType = computed(() => {
17542
+ const { type } = props;
17543
+ const isTimeType = computeIsTimeType.value;
17544
+ return isTimeType || type === 'datetime';
17498
17545
  });
17499
17546
  const computeIsDatePanelType = computed(() => {
17500
- const isDateTimeType = computeIsDateTimeType.value;
17501
- return isDateTimeType || ['date', 'week', 'month', 'quarter', 'year'].indexOf(props.type) > -1;
17547
+ const isTimeOrDateTimeType = computeIsTimeOrDateTimeType.value;
17548
+ return isTimeOrDateTimeType || ['date', 'week', 'month', 'quarter', 'year'].indexOf(props.type) > -1;
17502
17549
  });
17503
17550
  const computeDateStartDate = computed(() => {
17504
17551
  return props.startDate ? XEUtils.toStringDate(props.startDate) : null;
@@ -17507,19 +17554,25 @@ var VxeDatePanelComponent = defineVxeComponent({
17507
17554
  return props.endDate ? XEUtils.toStringDate(props.endDate) : null;
17508
17555
  });
17509
17556
  const computeDateListValue = computed(() => {
17510
- const { modelValue, multiple } = props;
17557
+ const { modelValue, valueFormat } = props;
17511
17558
  const isDatePanelType = computeIsDatePanelType.value;
17512
17559
  const dateValueFormat = computeDateValueFormat.value;
17513
- if (multiple && modelValue && isDatePanelType) {
17514
- return XEUtils.toValueString(modelValue).split(',').map(item => {
17515
- const date = parseDate(item, dateValueFormat);
17516
- if (XEUtils.isValidDate(date)) {
17517
- return date;
17560
+ const restList = [];
17561
+ if (modelValue && isDatePanelType) {
17562
+ (XEUtils.isArray(modelValue) ? modelValue : XEUtils.toValueString(modelValue).split(',')).forEach(val => {
17563
+ let strVal = val;
17564
+ if (val) {
17565
+ if (valueFormat === 'timestamp') {
17566
+ if (XEUtils.isString(val) && /^\d+$/.test(val)) {
17567
+ strVal = Number(strVal);
17568
+ }
17569
+ }
17570
+ const date = parseDate(strVal, dateValueFormat);
17571
+ restList.push(date);
17518
17572
  }
17519
- return date;
17520
17573
  });
17521
17574
  }
17522
- return [];
17575
+ return restList;
17523
17576
  });
17524
17577
  const computeDateMultipleValue = computed(() => {
17525
17578
  const dateListValue = computeDateListValue.value;
@@ -17551,12 +17604,14 @@ var VxeDatePanelComponent = defineVxeComponent({
17551
17604
  return handleValueFormat(type, valueFormat);
17552
17605
  });
17553
17606
  const computeDateValue = computed(() => {
17554
- const { modelValue } = props;
17607
+ const { modelValue, defaultMode } = props;
17555
17608
  const isDatePanelType = computeIsDatePanelType.value;
17556
17609
  const dateValueFormat = computeDateValueFormat.value;
17557
17610
  let val = null;
17558
17611
  if (modelValue && isDatePanelType) {
17559
- const date = parseDate(modelValue, dateValueFormat);
17612
+ const vals = XEUtils.isString(modelValue) ? modelValue.split(',') : modelValue;
17613
+ const currVal = defaultMode === 'last' ? XEUtils.last(vals) : XEUtils.first(vals);
17614
+ const date = parseDate(currVal, dateValueFormat);
17560
17615
  if (XEUtils.isValidDate(date)) {
17561
17616
  val = date;
17562
17617
  }
@@ -17590,8 +17645,8 @@ var VxeDatePanelComponent = defineVxeComponent({
17590
17645
  });
17591
17646
  const computeDateHMSTime = computed(() => {
17592
17647
  const dateValue = computeDateValue.value;
17593
- const isDateTimeType = computeIsDateTimeType.value;
17594
- return dateValue && isDateTimeType ? (dateValue.getHours() * 3600 + dateValue.getMinutes() * 60 + dateValue.getSeconds()) * 1000 : 0;
17648
+ const isTimeOrDateTimeType = computeIsTimeOrDateTimeType.value;
17649
+ return dateValue && isTimeOrDateTimeType ? (dateValue.getHours() * 3600 + dateValue.getMinutes() * 60 + dateValue.getSeconds()) * 1000 : 0;
17595
17650
  });
17596
17651
  const computeDateLabelFormat = computed(() => {
17597
17652
  const { labelFormat } = props;
@@ -17609,7 +17664,7 @@ var VxeDatePanelComponent = defineVxeComponent({
17609
17664
  const currFullYear = currentDate.getFullYear();
17610
17665
  const selectFullYear = selectMonth.getFullYear();
17611
17666
  const startYearDate = new Date(selectFullYear - selectFullYear % yearSize, 0, 1);
17612
- for (let index = -4; index < yearSize + 4; index++) {
17667
+ for (let index = 0; index < yearSize; index++) {
17613
17668
  const date = XEUtils.getWhatYear(startYearDate, index, 'first');
17614
17669
  const itemFullYear = date.getFullYear();
17615
17670
  years.push({
@@ -17709,7 +17764,7 @@ var VxeDatePanelComponent = defineVxeComponent({
17709
17764
  const currQuarter = getDateQuarter(currentDate);
17710
17765
  const firstYear = XEUtils.getWhatYear(selectMonth, 0, 'first');
17711
17766
  const selFullYear = firstYear.getFullYear();
17712
- for (let index = -2; index < quarterSize - 2; index++) {
17767
+ for (let index = 0; index < quarterSize; index++) {
17713
17768
  const date = XEUtils.getWhatQuarter(firstYear, index);
17714
17769
  const itemFullYear = date.getFullYear();
17715
17770
  const itemQuarter = getDateQuarter(date);
@@ -17738,7 +17793,7 @@ var VxeDatePanelComponent = defineVxeComponent({
17738
17793
  const currFullYear = currentDate.getFullYear();
17739
17794
  const currMonth = currentDate.getMonth();
17740
17795
  const selFullYear = XEUtils.getWhatYear(selectMonth, 0, 'first').getFullYear();
17741
- for (let index = -4; index < monthSize - 4; index++) {
17796
+ for (let index = 0; index < monthSize; index++) {
17742
17797
  const date = XEUtils.getWhatYear(selectMonth, 0, index);
17743
17798
  const itemFullYear = date.getFullYear();
17744
17799
  const itemMonth = date.getMonth();
@@ -17816,8 +17871,8 @@ var VxeDatePanelComponent = defineVxeComponent({
17816
17871
  const timeOpts = computeTimeOpts.value;
17817
17872
  const { hours: hourOptions, hourDisabledMethod } = timeOpts;
17818
17873
  const list = [];
17819
- const isDateTimeType = computeIsDateTimeType.value;
17820
- if (isDateTimeType) {
17874
+ const isTimeOrDateTimeType = computeIsTimeOrDateTimeType.value;
17875
+ if (isTimeOrDateTimeType) {
17821
17876
  if (hourOptions && hourOptions.length) {
17822
17877
  hourOptions.forEach(item => {
17823
17878
  if (XEUtils.isNumber(item) || XEUtils.isString(item)) {
@@ -17855,8 +17910,8 @@ var VxeDatePanelComponent = defineVxeComponent({
17855
17910
  const timeOpts = computeTimeOpts.value;
17856
17911
  const { minutes: minuteOptions, minuteDisabledMethod } = timeOpts;
17857
17912
  const list = [];
17858
- const isDateTimeType = computeIsDateTimeType.value;
17859
- if (isDateTimeType) {
17913
+ const isTimeOrDateTimeType = computeIsTimeOrDateTimeType.value;
17914
+ if (isTimeOrDateTimeType) {
17860
17915
  if (minuteOptions && minuteOptions.length) {
17861
17916
  minuteOptions.forEach(item => {
17862
17917
  if (XEUtils.isNumber(item) || XEUtils.isString(item)) {
@@ -17904,8 +17959,8 @@ var VxeDatePanelComponent = defineVxeComponent({
17904
17959
  const timeOpts = computeTimeOpts.value;
17905
17960
  const { seconds: secondOptions, secondDisabledMethod } = timeOpts;
17906
17961
  const list = [];
17907
- const isDateTimeType = computeIsDateTimeType.value;
17908
- if (isDateTimeType) {
17962
+ const isTimeOrDateTimeType = computeIsTimeOrDateTimeType.value;
17963
+ if (isTimeOrDateTimeType) {
17909
17964
  if (secondOptions && secondOptions.length) {
17910
17965
  secondOptions.forEach(item => {
17911
17966
  if (XEUtils.isNumber(item) || XEUtils.isString(item)) {
@@ -17939,6 +17994,22 @@ var VxeDatePanelComponent = defineVxeComponent({
17939
17994
  }
17940
17995
  return list;
17941
17996
  });
17997
+ const refMaps = {
17998
+ refElem
17999
+ };
18000
+ const computeMaps = {
18001
+ computeSize,
18002
+ computeYearList
18003
+ };
18004
+ const $xeDatePanel = {
18005
+ xID,
18006
+ props,
18007
+ context,
18008
+ reactData,
18009
+ internalData,
18010
+ getRefMaps: () => refMaps,
18011
+ getComputeMaps: () => computeMaps
18012
+ };
17942
18013
  const updateModelValue = (modelValue) => {
17943
18014
  const { type } = props;
17944
18015
  const dateValueFormat = computeDateValueFormat.value;
@@ -17950,10 +18021,10 @@ var VxeDatePanelComponent = defineVxeComponent({
17950
18021
  const parseDate = (value, format) => {
17951
18022
  const { type, multiple } = props;
17952
18023
  if (type === 'time') {
17953
- return toStringTimeDate(value);
18024
+ return toStringTimeDate(XEUtils.isArray(value) ? XEUtils.last(value) : value);
17954
18025
  }
17955
18026
  if (XEUtils.isArray(value)) {
17956
- return XEUtils.toStringDate(value[0], format);
18027
+ return XEUtils.toStringDate(XEUtils.last(value), format);
17957
18028
  }
17958
18029
  if (XEUtils.isString(value)) {
17959
18030
  return XEUtils.toStringDate(multiple ? XEUtils.last(value.split(',')) : value, format);
@@ -18022,7 +18093,7 @@ var VxeDatePanelComponent = defineVxeComponent({
18022
18093
  reactData.inputValue = value;
18023
18094
  emit('update:modelValue', value);
18024
18095
  };
18025
- const handleChange = (value, evnt) => {
18096
+ const handleChange = (value, evnt, params) => {
18026
18097
  const { type, modelValue, valueFormat } = props;
18027
18098
  const dateValueFormat = computeDateValueFormat.value;
18028
18099
  reactData.inputLabel = value;
@@ -18031,20 +18102,20 @@ var VxeDatePanelComponent = defineVxeComponent({
18031
18102
  const timeNum = dateVal ? dateVal.getTime() : null;
18032
18103
  emitModel(timeNum);
18033
18104
  if (modelValue !== timeNum) {
18034
- dispatchEvent('change', { value: timeNum }, evnt);
18105
+ dispatchEvent('change', { value: timeNum, currValue: params ? params.currValue : '' }, evnt);
18035
18106
  }
18036
18107
  }
18037
18108
  else if (hasDateValueType(valueFormat)) {
18038
18109
  const dateVal = parseDateValue(value, type, { valueFormat: dateValueFormat });
18039
18110
  emitModel(dateVal);
18040
18111
  if (modelValue && dateVal ? XEUtils.toStringDate(modelValue).getTime() !== dateVal.getTime() : modelValue !== dateVal) {
18041
- dispatchEvent('change', { value: dateVal }, evnt);
18112
+ dispatchEvent('change', { value: dateVal, currValue: params ? params.currValue : '' }, evnt);
18042
18113
  }
18043
18114
  }
18044
18115
  else {
18045
18116
  emitModel(value);
18046
18117
  if (XEUtils.toValueString(modelValue) !== value) {
18047
- dispatchEvent('change', { value }, evnt);
18118
+ dispatchEvent('change', { value, currValue: params ? params.currValue : '' }, evnt);
18048
18119
  }
18049
18120
  }
18050
18121
  };
@@ -18102,16 +18173,17 @@ var VxeDatePanelComponent = defineVxeComponent({
18102
18173
  }
18103
18174
  };
18104
18175
  const dateChange = (date, isReload) => {
18105
- const { modelValue, multiple } = props;
18176
+ const { modelValue, multiple, valueSort } = props;
18106
18177
  const { datetimePanelValue } = reactData;
18107
- const isDateTimeType = computeIsDateTimeType.value;
18178
+ const isTimeType = computeIsTimeType.value;
18179
+ const isTimeOrDateTimeType = computeIsTimeOrDateTimeType.value;
18108
18180
  const dateValueFormat = computeDateValueFormat.value;
18109
18181
  const firstDayOfWeek = computeFirstDayOfWeek.value;
18110
18182
  if (props.type === 'week') {
18111
18183
  const sWeek = XEUtils.toNumber(props.selectDay);
18112
18184
  date = XEUtils.getWhatWeek(date, 0, sWeek, firstDayOfWeek);
18113
18185
  }
18114
- else if (isDateTimeType) {
18186
+ else if (isTimeOrDateTimeType) {
18115
18187
  if (datetimePanelValue) {
18116
18188
  date.setHours(datetimePanelValue.getHours());
18117
18189
  date.setMinutes(datetimePanelValue.getMinutes());
@@ -18120,13 +18192,13 @@ var VxeDatePanelComponent = defineVxeComponent({
18120
18192
  }
18121
18193
  const inpVal = XEUtils.toDateString(date, dateValueFormat, { firstDay: firstDayOfWeek });
18122
18194
  dateCheckMonth(date);
18123
- if (multiple) {
18195
+ if (!isTimeType && multiple) {
18124
18196
  const overCount = computeOverCount.value;
18125
18197
  // 如果为多选
18126
- if (isDateTimeType) {
18198
+ if (isTimeOrDateTimeType) {
18127
18199
  // 如果是datetime特殊类型
18128
18200
  const dateListValue = isReload ? [] : [...computeDateListValue.value];
18129
- const datetimeRest = [];
18201
+ let datetimeRest = [];
18130
18202
  const eqIndex = XEUtils.findIndexOf(dateListValue, val => XEUtils.isDateSame(date, val, 'yyyyMMdd'));
18131
18203
  if (eqIndex === -1) {
18132
18204
  if (overCount) {
@@ -18148,27 +18220,37 @@ var VxeDatePanelComponent = defineVxeComponent({
18148
18220
  datetimeRest.push(item);
18149
18221
  }
18150
18222
  });
18151
- handleChange(datetimeRest.map(date => XEUtils.toDateString(date, dateValueFormat)).join(','), { type: 'update' });
18223
+ // 排序
18224
+ if (valueSort) {
18225
+ datetimeRest = datetimeRest.sort((a, b) => a.getTime() - b.getTime());
18226
+ }
18227
+ handleChange(datetimeRest.map(date => XEUtils.toDateString(date, dateValueFormat)).join(','), { type: 'update' }, { currValue: inpVal });
18152
18228
  }
18153
18229
  else {
18154
18230
  const dateMultipleValue = isReload ? [] : computeDateMultipleValue.value;
18231
+ let dateRest = [];
18155
18232
  // 如果是日期类型
18156
18233
  if (dateMultipleValue.some(val => XEUtils.isEqual(val, inpVal))) {
18157
- handleChange(dateMultipleValue.filter(val => !XEUtils.isEqual(val, inpVal)).join(','), { type: 'update' });
18234
+ dateRest = dateMultipleValue.filter(val => !XEUtils.isEqual(val, inpVal));
18158
18235
  }
18159
18236
  else {
18160
18237
  if (overCount) {
18161
18238
  // 如果超出最大多选数量
18162
18239
  return;
18163
18240
  }
18164
- handleChange(dateMultipleValue.concat([inpVal]).join(','), { type: 'update' });
18241
+ dateRest = dateMultipleValue.concat([inpVal]);
18165
18242
  }
18243
+ // 排序
18244
+ if (valueSort) {
18245
+ dateRest = dateRest.sort();
18246
+ }
18247
+ handleChange(dateRest.join(','), { type: 'update' }, { currValue: inpVal });
18166
18248
  }
18167
18249
  }
18168
18250
  else {
18169
18251
  // 如果为单选
18170
18252
  if (!XEUtils.isEqual(modelValue, inpVal)) {
18171
- handleChange(inpVal, { type: 'update' });
18253
+ handleChange(inpVal, { type: 'update' }, { currValue: inpVal });
18172
18254
  }
18173
18255
  }
18174
18256
  };
@@ -18449,19 +18531,21 @@ var VxeDatePanelComponent = defineVxeComponent({
18449
18531
  };
18450
18532
  const dateConfirmEvent = (evnt) => {
18451
18533
  const { multiple } = props;
18452
- const { datetimePanelValue } = reactData;
18534
+ const { datetimePanelValue, currentDate } = reactData;
18453
18535
  const dateValue = computeDateValue.value;
18454
- const isDateTimeType = computeIsDateTimeType.value;
18455
- if (isDateTimeType) {
18536
+ const isTimeType = computeIsTimeType.value;
18537
+ const isTimeOrDateTimeType = computeIsTimeOrDateTimeType.value;
18538
+ if (isTimeOrDateTimeType) {
18456
18539
  const dateValueFormat = computeDateValueFormat.value;
18457
- if (multiple) {
18540
+ if (!isTimeType && multiple) {
18458
18541
  // 如果为多选
18459
18542
  const dateMultipleValue = computeDateMultipleValue.value;
18460
- if (isDateTimeType) {
18543
+ const dateListValue = computeDateListValue.value;
18544
+ if (isTimeOrDateTimeType) {
18461
18545
  // 如果是datetime特殊类型
18462
- const dateListValue = [...computeDateListValue.value];
18546
+ const listVals = dateListValue.length ? [...dateListValue] : [];
18463
18547
  const datetimeRest = [];
18464
- dateListValue.forEach(item => {
18548
+ listVals.forEach(item => {
18465
18549
  if (item) {
18466
18550
  if (datetimePanelValue) {
18467
18551
  item.setHours(datetimePanelValue.getHours());
@@ -18479,7 +18563,7 @@ var VxeDatePanelComponent = defineVxeComponent({
18479
18563
  }
18480
18564
  }
18481
18565
  else {
18482
- dateChange(dateValue || reactData.currentDate);
18566
+ dateChange(dateValue || currentDate);
18483
18567
  }
18484
18568
  }
18485
18569
  hidePanel();
@@ -18505,7 +18589,7 @@ var VxeDatePanelComponent = defineVxeComponent({
18505
18589
  };
18506
18590
  const dateOpenPanel = () => {
18507
18591
  const { type, defaultDate, defaultTime } = props;
18508
- const isDateTimeType = computeIsDateTimeType.value;
18592
+ const isTimeOrDateTimeType = computeIsTimeOrDateTimeType.value;
18509
18593
  const dateValue = computeDateValue.value;
18510
18594
  if (['year', 'quarter', 'month', 'week'].indexOf(type) > -1) {
18511
18595
  reactData.datePanelType = type;
@@ -18533,7 +18617,7 @@ var VxeDatePanelComponent = defineVxeComponent({
18533
18617
  dateNowHandle();
18534
18618
  }
18535
18619
  }
18536
- if (isDateTimeType) {
18620
+ if (isTimeOrDateTimeType) {
18537
18621
  let dtPanelValue = reactData.datePanelValue;
18538
18622
  if (!dtPanelValue) {
18539
18623
  dtPanelValue = XEUtils.getWhatDay(Date.now(), 0, 'first');
@@ -18563,6 +18647,10 @@ var VxeDatePanelComponent = defineVxeComponent({
18563
18647
  getModelValue() {
18564
18648
  return reactData.inputValue;
18565
18649
  },
18650
+ getViewType() {
18651
+ const { datePanelType } = reactData;
18652
+ return datePanelType;
18653
+ },
18566
18654
  setPanelDate(date) {
18567
18655
  if (date) {
18568
18656
  dateCheckMonth(date);
@@ -19136,6 +19224,12 @@ var VxeDatePanelComponent = defineVxeComponent({
19136
19224
  });
19137
19225
  initValue();
19138
19226
  dateOpenPanel();
19227
+ onMounted(() => {
19228
+ const { type, multiple } = props;
19229
+ if (multiple && type === 'time') {
19230
+ errLog$f('vxe.error.notSupportProp', [`type=${type}`, 'multiple=true', 'multiple=false']);
19231
+ }
19232
+ });
19139
19233
  $xeDatePanel.renderVN = renderVN;
19140
19234
  return $xeDatePanel;
19141
19235
  },
@@ -19161,7 +19255,7 @@ const parseInputKayMaps = {};
19161
19255
  inputMaskedKeys.forEach(key => {
19162
19256
  parseInputKayMaps[key] = true;
19163
19257
  });
19164
- function createReactData$d() {
19258
+ function createReactData$e() {
19165
19259
  return {
19166
19260
  initialized: false,
19167
19261
  panelIndex: 0,
@@ -19174,7 +19268,7 @@ function createReactData$d() {
19174
19268
  labelFlag: 0
19175
19269
  };
19176
19270
  }
19177
- function createInternalData$c() {
19271
+ function createInternalData$d() {
19178
19272
  return {
19179
19273
  // hpTimeout: undefined,
19180
19274
  // fsTimeout: undefined,
@@ -19314,8 +19408,8 @@ var VxeDatePickerComponent = defineVxeComponent({
19314
19408
  const formItemInfo = inject('xeFormItemInfo', null);
19315
19409
  const xID = XEUtils.uniqueId();
19316
19410
  const { computeSize } = useSize(props);
19317
- const reactData = reactive(createReactData$d());
19318
- const internalData = createInternalData$c();
19411
+ const reactData = reactive(createReactData$e());
19412
+ const internalData = createInternalData$d();
19319
19413
  const refElem = ref();
19320
19414
  const refInputTarget = ref();
19321
19415
  const refInputPanel = ref();
@@ -19370,20 +19464,25 @@ var VxeDatePickerComponent = defineVxeComponent({
19370
19464
  }
19371
19465
  return disabled;
19372
19466
  });
19373
- const computeIsDateTimeType = computed(() => {
19467
+ const computeIsTimeType = computed(() => {
19374
19468
  const { type } = props;
19375
- return type === 'time' || type === 'datetime';
19469
+ return type === 'time';
19470
+ });
19471
+ const computeIsTimeOrDateTimeType = computed(() => {
19472
+ const { type } = props;
19473
+ const isTimeType = computeIsTimeType.value;
19474
+ return isTimeType || type === 'datetime';
19376
19475
  });
19377
19476
  const computeIsDatePickerType = computed(() => {
19378
- const isDateTimeType = computeIsDateTimeType.value;
19379
- return isDateTimeType || ['date', 'week', 'month', 'quarter', 'year'].indexOf(props.type) > -1;
19477
+ const isTimeOrDateTimeType = computeIsTimeOrDateTimeType.value;
19478
+ return isTimeOrDateTimeType || ['date', 'week', 'month', 'quarter', 'year'].indexOf(props.type) > -1;
19380
19479
  });
19381
19480
  const computeIsClearable = computed(() => {
19382
19481
  return props.clearable;
19383
19482
  });
19384
19483
  const computeIsDatePanelType = computed(() => {
19385
- const isDateTimeType = computeIsDateTimeType.value;
19386
- return isDateTimeType || ['date', 'week', 'month', 'quarter', 'year'].indexOf(props.type) > -1;
19484
+ const isTimeOrDateTimeType = computeIsTimeOrDateTimeType.value;
19485
+ return isTimeOrDateTimeType || ['date', 'week', 'month', 'quarter', 'year'].indexOf(props.type) > -1;
19387
19486
  });
19388
19487
  const computeDateListValue = computed(() => {
19389
19488
  const { modelValue, type, multiple } = props;
@@ -19597,7 +19696,7 @@ var VxeDatePickerComponent = defineVxeComponent({
19597
19696
  };
19598
19697
  const dateChange = (date, isReload) => {
19599
19698
  const { modelValue, multiple } = props;
19600
- const isDateTimeType = computeIsDateTimeType.value;
19699
+ const isTimeOrDateTimeType = computeIsTimeOrDateTimeType.value;
19601
19700
  const dateValueFormat = computeDateValueFormat.value;
19602
19701
  const firstDayOfWeek = computeFirstDayOfWeek.value;
19603
19702
  if (props.type === 'week') {
@@ -19608,7 +19707,7 @@ var VxeDatePickerComponent = defineVxeComponent({
19608
19707
  if (multiple) {
19609
19708
  const overCount = computeOverCount.value;
19610
19709
  // 如果为多选
19611
- if (isDateTimeType) {
19710
+ if (isTimeOrDateTimeType) {
19612
19711
  // 如果是datetime特殊类型
19613
19712
  const dateListValue = [...computeDateListValue.value];
19614
19713
  const datetimeRest = [];
@@ -20161,9 +20260,9 @@ var VxeDatePickerComponent = defineVxeComponent({
20161
20260
  const panelChangeEvent = (params) => {
20162
20261
  const { multiple, autoClose } = props;
20163
20262
  const { value, $event } = params;
20164
- const isDateTimeType = computeIsDateTimeType.value;
20263
+ const isTimeOrDateTimeType = computeIsTimeOrDateTimeType.value;
20165
20264
  handleChange(value, $event);
20166
- if (!multiple && !isDateTimeType) {
20265
+ if (!multiple && !isTimeOrDateTimeType) {
20167
20266
  if (autoClose) {
20168
20267
  hidePanel();
20169
20268
  }
@@ -20447,7 +20546,7 @@ var VxeDatePickerComponent = defineVxeComponent({
20447
20546
  const btnTransfer = computeBtnTransfer.value;
20448
20547
  const shortcutOpts = computeShortcutOpts.value;
20449
20548
  const isClearable = computeIsClearable.value;
20450
- const isDateTimeType = computeIsDateTimeType.value;
20549
+ const isTimeOrDateTimeType = computeIsTimeOrDateTimeType.value;
20451
20550
  const shortcutList = computeShortcutList.value;
20452
20551
  const timeOpts = computeTimeOpts.value;
20453
20552
  const dateStartDate = computeDateStartDate.value;
@@ -20461,7 +20560,7 @@ var VxeDatePickerComponent = defineVxeComponent({
20461
20560
  const rightSlot = slots.right;
20462
20561
  const ppClassName = popupOpts.className;
20463
20562
  const hasShortcutBtn = shortcutList.length > 0;
20464
- const showConfirmBtn = (showConfirmButton === null ? (isDateTimeType || multiple) : showConfirmButton);
20563
+ const showConfirmBtn = (showConfirmButton === null ? (isTimeOrDateTimeType || multiple) : showConfirmButton);
20465
20564
  const showClearBtn = (showClearButton === null ? (isClearable && showConfirmBtn && type !== 'time') : showClearButton);
20466
20565
  return h(Teleport, {
20467
20566
  to: 'body',
@@ -20717,6 +20816,7 @@ var VxeDatePickerComponent = defineVxeComponent({
20717
20816
  watch(() => props.modelValue, () => {
20718
20817
  updateModelValue();
20719
20818
  });
20819
+ updateModelValue();
20720
20820
  nextTick(() => {
20721
20821
  globalEvents.on($xeDatePicker, 'mousewheel', handleGlobalMousewheelEvent);
20722
20822
  globalEvents.on($xeDatePicker, 'mousedown', handleGlobalMousedownEvent);
@@ -20741,8 +20841,9 @@ var VxeDatePickerComponent = defineVxeComponent({
20741
20841
  globalEvents.off($xeDatePicker, 'keydown');
20742
20842
  globalEvents.off($xeDatePicker, 'blur');
20743
20843
  globalEvents.off($xeDatePicker, 'resize');
20844
+ XEUtils.assign(reactData, createReactData$e());
20845
+ XEUtils.assign(internalData, createInternalData$d());
20744
20846
  });
20745
- updateModelValue();
20746
20847
  provide('$xeDatePicker', $xeDatePicker);
20747
20848
  $xeDatePicker.renderVN = renderVN;
20748
20849
  return $xeDatePicker;
@@ -20762,6 +20863,27 @@ VxeUI.component(VxeDatePickerComponent);
20762
20863
  const DatePicker = VxeDatePicker;
20763
20864
 
20764
20865
  const { errLog: errLog$d } = createComponentLog('date-range-picker');
20866
+ function createReactData$d() {
20867
+ return {
20868
+ initialized: false,
20869
+ panelIndex: 0,
20870
+ visiblePanel: false,
20871
+ isAniVisible: false,
20872
+ panelStyle: {},
20873
+ panelPlacement: '',
20874
+ isActivated: false,
20875
+ selectStValue: '',
20876
+ selectEdValue: '',
20877
+ paneStartVal: [],
20878
+ paneEndVal: []
20879
+ };
20880
+ }
20881
+ function createInternalData$c() {
20882
+ return {
20883
+ // selectStatus: false
20884
+ // hpTimeout: undefined
20885
+ };
20886
+ }
20765
20887
  var VxeDateRangePickerComponent = defineVxeComponent({
20766
20888
  name: 'VxeDateRangePicker',
20767
20889
  props: {
@@ -20898,21 +21020,8 @@ var VxeDateRangePickerComponent = defineVxeComponent({
20898
21020
  const formItemInfo = inject('xeFormItemInfo', null);
20899
21021
  const xID = XEUtils.uniqueId();
20900
21022
  const { computeSize } = useSize(props);
20901
- const reactData = reactive({
20902
- initialized: false,
20903
- panelIndex: 0,
20904
- visiblePanel: false,
20905
- isAniVisible: false,
20906
- panelStyle: {},
20907
- panelPlacement: '',
20908
- isActivated: false,
20909
- startValue: '',
20910
- endValue: ''
20911
- });
20912
- const internalData = {
20913
- // selectStatus: false
20914
- // hpTimeout: undefined
20915
- };
21023
+ const reactData = reactive(createReactData$d());
21024
+ const internalData = createInternalData$c();
20916
21025
  const refElem = ref();
20917
21026
  const refInputTarget = ref();
20918
21027
  const refInputPanel = ref();
@@ -20999,9 +21108,14 @@ var VxeDateRangePickerComponent = defineVxeComponent({
20999
21108
  const { startValue, endValue } = props;
21000
21109
  return `${startValue || ''}${endValue || ''}`;
21001
21110
  });
21002
- const computeIsDateTimeType = computed(() => {
21111
+ const computeIsTimeType = computed(() => {
21003
21112
  const { type } = props;
21004
- return type === 'time' || type === 'datetime';
21113
+ return type === 'time';
21114
+ });
21115
+ const computeIsTimeOrDateTimeType = computed(() => {
21116
+ const { type } = props;
21117
+ const isTimeType = computeIsTimeType.value;
21118
+ return isTimeType || type === 'datetime';
21005
21119
  });
21006
21120
  const computeIsDatePickerType = computed(() => {
21007
21121
  return ['date', 'week', 'month', 'quarter', 'year'].indexOf(props.type) > -1;
@@ -21058,8 +21172,8 @@ var VxeDateRangePickerComponent = defineVxeComponent({
21058
21172
  return XEUtils.toNumber(startDay);
21059
21173
  });
21060
21174
  const computePanelLabelObj = computed(() => {
21061
- const { startValue, endValue } = reactData;
21062
- const vals = startValue || endValue ? [startValue || '', endValue || ''] : [];
21175
+ const { selectStValue, selectEdValue } = reactData;
21176
+ const vals = selectStValue || selectEdValue ? [selectStValue || '', selectEdValue || ''] : [];
21063
21177
  return formatRangeLabel(vals);
21064
21178
  });
21065
21179
  const computeInputLabel = computed(() => {
@@ -21153,7 +21267,7 @@ var VxeDateRangePickerComponent = defineVxeComponent({
21153
21267
  };
21154
21268
  };
21155
21269
  const updateModelValue = (isModel) => {
21156
- const { modelValue, startValue, endValue } = props;
21270
+ const { modelValue, startValue, endValue, valueFormat } = props;
21157
21271
  let restObj = {
21158
21272
  sValue: '',
21159
21273
  eValue: ''
@@ -21174,13 +21288,25 @@ var VxeDateRangePickerComponent = defineVxeComponent({
21174
21288
  restObj = paraeUpdateModel();
21175
21289
  }
21176
21290
  }
21177
- reactData.startValue = restObj.sValue;
21178
- reactData.endValue = restObj.eValue;
21291
+ let startRest = restObj.sValue;
21292
+ let endRest = restObj.eValue;
21293
+ if (valueFormat === 'timestamp') {
21294
+ if (XEUtils.isString(startRest) && /^\d+$/.test(startRest)) {
21295
+ startRest = Number(startRest);
21296
+ }
21297
+ if (XEUtils.isString(endRest) && /^\d+$/.test(endRest)) {
21298
+ endRest = Number(endRest);
21299
+ }
21300
+ }
21301
+ reactData.selectStValue = startRest;
21302
+ reactData.selectEdValue = endRest;
21303
+ reactData.paneEndVal = [startRest, endRest];
21304
+ reactData.paneStartVal = [startRest, endRest];
21179
21305
  };
21180
21306
  const triggerEvent = (evnt) => {
21181
- const { startValue, endValue } = reactData;
21182
- const value = getRangeValue(startValue, endValue);
21183
- dispatchEvent(evnt.type, { value, startValue, endValue }, evnt);
21307
+ const { selectStValue, selectEdValue } = reactData;
21308
+ const value = getRangeValue(selectStValue, selectEdValue);
21309
+ dispatchEvent(evnt.type, { value, startValue: selectStValue, endValue: selectEdValue }, evnt);
21184
21310
  };
21185
21311
  const handleChange = (sValue, eValue, evnt) => {
21186
21312
  const { type, modelValue, valueFormat } = props;
@@ -21205,8 +21331,8 @@ var VxeDateRangePickerComponent = defineVxeComponent({
21205
21331
  endRest = parseDateValue(endRest, type, { valueFormat: dateValueFormat });
21206
21332
  }
21207
21333
  }
21208
- reactData.startValue = startRest;
21209
- reactData.endValue = endRest;
21334
+ reactData.selectStValue = startRest;
21335
+ reactData.selectEdValue = endRest;
21210
21336
  const value = getRangeValue(startRest, endRest);
21211
21337
  const isFinish = (startRest && endRest) || (!startRest && !endRest);
21212
21338
  emit('update:modelValue', value);
@@ -21241,9 +21367,9 @@ var VxeDateRangePickerComponent = defineVxeComponent({
21241
21367
  const clickPrefixEvent = (evnt) => {
21242
21368
  const isDisabled = computeIsDisabled.value;
21243
21369
  if (!isDisabled) {
21244
- const { startValue, endValue } = reactData;
21245
- const value = getRangeValue(startValue, endValue);
21246
- dispatchEvent('prefix-click', { value, startValue, endValue }, evnt);
21370
+ const { selectStValue, selectEdValue } = reactData;
21371
+ const value = getRangeValue(selectStValue, selectEdValue);
21372
+ dispatchEvent('prefix-click', { value, startValue: selectStValue, endValue: selectEdValue }, evnt);
21247
21373
  }
21248
21374
  };
21249
21375
  const hidePanel = () => {
@@ -21277,8 +21403,8 @@ var VxeDateRangePickerComponent = defineVxeComponent({
21277
21403
  }
21278
21404
  };
21279
21405
  const panelCellClassName = ({ date }) => {
21280
- const startValue = reactData.startValue;
21281
- const endValue = reactData.endValue;
21406
+ const startValue = reactData.selectStValue;
21407
+ const endValue = reactData.selectEdValue;
21282
21408
  if (startValue && endValue) {
21283
21409
  const currTime = date.getTime();
21284
21410
  const startTime = XEUtils.toStringDate(startValue).getTime();
@@ -21291,18 +21417,18 @@ var VxeDateRangePickerComponent = defineVxeComponent({
21291
21417
  };
21292
21418
  const handleSelectClose = () => {
21293
21419
  const { autoClose } = props;
21294
- const { startValue, endValue } = reactData;
21420
+ const { selectStValue, selectEdValue } = reactData;
21295
21421
  const { selectStatus } = internalData;
21296
21422
  const isDatePickerType = computeIsDatePickerType.value;
21297
21423
  if (autoClose) {
21298
21424
  if (selectStatus && isDatePickerType) {
21299
- if (startValue && endValue) {
21425
+ if (selectStValue && selectEdValue) {
21300
21426
  hidePanel();
21301
21427
  }
21302
21428
  }
21303
21429
  }
21304
21430
  else {
21305
- if (startValue && endValue) {
21431
+ if (selectStValue && selectEdValue) {
21306
21432
  internalData.selectStatus = false;
21307
21433
  }
21308
21434
  }
@@ -21310,23 +21436,23 @@ var VxeDateRangePickerComponent = defineVxeComponent({
21310
21436
  const clickSuffixEvent = (evnt) => {
21311
21437
  const isDisabled = computeIsDisabled.value;
21312
21438
  if (!isDisabled) {
21313
- const { startValue, endValue } = reactData;
21314
- const value = getRangeValue(startValue, endValue);
21315
- dispatchEvent('suffix-click', { value, startValue, endValue }, evnt);
21439
+ const { selectStValue, selectEdValue } = reactData;
21440
+ const value = getRangeValue(selectStValue, selectEdValue);
21441
+ dispatchEvent('suffix-click', { value, startValue: selectStValue, endValue: selectEdValue }, evnt);
21316
21442
  }
21317
21443
  };
21318
21444
  const blurEvent = (evnt) => {
21319
- const { startValue, endValue } = reactData;
21445
+ const { selectStValue, selectEdValue } = reactData;
21320
21446
  const inpImmediate = computeInpImmediate.value;
21321
21447
  const value = '';
21322
21448
  if (!inpImmediate) {
21323
- handleChange(startValue, endValue, evnt);
21449
+ handleChange(selectStValue, selectEdValue, evnt);
21324
21450
  }
21325
21451
  if (!reactData.visiblePanel) {
21326
21452
  reactData.isActivated = false;
21327
21453
  checkValue();
21328
21454
  }
21329
- dispatchEvent('blur', { value, startValue, endValue }, evnt);
21455
+ dispatchEvent('blur', { value, startValue: selectStValue, endValue: selectEdValue }, evnt);
21330
21456
  // 自动更新校验状态
21331
21457
  if ($xeForm && formItemInfo) {
21332
21458
  $xeForm.triggerItemEvent(evnt, formItemInfo.itemConfig.field, value);
@@ -21339,12 +21465,17 @@ var VxeDateRangePickerComponent = defineVxeComponent({
21339
21465
  triggerEvent(evnt);
21340
21466
  };
21341
21467
  const confirmEvent = (evnt) => {
21468
+ const isTimeType = computeIsTimeType.value;
21342
21469
  const $startDatePanel = refStartDatePanel.value;
21343
21470
  const $endDatePanel = refEndDatePanel.value;
21344
21471
  if ($startDatePanel && $endDatePanel) {
21345
21472
  const startValue = $startDatePanel.getModelValue();
21346
21473
  const endValue = $endDatePanel.getModelValue();
21347
- if ((startValue && !endValue) || (!startValue && endValue)) {
21474
+ if (isTimeType) {
21475
+ $startDatePanel.confirmByEvent(evnt);
21476
+ $endDatePanel.confirmByEvent(evnt);
21477
+ }
21478
+ else if ((startValue && !endValue) || (!startValue && endValue)) {
21348
21479
  handleChange('', '', evnt);
21349
21480
  }
21350
21481
  else {
@@ -21358,107 +21489,232 @@ var VxeDateRangePickerComponent = defineVxeComponent({
21358
21489
  };
21359
21490
  const startPanelChangeEvent = (params) => {
21360
21491
  const { selectStatus } = internalData;
21361
- const { value, $event } = params;
21362
- const endValue = selectStatus ? reactData.endValue : '';
21363
- handleChange(value, endValue, $event);
21492
+ const { value, currValue, $event } = params;
21493
+ const paneVals = value ? (XEUtils.isString(value) ? value.split(',') : [value]) : [];
21494
+ let startValue = '';
21495
+ let endValue = '';
21496
+ if (selectStatus) {
21497
+ startValue = paneVals[0];
21498
+ if (paneVals[1]) {
21499
+ endValue = paneVals[1];
21500
+ }
21501
+ else {
21502
+ endValue = reactData.selectEdValue;
21503
+ }
21504
+ }
21505
+ else {
21506
+ startValue = currValue || XEUtils.last(paneVals);
21507
+ }
21508
+ reactData.paneEndVal = [startValue, endValue];
21509
+ reactData.paneStartVal = [startValue, endValue];
21510
+ handleChange(startValue, endValue, $event);
21364
21511
  handleSelectClose();
21365
- if (!selectStatus) {
21512
+ if (selectStatus) {
21513
+ if (startValue && endValue) {
21514
+ internalData.selectStatus = false;
21515
+ }
21516
+ }
21517
+ else {
21366
21518
  internalData.selectStatus = true;
21367
21519
  }
21368
21520
  nextTick(() => {
21369
- const $startDatePanel = refStartDatePanel.value;
21370
- const $endDatePanel = refEndDatePanel.value;
21371
- if ($startDatePanel && $endDatePanel) {
21372
- const startValue = $startDatePanel.getModelValue();
21373
- if (!endValue && startValue) {
21374
- $endDatePanel.setPanelDate(XEUtils.toStringDate(startValue));
21375
- }
21376
- }
21521
+ handleUpdateStartPanelDate();
21377
21522
  });
21378
21523
  };
21379
21524
  const endPanelChangeEvent = (params) => {
21380
21525
  const { selectStatus } = internalData;
21381
- const { value, $event } = params;
21382
- const startValue = selectStatus ? reactData.startValue : '';
21383
- handleChange(startValue, value, $event);
21526
+ const { value, currValue, $event } = params;
21527
+ const paneVals = value ? (XEUtils.isString(value) ? value.split(',') : [value]) : [];
21528
+ let startValue = '';
21529
+ let endValue = '';
21530
+ if (selectStatus) {
21531
+ endValue = paneVals[0];
21532
+ if (paneVals[1]) {
21533
+ startValue = paneVals[0];
21534
+ endValue = paneVals[1];
21535
+ }
21536
+ else {
21537
+ startValue = reactData.selectStValue;
21538
+ }
21539
+ }
21540
+ else {
21541
+ endValue = currValue || XEUtils.last(paneVals);
21542
+ }
21543
+ reactData.paneEndVal = [startValue, endValue];
21544
+ reactData.paneStartVal = [startValue, endValue];
21545
+ handleChange(startValue, endValue, $event);
21384
21546
  handleSelectClose();
21385
- if (!selectStatus) {
21547
+ if (selectStatus) {
21548
+ if (startValue && endValue) {
21549
+ internalData.selectStatus = false;
21550
+ }
21551
+ }
21552
+ else {
21386
21553
  internalData.selectStatus = true;
21387
21554
  }
21388
21555
  nextTick(() => {
21389
- const $startDatePanel = refStartDatePanel.value;
21390
- const $endDatePanel = refEndDatePanel.value;
21391
- if ($startDatePanel && $endDatePanel) {
21392
- const endValue = $endDatePanel.getModelValue();
21393
- if (!startValue && endValue) {
21394
- $startDatePanel.setPanelDate(XEUtils.toStringDate(endValue));
21556
+ handleUpdateEndPanelDate();
21557
+ });
21558
+ };
21559
+ const handleUpdateStartPanelDate = () => {
21560
+ const $startDatePanel = refStartDatePanel.value;
21561
+ const $endDatePanel = refEndDatePanel.value;
21562
+ if (!$startDatePanel || !$endDatePanel) {
21563
+ return;
21564
+ }
21565
+ const startPanelDate = $startDatePanel.getPanelDate();
21566
+ const endPanelDate = $endDatePanel.getPanelDate();
21567
+ if (!startPanelDate || !endPanelDate) {
21568
+ return;
21569
+ }
21570
+ const viewType = $startDatePanel.getViewType();
21571
+ const startYear = startPanelDate.getFullYear();
21572
+ const startMonth = startPanelDate.getMonth();
21573
+ const endYear = endPanelDate.getFullYear();
21574
+ const endMonth = endPanelDate.getMonth();
21575
+ switch (viewType) {
21576
+ case 'day':
21577
+ case 'date':
21578
+ case 'week': {
21579
+ if (endYear <= startYear && endMonth <= startMonth) {
21580
+ $endDatePanel.setPanelDate(getNextMonth(startPanelDate));
21395
21581
  }
21582
+ break;
21396
21583
  }
21397
- });
21584
+ case 'month':
21585
+ case 'quarter': {
21586
+ if (endYear <= startYear) {
21587
+ $endDatePanel.setPanelDate(getNextYear(startPanelDate));
21588
+ }
21589
+ break;
21590
+ }
21591
+ case 'year': {
21592
+ const { computeYearList } = $startDatePanel.getComputeMaps();
21593
+ const yearList = computeYearList.value;
21594
+ if (yearList.some((item) => XEUtils.isDateSame(item.date, endPanelDate, 'yyyy'))) {
21595
+ $endDatePanel.setPanelDate(getNextYear(startPanelDate, yearList.length));
21596
+ }
21597
+ break;
21598
+ }
21599
+ }
21398
21600
  };
21399
- const startPanelDateBtnChangeEvent = (params) => {
21601
+ const startPanelDateBtnChangeEvent = () => {
21400
21602
  const { linkedPanels } = props;
21603
+ const $startDatePanel = refStartDatePanel.value;
21604
+ const $endDatePanel = refEndDatePanel.value;
21605
+ if (!$startDatePanel || !$endDatePanel) {
21606
+ return;
21607
+ }
21608
+ const startPanelDate = $startDatePanel.getPanelDate();
21609
+ const endPanelDate = $endDatePanel.getPanelDate();
21610
+ if (!startPanelDate || !endPanelDate) {
21611
+ return;
21612
+ }
21613
+ const viewType = $startDatePanel.getViewType();
21401
21614
  if (linkedPanels) {
21402
- const { viewType } = params;
21403
- const $startDatePanel = refStartDatePanel.value;
21404
- const $endDatePanel = refEndDatePanel.value;
21405
- if (!$startDatePanel || !$endDatePanel) {
21406
- return;
21407
- }
21408
- const startPanelDate = $startDatePanel.getPanelDate();
21409
- if (!startPanelDate) {
21410
- return;
21411
- }
21412
- const endYear = startPanelDate.getFullYear();
21413
- const endMonth = startPanelDate.getMonth();
21414
21615
  switch (viewType) {
21415
21616
  case 'day':
21416
21617
  case 'date':
21417
21618
  case 'week': {
21418
- if (endMonth < 11) {
21419
- startPanelDate.setMonth(endMonth + 1);
21420
- }
21421
- else {
21422
- startPanelDate.setFullYear(endYear + 1);
21423
- startPanelDate.setMonth(0);
21424
- }
21425
- $endDatePanel.setPanelDate(startPanelDate);
21619
+ $endDatePanel.setPanelDate(getNextMonth(startPanelDate));
21620
+ break;
21621
+ }
21622
+ case 'month':
21623
+ case 'quarter': {
21624
+ $endDatePanel.setPanelDate(getNextYear(startPanelDate));
21625
+ break;
21626
+ }
21627
+ case 'year': {
21628
+ const { computeYearList } = $startDatePanel.getComputeMaps();
21629
+ const yearList = computeYearList.value;
21630
+ $endDatePanel.setPanelDate(getNextYear(startPanelDate, yearList.length));
21426
21631
  break;
21427
21632
  }
21428
21633
  }
21429
21634
  }
21635
+ else {
21636
+ handleUpdateStartPanelDate();
21637
+ }
21430
21638
  };
21431
- const endPanelDateBtnChangeEvent = (params) => {
21432
- const { linkedPanels } = props;
21433
- if (linkedPanels) {
21434
- const { viewType } = params;
21435
- const $startDatePanel = refStartDatePanel.value;
21436
- const $endDatePanel = refEndDatePanel.value;
21437
- if (!$startDatePanel || !$endDatePanel) {
21438
- return;
21639
+ const handleUpdateEndPanelDate = () => {
21640
+ const $startDatePanel = refStartDatePanel.value;
21641
+ const $endDatePanel = refEndDatePanel.value;
21642
+ if (!$startDatePanel || !$endDatePanel) {
21643
+ return;
21644
+ }
21645
+ const startPanelDate = $startDatePanel.getPanelDate();
21646
+ const endPanelDate = $endDatePanel.getPanelDate();
21647
+ if (!startPanelDate || !endPanelDate) {
21648
+ return;
21649
+ }
21650
+ const viewType = $endDatePanel.getViewType();
21651
+ const startYear = startPanelDate.getFullYear();
21652
+ const startMonth = startPanelDate.getMonth();
21653
+ const endYear = endPanelDate.getFullYear();
21654
+ const endMonth = endPanelDate.getMonth();
21655
+ switch (viewType) {
21656
+ case 'day':
21657
+ case 'date':
21658
+ case 'week': {
21659
+ if (startYear >= endYear && startMonth >= endMonth) {
21660
+ $startDatePanel.setPanelDate(getPrevMonth(endPanelDate));
21661
+ }
21662
+ break;
21439
21663
  }
21440
- const endPanelDate = $endDatePanel.getPanelDate();
21441
- if (!endPanelDate) {
21442
- return;
21664
+ case 'month':
21665
+ case 'quarter': {
21666
+ if (startYear >= endYear) {
21667
+ $startDatePanel.setPanelDate(getPrevYear(endPanelDate));
21668
+ }
21669
+ break;
21670
+ }
21671
+ case 'year': {
21672
+ const { computeYearList } = $endDatePanel.getComputeMaps();
21673
+ const yearList = computeYearList.value;
21674
+ if (yearList.some((item) => XEUtils.isDateSame(item.date, startPanelDate, 'yyyy'))) {
21675
+ $startDatePanel.setPanelDate(getPrevYear(endPanelDate, yearList.length));
21676
+ }
21677
+ break;
21443
21678
  }
21444
- const endYear = endPanelDate.getFullYear();
21445
- const endMonth = endPanelDate.getMonth();
21679
+ }
21680
+ };
21681
+ const endPanelDateBtnChangeEvent = () => {
21682
+ const { linkedPanels } = props;
21683
+ const $startDatePanel = refStartDatePanel.value;
21684
+ const $endDatePanel = refEndDatePanel.value;
21685
+ if (!$startDatePanel || !$endDatePanel) {
21686
+ return;
21687
+ }
21688
+ const startPanelDate = $startDatePanel.getPanelDate();
21689
+ const endPanelDate = $endDatePanel.getPanelDate();
21690
+ if (!startPanelDate || !endPanelDate) {
21691
+ return;
21692
+ }
21693
+ const viewType = $endDatePanel.getViewType();
21694
+ if (linkedPanels) {
21446
21695
  switch (viewType) {
21447
21696
  case 'day':
21448
21697
  case 'date':
21449
21698
  case 'week': {
21450
- if (endMonth) {
21451
- endPanelDate.setMonth(endMonth - 1);
21452
- }
21453
- else {
21454
- endPanelDate.setFullYear(endYear - 1);
21455
- endPanelDate.setMonth(11);
21456
- }
21457
- $startDatePanel.setPanelDate(endPanelDate);
21699
+ $startDatePanel.setPanelDate(getPrevMonth(endPanelDate));
21700
+ break;
21701
+ }
21702
+ case 'month':
21703
+ case 'quarter': {
21704
+ $startDatePanel.setPanelDate(getPrevYear(endPanelDate));
21705
+ break;
21706
+ }
21707
+ case 'year': {
21708
+ const { computeYearList } = $endDatePanel.getComputeMaps();
21709
+ const yearList = computeYearList.value;
21710
+ $startDatePanel.setPanelDate(getPrevYear(endPanelDate, yearList.length));
21458
21711
  break;
21459
21712
  }
21460
21713
  }
21461
21714
  }
21715
+ else {
21716
+ handleUpdateEndPanelDate();
21717
+ }
21462
21718
  };
21463
21719
  // 全局事件
21464
21720
  const handleGlobalMousedownEvent = (evnt) => {
@@ -21583,6 +21839,7 @@ var VxeDateRangePickerComponent = defineVxeComponent({
21583
21839
  reactData.isAniVisible = true;
21584
21840
  setTimeout(() => {
21585
21841
  reactData.visiblePanel = true;
21842
+ handleUpdateStartPanelDate();
21586
21843
  updatePlacement();
21587
21844
  }, 10);
21588
21845
  updateZindex();
@@ -21618,8 +21875,8 @@ var VxeDateRangePickerComponent = defineVxeComponent({
21618
21875
  const shortcutOpts = computeShortcutOpts.value;
21619
21876
  const { autoClose } = shortcutOpts;
21620
21877
  const { code, clickMethod } = option;
21621
- let startValue = reactData.startValue;
21622
- let endValue = reactData.endValue;
21878
+ let startValue = reactData.selectStValue;
21879
+ let endValue = reactData.selectEdValue;
21623
21880
  let value = getRangeValue(startValue, endValue);
21624
21881
  const shortcutParams = {
21625
21882
  $dateRangePicker: $xeDateRangePicker,
@@ -21682,8 +21939,8 @@ var VxeDateRangePickerComponent = defineVxeComponent({
21682
21939
  dateRangePickerMethods = {
21683
21940
  dispatchEvent,
21684
21941
  setModelValue(startValue, endValue) {
21685
- reactData.startValue = startValue || '';
21686
- reactData.endValue = endValue || '';
21942
+ reactData.selectStValue = startValue || '';
21943
+ reactData.selectEdValue = endValue || '';
21687
21944
  const value = getRangeValue(startValue, endValue);
21688
21945
  emit('update:modelValue', value);
21689
21946
  },
@@ -21737,15 +21994,16 @@ var VxeDateRangePickerComponent = defineVxeComponent({
21737
21994
  if (popupOpts.enabled === false) {
21738
21995
  return renderEmptyElement($xeDateRangePicker);
21739
21996
  }
21740
- const { type, separator, autoClose, showConfirmButton, showClearButton } = props;
21741
- const { initialized, isAniVisible, visiblePanel, panelPlacement, panelStyle, startValue, endValue } = reactData;
21997
+ const { type, separator, autoClose, valueFormat, showConfirmButton, showClearButton } = props;
21998
+ const { initialized, isAniVisible, visiblePanel, panelPlacement, panelStyle, selectStValue, selectEdValue, paneStartVal, paneEndVal } = reactData;
21742
21999
  const vSize = computeSize.value;
21743
22000
  const btnTransfer = computeBtnTransfer.value;
21744
22001
  const shortcutOpts = computeShortcutOpts.value;
21745
22002
  const isClearable = computeIsClearable.value;
21746
22003
  const panelLabelObj = computePanelLabelObj.value;
21747
22004
  const shortcutList = computeShortcutList.value;
21748
- const isDateTimeType = computeIsDateTimeType.value;
22005
+ const isTimeType = computeIsTimeType.value;
22006
+ const isTimeOrDateTimeType = computeIsTimeOrDateTimeType.value;
21749
22007
  const defaultDates = computeDefaultDates.value;
21750
22008
  const defaultTimes = computeDefaultTimes.value;
21751
22009
  const timeOpts = computeTimeOpts.value;
@@ -21761,7 +22019,7 @@ var VxeDateRangePickerComponent = defineVxeComponent({
21761
22019
  const [sdDate, edDate] = defaultDates;
21762
22020
  const [sdTime, edTime] = defaultTimes;
21763
22021
  const hasShortcutBtn = shortcutList.length > 0;
21764
- const showConfirmBtn = (showConfirmButton === null ? (isDateTimeType || !autoClose) : showConfirmButton);
22022
+ const showConfirmBtn = (showConfirmButton === null ? (isTimeOrDateTimeType || !autoClose) : showConfirmButton);
21765
22023
  const showClearBtn = (showClearButton === null ? isClearable : showClearButton);
21766
22024
  return h(Teleport, {
21767
22025
  to: 'body',
@@ -21815,15 +22073,18 @@ var VxeDateRangePickerComponent = defineVxeComponent({
21815
22073
  }, [
21816
22074
  h(VxeDatePanel, {
21817
22075
  ref: refStartDatePanel,
21818
- modelValue: startValue,
22076
+ modelValue: paneStartVal,
22077
+ multiple: !isTimeType,
22078
+ valueSort: true,
22079
+ limitCount: 3,
22080
+ defaultMode: 'first',
21819
22081
  type: props.type,
21820
22082
  className: props.className,
21821
22083
  minDate: props.minDate,
21822
22084
  maxDate: props.maxDate,
21823
- endDate: endValue,
21824
22085
  startDay: props.startDay,
21825
22086
  labelFormat: props.labelFormat,
21826
- valueFormat: props.valueFormat,
22087
+ valueFormat: valueFormat === 'date' || valueFormat === 'timestamp' ? '' : valueFormat,
21827
22088
  timeFormat: props.timeFormat,
21828
22089
  defaultDate: sdDate,
21829
22090
  defaultTime: sdTime,
@@ -21839,15 +22100,18 @@ var VxeDateRangePickerComponent = defineVxeComponent({
21839
22100
  }),
21840
22101
  h(VxeDatePanel, {
21841
22102
  ref: refEndDatePanel,
21842
- modelValue: endValue,
22103
+ modelValue: paneEndVal,
22104
+ multiple: !isTimeType,
22105
+ valueSort: true,
22106
+ limitCount: 3,
22107
+ defaultMode: 'last',
21843
22108
  type: props.type,
21844
22109
  className: props.className,
21845
22110
  minDate: props.minDate,
21846
22111
  maxDate: props.maxDate,
21847
- startDate: startValue,
21848
22112
  startDay: props.startDay,
21849
22113
  labelFormat: props.labelFormat,
21850
- valueFormat: props.valueFormat,
22114
+ valueFormat: valueFormat === 'date' || valueFormat === 'timestamp' ? '' : valueFormat,
21851
22115
  timeFormat: props.timeFormat,
21852
22116
  defaultDate: edDate,
21853
22117
  defaultTime: edTime,
@@ -21883,7 +22147,7 @@ var VxeDateRangePickerComponent = defineVxeComponent({
21883
22147
  showClearBtn
21884
22148
  ? h(VxeButton, {
21885
22149
  size: 'mini',
21886
- disabled: !(startValue || endValue),
22150
+ disabled: !(selectStValue || selectEdValue),
21887
22151
  content: getI18n$2('vxe.button.clear'),
21888
22152
  onClick: clearValueEvent
21889
22153
  })
@@ -21937,13 +22201,13 @@ var VxeDateRangePickerComponent = defineVxeComponent({
21937
22201
  };
21938
22202
  const renderSuffixIcon = () => {
21939
22203
  const { suffixIcon } = props;
21940
- const { startValue, endValue } = reactData;
22204
+ const { selectStValue, selectEdValue } = reactData;
21941
22205
  const suffixSlot = slots.suffix;
21942
22206
  const isDisabled = computeIsDisabled.value;
21943
22207
  const isClearable = computeIsClearable.value;
21944
22208
  return h('div', {
21945
22209
  class: ['vxe-date-range-picker--suffix', {
21946
- 'is--clear': isClearable && !isDisabled && (startValue || endValue)
22210
+ 'is--clear': isClearable && !isDisabled && (selectStValue || selectEdValue)
21947
22211
  }]
21948
22212
  }, [
21949
22213
  isClearable
@@ -21983,7 +22247,7 @@ var VxeDateRangePickerComponent = defineVxeComponent({
21983
22247
  };
21984
22248
  const renderVN = () => {
21985
22249
  const { className, type, name, autoComplete } = props;
21986
- const { startValue, endValue, visiblePanel, isActivated } = reactData;
22250
+ const { selectStValue, selectEdValue, visiblePanel, isActivated } = reactData;
21987
22251
  const vSize = computeSize.value;
21988
22252
  const isDisabled = computeIsDisabled.value;
21989
22253
  const formReadonly = computeFormReadonly.value;
@@ -22007,7 +22271,7 @@ var VxeDateRangePickerComponent = defineVxeComponent({
22007
22271
  'is--visible': visiblePanel,
22008
22272
  'is--disabled': isDisabled,
22009
22273
  'is--active': isActivated,
22010
- 'show--clear': isClearable && !isDisabled && (startValue || endValue)
22274
+ 'show--clear': isClearable && !isDisabled && (selectStValue || selectEdValue)
22011
22275
  }],
22012
22276
  spellcheck: false
22013
22277
  }, [
@@ -22055,14 +22319,16 @@ var VxeDateRangePickerComponent = defineVxeComponent({
22055
22319
  onDeactivated(() => {
22056
22320
  checkValue();
22057
22321
  });
22322
+ onBeforeUnmount(() => {
22323
+ checkValue();
22324
+ });
22058
22325
  onUnmounted(() => {
22059
22326
  globalEvents.off($xeDateRangePicker, 'mousewheel');
22060
22327
  globalEvents.off($xeDateRangePicker, 'mousedown');
22061
22328
  globalEvents.off($xeDateRangePicker, 'blur');
22062
22329
  globalEvents.off($xeDateRangePicker, 'resize');
22063
- });
22064
- onBeforeUnmount(() => {
22065
- checkValue();
22330
+ XEUtils.assign(reactData, createReactData$d());
22331
+ XEUtils.assign(internalData, createInternalData$c());
22066
22332
  });
22067
22333
  provide('$xeDateRangePicker', $xeDateRangePicker);
22068
22334
  $xeDateRangePicker.renderVN = renderVN;
@@ -25068,6 +25334,7 @@ var VxeFormComponent = defineVxeComponent({
25068
25334
  });
25069
25335
  onUnmounted(() => {
25070
25336
  globalEvents.off($xeForm, 'resize');
25337
+ XEUtils.assign(reactData, createReactData$c());
25071
25338
  XEUtils.assign(internalData, createInternalData$b());
25072
25339
  });
25073
25340
  reactData.collapseAll = !!props.collapseStatus;