vxe-pc-ui 3.15.0 → 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 (71) hide show
  1. package/es/cascader/src/cascader.js +91 -10
  2. package/es/date-panel/src/util.js +12 -0
  3. package/es/date-picker/src/date-picker.js +81 -10
  4. package/es/date-range-picker/src/date-range-picker.js +20 -8
  5. package/es/form/render/index.js +28 -14
  6. package/es/form/style.css +4 -2
  7. package/es/form/style.min.css +1 -1
  8. package/es/number-input/src/number-input.js +2 -3
  9. package/es/splitter/src/splitter.js +6 -1
  10. package/es/style.css +1 -1
  11. package/es/style.min.css +1 -1
  12. package/es/tree-select/src/tree-select.js +14 -2
  13. package/es/ui/index.js +1 -1
  14. package/es/ui/src/log.js +1 -1
  15. package/es/vxe-form/style.css +4 -2
  16. package/es/vxe-form/style.min.css +1 -1
  17. package/lib/cascader/src/cascader.js +96 -12
  18. package/lib/cascader/src/cascader.min.js +1 -1
  19. package/lib/date-panel/src/util.js +13 -0
  20. package/lib/date-panel/src/util.min.js +1 -1
  21. package/lib/date-picker/src/date-picker.js +79 -9
  22. package/lib/date-picker/src/date-picker.min.js +1 -1
  23. package/lib/date-range-picker/src/date-range-picker.js +18 -8
  24. package/lib/date-range-picker/src/date-range-picker.min.js +1 -1
  25. package/lib/form/render/index.js +31 -14
  26. package/lib/form/render/index.min.js +1 -1
  27. package/lib/form/style/style.css +4 -2
  28. package/lib/form/style/style.min.css +1 -1
  29. package/lib/index.umd.js +264 -51
  30. package/lib/index.umd.min.js +1 -1
  31. package/lib/number-input/src/number-input.js +2 -3
  32. package/lib/splitter/src/splitter.js +6 -1
  33. package/lib/splitter/src/splitter.min.js +1 -1
  34. package/lib/style.css +1 -1
  35. package/lib/style.min.css +1 -1
  36. package/lib/tree-select/src/tree-select.js +18 -2
  37. package/lib/tree-select/src/tree-select.min.js +1 -1
  38. package/lib/ui/index.js +1 -1
  39. package/lib/ui/index.min.js +1 -1
  40. package/lib/ui/src/log.js +1 -1
  41. package/lib/ui/src/log.min.js +1 -1
  42. package/lib/vxe-form/style/style.css +4 -2
  43. package/lib/vxe-form/style/style.min.css +1 -1
  44. package/package.json +1 -1
  45. package/packages/cascader/src/cascader.ts +93 -10
  46. package/packages/date-panel/src/util.ts +13 -0
  47. package/packages/date-picker/src/date-picker.ts +82 -10
  48. package/packages/date-range-picker/src/date-range-picker.ts +18 -8
  49. package/packages/form/render/index.ts +28 -14
  50. package/packages/number-input/src/number-input.ts +2 -6
  51. package/packages/splitter/src/splitter.ts +6 -1
  52. package/packages/tree-select/src/tree-select.ts +14 -2
  53. package/styles/components/form.scss +4 -2
  54. package/types/components/cascader.d.ts +6 -2
  55. package/types/components/date-picker.d.ts +18 -0
  56. package/types/components/date-range-picker.d.ts +4 -0
  57. package/types/components/splitter.d.ts +1 -0
  58. package/types/components/table.d.ts +33 -4
  59. package/types/components/tree-select.d.ts +20 -1
  60. /package/es/icon/{iconfont.1781659223842.ttf → iconfont.1781753586592.ttf} +0 -0
  61. /package/es/icon/{iconfont.1781659223842.woff → iconfont.1781753586592.woff} +0 -0
  62. /package/es/icon/{iconfont.1781659223842.woff2 → iconfont.1781753586592.woff2} +0 -0
  63. /package/es/{iconfont.1781659223842.ttf → iconfont.1781753586592.ttf} +0 -0
  64. /package/es/{iconfont.1781659223842.woff → iconfont.1781753586592.woff} +0 -0
  65. /package/es/{iconfont.1781659223842.woff2 → iconfont.1781753586592.woff2} +0 -0
  66. /package/lib/icon/style/{iconfont.1781659223842.ttf → iconfont.1781753586592.ttf} +0 -0
  67. /package/lib/icon/style/{iconfont.1781659223842.woff → iconfont.1781753586592.woff} +0 -0
  68. /package/lib/icon/style/{iconfont.1781659223842.woff2 → iconfont.1781753586592.woff2} +0 -0
  69. /package/lib/{iconfont.1781659223842.ttf → iconfont.1781753586592.ttf} +0 -0
  70. /package/lib/{iconfont.1781659223842.woff → iconfont.1781753586592.woff} +0 -0
  71. /package/lib/{iconfont.1781659223842.woff2 → iconfont.1781753586592.woff2} +0 -0
@@ -5,7 +5,7 @@ import { getConfig, getIcon, getI18n, commands, createEvent, globalEvents, GLOBA
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'
@@ -84,6 +84,7 @@ export default /* define-vxe-component start */ defineVxeComponent({
84
84
  labelFormat: String as PropType<VxeDatePickerPropTypes.LabelFormat>,
85
85
  valueFormat: String as PropType<VxeDatePickerPropTypes.ValueFormat>,
86
86
  timeFormat: String as PropType<VxeDatePickerPropTypes.TimeFormat>,
87
+ inputFormat: String as PropType<VxeDatePickerPropTypes.InputFormat>,
87
88
  editable: {
88
89
  type: Boolean as PropType<VxeDatePickerPropTypes.Editable>,
89
90
  default: true
@@ -114,6 +115,7 @@ export default /* define-vxe-component start */ defineVxeComponent({
114
115
  type: Boolean as PropType<VxeDatePickerPropTypes.AutoClose>,
115
116
  default: () => getConfig().datePicker.autoClose
116
117
  },
118
+ controlConfig: Object as PropType<VxeDatePickerPropTypes.ControlConfig>,
117
119
 
118
120
  prefixIcon: String as PropType<VxeDatePickerPropTypes.PrefixIcon>,
119
121
  suffixIcon: String as PropType<VxeDatePickerPropTypes.SuffixIcon>,
@@ -171,7 +173,8 @@ export default /* define-vxe-component start */ defineVxeComponent({
171
173
  }
172
174
 
173
175
  const internalData: DatePickerInternalData = {
174
- hpTimeout: undefined
176
+ // hpTimeout: undefined,
177
+ parseInputKayMaps: {}
175
178
  }
176
179
 
177
180
  return {
@@ -336,6 +339,13 @@ export default /* define-vxe-component start */ defineVxeComponent({
336
339
  const { type, valueFormat } = props
337
340
  return handleValueFormat(type, valueFormat)
338
341
  },
342
+ computeDateInputFormat () {
343
+ const $xeDatePicker = this
344
+ const props = $xeDatePicker
345
+
346
+ const { type, inputFormat } = props
347
+ return handleInputFormat(type, inputFormat)
348
+ },
339
349
  computeFirstDayOfWeek () {
340
350
  const $xeDatePicker = this
341
351
  const props = $xeDatePicker
@@ -362,6 +372,12 @@ export default /* define-vxe-component start */ defineVxeComponent({
362
372
  })
363
373
  return dateObj.label
364
374
  }).join(', ')
375
+ },
376
+ computeControlOpts () {
377
+ const $xeDatePicker = this
378
+ const props = $xeDatePicker
379
+
380
+ return Object.assign({}, getConfig().datePicker.controlConfig, props.controlConfig)
365
381
  }
366
382
  },
367
383
  methods: {
@@ -474,6 +490,8 @@ export default /* define-vxe-component start */ defineVxeComponent({
474
490
  reactData.isActivated = true
475
491
  if (!trigger || trigger === 'default') {
476
492
  $xeDatePicker.datePickerOpenEvent(evnt)
493
+ } else if (trigger === 'icon') {
494
+ $xeDatePicker.hidePanel()
477
495
  }
478
496
  $xeDatePicker.triggerEvent(evnt)
479
497
  },
@@ -520,6 +538,36 @@ export default /* define-vxe-component start */ defineVxeComponent({
520
538
  $xeDatePicker.dispatchEvent('suffix-click', { value: inputValue }, evnt)
521
539
  }
522
540
  },
541
+ handleArrowInputDate (evnt: KeyboardEvent, isUpArrow: boolean) {
542
+ const $xeDatePicker = this
543
+ const props = $xeDatePicker
544
+ const reactData = $xeDatePicker.reactData
545
+ const internalData = $xeDatePicker.internalData
546
+
547
+ const { multiple } = props
548
+ if (multiple) {
549
+ return
550
+ }
551
+ const { inputValue } = reactData
552
+ if (!inputValue) {
553
+ return
554
+ }
555
+ const targetElem = $xeDatePicker.$refs.refInputTarget as HTMLInputElement
556
+ if (!targetElem) {
557
+ return
558
+ }
559
+ const { parseInputKayMaps } = internalData
560
+ const inputFormat = $xeDatePicker.computeDateInputFormat
561
+ const selectionStart = targetElem.selectionStart || 0
562
+ let selectKey = inputFormat[selectionStart]
563
+ if (!parseInputKayMaps[selectKey]) {
564
+ selectKey = inputFormat[selectionStart - 1]
565
+ }
566
+ const inputPaesrFn = parseInputKayMaps[selectKey]
567
+ if (inputPaesrFn) {
568
+ inputPaesrFn(evnt, targetElem, isUpArrow)
569
+ }
570
+ },
523
571
  blurEvent (evnt: Event & { type: 'blur' }) {
524
572
  const $xeDatePicker = this
525
573
  const reactData = $xeDatePicker.reactData
@@ -548,7 +596,15 @@ export default /* define-vxe-component start */ defineVxeComponent({
548
596
  },
549
597
  keydownEvent (evnt: KeyboardEvent & { type: 'keydown' }) {
550
598
  const $xeDatePicker = this
599
+ const props = $xeDatePicker
551
600
 
601
+ const { controlConfig } = props
602
+ const controlOpts = $xeDatePicker.computeControlOpts
603
+ const isUpArrow = globalEvents.hasKey(evnt, GLOBAL_EVENT_KEYS.ARROW_UP)
604
+ const isDwArrow = globalEvents.hasKey(evnt, GLOBAL_EVENT_KEYS.ARROW_DOWN)
605
+ if ((isUpArrow || isDwArrow) && controlOpts.isArrow && (controlConfig || controlOpts.enabled)) {
606
+ $xeDatePicker.handleArrowInputDate(evnt, isUpArrow)
607
+ }
552
608
  $xeDatePicker.triggerEvent(evnt)
553
609
  },
554
610
  keyupEvent (evnt: KeyboardEvent & { type: 'keyup' }) {
@@ -702,6 +758,9 @@ export default /* define-vxe-component start */ defineVxeComponent({
702
758
  const { panelIndex } = reactData
703
759
  const targetElem = $xeDatePicker.$refs.refInputTarget as HTMLInputElement
704
760
  const panelElem = $xeDatePicker.$refs.refInputPanel as HTMLDivElement
761
+ if (!panelElem) {
762
+ return $xeDatePicker.$nextTick()
763
+ }
705
764
  const btnTransfer = $xeDatePicker.computeBtnTransfer
706
765
  const popupOpts = $xeDatePicker.computePopupOpts
707
766
  const handleStyle = () => {
@@ -729,13 +788,9 @@ export default /* define-vxe-component start */ defineVxeComponent({
729
788
  const btnTransfer = $xeDatePicker.computeBtnTransfer
730
789
  const panelElem = $xeDatePicker.$refs.refInputPanel as HTMLElement
731
790
  if (!isDisabled && !visiblePanel) {
732
- if (!reactData.initialized) {
791
+ if (!reactData.initialized && btnTransfer && panelElem) {
733
792
  reactData.initialized = true
734
- if (btnTransfer) {
735
- if (panelElem) {
736
- document.body.appendChild(panelElem)
737
- }
738
- }
793
+ document.body.appendChild(panelElem)
739
794
  }
740
795
  if (internalData.hpTimeout) {
741
796
  clearTimeout(internalData.hpTimeout)
@@ -763,11 +818,17 @@ export default /* define-vxe-component start */ defineVxeComponent({
763
818
  },
764
819
  clickIconEvent (evnt: MouseEvent) {
765
820
  const $xeDatePicker = this
821
+ const reactData = $xeDatePicker.reactData
766
822
 
823
+ const { visiblePanel } = reactData
767
824
  const popupOpts = $xeDatePicker.computePopupOpts
768
825
  const { trigger } = popupOpts
769
826
  if (!trigger || trigger === 'default' || trigger === 'icon') {
770
- $xeDatePicker.datePickerOpenEvent(evnt)
827
+ if (visiblePanel) {
828
+ $xeDatePicker.hidePanel()
829
+ } else {
830
+ $xeDatePicker.datePickerOpenEvent(evnt)
831
+ }
771
832
  }
772
833
  },
773
834
  clickEvent (evnt: Event & { type: 'click' }) {
@@ -906,6 +967,10 @@ export default /* define-vxe-component start */ defineVxeComponent({
906
967
  const slots = $xeDatePicker.$scopedSlots
907
968
  const reactData = $xeDatePicker.reactData
908
969
 
970
+ const popupOpts = $xeDatePicker.computePopupOpts
971
+ if (popupOpts.enabled === false) {
972
+ return renderEmptyElement($xeDatePicker)
973
+ }
909
974
  const { type, multiple, showClearButton, showConfirmButton } = props
910
975
  const { initialized, isAniVisible, visiblePanel, panelPlacement, panelStyle, inputValue } = reactData
911
976
  const vSize = $xeDatePicker.computeSize
@@ -915,7 +980,6 @@ export default /* define-vxe-component start */ defineVxeComponent({
915
980
  const isDateTimeType = $xeDatePicker.computeIsDateTimeType
916
981
  const shortcutList = $xeDatePicker.computeShortcutList
917
982
  const timeOpts = $xeDatePicker.computeTimeOpts
918
- const popupOpts = $xeDatePicker.computePopupOpts
919
983
  const { position } = shortcutOpts
920
984
  const headerSlot = slots.header
921
985
  const footerSlot = slots.footer
@@ -1230,7 +1294,15 @@ export default /* define-vxe-component start */ defineVxeComponent({
1230
1294
  },
1231
1295
  created () {
1232
1296
  const $xeDatePicker = this
1297
+ const internalData = $xeDatePicker.internalData
1233
1298
 
1299
+ const { parseInputKayMaps } = internalData
1300
+ const inputKeys = ['y', 'M', 'd', 'H', 'm', 'n']
1301
+ inputKeys.forEach(key => {
1302
+ parseInputKayMaps[key] = (evnt: KeyboardEvent) => {
1303
+ evnt.preventDefault()
1304
+ }
1305
+ })
1234
1306
  $xeDatePicker.updateModelValue()
1235
1307
  globalEvents.on($xeDatePicker, 'mousewheel', $xeDatePicker.handleGlobalMousewheelEvent)
1236
1308
  globalEvents.on($xeDatePicker, 'mousedown', $xeDatePicker.handleGlobalMousedownEvent)
@@ -591,6 +591,8 @@ export default /* define-vxe-component start */ defineVxeComponent({
591
591
  reactData.isActivated = true
592
592
  if (!trigger || trigger === 'default') {
593
593
  $xeDateRangePicker.dateRangePickerOpenEvent(evnt)
594
+ } else if (trigger === 'icon') {
595
+ $xeDateRangePicker.hidePanel()
594
596
  }
595
597
  $xeDateRangePicker.triggerEvent(evnt)
596
598
  },
@@ -966,6 +968,9 @@ export default /* define-vxe-component start */ defineVxeComponent({
966
968
  const { panelIndex } = reactData
967
969
  const targetElem = $xeDateRangePicker.$refs.refInputTarget as HTMLInputElement
968
970
  const panelElem = $xeDateRangePicker.$refs.refInputPanel as HTMLDivElement
971
+ if (!panelElem) {
972
+ return $xeDateRangePicker.$nextTick()
973
+ }
969
974
  const btnTransfer = $xeDateRangePicker.computeBtnTransfer
970
975
  const popupOpts = $xeDateRangePicker.computePopupOpts
971
976
  const handleStyle = () => {
@@ -993,13 +998,9 @@ export default /* define-vxe-component start */ defineVxeComponent({
993
998
  const btnTransfer = $xeDateRangePicker.computeBtnTransfer
994
999
  const panelElem = $xeDateRangePicker.$refs.refInputPanel as HTMLElement
995
1000
  if (!isDisabled && !visiblePanel) {
996
- if (!reactData.initialized) {
1001
+ if (!reactData.initialized && btnTransfer && panelElem) {
997
1002
  reactData.initialized = true
998
- if (btnTransfer) {
999
- if (panelElem) {
1000
- document.body.appendChild(panelElem)
1001
- }
1002
- }
1003
+ document.body.appendChild(panelElem)
1003
1004
  }
1004
1005
  if (internalData.hpTimeout) {
1005
1006
  clearTimeout(internalData.hpTimeout)
@@ -1028,11 +1029,17 @@ export default /* define-vxe-component start */ defineVxeComponent({
1028
1029
  },
1029
1030
  clickIconEvent (evnt: MouseEvent) {
1030
1031
  const $xeDateRangePicker = this
1032
+ const reactData = $xeDateRangePicker.reactData
1031
1033
 
1034
+ const { visiblePanel } = reactData
1032
1035
  const popupOpts = $xeDateRangePicker.computePopupOpts
1033
1036
  const { trigger } = popupOpts
1034
1037
  if (!trigger || trigger === 'default' || trigger === 'icon') {
1035
- $xeDateRangePicker.dateRangePickerOpenEvent(evnt)
1038
+ if (visiblePanel) {
1039
+ $xeDateRangePicker.hidePanel()
1040
+ } else {
1041
+ $xeDateRangePicker.dateRangePickerOpenEvent(evnt)
1042
+ }
1036
1043
  }
1037
1044
  },
1038
1045
  clickEvent (evnt: Event & { type: 'click' }) {
@@ -1182,6 +1189,10 @@ export default /* define-vxe-component start */ defineVxeComponent({
1182
1189
  const slots = $xeDateRangePicker.$scopedSlots
1183
1190
  const reactData = $xeDateRangePicker.reactData
1184
1191
 
1192
+ const popupOpts = $xeDateRangePicker.computePopupOpts
1193
+ if (popupOpts.enabled === false) {
1194
+ return renderEmptyElement($xeDateRangePicker)
1195
+ }
1185
1196
  const { type, separator, autoClose, showConfirmButton, showClearButton } = props
1186
1197
  const { initialized, isAniVisible, visiblePanel, panelPlacement, panelStyle, startValue, endValue } = reactData
1187
1198
  const vSize = $xeDateRangePicker.computeSize
@@ -1194,7 +1205,6 @@ export default /* define-vxe-component start */ defineVxeComponent({
1194
1205
  const defaultDates = $xeDateRangePicker.computeDefaultDates
1195
1206
  const defaultTimes = $xeDateRangePicker.computeDefaultTimes
1196
1207
  const timeOpts = $xeDateRangePicker.computeTimeOpts
1197
- const popupOpts = $xeDateRangePicker.computePopupOpts
1198
1208
  const { startLabel, endLabel } = panelLabelObj
1199
1209
  const { position } = shortcutOpts
1200
1210
  const headerSlot = slots.header
@@ -344,15 +344,15 @@ function oldFormItemRadioAndCheckboxRender (h: CreateElement, renderOpts: VxeGlo
344
344
  */
345
345
  renderer.mixin({
346
346
  input: {
347
- formItemAutoFocus: 'input',
347
+ formItemAutoFocus: true,
348
348
  renderFormItemContent: nativeItemRender
349
349
  },
350
350
  textarea: {
351
- formItemAutoFocus: 'textarea',
351
+ formItemAutoFocus: true,
352
352
  renderFormItemContent: nativeItemRender
353
353
  },
354
354
  select: {
355
- formItemAutoFocus: 'input',
355
+ formItemAutoFocus: true,
356
356
  renderFormItemContent (h: CreateElement, renderOpts: VxeGlobalRendererHandles.RenderFormItemContentOptions, params: VxeGlobalRendererHandles.RenderFormItemContentParams) {
357
357
  return [
358
358
  h('select', {
@@ -367,27 +367,27 @@ renderer.mixin({
367
367
  }
368
368
  },
369
369
  VxeInput: {
370
- formItemAutoFocus: 'input',
370
+ formItemAutoFocus: true,
371
371
  renderFormItemContent: defaultItemRender
372
372
  },
373
373
  VxeNumberInput: {
374
- formItemAutoFocus: 'input',
374
+ formItemAutoFocus: true,
375
375
  renderFormItemContent: defaultItemRender
376
376
  },
377
377
  VxePasswordInput: {
378
- formItemAutoFocus: 'input',
378
+ formItemAutoFocus: true,
379
379
  renderFormItemContent: defaultItemRender
380
380
  },
381
381
  VxeTextarea: {
382
- formItemAutoFocus: 'textarea',
382
+ formItemAutoFocus: true,
383
383
  renderFormItemContent: defaultItemRender
384
384
  },
385
385
  VxeDatePicker: {
386
- formItemAutoFocus: 'input',
386
+ formItemAutoFocus: true,
387
387
  renderFormItemContent: defaultItemRender
388
388
  },
389
389
  VxeDateRangePicker: {
390
- formItemAutoFocus: 'input',
390
+ formItemAutoFocus: true,
391
391
  renderFormItemContent (h, renderOpts, params) {
392
392
  const { startField, endField } = renderOpts
393
393
  const { $form, data, field } = params
@@ -449,7 +449,7 @@ renderer.mixin({
449
449
  }
450
450
  },
451
451
  VxeSelect: {
452
- formItemAutoFocus: 'input',
452
+ formItemAutoFocus: true,
453
453
  renderFormItemContent (h: CreateElement, renderOpts, params) {
454
454
  const { data, field } = params
455
455
  const { options, optionProps, optionGroups, optionGroupProps } = renderOpts
@@ -463,7 +463,21 @@ renderer.mixin({
463
463
  }
464
464
  },
465
465
  VxeTreeSelect: {
466
- formItemAutoFocus: 'input',
466
+ formItemAutoFocus: true,
467
+ renderFormItemContent (h: CreateElement, renderOpts: VxeGlobalRendererHandles.RenderFormItemContentOptions, params: VxeGlobalRendererHandles.RenderFormItemContentParams) {
468
+ const { data, field } = params
469
+ const { options, optionProps } = renderOpts
470
+ const itemValue = XEUtils.get(data, field)
471
+ return [
472
+ h(getDefaultComponent(renderOpts), {
473
+ props: getComponentFormItemProps(renderOpts, params, itemValue, { options, optionProps }),
474
+ on: getItemOns(renderOpts, params)
475
+ })
476
+ ]
477
+ }
478
+ },
479
+ VxeCascader: {
480
+ formItemAutoFocus: true,
467
481
  renderFormItemContent (h: CreateElement, renderOpts: VxeGlobalRendererHandles.RenderFormItemContentOptions, params: VxeGlobalRendererHandles.RenderFormItemContentParams) {
468
482
  const { data, field } = params
469
483
  const { options, optionProps } = renderOpts
@@ -477,7 +491,7 @@ renderer.mixin({
477
491
  }
478
492
  },
479
493
  VxeTableSelect: {
480
- formItemAutoFocus: 'input',
494
+ formItemAutoFocus: true,
481
495
  renderFormItemContent (h: CreateElement, renderOpts: VxeGlobalRendererHandles.RenderFormItemContentOptions, params: VxeGlobalRendererHandles.RenderFormItemContentParams) {
482
496
  const { data, field } = params
483
497
  const { options, optionProps } = renderOpts
@@ -491,7 +505,7 @@ renderer.mixin({
491
505
  }
492
506
  },
493
507
  VxeColorPicker: {
494
- formItemAutoFocus: 'input',
508
+ formItemAutoFocus: true,
495
509
  renderFormItemContent (h: CreateElement, renderOpts: VxeGlobalRendererHandles.RenderFormItemContentOptions, params: VxeGlobalRendererHandles.RenderFormItemContentParams) {
496
510
  const { data, field } = params
497
511
  const { options } = renderOpts
@@ -505,7 +519,7 @@ renderer.mixin({
505
519
  }
506
520
  },
507
521
  VxeIconPicker: {
508
- formItemAutoFocus: 'input',
522
+ formItemAutoFocus: true,
509
523
  renderFormItemContent (h: CreateElement, renderOpts: VxeGlobalRendererHandles.RenderFormItemContentOptions, params: VxeGlobalRendererHandles.RenderFormItemContentParams) {
510
524
  const { data, field } = params
511
525
  const { options } = renderOpts
@@ -64,8 +64,6 @@ export default /* define-vxe-component start */ defineVxeComponent({
64
64
  type: String as PropType<VxeNumberInputPropTypes.Size>,
65
65
  default: () => getConfig().numberInput.size || getConfig().size
66
66
  },
67
-
68
- // number、integer、float
69
67
  min: {
70
68
  type: [String, Number] as PropType<VxeNumberInputPropTypes.Min>,
71
69
  default: null
@@ -88,13 +86,12 @@ export default /* define-vxe-component start */ defineVxeComponent({
88
86
  default: () => getConfig().numberInput.currencySymbol
89
87
  },
90
88
  controlConfig: Object as PropType<VxeNumberInputPropTypes.ControlConfig>,
91
-
92
- // float
89
+ // number、float、amount
93
90
  roundingMode: {
94
91
  type: String as PropType<VxeNumberInputPropTypes.RoundingMode>,
95
92
  default: () => getConfig().numberInput.roundingMode
96
93
  },
97
- // float
94
+ // float、amount
98
95
  digits: {
99
96
  type: [String, Number] as PropType<VxeNumberInputPropTypes.Digits>,
100
97
  default: null
@@ -107,7 +104,6 @@ export default /* define-vxe-component start */ defineVxeComponent({
107
104
  type: Boolean as PropType<VxeNumberInputPropTypes.Editable>,
108
105
  default: true
109
106
  },
110
-
111
107
  plusIcon: String as PropType<VxeNumberInputPropTypes.PlusIcon>,
112
108
  minusIcon: String as PropType<VxeNumberInputPropTypes.MinusIcon>,
113
109
  prefixIcon: String as PropType<VxeNumberInputPropTypes.PrefixIcon>,
@@ -49,7 +49,8 @@ export default /* define-vxe-component start */ defineVxeComponent({
49
49
  staticItems: [],
50
50
  itemList: [],
51
51
  barWidth: 0,
52
- barHeight: 0
52
+ barHeight: 0,
53
+ resizeFlag: 0
53
54
  }
54
55
  const internalData: SplitterInternalData = {
55
56
  wrapperWidth: 0,
@@ -596,6 +597,7 @@ export default /* define-vxe-component start */ defineVxeComponent({
596
597
  document.onmousemove = (evnt) => {
597
598
  evnt.preventDefault()
598
599
  handleDrag(evnt)
600
+ reactData.resizeFlag++
599
601
  }
600
602
  document.onmouseup = (evnt) => {
601
603
  document.onmousemove = null
@@ -607,6 +609,7 @@ export default /* define-vxe-component start */ defineVxeComponent({
607
609
  removeClass(el, 'is--drag')
608
610
  $xeSplitter.dispatchEvent('resize-end', { prevItem, nextItem, offsetHeight: targetOffsetHeight, offsetWidth: targetOffsetWidth }, evnt)
609
611
  $xeSplitter.recalculate()
612
+ reactData.resizeFlag++
610
613
  }
611
614
 
612
615
  if (rsSplitterLineEl) {
@@ -620,6 +623,7 @@ export default /* define-vxe-component start */ defineVxeComponent({
620
623
  handleItemActionEvent (evnt: MouseEvent | null, prevItem: VxeSplitterDefines.PaneConfig, nextItem: VxeSplitterDefines.PaneConfig, isNext: boolean) {
621
624
  const $xeSplitter = this
622
625
  const props = $xeSplitter
626
+ const reactData = $xeSplitter.reactData
623
627
 
624
628
  const { vertical } = props
625
629
  let expanded = false
@@ -659,6 +663,7 @@ export default /* define-vxe-component start */ defineVxeComponent({
659
663
  $xeSplitter.dispatchEvent('toggle-expand', { prevItem, nextItem, expanded, item }, evnt)
660
664
  }
661
665
  $xeSplitter.recalculate()
666
+ reactData.resizeFlag++
662
667
  },
663
668
  handlePrevActionDblclickEvent (evnt: MouseEvent) {
664
669
  const $xeSplitter = this
@@ -105,6 +105,14 @@ export default /* define-vxe-component start */ defineVxeComponent({
105
105
  },
106
106
  remote: Boolean as PropType<VxeTreeSelectPropTypes.Remote>,
107
107
  remoteConfig: Function as PropType<VxeTreeSelectPropTypes.RemoteConfig>,
108
+ showRadio: {
109
+ type: Boolean as PropType<VxeTreeSelectPropTypes.ShowRadio>,
110
+ default: () => getConfig().treeSelect.showRadio
111
+ },
112
+ showCheckbox: {
113
+ type: Boolean as PropType<VxeTreeSelectPropTypes.ShowCheckbox>,
114
+ default: () => getConfig().treeSelect.showCheckbox
115
+ },
108
116
  popupConfig: Object as PropType<VxeTreeSelectPropTypes.PopupConfig>,
109
117
  treeConfig: Object as PropType<VxeTreeSelectPropTypes.TreeConfig>,
110
118
  menuConfig: Object as PropType<VxeTreeSelectPropTypes.MenuConfig>,
@@ -277,20 +285,24 @@ export default /* define-vxe-component start */ defineVxeComponent({
277
285
  },
278
286
  computeTreeCheckboxOpts () {
279
287
  const $xeTreeSelect = this
288
+ const props = $xeTreeSelect
280
289
 
290
+ const { showCheckbox } = props
281
291
  const treeOpts = $xeTreeSelect.computeTreeOpts as VxeTreeSelectPropTypes.TreeConfig
282
292
  return Object.assign({
283
- showIcon: !!treeOpts.showCheckbox
293
+ showIcon: XEUtils.isBoolean(showCheckbox) ? showCheckbox : !!treeOpts.showCheckbox
284
294
  }, treeOpts.checkboxConfig, {
285
295
  trigger: 'node'
286
296
  })
287
297
  },
288
298
  computeTreeRadioOpts () {
289
299
  const $xeTreeSelect = this
300
+ const props = $xeTreeSelect
290
301
 
302
+ const { showRadio } = props
291
303
  const treeOpts = $xeTreeSelect.computeTreeOpts as VxeTreeSelectPropTypes.TreeConfig
292
304
  return Object.assign({
293
- showIcon: !!treeOpts.showRadio
305
+ showIcon: XEUtils.isBoolean(showRadio) ? showRadio : !!treeOpts.showRadio
294
306
  }, treeOpts.radioConfig, {
295
307
  trigger: 'node'
296
308
  })
@@ -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,4 +1,5 @@
1
1
  import { DefineVxeComponentApp, DefineVxeComponentOptions, DefineVxeComponentInstance, VxeComponentEventParams, VxeComponentSizeType, ValueOf } from '@vxe-ui/core'
2
+ import { VxeListPropTypes } from './list'
2
3
 
3
4
  /* eslint-disable @typescript-eslint/no-empty-interface,no-use-before-define,@typescript-eslint/ban-types */
4
5
 
@@ -79,6 +80,7 @@ export namespace VxeCascaderPropTypes {
79
80
  disabled?: string
80
81
  }
81
82
  export type Remote = boolean
83
+ export type ShowRadio = boolean
82
84
  export interface RadioConfig<D = any> {
83
85
  strict?: boolean
84
86
  visibleMode?: 'all' | 'first' | 'last' | '' | null
@@ -91,9 +93,9 @@ export namespace VxeCascaderPropTypes {
91
93
  $cascader: VxeCascaderConstructor
92
94
  node: D
93
95
  }) => boolean
94
- showIcon?: boolean
95
96
  trigger?: '' | 'default' | 'node'
96
97
  }
98
+ export type ShowCheckbox = boolean
97
99
  export interface CheckboxConfig<D = any> {
98
100
  checkStrictly?: boolean
99
101
  visibleMode?: 'all' | 'first' | 'last' | '' | null
@@ -106,7 +108,6 @@ export namespace VxeCascaderPropTypes {
106
108
  $cascader: VxeCascaderConstructor
107
109
  node: D
108
110
  }) => boolean
109
- showIcon?: boolean
110
111
  trigger?: '' | 'default' | 'node'
111
112
  }
112
113
  export interface RemoteConfig {
@@ -196,7 +197,9 @@ export interface VxeCascaderProps<D = any> {
196
197
  options?: VxeCascaderPropTypes.Options<D>
197
198
  optionProps?: VxeCascaderPropTypes.OptionProps
198
199
  remote?: VxeCascaderPropTypes.Remote
200
+ showRadio?: VxeCascaderPropTypes.ShowRadio
199
201
  radioConfig?: VxeCascaderPropTypes.RadioConfig
202
+ showCheckbox?: VxeCascaderPropTypes.ShowCheckbox
200
203
  checkboxConfig?: VxeCascaderPropTypes.CheckboxConfig
201
204
  remoteConfig?: VxeCascaderPropTypes.RemoteConfig
202
205
  popupConfig?: VxeCascaderPropTypes.PopupConfig
@@ -231,6 +234,7 @@ export interface CascaderReactData {
231
234
 
232
235
  export interface CascaderInternalData {
233
236
  hpTimeout?: undefined | number
237
+ listVirtualYOpts: VxeListPropTypes.VirtualYConfig
234
238
  afterTreeList: any[]
235
239
  treeFullData: any[]
236
240
  afterVisibleList: any[]
@@ -49,12 +49,23 @@ export namespace VxeDatePickerPropTypes {
49
49
  export type LabelFormat = string
50
50
  export type ValueFormat = string
51
51
  export type TimeFormat = string
52
+ export type InputFormat = string
52
53
  export type Editable = boolean
53
54
  export type FestivalMethod = VxeDatePanelPropTypes.FestivalMethod
54
55
  export type DisabledMethod = VxeDatePanelPropTypes.DisabledMethod
55
56
  export type AutoClose = boolean
56
57
  export type PrefixIcon = string
57
58
  export type SuffixIcon = string
59
+ export interface ControlConfig {
60
+ /**
61
+ * 是否启用,支持局部/全局启用
62
+ */
63
+ enabled?: boolean
64
+ /**
65
+ * 只对 enabled 启用后有效,是否启用方向键操作
66
+ */
67
+ isArrow?: boolean
68
+ }
58
69
  /**
59
70
  * 已废弃,请使用 PopupConfig.placement
60
71
  * @deprecated
@@ -71,6 +82,10 @@ export namespace VxeDatePickerPropTypes {
71
82
  export interface TimeConfig extends VxeDatePanelPropTypes.TimeConfig {}
72
83
 
73
84
  export interface PopupConfig {
85
+ /**
86
+ * 是否启用,支持局部/全局启用
87
+ */
88
+ enabled?: boolean
74
89
  /**
75
90
  * 设置弹出面板方向
76
91
  */
@@ -134,6 +149,7 @@ export interface VxeDatePickerProps {
134
149
  labelFormat?: VxeDatePickerPropTypes.LabelFormat
135
150
  valueFormat?: VxeDatePickerPropTypes.ValueFormat
136
151
  timeFormat?: VxeDatePickerPropTypes.TimeFormat
152
+ inputFormat?: VxeDatePickerPropTypes.InputFormat
137
153
  editable?: VxeDatePickerPropTypes.Editable
138
154
  festivalMethod?: VxeDatePickerPropTypes.FestivalMethod
139
155
  disabledMethod?: VxeDatePickerPropTypes.DisabledMethod
@@ -146,6 +162,7 @@ export interface VxeDatePickerProps {
146
162
  * 只对 type=date,week,month,quarter,year 有效,选择完日期后自动关闭
147
163
  */
148
164
  autoClose?: VxeDatePickerPropTypes.AutoClose
165
+ controlConfig?: VxeDatePickerPropTypes.ControlConfig
149
166
 
150
167
  /**
151
168
  * 只对 type=week 有效,选中日期后指定为一周的哪一天
@@ -187,6 +204,7 @@ export interface DatePickerReactData {
187
204
 
188
205
  export interface DatePickerInternalData {
189
206
  hpTimeout?: undefined | number
207
+ parseInputKayMaps: Record<string, (evnt: KeyboardEvent, targetElem: HTMLInputElement, isUpArrow: boolean) => void>
190
208
  }
191
209
 
192
210
  export interface DatePickerMethods {
@@ -76,6 +76,10 @@ export namespace VxeDateRangePickerPropTypes {
76
76
  export interface TimeConfig extends VxeDatePanelPropTypes.TimeConfig {}
77
77
 
78
78
  export interface PopupConfig {
79
+ /**
80
+ * 是否启用,支持局部/全局启用
81
+ */
82
+ enabled?: boolean
79
83
  /**
80
84
  * 设置弹出面板方向
81
85
  */
@@ -139,6 +139,7 @@ export interface SplitterReactData {
139
139
  itemList: VxeSplitterDefines.PaneConfig[]
140
140
  barWidth: number
141
141
  barHeight: number
142
+ resizeFlag: number
142
143
  }
143
144
 
144
145
  export interface SplitterInternalData {