vxe-pc-ui 4.1.19 → 4.1.21
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/README.md +83 -2
- package/es/anchor/src/anchor-link.js +1 -1
- package/es/anchor/src/anchor.js +1 -1
- package/es/breadcrumb/src/breadcrumb.js +1 -1
- package/es/button/src/button-group.js +4 -1
- package/es/button/src/button.js +2 -1
- package/es/calendar/src/calendar.js +64 -32
- package/es/card/src/card.js +4 -3
- package/es/carousel/src/carousel-item.js +13 -3
- package/es/carousel/src/carousel.js +16 -8
- package/es/checkbox/src/checkbox.js +30 -14
- package/es/checkbox/src/group.js +17 -8
- package/es/collapse-pane/index.js +1 -1
- package/es/countdown/src/countdown.js +17 -8
- package/es/date-picker/src/date-picker.js +148 -69
- package/es/drawer/src/drawer.js +86 -46
- package/es/form/render/index.js +1 -2
- package/es/form/src/form-config-item.js +4 -3
- package/es/form/src/form-gather.js +5 -3
- package/es/form/src/form-item.js +15 -10
- package/es/form/src/form.js +11 -8
- package/es/form/src/render.js +2 -1
- package/es/form/src/util.js +2 -1
- package/es/icon/src/icon.js +3 -0
- package/es/icon/style.css +1 -1
- package/es/icon-picker/src/icon-picker.js +24 -11
- package/es/image/src/group.js +4 -1
- package/es/image/src/preview.js +1 -1
- package/es/input/src/input.js +131 -66
- package/es/layout-aside/src/layout-aside.js +1 -1
- package/es/list/src/list.js +7 -5
- package/es/list-design/src/list-design.js +1 -1
- package/es/list-design/src/list-view.js +1 -1
- package/es/loading/src/loading.js +4 -1
- package/es/menu/src/menu.js +4 -3
- package/es/number-input/src/number-input.js +100 -77
- package/es/pager/src/pager.js +85 -45
- package/es/password-input/src/password-input.js +2 -2
- package/es/print/src/page-break.js +11 -2
- package/es/print/src/print.js +6 -4
- package/es/pulldown/src/pulldown.js +19 -13
- package/es/radio/src/button.js +2 -2
- package/es/radio/src/group.js +8 -4
- package/es/row/src/row.js +1 -1
- package/es/select/src/optgroup.js +19 -10
- package/es/select/src/option.js +17 -9
- package/es/select/src/select.js +64 -41
- package/es/select/src/util.js +2 -2
- package/es/style.css +1 -1
- package/es/style.min.css +1 -1
- package/es/tabs/src/tab-pane.js +13 -3
- package/es/tabs/src/tabs.js +57 -47
- package/es/textarea/src/textarea.js +28 -10
- package/es/tooltip/src/tooltip.js +107 -78
- package/es/tree/src/tree.js +6 -3
- package/es/tree-select/src/tree-select.js +18 -10
- package/es/ui/index.js +1 -7
- package/es/ui/src/log.js +1 -1
- package/es/upload/src/upload.js +5 -5
- package/lib/anchor/src/anchor-link.js +1 -1
- package/lib/anchor/src/anchor-link.min.js +1 -1
- package/lib/anchor/src/anchor.js +1 -1
- package/lib/anchor/src/anchor.min.js +1 -1
- package/lib/breadcrumb/src/breadcrumb.js +1 -1
- package/lib/breadcrumb/src/breadcrumb.min.js +1 -1
- package/lib/button/src/button-group.js +4 -1
- package/lib/button/src/button-group.min.js +1 -1
- package/lib/button/src/button.js +2 -1
- package/lib/button/src/button.min.js +1 -1
- package/lib/calendar/src/calendar.js +42 -24
- package/lib/calendar/src/calendar.min.js +1 -1
- package/lib/card/src/card.js +6 -5
- package/lib/card/src/card.min.js +1 -1
- package/lib/carousel/src/carousel-item.js +16 -3
- package/lib/carousel/src/carousel-item.min.js +1 -1
- package/lib/carousel/src/carousel.js +18 -8
- package/lib/carousel/src/carousel.min.js +1 -1
- package/lib/checkbox/src/checkbox.js +16 -12
- package/lib/checkbox/src/checkbox.min.js +1 -1
- package/lib/checkbox/src/group.js +10 -7
- package/lib/checkbox/src/group.min.js +1 -1
- package/lib/collapse-pane/index.js +1 -1
- package/lib/collapse-pane/index.min.js +1 -1
- package/lib/countdown/src/countdown.js +15 -7
- package/lib/countdown/src/countdown.min.js +1 -1
- package/lib/date-picker/src/date-picker.js +124 -62
- package/lib/date-picker/src/date-picker.min.js +1 -1
- package/lib/drawer/src/drawer.js +15 -30
- package/lib/drawer/src/drawer.min.js +1 -1
- package/lib/form/render/index.js +1 -4
- package/lib/form/render/index.min.js +1 -1
- package/lib/form/src/form-config-item.js +4 -5
- package/lib/form/src/form-config-item.min.js +1 -1
- package/lib/form/src/form-gather.js +11 -9
- package/lib/form/src/form-gather.min.js +1 -1
- package/lib/form/src/form-item.js +11 -12
- package/lib/form/src/form-item.min.js +1 -1
- package/lib/form/src/form.js +7 -7
- package/lib/form/src/form.min.js +1 -1
- package/lib/form/src/render.js +2 -1
- package/lib/form/src/util.js +2 -1
- package/lib/icon/src/icon.js +3 -0
- package/lib/icon/src/icon.min.js +1 -1
- package/lib/icon/style/style.css +1 -1
- package/lib/icon/style/style.min.css +1 -1
- package/lib/icon-picker/src/icon-picker.js +22 -12
- package/lib/icon-picker/src/icon-picker.min.js +1 -1
- package/lib/image/src/group.js +4 -1
- package/lib/image/src/group.min.js +1 -1
- package/lib/image/src/preview.js +1 -1
- package/lib/image/src/preview.min.js +1 -1
- package/lib/index.umd.js +884 -649
- package/lib/index.umd.min.js +1 -1
- package/lib/input/src/input.js +79 -51
- package/lib/input/src/input.min.js +1 -1
- package/lib/layout-aside/src/layout-aside.js +1 -1
- package/lib/layout-aside/src/layout-aside.min.js +1 -1
- package/lib/list/src/list.js +9 -5
- package/lib/list/src/list.min.js +1 -1
- package/lib/list-design/src/list-design.js +1 -1
- package/lib/list-design/src/list-design.min.js +1 -1
- package/lib/list-design/src/list-view.js +1 -1
- package/lib/list-design/src/list-view.min.js +1 -1
- package/lib/loading/src/loading.js +4 -1
- package/lib/loading/src/loading.min.js +1 -1
- package/lib/menu/src/menu.js +4 -3
- package/lib/menu/src/menu.min.js +1 -1
- package/lib/number-input/src/number-input.js +67 -69
- package/lib/number-input/src/number-input.min.js +1 -1
- package/lib/pager/src/pager.js +40 -39
- package/lib/pager/src/pager.min.js +1 -1
- package/lib/password-input/src/password-input.js +2 -2
- package/lib/print/src/page-break.js +14 -2
- package/lib/print/src/page-break.min.js +1 -1
- package/lib/print/src/print.js +8 -6
- package/lib/print/src/print.min.js +1 -1
- package/lib/pulldown/src/pulldown.js +19 -13
- package/lib/pulldown/src/pulldown.min.js +1 -1
- package/lib/radio/src/button.js +2 -2
- package/lib/radio/src/group.js +8 -4
- package/lib/radio/src/group.min.js +1 -1
- package/lib/row/src/row.js +1 -1
- package/lib/row/src/row.min.js +1 -1
- package/lib/select/src/optgroup.js +12 -9
- package/lib/select/src/optgroup.min.js +1 -1
- package/lib/select/src/option.js +9 -7
- package/lib/select/src/option.min.js +1 -1
- package/lib/select/src/select.js +52 -41
- package/lib/select/src/select.min.js +1 -1
- package/lib/select/src/util.js +2 -2
- package/lib/select/src/util.min.js +1 -1
- package/lib/style.css +1 -1
- package/lib/style.min.css +1 -1
- package/lib/tabs/src/tab-pane.js +16 -3
- package/lib/tabs/src/tab-pane.min.js +1 -1
- package/lib/tabs/src/tabs.js +62 -50
- package/lib/tabs/src/tabs.min.js +1 -1
- package/lib/textarea/src/textarea.js +4 -4
- package/lib/tooltip/src/tooltip.js +96 -88
- package/lib/tooltip/src/tooltip.min.js +1 -1
- package/lib/tree/src/tree.js +2 -2
- package/lib/tree/src/tree.min.js +1 -1
- package/lib/tree-select/src/tree-select.js +13 -8
- package/lib/tree-select/src/tree-select.min.js +1 -1
- package/lib/ui/index.js +3 -10
- 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/upload/src/upload.js +5 -5
- package/lib/upload/src/upload.min.js +1 -1
- package/package.json +2 -2
- package/packages/anchor/src/anchor-link.ts +2 -2
- package/packages/anchor/src/anchor.ts +2 -2
- package/packages/breadcrumb/src/breadcrumb.ts +2 -2
- package/packages/button/src/button-group.ts +4 -1
- package/packages/button/src/button.ts +6 -5
- package/packages/calendar/src/calendar.ts +67 -35
- package/packages/card/src/card.ts +6 -4
- package/packages/carousel/src/carousel-item.ts +19 -4
- package/packages/carousel/src/carousel.ts +19 -11
- package/packages/checkbox/src/checkbox.ts +34 -15
- package/packages/checkbox/src/group.ts +22 -10
- package/packages/collapse-pane/index.ts +1 -1
- package/packages/countdown/src/countdown.ts +20 -11
- package/packages/date-picker/src/date-picker.ts +160 -80
- package/packages/drawer/src/drawer.ts +91 -50
- package/packages/form/render/index.ts +1 -3
- package/packages/form/src/form-config-item.ts +4 -3
- package/packages/form/src/form-gather.ts +5 -3
- package/packages/form/src/form-item.ts +15 -10
- package/packages/form/src/form.ts +12 -10
- package/packages/form/src/render.ts +2 -1
- package/packages/form/src/util.ts +2 -1
- package/packages/icon/src/icon.ts +3 -0
- package/packages/icon-picker/src/icon-picker.ts +31 -17
- package/packages/image/src/group.ts +4 -1
- package/packages/image/src/preview.ts +2 -2
- package/packages/input/src/input.ts +138 -75
- package/packages/layout-aside/src/layout-aside.ts +2 -2
- package/packages/list/src/list.ts +12 -11
- package/packages/list-design/src/list-design.ts +2 -2
- package/packages/list-design/src/list-view.ts +2 -2
- package/packages/loading/src/loading.ts +5 -2
- package/packages/menu/src/menu.ts +5 -4
- package/packages/number-input/src/number-input.ts +102 -79
- package/packages/pager/src/pager.ts +91 -50
- package/packages/password-input/src/password-input.ts +2 -2
- package/packages/print/src/page-break.ts +18 -4
- package/packages/print/src/print.ts +10 -5
- package/packages/pulldown/src/pulldown.ts +28 -22
- package/packages/radio/src/button.ts +2 -2
- package/packages/radio/src/group.ts +9 -5
- package/packages/row/src/row.ts +2 -2
- package/packages/select/src/optgroup.ts +22 -13
- package/packages/select/src/option.ts +18 -10
- package/packages/select/src/select.ts +79 -52
- package/packages/select/src/util.ts +3 -3
- package/packages/tabs/src/tab-pane.ts +20 -5
- package/packages/tabs/src/tabs.ts +59 -49
- package/packages/textarea/src/textarea.ts +28 -10
- package/packages/tooltip/src/tooltip.ts +118 -84
- package/packages/tree/src/tree.ts +7 -4
- package/packages/tree-select/src/tree-select.ts +25 -16
- package/packages/ui/index.ts +0 -7
- package/packages/upload/src/upload.ts +6 -6
- package/types/components/calendar.d.ts +6 -0
- package/types/components/carousel.d.ts +5 -0
- package/types/components/countdown.d.ts +4 -0
- package/types/components/date-picker.d.ts +23 -5
- package/types/components/drawer.d.ts +0 -1
- package/types/components/form.d.ts +4 -2
- package/types/components/icon-picker.d.ts +4 -0
- package/types/components/input.d.ts +9 -1
- package/types/components/list.d.ts +1 -0
- package/types/components/number-input.d.ts +6 -2
- package/types/components/optgroup.d.ts +10 -4
- package/types/components/pulldown.d.ts +5 -1
- package/types/components/select.d.ts +4 -0
- package/types/components/tabs.d.ts +4 -0
- package/types/components/toolbar.d.ts +5 -0
- package/types/components/tooltip.d.ts +4 -0
- package/types/components/tree-select.d.ts +4 -0
- package/types/ui/index.d.ts +0 -22
- /package/es/{collapse-pane → collapse}/src/collapse-pane.js +0 -0
- /package/es/icon/style/{iconfont.1725597808239.ttf → iconfont.1725941866604.ttf} +0 -0
- /package/es/icon/style/{iconfont.1725597808239.woff → iconfont.1725941866604.woff} +0 -0
- /package/es/icon/style/{iconfont.1725597808239.woff2 → iconfont.1725941866604.woff2} +0 -0
- /package/es/{iconfont.1725597808239.ttf → iconfont.1725941866604.ttf} +0 -0
- /package/es/{iconfont.1725597808239.woff → iconfont.1725941866604.woff} +0 -0
- /package/es/{iconfont.1725597808239.woff2 → iconfont.1725941866604.woff2} +0 -0
- /package/lib/{collapse-pane → collapse}/src/collapse-pane.js +0 -0
- /package/lib/{collapse-pane → collapse}/src/collapse-pane.min.js +0 -0
- /package/lib/icon/style/{iconfont.1725597808239.ttf → iconfont.1725941866604.ttf} +0 -0
- /package/lib/icon/style/{iconfont.1725597808239.woff → iconfont.1725941866604.woff} +0 -0
- /package/lib/icon/style/{iconfont.1725597808239.woff2 → iconfont.1725941866604.woff2} +0 -0
- /package/lib/{iconfont.1725597808239.ttf → iconfont.1725941866604.ttf} +0 -0
- /package/lib/{iconfont.1725597808239.woff → iconfont.1725941866604.woff} +0 -0
- /package/lib/{iconfont.1725597808239.woff2 → iconfont.1725941866604.woff2} +0 -0
- /package/packages/{collapse-pane → collapse}/src/collapse-pane.ts +0 -0
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
import { defineComponent, h, Teleport, PropType, ref, Ref, inject, computed, provide, onUnmounted, reactive, nextTick, watch, onMounted, createCommentVNode } from 'vue'
|
|
2
2
|
import XEUtils from 'xe-utils'
|
|
3
|
-
import { getConfig, getIcon, getI18n, globalEvents, GLOBAL_EVENT_KEYS, createEvent, useSize
|
|
3
|
+
import { getConfig, getIcon, getI18n, globalEvents, GLOBAL_EVENT_KEYS, createEvent, useSize } from '../../ui'
|
|
4
4
|
import { getEventTargetNode, getAbsolutePos } from '../../ui/src/dom'
|
|
5
5
|
import { getLastZIndex, nextZIndex, getFuncText } from '../../ui/src/utils'
|
|
6
6
|
import VxeInputComponent from '../../input/src/input'
|
|
7
7
|
import { getSlotVNs } from '../../ui/src/vn'
|
|
8
8
|
|
|
9
|
-
import type { VxeSelectPropTypes, VxeSelectConstructor, SelectReactData, VxeSelectEmits, VxeInputConstructor, SelectMethods, SelectPrivateRef, VxeSelectMethods, VxeOptgroupProps, VxeOptionProps, VxeTableConstructor, VxeTablePrivateMethods, VxeFormDefines, VxeFormConstructor, VxeFormPrivateMethods, VxeModalConstructor, VxeModalMethods } from '../../../types'
|
|
9
|
+
import type { VxeSelectPropTypes, VxeSelectConstructor, SelectInternalData, SelectReactData, VxeSelectEmits, VxeComponentSlotType, VxeInputConstructor, SelectMethods, SelectPrivateRef, VxeSelectMethods, VxeOptgroupProps, VxeOptionProps, VxeTableConstructor, VxeDrawerConstructor, VxeDrawerMethods, VxeTablePrivateMethods, VxeFormDefines, VxeFormConstructor, VxeFormPrivateMethods, VxeModalConstructor, VxeModalMethods } from '../../../types'
|
|
10
10
|
|
|
11
11
|
function isOptionVisible (option: any) {
|
|
12
12
|
return option.visible !== false
|
|
@@ -32,7 +32,10 @@ export default defineComponent({
|
|
|
32
32
|
default: null
|
|
33
33
|
},
|
|
34
34
|
multiple: Boolean as PropType<VxeSelectPropTypes.Multiple>,
|
|
35
|
-
multiCharOverflow: {
|
|
35
|
+
multiCharOverflow: {
|
|
36
|
+
type: [Number, String] as PropType<VxeSelectPropTypes.MultiCharOverflow>,
|
|
37
|
+
default: () => getConfig().select.multiCharOverflow
|
|
38
|
+
},
|
|
36
39
|
prefixIcon: String as PropType<VxeSelectPropTypes.PrefixIcon>,
|
|
37
40
|
placement: String as PropType<VxeSelectPropTypes.Placement>,
|
|
38
41
|
options: Array as PropType<VxeSelectPropTypes.Options>,
|
|
@@ -42,21 +45,31 @@ export default defineComponent({
|
|
|
42
45
|
optionConfig: Object as PropType<VxeSelectPropTypes.OptionConfig>,
|
|
43
46
|
className: [String, Function] as PropType<VxeSelectPropTypes.ClassName>,
|
|
44
47
|
popupClassName: [String, Function] as PropType<VxeSelectPropTypes.PopupClassName>,
|
|
45
|
-
max: {
|
|
46
|
-
|
|
48
|
+
max: {
|
|
49
|
+
type: [String, Number] as PropType<VxeSelectPropTypes.Max>,
|
|
50
|
+
default: null
|
|
51
|
+
},
|
|
52
|
+
size: {
|
|
53
|
+
type: String as PropType<VxeSelectPropTypes.Size>,
|
|
54
|
+
default: () => getConfig().select.size || getConfig().size
|
|
55
|
+
},
|
|
47
56
|
filterable: Boolean as PropType<VxeSelectPropTypes.Filterable>,
|
|
48
57
|
filterMethod: Function as PropType<VxeSelectPropTypes.FilterMethod>,
|
|
49
58
|
remote: Boolean as PropType<VxeSelectPropTypes.Remote>,
|
|
50
59
|
remoteMethod: Function as PropType<VxeSelectPropTypes.RemoteMethod>,
|
|
51
60
|
emptyText: String as PropType<VxeSelectPropTypes.EmptyText>,
|
|
52
|
-
// 已废弃,被 option-config.keyField 替换
|
|
53
|
-
optionId: { type: String as PropType<VxeSelectPropTypes.OptionId>, default: () => getConfig().select.optionId },
|
|
54
|
-
// 已废弃,被 option-config.useKey 替换
|
|
55
|
-
optionKey: Boolean as PropType<VxeSelectPropTypes.OptionKey>,
|
|
56
61
|
transfer: {
|
|
57
62
|
type: Boolean as PropType<VxeSelectPropTypes.Transfer>,
|
|
58
63
|
default: null
|
|
59
|
-
}
|
|
64
|
+
},
|
|
65
|
+
|
|
66
|
+
// 已废弃,被 option-config.keyField 替换
|
|
67
|
+
optionId: {
|
|
68
|
+
type: String as PropType<VxeSelectPropTypes.OptionId>,
|
|
69
|
+
default: () => getConfig().select.optionId
|
|
70
|
+
},
|
|
71
|
+
// 已废弃,被 option-config.useKey 替换
|
|
72
|
+
optionKey: Boolean as PropType<VxeSelectPropTypes.OptionKey>
|
|
60
73
|
},
|
|
61
74
|
emits: [
|
|
62
75
|
'update:modelValue',
|
|
@@ -69,9 +82,10 @@ export default defineComponent({
|
|
|
69
82
|
setup (props, context) {
|
|
70
83
|
const { slots, emit } = context
|
|
71
84
|
|
|
72
|
-
const $xeModal = inject<VxeModalConstructor & VxeModalMethods
|
|
73
|
-
const $
|
|
74
|
-
const $
|
|
85
|
+
const $xeModal = inject<(VxeModalConstructor & VxeModalMethods)| null>('$xeModal', null)
|
|
86
|
+
const $xeDrawer = inject<(VxeDrawerConstructor & VxeDrawerMethods) | null>('$xeDrawer', null)
|
|
87
|
+
const $xeTable = inject<(VxeTableConstructor & VxeTablePrivateMethods) | null>('$xeTable', null)
|
|
88
|
+
const $xeForm = inject<(VxeFormConstructor & VxeFormPrivateMethods)| null>('$xeForm', null)
|
|
75
89
|
const formItemInfo = inject<VxeFormDefines.ProvideItemInfo | null>('xeFormItemInfo', null)
|
|
76
90
|
|
|
77
91
|
const xID = XEUtils.uniqueId()
|
|
@@ -99,6 +113,10 @@ export default defineComponent({
|
|
|
99
113
|
searchLoading: false
|
|
100
114
|
})
|
|
101
115
|
|
|
116
|
+
const internalData: SelectInternalData = {
|
|
117
|
+
hpTimeout: undefined
|
|
118
|
+
}
|
|
119
|
+
|
|
102
120
|
const refElem = ref() as Ref<HTMLDivElement>
|
|
103
121
|
const refInput = ref() as Ref<VxeInputConstructor>
|
|
104
122
|
const refInpSearch = ref() as Ref<VxeInputConstructor>
|
|
@@ -114,6 +132,7 @@ export default defineComponent({
|
|
|
114
132
|
props,
|
|
115
133
|
context,
|
|
116
134
|
reactData,
|
|
135
|
+
internalData,
|
|
117
136
|
getRefMaps: () => refMaps
|
|
118
137
|
} as unknown as VxeSelectConstructor & VxeSelectMethods
|
|
119
138
|
|
|
@@ -148,7 +167,7 @@ export default defineComponent({
|
|
|
148
167
|
if (XEUtils.isBoolean(globalTransfer)) {
|
|
149
168
|
return globalTransfer
|
|
150
169
|
}
|
|
151
|
-
if ($xeTable || $xeModal || $xeForm) {
|
|
170
|
+
if ($xeTable || $xeModal || $xeDrawer || $xeForm) {
|
|
152
171
|
return true
|
|
153
172
|
}
|
|
154
173
|
}
|
|
@@ -168,11 +187,11 @@ export default defineComponent({
|
|
|
168
187
|
})
|
|
169
188
|
|
|
170
189
|
const computePropsOpts = computed(() => {
|
|
171
|
-
return props.optionProps
|
|
190
|
+
return Object.assign({}, props.optionProps)
|
|
172
191
|
})
|
|
173
192
|
|
|
174
193
|
const computeGroupPropsOpts = computed(() => {
|
|
175
|
-
return props.optionGroupProps
|
|
194
|
+
return Object.assign({}, props.optionGroupProps)
|
|
176
195
|
})
|
|
177
196
|
|
|
178
197
|
const computeLabelField = computed(() => {
|
|
@@ -215,6 +234,28 @@ export default defineComponent({
|
|
|
215
234
|
return XEUtils.toNumber(props.multiCharOverflow)
|
|
216
235
|
})
|
|
217
236
|
|
|
237
|
+
const computeSelectLabel = computed(() => {
|
|
238
|
+
const { modelValue, multiple, remote } = props
|
|
239
|
+
const multiMaxCharNum = computeMultiMaxCharNum.value
|
|
240
|
+
if (modelValue && multiple) {
|
|
241
|
+
const vals = XEUtils.isArray(modelValue) ? modelValue : [modelValue]
|
|
242
|
+
if (remote) {
|
|
243
|
+
return vals.map(val => getRemoteSelectLabel(val)).join(', ')
|
|
244
|
+
}
|
|
245
|
+
return vals.map((val) => {
|
|
246
|
+
const label = getSelectLabel(val)
|
|
247
|
+
if (multiMaxCharNum > 0 && label.length > multiMaxCharNum) {
|
|
248
|
+
return `${label.substring(0, multiMaxCharNum)}...`
|
|
249
|
+
}
|
|
250
|
+
return label
|
|
251
|
+
}).join(', ')
|
|
252
|
+
}
|
|
253
|
+
if (remote) {
|
|
254
|
+
return getRemoteSelectLabel(modelValue)
|
|
255
|
+
}
|
|
256
|
+
return getSelectLabel(modelValue)
|
|
257
|
+
})
|
|
258
|
+
|
|
218
259
|
const callSlot = <T>(slotFunc: ((params: T) => VxeComponentSlotType | VxeComponentSlotType[]) | string | null, params: T) => {
|
|
219
260
|
if (slotFunc) {
|
|
220
261
|
if (XEUtils.isString(slotFunc)) {
|
|
@@ -281,28 +322,6 @@ export default defineComponent({
|
|
|
281
322
|
return XEUtils.toValueString(item ? item[labelField as 'label'] : value)
|
|
282
323
|
}
|
|
283
324
|
|
|
284
|
-
const computeSelectLabel = computed(() => {
|
|
285
|
-
const { modelValue, multiple, remote } = props
|
|
286
|
-
const multiMaxCharNum = computeMultiMaxCharNum.value
|
|
287
|
-
if (modelValue && multiple) {
|
|
288
|
-
const vals = XEUtils.isArray(modelValue) ? modelValue : [modelValue]
|
|
289
|
-
if (remote) {
|
|
290
|
-
return vals.map(val => getRemoteSelectLabel(val)).join(', ')
|
|
291
|
-
}
|
|
292
|
-
return vals.map((val) => {
|
|
293
|
-
const label = getSelectLabel(val)
|
|
294
|
-
if (multiMaxCharNum > 0 && label.length > multiMaxCharNum) {
|
|
295
|
-
return `${label.substring(0, multiMaxCharNum)}...`
|
|
296
|
-
}
|
|
297
|
-
return label
|
|
298
|
-
}).join(', ')
|
|
299
|
-
}
|
|
300
|
-
if (remote) {
|
|
301
|
-
return getRemoteSelectLabel(modelValue)
|
|
302
|
-
}
|
|
303
|
-
return getSelectLabel(modelValue)
|
|
304
|
-
})
|
|
305
|
-
|
|
306
325
|
const getOptkey = () => {
|
|
307
326
|
const optionOpts = computeOptionOpts.value
|
|
308
327
|
return optionOpts.keyField || props.optionId || '_X_OPTION_KEY'
|
|
@@ -473,13 +492,15 @@ export default defineComponent({
|
|
|
473
492
|
})
|
|
474
493
|
}
|
|
475
494
|
|
|
476
|
-
let hidePanelTimeout: number
|
|
477
|
-
|
|
478
495
|
const showOptionPanel = () => {
|
|
479
496
|
const { loading, filterable } = props
|
|
497
|
+
const { hpTimeout } = internalData
|
|
480
498
|
const isDisabled = computeIsDisabled.value
|
|
481
499
|
if (!loading && !isDisabled) {
|
|
482
|
-
|
|
500
|
+
if (hpTimeout) {
|
|
501
|
+
clearTimeout(hpTimeout)
|
|
502
|
+
internalData.hpTimeout = undefined
|
|
503
|
+
}
|
|
483
504
|
if (!reactData.initialized) {
|
|
484
505
|
reactData.initialized = true
|
|
485
506
|
}
|
|
@@ -507,14 +528,14 @@ export default defineComponent({
|
|
|
507
528
|
reactData.searchValue = ''
|
|
508
529
|
reactData.searchLoading = false
|
|
509
530
|
reactData.visiblePanel = false
|
|
510
|
-
|
|
531
|
+
internalData.hpTimeout = window.setTimeout(() => {
|
|
511
532
|
reactData.isAniVisible = false
|
|
512
533
|
}, 350)
|
|
513
534
|
}
|
|
514
535
|
|
|
515
536
|
const changeEvent = (evnt: Event, selectValue: any) => {
|
|
537
|
+
emit('update:modelValue', selectValue)
|
|
516
538
|
if (selectValue !== props.modelValue) {
|
|
517
|
-
emit('update:modelValue', selectValue)
|
|
518
539
|
selectMethods.dispatchEvent('change', { value: selectValue }, evnt)
|
|
519
540
|
// 自动更新校验状态
|
|
520
541
|
if ($xeForm && formItemInfo) {
|
|
@@ -753,19 +774,25 @@ export default defineComponent({
|
|
|
753
774
|
reactData.isActivated = true
|
|
754
775
|
}
|
|
755
776
|
|
|
756
|
-
const
|
|
777
|
+
const handleSearchEvent = () => {
|
|
757
778
|
const { remote, remoteMethod } = props
|
|
758
779
|
const { searchValue } = reactData
|
|
759
780
|
if (remote && remoteMethod) {
|
|
760
781
|
reactData.searchLoading = true
|
|
761
|
-
Promise.resolve(
|
|
762
|
-
|
|
763
|
-
|
|
764
|
-
|
|
782
|
+
Promise.resolve(
|
|
783
|
+
remoteMethod({ searchValue })
|
|
784
|
+
).then(() => nextTick())
|
|
785
|
+
.catch(() => nextTick())
|
|
786
|
+
.finally(() => {
|
|
787
|
+
reactData.searchLoading = false
|
|
788
|
+
refreshOption()
|
|
789
|
+
})
|
|
765
790
|
} else {
|
|
766
791
|
refreshOption()
|
|
767
792
|
}
|
|
768
|
-
}
|
|
793
|
+
}
|
|
794
|
+
|
|
795
|
+
const triggerSearchEvent = XEUtils.debounce(handleSearchEvent, 350, { trailing: true })
|
|
769
796
|
|
|
770
797
|
const togglePanelEvent = (params: any) => {
|
|
771
798
|
const { $event } = params
|
|
@@ -978,7 +1005,7 @@ export default defineComponent({
|
|
|
978
1005
|
}, defaultSlot ? defaultSlot({}) : []),
|
|
979
1006
|
h('span', {
|
|
980
1007
|
class: 'vxe-select-label'
|
|
981
|
-
}, selectLabel)
|
|
1008
|
+
}, [selectLabel])
|
|
982
1009
|
])
|
|
983
1010
|
}
|
|
984
1011
|
return h('div', {
|
|
@@ -1078,8 +1105,6 @@ export default defineComponent({
|
|
|
1078
1105
|
])
|
|
1079
1106
|
}
|
|
1080
1107
|
|
|
1081
|
-
$xeSelect.renderVN = renderVN
|
|
1082
|
-
|
|
1083
1108
|
watch(() => reactData.staticOptions, (value) => {
|
|
1084
1109
|
if (value.some((item) => item.options && item.options.length)) {
|
|
1085
1110
|
reactData.fullOptionList = []
|
|
@@ -1128,6 +1153,8 @@ export default defineComponent({
|
|
|
1128
1153
|
|
|
1129
1154
|
provide('$xeSelect', $xeSelect)
|
|
1130
1155
|
|
|
1156
|
+
$xeSelect.renderVN = renderVN
|
|
1157
|
+
|
|
1131
1158
|
return $xeSelect
|
|
1132
1159
|
},
|
|
1133
1160
|
render () {
|
|
@@ -5,7 +5,7 @@ import { OptionInfo } from './option-info'
|
|
|
5
5
|
import type { VxeSelectConstructor } from '../../../types'
|
|
6
6
|
|
|
7
7
|
export interface XEOptionProvide {
|
|
8
|
-
|
|
8
|
+
optionConfig: OptionInfo;
|
|
9
9
|
}
|
|
10
10
|
|
|
11
11
|
export function isOption (option: any) {
|
|
@@ -24,11 +24,11 @@ export function watchOption (props: any, option: OptionInfo) {
|
|
|
24
24
|
})
|
|
25
25
|
}
|
|
26
26
|
|
|
27
|
-
export function assembleOption ($xeSelect: VxeSelectConstructor, el: HTMLDivElement, option: OptionInfo,
|
|
27
|
+
export function assembleOption ($xeSelect: VxeSelectConstructor, el: HTMLDivElement, option: OptionInfo, $xeOptgroup?: XEOptionProvide | null) {
|
|
28
28
|
const { reactData } = $xeSelect
|
|
29
29
|
const { staticOptions } = reactData
|
|
30
30
|
const parentElem = el.parentNode
|
|
31
|
-
const parentOption =
|
|
31
|
+
const parentOption = $xeOptgroup ? $xeOptgroup.optionConfig : null
|
|
32
32
|
const parentCols = parentOption ? parentOption.options : staticOptions
|
|
33
33
|
if (parentElem && parentCols) {
|
|
34
34
|
parentCols.splice(XEUtils.arrayIndexOf(parentElem.children, el), 0, option)
|
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
import { defineComponent, ref, h, reactive, PropType, watch, inject, onMounted, onUnmounted } from 'vue'
|
|
2
2
|
import XEUtils from 'xe-utils'
|
|
3
|
+
import { createEvent } from '../../ui'
|
|
3
4
|
import { assembleAnchorTab, destroyAnchorTab } from './util'
|
|
4
5
|
|
|
5
|
-
import type { VxeTabPanePropTypes, TabPaneReactData, TabPanePrivateRef, VxeTabPanePrivateComputed, VxeTabPaneConstructor, VxeTabPanePrivateMethods, VxeTabPaneDefines, VxeTabsConstructor, VxeTabsPrivateMethods } from '../../../types'
|
|
6
|
+
import type { VxeTabPanePropTypes, TabPaneReactData, TabPaneMethods, TabPanePrivateMethods, VxeTabPaneEmits, ValueOf, TabPanePrivateRef, VxeTabPanePrivateComputed, VxeTabPaneConstructor, VxeTabPanePrivateMethods, VxeTabPaneDefines, VxeTabsConstructor, VxeTabsPrivateMethods } from '../../../types'
|
|
6
7
|
|
|
7
8
|
export default defineComponent({
|
|
8
9
|
name: 'VxeTabPane',
|
|
@@ -15,9 +16,9 @@ export default defineComponent({
|
|
|
15
16
|
preload: Boolean as PropType<VxeTabPanePropTypes.Preload>,
|
|
16
17
|
permissionCode: [String, Number] as PropType<VxeTabPanePropTypes.PermissionCode>
|
|
17
18
|
},
|
|
18
|
-
emits: [],
|
|
19
|
+
emits: [] as VxeTabPaneEmits,
|
|
19
20
|
setup (props, context) {
|
|
20
|
-
const { slots } = context
|
|
21
|
+
const { slots, emit } = context
|
|
21
22
|
|
|
22
23
|
const xID = XEUtils.uniqueId()
|
|
23
24
|
|
|
@@ -59,6 +60,19 @@ export default defineComponent({
|
|
|
59
60
|
getComputeMaps: () => computeMaps
|
|
60
61
|
} as unknown as VxeTabPaneConstructor & VxeTabPanePrivateMethods
|
|
61
62
|
|
|
63
|
+
const dispatchEvent = (type: ValueOf<VxeTabPaneEmits>, params: Record<string, any>, evnt: Event | null) => {
|
|
64
|
+
emit(type, createEvent(evnt, { $tabPane: $xeTabPane }, params))
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
const tabPaneMethods: TabPaneMethods = {
|
|
68
|
+
dispatchEvent
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
const tabPanePrivateMethods: TabPanePrivateMethods = {
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
Object.assign($xeTabPane, tabPaneMethods, tabPanePrivateMethods)
|
|
75
|
+
|
|
62
76
|
watch(() => props.title, (val) => {
|
|
63
77
|
tabConfig.title = val
|
|
64
78
|
})
|
|
@@ -76,8 +90,9 @@ export default defineComponent({
|
|
|
76
90
|
})
|
|
77
91
|
|
|
78
92
|
onMounted(() => {
|
|
79
|
-
|
|
80
|
-
|
|
93
|
+
const elem = refElem.value
|
|
94
|
+
if ($xeTabs && elem) {
|
|
95
|
+
assembleAnchorTab($xeTabs, elem, tabConfig)
|
|
81
96
|
}
|
|
82
97
|
})
|
|
83
98
|
|
|
@@ -5,7 +5,7 @@ import { toCssUnit } from '../..//ui/src/dom'
|
|
|
5
5
|
import { warnLog } from '../../ui/src/log'
|
|
6
6
|
import XEUtils from 'xe-utils'
|
|
7
7
|
|
|
8
|
-
import type { VxeTabsPropTypes, VxeTabPaneProps, VxeTabsEmits, TabsReactData, TabsPrivateRef, VxeTabsPrivateComputed, VxeTabsConstructor, VxeTabsPrivateMethods, VxeTabPaneDefines, ValueOf, TabsMethods, TabsPrivateMethods } from '../../../types'
|
|
8
|
+
import type { VxeTabsPropTypes, VxeTabPaneProps, VxeTabsEmits, TabsInternalData, TabsReactData, TabsPrivateRef, VxeTabsPrivateComputed, VxeTabsConstructor, VxeTabsPrivateMethods, VxeTabPaneDefines, ValueOf, TabsMethods, TabsPrivateMethods } from '../../../types'
|
|
9
9
|
|
|
10
10
|
export default defineComponent({
|
|
11
11
|
name: 'VxeTabs',
|
|
@@ -55,28 +55,22 @@ export default defineComponent({
|
|
|
55
55
|
resizeFlag: 1
|
|
56
56
|
})
|
|
57
57
|
|
|
58
|
-
const
|
|
59
|
-
|
|
58
|
+
const internalData: TabsInternalData = {
|
|
59
|
+
slTimeout: undefined
|
|
60
60
|
}
|
|
61
61
|
|
|
62
|
-
const
|
|
63
|
-
|
|
64
|
-
if (permissionCode) {
|
|
65
|
-
if (!permission.checkVisible(permissionCode)) {
|
|
66
|
-
return false
|
|
67
|
-
}
|
|
68
|
-
}
|
|
69
|
-
return true
|
|
62
|
+
const refMaps: TabsPrivateRef = {
|
|
63
|
+
refElem
|
|
70
64
|
}
|
|
71
65
|
|
|
72
66
|
const computeTabOptions = computed(() => {
|
|
73
67
|
const { options } = props
|
|
74
|
-
return (options || []).filter(handleFilterTab)
|
|
68
|
+
return (options || []).filter((item) => handleFilterTab(item))
|
|
75
69
|
})
|
|
76
70
|
|
|
77
71
|
const computeTabStaticOptions = computed(() => {
|
|
78
72
|
const { staticTabs } = reactData
|
|
79
|
-
return staticTabs.filter(handleFilterTab)
|
|
73
|
+
return staticTabs.filter((item) => handleFilterTab(item))
|
|
80
74
|
})
|
|
81
75
|
|
|
82
76
|
const computeMaps: VxeTabsPrivateComputed = {
|
|
@@ -92,6 +86,16 @@ export default defineComponent({
|
|
|
92
86
|
getComputeMaps: () => computeMaps
|
|
93
87
|
} as unknown as VxeTabsConstructor & VxeTabsPrivateMethods
|
|
94
88
|
|
|
89
|
+
const handleFilterTab = (item: VxeTabPaneProps | VxeTabPaneDefines.TabConfig) => {
|
|
90
|
+
const { permissionCode } = item
|
|
91
|
+
if (permissionCode) {
|
|
92
|
+
if (!permission.checkVisible(permissionCode)) {
|
|
93
|
+
return false
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
return true
|
|
97
|
+
}
|
|
98
|
+
|
|
95
99
|
const callSlot = (slotFunc: any, params: any) => {
|
|
96
100
|
if (slotFunc) {
|
|
97
101
|
if (XEUtils.isString(slotFunc)) {
|
|
@@ -218,13 +222,15 @@ export default defineComponent({
|
|
|
218
222
|
}
|
|
219
223
|
}
|
|
220
224
|
|
|
221
|
-
let scrollTimeout: any = null
|
|
222
|
-
|
|
223
225
|
const startScrollAnimation = (offsetPos: number, offsetSize: number) => {
|
|
226
|
+
const { slTimeout } = internalData
|
|
224
227
|
let offsetLeft = offsetSize
|
|
225
228
|
let scrollCount = 6
|
|
226
229
|
let delayNum = 35
|
|
227
|
-
|
|
230
|
+
if (slTimeout) {
|
|
231
|
+
clearTimeout(slTimeout)
|
|
232
|
+
internalData.slTimeout = undefined
|
|
233
|
+
}
|
|
228
234
|
const scrollAnimate = () => {
|
|
229
235
|
const headerWrapperEl = refHeadWrapperElem.value
|
|
230
236
|
if (scrollCount > 0) {
|
|
@@ -236,13 +242,13 @@ export default defineComponent({
|
|
|
236
242
|
if (clientWidth + scrollLeft < scrollWidth) {
|
|
237
243
|
headerWrapperEl.scrollLeft += offsetLeft
|
|
238
244
|
delayNum -= 4
|
|
239
|
-
|
|
245
|
+
internalData.slTimeout = setTimeout(scrollAnimate, delayNum)
|
|
240
246
|
}
|
|
241
247
|
} else {
|
|
242
248
|
if (scrollLeft > 0) {
|
|
243
249
|
headerWrapperEl.scrollLeft -= offsetLeft
|
|
244
250
|
delayNum -= 4
|
|
245
|
-
|
|
251
|
+
internalData.slTimeout = setTimeout(scrollAnimate, delayNum)
|
|
246
252
|
}
|
|
247
253
|
}
|
|
248
254
|
updateTabStyle()
|
|
@@ -297,41 +303,43 @@ export default defineComponent({
|
|
|
297
303
|
})
|
|
298
304
|
}
|
|
299
305
|
|
|
300
|
-
const
|
|
301
|
-
|
|
302
|
-
|
|
303
|
-
|
|
304
|
-
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
|
|
308
|
-
|
|
309
|
-
if (
|
|
310
|
-
|
|
311
|
-
item = list[index + 1]
|
|
312
|
-
}
|
|
313
|
-
} else {
|
|
314
|
-
if (index > 0) {
|
|
315
|
-
item = list[index - 1]
|
|
316
|
-
}
|
|
306
|
+
const handlePrevNext = (isNext: boolean) => {
|
|
307
|
+
const { activeName } = reactData
|
|
308
|
+
const tabOptions = computeTabOptions.value
|
|
309
|
+
const tabStaticOptions = computeTabStaticOptions.value
|
|
310
|
+
const list = tabStaticOptions.length ? tabStaticOptions : tabOptions
|
|
311
|
+
const index = XEUtils.findIndexOf(list, item => item.name === activeName)
|
|
312
|
+
if (index > -1) {
|
|
313
|
+
let item: VxeTabPaneProps | null = null
|
|
314
|
+
if (isNext) {
|
|
315
|
+
if (index < list.length - 1) {
|
|
316
|
+
item = list[index + 1]
|
|
317
317
|
}
|
|
318
|
-
|
|
319
|
-
|
|
320
|
-
|
|
321
|
-
reactData.activeName = name
|
|
322
|
-
emit('update:modelValue', value)
|
|
323
|
-
addInitName(name, null)
|
|
318
|
+
} else {
|
|
319
|
+
if (index > 0) {
|
|
320
|
+
item = list[index - 1]
|
|
324
321
|
}
|
|
325
322
|
}
|
|
326
|
-
|
|
323
|
+
if (item) {
|
|
324
|
+
const name = item.name
|
|
325
|
+
const value = name
|
|
326
|
+
reactData.activeName = name
|
|
327
|
+
emit('update:modelValue', value)
|
|
328
|
+
addInitName(name, null)
|
|
329
|
+
}
|
|
327
330
|
}
|
|
331
|
+
return nextTick()
|
|
328
332
|
}
|
|
329
333
|
|
|
330
334
|
const tabsMethods: TabsMethods = {
|
|
331
335
|
dispatchEvent,
|
|
332
336
|
scrollToTab,
|
|
333
|
-
prev
|
|
334
|
-
|
|
337
|
+
prev () {
|
|
338
|
+
return handlePrevNext(false)
|
|
339
|
+
},
|
|
340
|
+
next () {
|
|
341
|
+
return handlePrevNext(true)
|
|
342
|
+
},
|
|
335
343
|
prevTab () {
|
|
336
344
|
if (process.env.VUE_APP_VXE_ENV === 'development') {
|
|
337
345
|
warnLog('vxe.error.delFunc', ['prevTab', 'prev'])
|
|
@@ -475,9 +483,9 @@ export default defineComponent({
|
|
|
475
483
|
const { activeName } = reactData
|
|
476
484
|
const activeDefaultTab = tabList.find(item => item.name === activeName)
|
|
477
485
|
if (destroyOnClose) {
|
|
478
|
-
return activeDefaultTab ?
|
|
486
|
+
return [activeDefaultTab ? renderTabPane(activeDefaultTab) : createCommentVNode()]
|
|
479
487
|
}
|
|
480
|
-
return tabList.map(renderTabPane)
|
|
488
|
+
return tabList.map((item) => renderTabPane(item))
|
|
481
489
|
}
|
|
482
490
|
|
|
483
491
|
const renderVN = () => {
|
|
@@ -552,7 +560,9 @@ export default defineComponent({
|
|
|
552
560
|
}
|
|
553
561
|
|
|
554
562
|
watch(() => reactData.resizeFlag, () => {
|
|
555
|
-
nextTick(
|
|
563
|
+
nextTick(() => {
|
|
564
|
+
updateTabStyle()
|
|
565
|
+
})
|
|
556
566
|
})
|
|
557
567
|
|
|
558
568
|
nextTick(() => {
|
|
@@ -567,13 +577,13 @@ export default defineComponent({
|
|
|
567
577
|
globalEvents.off($xeTabs, 'resize')
|
|
568
578
|
})
|
|
569
579
|
|
|
570
|
-
$xeTabs.renderVN = renderVN
|
|
571
|
-
|
|
572
580
|
provide('$xeTabs', $xeTabs)
|
|
573
581
|
|
|
574
582
|
addInitName(props.modelValue, null)
|
|
575
583
|
initDefaultName(reactData.staticTabs.length ? reactData.staticTabs : props.options)
|
|
576
584
|
|
|
585
|
+
$xeTabs.renderVN = renderVN
|
|
586
|
+
|
|
577
587
|
return $xeTabs
|
|
578
588
|
},
|
|
579
589
|
render () {
|
|
@@ -12,27 +12,45 @@ export default defineComponent({
|
|
|
12
12
|
props: {
|
|
13
13
|
modelValue: [String, Number] as PropType<VxeTextareaPropTypes.ModelValue>,
|
|
14
14
|
className: String as PropType<VxeTextareaPropTypes.ClassName>,
|
|
15
|
-
immediate: {
|
|
15
|
+
immediate: {
|
|
16
|
+
type: Boolean as PropType<VxeTextareaPropTypes.Immediate>,
|
|
17
|
+
default: true
|
|
18
|
+
},
|
|
16
19
|
name: String as PropType<VxeTextareaPropTypes.Name>,
|
|
17
20
|
readonly: {
|
|
18
21
|
type: Boolean as PropType<VxeTextareaPropTypes.Readonly>,
|
|
19
22
|
default: null
|
|
20
23
|
},
|
|
21
|
-
editable: {
|
|
24
|
+
editable: {
|
|
25
|
+
type: Boolean as PropType<VxeTextareaPropTypes.Readonly>,
|
|
26
|
+
default: true
|
|
27
|
+
},
|
|
22
28
|
disabled: {
|
|
23
29
|
type: Boolean as PropType<VxeTextareaPropTypes.Disabled>,
|
|
24
30
|
default: null
|
|
25
31
|
},
|
|
26
32
|
placeholder: String as PropType<VxeTextareaPropTypes.Placeholder>,
|
|
27
33
|
maxLength: [String, Number] as PropType<VxeTextareaPropTypes.MaxLength>,
|
|
28
|
-
rows: {
|
|
29
|
-
|
|
34
|
+
rows: {
|
|
35
|
+
type: [String, Number] as PropType<VxeTextareaPropTypes.Rows>,
|
|
36
|
+
default: null
|
|
37
|
+
},
|
|
38
|
+
cols: {
|
|
39
|
+
type: [String, Number] as PropType<VxeTextareaPropTypes.Cols>,
|
|
40
|
+
default: null
|
|
41
|
+
},
|
|
30
42
|
showWordCount: Boolean as PropType<VxeTextareaPropTypes.ShowWordCount>,
|
|
31
43
|
countMethod: Function as PropType<VxeTextareaPropTypes.CountMethod>,
|
|
32
44
|
autosize: [Boolean, Object] as PropType<VxeTextareaPropTypes.Autosize>,
|
|
33
45
|
form: String as PropType<VxeTextareaPropTypes.Form>,
|
|
34
|
-
resize: {
|
|
35
|
-
|
|
46
|
+
resize: {
|
|
47
|
+
type: String as PropType<VxeTextareaPropTypes.Resize>,
|
|
48
|
+
default: () => getConfig().textarea.resize
|
|
49
|
+
},
|
|
50
|
+
size: {
|
|
51
|
+
type: String as PropType<VxeTextareaPropTypes.Size>,
|
|
52
|
+
default: () => getConfig().textarea.size || getConfig().size
|
|
53
|
+
},
|
|
36
54
|
// 已废弃
|
|
37
55
|
maxlength: [String, Number] as PropType<VxeTextareaPropTypes.Maxlength>
|
|
38
56
|
},
|
|
@@ -193,7 +211,7 @@ export default defineComponent({
|
|
|
193
211
|
$xeTextarea.dispatchEvent(evnt.type, { value }, evnt)
|
|
194
212
|
}
|
|
195
213
|
|
|
196
|
-
const
|
|
214
|
+
const handleChange = (value: string, evnt: Event) => {
|
|
197
215
|
reactData.inputValue = value
|
|
198
216
|
emit('update:modelValue', value)
|
|
199
217
|
if (XEUtils.toValueString(props.modelValue) !== value) {
|
|
@@ -211,7 +229,7 @@ export default defineComponent({
|
|
|
211
229
|
const value = textElem.value
|
|
212
230
|
reactData.inputValue = value
|
|
213
231
|
if (immediate) {
|
|
214
|
-
|
|
232
|
+
handleChange(value, evnt)
|
|
215
233
|
}
|
|
216
234
|
$xeTextarea.dispatchEvent('input', { value }, evnt)
|
|
217
235
|
handleResize()
|
|
@@ -222,7 +240,7 @@ export default defineComponent({
|
|
|
222
240
|
if (immediate) {
|
|
223
241
|
triggerEvent(evnt)
|
|
224
242
|
} else {
|
|
225
|
-
|
|
243
|
+
handleChange(reactData.inputValue, evnt)
|
|
226
244
|
}
|
|
227
245
|
}
|
|
228
246
|
|
|
@@ -230,7 +248,7 @@ export default defineComponent({
|
|
|
230
248
|
const { immediate } = props
|
|
231
249
|
const { inputValue } = reactData
|
|
232
250
|
if (!immediate) {
|
|
233
|
-
|
|
251
|
+
handleChange(inputValue, evnt)
|
|
234
252
|
}
|
|
235
253
|
$xeTextarea.dispatchEvent('blur', { value: inputValue }, evnt)
|
|
236
254
|
}
|