vxe-pc-ui 4.15.1 → 4.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 (45) hide show
  1. package/dist/all.esm.js +107 -11
  2. package/es/date-panel/src/util.js +12 -0
  3. package/es/date-picker/src/date-picker.js +71 -5
  4. package/es/date-range-picker/src/date-range-picker.js +17 -2
  5. package/es/number-input/src/number-input.js +2 -3
  6. package/es/splitter/src/splitter.js +5 -1
  7. package/es/ui/index.js +1 -1
  8. package/es/ui/src/log.js +1 -1
  9. package/lib/date-panel/src/util.js +13 -0
  10. package/lib/date-panel/src/util.min.js +1 -1
  11. package/lib/date-picker/src/date-picker.js +82 -3
  12. package/lib/date-picker/src/date-picker.min.js +1 -1
  13. package/lib/date-range-picker/src/date-range-picker.js +17 -2
  14. package/lib/date-range-picker/src/date-range-picker.min.js +1 -1
  15. package/lib/index.umd.js +120 -11
  16. package/lib/index.umd.min.js +1 -1
  17. package/lib/number-input/src/number-input.js +2 -3
  18. package/lib/splitter/src/splitter.js +5 -1
  19. package/lib/splitter/src/splitter.min.js +1 -1
  20. package/lib/ui/index.js +1 -1
  21. package/lib/ui/index.min.js +1 -1
  22. package/lib/ui/src/log.js +1 -1
  23. package/lib/ui/src/log.min.js +1 -1
  24. package/package.json +1 -1
  25. package/packages/date-panel/src/util.ts +13 -0
  26. package/packages/date-picker/src/date-picker.ts +73 -5
  27. package/packages/date-range-picker/src/date-range-picker.ts +15 -2
  28. package/packages/number-input/src/number-input.ts +2 -6
  29. package/packages/splitter/src/splitter.ts +5 -1
  30. package/types/components/date-picker.d.ts +18 -0
  31. package/types/components/date-range-picker.d.ts +4 -0
  32. package/types/components/splitter.d.ts +1 -0
  33. package/types/components/table.d.ts +29 -3
  34. /package/es/icon/{iconfont.1781675429363.ttf → iconfont.1781753592499.ttf} +0 -0
  35. /package/es/icon/{iconfont.1781675429363.woff → iconfont.1781753592499.woff} +0 -0
  36. /package/es/icon/{iconfont.1781675429363.woff2 → iconfont.1781753592499.woff2} +0 -0
  37. /package/es/{iconfont.1781675429363.ttf → iconfont.1781753592499.ttf} +0 -0
  38. /package/es/{iconfont.1781675429363.woff → iconfont.1781753592499.woff} +0 -0
  39. /package/es/{iconfont.1781675429363.woff2 → iconfont.1781753592499.woff2} +0 -0
  40. /package/lib/icon/style/{iconfont.1781675429363.ttf → iconfont.1781753592499.ttf} +0 -0
  41. /package/lib/icon/style/{iconfont.1781675429363.woff → iconfont.1781753592499.woff} +0 -0
  42. /package/lib/icon/style/{iconfont.1781675429363.woff2 → iconfont.1781753592499.woff2} +0 -0
  43. /package/lib/{iconfont.1781675429363.ttf → iconfont.1781753592499.ttf} +0 -0
  44. /package/lib/{iconfont.1781675429363.woff → iconfont.1781753592499.woff} +0 -0
  45. /package/lib/{iconfont.1781675429363.woff2 → iconfont.1781753592499.woff2} +0 -0
package/dist/all.esm.js CHANGED
@@ -80,11 +80,11 @@ function checkDynamic() {
80
80
  }
81
81
  }
82
82
 
83
- const version$1 = `ui v${"4.15.1"}`;
83
+ const version$1 = `ui v${"4.15.2"}`;
84
84
  const warnLog = log.create('warn', version$1);
85
85
  const errLog = log.create('error', version$1);
86
86
 
87
- const version = "4.15.1";
87
+ const version = "4.15.2";
88
88
  VxeUI.uiVersion = version;
89
89
  VxeUI.dynamicApp = dynamicApp;
90
90
  function config(options) {
@@ -4432,6 +4432,18 @@ function handleValueFormat(type, valueFormat) {
4432
4432
  }
4433
4433
  return 'yyyy-MM-dd';
4434
4434
  }
4435
+ function handleInputFormat(type, inputFormat) {
4436
+ if (inputFormat) {
4437
+ return inputFormat;
4438
+ }
4439
+ if (type === 'time') {
4440
+ return 'HH:mm:ss';
4441
+ }
4442
+ if (type === 'datetime') {
4443
+ return 'yyyy-MM-dd HH:mm:ss';
4444
+ }
4445
+ return 'yyyy-MM-dd';
4446
+ }
4435
4447
  function toStringTimeDate(str) {
4436
4448
  const rest = new Date(2e3, 0, 1);
4437
4449
  if (str) {
@@ -12709,7 +12721,6 @@ var VxeNumberInputComponent = defineVxeComponent({
12709
12721
  type: String,
12710
12722
  default: () => getConfig$3().numberInput.size || getConfig$3().size
12711
12723
  },
12712
- // number、integer、float
12713
12724
  min: {
12714
12725
  type: [String, Number],
12715
12726
  default: null
@@ -12732,12 +12743,12 @@ var VxeNumberInputComponent = defineVxeComponent({
12732
12743
  default: () => getConfig$3().numberInput.currencySymbol
12733
12744
  },
12734
12745
  controlConfig: Object,
12735
- // float
12746
+ // number、float、amount
12736
12747
  roundingMode: {
12737
12748
  type: String,
12738
12749
  default: () => getConfig$3().numberInput.roundingMode
12739
12750
  },
12740
- // float
12751
+ // float、amount
12741
12752
  digits: {
12742
12753
  type: [String, Number],
12743
12754
  default: null
@@ -17671,6 +17682,7 @@ var VxeDatePickerComponent = defineVxeComponent({
17671
17682
  labelFormat: String,
17672
17683
  valueFormat: String,
17673
17684
  timeFormat: String,
17685
+ inputFormat: String,
17674
17686
  editable: {
17675
17687
  type: Boolean,
17676
17688
  default: true
@@ -17700,6 +17712,7 @@ var VxeDatePickerComponent = defineVxeComponent({
17700
17712
  type: Boolean,
17701
17713
  default: () => getConfig$3().datePicker.autoClose
17702
17714
  },
17715
+ controlConfig: Object,
17703
17716
  prefixIcon: String,
17704
17717
  suffixIcon: String,
17705
17718
  placement: String,
@@ -17752,7 +17765,8 @@ var VxeDatePickerComponent = defineVxeComponent({
17752
17765
  inputLabel: ''
17753
17766
  });
17754
17767
  const internalData = {
17755
- hpTimeout: undefined
17768
+ // hpTimeout: undefined,
17769
+ parseInputKayMaps: {}
17756
17770
  };
17757
17771
  const refElem = ref();
17758
17772
  const refInputTarget = ref();
@@ -17868,6 +17882,10 @@ var VxeDatePickerComponent = defineVxeComponent({
17868
17882
  const { type, valueFormat } = props;
17869
17883
  return handleValueFormat(type, valueFormat);
17870
17884
  });
17885
+ const computeDateInputFormat = computed(() => {
17886
+ const { type, inputFormat } = props;
17887
+ return handleInputFormat(type, inputFormat);
17888
+ });
17871
17889
  const computeFirstDayOfWeek = computed(() => {
17872
17890
  const { startDay } = props;
17873
17891
  return XEUtils.toNumber(startDay);
@@ -17888,6 +17906,9 @@ var VxeDatePickerComponent = defineVxeComponent({
17888
17906
  return dateObj.label;
17889
17907
  }).join(', ');
17890
17908
  });
17909
+ const computeControlOpts = computed(() => {
17910
+ return Object.assign({}, getConfig$3().datePicker.controlConfig, props.controlConfig);
17911
+ });
17891
17912
  const updateModelValue = () => {
17892
17913
  const { modelValue } = props;
17893
17914
  let val = '';
@@ -17962,6 +17983,9 @@ var VxeDatePickerComponent = defineVxeComponent({
17962
17983
  if (!trigger || trigger === 'default') {
17963
17984
  datePickerOpenEvent(evnt);
17964
17985
  }
17986
+ else if (trigger === 'icon') {
17987
+ hidePanel();
17988
+ }
17965
17989
  triggerEvent(evnt);
17966
17990
  };
17967
17991
  const clickPrefixEvent = (evnt) => {
@@ -17995,6 +18019,31 @@ var VxeDatePickerComponent = defineVxeComponent({
17995
18019
  dispatchEvent('suffix-click', { value: inputValue }, evnt);
17996
18020
  }
17997
18021
  };
18022
+ const handleArrowInputDate = (evnt, isUpArrow) => {
18023
+ const { multiple } = props;
18024
+ if (multiple) {
18025
+ return;
18026
+ }
18027
+ const { inputValue } = reactData;
18028
+ if (!inputValue) {
18029
+ return;
18030
+ }
18031
+ const targetElem = refInputTarget.value;
18032
+ if (!targetElem) {
18033
+ return;
18034
+ }
18035
+ const { parseInputKayMaps } = internalData;
18036
+ const inputFormat = computeDateInputFormat.value;
18037
+ const selectionStart = targetElem.selectionStart || 0;
18038
+ let selectKey = inputFormat[selectionStart];
18039
+ if (!parseInputKayMaps[selectKey]) {
18040
+ selectKey = inputFormat[selectionStart - 1];
18041
+ }
18042
+ const inputPaesrFn = parseInputKayMaps[selectKey];
18043
+ if (inputPaesrFn) {
18044
+ inputPaesrFn(evnt, targetElem, isUpArrow);
18045
+ }
18046
+ };
17998
18047
  const blurEvent = (evnt) => {
17999
18048
  const $datePanel = refDatePanel.value;
18000
18049
  const { inputValue } = reactData;
@@ -18017,6 +18066,13 @@ var VxeDatePickerComponent = defineVxeComponent({
18017
18066
  }
18018
18067
  };
18019
18068
  const keydownEvent = (evnt) => {
18069
+ const { controlConfig } = props;
18070
+ const controlOpts = computeControlOpts.value;
18071
+ const isUpArrow = globalEvents.hasKey(evnt, GLOBAL_EVENT_KEYS.ARROW_UP);
18072
+ const isDwArrow = globalEvents.hasKey(evnt, GLOBAL_EVENT_KEYS.ARROW_DOWN);
18073
+ if ((isUpArrow || isDwArrow) && controlOpts.isArrow && (controlConfig || controlOpts.enabled)) {
18074
+ handleArrowInputDate(evnt, isUpArrow);
18075
+ }
18020
18076
  triggerEvent(evnt);
18021
18077
  };
18022
18078
  const keyupEvent = (evnt) => {
@@ -18137,6 +18193,9 @@ var VxeDatePickerComponent = defineVxeComponent({
18137
18193
  const { panelIndex } = reactData;
18138
18194
  const targetElem = refInputTarget.value;
18139
18195
  const panelElem = refInputPanel.value;
18196
+ if (!panelElem) {
18197
+ return nextTick();
18198
+ }
18140
18199
  const btnTransfer = computeBtnTransfer.value;
18141
18200
  const popupOpts = computePopupOpts.value;
18142
18201
  const handleStyle = () => {
@@ -18184,10 +18243,16 @@ var VxeDatePickerComponent = defineVxeComponent({
18184
18243
  }
18185
18244
  };
18186
18245
  const clickIconEvent = (evnt) => {
18246
+ const { visiblePanel } = reactData;
18187
18247
  const popupOpts = computePopupOpts.value;
18188
18248
  const { trigger } = popupOpts;
18189
18249
  if (!trigger || trigger === 'default' || trigger === 'icon') {
18190
- datePickerOpenEvent(evnt);
18250
+ if (visiblePanel) {
18251
+ hidePanel();
18252
+ }
18253
+ else {
18254
+ datePickerOpenEvent(evnt);
18255
+ }
18191
18256
  }
18192
18257
  };
18193
18258
  const clickEvent = (evnt) => {
@@ -18302,6 +18367,10 @@ var VxeDatePickerComponent = defineVxeComponent({
18302
18367
  return renderEmptyElement($xeDatePicker);
18303
18368
  };
18304
18369
  const renderPanel = () => {
18370
+ const popupOpts = computePopupOpts.value;
18371
+ if (popupOpts.enabled === false) {
18372
+ return renderEmptyElement($xeDatePicker);
18373
+ }
18305
18374
  const { type, multiple, showClearButton, showConfirmButton } = props;
18306
18375
  const { initialized, isAniVisible, visiblePanel, panelPlacement, panelStyle, inputValue } = reactData;
18307
18376
  const vSize = computeSize.value;
@@ -18311,7 +18380,6 @@ var VxeDatePickerComponent = defineVxeComponent({
18311
18380
  const isDateTimeType = computeIsDateTimeType.value;
18312
18381
  const shortcutList = computeShortcutList.value;
18313
18382
  const timeOpts = computeTimeOpts.value;
18314
- const popupOpts = computePopupOpts.value;
18315
18383
  const { position } = shortcutOpts;
18316
18384
  const headerSlot = slots.header;
18317
18385
  const footerSlot = slots.footer;
@@ -18583,6 +18651,15 @@ var VxeDatePickerComponent = defineVxeComponent({
18583
18651
  globalEvents.on($xeDatePicker, 'blur', handleGlobalBlurEvent);
18584
18652
  globalEvents.on($xeDatePicker, 'resize', handleGlobalResizeEvent);
18585
18653
  });
18654
+ onMounted(() => {
18655
+ const { parseInputKayMaps } = internalData;
18656
+ const inputKeys = ['y', 'M', 'd', 'H', 'm', 'n'];
18657
+ inputKeys.forEach(key => {
18658
+ parseInputKayMaps[key] = (evnt) => {
18659
+ evnt.preventDefault();
18660
+ };
18661
+ });
18662
+ });
18586
18663
  onUnmounted(() => {
18587
18664
  globalEvents.off($xeDatePicker, 'mousewheel');
18588
18665
  globalEvents.off($xeDatePicker, 'mousedown');
@@ -19058,6 +19135,9 @@ var VxeDateRangePickerComponent = defineVxeComponent({
19058
19135
  if (!trigger || trigger === 'default') {
19059
19136
  dateRangePickerOpenEvent(evnt);
19060
19137
  }
19138
+ else if (trigger === 'icon') {
19139
+ hidePanel();
19140
+ }
19061
19141
  triggerEvent(evnt);
19062
19142
  };
19063
19143
  const clickPrefixEvent = (evnt) => {
@@ -19369,6 +19449,9 @@ var VxeDateRangePickerComponent = defineVxeComponent({
19369
19449
  const { panelIndex } = reactData;
19370
19450
  const targetElem = refInputTarget.value;
19371
19451
  const panelElem = refInputPanel.value;
19452
+ if (!panelElem) {
19453
+ return nextTick();
19454
+ }
19372
19455
  const btnTransfer = computeBtnTransfer.value;
19373
19456
  const popupOpts = computePopupOpts.value;
19374
19457
  const handleStyle = () => {
@@ -19417,10 +19500,16 @@ var VxeDateRangePickerComponent = defineVxeComponent({
19417
19500
  }
19418
19501
  };
19419
19502
  const clickIconEvent = (evnt) => {
19503
+ const { visiblePanel } = reactData;
19420
19504
  const popupOpts = computePopupOpts.value;
19421
19505
  const { trigger } = popupOpts;
19422
19506
  if (!trigger || trigger === 'default' || trigger === 'icon') {
19423
- dateRangePickerOpenEvent(evnt);
19507
+ if (visiblePanel) {
19508
+ hidePanel();
19509
+ }
19510
+ else {
19511
+ dateRangePickerOpenEvent(evnt);
19512
+ }
19424
19513
  }
19425
19514
  };
19426
19515
  const clickEvent = (evnt) => {
@@ -19546,6 +19635,10 @@ var VxeDateRangePickerComponent = defineVxeComponent({
19546
19635
  return renderEmptyElement($xeDateRangePicker);
19547
19636
  };
19548
19637
  const renderPanel = () => {
19638
+ const popupOpts = computePopupOpts.value;
19639
+ if (popupOpts.enabled === false) {
19640
+ return renderEmptyElement($xeDateRangePicker);
19641
+ }
19549
19642
  const { type, separator, autoClose, showConfirmButton, showClearButton } = props;
19550
19643
  const { initialized, isAniVisible, visiblePanel, panelPlacement, panelStyle, startValue, endValue } = reactData;
19551
19644
  const vSize = computeSize.value;
@@ -19558,7 +19651,6 @@ var VxeDateRangePickerComponent = defineVxeComponent({
19558
19651
  const defaultDates = computeDefaultDates.value;
19559
19652
  const defaultTimes = computeDefaultTimes.value;
19560
19653
  const timeOpts = computeTimeOpts.value;
19561
- const popupOpts = computePopupOpts.value;
19562
19654
  const { startLabel, endLabel } = panelLabelObj;
19563
19655
  const { position } = shortcutOpts;
19564
19656
  const headerSlot = slots.header;
@@ -32638,7 +32730,8 @@ var VxeSplitComponent = defineVxeComponent({
32638
32730
  staticItems: [],
32639
32731
  itemList: [],
32640
32732
  barWidth: 0,
32641
- barHeight: 0
32733
+ barHeight: 0,
32734
+ resizeFlag: 0
32642
32735
  });
32643
32736
  const internalData = {
32644
32737
  wrapperWidth: 0,
@@ -33141,6 +33234,7 @@ var VxeSplitComponent = defineVxeComponent({
33141
33234
  document.onmousemove = (evnt) => {
33142
33235
  evnt.preventDefault();
33143
33236
  handleDrag(evnt);
33237
+ reactData.resizeFlag++;
33144
33238
  };
33145
33239
  document.onmouseup = (evnt) => {
33146
33240
  document.onmousemove = null;
@@ -33152,6 +33246,7 @@ var VxeSplitComponent = defineVxeComponent({
33152
33246
  removeClass(el, 'is--drag');
33153
33247
  dispatchEvent('resize-end', { prevItem, nextItem, offsetHeight: targetOffsetHeight, offsetWidth: targetOffsetWidth }, evnt);
33154
33248
  recalculate();
33249
+ reactData.resizeFlag++;
33155
33250
  };
33156
33251
  if (rsSplitterLineEl) {
33157
33252
  rsSplitterLineEl.style.display = 'block';
@@ -33206,6 +33301,7 @@ var VxeSplitComponent = defineVxeComponent({
33206
33301
  dispatchEvent('toggle-expand', { prevItem, nextItem, expanded, item }, evnt);
33207
33302
  }
33208
33303
  recalculate();
33304
+ reactData.resizeFlag++;
33209
33305
  };
33210
33306
  const handlePrevActionDblclickEvent = (evnt) => {
33211
33307
  const { itemList } = reactData;
@@ -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) {
@@ -1,11 +1,11 @@
1
- import { h, Teleport, ref, computed, provide, reactive, inject, nextTick, watch, onUnmounted } from 'vue';
1
+ import { h, Teleport, ref, computed, provide, reactive, inject, nextTick, watch, onUnmounted, onMounted } from 'vue';
2
2
  import { defineVxeComponent } from '../../ui/src/comp';
3
3
  import XEUtils from 'xe-utils';
4
4
  import { getConfig, getIcon, getI18n, commands, createEvent, globalEvents, GLOBAL_EVENT_KEYS, useSize, renderEmptyElement } from '../../ui';
5
5
  import { getFuncText, getLastZIndex, nextZIndex, isEnableConf } from '../../ui/src/utils';
6
6
  import { updatePanelPlacement, getEventTargetNode } from '../../ui/src/dom';
7
7
  import { getSlotVNs } from '../../ui/src/vn';
8
- import { parseDateObj, parseDateValue, getDateByCode, handleValueFormat, hasDateValueType, hasTimestampValueType } from '../../date-panel/src/util';
8
+ import { parseDateObj, parseDateValue, getDateByCode, handleValueFormat, handleInputFormat, hasDateValueType, hasTimestampValueType } from '../../date-panel/src/util';
9
9
  import { errLog } from '../../ui/src/log';
10
10
  import VxeDatePanelComponent from '../../date-panel/src/date-panel';
11
11
  import VxeButtonComponent from '../../button/src/button';
@@ -72,6 +72,7 @@ export default defineVxeComponent({
72
72
  labelFormat: String,
73
73
  valueFormat: String,
74
74
  timeFormat: String,
75
+ inputFormat: String,
75
76
  editable: {
76
77
  type: Boolean,
77
78
  default: true
@@ -101,6 +102,7 @@ export default defineVxeComponent({
101
102
  type: Boolean,
102
103
  default: () => getConfig().datePicker.autoClose
103
104
  },
105
+ controlConfig: Object,
104
106
  prefixIcon: String,
105
107
  suffixIcon: String,
106
108
  placement: String,
@@ -153,7 +155,8 @@ export default defineVxeComponent({
153
155
  inputLabel: ''
154
156
  });
155
157
  const internalData = {
156
- hpTimeout: undefined
158
+ // hpTimeout: undefined,
159
+ parseInputKayMaps: {}
157
160
  };
158
161
  const refElem = ref();
159
162
  const refInputTarget = ref();
@@ -269,6 +272,10 @@ export default defineVxeComponent({
269
272
  const { type, valueFormat } = props;
270
273
  return handleValueFormat(type, valueFormat);
271
274
  });
275
+ const computeDateInputFormat = computed(() => {
276
+ const { type, inputFormat } = props;
277
+ return handleInputFormat(type, inputFormat);
278
+ });
272
279
  const computeFirstDayOfWeek = computed(() => {
273
280
  const { startDay } = props;
274
281
  return XEUtils.toNumber(startDay);
@@ -289,6 +296,9 @@ export default defineVxeComponent({
289
296
  return dateObj.label;
290
297
  }).join(', ');
291
298
  });
299
+ const computeControlOpts = computed(() => {
300
+ return Object.assign({}, getConfig().datePicker.controlConfig, props.controlConfig);
301
+ });
292
302
  const updateModelValue = () => {
293
303
  const { modelValue } = props;
294
304
  let val = '';
@@ -363,6 +373,9 @@ export default defineVxeComponent({
363
373
  if (!trigger || trigger === 'default') {
364
374
  datePickerOpenEvent(evnt);
365
375
  }
376
+ else if (trigger === 'icon') {
377
+ hidePanel();
378
+ }
366
379
  triggerEvent(evnt);
367
380
  };
368
381
  const clickPrefixEvent = (evnt) => {
@@ -396,6 +409,31 @@ export default defineVxeComponent({
396
409
  dispatchEvent('suffix-click', { value: inputValue }, evnt);
397
410
  }
398
411
  };
412
+ const handleArrowInputDate = (evnt, isUpArrow) => {
413
+ const { multiple } = props;
414
+ if (multiple) {
415
+ return;
416
+ }
417
+ const { inputValue } = reactData;
418
+ if (!inputValue) {
419
+ return;
420
+ }
421
+ const targetElem = refInputTarget.value;
422
+ if (!targetElem) {
423
+ return;
424
+ }
425
+ const { parseInputKayMaps } = internalData;
426
+ const inputFormat = computeDateInputFormat.value;
427
+ const selectionStart = targetElem.selectionStart || 0;
428
+ let selectKey = inputFormat[selectionStart];
429
+ if (!parseInputKayMaps[selectKey]) {
430
+ selectKey = inputFormat[selectionStart - 1];
431
+ }
432
+ const inputPaesrFn = parseInputKayMaps[selectKey];
433
+ if (inputPaesrFn) {
434
+ inputPaesrFn(evnt, targetElem, isUpArrow);
435
+ }
436
+ };
399
437
  const blurEvent = (evnt) => {
400
438
  const $datePanel = refDatePanel.value;
401
439
  const { inputValue } = reactData;
@@ -418,6 +456,13 @@ export default defineVxeComponent({
418
456
  }
419
457
  };
420
458
  const keydownEvent = (evnt) => {
459
+ const { controlConfig } = props;
460
+ const controlOpts = computeControlOpts.value;
461
+ const isUpArrow = globalEvents.hasKey(evnt, GLOBAL_EVENT_KEYS.ARROW_UP);
462
+ const isDwArrow = globalEvents.hasKey(evnt, GLOBAL_EVENT_KEYS.ARROW_DOWN);
463
+ if ((isUpArrow || isDwArrow) && controlOpts.isArrow && (controlConfig || controlOpts.enabled)) {
464
+ handleArrowInputDate(evnt, isUpArrow);
465
+ }
421
466
  triggerEvent(evnt);
422
467
  };
423
468
  const keyupEvent = (evnt) => {
@@ -538,6 +583,9 @@ export default defineVxeComponent({
538
583
  const { panelIndex } = reactData;
539
584
  const targetElem = refInputTarget.value;
540
585
  const panelElem = refInputPanel.value;
586
+ if (!panelElem) {
587
+ return nextTick();
588
+ }
541
589
  const btnTransfer = computeBtnTransfer.value;
542
590
  const popupOpts = computePopupOpts.value;
543
591
  const handleStyle = () => {
@@ -585,10 +633,16 @@ export default defineVxeComponent({
585
633
  }
586
634
  };
587
635
  const clickIconEvent = (evnt) => {
636
+ const { visiblePanel } = reactData;
588
637
  const popupOpts = computePopupOpts.value;
589
638
  const { trigger } = popupOpts;
590
639
  if (!trigger || trigger === 'default' || trigger === 'icon') {
591
- datePickerOpenEvent(evnt);
640
+ if (visiblePanel) {
641
+ hidePanel();
642
+ }
643
+ else {
644
+ datePickerOpenEvent(evnt);
645
+ }
592
646
  }
593
647
  };
594
648
  const clickEvent = (evnt) => {
@@ -703,6 +757,10 @@ export default defineVxeComponent({
703
757
  return renderEmptyElement($xeDatePicker);
704
758
  };
705
759
  const renderPanel = () => {
760
+ const popupOpts = computePopupOpts.value;
761
+ if (popupOpts.enabled === false) {
762
+ return renderEmptyElement($xeDatePicker);
763
+ }
706
764
  const { type, multiple, showClearButton, showConfirmButton } = props;
707
765
  const { initialized, isAniVisible, visiblePanel, panelPlacement, panelStyle, inputValue } = reactData;
708
766
  const vSize = computeSize.value;
@@ -712,7 +770,6 @@ export default defineVxeComponent({
712
770
  const isDateTimeType = computeIsDateTimeType.value;
713
771
  const shortcutList = computeShortcutList.value;
714
772
  const timeOpts = computeTimeOpts.value;
715
- const popupOpts = computePopupOpts.value;
716
773
  const { position } = shortcutOpts;
717
774
  const headerSlot = slots.header;
718
775
  const footerSlot = slots.footer;
@@ -984,6 +1041,15 @@ export default defineVxeComponent({
984
1041
  globalEvents.on($xeDatePicker, 'blur', handleGlobalBlurEvent);
985
1042
  globalEvents.on($xeDatePicker, 'resize', handleGlobalResizeEvent);
986
1043
  });
1044
+ onMounted(() => {
1045
+ const { parseInputKayMaps } = internalData;
1046
+ const inputKeys = ['y', 'M', 'd', 'H', 'm', 'n'];
1047
+ inputKeys.forEach(key => {
1048
+ parseInputKayMaps[key] = (evnt) => {
1049
+ evnt.preventDefault();
1050
+ };
1051
+ });
1052
+ });
987
1053
  onUnmounted(() => {
988
1054
  globalEvents.off($xeDatePicker, 'mousewheel');
989
1055
  globalEvents.off($xeDatePicker, 'mousedown');
@@ -460,6 +460,9 @@ export default defineVxeComponent({
460
460
  if (!trigger || trigger === 'default') {
461
461
  dateRangePickerOpenEvent(evnt);
462
462
  }
463
+ else if (trigger === 'icon') {
464
+ hidePanel();
465
+ }
463
466
  triggerEvent(evnt);
464
467
  };
465
468
  const clickPrefixEvent = (evnt) => {
@@ -771,6 +774,9 @@ export default defineVxeComponent({
771
774
  const { panelIndex } = reactData;
772
775
  const targetElem = refInputTarget.value;
773
776
  const panelElem = refInputPanel.value;
777
+ if (!panelElem) {
778
+ return nextTick();
779
+ }
774
780
  const btnTransfer = computeBtnTransfer.value;
775
781
  const popupOpts = computePopupOpts.value;
776
782
  const handleStyle = () => {
@@ -819,10 +825,16 @@ export default defineVxeComponent({
819
825
  }
820
826
  };
821
827
  const clickIconEvent = (evnt) => {
828
+ const { visiblePanel } = reactData;
822
829
  const popupOpts = computePopupOpts.value;
823
830
  const { trigger } = popupOpts;
824
831
  if (!trigger || trigger === 'default' || trigger === 'icon') {
825
- dateRangePickerOpenEvent(evnt);
832
+ if (visiblePanel) {
833
+ hidePanel();
834
+ }
835
+ else {
836
+ dateRangePickerOpenEvent(evnt);
837
+ }
826
838
  }
827
839
  };
828
840
  const clickEvent = (evnt) => {
@@ -948,6 +960,10 @@ export default defineVxeComponent({
948
960
  return renderEmptyElement($xeDateRangePicker);
949
961
  };
950
962
  const renderPanel = () => {
963
+ const popupOpts = computePopupOpts.value;
964
+ if (popupOpts.enabled === false) {
965
+ return renderEmptyElement($xeDateRangePicker);
966
+ }
951
967
  const { type, separator, autoClose, showConfirmButton, showClearButton } = props;
952
968
  const { initialized, isAniVisible, visiblePanel, panelPlacement, panelStyle, startValue, endValue } = reactData;
953
969
  const vSize = computeSize.value;
@@ -960,7 +976,6 @@ export default defineVxeComponent({
960
976
  const defaultDates = computeDefaultDates.value;
961
977
  const defaultTimes = computeDefaultTimes.value;
962
978
  const timeOpts = computeTimeOpts.value;
963
- const popupOpts = computePopupOpts.value;
964
979
  const { startLabel, endLabel } = panelLabelObj;
965
980
  const { position } = shortcutOpts;
966
981
  const headerSlot = slots.header;
@@ -47,7 +47,6 @@ export default defineVxeComponent({
47
47
  type: String,
48
48
  default: () => getConfig().numberInput.size || getConfig().size
49
49
  },
50
- // number、integer、float
51
50
  min: {
52
51
  type: [String, Number],
53
52
  default: null
@@ -70,12 +69,12 @@ export default defineVxeComponent({
70
69
  default: () => getConfig().numberInput.currencySymbol
71
70
  },
72
71
  controlConfig: Object,
73
- // float
72
+ // number、float、amount
74
73
  roundingMode: {
75
74
  type: String,
76
75
  default: () => getConfig().numberInput.roundingMode
77
76
  },
78
- // float
77
+ // float、amount
79
78
  digits: {
80
79
  type: [String, Number],
81
80
  default: null
@@ -56,7 +56,8 @@ export default defineVxeComponent({
56
56
  staticItems: [],
57
57
  itemList: [],
58
58
  barWidth: 0,
59
- barHeight: 0
59
+ barHeight: 0,
60
+ resizeFlag: 0
60
61
  });
61
62
  const internalData = {
62
63
  wrapperWidth: 0,
@@ -559,6 +560,7 @@ export default defineVxeComponent({
559
560
  document.onmousemove = (evnt) => {
560
561
  evnt.preventDefault();
561
562
  handleDrag(evnt);
563
+ reactData.resizeFlag++;
562
564
  };
563
565
  document.onmouseup = (evnt) => {
564
566
  document.onmousemove = null;
@@ -570,6 +572,7 @@ export default defineVxeComponent({
570
572
  removeClass(el, 'is--drag');
571
573
  dispatchEvent('resize-end', { prevItem, nextItem, offsetHeight: targetOffsetHeight, offsetWidth: targetOffsetWidth }, evnt);
572
574
  recalculate();
575
+ reactData.resizeFlag++;
573
576
  };
574
577
  if (rsSplitterLineEl) {
575
578
  rsSplitterLineEl.style.display = 'block';
@@ -624,6 +627,7 @@ export default defineVxeComponent({
624
627
  dispatchEvent('toggle-expand', { prevItem, nextItem, expanded, item }, evnt);
625
628
  }
626
629
  recalculate();
630
+ reactData.resizeFlag++;
627
631
  };
628
632
  const handlePrevActionDblclickEvent = (evnt) => {
629
633
  const { itemList } = reactData;
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 = "4.15.1";
4
+ export const version = "4.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${"4.15.1"}`;
2
+ const version = `ui v${"4.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
  const 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(s){var r=new Date(2e3,0,1);if(s){let e=0,t=0,a=0;(_xeUtils.default.isNumber(s)||/^[0-9]{11,15}$/.test(""+s))&&(s=new Date(Number(s))),_xeUtils.default.isDate(s)?(e=s.getHours(),t=s.getMinutes(),a=s.getSeconds()):(s=(s=_xeUtils.default.toValueString(s)).match(/^(\d{1,2})(:(\d{1,2}))?(:(\d{1,2}))?/))&&(e=_xeUtils.default.toNumber(s[1]),t=_xeUtils.default.toNumber(s[3]),a=_xeUtils.default.toNumber(s[5])),r.setHours(e),r.setMinutes(t),r.setSeconds(a)}return r}function getDateQuarter(e){e=e.getMonth();return e<3?1:e<6?2:e<9?3:4}let parseDateValue=(e,t,a)=>{a=a.valueFormat;return e?"time"===t?toStringTimeDate(e):_xeUtils.default.isNumber(e)||/^[0-9]{10,15}$/.test(""+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.parseDateValue=parseDateValue,(e,t,a)=>{e=parseDateValue(e,t,a);return e?_xeUtils.default.toDateString(e,a.valueFormat):""});function parseDateObj(e,t,a){var{labelFormat:s,firstDay:r}=a;let 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{valueFormat:r,firstDay:l}=s;let u=null;var i=("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 n="plus"===e||"next"===e?1:-1;switch(a){case"date":case"datetime":u=_xeUtils.default.getWhatDay(i,n);break;case"week":u=_xeUtils.default.getWhatWeek(i,n,l,l);break;case"month":u=_xeUtils.default.getWhatMonth(i,n);break;case"quarter":u=_xeUtils.default.getWhatQuarter(i,n);break;case"year":u=_xeUtils.default.getWhatYear(i,n)}break;default:u=new Date}return{value:u?_xeUtils.default.toDateString(u,r):""}}exports.parseDateString=parseDateString;let 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{valueFormat:r,firstDay:l}=s,u=((t=_xeUtils.default.isArray(t)?t.join(""):t)?parseDateValue(t,a,s):null)||new Date;let i=null;t=u;switch(e){case"last1":case"last3":case"last7":case"last30":case"last60":case"last90":case"last180":var n=getRangeDateOffsetNum(e);switch(a){case"date":case"datetime":i=_xeUtils.default.getWhatDay(u,n);break;case"week":i=_xeUtils.default.getWhatWeek(u,n,l,l);break;case"month":i=_xeUtils.default.getWhatMonth(u,n);break;case"quarter":i=_xeUtils.default.getWhatQuarter(u,n);break;case"year":i=_xeUtils.default.getWhatYear(u,n)}break;default:i=new Date}return{startValue:i?_xeUtils.default.toDateString(i,r):"",endValue:t?_xeUtils.default.toDateString(t,r):""}}let checkWeekOfsetYear=(e,t)=>""+e=="1"&&""+t=="12";
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(s){var r=new Date(2e3,0,1);if(s){let e=0,t=0,a=0;(_xeUtils.default.isNumber(s)||/^[0-9]{11,15}$/.test(""+s))&&(s=new Date(Number(s))),_xeUtils.default.isDate(s)?(e=s.getHours(),t=s.getMinutes(),a=s.getSeconds()):(s=(s=_xeUtils.default.toValueString(s)).match(/^(\d{1,2})(:(\d{1,2}))?(:(\d{1,2}))?/))&&(e=_xeUtils.default.toNumber(s[1]),t=_xeUtils.default.toNumber(s[3]),a=_xeUtils.default.toNumber(s[5])),r.setHours(e),r.setMinutes(t),r.setSeconds(a)}return r}function getDateQuarter(e){e=e.getMonth();return e<3?1:e<6?2:e<9?3:4}let parseDateValue=(e,t,a)=>{a=a.valueFormat;return e?"time"===t?toStringTimeDate(e):_xeUtils.default.isNumber(e)||/^[0-9]{10,15}$/.test(""+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.parseDateValue=parseDateValue,(e,t,a)=>{e=parseDateValue(e,t,a);return e?_xeUtils.default.toDateString(e,a.valueFormat):""});function parseDateObj(e,t,a){var{labelFormat:s,firstDay:r}=a;let 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{valueFormat:r,firstDay:l}=s;let u=null;var i=("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 n="plus"===e||"next"===e?1:-1;switch(a){case"date":case"datetime":u=_xeUtils.default.getWhatDay(i,n);break;case"week":u=_xeUtils.default.getWhatWeek(i,n,l,l);break;case"month":u=_xeUtils.default.getWhatMonth(i,n);break;case"quarter":u=_xeUtils.default.getWhatQuarter(i,n);break;case"year":u=_xeUtils.default.getWhatYear(i,n)}break;default:u=new Date}return{value:u?_xeUtils.default.toDateString(u,r):""}}exports.parseDateString=parseDateString;let 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{valueFormat:r,firstDay:l}=s,u=((t=_xeUtils.default.isArray(t)?t.join(""):t)?parseDateValue(t,a,s):null)||new Date;let i=null;t=u;switch(e){case"last1":case"last3":case"last7":case"last30":case"last60":case"last90":case"last180":var n=getRangeDateOffsetNum(e);switch(a){case"date":case"datetime":i=_xeUtils.default.getWhatDay(u,n);break;case"week":i=_xeUtils.default.getWhatWeek(u,n,l,l);break;case"month":i=_xeUtils.default.getWhatMonth(u,n);break;case"quarter":i=_xeUtils.default.getWhatQuarter(u,n);break;case"year":i=_xeUtils.default.getWhatYear(u,n)}break;default:i=new Date}return{startValue:i?_xeUtils.default.toDateString(i,r):"",endValue:t?_xeUtils.default.toDateString(t,r):""}}let checkWeekOfsetYear=(e,t)=>""+e=="1"&&""+t=="12";