vxe-pc-ui 4.15.0 → 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 (74) hide show
  1. package/dist/all.esm.js +220 -37
  2. package/dist/style.css +1 -1
  3. package/dist/style.min.css +1 -1
  4. package/es/cascader/src/cascader.js +76 -10
  5. package/es/date-panel/src/util.js +12 -0
  6. package/es/date-picker/src/date-picker.js +71 -5
  7. package/es/date-range-picker/src/date-range-picker.js +17 -2
  8. package/es/form/render/index.js +25 -14
  9. package/es/form/style.css +4 -2
  10. package/es/form/style.min.css +1 -1
  11. package/es/number-input/src/number-input.js +2 -3
  12. package/es/splitter/src/splitter.js +5 -1
  13. package/es/style.css +1 -1
  14. package/es/style.min.css +1 -1
  15. package/es/tree-select/src/tree-select.js +12 -2
  16. package/es/ui/index.js +1 -1
  17. package/es/ui/src/log.js +1 -1
  18. package/es/vxe-form/style.css +4 -2
  19. package/es/vxe-form/style.min.css +1 -1
  20. package/lib/cascader/src/cascader.js +89 -10
  21. package/lib/cascader/src/cascader.min.js +1 -1
  22. package/lib/date-panel/src/util.js +13 -0
  23. package/lib/date-panel/src/util.min.js +1 -1
  24. package/lib/date-picker/src/date-picker.js +82 -3
  25. package/lib/date-picker/src/date-picker.min.js +1 -1
  26. package/lib/date-range-picker/src/date-range-picker.js +17 -2
  27. package/lib/date-range-picker/src/date-range-picker.min.js +1 -1
  28. package/lib/form/render/index.js +32 -14
  29. package/lib/form/render/index.min.js +1 -1
  30. package/lib/form/style/style.css +4 -2
  31. package/lib/form/style/style.min.css +1 -1
  32. package/lib/index.umd.js +260 -37
  33. package/lib/index.umd.min.js +1 -1
  34. package/lib/number-input/src/number-input.js +2 -3
  35. package/lib/splitter/src/splitter.js +5 -1
  36. package/lib/splitter/src/splitter.min.js +1 -1
  37. package/lib/style.css +1 -1
  38. package/lib/style.min.css +1 -1
  39. package/lib/tree-select/src/tree-select.js +16 -2
  40. package/lib/tree-select/src/tree-select.min.js +1 -1
  41. package/lib/ui/index.js +1 -1
  42. package/lib/ui/index.min.js +1 -1
  43. package/lib/ui/src/log.js +1 -1
  44. package/lib/ui/src/log.min.js +1 -1
  45. package/lib/vxe-form/style/style.css +4 -2
  46. package/lib/vxe-form/style/style.min.css +1 -1
  47. package/package.json +1 -1
  48. package/packages/cascader/src/cascader.ts +78 -10
  49. package/packages/date-panel/src/util.ts +13 -0
  50. package/packages/date-picker/src/date-picker.ts +73 -5
  51. package/packages/date-range-picker/src/date-range-picker.ts +15 -2
  52. package/packages/form/render/index.ts +28 -14
  53. package/packages/number-input/src/number-input.ts +2 -6
  54. package/packages/splitter/src/splitter.ts +5 -1
  55. package/packages/tree-select/src/tree-select.ts +12 -2
  56. package/styles/components/form.scss +4 -2
  57. package/types/components/cascader.d.ts +6 -2
  58. package/types/components/date-picker.d.ts +18 -0
  59. package/types/components/date-range-picker.d.ts +4 -0
  60. package/types/components/splitter.d.ts +1 -0
  61. package/types/components/table.d.ts +29 -3
  62. package/types/components/tree-select.d.ts +19 -1
  63. /package/es/icon/{iconfont.1781659237913.ttf → iconfont.1781753592499.ttf} +0 -0
  64. /package/es/icon/{iconfont.1781659237913.woff → iconfont.1781753592499.woff} +0 -0
  65. /package/es/icon/{iconfont.1781659237913.woff2 → iconfont.1781753592499.woff2} +0 -0
  66. /package/es/{iconfont.1781659237913.ttf → iconfont.1781753592499.ttf} +0 -0
  67. /package/es/{iconfont.1781659237913.woff → iconfont.1781753592499.woff} +0 -0
  68. /package/es/{iconfont.1781659237913.woff2 → iconfont.1781753592499.woff2} +0 -0
  69. /package/lib/icon/style/{iconfont.1781659237913.ttf → iconfont.1781753592499.ttf} +0 -0
  70. /package/lib/icon/style/{iconfont.1781659237913.woff → iconfont.1781753592499.woff} +0 -0
  71. /package/lib/icon/style/{iconfont.1781659237913.woff2 → iconfont.1781753592499.woff2} +0 -0
  72. /package/lib/{iconfont.1781659237913.ttf → iconfont.1781753592499.ttf} +0 -0
  73. /package/lib/{iconfont.1781659237913.woff → iconfont.1781753592499.woff} +0 -0
  74. /package/lib/{iconfont.1781659237913.woff2 → iconfont.1781753592499.woff2} +0 -0
@@ -1,11 +1,11 @@
1
- import { h, Teleport, ref, Ref, computed, provide, reactive, inject, nextTick, watch, PropType, onUnmounted } from 'vue'
1
+ import { h, Teleport, ref, Ref, computed, provide, reactive, inject, nextTick, watch, PropType, 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'
@@ -77,6 +77,7 @@ export default defineVxeComponent({
77
77
  labelFormat: String as PropType<VxeDatePickerPropTypes.LabelFormat>,
78
78
  valueFormat: String as PropType<VxeDatePickerPropTypes.ValueFormat>,
79
79
  timeFormat: String as PropType<VxeDatePickerPropTypes.TimeFormat>,
80
+ inputFormat: String as PropType<VxeDatePickerPropTypes.InputFormat>,
80
81
  editable: {
81
82
  type: Boolean as PropType<VxeDatePickerPropTypes.Editable>,
82
83
  default: true
@@ -107,6 +108,7 @@ export default defineVxeComponent({
107
108
  type: Boolean as PropType<VxeDatePickerPropTypes.AutoClose>,
108
109
  default: () => getConfig().datePicker.autoClose
109
110
  },
111
+ controlConfig: Object as PropType<VxeDatePickerPropTypes.ControlConfig>,
110
112
 
111
113
  prefixIcon: String as PropType<VxeDatePickerPropTypes.PrefixIcon>,
112
114
  suffixIcon: String as PropType<VxeDatePickerPropTypes.SuffixIcon>,
@@ -167,7 +169,8 @@ export default defineVxeComponent({
167
169
  })
168
170
 
169
171
  const internalData: DatePickerInternalData = {
170
- hpTimeout: undefined
172
+ // hpTimeout: undefined,
173
+ parseInputKayMaps: {}
171
174
  }
172
175
 
173
176
  const refElem = ref() as Ref<HTMLDivElement>
@@ -303,6 +306,11 @@ export default defineVxeComponent({
303
306
  return handleValueFormat(type, valueFormat)
304
307
  })
305
308
 
309
+ const computeDateInputFormat = computed(() => {
310
+ const { type, inputFormat } = props
311
+ return handleInputFormat(type, inputFormat)
312
+ })
313
+
306
314
  const computeFirstDayOfWeek = computed(() => {
307
315
  const { startDay } = props
308
316
  return XEUtils.toNumber(startDay) as VxeDatePickerPropTypes.StartDay
@@ -325,6 +333,10 @@ export default defineVxeComponent({
325
333
  }).join(', ')
326
334
  })
327
335
 
336
+ const computeControlOpts = computed(() => {
337
+ return Object.assign({}, getConfig().datePicker.controlConfig, props.controlConfig)
338
+ })
339
+
328
340
  const updateModelValue = () => {
329
341
  const { modelValue } = props
330
342
  let val: any = ''
@@ -400,6 +412,8 @@ export default defineVxeComponent({
400
412
  reactData.isActivated = true
401
413
  if (!trigger || trigger === 'default') {
402
414
  datePickerOpenEvent(evnt)
415
+ } else if (trigger === 'icon') {
416
+ hidePanel()
403
417
  }
404
418
  triggerEvent(evnt)
405
419
  }
@@ -439,6 +453,32 @@ export default defineVxeComponent({
439
453
  }
440
454
  }
441
455
 
456
+ const handleArrowInputDate = (evnt: KeyboardEvent, isUpArrow: boolean) => {
457
+ const { multiple } = props
458
+ if (multiple) {
459
+ return
460
+ }
461
+ const { inputValue } = reactData
462
+ if (!inputValue) {
463
+ return
464
+ }
465
+ const targetElem = refInputTarget.value
466
+ if (!targetElem) {
467
+ return
468
+ }
469
+ const { parseInputKayMaps } = internalData
470
+ const inputFormat = computeDateInputFormat.value
471
+ const selectionStart = targetElem.selectionStart || 0
472
+ let selectKey = inputFormat[selectionStart]
473
+ if (!parseInputKayMaps[selectKey]) {
474
+ selectKey = inputFormat[selectionStart - 1]
475
+ }
476
+ const inputPaesrFn = parseInputKayMaps[selectKey]
477
+ if (inputPaesrFn) {
478
+ inputPaesrFn(evnt, targetElem, isUpArrow)
479
+ }
480
+ }
481
+
442
482
  const blurEvent = (evnt: Event & { type: 'blur' }) => {
443
483
  const $datePanel = refDatePanel.value
444
484
  const { inputValue } = reactData
@@ -462,6 +502,13 @@ export default defineVxeComponent({
462
502
  }
463
503
 
464
504
  const keydownEvent = (evnt: KeyboardEvent & { type: 'keydown' }) => {
505
+ const { controlConfig } = props
506
+ const controlOpts = computeControlOpts.value
507
+ const isUpArrow = globalEvents.hasKey(evnt, GLOBAL_EVENT_KEYS.ARROW_UP)
508
+ const isDwArrow = globalEvents.hasKey(evnt, GLOBAL_EVENT_KEYS.ARROW_DOWN)
509
+ if ((isUpArrow || isDwArrow) && controlOpts.isArrow && (controlConfig || controlOpts.enabled)) {
510
+ handleArrowInputDate(evnt, isUpArrow)
511
+ }
465
512
  triggerEvent(evnt)
466
513
  }
467
514
 
@@ -592,6 +639,9 @@ export default defineVxeComponent({
592
639
  const { panelIndex } = reactData
593
640
  const targetElem = refInputTarget.value
594
641
  const panelElem = refInputPanel.value
642
+ if (!panelElem) {
643
+ return nextTick()
644
+ }
595
645
  const btnTransfer = computeBtnTransfer.value
596
646
  const popupOpts = computePopupOpts.value
597
647
  const handleStyle = () => {
@@ -642,10 +692,15 @@ export default defineVxeComponent({
642
692
  }
643
693
 
644
694
  const clickIconEvent = (evnt: MouseEvent) => {
695
+ const { visiblePanel } = reactData
645
696
  const popupOpts = computePopupOpts.value
646
697
  const { trigger } = popupOpts
647
698
  if (!trigger || trigger === 'default' || trigger === 'icon') {
648
- datePickerOpenEvent(evnt)
699
+ if (visiblePanel) {
700
+ hidePanel()
701
+ } else {
702
+ datePickerOpenEvent(evnt)
703
+ }
649
704
  }
650
705
  }
651
706
 
@@ -766,6 +821,10 @@ export default defineVxeComponent({
766
821
  }
767
822
 
768
823
  const renderPanel = () => {
824
+ const popupOpts = computePopupOpts.value
825
+ if (popupOpts.enabled === false) {
826
+ return renderEmptyElement($xeDatePicker)
827
+ }
769
828
  const { type, multiple, showClearButton, showConfirmButton } = props
770
829
  const { initialized, isAniVisible, visiblePanel, panelPlacement, panelStyle, inputValue } = reactData
771
830
  const vSize = computeSize.value
@@ -775,7 +834,6 @@ export default defineVxeComponent({
775
834
  const isDateTimeType = computeIsDateTimeType.value
776
835
  const shortcutList = computeShortcutList.value
777
836
  const timeOpts = computeTimeOpts.value
778
- const popupOpts = computePopupOpts.value
779
837
  const { position } = shortcutOpts
780
838
  const headerSlot = slots.header
781
839
  const footerSlot = slots.footer
@@ -1055,6 +1113,16 @@ export default defineVxeComponent({
1055
1113
  globalEvents.on($xeDatePicker, 'resize', handleGlobalResizeEvent)
1056
1114
  })
1057
1115
 
1116
+ onMounted(() => {
1117
+ const { parseInputKayMaps } = internalData
1118
+ const inputKeys = ['y', 'M', 'd', 'H', 'm', 'n']
1119
+ inputKeys.forEach(key => {
1120
+ parseInputKayMaps[key] = (evnt: KeyboardEvent) => {
1121
+ evnt.preventDefault()
1122
+ }
1123
+ })
1124
+ })
1125
+
1058
1126
  onUnmounted(() => {
1059
1127
  globalEvents.off($xeDatePicker, 'mousewheel')
1060
1128
  globalEvents.off($xeDatePicker, 'mousedown')
@@ -505,6 +505,8 @@ export default defineVxeComponent({
505
505
  reactData.isActivated = true
506
506
  if (!trigger || trigger === 'default') {
507
507
  dateRangePickerOpenEvent(evnt)
508
+ } else if (trigger === 'icon') {
509
+ hidePanel()
508
510
  }
509
511
  triggerEvent(evnt)
510
512
  }
@@ -833,6 +835,9 @@ export default defineVxeComponent({
833
835
  const { panelIndex } = reactData
834
836
  const targetElem = refInputTarget.value
835
837
  const panelElem = refInputPanel.value
838
+ if (!panelElem) {
839
+ return nextTick()
840
+ }
836
841
  const btnTransfer = computeBtnTransfer.value
837
842
  const popupOpts = computePopupOpts.value
838
843
  const handleStyle = () => {
@@ -884,10 +889,15 @@ export default defineVxeComponent({
884
889
  }
885
890
 
886
891
  const clickIconEvent = (evnt: MouseEvent) => {
892
+ const { visiblePanel } = reactData
887
893
  const popupOpts = computePopupOpts.value
888
894
  const { trigger } = popupOpts
889
895
  if (!trigger || trigger === 'default' || trigger === 'icon') {
890
- dateRangePickerOpenEvent(evnt)
896
+ if (visiblePanel) {
897
+ hidePanel()
898
+ } else {
899
+ dateRangePickerOpenEvent(evnt)
900
+ }
891
901
  }
892
902
  }
893
903
 
@@ -1019,6 +1029,10 @@ export default defineVxeComponent({
1019
1029
  }
1020
1030
 
1021
1031
  const renderPanel = () => {
1032
+ const popupOpts = computePopupOpts.value
1033
+ if (popupOpts.enabled === false) {
1034
+ return renderEmptyElement($xeDateRangePicker)
1035
+ }
1022
1036
  const { type, separator, autoClose, showConfirmButton, showClearButton } = props
1023
1037
  const { initialized, isAniVisible, visiblePanel, panelPlacement, panelStyle, startValue, endValue } = reactData
1024
1038
  const vSize = computeSize.value
@@ -1031,7 +1045,6 @@ export default defineVxeComponent({
1031
1045
  const defaultDates = computeDefaultDates.value
1032
1046
  const defaultTimes = computeDefaultTimes.value
1033
1047
  const timeOpts = computeTimeOpts.value
1034
- const popupOpts = computePopupOpts.value
1035
1048
  const { startLabel, endLabel } = panelLabelObj
1036
1049
  const { position } = shortcutOpts
1037
1050
  const headerSlot = slots.header
@@ -334,15 +334,15 @@ function oldFormItemRadioAndCheckboxRender (renderOpts: VxeGlobalRendererHandles
334
334
  */
335
335
  renderer.mixin({
336
336
  input: {
337
- formItemAutoFocus: 'input',
337
+ formItemAutoFocus: true,
338
338
  renderFormItemContent: nativeItemRender
339
339
  },
340
340
  textarea: {
341
- formItemAutoFocus: 'textarea',
341
+ formItemAutoFocus: true,
342
342
  renderFormItemContent: nativeItemRender
343
343
  },
344
344
  select: {
345
- formItemAutoFocus: 'input',
345
+ formItemAutoFocus: true,
346
346
  renderFormItemContent (renderOpts: VxeGlobalRendererHandles.RenderFormItemContentOptions, params: VxeGlobalRendererHandles.RenderFormItemContentParams) {
347
347
  return [
348
348
  h('select', {
@@ -355,27 +355,27 @@ renderer.mixin({
355
355
  }
356
356
  },
357
357
  VxeInput: {
358
- formItemAutoFocus: 'input',
358
+ formItemAutoFocus: true,
359
359
  renderFormItemContent: defaultItemRender
360
360
  },
361
361
  VxeNumberInput: {
362
- formItemAutoFocus: 'input',
362
+ formItemAutoFocus: true,
363
363
  renderFormItemContent: defaultItemRender
364
364
  },
365
365
  VxePasswordInput: {
366
- formItemAutoFocus: 'input',
366
+ formItemAutoFocus: true,
367
367
  renderFormItemContent: defaultItemRender
368
368
  },
369
369
  VxeTextarea: {
370
- formItemAutoFocus: 'textarea',
370
+ formItemAutoFocus: true,
371
371
  renderFormItemContent: defaultItemRender
372
372
  },
373
373
  VxeDatePicker: {
374
- formItemAutoFocus: 'input',
374
+ formItemAutoFocus: true,
375
375
  renderFormItemContent: defaultItemRender
376
376
  },
377
377
  VxeDateRangePicker: {
378
- formItemAutoFocus: 'input',
378
+ formItemAutoFocus: true,
379
379
  renderFormItemContent (renderOpts, params) {
380
380
  const { startField, endField } = renderOpts
381
381
  const { $form, data, field } = params
@@ -434,7 +434,7 @@ renderer.mixin({
434
434
  }
435
435
  },
436
436
  VxeSelect: {
437
- formItemAutoFocus: 'input',
437
+ formItemAutoFocus: true,
438
438
  renderFormItemContent (renderOpts, params) {
439
439
  const { data, field } = params
440
440
  const { options, optionProps, optionGroups, optionGroupProps } = renderOpts
@@ -448,7 +448,21 @@ renderer.mixin({
448
448
  }
449
449
  },
450
450
  VxeTreeSelect: {
451
- formItemAutoFocus: 'input',
451
+ formItemAutoFocus: true,
452
+ renderFormItemContent (renderOpts: VxeGlobalRendererHandles.RenderFormItemContentOptions, params: VxeGlobalRendererHandles.RenderFormItemContentParams) {
453
+ const { data, field } = params
454
+ const { options, optionProps } = renderOpts
455
+ const itemValue = XEUtils.get(data, field)
456
+ return [
457
+ h(getDefaultComponent(renderOpts), {
458
+ ...getComponentFormItemProps(renderOpts, params, itemValue, { options, optionProps }),
459
+ ...getItemOns(renderOpts, params)
460
+ })
461
+ ]
462
+ }
463
+ },
464
+ VxeCascader: {
465
+ formItemAutoFocus: true,
452
466
  renderFormItemContent (renderOpts: VxeGlobalRendererHandles.RenderFormItemContentOptions, params: VxeGlobalRendererHandles.RenderFormItemContentParams) {
453
467
  const { data, field } = params
454
468
  const { options, optionProps } = renderOpts
@@ -462,7 +476,7 @@ renderer.mixin({
462
476
  }
463
477
  },
464
478
  VxeTableSelect: {
465
- formItemAutoFocus: 'input',
479
+ formItemAutoFocus: true,
466
480
  renderFormItemContent (renderOpts: VxeGlobalRendererHandles.RenderFormItemContentOptions, params: VxeGlobalRendererHandles.RenderFormItemContentParams) {
467
481
  const { data, field } = params
468
482
  const { options, optionProps } = renderOpts
@@ -476,7 +490,7 @@ renderer.mixin({
476
490
  }
477
491
  },
478
492
  VxeColorPicker: {
479
- formItemAutoFocus: 'input',
493
+ formItemAutoFocus: true,
480
494
  renderFormItemContent (renderOpts: VxeGlobalRendererHandles.RenderFormItemContentOptions, params: VxeGlobalRendererHandles.RenderFormItemContentParams) {
481
495
  const { data, field } = params
482
496
  const { options } = renderOpts
@@ -490,7 +504,7 @@ renderer.mixin({
490
504
  }
491
505
  },
492
506
  VxeIconPicker: {
493
- formItemAutoFocus: 'input',
507
+ formItemAutoFocus: true,
494
508
  renderFormItemContent (renderOpts: VxeGlobalRendererHandles.RenderFormItemContentOptions, params: VxeGlobalRendererHandles.RenderFormItemContentParams) {
495
509
  const { data, field } = params
496
510
  const { options } = renderOpts
@@ -50,8 +50,6 @@ export default defineVxeComponent({
50
50
  type: String as PropType<VxeNumberInputPropTypes.Size>,
51
51
  default: () => getConfig().numberInput.size || getConfig().size
52
52
  },
53
-
54
- // number、integer、float
55
53
  min: {
56
54
  type: [String, Number] as PropType<VxeNumberInputPropTypes.Min>,
57
55
  default: null
@@ -74,13 +72,12 @@ export default defineVxeComponent({
74
72
  default: () => getConfig().numberInput.currencySymbol
75
73
  },
76
74
  controlConfig: Object as PropType<VxeNumberInputPropTypes.ControlConfig>,
77
-
78
- // float
75
+ // number、float、amount
79
76
  roundingMode: {
80
77
  type: String as PropType<VxeNumberInputPropTypes.RoundingMode>,
81
78
  default: () => getConfig().numberInput.roundingMode
82
79
  },
83
- // float
80
+ // float、amount
84
81
  digits: {
85
82
  type: [String, Number] as PropType<VxeNumberInputPropTypes.Digits>,
86
83
  default: null
@@ -93,7 +90,6 @@ export default defineVxeComponent({
93
90
  type: Boolean as PropType<VxeNumberInputPropTypes.Editable>,
94
91
  default: true
95
92
  },
96
-
97
93
  plusIcon: String as PropType<VxeNumberInputPropTypes.PlusIcon>,
98
94
  minusIcon: String as PropType<VxeNumberInputPropTypes.MinusIcon>,
99
95
  prefixIcon: String as PropType<VxeNumberInputPropTypes.PrefixIcon>,
@@ -63,7 +63,8 @@ export default defineVxeComponent({
63
63
  staticItems: [],
64
64
  itemList: [],
65
65
  barWidth: 0,
66
- barHeight: 0
66
+ barHeight: 0,
67
+ resizeFlag: 0
67
68
  })
68
69
 
69
70
  const internalData: SplitterInternalData = {
@@ -581,6 +582,7 @@ export default defineVxeComponent({
581
582
  document.onmousemove = (evnt) => {
582
583
  evnt.preventDefault()
583
584
  handleDrag(evnt)
585
+ reactData.resizeFlag++
584
586
  }
585
587
  document.onmouseup = (evnt) => {
586
588
  document.onmousemove = null
@@ -592,6 +594,7 @@ export default defineVxeComponent({
592
594
  removeClass(el, 'is--drag')
593
595
  dispatchEvent('resize-end', { prevItem, nextItem, offsetHeight: targetOffsetHeight, offsetWidth: targetOffsetWidth }, evnt)
594
596
  recalculate()
597
+ reactData.resizeFlag++
595
598
  }
596
599
 
597
600
  if (rsSplitterLineEl) {
@@ -642,6 +645,7 @@ export default defineVxeComponent({
642
645
  dispatchEvent('toggle-expand', { prevItem, nextItem, expanded, item }, evnt)
643
646
  }
644
647
  recalculate()
648
+ reactData.resizeFlag++
645
649
  }
646
650
 
647
651
  const handlePrevActionDblclickEvent = (evnt: MouseEvent) => {
@@ -98,6 +98,14 @@ export default defineVxeComponent({
98
98
  },
99
99
  remote: Boolean as PropType<VxeTreeSelectPropTypes.Remote>,
100
100
  remoteConfig: Function as PropType<VxeTreeSelectPropTypes.RemoteConfig>,
101
+ showRadio: {
102
+ type: Boolean as PropType<VxeTreeSelectPropTypes.ShowRadio>,
103
+ default: () => getConfig().treeSelect.showRadio
104
+ },
105
+ showCheckbox: {
106
+ type: Boolean as PropType<VxeTreeSelectPropTypes.ShowCheckbox>,
107
+ default: () => getConfig().treeSelect.showCheckbox
108
+ },
101
109
  popupConfig: Object as PropType<VxeTreeSelectPropTypes.PopupConfig>,
102
110
  treeConfig: Object as PropType<VxeTreeSelectPropTypes.TreeConfig>,
103
111
  menuConfig: Object as PropType<VxeTreeSelectPropTypes.MenuConfig>,
@@ -246,18 +254,20 @@ export default defineVxeComponent({
246
254
  })
247
255
 
248
256
  const computeTreeCheckboxOpts = computed(() => {
257
+ const { showCheckbox } = props
249
258
  const treeOpts = computeTreeOpts.value
250
259
  return Object.assign({
251
- showIcon: !!treeOpts.showCheckbox
260
+ showIcon: XEUtils.isBoolean(showCheckbox) ? showCheckbox : !!treeOpts.showCheckbox
252
261
  }, treeOpts.checkboxConfig, {
253
262
  trigger: 'node'
254
263
  })
255
264
  })
256
265
 
257
266
  const computeTreeRadioOpts = computed(() => {
267
+ const { showRadio } = props
258
268
  const treeOpts = computeTreeOpts.value
259
269
  return Object.assign({
260
- showIcon: !!treeOpts.showRadio
270
+ showIcon: XEUtils.isBoolean(showRadio) ? showRadio : !!treeOpts.showRadio
261
271
  }, treeOpts.radioConfig, {
262
272
  trigger: 'node'
263
273
  })
@@ -289,7 +289,8 @@
289
289
  .vxe-select,
290
290
  .vxe-tree-select,
291
291
  .vxe-table-select,
292
- .vxe-ico-picker {
292
+ .vxe-ico-picker,
293
+ .vxe-cascader {
293
294
  width: 100%;
294
295
  }
295
296
  }
@@ -324,7 +325,8 @@
324
325
  .vxe-default-input,
325
326
  .vxe-default-textarea,
326
327
  .vxe-default-select,
327
- .vxe-ico-picker {
328
+ .vxe-ico-picker,
329
+ .vxe-cascader {
328
330
  border-color: var(--vxe-ui-form-validate-error-color);
329
331
  }
330
332
  .vxe-input,
@@ -1,5 +1,6 @@
1
1
  import { RenderFunction, SetupContext, Ref } from 'vue'
2
2
  import { DefineVxeComponentApp, DefineVxeComponentOptions, DefineVxeComponentInstance, VxeComponentBaseOptions, VxeComponentEventParams, VxeComponentSizeType, ValueOf } from '@vxe-ui/core'
3
+ import { VxeListPropTypes } from './list'
3
4
 
4
5
  /* eslint-disable no-use-before-define,@typescript-eslint/ban-types */
5
6
 
@@ -86,6 +87,7 @@ export namespace VxeCascaderPropTypes {
86
87
  disabled?: string
87
88
  }
88
89
  export type Remote = boolean
90
+ export type ShowRadio = boolean
89
91
  export interface RadioConfig<D = any> {
90
92
  strict?: boolean
91
93
  visibleMode?: 'all' | 'first' | 'last' | '' | null
@@ -98,9 +100,9 @@ export namespace VxeCascaderPropTypes {
98
100
  $cascader: VxeCascaderConstructor
99
101
  node: D
100
102
  }) => boolean
101
- showIcon?: boolean
102
103
  trigger?: '' | 'default' | 'node'
103
104
  }
105
+ export type ShowCheckbox = boolean
104
106
  export interface CheckboxConfig<D = any> {
105
107
  checkStrictly?: boolean
106
108
  visibleMode?: 'all' | 'first' | 'last' | '' | null
@@ -113,7 +115,6 @@ export namespace VxeCascaderPropTypes {
113
115
  $cascader: VxeCascaderConstructor
114
116
  node: D
115
117
  }) => boolean
116
- showIcon?: boolean
117
118
  trigger?: '' | 'default' | 'node'
118
119
  }
119
120
  export interface RemoteConfig {
@@ -203,7 +204,9 @@ export interface VxeCascaderProps<D = any> {
203
204
  options?: VxeCascaderPropTypes.Options<D>
204
205
  optionProps?: VxeCascaderPropTypes.OptionProps
205
206
  remote?: VxeCascaderPropTypes.Remote
207
+ showRadio?: VxeCascaderPropTypes.ShowRadio
206
208
  radioConfig?: VxeCascaderPropTypes.RadioConfig
209
+ showCheckbox?: VxeCascaderPropTypes.ShowCheckbox
207
210
  checkboxConfig?: VxeCascaderPropTypes.CheckboxConfig
208
211
  remoteConfig?: VxeCascaderPropTypes.RemoteConfig
209
212
  popupConfig?: VxeCascaderPropTypes.PopupConfig
@@ -238,6 +241,7 @@ export interface CascaderReactData {
238
241
 
239
242
  export interface CascaderInternalData {
240
243
  hpTimeout?: undefined | number
244
+ listVirtualYOpts: VxeListPropTypes.VirtualYConfig
241
245
  afterTreeList: any[]
242
246
  treeFullData: any[]
243
247
  afterVisibleList: any[]
@@ -57,12 +57,23 @@ export namespace VxeDatePickerPropTypes {
57
57
  export type LabelFormat = string
58
58
  export type ValueFormat = string
59
59
  export type TimeFormat = string
60
+ export type InputFormat = string
60
61
  export type Editable = boolean
61
62
  export type FestivalMethod = VxeDatePanelPropTypes.FestivalMethod
62
63
  export type DisabledMethod = VxeDatePanelPropTypes.DisabledMethod
63
64
  export type AutoClose = boolean
64
65
  export type PrefixIcon = string
65
66
  export type SuffixIcon = string
67
+ export interface ControlConfig {
68
+ /**
69
+ * 是否启用,支持局部/全局启用
70
+ */
71
+ enabled?: boolean
72
+ /**
73
+ * 只对 enabled 启用后有效,是否启用方向键操作
74
+ */
75
+ isArrow?: boolean
76
+ }
66
77
  /**
67
78
  * 已废弃,请使用 PopupConfig.placement
68
79
  * @deprecated
@@ -79,6 +90,10 @@ export namespace VxeDatePickerPropTypes {
79
90
  export interface TimeConfig extends VxeDatePanelPropTypes.TimeConfig {}
80
91
 
81
92
  export interface PopupConfig {
93
+ /**
94
+ * 是否启用,支持局部/全局启用
95
+ */
96
+ enabled?: boolean
82
97
  /**
83
98
  * 设置弹出面板方向
84
99
  */
@@ -142,6 +157,7 @@ export interface VxeDatePickerProps {
142
157
  labelFormat?: VxeDatePickerPropTypes.LabelFormat
143
158
  valueFormat?: VxeDatePickerPropTypes.ValueFormat
144
159
  timeFormat?: VxeDatePickerPropTypes.TimeFormat
160
+ inputFormat?: VxeDatePickerPropTypes.InputFormat
145
161
  editable?: VxeDatePickerPropTypes.Editable
146
162
  festivalMethod?: VxeDatePickerPropTypes.FestivalMethod
147
163
  disabledMethod?: VxeDatePickerPropTypes.DisabledMethod
@@ -154,6 +170,7 @@ export interface VxeDatePickerProps {
154
170
  * 只对 type=date,week,month,quarter,year 有效,选择完日期后自动关闭
155
171
  */
156
172
  autoClose?: VxeDatePickerPropTypes.AutoClose
173
+ controlConfig?: VxeDatePickerPropTypes.ControlConfig
157
174
 
158
175
  /**
159
176
  * 只对 type=week 有效,选中日期后指定为一周的哪一天
@@ -195,6 +212,7 @@ export interface DatePickerReactData {
195
212
 
196
213
  export interface DatePickerInternalData {
197
214
  hpTimeout?: undefined | number
215
+ parseInputKayMaps: Record<string, (evnt: KeyboardEvent, targetElem: HTMLInputElement, isUpArrow: boolean) => void>
198
216
  }
199
217
 
200
218
  export interface DatePickerMethods {
@@ -84,6 +84,10 @@ export namespace VxeDateRangePickerPropTypes {
84
84
  export interface TimeConfig extends VxeDatePanelPropTypes.TimeConfig {}
85
85
 
86
86
  export interface PopupConfig {
87
+ /**
88
+ * 是否启用,支持局部/全局启用
89
+ */
90
+ enabled?: boolean
87
91
  /**
88
92
  * 设置弹出面板方向
89
93
  */
@@ -145,6 +145,7 @@ export interface SplitterReactData {
145
145
  itemList: VxeSplitterDefines.PaneConfig[]
146
146
  barWidth: number
147
147
  barHeight: number
148
+ resizeFlag: number
148
149
  }
149
150
 
150
151
  export interface SplitterInternalData {
@@ -1377,6 +1377,8 @@ export namespace VxeTablePropTypes {
1377
1377
  * 是否启用浮动筛选
1378
1378
  */
1379
1379
  floatingFilters?: VxeColumnPropTypes.FloatingFilters
1380
+ rowClassName?: string
1381
+ cellClassName?: string
1380
1382
  }
1381
1383
 
1382
1384
  /**
@@ -1501,8 +1503,14 @@ export namespace VxeTablePropTypes {
1501
1503
  * 提示信息配置项
1502
1504
  */
1503
1505
  export interface TooltipConfig<D = VxeTablePropTypes.Row> {
1506
+ /**
1507
+ * 所有单元格开启工具提示
1508
+ */
1504
1509
  showAll?: boolean
1505
1510
  theme?: VxeTooltipPropTypes.Theme
1511
+ /**
1512
+ * 鼠标是否可进入到工具提示中
1513
+ */
1506
1514
  enterable?: VxeTooltipPropTypes.Enterable
1507
1515
  enterDelay?: VxeTooltipPropTypes.EnterDelay
1508
1516
  leaveDelay?: VxeTooltipPropTypes.LeaveDelay
@@ -1512,10 +1520,22 @@ export namespace VxeTablePropTypes {
1512
1520
  minHeight?: VxeTooltipPropTypes.MinHeight
1513
1521
  maxWidth?: VxeTooltipPropTypes.MaxWidth
1514
1522
  maxHeight?: VxeTooltipPropTypes.MaxHeight
1523
+ /**
1524
+ * 显示为 HTML 标签
1525
+ */
1515
1526
  useHtml?: VxeTooltipPropTypes.UseHtml
1527
+ /**
1528
+ * 固定方向
1529
+ */
1516
1530
  placement?: VxeTooltipPropTypes.Placement
1531
+ /**
1532
+ * 默认方向
1533
+ */
1517
1534
  defaultPlacement?: VxeTooltipPropTypes.DefaultPlacement
1518
1535
  popupClassName?: VxeTooltipPropTypes.PopupClassName
1536
+ /**
1537
+ * 该方法可以通过返回值来重写默认的提示内容,可以返回 null 使用默认的提示内容,可以返回空内容去掉指定单元格的提示内容
1538
+ */
1519
1539
  contentMethod?(params: {
1520
1540
  $table: VxeTableConstructor<D>
1521
1541
  items: any[]
@@ -1530,7 +1550,7 @@ export namespace VxeTablePropTypes {
1530
1550
  type: 'body'
1531
1551
  cell: HTMLElement
1532
1552
  $event: any
1533
- }): string | null | void
1553
+ }): string | boolean | null | void
1534
1554
  /**
1535
1555
  * 请使用 useHtml
1536
1556
  * @deprecated
@@ -1538,6 +1558,9 @@ export namespace VxeTablePropTypes {
1538
1558
  useHTML?: VxeTooltipPropTypes.UseHTML
1539
1559
  }
1540
1560
  export interface HeaderTooltipConfig<D = VxeTablePropTypes.Row> extends Omit<TooltipConfig<D>, 'contentMethod'> {
1561
+ /**
1562
+ * 该方法可以通过返回值来重写默认的提示内容,可以返回 null 使用默认的提示内容,可以返回空内容去掉指定单元格的提示内容
1563
+ */
1541
1564
  contentMethod?(params: {
1542
1565
  $table: VxeTableConstructor<D>
1543
1566
  $rowIndex: number
@@ -1548,9 +1571,12 @@ export namespace VxeTablePropTypes {
1548
1571
  type: 'header'
1549
1572
  cell: HTMLElement
1550
1573
  $event: any
1551
- }): string | null | void
1574
+ }): string | boolean | null | void
1552
1575
  }
1553
1576
  export interface FooterTooltipConfig<D = VxeTablePropTypes.Row> extends Omit<TooltipConfig<D>, 'contentMethod'> {
1577
+ /**
1578
+ * 该方法可以通过返回值来重写默认的提示内容,可以返回 null 使用默认的提示内容,可以返回空内容去掉指定单元格的提示内容
1579
+ */
1554
1580
  contentMethod?(params: {
1555
1581
  $table: VxeTableConstructor<D>
1556
1582
  items: any[]
@@ -1564,7 +1590,7 @@ export namespace VxeTablePropTypes {
1564
1590
  type: 'footer'
1565
1591
  cell: HTMLElement
1566
1592
  $event: any
1567
- }): string | null | void
1593
+ }): string | boolean | null | void
1568
1594
  }
1569
1595
 
1570
1596
  /**