vxe-pc-ui 3.15.1 → 3.15.2

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 (44) hide show
  1. package/es/date-panel/src/util.js +12 -0
  2. package/es/date-picker/src/date-picker.js +81 -10
  3. package/es/date-range-picker/src/date-range-picker.js +20 -8
  4. package/es/number-input/src/number-input.js +2 -3
  5. package/es/splitter/src/splitter.js +6 -1
  6. package/es/ui/index.js +1 -1
  7. package/es/ui/src/log.js +1 -1
  8. package/lib/date-panel/src/util.js +13 -0
  9. package/lib/date-panel/src/util.min.js +1 -1
  10. package/lib/date-picker/src/date-picker.js +79 -9
  11. package/lib/date-picker/src/date-picker.min.js +1 -1
  12. package/lib/date-range-picker/src/date-range-picker.js +18 -8
  13. package/lib/date-range-picker/src/date-range-picker.min.js +1 -1
  14. package/lib/index.umd.js +119 -23
  15. package/lib/index.umd.min.js +1 -1
  16. package/lib/number-input/src/number-input.js +2 -3
  17. package/lib/splitter/src/splitter.js +6 -1
  18. package/lib/splitter/src/splitter.min.js +1 -1
  19. package/lib/ui/index.js +1 -1
  20. package/lib/ui/index.min.js +1 -1
  21. package/lib/ui/src/log.js +1 -1
  22. package/lib/ui/src/log.min.js +1 -1
  23. package/package.json +1 -1
  24. package/packages/date-panel/src/util.ts +13 -0
  25. package/packages/date-picker/src/date-picker.ts +82 -10
  26. package/packages/date-range-picker/src/date-range-picker.ts +18 -8
  27. package/packages/number-input/src/number-input.ts +2 -6
  28. package/packages/splitter/src/splitter.ts +6 -1
  29. package/types/components/date-picker.d.ts +18 -0
  30. package/types/components/date-range-picker.d.ts +4 -0
  31. package/types/components/splitter.d.ts +1 -0
  32. package/types/components/table.d.ts +33 -4
  33. /package/es/icon/{iconfont.1781675403709.ttf → iconfont.1781753586592.ttf} +0 -0
  34. /package/es/icon/{iconfont.1781675403709.woff → iconfont.1781753586592.woff} +0 -0
  35. /package/es/icon/{iconfont.1781675403709.woff2 → iconfont.1781753586592.woff2} +0 -0
  36. /package/es/{iconfont.1781675403709.ttf → iconfont.1781753586592.ttf} +0 -0
  37. /package/es/{iconfont.1781675403709.woff → iconfont.1781753586592.woff} +0 -0
  38. /package/es/{iconfont.1781675403709.woff2 → iconfont.1781753586592.woff2} +0 -0
  39. /package/lib/icon/style/{iconfont.1781675403709.ttf → iconfont.1781753586592.ttf} +0 -0
  40. /package/lib/icon/style/{iconfont.1781675403709.woff → iconfont.1781753586592.woff} +0 -0
  41. /package/lib/icon/style/{iconfont.1781675403709.woff2 → iconfont.1781753586592.woff2} +0 -0
  42. /package/lib/{iconfont.1781675403709.ttf → iconfont.1781753586592.ttf} +0 -0
  43. /package/lib/{iconfont.1781675403709.woff → iconfont.1781753586592.woff} +0 -0
  44. /package/lib/{iconfont.1781675403709.woff2 → iconfont.1781753586592.woff2} +0 -0
@@ -19,6 +19,18 @@ export function handleValueFormat(type, valueFormat) {
19
19
  }
20
20
  return 'yyyy-MM-dd';
21
21
  }
22
+ export function handleInputFormat(type, inputFormat) {
23
+ if (inputFormat) {
24
+ return inputFormat;
25
+ }
26
+ if (type === 'time') {
27
+ return 'HH:mm:ss';
28
+ }
29
+ if (type === 'datetime') {
30
+ return 'yyyy-MM-dd HH:mm:ss';
31
+ }
32
+ return 'yyyy-MM-dd';
33
+ }
22
34
  export function toStringTimeDate(str) {
23
35
  const rest = new Date(2e3, 0, 1);
24
36
  if (str) {
@@ -4,7 +4,7 @@ import { getConfig, getIcon, getI18n, commands, createEvent, globalEvents, GLOBA
4
4
  import { getFuncText, getLastZIndex, nextZIndex, isEnableConf } from '../../ui/src/utils';
5
5
  import { updatePanelPlacement, getEventTargetNode } from '../../ui/src/dom';
6
6
  import { getSlotVNs } from '../../ui/src/vn';
7
- import { parseDateObj, parseDateValue, getDateByCode, handleValueFormat, hasDateValueType, hasTimestampValueType } from '../../date-panel/src/util';
7
+ import { parseDateObj, parseDateValue, getDateByCode, handleValueFormat, handleInputFormat, hasDateValueType, hasTimestampValueType } from '../../date-panel/src/util';
8
8
  import { errLog } from '../../ui/src/log';
9
9
  import VxeDatePanelComponent from '../../date-panel/src/date-panel';
10
10
  import VxeButtonComponent from '../../button/src/button';
@@ -78,6 +78,7 @@ export default {
78
78
  labelFormat: String,
79
79
  valueFormat: String,
80
80
  timeFormat: String,
81
+ inputFormat: String,
81
82
  editable: {
82
83
  type: Boolean,
83
84
  default: true
@@ -107,6 +108,7 @@ export default {
107
108
  type: Boolean,
108
109
  default: () => getConfig().datePicker.autoClose
109
110
  },
111
+ controlConfig: Object,
110
112
  prefixIcon: String,
111
113
  suffixIcon: String,
112
114
  placement: String,
@@ -158,7 +160,8 @@ export default {
158
160
  inputLabel: ''
159
161
  };
160
162
  const internalData = {
161
- hpTimeout: undefined
163
+ // hpTimeout: undefined,
164
+ parseInputKayMaps: {}
162
165
  };
163
166
  return {
164
167
  xID,
@@ -298,6 +301,12 @@ export default {
298
301
  const { type, valueFormat } = props;
299
302
  return handleValueFormat(type, valueFormat);
300
303
  },
304
+ computeDateInputFormat() {
305
+ const $xeDatePicker = this;
306
+ const props = $xeDatePicker;
307
+ const { type, inputFormat } = props;
308
+ return handleInputFormat(type, inputFormat);
309
+ },
301
310
  computeFirstDayOfWeek() {
302
311
  const $xeDatePicker = this;
303
312
  const props = $xeDatePicker;
@@ -322,6 +331,11 @@ export default {
322
331
  });
323
332
  return dateObj.label;
324
333
  }).join(', ');
334
+ },
335
+ computeControlOpts() {
336
+ const $xeDatePicker = this;
337
+ const props = $xeDatePicker;
338
+ return Object.assign({}, getConfig().datePicker.controlConfig, props.controlConfig);
325
339
  } }),
326
340
  methods: {
327
341
  //
@@ -430,6 +444,9 @@ export default {
430
444
  if (!trigger || trigger === 'default') {
431
445
  $xeDatePicker.datePickerOpenEvent(evnt);
432
446
  }
447
+ else if (trigger === 'icon') {
448
+ $xeDatePicker.hidePanel();
449
+ }
433
450
  $xeDatePicker.triggerEvent(evnt);
434
451
  },
435
452
  clickPrefixEvent(evnt) {
@@ -471,6 +488,35 @@ export default {
471
488
  $xeDatePicker.dispatchEvent('suffix-click', { value: inputValue }, evnt);
472
489
  }
473
490
  },
491
+ handleArrowInputDate(evnt, isUpArrow) {
492
+ const $xeDatePicker = this;
493
+ const props = $xeDatePicker;
494
+ const reactData = $xeDatePicker.reactData;
495
+ const internalData = $xeDatePicker.internalData;
496
+ const { multiple } = props;
497
+ if (multiple) {
498
+ return;
499
+ }
500
+ const { inputValue } = reactData;
501
+ if (!inputValue) {
502
+ return;
503
+ }
504
+ const targetElem = $xeDatePicker.$refs.refInputTarget;
505
+ if (!targetElem) {
506
+ return;
507
+ }
508
+ const { parseInputKayMaps } = internalData;
509
+ const inputFormat = $xeDatePicker.computeDateInputFormat;
510
+ const selectionStart = targetElem.selectionStart || 0;
511
+ let selectKey = inputFormat[selectionStart];
512
+ if (!parseInputKayMaps[selectKey]) {
513
+ selectKey = inputFormat[selectionStart - 1];
514
+ }
515
+ const inputPaesrFn = parseInputKayMaps[selectKey];
516
+ if (inputPaesrFn) {
517
+ inputPaesrFn(evnt, targetElem, isUpArrow);
518
+ }
519
+ },
474
520
  blurEvent(evnt) {
475
521
  const $xeDatePicker = this;
476
522
  const reactData = $xeDatePicker.reactData;
@@ -498,6 +544,14 @@ export default {
498
544
  },
499
545
  keydownEvent(evnt) {
500
546
  const $xeDatePicker = this;
547
+ const props = $xeDatePicker;
548
+ const { controlConfig } = props;
549
+ const controlOpts = $xeDatePicker.computeControlOpts;
550
+ const isUpArrow = globalEvents.hasKey(evnt, GLOBAL_EVENT_KEYS.ARROW_UP);
551
+ const isDwArrow = globalEvents.hasKey(evnt, GLOBAL_EVENT_KEYS.ARROW_DOWN);
552
+ if ((isUpArrow || isDwArrow) && controlOpts.isArrow && (controlConfig || controlOpts.enabled)) {
553
+ $xeDatePicker.handleArrowInputDate(evnt, isUpArrow);
554
+ }
501
555
  $xeDatePicker.triggerEvent(evnt);
502
556
  },
503
557
  keyupEvent(evnt) {
@@ -641,6 +695,9 @@ export default {
641
695
  const { panelIndex } = reactData;
642
696
  const targetElem = $xeDatePicker.$refs.refInputTarget;
643
697
  const panelElem = $xeDatePicker.$refs.refInputPanel;
698
+ if (!panelElem) {
699
+ return $xeDatePicker.$nextTick();
700
+ }
644
701
  const btnTransfer = $xeDatePicker.computeBtnTransfer;
645
702
  const popupOpts = $xeDatePicker.computePopupOpts;
646
703
  const handleStyle = () => {
@@ -667,13 +724,9 @@ export default {
667
724
  const btnTransfer = $xeDatePicker.computeBtnTransfer;
668
725
  const panelElem = $xeDatePicker.$refs.refInputPanel;
669
726
  if (!isDisabled && !visiblePanel) {
670
- if (!reactData.initialized) {
727
+ if (!reactData.initialized && btnTransfer && panelElem) {
671
728
  reactData.initialized = true;
672
- if (btnTransfer) {
673
- if (panelElem) {
674
- document.body.appendChild(panelElem);
675
- }
676
- }
729
+ document.body.appendChild(panelElem);
677
730
  }
678
731
  if (internalData.hpTimeout) {
679
732
  clearTimeout(internalData.hpTimeout);
@@ -700,10 +753,17 @@ export default {
700
753
  },
701
754
  clickIconEvent(evnt) {
702
755
  const $xeDatePicker = this;
756
+ const reactData = $xeDatePicker.reactData;
757
+ const { visiblePanel } = reactData;
703
758
  const popupOpts = $xeDatePicker.computePopupOpts;
704
759
  const { trigger } = popupOpts;
705
760
  if (!trigger || trigger === 'default' || trigger === 'icon') {
706
- $xeDatePicker.datePickerOpenEvent(evnt);
761
+ if (visiblePanel) {
762
+ $xeDatePicker.hidePanel();
763
+ }
764
+ else {
765
+ $xeDatePicker.datePickerOpenEvent(evnt);
766
+ }
707
767
  }
708
768
  },
709
769
  clickEvent(evnt) {
@@ -833,6 +893,10 @@ export default {
833
893
  const props = $xeDatePicker;
834
894
  const slots = $xeDatePicker.$scopedSlots;
835
895
  const reactData = $xeDatePicker.reactData;
896
+ const popupOpts = $xeDatePicker.computePopupOpts;
897
+ if (popupOpts.enabled === false) {
898
+ return renderEmptyElement($xeDatePicker);
899
+ }
836
900
  const { type, multiple, showClearButton, showConfirmButton } = props;
837
901
  const { initialized, isAniVisible, visiblePanel, panelPlacement, panelStyle, inputValue } = reactData;
838
902
  const vSize = $xeDatePicker.computeSize;
@@ -842,7 +906,6 @@ export default {
842
906
  const isDateTimeType = $xeDatePicker.computeIsDateTimeType;
843
907
  const shortcutList = $xeDatePicker.computeShortcutList;
844
908
  const timeOpts = $xeDatePicker.computeTimeOpts;
845
- const popupOpts = $xeDatePicker.computePopupOpts;
846
909
  const { position } = shortcutOpts;
847
910
  const headerSlot = slots.header;
848
911
  const footerSlot = slots.footer;
@@ -1151,6 +1214,14 @@ export default {
1151
1214
  },
1152
1215
  created() {
1153
1216
  const $xeDatePicker = this;
1217
+ const internalData = $xeDatePicker.internalData;
1218
+ const { parseInputKayMaps } = internalData;
1219
+ const inputKeys = ['y', 'M', 'd', 'H', 'm', 'n'];
1220
+ inputKeys.forEach(key => {
1221
+ parseInputKayMaps[key] = (evnt) => {
1222
+ evnt.preventDefault();
1223
+ };
1224
+ });
1154
1225
  $xeDatePicker.updateModelValue();
1155
1226
  globalEvents.on($xeDatePicker, 'mousewheel', $xeDatePicker.handleGlobalMousewheelEvent);
1156
1227
  globalEvents.on($xeDatePicker, 'mousedown', $xeDatePicker.handleGlobalMousedownEvent);
@@ -533,6 +533,9 @@ export default {
533
533
  if (!trigger || trigger === 'default') {
534
534
  $xeDateRangePicker.dateRangePickerOpenEvent(evnt);
535
535
  }
536
+ else if (trigger === 'icon') {
537
+ $xeDateRangePicker.hidePanel();
538
+ }
536
539
  $xeDateRangePicker.triggerEvent(evnt);
537
540
  },
538
541
  clickPrefixEvent(evnt) {
@@ -891,6 +894,9 @@ export default {
891
894
  const { panelIndex } = reactData;
892
895
  const targetElem = $xeDateRangePicker.$refs.refInputTarget;
893
896
  const panelElem = $xeDateRangePicker.$refs.refInputPanel;
897
+ if (!panelElem) {
898
+ return $xeDateRangePicker.$nextTick();
899
+ }
894
900
  const btnTransfer = $xeDateRangePicker.computeBtnTransfer;
895
901
  const popupOpts = $xeDateRangePicker.computePopupOpts;
896
902
  const handleStyle = () => {
@@ -917,13 +923,9 @@ export default {
917
923
  const btnTransfer = $xeDateRangePicker.computeBtnTransfer;
918
924
  const panelElem = $xeDateRangePicker.$refs.refInputPanel;
919
925
  if (!isDisabled && !visiblePanel) {
920
- if (!reactData.initialized) {
926
+ if (!reactData.initialized && btnTransfer && panelElem) {
921
927
  reactData.initialized = true;
922
- if (btnTransfer) {
923
- if (panelElem) {
924
- document.body.appendChild(panelElem);
925
- }
926
- }
928
+ document.body.appendChild(panelElem);
927
929
  }
928
930
  if (internalData.hpTimeout) {
929
931
  clearTimeout(internalData.hpTimeout);
@@ -951,10 +953,17 @@ export default {
951
953
  },
952
954
  clickIconEvent(evnt) {
953
955
  const $xeDateRangePicker = this;
956
+ const reactData = $xeDateRangePicker.reactData;
957
+ const { visiblePanel } = reactData;
954
958
  const popupOpts = $xeDateRangePicker.computePopupOpts;
955
959
  const { trigger } = popupOpts;
956
960
  if (!trigger || trigger === 'default' || trigger === 'icon') {
957
- $xeDateRangePicker.dateRangePickerOpenEvent(evnt);
961
+ if (visiblePanel) {
962
+ $xeDateRangePicker.hidePanel();
963
+ }
964
+ else {
965
+ $xeDateRangePicker.dateRangePickerOpenEvent(evnt);
966
+ }
958
967
  }
959
968
  },
960
969
  clickEvent(evnt) {
@@ -1095,6 +1104,10 @@ export default {
1095
1104
  const props = $xeDateRangePicker;
1096
1105
  const slots = $xeDateRangePicker.$scopedSlots;
1097
1106
  const reactData = $xeDateRangePicker.reactData;
1107
+ const popupOpts = $xeDateRangePicker.computePopupOpts;
1108
+ if (popupOpts.enabled === false) {
1109
+ return renderEmptyElement($xeDateRangePicker);
1110
+ }
1098
1111
  const { type, separator, autoClose, showConfirmButton, showClearButton } = props;
1099
1112
  const { initialized, isAniVisible, visiblePanel, panelPlacement, panelStyle, startValue, endValue } = reactData;
1100
1113
  const vSize = $xeDateRangePicker.computeSize;
@@ -1107,7 +1120,6 @@ export default {
1107
1120
  const defaultDates = $xeDateRangePicker.computeDefaultDates;
1108
1121
  const defaultTimes = $xeDateRangePicker.computeDefaultTimes;
1109
1122
  const timeOpts = $xeDateRangePicker.computeTimeOpts;
1110
- const popupOpts = $xeDateRangePicker.computePopupOpts;
1111
1123
  const { startLabel, endLabel } = panelLabelObj;
1112
1124
  const { position } = shortcutOpts;
1113
1125
  const headerSlot = slots.header;
@@ -59,7 +59,6 @@ export default {
59
59
  type: String,
60
60
  default: () => getConfig().numberInput.size || getConfig().size
61
61
  },
62
- // number、integer、float
63
62
  min: {
64
63
  type: [String, Number],
65
64
  default: null
@@ -82,12 +81,12 @@ export default {
82
81
  default: () => getConfig().numberInput.currencySymbol
83
82
  },
84
83
  controlConfig: Object,
85
- // float
84
+ // number、float、amount
86
85
  roundingMode: {
87
86
  type: String,
88
87
  default: () => getConfig().numberInput.roundingMode
89
88
  },
90
- // float
89
+ // float、amount
91
90
  digits: {
92
91
  type: [String, Number],
93
92
  default: null
@@ -45,7 +45,8 @@ export default {
45
45
  staticItems: [],
46
46
  itemList: [],
47
47
  barWidth: 0,
48
- barHeight: 0
48
+ barHeight: 0,
49
+ resizeFlag: 0
49
50
  };
50
51
  const internalData = {
51
52
  wrapperWidth: 0,
@@ -572,6 +573,7 @@ export default {
572
573
  document.onmousemove = (evnt) => {
573
574
  evnt.preventDefault();
574
575
  handleDrag(evnt);
576
+ reactData.resizeFlag++;
575
577
  };
576
578
  document.onmouseup = (evnt) => {
577
579
  document.onmousemove = null;
@@ -583,6 +585,7 @@ export default {
583
585
  removeClass(el, 'is--drag');
584
586
  $xeSplitter.dispatchEvent('resize-end', { prevItem, nextItem, offsetHeight: targetOffsetHeight, offsetWidth: targetOffsetWidth }, evnt);
585
587
  $xeSplitter.recalculate();
588
+ reactData.resizeFlag++;
586
589
  };
587
590
  if (rsSplitterLineEl) {
588
591
  rsSplitterLineEl.style.display = 'block';
@@ -595,6 +598,7 @@ export default {
595
598
  handleItemActionEvent(evnt, prevItem, nextItem, isNext) {
596
599
  const $xeSplitter = this;
597
600
  const props = $xeSplitter;
601
+ const reactData = $xeSplitter.reactData;
598
602
  const { vertical } = props;
599
603
  let expanded = false;
600
604
  let item = prevItem;
@@ -639,6 +643,7 @@ export default {
639
643
  $xeSplitter.dispatchEvent('toggle-expand', { prevItem, nextItem, expanded, item }, evnt);
640
644
  }
641
645
  $xeSplitter.recalculate();
646
+ reactData.resizeFlag++;
642
647
  },
643
648
  handlePrevActionDblclickEvent(evnt) {
644
649
  const $xeSplitter = this;
package/es/ui/index.js CHANGED
@@ -1,7 +1,7 @@
1
1
  import { VxeUI, setConfig, setIcon } from '@vxe-ui/core';
2
2
  import { dynamicApp } from '../dynamics';
3
3
  import { warnLog } from './src/log';
4
- export const version = "3.15.1";
4
+ export const version = "3.15.2";
5
5
  VxeUI.uiVersion = version;
6
6
  VxeUI.dynamicApp = dynamicApp;
7
7
  export function config(options) {
package/es/ui/src/log.js CHANGED
@@ -1,4 +1,4 @@
1
1
  import { log } from '@vxe-ui/core';
2
- const version = `ui v${"3.15.1"}`;
2
+ const version = `ui v${"3.15.2"}`;
3
3
  export const warnLog = log.create('warn', version);
4
4
  export const errLog = log.create('error', version);
@@ -6,6 +6,7 @@ Object.defineProperty(exports, "__esModule", {
6
6
  exports.getDateByCode = getDateByCode;
7
7
  exports.getDateQuarter = getDateQuarter;
8
8
  exports.getRangeDateByCode = getRangeDateByCode;
9
+ exports.handleInputFormat = handleInputFormat;
9
10
  exports.handleValueFormat = handleValueFormat;
10
11
  exports.hasDateValueType = hasDateValueType;
11
12
  exports.hasTimestampValueType = hasTimestampValueType;
@@ -34,6 +35,18 @@ function handleValueFormat(type, valueFormat) {
34
35
  }
35
36
  return 'yyyy-MM-dd';
36
37
  }
38
+ function handleInputFormat(type, inputFormat) {
39
+ if (inputFormat) {
40
+ return inputFormat;
41
+ }
42
+ if (type === 'time') {
43
+ return 'HH:mm:ss';
44
+ }
45
+ if (type === 'datetime') {
46
+ return 'yyyy-MM-dd HH:mm:ss';
47
+ }
48
+ return 'yyyy-MM-dd';
49
+ }
37
50
  function toStringTimeDate(str) {
38
51
  var rest = new Date(2e3, 0, 1);
39
52
  if (str) {
@@ -1 +1 @@
1
- Object.defineProperty(exports,"__esModule",{value:!0}),exports.getDateByCode=getDateByCode,exports.getDateQuarter=getDateQuarter,exports.getRangeDateByCode=getRangeDateByCode,exports.handleValueFormat=handleValueFormat,exports.hasDateValueType=hasDateValueType,exports.hasTimestampValueType=hasTimestampValueType,exports.parseDateObj=parseDateObj,exports.parseDateValue=exports.parseDateString=void 0,exports.toStringTimeDate=toStringTimeDate;var _xeUtils=_interopRequireDefault(require("xe-utils"));function _interopRequireDefault(e){return e&&e.__esModule?e:{default:e}}function hasTimestampValueType(e){return"timestamp"===e}function hasDateValueType(e){return"date"===e}function handleValueFormat(e,t){return!t||hasDateValueType(t)||hasTimestampValueType(t)?"time"===e?"HH:mm:ss":"datetime"===e?"yyyy-MM-dd HH:mm:ss":"yyyy-MM-dd":t}function toStringTimeDate(e){var t,a,s,r=new Date(2e3,0,1);return e&&(s=a=t=0,(_xeUtils.default.isNumber(e)||/^[0-9]{11,15}$/.test("".concat(e)))&&(e=new Date(Number(e))),_xeUtils.default.isDate(e)?(t=e.getHours(),a=e.getMinutes(),s=e.getSeconds()):(e=(e=_xeUtils.default.toValueString(e)).match(/^(\d{1,2})(:(\d{1,2}))?(:(\d{1,2}))?/))&&(t=_xeUtils.default.toNumber(e[1]),a=_xeUtils.default.toNumber(e[3]),s=_xeUtils.default.toNumber(e[5])),r.setHours(t),r.setMinutes(a),r.setSeconds(s)),r}function getDateQuarter(e){e=e.getMonth();return e<3?1:e<6?2:e<9?3:4}var parseDateValue=exports.parseDateValue=function(e,t,a){a=a.valueFormat;return e?"time"===t?toStringTimeDate(e):_xeUtils.default.isNumber(e)||/^[0-9]{10,15}$/.test("".concat(e))?new Date(Number(e)):_xeUtils.default.isString(e)?_xeUtils.default.toStringDate(_xeUtils.default.last(e.split(",")),a):_xeUtils.default.toStringDate(e,a):null},parseDateString=exports.parseDateString=function(e,t,a){e=parseDateValue(e,t,a);return e?_xeUtils.default.toDateString(e,a.valueFormat):""};function parseDateObj(e,t,a){var s=a.labelFormat,r=a.firstDay,l=null,u="";return e&&(l=parseDateValue(e,t,a)),_xeUtils.default.isValidDate(l)?(u=_xeUtils.default.toDateString(l,s,{firstDay:r}),s&&"week"===t&&(e=l.getFullYear(),a=l.getMonth()+1,t=_xeUtils.default.getYearWeek(l,r),checkWeekOfsetYear(t,a))&&(r=e+1,-1<(a=s.indexOf(t="yyyy")))&&(u=u.substring(0,a)+r+u.substring(a+t.length))):l=null,{label:u,value:l}}function getDateByCode(e,t,a,s){var r=s.valueFormat,l=s.firstDay,u=null,n=("prev"===e||"next"===e?new Date:t?parseDateValue(t,a,s):null)||new Date;switch(e){case"prev":case"next":case"minus":case"plus":var i="plus"===e||"next"===e?1:-1;switch(a){case"date":case"datetime":u=_xeUtils.default.getWhatDay(n,i);break;case"week":u=_xeUtils.default.getWhatWeek(n,i,l,l);break;case"month":u=_xeUtils.default.getWhatMonth(n,i);break;case"quarter":u=_xeUtils.default.getWhatQuarter(n,i);break;case"year":u=_xeUtils.default.getWhatYear(n,i)}break;default:u=new Date}return{value:u?_xeUtils.default.toDateString(u,r):""}}var rangeDateOffsetNumMaps={last180:-180,last90:-90,last60:-60,last30:-30,last7:-7,last3:-3,last1:-1};function getRangeDateOffsetNum(e){return rangeDateOffsetNumMaps[e]||0}function getRangeDateByCode(e,t,a,s){var r=s.valueFormat,l=s.firstDay,u=((t=_xeUtils.default.isArray(t)?t.join(""):t)?parseDateValue(t,a,s):null)||new Date,n=null,t=u;switch(e){case"last1":case"last3":case"last7":case"last30":case"last60":case"last90":case"last180":var i=getRangeDateOffsetNum(e);switch(a){case"date":case"datetime":n=_xeUtils.default.getWhatDay(u,i);break;case"week":n=_xeUtils.default.getWhatWeek(u,i,l,l);break;case"month":n=_xeUtils.default.getWhatMonth(u,i);break;case"quarter":n=_xeUtils.default.getWhatQuarter(u,i);break;case"year":n=_xeUtils.default.getWhatYear(u,i)}break;default:n=new Date}return{startValue:n?_xeUtils.default.toDateString(n,r):"",endValue:t?_xeUtils.default.toDateString(t,r):""}}var checkWeekOfsetYear=function(e,t){return"1"==="".concat(e)&&"12"==="".concat(t)};
1
+ Object.defineProperty(exports,"__esModule",{value:!0}),exports.getDateByCode=getDateByCode,exports.getDateQuarter=getDateQuarter,exports.getRangeDateByCode=getRangeDateByCode,exports.handleInputFormat=handleInputFormat,exports.handleValueFormat=handleValueFormat,exports.hasDateValueType=hasDateValueType,exports.hasTimestampValueType=hasTimestampValueType,exports.parseDateObj=parseDateObj,exports.parseDateValue=exports.parseDateString=void 0,exports.toStringTimeDate=toStringTimeDate;var _xeUtils=_interopRequireDefault(require("xe-utils"));function _interopRequireDefault(e){return e&&e.__esModule?e:{default:e}}function hasTimestampValueType(e){return"timestamp"===e}function hasDateValueType(e){return"date"===e}function handleValueFormat(e,t){return!t||hasDateValueType(t)||hasTimestampValueType(t)?"time"===e?"HH:mm:ss":"datetime"===e?"yyyy-MM-dd HH:mm:ss":"yyyy-MM-dd":t}function handleInputFormat(e,t){return t||("time"===e?"HH:mm:ss":"datetime"===e?"yyyy-MM-dd HH:mm:ss":"yyyy-MM-dd")}function toStringTimeDate(e){var t,a,s,r=new Date(2e3,0,1);return e&&(s=a=t=0,(_xeUtils.default.isNumber(e)||/^[0-9]{11,15}$/.test("".concat(e)))&&(e=new Date(Number(e))),_xeUtils.default.isDate(e)?(t=e.getHours(),a=e.getMinutes(),s=e.getSeconds()):(e=(e=_xeUtils.default.toValueString(e)).match(/^(\d{1,2})(:(\d{1,2}))?(:(\d{1,2}))?/))&&(t=_xeUtils.default.toNumber(e[1]),a=_xeUtils.default.toNumber(e[3]),s=_xeUtils.default.toNumber(e[5])),r.setHours(t),r.setMinutes(a),r.setSeconds(s)),r}function getDateQuarter(e){e=e.getMonth();return e<3?1:e<6?2:e<9?3:4}var parseDateValue=exports.parseDateValue=function(e,t,a){a=a.valueFormat;return e?"time"===t?toStringTimeDate(e):_xeUtils.default.isNumber(e)||/^[0-9]{10,15}$/.test("".concat(e))?new Date(Number(e)):_xeUtils.default.isString(e)?_xeUtils.default.toStringDate(_xeUtils.default.last(e.split(",")),a):_xeUtils.default.toStringDate(e,a):null},parseDateString=exports.parseDateString=function(e,t,a){e=parseDateValue(e,t,a);return e?_xeUtils.default.toDateString(e,a.valueFormat):""};function parseDateObj(e,t,a){var s=a.labelFormat,r=a.firstDay,l=null,u="";return e&&(l=parseDateValue(e,t,a)),_xeUtils.default.isValidDate(l)?(u=_xeUtils.default.toDateString(l,s,{firstDay:r}),s&&"week"===t&&(e=l.getFullYear(),a=l.getMonth()+1,t=_xeUtils.default.getYearWeek(l,r),checkWeekOfsetYear(t,a))&&(r=e+1,-1<(a=s.indexOf(t="yyyy")))&&(u=u.substring(0,a)+r+u.substring(a+t.length))):l=null,{label:u,value:l}}function getDateByCode(e,t,a,s){var r=s.valueFormat,l=s.firstDay,u=null,n=("prev"===e||"next"===e?new Date:t?parseDateValue(t,a,s):null)||new Date;switch(e){case"prev":case"next":case"minus":case"plus":var i="plus"===e||"next"===e?1:-1;switch(a){case"date":case"datetime":u=_xeUtils.default.getWhatDay(n,i);break;case"week":u=_xeUtils.default.getWhatWeek(n,i,l,l);break;case"month":u=_xeUtils.default.getWhatMonth(n,i);break;case"quarter":u=_xeUtils.default.getWhatQuarter(n,i);break;case"year":u=_xeUtils.default.getWhatYear(n,i)}break;default:u=new Date}return{value:u?_xeUtils.default.toDateString(u,r):""}}var rangeDateOffsetNumMaps={last180:-180,last90:-90,last60:-60,last30:-30,last7:-7,last3:-3,last1:-1};function getRangeDateOffsetNum(e){return rangeDateOffsetNumMaps[e]||0}function getRangeDateByCode(e,t,a,s){var r=s.valueFormat,l=s.firstDay,u=((t=_xeUtils.default.isArray(t)?t.join(""):t)?parseDateValue(t,a,s):null)||new Date,n=null,t=u;switch(e){case"last1":case"last3":case"last7":case"last30":case"last60":case"last90":case"last180":var i=getRangeDateOffsetNum(e);switch(a){case"date":case"datetime":n=_xeUtils.default.getWhatDay(u,i);break;case"week":n=_xeUtils.default.getWhatWeek(u,i,l,l);break;case"month":n=_xeUtils.default.getWhatMonth(u,i);break;case"quarter":n=_xeUtils.default.getWhatQuarter(u,i);break;case"year":n=_xeUtils.default.getWhatYear(u,i)}break;default:n=new Date}return{startValue:n?_xeUtils.default.toDateString(n,r):"",endValue:t?_xeUtils.default.toDateString(t,r):""}}var checkWeekOfsetYear=function(e,t){return"1"==="".concat(e)&&"12"==="".concat(t)};
@@ -99,6 +99,7 @@ var _default2 = exports.default = /* define-vxe-component start */(0, _comp.defi
99
99
  labelFormat: String,
100
100
  valueFormat: String,
101
101
  timeFormat: String,
102
+ inputFormat: String,
102
103
  editable: {
103
104
  type: Boolean,
104
105
  default: true
@@ -140,6 +141,7 @@ var _default2 = exports.default = /* define-vxe-component start */(0, _comp.defi
140
141
  return (0, _ui.getConfig)().datePicker.autoClose;
141
142
  }
142
143
  },
144
+ controlConfig: Object,
143
145
  prefixIcon: String,
144
146
  suffixIcon: String,
145
147
  placement: String,
@@ -191,7 +193,8 @@ var _default2 = exports.default = /* define-vxe-component start */(0, _comp.defi
191
193
  inputLabel: ''
192
194
  };
193
195
  var internalData = {
194
- hpTimeout: undefined
196
+ // hpTimeout: undefined,
197
+ parseInputKayMaps: {}
195
198
  };
196
199
  return {
197
200
  xID: xID,
@@ -335,6 +338,13 @@ var _default2 = exports.default = /* define-vxe-component start */(0, _comp.defi
335
338
  valueFormat = props.valueFormat;
336
339
  return (0, _util.handleValueFormat)(type, valueFormat);
337
340
  },
341
+ computeDateInputFormat: function computeDateInputFormat() {
342
+ var $xeDatePicker = this;
343
+ var props = $xeDatePicker;
344
+ var type = props.type,
345
+ inputFormat = props.inputFormat;
346
+ return (0, _util.handleInputFormat)(type, inputFormat);
347
+ },
338
348
  computeFirstDayOfWeek: function computeFirstDayOfWeek() {
339
349
  var $xeDatePicker = this;
340
350
  var props = $xeDatePicker;
@@ -360,6 +370,11 @@ var _default2 = exports.default = /* define-vxe-component start */(0, _comp.defi
360
370
  });
361
371
  return dateObj.label;
362
372
  }).join(', ');
373
+ },
374
+ computeControlOpts: function computeControlOpts() {
375
+ var $xeDatePicker = this;
376
+ var props = $xeDatePicker;
377
+ return Object.assign({}, (0, _ui.getConfig)().datePicker.controlConfig, props.controlConfig);
363
378
  }
364
379
  }),
365
380
  methods: {
@@ -482,6 +497,8 @@ var _default2 = exports.default = /* define-vxe-component start */(0, _comp.defi
482
497
  reactData.isActivated = true;
483
498
  if (!trigger || trigger === 'default') {
484
499
  $xeDatePicker.datePickerOpenEvent(evnt);
500
+ } else if (trigger === 'icon') {
501
+ $xeDatePicker.hidePanel();
485
502
  }
486
503
  $xeDatePicker.triggerEvent(evnt);
487
504
  },
@@ -530,6 +547,35 @@ var _default2 = exports.default = /* define-vxe-component start */(0, _comp.defi
530
547
  }, evnt);
531
548
  }
532
549
  },
550
+ handleArrowInputDate: function handleArrowInputDate(evnt, isUpArrow) {
551
+ var $xeDatePicker = this;
552
+ var props = $xeDatePicker;
553
+ var reactData = $xeDatePicker.reactData;
554
+ var internalData = $xeDatePicker.internalData;
555
+ var multiple = props.multiple;
556
+ if (multiple) {
557
+ return;
558
+ }
559
+ var inputValue = reactData.inputValue;
560
+ if (!inputValue) {
561
+ return;
562
+ }
563
+ var targetElem = $xeDatePicker.$refs.refInputTarget;
564
+ if (!targetElem) {
565
+ return;
566
+ }
567
+ var parseInputKayMaps = internalData.parseInputKayMaps;
568
+ var inputFormat = $xeDatePicker.computeDateInputFormat;
569
+ var selectionStart = targetElem.selectionStart || 0;
570
+ var selectKey = inputFormat[selectionStart];
571
+ if (!parseInputKayMaps[selectKey]) {
572
+ selectKey = inputFormat[selectionStart - 1];
573
+ }
574
+ var inputPaesrFn = parseInputKayMaps[selectKey];
575
+ if (inputPaesrFn) {
576
+ inputPaesrFn(evnt, targetElem, isUpArrow);
577
+ }
578
+ },
533
579
  blurEvent: function blurEvent(evnt) {
534
580
  var $xeDatePicker = this;
535
581
  var reactData = $xeDatePicker.reactData;
@@ -559,6 +605,14 @@ var _default2 = exports.default = /* define-vxe-component start */(0, _comp.defi
559
605
  },
560
606
  keydownEvent: function keydownEvent(evnt) {
561
607
  var $xeDatePicker = this;
608
+ var props = $xeDatePicker;
609
+ var controlConfig = props.controlConfig;
610
+ var controlOpts = $xeDatePicker.computeControlOpts;
611
+ var isUpArrow = _ui.globalEvents.hasKey(evnt, _ui.GLOBAL_EVENT_KEYS.ARROW_UP);
612
+ var isDwArrow = _ui.globalEvents.hasKey(evnt, _ui.GLOBAL_EVENT_KEYS.ARROW_DOWN);
613
+ if ((isUpArrow || isDwArrow) && controlOpts.isArrow && (controlConfig || controlOpts.enabled)) {
614
+ $xeDatePicker.handleArrowInputDate(evnt, isUpArrow);
615
+ }
562
616
  $xeDatePicker.triggerEvent(evnt);
563
617
  },
564
618
  keyupEvent: function keyupEvent(evnt) {
@@ -704,6 +758,9 @@ var _default2 = exports.default = /* define-vxe-component start */(0, _comp.defi
704
758
  var panelIndex = reactData.panelIndex;
705
759
  var targetElem = $xeDatePicker.$refs.refInputTarget;
706
760
  var panelElem = $xeDatePicker.$refs.refInputPanel;
761
+ if (!panelElem) {
762
+ return $xeDatePicker.$nextTick();
763
+ }
707
764
  var btnTransfer = $xeDatePicker.computeBtnTransfer;
708
765
  var popupOpts = $xeDatePicker.computePopupOpts;
709
766
  var handleStyle = function handleStyle() {
@@ -730,13 +787,9 @@ var _default2 = exports.default = /* define-vxe-component start */(0, _comp.defi
730
787
  var btnTransfer = $xeDatePicker.computeBtnTransfer;
731
788
  var panelElem = $xeDatePicker.$refs.refInputPanel;
732
789
  if (!isDisabled && !visiblePanel) {
733
- if (!reactData.initialized) {
790
+ if (!reactData.initialized && btnTransfer && panelElem) {
734
791
  reactData.initialized = true;
735
- if (btnTransfer) {
736
- if (panelElem) {
737
- document.body.appendChild(panelElem);
738
- }
739
- }
792
+ document.body.appendChild(panelElem);
740
793
  }
741
794
  if (internalData.hpTimeout) {
742
795
  clearTimeout(internalData.hpTimeout);
@@ -763,10 +816,16 @@ var _default2 = exports.default = /* define-vxe-component start */(0, _comp.defi
763
816
  },
764
817
  clickIconEvent: function clickIconEvent(evnt) {
765
818
  var $xeDatePicker = this;
819
+ var reactData = $xeDatePicker.reactData;
820
+ var visiblePanel = reactData.visiblePanel;
766
821
  var popupOpts = $xeDatePicker.computePopupOpts;
767
822
  var trigger = popupOpts.trigger;
768
823
  if (!trigger || trigger === 'default' || trigger === 'icon') {
769
- $xeDatePicker.datePickerOpenEvent(evnt);
824
+ if (visiblePanel) {
825
+ $xeDatePicker.hidePanel();
826
+ } else {
827
+ $xeDatePicker.datePickerOpenEvent(evnt);
828
+ }
770
829
  }
771
830
  },
772
831
  clickEvent: function clickEvent(evnt) {
@@ -898,6 +957,10 @@ var _default2 = exports.default = /* define-vxe-component start */(0, _comp.defi
898
957
  var props = $xeDatePicker;
899
958
  var slots = $xeDatePicker.$scopedSlots;
900
959
  var reactData = $xeDatePicker.reactData;
960
+ var popupOpts = $xeDatePicker.computePopupOpts;
961
+ if (popupOpts.enabled === false) {
962
+ return (0, _ui.renderEmptyElement)($xeDatePicker);
963
+ }
901
964
  var type = props.type,
902
965
  multiple = props.multiple,
903
966
  showClearButton = props.showClearButton,
@@ -915,7 +978,6 @@ var _default2 = exports.default = /* define-vxe-component start */(0, _comp.defi
915
978
  var isDateTimeType = $xeDatePicker.computeIsDateTimeType;
916
979
  var shortcutList = $xeDatePicker.computeShortcutList;
917
980
  var timeOpts = $xeDatePicker.computeTimeOpts;
918
- var popupOpts = $xeDatePicker.computePopupOpts;
919
981
  var position = shortcutOpts.position;
920
982
  var headerSlot = slots.header;
921
983
  var footerSlot = slots.footer;
@@ -1143,6 +1205,14 @@ var _default2 = exports.default = /* define-vxe-component start */(0, _comp.defi
1143
1205
  },
1144
1206
  created: function created() {
1145
1207
  var $xeDatePicker = this;
1208
+ var internalData = $xeDatePicker.internalData;
1209
+ var parseInputKayMaps = internalData.parseInputKayMaps;
1210
+ var inputKeys = ['y', 'M', 'd', 'H', 'm', 'n'];
1211
+ inputKeys.forEach(function (key) {
1212
+ parseInputKayMaps[key] = function (evnt) {
1213
+ evnt.preventDefault();
1214
+ };
1215
+ });
1146
1216
  $xeDatePicker.updateModelValue();
1147
1217
  _ui.globalEvents.on($xeDatePicker, 'mousewheel', $xeDatePicker.handleGlobalMousewheelEvent);
1148
1218
  _ui.globalEvents.on($xeDatePicker, 'mousedown', $xeDatePicker.handleGlobalMousedownEvent);