vxe-table 4.2.2 → 4.2.3-beta.0

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 (54) hide show
  1. package/es/filter/src/hook.js +2 -1
  2. package/es/footer/src/footer.js +5 -5
  3. package/es/header/src/header.js +6 -6
  4. package/es/header/style.css +1 -5
  5. package/es/input/src/input.js +125 -27
  6. package/es/input/style.css +42 -13
  7. package/es/keyboard/src/hook.js +5 -1
  8. package/es/style.css +1 -1
  9. package/es/style.min.css +1 -1
  10. package/es/table/src/body.js +15 -11
  11. package/es/table/src/table.js +59 -48
  12. package/es/tools/log.js +1 -1
  13. package/es/v-x-e-table/index.js +1 -1
  14. package/helper/vetur/attributes.json +31 -19
  15. package/helper/vetur/tags.json +3 -0
  16. package/lib/filter/src/hook.js +2 -1
  17. package/lib/filter/src/hook.min.js +1 -1
  18. package/lib/footer/src/footer.js +5 -5
  19. package/lib/footer/src/footer.min.js +1 -1
  20. package/lib/header/src/header.js +6 -6
  21. package/lib/header/src/header.min.js +1 -1
  22. package/lib/header/style/style.css +1 -5
  23. package/lib/header/style/style.min.css +1 -1
  24. package/lib/index.umd.js +329 -114
  25. package/lib/index.umd.min.js +1 -1
  26. package/lib/input/src/input.js +166 -29
  27. package/lib/input/src/input.min.js +1 -1
  28. package/lib/input/style/style.css +42 -13
  29. package/lib/input/style/style.min.css +1 -1
  30. package/lib/keyboard/src/hook.js +7 -1
  31. package/lib/keyboard/src/hook.min.js +1 -1
  32. package/lib/style.css +1 -1
  33. package/lib/style.min.css +1 -1
  34. package/lib/table/src/body.js +15 -11
  35. package/lib/table/src/body.min.js +1 -1
  36. package/lib/table/src/table.js +66 -56
  37. package/lib/table/src/table.min.js +1 -1
  38. package/lib/tools/log.js +1 -1
  39. package/lib/tools/log.min.js +1 -1
  40. package/lib/v-x-e-table/index.js +1 -1
  41. package/lib/v-x-e-table/index.min.js +1 -1
  42. package/package.json +1 -1
  43. package/packages/filter/src/hook.ts +3 -2
  44. package/packages/footer/src/footer.ts +5 -5
  45. package/packages/header/src/header.ts +6 -6
  46. package/packages/input/src/input.ts +128 -27
  47. package/packages/keyboard/src/hook.ts +6 -2
  48. package/packages/table/src/body.ts +15 -11
  49. package/packages/table/src/table.ts +58 -46
  50. package/packages/tools/dom.ts +1 -1
  51. package/styles/header.scss +1 -1
  52. package/styles/input.scss +16 -4
  53. package/types/input.d.ts +2 -0
  54. package/types/table.d.ts +3 -1
@@ -198,7 +198,8 @@ var tableFilterHook = {
198
198
  var elemStore_1 = internalData.elemStore;
199
199
  var fixed_1 = column.fixed;
200
200
  return $xetable.scrollToColumn(column).then(function () {
201
- var headerWrapperElem = elemStore_1[(fixed_1 || 'main') + "-header-wrapper"] || elemStore_1['main-header-wrapper'];
201
+ var headerWrapperRef = elemStore_1[(fixed_1 || 'main') + "-header-wrapper"] || elemStore_1['main-header-wrapper'];
202
+ var headerWrapperElem = headerWrapperRef ? headerWrapperRef.value : null;
202
203
  if (headerWrapperElem) {
203
204
  var filterBtnElem = headerWrapperElem.querySelector(".vxe-header--column." + column.id + " .vxe-filter--btn");
204
205
  triggerEvent(filterBtnElem, 'click');
@@ -83,11 +83,11 @@ export default defineComponent({
83
83
  var fixedType = props.fixedType;
84
84
  var elemStore = tableInternalData.elemStore;
85
85
  var prefix = (fixedType || 'main') + "-footer-";
86
- elemStore[prefix + "wrapper"] = refElem.value;
87
- elemStore[prefix + "table"] = refFooterTable.value;
88
- elemStore[prefix + "colgroup"] = refFooterColgroup.value;
89
- elemStore[prefix + "list"] = refFooterTFoot.value;
90
- elemStore[prefix + "xSpace"] = refFooterXSpace.value;
86
+ elemStore[prefix + "wrapper"] = refElem;
87
+ elemStore[prefix + "table"] = refFooterTable;
88
+ elemStore[prefix + "colgroup"] = refFooterColgroup;
89
+ elemStore[prefix + "list"] = refFooterTFoot;
90
+ elemStore[prefix + "xSpace"] = refFooterXSpace;
91
91
  });
92
92
  });
93
93
  onUnmounted(function () {
@@ -136,12 +136,12 @@ export default defineComponent({
136
136
  var internalData = $xetable.internalData;
137
137
  var elemStore = internalData.elemStore;
138
138
  var prefix = (fixedType || 'main') + "-header-";
139
- elemStore[prefix + "wrapper"] = refElem.value;
140
- elemStore[prefix + "table"] = refHeaderTable.value;
141
- elemStore[prefix + "colgroup"] = refHeaderColgroup.value;
142
- elemStore[prefix + "list"] = refHeaderTHead.value;
143
- elemStore[prefix + "xSpace"] = refHeaderXSpace.value;
144
- elemStore[prefix + "repair"] = refHeaderBorderRepair.value;
139
+ elemStore[prefix + "wrapper"] = refElem;
140
+ elemStore[prefix + "table"] = refHeaderTable;
141
+ elemStore[prefix + "colgroup"] = refHeaderColgroup;
142
+ elemStore[prefix + "list"] = refHeaderTHead;
143
+ elemStore[prefix + "xSpace"] = refHeaderXSpace;
144
+ elemStore[prefix + "repair"] = refHeaderBorderRepair;
145
145
  uploadColumn();
146
146
  });
147
147
  });
@@ -62,11 +62,7 @@
62
62
 
63
63
  .vxe-header--column {
64
64
  position: relative;
65
- font-weight: 700;
66
- -webkit-user-select: none;
67
- -moz-user-select: none;
68
- -ms-user-select: none;
69
- user-select: none; }
65
+ font-weight: 700; }
70
66
  .vxe-header--column.col--ellipsis > .vxe-cell {
71
67
  display: flex;
72
68
  align-items: center; }
@@ -7,7 +7,7 @@ import { hasClass, getAbsolutePos, getEventTargetNode } from '../../tools/dom';
7
7
  import { GlobalEvent, hasEventKey, EVENT_KEYS } from '../../tools/event';
8
8
  import { toStringTimeDate, getDateQuarter } from './date';
9
9
  import { handleNumber, toFloatValueFixed } from './number';
10
- var yearSize = 20;
10
+ var yearSize = 12;
11
11
  var monthSize = 20;
12
12
  var quarterSize = 8;
13
13
  export default defineComponent({
@@ -27,6 +27,7 @@ export default defineComponent({
27
27
  form: String,
28
28
  className: String,
29
29
  size: { type: String, default: function () { return GlobalConfig.input.size || GlobalConfig.size; } },
30
+ multiple: Boolean,
30
31
  // number、integer、float
31
32
  min: { type: [String, Number], default: null },
32
33
  max: { type: [String, Number], default: null },
@@ -164,6 +165,34 @@ export default defineComponent({
164
165
  var computeDateMaxTime = computed(function () {
165
166
  return props.maxDate ? XEUtils.toStringDate(props.maxDate) : null;
166
167
  });
168
+ var computeSupportMultiples = computed(function () {
169
+ return ['date', 'week', 'month', 'quarter', 'year'].includes(props.type);
170
+ });
171
+ var computeDateListValue = computed(function () {
172
+ var modelValue = props.modelValue, multiple = props.multiple;
173
+ var isDatePickerType = computeIsDatePickerType.value;
174
+ var dateValueFormat = computeDateValueFormat.value;
175
+ if (multiple && modelValue && isDatePickerType) {
176
+ return XEUtils.toValueString(modelValue).split(',').map(function (item) {
177
+ var date = parseDate(item, dateValueFormat);
178
+ if (XEUtils.isValidDate(date)) {
179
+ return date;
180
+ }
181
+ return null;
182
+ });
183
+ }
184
+ return [];
185
+ });
186
+ var computeDateMultipleValue = computed(function () {
187
+ var dateListValue = computeDateListValue.value;
188
+ var dateValueFormat = computeDateValueFormat.value;
189
+ return dateListValue.map(function (date) { return XEUtils.toDateString(date, dateValueFormat); });
190
+ });
191
+ var computeDateMultipleLabel = computed(function () {
192
+ var dateListValue = computeDateListValue.value;
193
+ var dateLabelFormat = computeDateLabelFormat.value;
194
+ return dateListValue.map(function (date) { return XEUtils.toDateString(date, dateLabelFormat); }).join(', ');
195
+ });
167
196
  var computeDateValueFormat = computed(function () {
168
197
  var type = props.type;
169
198
  return type === 'time' ? 'HH:mm:ss' : (props.valueFormat || (type === 'datetime' ? 'yyyy-MM-dd HH:mm:ss' : 'yyyy-MM-dd'));
@@ -221,14 +250,17 @@ export default defineComponent({
221
250
  var years = [];
222
251
  if (selectMonth && currentDate) {
223
252
  var currFullYear = currentDate.getFullYear();
224
- var startYear = new Date(XEUtils.toNumber(('' + selectMonth.getFullYear()).replace(/\d{1}$/, '0')), 0, 1);
225
- for (var index = -10; index < yearSize - 10; index++) {
226
- var date = XEUtils.getWhatYear(startYear, index, 'first');
253
+ var selectFullYear = selectMonth.getFullYear();
254
+ var startYearDate = new Date(selectFullYear - selectFullYear % yearSize, 0, 1);
255
+ for (var index = -4; index < yearSize + 4; index++) {
256
+ var date = XEUtils.getWhatYear(startYearDate, index, 'first');
227
257
  var itemFullYear = date.getFullYear();
228
258
  years.push({
229
259
  date: date,
230
260
  isCurrent: true,
261
+ isPrev: index < 0,
231
262
  isNow: currFullYear === itemFullYear,
263
+ isNext: index >= yearSize,
232
264
  year: itemFullYear
233
265
  });
234
266
  }
@@ -447,8 +479,8 @@ export default defineComponent({
447
479
  return minuteList;
448
480
  });
449
481
  var computeInpReadonly = computed(function () {
450
- var type = props.type, readonly = props.readonly, editable = props.editable;
451
- return readonly || !editable || type === 'week' || type === 'quarter';
482
+ var type = props.type, readonly = props.readonly, editable = props.editable, multiple = props.multiple;
483
+ return readonly || multiple || !editable || type === 'week' || type === 'quarter';
452
484
  });
453
485
  var computeInputType = computed(function () {
454
486
  var type = props.type;
@@ -607,7 +639,7 @@ export default defineComponent({
607
639
  var inputValue = reactData.inputValue;
608
640
  if (isDatePickerType) {
609
641
  dateParseValue(inputValue);
610
- reactData.inputValue = reactData.datePanelLabel;
642
+ reactData.inputValue = props.multiple ? computeDateMultipleLabel.value : reactData.datePanelLabel;
611
643
  }
612
644
  };
613
645
  /**
@@ -637,7 +669,7 @@ export default defineComponent({
637
669
  return props.min === null || XEUtils.toNumber(num) >= XEUtils.toNumber(props.min);
638
670
  };
639
671
  var dateRevert = function () {
640
- reactData.inputValue = reactData.datePanelLabel;
672
+ reactData.inputValue = props.multiple ? computeDateMultipleLabel.value : reactData.datePanelLabel;
641
673
  };
642
674
  var dateCheckMonth = function (date) {
643
675
  var month = XEUtils.getWhatMonth(date, 0, 'first');
@@ -646,7 +678,7 @@ export default defineComponent({
646
678
  }
647
679
  };
648
680
  var dateChange = function (date) {
649
- var modelValue = props.modelValue;
681
+ var modelValue = props.modelValue, multiple = props.multiple;
650
682
  var datetimePanelValue = reactData.datetimePanelValue;
651
683
  var isDateTimeType = computeIsDateTimeType.value;
652
684
  var dateValueFormat = computeDateValueFormat.value;
@@ -662,8 +694,39 @@ export default defineComponent({
662
694
  }
663
695
  var inpVal = XEUtils.toDateString(date, dateValueFormat, { firstDay: firstDayOfWeek });
664
696
  dateCheckMonth(date);
665
- if (!XEUtils.isEqual(modelValue, inpVal)) {
666
- emitModel(inpVal, { type: 'update' });
697
+ if (multiple) {
698
+ // 如果为多选
699
+ var dateMultipleValue = computeDateMultipleValue.value;
700
+ if (isDateTimeType) {
701
+ // 如果是datetime特殊类型
702
+ var dateListValue = computeDateListValue.value;
703
+ var datetimeRest_1 = [];
704
+ dateListValue.forEach(function (item) {
705
+ if (item && !XEUtils.isDateSame(date, item, 'yyyyMMdd')) {
706
+ item.setHours(datetimePanelValue.getHours());
707
+ item.setMinutes(datetimePanelValue.getMinutes());
708
+ item.setSeconds(datetimePanelValue.getSeconds());
709
+ datetimeRest_1.push(item);
710
+ }
711
+ });
712
+ datetimeRest_1.push(date);
713
+ emitModel(datetimeRest_1.map(function (date) { return XEUtils.toDateString(date, dateValueFormat); }).join(','), { type: 'update' });
714
+ }
715
+ else {
716
+ // 如果是日期类型
717
+ if (dateMultipleValue.some(function (val) { return XEUtils.isEqual(val, inpVal); })) {
718
+ emitModel(dateMultipleValue.filter(function (val) { return !XEUtils.isEqual(val, inpVal); }).join(','), { type: 'update' });
719
+ }
720
+ else {
721
+ emitModel(dateMultipleValue.concat([inpVal]).join(','), { type: 'update' });
722
+ }
723
+ }
724
+ }
725
+ else {
726
+ // 如果为单选
727
+ if (!XEUtils.isEqual(modelValue, inpVal)) {
728
+ emitModel(inpVal, { type: 'update' });
729
+ }
667
730
  }
668
731
  };
669
732
  var afterCheckValue = function () {
@@ -933,8 +996,10 @@ export default defineComponent({
933
996
  };
934
997
  var dateTodayMonthEvent = function (evnt) {
935
998
  dateNowHandle();
936
- dateChange(reactData.currentDate);
937
- hidePanel();
999
+ if (!props.multiple) {
1000
+ dateChange(reactData.currentDate);
1001
+ hidePanel();
1002
+ }
938
1003
  inputMethods.dispatchEvent('date-today', { type: props.type }, evnt);
939
1004
  };
940
1005
  var dateNextEvent = function (evnt) {
@@ -973,7 +1038,7 @@ export default defineComponent({
973
1038
  return disabledMethod && disabledMethod({ type: datePanelType, viewType: datePanelType, date: item.date, $input: $xeinput });
974
1039
  };
975
1040
  var dateSelectItem = function (date) {
976
- var type = props.type;
1041
+ var type = props.type, multiple = props.multiple;
977
1042
  var datePanelType = reactData.datePanelType;
978
1043
  if (type === 'month') {
979
1044
  if (datePanelType === 'year') {
@@ -982,12 +1047,16 @@ export default defineComponent({
982
1047
  }
983
1048
  else {
984
1049
  dateChange(date);
985
- hidePanel();
1050
+ if (!multiple) {
1051
+ hidePanel();
1052
+ }
986
1053
  }
987
1054
  }
988
1055
  else if (type === 'year') {
989
1056
  dateChange(date);
990
- hidePanel();
1057
+ if (!multiple) {
1058
+ hidePanel();
1059
+ }
991
1060
  }
992
1061
  else if (type === 'quarter') {
993
1062
  if (datePanelType === 'year') {
@@ -996,7 +1065,9 @@ export default defineComponent({
996
1065
  }
997
1066
  else {
998
1067
  dateChange(date);
999
- hidePanel();
1068
+ if (!multiple) {
1069
+ hidePanel();
1070
+ }
1000
1071
  }
1001
1072
  }
1002
1073
  else {
@@ -1010,7 +1081,9 @@ export default defineComponent({
1010
1081
  }
1011
1082
  else {
1012
1083
  dateChange(date);
1013
- hidePanel();
1084
+ if (!multiple) {
1085
+ hidePanel();
1086
+ }
1014
1087
  }
1015
1088
  }
1016
1089
  };
@@ -1088,8 +1161,11 @@ export default defineComponent({
1088
1161
  dateTimeChangeEvent(evnt);
1089
1162
  };
1090
1163
  var dateConfirmEvent = function () {
1164
+ var type = props.type;
1091
1165
  var dateValue = computeDateValue.value;
1092
- dateChange(dateValue || reactData.currentDate);
1166
+ if (type === 'datetime') {
1167
+ dateChange(dateValue || reactData.currentDate);
1168
+ }
1093
1169
  hidePanel();
1094
1170
  };
1095
1171
  var dateMinuteEvent = function (evnt, item) {
@@ -1488,10 +1564,12 @@ export default defineComponent({
1488
1564
  return label;
1489
1565
  };
1490
1566
  var renderDateDayTable = function () {
1567
+ var multiple = props.multiple;
1491
1568
  var datePanelType = reactData.datePanelType, datePanelValue = reactData.datePanelValue;
1492
1569
  var dateValue = computeDateValue.value;
1493
1570
  var dateHeaders = computeDateHeaders.value;
1494
1571
  var dayDatas = computeDayDatas.value;
1572
+ var dateListValue = computeDateListValue.value;
1495
1573
  var matchFormat = 'yyyyMMdd';
1496
1574
  return [
1497
1575
  h('table', {
@@ -1514,7 +1592,7 @@ export default defineComponent({
1514
1592
  'is--now': item.isNow,
1515
1593
  'is--next': item.isNext,
1516
1594
  'is--disabled': isDateDisabled(item),
1517
- 'is--selected': XEUtils.isDateSame(dateValue, item.date, matchFormat),
1595
+ 'is--selected': multiple ? dateListValue.some(function (val) { return XEUtils.isDateSame(val, item.date, matchFormat); }) : XEUtils.isDateSame(dateValue, item.date, matchFormat),
1518
1596
  'is--hover': XEUtils.isDateSame(datePanelValue, item.date, matchFormat)
1519
1597
  },
1520
1598
  onClick: function () { return dateSelectEvent(item); },
@@ -1526,10 +1604,12 @@ export default defineComponent({
1526
1604
  ];
1527
1605
  };
1528
1606
  var renderDateWeekTable = function () {
1607
+ var multiple = props.multiple;
1529
1608
  var datePanelType = reactData.datePanelType, datePanelValue = reactData.datePanelValue;
1530
1609
  var dateValue = computeDateValue.value;
1531
1610
  var weekHeaders = computeWeekHeaders.value;
1532
1611
  var weekDates = computeWeekDates.value;
1612
+ var dateListValue = computeDateListValue.value;
1533
1613
  var matchFormat = 'yyyyMMdd';
1534
1614
  return [
1535
1615
  h('table', {
@@ -1544,7 +1624,7 @@ export default defineComponent({
1544
1624
  }))
1545
1625
  ]),
1546
1626
  h('tbody', weekDates.map(function (rows) {
1547
- var isSelected = rows.some(function (item) { return XEUtils.isDateSame(dateValue, item.date, matchFormat); });
1627
+ var isSelected = multiple ? rows.some(function (item) { return dateListValue.some(function (val) { return XEUtils.isDateSame(val, item.date, matchFormat); }); }) : rows.some(function (item) { return XEUtils.isDateSame(dateValue, item.date, matchFormat); });
1548
1628
  var isHover = rows.some(function (item) { return XEUtils.isDateSame(datePanelValue, item.date, matchFormat); });
1549
1629
  return h('tr', rows.map(function (item) {
1550
1630
  return h('td', {
@@ -1567,9 +1647,11 @@ export default defineComponent({
1567
1647
  ];
1568
1648
  };
1569
1649
  var renderDateMonthTable = function () {
1650
+ var multiple = props.multiple;
1570
1651
  var datePanelType = reactData.datePanelType, datePanelValue = reactData.datePanelValue;
1571
1652
  var dateValue = computeDateValue.value;
1572
1653
  var monthDatas = computeMonthDatas.value;
1654
+ var dateListValue = computeDateListValue.value;
1573
1655
  var matchFormat = 'yyyyMM';
1574
1656
  return [
1575
1657
  h('table', {
@@ -1587,7 +1669,7 @@ export default defineComponent({
1587
1669
  'is--now': item.isNow,
1588
1670
  'is--next': item.isNext,
1589
1671
  'is--disabled': isDateDisabled(item),
1590
- 'is--selected': XEUtils.isDateSame(dateValue, item.date, matchFormat),
1672
+ 'is--selected': multiple ? dateListValue.some(function (val) { return XEUtils.isDateSame(val, item.date, matchFormat); }) : XEUtils.isDateSame(dateValue, item.date, matchFormat),
1591
1673
  'is--hover': XEUtils.isDateSame(datePanelValue, item.date, matchFormat)
1592
1674
  },
1593
1675
  onClick: function () { return dateSelectEvent(item); },
@@ -1599,9 +1681,11 @@ export default defineComponent({
1599
1681
  ];
1600
1682
  };
1601
1683
  var renderDateQuarterTable = function () {
1684
+ var multiple = props.multiple;
1602
1685
  var datePanelType = reactData.datePanelType, datePanelValue = reactData.datePanelValue;
1603
1686
  var dateValue = computeDateValue.value;
1604
1687
  var quarterDatas = computeQuarterDatas.value;
1688
+ var dateListValue = computeDateListValue.value;
1605
1689
  var matchFormat = 'yyyyq';
1606
1690
  return [
1607
1691
  h('table', {
@@ -1619,7 +1703,7 @@ export default defineComponent({
1619
1703
  'is--now': item.isNow,
1620
1704
  'is--next': item.isNext,
1621
1705
  'is--disabled': isDateDisabled(item),
1622
- 'is--selected': XEUtils.isDateSame(dateValue, item.date, matchFormat),
1706
+ 'is--selected': multiple ? dateListValue.some(function (val) { return XEUtils.isDateSame(val, item.date, matchFormat); }) : XEUtils.isDateSame(dateValue, item.date, matchFormat),
1623
1707
  'is--hover': XEUtils.isDateSame(datePanelValue, item.date, matchFormat)
1624
1708
  },
1625
1709
  onClick: function () { return dateSelectEvent(item); },
@@ -1631,9 +1715,11 @@ export default defineComponent({
1631
1715
  ];
1632
1716
  };
1633
1717
  var renderDateYearTable = function () {
1718
+ var multiple = props.multiple;
1634
1719
  var datePanelType = reactData.datePanelType, datePanelValue = reactData.datePanelValue;
1635
1720
  var dateValue = computeDateValue.value;
1636
1721
  var yearDatas = computeYearDatas.value;
1722
+ var dateListValue = computeDateListValue.value;
1637
1723
  var matchFormat = 'yyyy';
1638
1724
  return [
1639
1725
  h('table', {
@@ -1646,10 +1732,12 @@ export default defineComponent({
1646
1732
  return h('tr', rows.map(function (item) {
1647
1733
  return h('td', {
1648
1734
  class: {
1649
- 'is--disabled': isDateDisabled(item),
1735
+ 'is--prev': item.isPrev,
1650
1736
  'is--current': item.isCurrent,
1651
1737
  'is--now': item.isNow,
1652
- 'is--selected': XEUtils.isDateSame(dateValue, item.date, matchFormat),
1738
+ 'is--next': item.isNext,
1739
+ 'is--disabled': isDateDisabled(item),
1740
+ 'is--selected': multiple ? dateListValue.some(function (val) { return XEUtils.isDateSame(val, item.date, matchFormat); }) : XEUtils.isDateSame(dateValue, item.date, matchFormat),
1653
1741
  'is--hover': XEUtils.isDateSame(datePanelValue, item.date, matchFormat)
1654
1742
  },
1655
1743
  onClick: function () { return dateSelectEvent(item); },
@@ -1675,6 +1763,7 @@ export default defineComponent({
1675
1763
  return renderDateDayTable();
1676
1764
  };
1677
1765
  var renderDatePanel = function () {
1766
+ var multiple = props.multiple;
1678
1767
  var datePanelType = reactData.datePanelType;
1679
1768
  var isDisabledPrevDateBtn = computeIsDisabledPrevDateBtn.value;
1680
1769
  var isDisabledNextDateBtn = computeIsDisabledNextDateBtn.value;
@@ -1723,7 +1812,16 @@ export default defineComponent({
1723
1812
  h('i', {
1724
1813
  class: 'vxe-icon--caret-right'
1725
1814
  })
1726
- ])
1815
+ ]),
1816
+ multiple && computeSupportMultiples.value ? h('span', {
1817
+ class: 'vxe-input--date-picker-btn vxe-input--date-picker-confirm-btn'
1818
+ }, [
1819
+ h('button', {
1820
+ class: 'vxe-input--date-picker-confirm',
1821
+ type: 'button',
1822
+ onClick: dateConfirmEvent
1823
+ }, GlobalConfig.i18n('vxe.button.confirm'))
1824
+ ]) : null
1727
1825
  ])
1728
1826
  ]),
1729
1827
  h('div', {
@@ -2007,7 +2105,7 @@ export default defineComponent({
2007
2105
  var isDatePickerType = computeIsDatePickerType.value;
2008
2106
  if (isDatePickerType) {
2009
2107
  dateParseValue(reactData.datePanelValue);
2010
- reactData.inputValue = reactData.datePanelLabel;
2108
+ reactData.inputValue = props.multiple ? computeDateMultipleLabel.value : reactData.datePanelLabel;
2011
2109
  }
2012
2110
  });
2013
2111
  nextTick(function () {
@@ -271,7 +271,10 @@
271
271
  .vxe-input--time-picker-confirm {
272
272
  position: absolute;
273
273
  right: 0;
274
- top: 0;
274
+ top: 0; }
275
+
276
+ .vxe-input--time-picker-confirm,
277
+ .vxe-input--date-picker-confirm {
275
278
  outline: 0;
276
279
  border: 1px solid #dcdfe6;
277
280
  border-radius: 4px;
@@ -279,10 +282,12 @@
279
282
  color: #fff;
280
283
  border-color: #409eff;
281
284
  background-color: #409eff; }
282
- .vxe-input--time-picker-confirm:hover {
285
+ .vxe-input--time-picker-confirm:hover,
286
+ .vxe-input--date-picker-confirm:hover {
283
287
  background-color: #5faeff;
284
288
  border-color: #5faeff; }
285
- .vxe-input--time-picker-confirm:active {
289
+ .vxe-input--time-picker-confirm:active,
290
+ .vxe-input--date-picker-confirm:active {
286
291
  background-color: #3196ff;
287
292
  border-color: #3196ff; }
288
293
 
@@ -316,8 +321,6 @@
316
321
  .vxe-input--date-picker-btn {
317
322
  display: inline-block;
318
323
  display: flex;
319
- border-radius: 4px;
320
- border: 1px solid #dcdfe6;
321
324
  align-items: center;
322
325
  justify-content: center;
323
326
  background-color: #fff; }
@@ -370,6 +373,8 @@
370
373
  .vxe-input--date-picker-body td.is--selected {
371
374
  color: #fff;
372
375
  background-color: #409eff; }
376
+ .vxe-input--date-picker-body td.is--selected.is--prev, .vxe-input--date-picker-body td.is--selected.is--next {
377
+ background-color: #73b8ff; }
373
378
  .vxe-input--date-picker-body td.is--selected .vxe-input--date-label,
374
379
  .vxe-input--date-picker-body td.is--selected .vxe-input--date-festival {
375
380
  color: #fff; }
@@ -558,8 +563,13 @@
558
563
  height: 30px;
559
564
  line-height: 30px; }
560
565
  .vxe-input--panel .vxe-input--date-picker-btn-wrapper .vxe-input--date-picker-btn {
561
- width: 30px;
562
566
  margin-left: 8px; }
567
+ .vxe-input--panel .vxe-input--date-picker-btn-wrapper .vxe-input--date-picker-prev-btn,
568
+ .vxe-input--panel .vxe-input--date-picker-btn-wrapper .vxe-input--date-picker-current-btn,
569
+ .vxe-input--panel .vxe-input--date-picker-btn-wrapper .vxe-input--date-picker-next-btn {
570
+ width: 30px;
571
+ border-radius: 4px;
572
+ border: 1px solid #dcdfe6; }
563
573
  .vxe-input--panel .vxe-input--date-picker-type-wrapper .vxe-input--date-picker-label,
564
574
  .vxe-input--panel .vxe-input--date-picker-type-wrapper .vxe-input--date-picker-btn {
565
575
  padding: 0 9px; }
@@ -590,7 +600,8 @@
590
600
  height: 48px; }
591
601
  .vxe-input--panel .vxe-input--date-picker-body th {
592
602
  height: 30px; }
593
- .vxe-input--panel .vxe-input--time-picker-confirm {
603
+ .vxe-input--panel .vxe-input--time-picker-confirm,
604
+ .vxe-input--panel .vxe-input--date-picker-confirm {
594
605
  height: 30px;
595
606
  padding: 0 9px; }
596
607
  .vxe-input--panel .vxe-input--date-label {
@@ -621,8 +632,13 @@
621
632
  height: 29px;
622
633
  line-height: 29px; }
623
634
  .vxe-input--panel.size--medium .vxe-input--date-picker-btn-wrapper .vxe-input--date-picker-btn {
624
- width: 29px;
625
635
  margin-left: 7px; }
636
+ .vxe-input--panel.size--medium .vxe-input--date-picker-btn-wrapper .vxe-input--date-picker-prev-btn,
637
+ .vxe-input--panel.size--medium .vxe-input--date-picker-btn-wrapper .vxe-input--date-picker-current-btn,
638
+ .vxe-input--panel.size--medium .vxe-input--date-picker-btn-wrapper .vxe-input--date-picker-next-btn {
639
+ width: 29px;
640
+ border-radius: 4px;
641
+ border: 1px solid #dcdfe6; }
626
642
  .vxe-input--panel.size--medium .vxe-input--date-picker-type-wrapper .vxe-input--date-picker-label,
627
643
  .vxe-input--panel.size--medium .vxe-input--date-picker-type-wrapper .vxe-input--date-picker-btn {
628
644
  padding: 0 8px; }
@@ -653,7 +669,8 @@
653
669
  height: 46px; }
654
670
  .vxe-input--panel.size--medium .vxe-input--date-picker-body th {
655
671
  height: 29px; }
656
- .vxe-input--panel.size--medium .vxe-input--time-picker-confirm {
672
+ .vxe-input--panel.size--medium .vxe-input--time-picker-confirm,
673
+ .vxe-input--panel.size--medium .vxe-input--date-picker-confirm {
657
674
  height: 29px;
658
675
  padding: 0 8px; }
659
676
  .vxe-input--panel.size--medium .vxe-input--date-label {
@@ -684,8 +701,13 @@
684
701
  height: 28px;
685
702
  line-height: 28px; }
686
703
  .vxe-input--panel.size--small .vxe-input--date-picker-btn-wrapper .vxe-input--date-picker-btn {
687
- width: 28px;
688
704
  margin-left: 6px; }
705
+ .vxe-input--panel.size--small .vxe-input--date-picker-btn-wrapper .vxe-input--date-picker-prev-btn,
706
+ .vxe-input--panel.size--small .vxe-input--date-picker-btn-wrapper .vxe-input--date-picker-current-btn,
707
+ .vxe-input--panel.size--small .vxe-input--date-picker-btn-wrapper .vxe-input--date-picker-next-btn {
708
+ width: 28px;
709
+ border-radius: 4px;
710
+ border: 1px solid #dcdfe6; }
689
711
  .vxe-input--panel.size--small .vxe-input--date-picker-type-wrapper .vxe-input--date-picker-label,
690
712
  .vxe-input--panel.size--small .vxe-input--date-picker-type-wrapper .vxe-input--date-picker-btn {
691
713
  padding: 0 7px; }
@@ -716,7 +738,8 @@
716
738
  height: 44px; }
717
739
  .vxe-input--panel.size--small .vxe-input--date-picker-body th {
718
740
  height: 28px; }
719
- .vxe-input--panel.size--small .vxe-input--time-picker-confirm {
741
+ .vxe-input--panel.size--small .vxe-input--time-picker-confirm,
742
+ .vxe-input--panel.size--small .vxe-input--date-picker-confirm {
720
743
  height: 28px;
721
744
  padding: 0 7px; }
722
745
  .vxe-input--panel.size--small .vxe-input--date-label {
@@ -747,8 +770,13 @@
747
770
  height: 27px;
748
771
  line-height: 27px; }
749
772
  .vxe-input--panel.size--mini .vxe-input--date-picker-btn-wrapper .vxe-input--date-picker-btn {
750
- width: 27px;
751
773
  margin-left: 5px; }
774
+ .vxe-input--panel.size--mini .vxe-input--date-picker-btn-wrapper .vxe-input--date-picker-prev-btn,
775
+ .vxe-input--panel.size--mini .vxe-input--date-picker-btn-wrapper .vxe-input--date-picker-current-btn,
776
+ .vxe-input--panel.size--mini .vxe-input--date-picker-btn-wrapper .vxe-input--date-picker-next-btn {
777
+ width: 27px;
778
+ border-radius: 4px;
779
+ border: 1px solid #dcdfe6; }
752
780
  .vxe-input--panel.size--mini .vxe-input--date-picker-type-wrapper .vxe-input--date-picker-label,
753
781
  .vxe-input--panel.size--mini .vxe-input--date-picker-type-wrapper .vxe-input--date-picker-btn {
754
782
  padding: 0 6px; }
@@ -779,7 +807,8 @@
779
807
  height: 42px; }
780
808
  .vxe-input--panel.size--mini .vxe-input--date-picker-body th {
781
809
  height: 26px; }
782
- .vxe-input--panel.size--mini .vxe-input--time-picker-confirm {
810
+ .vxe-input--panel.size--mini .vxe-input--time-picker-confirm,
811
+ .vxe-input--panel.size--mini .vxe-input--date-picker-confirm {
783
812
  height: 27px;
784
813
  padding: 0 6px; }
785
814
  .vxe-input--panel.size--mini .vxe-input--date-label {
@@ -62,7 +62,11 @@ var tableKeyboardHook = {
62
62
  var elemStore = internalData.elemStore;
63
63
  var disX_1 = evnt.clientX;
64
64
  var disY_1 = evnt.clientY;
65
- var bodyWrapperElem_1 = elemStore[(column.fixed || 'main') + "-body-wrapper"] || elemStore['main-body-wrapper'];
65
+ var bodyWrapperRef = elemStore[(column.fixed || 'main') + "-body-wrapper"] || elemStore['main-body-wrapper'];
66
+ var bodyWrapperElem_1 = bodyWrapperRef ? bodyWrapperRef.value : null;
67
+ if (!bodyWrapperElem_1) {
68
+ return;
69
+ }
66
70
  var checkboxRangeElem_1 = bodyWrapperElem_1.querySelector('.vxe-table--checkbox-range');
67
71
  var domMousemove_1 = document.onmousemove;
68
72
  var domMouseup_1 = document.onmouseup;