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.
- package/dist/all.esm.js +220 -37
- package/dist/style.css +1 -1
- package/dist/style.min.css +1 -1
- package/es/cascader/src/cascader.js +76 -10
- package/es/date-panel/src/util.js +12 -0
- package/es/date-picker/src/date-picker.js +71 -5
- package/es/date-range-picker/src/date-range-picker.js +17 -2
- package/es/form/render/index.js +25 -14
- package/es/form/style.css +4 -2
- package/es/form/style.min.css +1 -1
- package/es/number-input/src/number-input.js +2 -3
- package/es/splitter/src/splitter.js +5 -1
- package/es/style.css +1 -1
- package/es/style.min.css +1 -1
- package/es/tree-select/src/tree-select.js +12 -2
- package/es/ui/index.js +1 -1
- package/es/ui/src/log.js +1 -1
- package/es/vxe-form/style.css +4 -2
- package/es/vxe-form/style.min.css +1 -1
- package/lib/cascader/src/cascader.js +89 -10
- package/lib/cascader/src/cascader.min.js +1 -1
- package/lib/date-panel/src/util.js +13 -0
- package/lib/date-panel/src/util.min.js +1 -1
- package/lib/date-picker/src/date-picker.js +82 -3
- package/lib/date-picker/src/date-picker.min.js +1 -1
- package/lib/date-range-picker/src/date-range-picker.js +17 -2
- package/lib/date-range-picker/src/date-range-picker.min.js +1 -1
- package/lib/form/render/index.js +32 -14
- package/lib/form/render/index.min.js +1 -1
- package/lib/form/style/style.css +4 -2
- package/lib/form/style/style.min.css +1 -1
- package/lib/index.umd.js +260 -37
- package/lib/index.umd.min.js +1 -1
- package/lib/number-input/src/number-input.js +2 -3
- package/lib/splitter/src/splitter.js +5 -1
- package/lib/splitter/src/splitter.min.js +1 -1
- package/lib/style.css +1 -1
- package/lib/style.min.css +1 -1
- package/lib/tree-select/src/tree-select.js +16 -2
- package/lib/tree-select/src/tree-select.min.js +1 -1
- package/lib/ui/index.js +1 -1
- package/lib/ui/index.min.js +1 -1
- package/lib/ui/src/log.js +1 -1
- package/lib/ui/src/log.min.js +1 -1
- package/lib/vxe-form/style/style.css +4 -2
- package/lib/vxe-form/style/style.min.css +1 -1
- package/package.json +1 -1
- package/packages/cascader/src/cascader.ts +78 -10
- package/packages/date-panel/src/util.ts +13 -0
- package/packages/date-picker/src/date-picker.ts +73 -5
- package/packages/date-range-picker/src/date-range-picker.ts +15 -2
- package/packages/form/render/index.ts +28 -14
- package/packages/number-input/src/number-input.ts +2 -6
- package/packages/splitter/src/splitter.ts +5 -1
- package/packages/tree-select/src/tree-select.ts +12 -2
- package/styles/components/form.scss +4 -2
- package/types/components/cascader.d.ts +6 -2
- package/types/components/date-picker.d.ts +18 -0
- package/types/components/date-range-picker.d.ts +4 -0
- package/types/components/splitter.d.ts +1 -0
- package/types/components/table.d.ts +29 -3
- package/types/components/tree-select.d.ts +19 -1
- /package/es/icon/{iconfont.1781659237913.ttf → iconfont.1781753592499.ttf} +0 -0
- /package/es/icon/{iconfont.1781659237913.woff → iconfont.1781753592499.woff} +0 -0
- /package/es/icon/{iconfont.1781659237913.woff2 → iconfont.1781753592499.woff2} +0 -0
- /package/es/{iconfont.1781659237913.ttf → iconfont.1781753592499.ttf} +0 -0
- /package/es/{iconfont.1781659237913.woff → iconfont.1781753592499.woff} +0 -0
- /package/es/{iconfont.1781659237913.woff2 → iconfont.1781753592499.woff2} +0 -0
- /package/lib/icon/style/{iconfont.1781659237913.ttf → iconfont.1781753592499.ttf} +0 -0
- /package/lib/icon/style/{iconfont.1781659237913.woff → iconfont.1781753592499.woff} +0 -0
- /package/lib/icon/style/{iconfont.1781659237913.woff2 → iconfont.1781753592499.woff2} +0 -0
- /package/lib/{iconfont.1781659237913.ttf → iconfont.1781753592499.ttf} +0 -0
- /package/lib/{iconfont.1781659237913.woff → iconfont.1781753592499.woff} +0 -0
- /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
|
-
|
|
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
|
-
|
|
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:
|
|
337
|
+
formItemAutoFocus: true,
|
|
338
338
|
renderFormItemContent: nativeItemRender
|
|
339
339
|
},
|
|
340
340
|
textarea: {
|
|
341
|
-
formItemAutoFocus:
|
|
341
|
+
formItemAutoFocus: true,
|
|
342
342
|
renderFormItemContent: nativeItemRender
|
|
343
343
|
},
|
|
344
344
|
select: {
|
|
345
|
-
formItemAutoFocus:
|
|
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:
|
|
358
|
+
formItemAutoFocus: true,
|
|
359
359
|
renderFormItemContent: defaultItemRender
|
|
360
360
|
},
|
|
361
361
|
VxeNumberInput: {
|
|
362
|
-
formItemAutoFocus:
|
|
362
|
+
formItemAutoFocus: true,
|
|
363
363
|
renderFormItemContent: defaultItemRender
|
|
364
364
|
},
|
|
365
365
|
VxePasswordInput: {
|
|
366
|
-
formItemAutoFocus:
|
|
366
|
+
formItemAutoFocus: true,
|
|
367
367
|
renderFormItemContent: defaultItemRender
|
|
368
368
|
},
|
|
369
369
|
VxeTextarea: {
|
|
370
|
-
formItemAutoFocus:
|
|
370
|
+
formItemAutoFocus: true,
|
|
371
371
|
renderFormItemContent: defaultItemRender
|
|
372
372
|
},
|
|
373
373
|
VxeDatePicker: {
|
|
374
|
-
formItemAutoFocus:
|
|
374
|
+
formItemAutoFocus: true,
|
|
375
375
|
renderFormItemContent: defaultItemRender
|
|
376
376
|
},
|
|
377
377
|
VxeDateRangePicker: {
|
|
378
|
-
formItemAutoFocus:
|
|
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:
|
|
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:
|
|
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:
|
|
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:
|
|
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:
|
|
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 {
|
|
@@ -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
|
/**
|