vxe-pc-ui 4.15.2 → 4.15.4

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 (129) hide show
  1. package/dist/all.esm.js +866 -257
  2. package/es/backtop/src/backtop.js +2 -1
  3. package/es/button/src/button.js +3 -2
  4. package/es/calendar/src/calendar.js +2 -1
  5. package/es/cascader/src/cascader.js +72 -29
  6. package/es/checkbox/src/group.js +5 -1
  7. package/es/date-panel/src/util.js +27 -16
  8. package/es/date-picker/src/date-picker.js +572 -74
  9. package/es/date-range-picker/src/date-range-picker.js +3 -2
  10. package/es/drawer/src/drawer.js +2 -0
  11. package/es/form/render/index.js +3 -2
  12. package/es/form/src/form.js +6 -5
  13. package/es/form/src/itemInfo.js +6 -5
  14. package/es/input/src/input.js +2 -1
  15. package/es/menu/src/menu.js +2 -1
  16. package/es/modal/src/modal.js +5 -2
  17. package/es/pager/src/pager.js +4 -3
  18. package/es/radio/src/group.js +5 -1
  19. package/es/select/src/select.js +25 -20
  20. package/es/splitter/src/splitter.js +7 -6
  21. package/es/table-select/src/table-select.js +21 -16
  22. package/es/tabs/src/tabs.js +4 -3
  23. package/es/textarea/src/textarea.js +2 -1
  24. package/es/tree/src/tree.js +3 -2
  25. package/es/tree-select/src/tree-select.js +16 -19
  26. package/es/ui/index.js +4 -1
  27. package/es/ui/src/log.js +14 -4
  28. package/es/upload/src/upload.js +12 -3
  29. package/lib/backtop/src/backtop.js +5 -2
  30. package/lib/backtop/src/backtop.min.js +1 -1
  31. package/lib/button/src/button.js +4 -1
  32. package/lib/button/src/button.min.js +1 -1
  33. package/lib/calendar/src/calendar.js +4 -1
  34. package/lib/calendar/src/calendar.min.js +1 -1
  35. package/lib/cascader/src/cascader.js +80 -30
  36. package/lib/cascader/src/cascader.min.js +1 -1
  37. package/lib/checkbox/src/group.js +5 -1
  38. package/lib/checkbox/src/group.min.js +1 -1
  39. package/lib/date-panel/src/util.js +37 -19
  40. package/lib/date-panel/src/util.min.js +1 -1
  41. package/lib/date-picker/src/date-picker.js +620 -77
  42. package/lib/date-picker/src/date-picker.min.js +1 -1
  43. package/lib/date-range-picker/src/date-range-picker.js +4 -1
  44. package/lib/date-range-picker/src/date-range-picker.min.js +1 -1
  45. package/lib/drawer/src/drawer.js +2 -0
  46. package/lib/drawer/src/drawer.min.js +1 -1
  47. package/lib/form/render/index.js +4 -1
  48. package/lib/form/render/index.min.js +1 -1
  49. package/lib/form/src/form.js +8 -4
  50. package/lib/form/src/form.min.js +1 -1
  51. package/lib/form/src/itemInfo.js +7 -4
  52. package/lib/form/src/itemInfo.min.js +1 -1
  53. package/lib/index.umd.js +941 -215
  54. package/lib/index.umd.min.js +1 -1
  55. package/lib/input/src/input.js +6 -3
  56. package/lib/input/src/input.min.js +1 -1
  57. package/lib/menu/src/menu.js +4 -1
  58. package/lib/menu/src/menu.min.js +1 -1
  59. package/lib/modal/src/modal.js +8 -2
  60. package/lib/modal/src/modal.min.js +1 -1
  61. package/lib/pager/src/pager.js +6 -2
  62. package/lib/pager/src/pager.min.js +1 -1
  63. package/lib/radio/src/group.js +5 -1
  64. package/lib/radio/src/group.min.js +1 -1
  65. package/lib/select/src/select.js +27 -20
  66. package/lib/select/src/select.min.js +1 -1
  67. package/lib/splitter/src/splitter.js +12 -8
  68. package/lib/splitter/src/splitter.min.js +1 -1
  69. package/lib/table-select/src/table-select.js +22 -15
  70. package/lib/table-select/src/table-select.min.js +1 -1
  71. package/lib/tabs/src/tabs.js +7 -3
  72. package/lib/tabs/src/tabs.min.js +1 -1
  73. package/lib/textarea/src/textarea.js +4 -1
  74. package/lib/textarea/src/textarea.min.js +1 -1
  75. package/lib/tree/src/tree.js +7 -4
  76. package/lib/tree/src/tree.min.js +1 -1
  77. package/lib/tree-select/src/tree-select.js +14 -10
  78. package/lib/tree-select/src/tree-select.min.js +1 -1
  79. package/lib/ui/index.js +4 -1
  80. package/lib/ui/index.min.js +1 -1
  81. package/lib/ui/src/log.js +16 -3
  82. package/lib/ui/src/log.min.js +1 -1
  83. package/lib/upload/src/upload.js +20 -3
  84. package/lib/upload/src/upload.min.js +1 -1
  85. package/package.json +1 -1
  86. package/packages/backtop/src/backtop.ts +3 -1
  87. package/packages/button/src/button.ts +4 -2
  88. package/packages/calendar/src/calendar.ts +3 -1
  89. package/packages/cascader/src/cascader.ts +71 -29
  90. package/packages/checkbox/src/group.ts +6 -2
  91. package/packages/date-panel/src/util.ts +28 -16
  92. package/packages/date-picker/src/date-picker.ts +583 -75
  93. package/packages/date-range-picker/src/date-range-picker.ts +4 -2
  94. package/packages/drawer/src/drawer.ts +2 -0
  95. package/packages/form/render/index.ts +4 -2
  96. package/packages/form/src/form.ts +7 -5
  97. package/packages/form/src/itemInfo.ts +7 -5
  98. package/packages/input/src/input.ts +3 -1
  99. package/packages/menu/src/menu.ts +3 -1
  100. package/packages/modal/src/modal.ts +6 -2
  101. package/packages/pager/src/pager.ts +5 -3
  102. package/packages/radio/src/group.ts +6 -2
  103. package/packages/select/src/select.ts +29 -22
  104. package/packages/splitter/src/splitter.ts +8 -6
  105. package/packages/table-select/src/table-select.ts +24 -17
  106. package/packages/tabs/src/tabs.ts +5 -3
  107. package/packages/textarea/src/textarea.ts +3 -1
  108. package/packages/tree/src/tree.ts +4 -2
  109. package/packages/tree-select/src/tree-select.ts +17 -19
  110. package/packages/ui/index.ts +3 -0
  111. package/packages/ui/src/log.ts +16 -4
  112. package/packages/upload/src/upload.ts +14 -3
  113. package/types/components/cascader.d.ts +4 -0
  114. package/types/components/date-picker.d.ts +14 -6
  115. package/types/components/drawer.d.ts +2 -0
  116. package/types/components/modal.d.ts +2 -0
  117. package/types/components/upload.d.ts +28 -1
  118. /package/es/icon/{iconfont.1781753592499.ttf → iconfont.1781876596706.ttf} +0 -0
  119. /package/es/icon/{iconfont.1781753592499.woff → iconfont.1781876596706.woff} +0 -0
  120. /package/es/icon/{iconfont.1781753592499.woff2 → iconfont.1781876596706.woff2} +0 -0
  121. /package/es/{iconfont.1781753592499.ttf → iconfont.1781876596706.ttf} +0 -0
  122. /package/es/{iconfont.1781753592499.woff → iconfont.1781876596706.woff} +0 -0
  123. /package/es/{iconfont.1781753592499.woff2 → iconfont.1781876596706.woff2} +0 -0
  124. /package/lib/icon/style/{iconfont.1781753592499.ttf → iconfont.1781876596706.ttf} +0 -0
  125. /package/lib/icon/style/{iconfont.1781753592499.woff → iconfont.1781876596706.woff} +0 -0
  126. /package/lib/icon/style/{iconfont.1781753592499.woff2 → iconfont.1781876596706.woff2} +0 -0
  127. /package/lib/{iconfont.1781753592499.ttf → iconfont.1781876596706.ttf} +0 -0
  128. /package/lib/{iconfont.1781753592499.woff → iconfont.1781876596706.woff} +0 -0
  129. /package/lib/{iconfont.1781753592499.woff2 → iconfont.1781876596706.woff2} +0 -0
@@ -17,6 +17,36 @@ var _datePanel = _interopRequireDefault(require("../../date-panel/src/date-panel
17
17
  var _button = _interopRequireDefault(require("../../button/src/button"));
18
18
  var _buttonGroup = _interopRequireDefault(require("../../button/src/button-group"));
19
19
  function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
20
+ const {
21
+ warnLog,
22
+ errLog
23
+ } = (0, _log.createComponentLog)('date-picker');
24
+ const maskedTypes = ['year', 'month', 'date', 'datetime', 'time'];
25
+ const inputMaskedKeys = ['y', 'M', 'd', 'H', 'm', 'n', 's'];
26
+ const parseInputKayMaps = {};
27
+ inputMaskedKeys.forEach(key => {
28
+ parseInputKayMaps[key] = true;
29
+ });
30
+ function createReactData() {
31
+ return {
32
+ initialized: false,
33
+ panelIndex: 0,
34
+ visiblePanel: false,
35
+ isAniVisible: false,
36
+ panelStyle: {},
37
+ panelPlacement: '',
38
+ isActivated: false,
39
+ inputValue: '',
40
+ labelFlag: 0
41
+ };
42
+ }
43
+ function createInternalData() {
44
+ return {
45
+ // hpTimeout: undefined,
46
+ inputLabel: '',
47
+ laseFocusMasked: 0
48
+ };
49
+ }
20
50
  var _default = exports.default = (0, _comp.defineVxeComponent)({
21
51
  name: 'VxeDatePicker',
22
52
  props: {
@@ -79,7 +109,6 @@ var _default = exports.default = (0, _comp.defineVxeComponent)({
79
109
  labelFormat: String,
80
110
  valueFormat: String,
81
111
  timeFormat: String,
82
- inputFormat: String,
83
112
  editable: {
84
113
  type: Boolean,
85
114
  default: true
@@ -109,7 +138,7 @@ var _default = exports.default = (0, _comp.defineVxeComponent)({
109
138
  type: Boolean,
110
139
  default: () => (0, _ui.getConfig)().datePicker.autoClose
111
140
  },
112
- controlConfig: Object,
141
+ maskedConfig: Object,
113
142
  prefixIcon: String,
114
143
  suffixIcon: String,
115
144
  placement: String,
@@ -138,21 +167,8 @@ var _default = exports.default = (0, _comp.defineVxeComponent)({
138
167
  const {
139
168
  computeSize
140
169
  } = (0, _ui.useSize)(props);
141
- const reactData = (0, _vue.reactive)({
142
- initialized: false,
143
- panelIndex: 0,
144
- visiblePanel: false,
145
- isAniVisible: false,
146
- panelStyle: {},
147
- panelPlacement: '',
148
- isActivated: false,
149
- inputValue: '',
150
- inputLabel: ''
151
- });
152
- const internalData = {
153
- // hpTimeout: undefined,
154
- parseInputKayMaps: {}
155
- };
170
+ const reactData = (0, _vue.reactive)(createReactData());
171
+ const internalData = createInternalData();
156
172
  const refElem = (0, _vue.ref)();
157
173
  const refInputTarget = (0, _vue.ref)();
158
174
  const refInputPanel = (0, _vue.ref)();
@@ -226,6 +242,50 @@ var _default = exports.default = (0, _comp.defineVxeComponent)({
226
242
  const computeIsClearable = (0, _vue.computed)(() => {
227
243
  return props.clearable;
228
244
  });
245
+ const computeIsDatePanelType = (0, _vue.computed)(() => {
246
+ const isDateTimeType = computeIsDateTimeType.value;
247
+ return isDateTimeType || ['date', 'week', 'month', 'quarter', 'year'].indexOf(props.type) > -1;
248
+ });
249
+ const computeDateListValue = (0, _vue.computed)(() => {
250
+ const {
251
+ modelValue,
252
+ type,
253
+ multiple
254
+ } = props;
255
+ const isDatePanelType = computeIsDatePanelType.value;
256
+ const dateValueFormat = computeDateValueFormat.value;
257
+ if (multiple && modelValue && isDatePanelType) {
258
+ return _xeUtils.default.toValueString(modelValue).split(',').map(item => {
259
+ const date = (0, _util.parseDateValue)(item, type, {
260
+ valueFormat: dateValueFormat
261
+ });
262
+ if (_xeUtils.default.isValidDate(date)) {
263
+ return date;
264
+ }
265
+ return date;
266
+ });
267
+ }
268
+ return [];
269
+ });
270
+ const computeLimitMaxCount = (0, _vue.computed)(() => {
271
+ return props.multiple ? _xeUtils.default.toNumber(props.limitCount) : 0;
272
+ });
273
+ const computeDateMultipleValue = (0, _vue.computed)(() => {
274
+ const dateListValue = computeDateListValue.value;
275
+ const dateValueFormat = computeDateValueFormat.value;
276
+ return dateListValue.map(date => _xeUtils.default.toDateString(date, dateValueFormat));
277
+ });
278
+ const computeOverCount = (0, _vue.computed)(() => {
279
+ const {
280
+ multiple
281
+ } = props;
282
+ const limitMaxCount = computeLimitMaxCount.value;
283
+ const dateMultipleValue = computeDateMultipleValue.value;
284
+ if (multiple && limitMaxCount) {
285
+ return dateMultipleValue.length >= limitMaxCount;
286
+ }
287
+ return false;
288
+ });
229
289
  const computeInputReadonly = (0, _vue.computed)(() => {
230
290
  const {
231
291
  type,
@@ -290,12 +350,9 @@ var _default = exports.default = (0, _comp.defineVxeComponent)({
290
350
  } = props;
291
351
  return (0, _util.handleValueFormat)(type, valueFormat);
292
352
  });
293
- const computeDateInputFormat = (0, _vue.computed)(() => {
294
- const {
295
- type,
296
- inputFormat
297
- } = props;
298
- return (0, _util.handleInputFormat)(type, inputFormat);
353
+ const computeDateMaskedFormat = (0, _vue.computed)(() => {
354
+ const dateLabelFormat = computeDateLabelFormat.value;
355
+ return dateLabelFormat;
299
356
  });
300
357
  const computeFirstDayOfWeek = (0, _vue.computed)(() => {
301
358
  const {
@@ -324,8 +381,15 @@ var _default = exports.default = (0, _comp.defineVxeComponent)({
324
381
  return dateObj.label;
325
382
  }).join(', ');
326
383
  });
327
- const computeControlOpts = (0, _vue.computed)(() => {
328
- return Object.assign({}, (0, _ui.getConfig)().datePicker.controlConfig, props.controlConfig);
384
+ const computeMaskedOpts = (0, _vue.computed)(() => {
385
+ return Object.assign({}, (0, _ui.getConfig)().datePicker.maskedConfig, props.maskedConfig);
386
+ });
387
+ const computeMaskChar = (0, _vue.computed)(() => {
388
+ const maskedOpts = computeMaskedOpts.value;
389
+ const {
390
+ maskPlaceholder
391
+ } = maskedOpts;
392
+ return (maskPlaceholder ? ('' + maskPlaceholder)[0] : '') || '*';
329
393
  });
330
394
  const updateModelValue = () => {
331
395
  const {
@@ -341,6 +405,12 @@ var _default = exports.default = (0, _comp.defineVxeComponent)({
341
405
  }
342
406
  reactData.inputValue = val;
343
407
  };
408
+ const handleInputLabel = (text, isUpdate) => {
409
+ internalData.inputLabel = text;
410
+ if (isUpdate) {
411
+ reactData.labelFlag++;
412
+ }
413
+ };
344
414
  const triggerEvent = evnt => {
345
415
  const {
346
416
  inputValue
@@ -402,7 +472,7 @@ var _default = exports.default = (0, _comp.defineVxeComponent)({
402
472
  const inputEvent = evnt => {
403
473
  const inputElem = evnt.target;
404
474
  const value = inputElem.value;
405
- reactData.inputLabel = value;
475
+ handleInputLabel(value, true);
406
476
  dispatchEvent('input', {
407
477
  value
408
478
  }, evnt);
@@ -413,19 +483,6 @@ var _default = exports.default = (0, _comp.defineVxeComponent)({
413
483
  triggerEvent(evnt);
414
484
  }
415
485
  };
416
- const focusEvent = evnt => {
417
- const popupOpts = computePopupOpts.value;
418
- const {
419
- trigger
420
- } = popupOpts;
421
- reactData.isActivated = true;
422
- if (!trigger || trigger === 'default') {
423
- datePickerOpenEvent(evnt);
424
- } else if (trigger === 'icon') {
425
- hidePanel();
426
- }
427
- triggerEvent(evnt);
428
- };
429
486
  const clickPrefixEvent = evnt => {
430
487
  const isDisabled = computeIsDisabled.value;
431
488
  if (!isDisabled) {
@@ -446,6 +503,125 @@ var _default = exports.default = (0, _comp.defineVxeComponent)({
446
503
  }, 350);
447
504
  });
448
505
  };
506
+ const dateChange = (date, isReload) => {
507
+ const {
508
+ modelValue,
509
+ multiple
510
+ } = props;
511
+ const isDateTimeType = computeIsDateTimeType.value;
512
+ const dateValueFormat = computeDateValueFormat.value;
513
+ const firstDayOfWeek = computeFirstDayOfWeek.value;
514
+ if (props.type === 'week') {
515
+ const sWeek = _xeUtils.default.toNumber(props.selectDay);
516
+ date = _xeUtils.default.getWhatWeek(date, 0, sWeek, firstDayOfWeek);
517
+ }
518
+ const inpVal = _xeUtils.default.toDateString(date, dateValueFormat, {
519
+ firstDay: firstDayOfWeek
520
+ });
521
+ if (multiple) {
522
+ const overCount = computeOverCount.value;
523
+ // 如果为多选
524
+ if (isDateTimeType) {
525
+ // 如果是datetime特殊类型
526
+ const dateListValue = isReload ? [] : [...computeDateListValue.value];
527
+ const datetimeRest = [];
528
+ const eqIndex = _xeUtils.default.findIndexOf(dateListValue, val => _xeUtils.default.isDateSame(date, val, 'yyyyMMdd'));
529
+ if (eqIndex === -1) {
530
+ if (overCount) {
531
+ // 如果超出最大多选数量
532
+ return;
533
+ }
534
+ dateListValue.push(date);
535
+ } else {
536
+ dateListValue.splice(eqIndex, 1);
537
+ }
538
+ dateListValue.forEach(item => {
539
+ if (item) {
540
+ datetimeRest.push(item);
541
+ }
542
+ });
543
+ handleChange(datetimeRest.map(date => _xeUtils.default.toDateString(date, dateValueFormat)).join(','), {
544
+ type: 'update'
545
+ });
546
+ } else {
547
+ const dateMultipleValue = isReload ? [] : computeDateMultipleValue.value;
548
+ // 如果是日期类型
549
+ if (dateMultipleValue.some(val => _xeUtils.default.isEqual(val, inpVal))) {
550
+ handleChange(dateMultipleValue.filter(val => !_xeUtils.default.isEqual(val, inpVal)).join(','), {
551
+ type: 'update'
552
+ });
553
+ } else {
554
+ if (overCount) {
555
+ // 如果超出最大多选数量
556
+ return;
557
+ }
558
+ handleChange(dateMultipleValue.concat([inpVal]).join(','), {
559
+ type: 'update'
560
+ });
561
+ }
562
+ }
563
+ } else {
564
+ // 如果为单选
565
+ if (!_xeUtils.default.isEqual(modelValue, inpVal)) {
566
+ handleChange(inpVal, {
567
+ type: 'update'
568
+ });
569
+ }
570
+ }
571
+ };
572
+ const dateRevert = () => {
573
+ const panelLabel = computePanelLabel.value;
574
+ handleInputLabel(panelLabel, true);
575
+ };
576
+ const afterCheckValue = inpVal => {
577
+ const {
578
+ type
579
+ } = props;
580
+ const {
581
+ inputLabel
582
+ } = internalData;
583
+ const dateLabelFormat = computeDateLabelFormat.value;
584
+ if (!inpVal) {
585
+ handleChange('', {
586
+ type: 'check'
587
+ });
588
+ return;
589
+ }
590
+ let inpDateVal = (0, _util.parseDateValue)(inpVal, type, {
591
+ valueFormat: dateLabelFormat
592
+ });
593
+ if (!_xeUtils.default.isValidDate(inpDateVal)) {
594
+ dateRevert();
595
+ return;
596
+ }
597
+ if (type === 'time') {
598
+ inpDateVal = _xeUtils.default.toDateString(inpDateVal, dateLabelFormat);
599
+ if (inputLabel !== inpDateVal) {
600
+ handleChange(inpDateVal, {
601
+ type: 'check'
602
+ });
603
+ }
604
+ handleInputLabel(inpDateVal, true);
605
+ return;
606
+ }
607
+ let isChange = false;
608
+ const firstDayOfWeek = computeFirstDayOfWeek.value;
609
+ if (type === 'datetime') {
610
+ const dateValue = reactData.inputValue;
611
+ if (inpVal !== _xeUtils.default.toDateString(dateValue, dateLabelFormat) || inpVal !== _xeUtils.default.toDateString(inpDateVal, dateLabelFormat)) {
612
+ isChange = true;
613
+ }
614
+ } else {
615
+ isChange = true;
616
+ }
617
+ const label = _xeUtils.default.toDateString(inpDateVal, dateLabelFormat, {
618
+ firstDay: firstDayOfWeek
619
+ });
620
+ handleInputLabel(label, true);
621
+ if (isChange) {
622
+ dateChange(inpDateVal);
623
+ }
624
+ };
449
625
  const clearValueEvent = (evnt, value) => {
450
626
  const isDatePickerType = computeIsDatePickerType.value;
451
627
  if (isDatePickerType) {
@@ -467,17 +643,225 @@ var _default = exports.default = (0, _comp.defineVxeComponent)({
467
643
  }, evnt);
468
644
  }
469
645
  };
470
- const handleArrowInputDate = (evnt, isUpArrow) => {
646
+ const handleArrowInputDate = (evnt, isUpArrow, isDwArrow, isLtArrow, isRtArrow) => {
471
647
  const {
648
+ type,
472
649
  multiple
473
650
  } = props;
474
651
  if (multiple) {
475
652
  return;
476
653
  }
654
+ const targetElem = refInputTarget.value;
655
+ if (!targetElem) {
656
+ return;
657
+ }
658
+ const inpValue = targetElem.value;
659
+ if (!inpValue) {
660
+ return;
661
+ }
662
+ const dateMaskedFormat = computeDateMaskedFormat.value;
663
+ const dateLabelFormat = computeDateLabelFormat.value;
664
+ const firstDayOfWeek = computeFirstDayOfWeek.value;
665
+ const maskChar = computeMaskChar.value;
666
+ const selectionStart = targetElem.selectionStart || 0;
667
+ let selectKey = dateMaskedFormat[selectionStart];
668
+ if (!parseInputKayMaps[selectKey]) {
669
+ selectKey = dateMaskedFormat[selectionStart - 1];
670
+ }
671
+ const skRest = dateMaskedFormat.match(new RegExp(selectKey + '+'));
672
+ if (!skRest) {
673
+ return;
674
+ }
675
+ if (isUpArrow || isDwArrow) {
676
+ const chunkFormat = skRest[0] || '';
677
+ const chunkStartIndex = skRest.index || 0;
678
+ const chunkEndIndex = chunkStartIndex + chunkFormat.length;
679
+ const chunkValue = inpValue.slice(chunkStartIndex, chunkEndIndex);
680
+ if (parseInputKayMaps[selectKey]) {
681
+ const chunkNum = ((0, _util.isAllSameChar)(chunkValue, maskChar) ? (0, _util.getChunkDefaultNum)(selectKey) : _xeUtils.default.toNumber(chunkValue)) + (isUpArrow ? 1 : -1);
682
+ const restValue = inpValue.slice(0, chunkStartIndex) + _xeUtils.default.padStart(chunkNum, chunkFormat.length, '0') + inpValue.slice(chunkEndIndex);
683
+ evnt.preventDefault();
684
+ if (restValue.indexOf(maskChar) === -1) {
685
+ // 解析日期
686
+ const inpDateVal = (0, _util.parseDateValue)(restValue, type, {
687
+ valueFormat: dateLabelFormat
688
+ });
689
+ if (_xeUtils.default.isValidDate(inpDateVal)) {
690
+ const label = _xeUtils.default.toDateString(inpDateVal, dateLabelFormat, {
691
+ firstDay: firstDayOfWeek
692
+ });
693
+ targetElem.value = label;
694
+ handleInputLabel(label, false);
695
+ }
696
+ } else {
697
+ targetElem.value = restValue;
698
+ handleInputLabel(restValue, false);
699
+ }
700
+ }
701
+ targetElem.setSelectionRange(chunkStartIndex, chunkEndIndex);
702
+ } else if (isLtArrow || isRtArrow) {
703
+ const currKeyIndex = inputMaskedKeys.indexOf(selectKey);
704
+ if (currKeyIndex > -1) {
705
+ const allMaskedKeys = _xeUtils.default.map(dateMaskedFormat.match(new RegExp(`(${inputMaskedKeys.join('|')})+`, 'g')) || [], fullKey => fullKey[0]);
706
+ const currIndex = _xeUtils.default.findIndexOf(allMaskedKeys, key => selectKey === key[0]);
707
+ const targetFormatKey = isLtArrow ? allMaskedKeys[currIndex - 1] || allMaskedKeys[0] : allMaskedKeys[currIndex + 1] || allMaskedKeys[allMaskedKeys.length - 1];
708
+ const targetKey = targetFormatKey ? targetFormatKey[0] : '';
709
+ const sktRest = dateMaskedFormat.match(new RegExp(targetKey + '+'));
710
+ if (sktRest) {
711
+ evnt.preventDefault();
712
+ const mtStartIndex = sktRest.index || 0;
713
+ const mtEndIndex = mtStartIndex + sktRest[0].length;
714
+ targetElem.setSelectionRange(mtStartIndex, mtEndIndex);
715
+ }
716
+ }
717
+ }
718
+ internalData.isTriggerMasked = true;
719
+ };
720
+ const handleMaskedInputDate = evnt => {
477
721
  const {
478
- inputValue
479
- } = reactData;
480
- if (!inputValue) {
722
+ multiple
723
+ } = props;
724
+ if (multiple) {
725
+ return;
726
+ }
727
+ const targetElem = refInputTarget.value;
728
+ if (!targetElem) {
729
+ return;
730
+ }
731
+ const isControlKey = (0, _dom.hasControlKey)(evnt);
732
+ if (isControlKey) {
733
+ return;
734
+ }
735
+ evnt.preventDefault();
736
+ const eKey = evnt.key;
737
+ const isDeleleKey = _ui.globalEvents.hasKey(evnt, _ui.GLOBAL_EVENT_KEYS.DELETE);
738
+ const isBackspaceKey = _ui.globalEvents.hasKey(evnt, _ui.GLOBAL_EVENT_KEYS.BACKSPACE);
739
+ const isNumKey = eKey >= '0' && eKey <= '9';
740
+ const numKey = isNumKey ? evnt.key : '';
741
+ if (!(isDeleleKey || isBackspaceKey || isNumKey)) {
742
+ return;
743
+ }
744
+ const {
745
+ isTriggerMasked
746
+ } = internalData;
747
+ const dateMaskedFormat = computeDateMaskedFormat.value;
748
+ const maskChar = computeMaskChar.value;
749
+ let inpValue = targetElem.value || dateMaskedFormat;
750
+ const selectionStart = targetElem.selectionStart || 0;
751
+ const selectionEnd = targetElem.selectionEnd || 0;
752
+ let selectKey = dateMaskedFormat[selectionStart];
753
+ if (!parseInputKayMaps[selectKey]) {
754
+ selectKey = dateMaskedFormat[selectionStart - 1];
755
+ }
756
+ const skRest = dateMaskedFormat.match(new RegExp(selectKey + '+'));
757
+ if (!skRest) {
758
+ return;
759
+ }
760
+ const allMaskedKeys = _xeUtils.default.map(dateMaskedFormat.match(new RegExp(`(${inputMaskedKeys.join('|')})+`, 'g')) || [], fullKey => fullKey[0]);
761
+ const chunkFormat = skRest[0] || '';
762
+ const chunkStartIndex = skRest.index || 0;
763
+ const chunkEndIndex = chunkStartIndex + chunkFormat.length;
764
+ const currKeyIndex = allMaskedKeys.indexOf(selectKey);
765
+ // 全选 | 如果无效字符
766
+ const isAllSelected = !selectionStart && selectionEnd === inpValue.length;
767
+ const isNotMasked = inpValue && inpValue.length !== dateMaskedFormat.length;
768
+ if (isAllSelected || isNotMasked) {
769
+ inpValue = dateMaskedFormat;
770
+ }
771
+ let chunkValue = isDeleleKey ? '' : inpValue.slice(chunkStartIndex, chunkEndIndex);
772
+ const chunkNums = chunkValue.match(/\d/g) || [];
773
+ const chunkNumList = isTriggerMasked && !isBackspaceKey ? [] : chunkNums.slice(0);
774
+ if (isNumKey) {
775
+ chunkNumList.push(numKey);
776
+ } else if (isBackspaceKey) {
777
+ chunkNumList.pop();
778
+ }
779
+ chunkValue = chunkNumList.join('').padEnd(chunkFormat.length, maskChar);
780
+ let restValue = inpValue.slice(0, chunkStartIndex) + chunkValue + inpValue.slice(chunkEndIndex);
781
+ restValue = restValue.replace(new RegExp(`(${inputMaskedKeys.join('|')})`, 'g'), maskChar);
782
+ targetElem.value = restValue;
783
+ handleInputLabel(restValue, false);
784
+ // 如果是全选/删除
785
+ if (isAllSelected) {
786
+ if (isBackspaceKey || isDeleleKey) {
787
+ const firstMaskedKeys = allMaskedKeys[0];
788
+ const firstSkRest = dateMaskedFormat.match(new RegExp(`${firstMaskedKeys}+`));
789
+ if (firstSkRest) {
790
+ const firstChunkFormat = firstSkRest[0];
791
+ targetElem.setSelectionRange(0, firstChunkFormat.length);
792
+ internalData.isTriggerMasked = true;
793
+ return;
794
+ }
795
+ }
796
+ } else {
797
+ if (isBackspaceKey && !chunkNums.length) {
798
+ // 回退到上一个数字块
799
+ for (let i = currKeyIndex - 1; i >= 0; i--) {
800
+ const prveChunkKey = allMaskedKeys[i];
801
+ const prveSkRest = dateMaskedFormat.match(new RegExp(`${prveChunkKey}+`));
802
+ if (prveSkRest) {
803
+ const prveChunkFormat = prveSkRest[0];
804
+ const prveChunkStartIndex = prveSkRest.index || 0;
805
+ const prveChunkEndIndex = prveChunkStartIndex + prveChunkFormat.length;
806
+ let prveChunkValue = restValue.slice(prveChunkStartIndex, prveChunkEndIndex);
807
+ const prveChunkNums = prveChunkValue.match(/\d/g) || [];
808
+ if (prveChunkNums.length) {
809
+ prveChunkNums.pop();
810
+ prveChunkValue = prveChunkNums.join('').padEnd(prveChunkFormat.length, maskChar);
811
+ restValue = restValue.slice(0, prveChunkStartIndex) + prveChunkValue + restValue.slice(prveChunkEndIndex);
812
+ targetElem.value = restValue;
813
+ handleInputLabel(restValue, false);
814
+ targetElem.setSelectionRange(prveChunkStartIndex, prveChunkEndIndex);
815
+ return;
816
+ }
817
+ }
818
+ }
819
+ const firstMaskedKeys = allMaskedKeys[0];
820
+ const firstSkRest = dateMaskedFormat.match(new RegExp(`${firstMaskedKeys}+`));
821
+ if (firstSkRest) {
822
+ const firstChunkFormat = firstSkRest[0];
823
+ restValue = dateMaskedFormat.replace(new RegExp(`(${inputMaskedKeys.join('|')})`, 'g'), maskChar);
824
+ targetElem.value = restValue;
825
+ handleInputLabel(restValue, false);
826
+ targetElem.setSelectionRange(0, firstChunkFormat.length);
827
+ internalData.isTriggerMasked = true;
828
+ return;
829
+ }
830
+ return;
831
+ }
832
+ }
833
+ let maskStartIndex = skRest.index || 0;
834
+ let maskEndIndex = maskStartIndex + skRest[0].length;
835
+ // 如果输入完成,跳转下一个
836
+ if (chunkNumList.length >= chunkValue.length) {
837
+ const nextKeys = allMaskedKeys.slice(currKeyIndex + 1);
838
+ if (currKeyIndex > -1) {
839
+ const nextRest = nextKeys.length ? dateMaskedFormat.match(new RegExp(`(${nextKeys.join('|')})+`)) : null;
840
+ // 如果当前数字块已输入,则跳转下一个数字块
841
+ if (nextRest) {
842
+ maskStartIndex = nextRest.index || 0;
843
+ maskEndIndex = maskStartIndex + nextRest[0].length;
844
+ targetElem.setSelectionRange(maskStartIndex, maskEndIndex);
845
+ } else {
846
+ targetElem.setSelectionRange(maskStartIndex, maskEndIndex);
847
+ }
848
+ }
849
+ internalData.isTriggerMasked = true;
850
+ return;
851
+ }
852
+ targetElem.setSelectionRange(maskStartIndex, maskEndIndex);
853
+ internalData.isTriggerMasked = false;
854
+ };
855
+ const handleMaskedSelectedDate = (evnt, isFocus) => {
856
+ const {
857
+ type,
858
+ multiple,
859
+ modelValue
860
+ } = props;
861
+ if (multiple) {
862
+ return;
863
+ }
864
+ if (!maskedTypes.includes(type)) {
481
865
  return;
482
866
  }
483
867
  const targetElem = refInputTarget.value;
@@ -485,17 +869,79 @@ var _default = exports.default = (0, _comp.defineVxeComponent)({
485
869
  return;
486
870
  }
487
871
  const {
488
- parseInputKayMaps
872
+ laseFocusMasked
489
873
  } = internalData;
490
- const inputFormat = computeDateInputFormat.value;
874
+ if (laseFocusMasked && Date.now() - laseFocusMasked < 100) {
875
+ return;
876
+ }
877
+ const dateMaskedFormat = computeDateMaskedFormat.value;
878
+ const maskChar = computeMaskChar.value;
491
879
  const selectionStart = targetElem.selectionStart || 0;
492
- let selectKey = inputFormat[selectionStart];
880
+ const selectionEnd = targetElem.selectionEnd || 0;
881
+ const inpValue = targetElem.value;
882
+ const allMaskedKeys = _xeUtils.default.map(dateMaskedFormat.match(new RegExp(`(${inputMaskedKeys.join('|')})+`, 'g')) || [], fullKey => fullKey[0]);
883
+ // 如果为空
884
+ if (!inpValue) {
885
+ let restValue = dateMaskedFormat.replace(new RegExp(`(${inputMaskedKeys.join('|')})`, 'g'), maskChar);
886
+ // 还原值
887
+ if (isFocus && modelValue) {
888
+ const chunkNums = ('' + _xeUtils.default.toNumber(modelValue)).match(/\d/g) || [];
889
+ let useNumIndex = 0;
890
+ restValue = dateMaskedFormat.replace(new RegExp(`(${inputMaskedKeys.join('|')})`, 'g'), txt => chunkNums[useNumIndex++] || txt);
891
+ }
892
+ const firstMaskedKeys = allMaskedKeys[0];
893
+ const firstSkRest = dateMaskedFormat.match(new RegExp(`${firstMaskedKeys}+`));
894
+ if (firstSkRest) {
895
+ evnt.preventDefault();
896
+ const firstChunkFormat = firstSkRest[0];
897
+ targetElem.value = restValue;
898
+ handleInputLabel(restValue, false);
899
+ targetElem.setSelectionRange(0, firstChunkFormat.length);
900
+ internalData.laseFocusMasked = Date.now();
901
+ return;
902
+ }
903
+ }
904
+ // 全选 | 如果无效字符
905
+ const isAllSelected = !selectionStart && selectionEnd === inpValue.length;
906
+ const isNotMasked = inpValue && inpValue.length !== dateMaskedFormat.length;
907
+ if (isAllSelected || isNotMasked) {
908
+ let restValue = '';
909
+ // 还原值
910
+ if (isNotMasked && inpValue) {
911
+ const chunkNums = inpValue.match(/\d/g) || [];
912
+ let useNumIndex = 0;
913
+ restValue = dateMaskedFormat.replace(new RegExp(`(${inputMaskedKeys.join('|')})`, 'g'), () => chunkNums[useNumIndex++] || maskChar);
914
+ } else {
915
+ dateMaskedFormat.replace(new RegExp(`(${inputMaskedKeys.join('|')})`, 'g'), maskChar);
916
+ }
917
+ const firstMaskedKeys = allMaskedKeys[0];
918
+ const firstSkRest = dateMaskedFormat.match(new RegExp(`${firstMaskedKeys}+`));
919
+ if (firstSkRest) {
920
+ evnt.preventDefault();
921
+ const firstChunkFormat = firstSkRest[0];
922
+ targetElem.value = restValue;
923
+ handleInputLabel(restValue, false);
924
+ targetElem.setSelectionRange(0, firstChunkFormat.length);
925
+ internalData.laseFocusMasked = Date.now();
926
+ return;
927
+ }
928
+ }
929
+ // 是否选择数字块
930
+ let selectKey = dateMaskedFormat[selectionStart];
493
931
  if (!parseInputKayMaps[selectKey]) {
494
- selectKey = inputFormat[selectionStart - 1];
932
+ selectKey = dateMaskedFormat[selectionStart - 1];
495
933
  }
496
- const inputPaesrFn = parseInputKayMaps[selectKey];
497
- if (inputPaesrFn) {
498
- inputPaesrFn(evnt, targetElem, isUpArrow);
934
+ if (selectKey) {
935
+ evnt.preventDefault();
936
+ const skRest = dateMaskedFormat.match(new RegExp(selectKey + '+'));
937
+ if (skRest) {
938
+ const chunkFormat = skRest[0] || '';
939
+ const chunkStartIndex = skRest.index || 0;
940
+ const chunkEndIndex = chunkStartIndex + chunkFormat.length;
941
+ targetElem.setSelectionRange(chunkStartIndex, chunkEndIndex);
942
+ internalData.isTriggerMasked = true;
943
+ internalData.laseFocusMasked = Date.now();
944
+ }
499
945
  }
500
946
  };
501
947
  const blurEvent = evnt => {
@@ -509,10 +955,15 @@ var _default = exports.default = (0, _comp.defineVxeComponent)({
509
955
  handleChange(value, evnt);
510
956
  }
511
957
  if (!reactData.visiblePanel) {
958
+ const {
959
+ inputLabel
960
+ } = internalData;
512
961
  reactData.isActivated = false;
513
962
  // 未打开面板时才校验
514
963
  if ($datePanel) {
515
- $datePanel.checkValue(reactData.inputLabel);
964
+ $datePanel.checkValue(inputLabel);
965
+ } else {
966
+ afterCheckValue(inputLabel);
516
967
  }
517
968
  }
518
969
  dispatchEvent('blur', {
@@ -523,15 +974,92 @@ var _default = exports.default = (0, _comp.defineVxeComponent)({
523
974
  $xeForm.triggerItemEvent(evnt, formItemInfo.itemConfig.field, value);
524
975
  }
525
976
  };
977
+ const focusEvent = evnt => {
978
+ const {
979
+ multiple,
980
+ editable,
981
+ maskedConfig
982
+ } = props;
983
+ const maskedOpts = computeMaskedOpts.value;
984
+ const popupOpts = computePopupOpts.value;
985
+ const {
986
+ trigger
987
+ } = popupOpts;
988
+ reactData.isActivated = true;
989
+ if (!trigger || trigger === 'default') {
990
+ datePickerOpenEvent(evnt);
991
+ setTimeout(() => {
992
+ if (editable && !multiple && ((0, _utils.isEnableConf)(maskedConfig) || maskedOpts.enabled)) {
993
+ handleMaskedSelectedDate(evnt, true);
994
+ }
995
+ }, 15);
996
+ } else if (trigger === 'icon') {
997
+ hidePanel();
998
+ setTimeout(() => {
999
+ if (editable && !multiple && ((0, _utils.isEnableConf)(maskedConfig) || maskedOpts.enabled)) {
1000
+ handleMaskedSelectedDate(evnt, true);
1001
+ }
1002
+ }, 15);
1003
+ } else {
1004
+ if (editable && !multiple && ((0, _utils.isEnableConf)(maskedConfig) || maskedOpts.enabled)) {
1005
+ handleMaskedSelectedDate(evnt, true);
1006
+ }
1007
+ }
1008
+ triggerEvent(evnt);
1009
+ };
1010
+ const clickEvent = evnt => {
1011
+ const {
1012
+ editable,
1013
+ maskedConfig
1014
+ } = props;
1015
+ const maskedOpts = computeMaskedOpts.value;
1016
+ if (editable && ((0, _utils.isEnableConf)(maskedConfig) || maskedOpts.enabled)) {
1017
+ handleMaskedSelectedDate(evnt);
1018
+ }
1019
+ triggerEvent(evnt);
1020
+ };
526
1021
  const keydownEvent = evnt => {
527
1022
  const {
528
- controlConfig
1023
+ type,
1024
+ editable,
1025
+ maskedConfig
529
1026
  } = props;
530
- const controlOpts = computeControlOpts.value;
1027
+ const {
1028
+ visiblePanel
1029
+ } = reactData;
1030
+ const maskedOpts = computeMaskedOpts.value;
531
1031
  const isUpArrow = _ui.globalEvents.hasKey(evnt, _ui.GLOBAL_EVENT_KEYS.ARROW_UP);
532
1032
  const isDwArrow = _ui.globalEvents.hasKey(evnt, _ui.GLOBAL_EVENT_KEYS.ARROW_DOWN);
533
- if ((isUpArrow || isDwArrow) && controlOpts.isArrow && (controlConfig || controlOpts.enabled)) {
534
- handleArrowInputDate(evnt, isUpArrow);
1033
+ const isLtArrow = _ui.globalEvents.hasKey(evnt, _ui.GLOBAL_EVENT_KEYS.ARROW_LEFT);
1034
+ const isRtArrow = _ui.globalEvents.hasKey(evnt, _ui.GLOBAL_EVENT_KEYS.ARROW_RIGHT);
1035
+ const isEnter = _ui.globalEvents.hasKey(evnt, _ui.GLOBAL_EVENT_KEYS.ENTER);
1036
+ if (editable) {
1037
+ if (isEnter) {
1038
+ const $datePanel = refDatePanel.value;
1039
+ const {
1040
+ inputLabel
1041
+ } = internalData;
1042
+ const targetElem = refInputTarget.value;
1043
+ if (visiblePanel) {
1044
+ hidePanel();
1045
+ }
1046
+ if ($datePanel) {
1047
+ $datePanel.checkValue(inputLabel);
1048
+ } else {
1049
+ afterCheckValue(inputLabel);
1050
+ }
1051
+ if (targetElem) {
1052
+ targetElem.blur();
1053
+ }
1054
+ } else if (maskedTypes.includes(type)) {
1055
+ if ((0, _utils.isEnableConf)(maskedConfig) || maskedOpts.enabled) {
1056
+ if (maskedOpts.isArrow && (isUpArrow || isDwArrow || isLtArrow || isRtArrow)) {
1057
+ handleArrowInputDate(evnt, isUpArrow, isDwArrow, isLtArrow, isRtArrow);
1058
+ } else if (maskedOpts.isMasked) {
1059
+ handleMaskedInputDate(evnt);
1060
+ }
1061
+ }
1062
+ }
535
1063
  }
536
1064
  triggerEvent(evnt);
537
1065
  };
@@ -566,7 +1094,7 @@ var _default = exports.default = (0, _comp.defineVxeComponent)({
566
1094
  dispatchEvent('confirm', params, params.$event);
567
1095
  };
568
1096
  const panelRevertEvent = params => {
569
- reactData.inputLabel = params.label;
1097
+ handleInputLabel(params.label, true);
570
1098
  };
571
1099
  // 全局事件
572
1100
  const handleGlobalMousedownEvent = evnt => {
@@ -579,12 +1107,20 @@ var _default = exports.default = (0, _comp.defineVxeComponent)({
579
1107
  const panelWrapperElem = refPanelWrapper.value;
580
1108
  const isDisabled = computeIsDisabled.value;
581
1109
  if (!isDisabled && isActivated) {
582
- reactData.isActivated = (0, _dom.getEventTargetNode)(evnt, el).flag || (0, _dom.getEventTargetNode)(evnt, panelWrapperElem).flag;
583
- if (!reactData.isActivated) {
1110
+ const currActivated = (0, _dom.getEventTargetNode)(evnt, el).flag || (0, _dom.getEventTargetNode)(evnt, panelWrapperElem).flag;
1111
+ if (currActivated !== isActivated) {
1112
+ reactData.isActivated = currActivated;
1113
+ }
1114
+ if (!currActivated) {
584
1115
  if (visiblePanel) {
585
1116
  hidePanel();
1117
+ const {
1118
+ inputLabel
1119
+ } = internalData;
586
1120
  if ($datePanel) {
587
- $datePanel.checkValue(reactData.inputLabel);
1121
+ $datePanel.checkValue(inputLabel);
1122
+ } else {
1123
+ afterCheckValue(inputLabel);
588
1124
  }
589
1125
  }
590
1126
  }
@@ -592,6 +1128,7 @@ var _default = exports.default = (0, _comp.defineVxeComponent)({
592
1128
  };
593
1129
  const handleGlobalKeydownEvent = evnt => {
594
1130
  const {
1131
+ isActivated,
595
1132
  visiblePanel
596
1133
  } = reactData;
597
1134
  const isDisabled = computeIsDisabled.value;
@@ -599,7 +1136,9 @@ var _default = exports.default = (0, _comp.defineVxeComponent)({
599
1136
  const isTab = _ui.globalEvents.hasKey(evnt, _ui.GLOBAL_EVENT_KEYS.TAB);
600
1137
  const isEsc = _ui.globalEvents.hasKey(evnt, _ui.GLOBAL_EVENT_KEYS.ESCAPE);
601
1138
  if (isTab) {
602
- reactData.isActivated = false;
1139
+ if (isActivated) {
1140
+ reactData.isActivated = false;
1141
+ }
603
1142
  }
604
1143
  if (visiblePanel) {
605
1144
  if (isEsc || isTab) {
@@ -638,7 +1177,7 @@ var _default = exports.default = (0, _comp.defineVxeComponent)({
638
1177
  }
639
1178
  if (visiblePanel || isActivated) {
640
1179
  if ($datePanel) {
641
- $datePanel.checkValue(reactData.inputLabel);
1180
+ $datePanel.checkValue(internalData.inputLabel);
642
1181
  }
643
1182
  const targetElem = refInputTarget.value;
644
1183
  if (targetElem) {
@@ -740,9 +1279,6 @@ var _default = exports.default = (0, _comp.defineVxeComponent)({
740
1279
  }
741
1280
  }
742
1281
  };
743
- const clickEvent = evnt => {
744
- triggerEvent(evnt);
745
- };
746
1282
  const handleShortcutEvent = ({
747
1283
  option,
748
1284
  $event
@@ -793,7 +1329,7 @@ var _default = exports.default = (0, _comp.defineVxeComponent)({
793
1329
  break;
794
1330
  }
795
1331
  default:
796
- (0, _log.errLog)('vxe.error.notCommands', [`[date-picker] ${code}`]);
1332
+ errLog('vxe.error.notCommands', [code]);
797
1333
  break;
798
1334
  }
799
1335
  }
@@ -1044,10 +1580,13 @@ var _default = exports.default = (0, _comp.defineVxeComponent)({
1044
1580
  } = props;
1045
1581
  const {
1046
1582
  inputValue,
1047
- inputLabel,
1048
1583
  visiblePanel,
1049
- isActivated
1584
+ isActivated,
1585
+ labelFlag
1050
1586
  } = reactData;
1587
+ const {
1588
+ inputLabel
1589
+ } = internalData;
1051
1590
  const vSize = computeSize.value;
1052
1591
  const isDisabled = computeIsDisabled.value;
1053
1592
  const formReadonly = computeFormReadonly.value;
@@ -1080,7 +1619,7 @@ var _default = exports.default = (0, _comp.defineVxeComponent)({
1080
1619
  }, [(0, _vue.h)('input', {
1081
1620
  ref: refInputTarget,
1082
1621
  class: 'vxe-date-picker--inner',
1083
- value: inputLabel,
1622
+ value: labelFlag ? inputLabel : '',
1084
1623
  name,
1085
1624
  type: 'text',
1086
1625
  placeholder: inpPlaceholder,
@@ -1099,7 +1638,7 @@ var _default = exports.default = (0, _comp.defineVxeComponent)({
1099
1638
  renderPanel()]);
1100
1639
  };
1101
1640
  (0, _vue.watch)(computePanelLabel, val => {
1102
- reactData.inputLabel = val;
1641
+ handleInputLabel(val, true);
1103
1642
  });
1104
1643
  (0, _vue.watch)(() => props.modelValue, () => {
1105
1644
  updateModelValue();
@@ -1113,14 +1652,18 @@ var _default = exports.default = (0, _comp.defineVxeComponent)({
1113
1652
  });
1114
1653
  (0, _vue.onMounted)(() => {
1115
1654
  const {
1116
- parseInputKayMaps
1117
- } = internalData;
1118
- const inputKeys = ['y', 'M', 'd', 'H', 'm', 'n'];
1119
- inputKeys.forEach(key => {
1120
- parseInputKayMaps[key] = evnt => {
1121
- evnt.preventDefault();
1122
- };
1123
- });
1655
+ type,
1656
+ multiple,
1657
+ maskedConfig
1658
+ } = props;
1659
+ if ((0, _utils.isEnableConf)(maskedConfig)) {
1660
+ if (multiple) {
1661
+ errLog('vxe.error.notSupportProp', ['multiple', 'control-config.enabled=true', 'control-config.enabled=false']);
1662
+ }
1663
+ if (!maskedTypes.includes(type)) {
1664
+ warnLog('vxe.error.notSupportProp', ['control-config.enabled=true', `type=${type}`, `type=${maskedTypes.join('|')}`]);
1665
+ }
1666
+ }
1124
1667
  });
1125
1668
  (0, _vue.onUnmounted)(() => {
1126
1669
  _ui.globalEvents.off($xeDatePicker, 'mousewheel');