vxe-pc-ui 4.11.43 → 4.11.45
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/es/button/src/button.js +18 -6
- package/es/date-picker/src/date-picker.js +17 -5
- package/es/date-range-picker/src/date-range-picker.js +17 -5
- package/es/icon/style.css +1 -1
- package/es/icon-picker/src/icon-picker.js +36 -74
- package/es/pulldown/src/pulldown.js +26 -6
- package/es/select/src/select.js +55 -16
- package/es/style.css +1 -1
- package/es/style.min.css +1 -1
- package/es/table-select/src/table-select.js +17 -7
- package/es/tree-select/src/tree-select.js +21 -7
- package/es/ui/index.js +1 -1
- package/es/ui/src/log.js +1 -1
- package/lib/button/src/button.js +18 -9
- package/lib/button/src/button.min.js +1 -1
- package/lib/date-picker/src/date-picker.js +19 -7
- package/lib/date-picker/src/date-picker.min.js +1 -1
- package/lib/date-range-picker/src/date-range-picker.js +19 -7
- package/lib/date-range-picker/src/date-range-picker.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 +39 -80
- package/lib/icon-picker/src/icon-picker.min.js +1 -1
- package/lib/index.umd.js +220 -157
- package/lib/index.umd.min.js +1 -1
- package/lib/pulldown/src/pulldown.js +26 -9
- package/lib/pulldown/src/pulldown.min.js +1 -1
- package/lib/select/src/select.js +57 -21
- package/lib/select/src/select.min.js +1 -1
- package/lib/style.css +1 -1
- package/lib/style.min.css +1 -1
- package/lib/table-select/src/table-select.js +18 -12
- package/lib/table-select/src/table-select.min.js +1 -1
- package/lib/tree-select/src/tree-select.js +22 -10
- 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/package.json +1 -1
- package/packages/button/src/button.ts +19 -6
- package/packages/date-picker/src/date-picker.ts +18 -5
- package/packages/date-range-picker/src/date-range-picker.ts +18 -5
- package/packages/icon-picker/src/icon-picker.ts +37 -71
- package/packages/pulldown/src/pulldown.ts +27 -6
- package/packages/select/src/select.ts +54 -16
- package/packages/table-select/src/table-select.ts +17 -7
- package/packages/tree-select/src/tree-select.ts +21 -7
- package/types/components/button.d.ts +18 -0
- package/types/components/date-picker.d.ts +8 -0
- package/types/components/date-range-picker.d.ts +8 -0
- package/types/components/icon-picker.d.ts +24 -0
- package/types/components/pulldown.d.ts +28 -0
- package/types/components/select.d.ts +70 -0
- package/types/components/table-select.d.ts +16 -1
- package/types/components/table.d.ts +2 -2
- package/types/components/tree-select.d.ts +20 -2
- package/types/components/upload.d.ts +1 -1
- /package/es/icon/{iconfont.1768192734102.ttf → iconfont.1768381374840.ttf} +0 -0
- /package/es/icon/{iconfont.1768192734102.woff → iconfont.1768381374840.woff} +0 -0
- /package/es/icon/{iconfont.1768192734102.woff2 → iconfont.1768381374840.woff2} +0 -0
- /package/es/{iconfont.1768192734102.ttf → iconfont.1768381374840.ttf} +0 -0
- /package/es/{iconfont.1768192734102.woff → iconfont.1768381374840.woff} +0 -0
- /package/es/{iconfont.1768192734102.woff2 → iconfont.1768381374840.woff2} +0 -0
- /package/lib/icon/style/{iconfont.1768192734102.ttf → iconfont.1768381374840.ttf} +0 -0
- /package/lib/icon/style/{iconfont.1768192734102.woff → iconfont.1768381374840.woff} +0 -0
- /package/lib/icon/style/{iconfont.1768192734102.woff2 → iconfont.1768381374840.woff2} +0 -0
- /package/lib/{iconfont.1768192734102.ttf → iconfont.1768381374840.ttf} +0 -0
- /package/lib/{iconfont.1768192734102.woff → iconfont.1768381374840.woff} +0 -0
- /package/lib/{iconfont.1768192734102.woff2 → iconfont.1768381374840.woff2} +0 -0
|
@@ -117,6 +117,7 @@ export default defineVxeComponent({
|
|
|
117
117
|
default: null
|
|
118
118
|
},
|
|
119
119
|
|
|
120
|
+
popupConfig: Object as PropType<VxeDateRangePickerPropTypes.PopupConfig>,
|
|
120
121
|
shortcutConfig: Object as PropType<VxeDateRangePickerPropTypes.ShortcutConfig>
|
|
121
122
|
},
|
|
122
123
|
emits: [
|
|
@@ -195,6 +196,10 @@ export default defineVxeComponent({
|
|
|
195
196
|
|
|
196
197
|
const computeBtnTransfer = computed(() => {
|
|
197
198
|
const { transfer } = props
|
|
199
|
+
const popupOpts = computePopupOpts.value
|
|
200
|
+
if (XEUtils.isBoolean(popupOpts.transfer)) {
|
|
201
|
+
return popupOpts.transfer
|
|
202
|
+
}
|
|
198
203
|
if (transfer === null) {
|
|
199
204
|
const globalTransfer = getConfig().dateRangePicker.transfer
|
|
200
205
|
if (XEUtils.isBoolean(globalTransfer)) {
|
|
@@ -292,6 +297,10 @@ export default defineVxeComponent({
|
|
|
292
297
|
return immediate
|
|
293
298
|
})
|
|
294
299
|
|
|
300
|
+
const computePopupOpts = computed(() => {
|
|
301
|
+
return Object.assign({}, getConfig().dateRangePicker.popupConfig, props.popupConfig)
|
|
302
|
+
})
|
|
303
|
+
|
|
295
304
|
const computeShortcutOpts = computed(() => {
|
|
296
305
|
return Object.assign({}, getConfig().dateRangePicker.shortcutConfig, props.shortcutConfig)
|
|
297
306
|
})
|
|
@@ -718,9 +727,10 @@ export default defineVxeComponent({
|
|
|
718
727
|
|
|
719
728
|
// 弹出面板
|
|
720
729
|
const updateZindex = () => {
|
|
721
|
-
const
|
|
722
|
-
|
|
723
|
-
|
|
730
|
+
const popupOpts = computePopupOpts.value
|
|
731
|
+
const customZIndex = popupOpts.zIndex || props.zIndex
|
|
732
|
+
if (customZIndex) {
|
|
733
|
+
reactData.panelIndex = XEUtils.toNumber(customZIndex)
|
|
724
734
|
} else if (reactData.panelIndex < getLastZIndex()) {
|
|
725
735
|
reactData.panelIndex = nextZIndex()
|
|
726
736
|
}
|
|
@@ -732,9 +742,10 @@ export default defineVxeComponent({
|
|
|
732
742
|
const targetElem = refInputTarget.value
|
|
733
743
|
const panelElem = refInputPanel.value
|
|
734
744
|
const btnTransfer = computeBtnTransfer.value
|
|
745
|
+
const popupOpts = computePopupOpts.value
|
|
735
746
|
const handleStyle = () => {
|
|
736
747
|
const ppObj = updatePanelPlacement(targetElem, panelElem, {
|
|
737
|
-
placement,
|
|
748
|
+
placement: popupOpts.placement || placement,
|
|
738
749
|
teleportTo: btnTransfer
|
|
739
750
|
})
|
|
740
751
|
const panelStyle: { [key: string]: string | number } = Object.assign(ppObj.style, {
|
|
@@ -917,6 +928,7 @@ export default defineVxeComponent({
|
|
|
917
928
|
const isDateTimeType = computeIsDateTimeType.value
|
|
918
929
|
const defaultDates = computeDefaultDates.value
|
|
919
930
|
const defaultTimes = computeDefaultTimes.value
|
|
931
|
+
const popupOpts = computePopupOpts.value
|
|
920
932
|
const { startLabel, endLabel } = panelLabelObj
|
|
921
933
|
const { position } = shortcutOpts
|
|
922
934
|
const headerSlot = slots.header
|
|
@@ -925,6 +937,7 @@ export default defineVxeComponent({
|
|
|
925
937
|
const bottomSlot = slots.bottom
|
|
926
938
|
const leftSlot = slots.left
|
|
927
939
|
const rightSlot = slots.right
|
|
940
|
+
const ppClassName = popupOpts.className
|
|
928
941
|
const [sdDate, edDate] = defaultDates
|
|
929
942
|
const [sdTime, edTime] = defaultTimes
|
|
930
943
|
const hasShortcutBtn = shortcutList.length > 0
|
|
@@ -936,7 +949,7 @@ export default defineVxeComponent({
|
|
|
936
949
|
}, [
|
|
937
950
|
h('div', {
|
|
938
951
|
ref: refInputPanel,
|
|
939
|
-
class: ['vxe-table--ignore-clear vxe-date-range-picker--panel', `type--${type}`, {
|
|
952
|
+
class: ['vxe-table--ignore-clear vxe-date-range-picker--panel', `type--${type}`, ppClassName ? (XEUtils.isFunction(ppClassName) ? ppClassName({ $dateRangePicker: $xeDateRangePicker }) : ppClassName) : '', {
|
|
940
953
|
[`size--${vSize}`]: vSize,
|
|
941
954
|
'is--transfer': btnTransfer,
|
|
942
955
|
'ani--leave': isAniVisible,
|
|
@@ -2,7 +2,7 @@ import { h, Teleport, PropType, ref, inject, watch, computed, provide, onUnmount
|
|
|
2
2
|
import { defineVxeComponent } from '../../ui/src/comp'
|
|
3
3
|
import XEUtils from 'xe-utils'
|
|
4
4
|
import { getConfig, getIcon, getI18n, globalEvents, createEvent, renderer, useSize, GLOBAL_EVENT_KEYS, renderEmptyElement } from '../../ui'
|
|
5
|
-
import { getEventTargetNode,
|
|
5
|
+
import { getEventTargetNode, updatePanelPlacement } from '../../ui/src/dom'
|
|
6
6
|
import { getLastZIndex, nextZIndex, getFuncText } from '../../ui/src/utils'
|
|
7
7
|
import { getSlotVNs } from '../../ui/src/vn'
|
|
8
8
|
|
|
@@ -20,6 +20,10 @@ export default defineVxeComponent({
|
|
|
20
20
|
default: () => getConfig().iconPicker.size || getConfig().size
|
|
21
21
|
},
|
|
22
22
|
className: [String, Function] as PropType<VxeIconPickerPropTypes.ClassName>,
|
|
23
|
+
/**
|
|
24
|
+
* 已废弃,请使用 popupConfig.className
|
|
25
|
+
* @deprecated
|
|
26
|
+
*/
|
|
23
27
|
popupClassName: [String, Function] as PropType<VxeIconPickerPropTypes.PopupClassName>,
|
|
24
28
|
showIconTitle: {
|
|
25
29
|
type: Boolean as PropType<VxeIconPickerPropTypes.ShowIconTitle>,
|
|
@@ -35,6 +39,7 @@ export default defineVxeComponent({
|
|
|
35
39
|
},
|
|
36
40
|
icons: Array as PropType<VxeIconPickerPropTypes.Icons>,
|
|
37
41
|
placement: String as PropType<VxeIconPickerPropTypes.Placement>,
|
|
42
|
+
popupConfig: Object as PropType<VxeIconPickerPropTypes.PopupConfig>,
|
|
38
43
|
transfer: {
|
|
39
44
|
type: Boolean as PropType<VxeIconPickerPropTypes.Transfer>,
|
|
40
45
|
default: null
|
|
@@ -116,6 +121,10 @@ export default defineVxeComponent({
|
|
|
116
121
|
|
|
117
122
|
const computeBtnTransfer = computed(() => {
|
|
118
123
|
const { transfer } = props
|
|
124
|
+
const popupOpts = computePopupOpts.value
|
|
125
|
+
if (XEUtils.isBoolean(popupOpts.transfer)) {
|
|
126
|
+
return popupOpts.transfer
|
|
127
|
+
}
|
|
119
128
|
if (transfer === null) {
|
|
120
129
|
const globalTransfer = getConfig().iconPicker.transfer
|
|
121
130
|
if (XEUtils.isBoolean(globalTransfer)) {
|
|
@@ -160,6 +169,10 @@ export default defineVxeComponent({
|
|
|
160
169
|
})
|
|
161
170
|
})
|
|
162
171
|
|
|
172
|
+
const computePopupOpts = computed(() => {
|
|
173
|
+
return Object.assign({}, getConfig().iconPicker.popupConfig, props.popupConfig)
|
|
174
|
+
})
|
|
175
|
+
|
|
163
176
|
const computeIconGroupList = computed(() => {
|
|
164
177
|
const iconList = computeIconList.value
|
|
165
178
|
return XEUtils.chunk(iconList, 4)
|
|
@@ -178,74 +191,25 @@ export default defineVxeComponent({
|
|
|
178
191
|
}
|
|
179
192
|
|
|
180
193
|
const updatePlacement = () => {
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
let top = boundingTop + targetHeight
|
|
201
|
-
if (placement === 'top') {
|
|
202
|
-
panelPlacement = 'top'
|
|
203
|
-
top = boundingTop - panelHeight
|
|
204
|
-
} else if (!placement) {
|
|
205
|
-
// 如果下面不够放,则向上
|
|
206
|
-
if (top + panelHeight + marginSize > visibleHeight) {
|
|
207
|
-
panelPlacement = 'top'
|
|
208
|
-
top = boundingTop - panelHeight
|
|
209
|
-
}
|
|
210
|
-
// 如果上面不够放,则向下(优先)
|
|
211
|
-
if (top < marginSize) {
|
|
212
|
-
panelPlacement = 'bottom'
|
|
213
|
-
top = boundingTop + targetHeight
|
|
214
|
-
}
|
|
215
|
-
}
|
|
216
|
-
// 如果溢出右边
|
|
217
|
-
if (left + panelWidth + marginSize > visibleWidth) {
|
|
218
|
-
left -= left + panelWidth + marginSize - visibleWidth
|
|
219
|
-
}
|
|
220
|
-
// 如果溢出左边
|
|
221
|
-
if (left < marginSize) {
|
|
222
|
-
left = marginSize
|
|
223
|
-
}
|
|
224
|
-
Object.assign(panelStyle, {
|
|
225
|
-
left: `${left}px`,
|
|
226
|
-
top: `${top}px`,
|
|
227
|
-
minWidth: `${targetWidth}px`
|
|
228
|
-
})
|
|
229
|
-
} else {
|
|
230
|
-
if (placement === 'top') {
|
|
231
|
-
panelPlacement = 'top'
|
|
232
|
-
panelStyle.bottom = `${targetHeight}px`
|
|
233
|
-
} else if (!placement) {
|
|
234
|
-
// 如果下面不够放,则向上
|
|
235
|
-
if (boundingTop + targetHeight + panelHeight > visibleHeight) {
|
|
236
|
-
// 如果上面不够放,则向下(优先)
|
|
237
|
-
if (boundingTop - targetHeight - panelHeight > marginSize) {
|
|
238
|
-
panelPlacement = 'top'
|
|
239
|
-
panelStyle.bottom = `${targetHeight}px`
|
|
240
|
-
}
|
|
241
|
-
}
|
|
242
|
-
}
|
|
243
|
-
}
|
|
244
|
-
reactData.panelStyle = panelStyle
|
|
245
|
-
reactData.panelPlacement = panelPlacement
|
|
246
|
-
return nextTick()
|
|
247
|
-
}
|
|
248
|
-
})
|
|
194
|
+
const { placement } = props
|
|
195
|
+
const { panelIndex } = reactData
|
|
196
|
+
const targetElem = refElem.value
|
|
197
|
+
const panelElem = refOptionPanel.value
|
|
198
|
+
const btnTransfer = computeBtnTransfer.value
|
|
199
|
+
const popupOpts = computePopupOpts.value
|
|
200
|
+
const handleStyle = () => {
|
|
201
|
+
const ppObj = updatePanelPlacement(targetElem, panelElem, {
|
|
202
|
+
placement: popupOpts.placement || placement,
|
|
203
|
+
teleportTo: btnTransfer
|
|
204
|
+
})
|
|
205
|
+
const panelStyle: { [key: string]: string | number } = Object.assign(ppObj.style, {
|
|
206
|
+
zIndex: panelIndex
|
|
207
|
+
})
|
|
208
|
+
reactData.panelStyle = panelStyle
|
|
209
|
+
reactData.panelPlacement = ppObj.placement
|
|
210
|
+
}
|
|
211
|
+
handleStyle()
|
|
212
|
+
return nextTick().then(handleStyle)
|
|
249
213
|
}
|
|
250
214
|
|
|
251
215
|
const showOptionPanel = () => {
|
|
@@ -535,13 +499,15 @@ export default defineVxeComponent({
|
|
|
535
499
|
}
|
|
536
500
|
|
|
537
501
|
const renderVN = () => {
|
|
538
|
-
const { className,
|
|
502
|
+
const { className, clearable } = props
|
|
539
503
|
const { initialized, isActivated, isAniVisible, visiblePanel, selectIcon } = reactData
|
|
540
504
|
const vSize = computeSize.value
|
|
541
505
|
const isDisabled = computeIsDisabled.value
|
|
542
506
|
const btnTransfer = computeBtnTransfer.value
|
|
543
507
|
const formReadonly = computeFormReadonly.value
|
|
544
508
|
const inpPlaceholder = computeInpPlaceholder.value
|
|
509
|
+
const popupOpts = computePopupOpts.value
|
|
510
|
+
const ppClassName = popupOpts.className || props.popupClassName
|
|
545
511
|
|
|
546
512
|
if (formReadonly) {
|
|
547
513
|
return h('div', {
|
|
@@ -604,7 +570,7 @@ export default defineVxeComponent({
|
|
|
604
570
|
}, [
|
|
605
571
|
h('div', {
|
|
606
572
|
ref: refOptionPanel,
|
|
607
|
-
class: ['vxe-table--ignore-clear vxe-ico-picker--panel',
|
|
573
|
+
class: ['vxe-table--ignore-clear vxe-ico-picker--panel', ppClassName ? (XEUtils.isFunction(ppClassName) ? ppClassName({ $iconPicker: $xeIconPicker }) : ppClassName) : '', {
|
|
608
574
|
[`size--${vSize}`]: vSize,
|
|
609
575
|
'is--transfer': btnTransfer,
|
|
610
576
|
'ani--leave': isAniVisible,
|
|
@@ -18,6 +18,10 @@ export default defineVxeComponent({
|
|
|
18
18
|
type: String as PropType<VxePulldownPropTypes.Trigger>,
|
|
19
19
|
default: getConfig().pulldown.trigger
|
|
20
20
|
},
|
|
21
|
+
/**
|
|
22
|
+
* 已废弃,请使用 popupConfig.zIndex
|
|
23
|
+
* @deprecated
|
|
24
|
+
*/
|
|
21
25
|
zIndex: Number as PropType<VxePulldownPropTypes.ZIndex>,
|
|
22
26
|
size: {
|
|
23
27
|
type: String as PropType<VxePulldownPropTypes.Size>,
|
|
@@ -28,8 +32,13 @@ export default defineVxeComponent({
|
|
|
28
32
|
type: [String, Function] as PropType<VxePulldownPropTypes.ClassName>,
|
|
29
33
|
default: getConfig().pulldown.className
|
|
30
34
|
},
|
|
35
|
+
/**
|
|
36
|
+
* 已废弃,请使用 popupConfig.className
|
|
37
|
+
* @deprecated
|
|
38
|
+
*/
|
|
31
39
|
popupClassName: [String, Function] as PropType<VxePulldownPropTypes.PopupClassName>,
|
|
32
40
|
showPopupShadow: Boolean as PropType<VxePulldownPropTypes.ShowPopupShadow>,
|
|
41
|
+
popupConfig: Object as PropType<VxePulldownPropTypes.PopupConfig>,
|
|
33
42
|
destroyOnClose: {
|
|
34
43
|
type: Boolean as PropType<VxePulldownPropTypes.DestroyOnClose>,
|
|
35
44
|
default: getConfig().pulldown.destroyOnClose
|
|
@@ -79,6 +88,10 @@ export default defineVxeComponent({
|
|
|
79
88
|
|
|
80
89
|
const computeBtnTransfer = computed(() => {
|
|
81
90
|
const { transfer } = props
|
|
91
|
+
const popupOpts = computePopupOpts.value
|
|
92
|
+
if (XEUtils.isBoolean(popupOpts.transfer)) {
|
|
93
|
+
return popupOpts.transfer
|
|
94
|
+
}
|
|
82
95
|
if (transfer === null) {
|
|
83
96
|
const globalTransfer = getConfig().pulldown.transfer
|
|
84
97
|
if (XEUtils.isBoolean(globalTransfer)) {
|
|
@@ -91,6 +104,10 @@ export default defineVxeComponent({
|
|
|
91
104
|
return transfer
|
|
92
105
|
})
|
|
93
106
|
|
|
107
|
+
const computePopupOpts = computed(() => {
|
|
108
|
+
return Object.assign({}, getConfig().pulldown.popupConfig, props.popupConfig)
|
|
109
|
+
})
|
|
110
|
+
|
|
94
111
|
const refMaps: PulldownPrivateRef = {
|
|
95
112
|
refElem
|
|
96
113
|
}
|
|
@@ -107,9 +124,10 @@ export default defineVxeComponent({
|
|
|
107
124
|
let pulldownMethods = {} as PulldownMethods
|
|
108
125
|
|
|
109
126
|
const updateZindex = () => {
|
|
110
|
-
const
|
|
111
|
-
|
|
112
|
-
|
|
127
|
+
const popupOpts = computePopupOpts.value
|
|
128
|
+
const customZIndex = popupOpts.zIndex || props.zIndex
|
|
129
|
+
if (customZIndex) {
|
|
130
|
+
reactData.panelIndex = XEUtils.toNumber(customZIndex)
|
|
113
131
|
} else if (reactData.panelIndex < getLastZIndex()) {
|
|
114
132
|
reactData.panelIndex = nextZIndex()
|
|
115
133
|
}
|
|
@@ -128,9 +146,10 @@ export default defineVxeComponent({
|
|
|
128
146
|
const targetElem = refPulldownContent.value
|
|
129
147
|
const panelElem = refPulldownPanel.value
|
|
130
148
|
const btnTransfer = computeBtnTransfer.value
|
|
149
|
+
const popupOpts = computePopupOpts.value
|
|
131
150
|
const handleStyle = () => {
|
|
132
151
|
const ppObj = updatePanelPlacement(targetElem, panelElem, {
|
|
133
|
-
placement,
|
|
152
|
+
placement: popupOpts.placement || placement,
|
|
134
153
|
teleportTo: btnTransfer
|
|
135
154
|
})
|
|
136
155
|
const panelStyle: { [key: string]: string | number } = Object.assign(ppObj.style, {
|
|
@@ -338,14 +357,16 @@ export default defineVxeComponent({
|
|
|
338
357
|
}
|
|
339
358
|
|
|
340
359
|
const renderVN = () => {
|
|
341
|
-
const { className, options,
|
|
360
|
+
const { className, options, showPopupShadow, destroyOnClose, disabled } = props
|
|
342
361
|
const { initialized, isActivated, isAniVisible, visiblePanel, panelStyle, panelPlacement } = reactData
|
|
343
362
|
const btnTransfer = computeBtnTransfer.value
|
|
344
363
|
const vSize = computeSize.value
|
|
364
|
+
const popupOpts = computePopupOpts.value
|
|
345
365
|
const defaultSlot = slots.default
|
|
346
366
|
const headerSlot = slots.header
|
|
347
367
|
const footerSlot = slots.footer
|
|
348
368
|
const dropdownSlot = slots.dropdown
|
|
369
|
+
const ppClassName = popupOpts.className || props.popupClassName
|
|
349
370
|
|
|
350
371
|
return h('div', {
|
|
351
372
|
ref: refElem,
|
|
@@ -367,7 +388,7 @@ export default defineVxeComponent({
|
|
|
367
388
|
}, [
|
|
368
389
|
h('div', {
|
|
369
390
|
ref: refPulldownPanel,
|
|
370
|
-
class: ['vxe-table--ignore-clear vxe-pulldown--panel',
|
|
391
|
+
class: ['vxe-table--ignore-clear vxe-pulldown--panel', ppClassName ? (XEUtils.isFunction(ppClassName) ? ppClassName({ $pulldown: $xePulldown }) : ppClassName) : '', {
|
|
371
392
|
[`size--${vSize}`]: vSize,
|
|
372
393
|
'is--transfer': btnTransfer,
|
|
373
394
|
'ani--leave': isAniVisible,
|
|
@@ -80,18 +80,31 @@ export default defineVxeComponent({
|
|
|
80
80
|
optionGroupProps: Object as PropType<VxeSelectPropTypes.OptionGroupProps>,
|
|
81
81
|
optionConfig: Object as PropType<VxeSelectPropTypes.OptionConfig>,
|
|
82
82
|
className: [String, Function] as PropType<VxeSelectPropTypes.ClassName>,
|
|
83
|
+
/**
|
|
84
|
+
* 已废弃,请使用 popupConfig.className
|
|
85
|
+
* @deprecated
|
|
86
|
+
*/
|
|
83
87
|
popupClassName: [String, Function] as PropType<VxeSelectPropTypes.PopupClassName>,
|
|
84
88
|
max: {
|
|
85
89
|
type: [String, Number] as PropType<VxeSelectPropTypes.Max>,
|
|
86
90
|
default: null
|
|
87
91
|
},
|
|
92
|
+
/**
|
|
93
|
+
* 已废弃,请使用 popupConfig.zIndex
|
|
94
|
+
* @deprecated
|
|
95
|
+
*/
|
|
88
96
|
zIndex: Number as PropType<VxeSelectPropTypes.ZIndex>,
|
|
89
97
|
size: {
|
|
90
98
|
type: String as PropType<VxeSelectPropTypes.Size>,
|
|
91
99
|
default: () => getConfig().select.size || getConfig().size
|
|
92
100
|
},
|
|
93
101
|
filterable: Boolean as PropType<VxeSelectPropTypes.Filterable>,
|
|
102
|
+
/**
|
|
103
|
+
* 已废弃,被 filter-config.filterMethod 替换
|
|
104
|
+
* @deprecated
|
|
105
|
+
*/
|
|
94
106
|
filterMethod: Function as PropType<VxeSelectPropTypes.FilterMethod>,
|
|
107
|
+
filterConfig: Object as PropType<VxeSelectPropTypes.FilterConfig>,
|
|
95
108
|
remote: Boolean as PropType<VxeSelectPropTypes.Remote>,
|
|
96
109
|
remoteConfig: Object as PropType<VxeSelectPropTypes.RemoteConfig>,
|
|
97
110
|
emptyText: String as PropType<VxeSelectPropTypes.EmptyText>,
|
|
@@ -227,6 +240,10 @@ export default defineVxeComponent({
|
|
|
227
240
|
|
|
228
241
|
const computeBtnTransfer = computed(() => {
|
|
229
242
|
const { transfer } = props
|
|
243
|
+
const popupOpts = computePopupOpts.value
|
|
244
|
+
if (XEUtils.isBoolean(popupOpts.transfer)) {
|
|
245
|
+
return popupOpts.transfer
|
|
246
|
+
}
|
|
230
247
|
if (transfer === null) {
|
|
231
248
|
const globalTransfer = getConfig().select.transfer
|
|
232
249
|
if (XEUtils.isBoolean(globalTransfer)) {
|
|
@@ -288,7 +305,7 @@ export default defineVxeComponent({
|
|
|
288
305
|
})
|
|
289
306
|
|
|
290
307
|
const computePopupOpts = computed(() => {
|
|
291
|
-
return Object.assign({}, getConfig().
|
|
308
|
+
return Object.assign({}, getConfig().select.popupConfig, props.popupConfig)
|
|
292
309
|
})
|
|
293
310
|
|
|
294
311
|
const computeVirtualYOpts = computed(() => {
|
|
@@ -299,6 +316,10 @@ export default defineVxeComponent({
|
|
|
299
316
|
return Object.assign({}, getConfig().select.remoteConfig, props.remoteConfig)
|
|
300
317
|
})
|
|
301
318
|
|
|
319
|
+
const computeFilterOpts = computed(() => {
|
|
320
|
+
return Object.assign({}, getConfig().select.filterConfig, props.filterConfig)
|
|
321
|
+
})
|
|
322
|
+
|
|
302
323
|
const computeOptionOpts = computed(() => {
|
|
303
324
|
return Object.assign({}, getConfig().select.optionConfig, props.optionConfig)
|
|
304
325
|
})
|
|
@@ -481,18 +502,20 @@ export default defineVxeComponent({
|
|
|
481
502
|
* 处理选项,当选项被动态显示/隐藏时可能会用到
|
|
482
503
|
*/
|
|
483
504
|
const handleOption = () => {
|
|
484
|
-
const { remote, modelValue, filterable
|
|
505
|
+
const { remote, modelValue, filterable } = props
|
|
485
506
|
const { searchValue } = reactData
|
|
486
507
|
const { fullData, optFullValMaps } = internalData
|
|
487
508
|
const labelField = computeLabelField.value
|
|
488
509
|
const valueField = computeValueField.value
|
|
510
|
+
const filterOpts = computeFilterOpts.value
|
|
511
|
+
const frMethod = filterOpts.filterMethod || props.filterMethod
|
|
489
512
|
const searchStr = `${searchValue || ''}`.toLowerCase()
|
|
490
513
|
let avList: any[] = []
|
|
491
514
|
if (remote) {
|
|
492
515
|
avList = fullData.filter(isOptionVisible)
|
|
493
516
|
} else {
|
|
494
|
-
if (filterable &&
|
|
495
|
-
avList = fullData.filter(option => isOptionVisible(option) &&
|
|
517
|
+
if (filterable && frMethod) {
|
|
518
|
+
avList = fullData.filter(option => isOptionVisible(option) && frMethod({ $select: $xeSelect, group: null, option, searchValue, value: modelValue }))
|
|
496
519
|
} else if (filterable) {
|
|
497
520
|
avList = fullData.filter(option => isOptionVisible(option) && (!searchStr || `${option[labelField] || option[valueField]}`.toLowerCase().indexOf(searchStr) > -1))
|
|
498
521
|
} else {
|
|
@@ -516,9 +539,10 @@ export default defineVxeComponent({
|
|
|
516
539
|
}
|
|
517
540
|
|
|
518
541
|
const updateZIndex = () => {
|
|
519
|
-
const
|
|
520
|
-
|
|
521
|
-
|
|
542
|
+
const popupOpts = computePopupOpts.value
|
|
543
|
+
const customZIndex = popupOpts.zIndex || props.zIndex
|
|
544
|
+
if (customZIndex) {
|
|
545
|
+
reactData.panelIndex = XEUtils.toNumber(customZIndex)
|
|
522
546
|
} else if (reactData.panelIndex < getLastZIndex()) {
|
|
523
547
|
reactData.panelIndex = nextZIndex()
|
|
524
548
|
}
|
|
@@ -530,9 +554,10 @@ export default defineVxeComponent({
|
|
|
530
554
|
const targetElem = refElem.value
|
|
531
555
|
const panelElem = refOptionPanel.value
|
|
532
556
|
const btnTransfer = computeBtnTransfer.value
|
|
557
|
+
const popupOpts = computePopupOpts.value
|
|
533
558
|
const handleStyle = () => {
|
|
534
559
|
const ppObj = updatePanelPlacement(targetElem, panelElem, {
|
|
535
|
-
placement,
|
|
560
|
+
placement: popupOpts.placement || placement,
|
|
536
561
|
teleportTo: btnTransfer
|
|
537
562
|
})
|
|
538
563
|
const panelStyle: { [key: string]: string | number } = Object.assign(ppObj.style, {
|
|
@@ -575,7 +600,7 @@ export default defineVxeComponent({
|
|
|
575
600
|
reactData.isActivated = true
|
|
576
601
|
reactData.isAniVisible = true
|
|
577
602
|
if (filterable) {
|
|
578
|
-
if (remote && remoteOpts.enabled && remoteOpts.autoLoad && !fullData.length) {
|
|
603
|
+
if (remote && remoteOpts.enabled && ((remoteOpts.autoLoad && !fullData.length) || (fullData.length && remoteOpts.clearOnClose))) {
|
|
579
604
|
handleSearchEvent()
|
|
580
605
|
} else {
|
|
581
606
|
handleOption()
|
|
@@ -600,7 +625,20 @@ export default defineVxeComponent({
|
|
|
600
625
|
}
|
|
601
626
|
|
|
602
627
|
const hideOptionPanel = () => {
|
|
603
|
-
|
|
628
|
+
const { filterable, remote } = props
|
|
629
|
+
const filterOpts = computeFilterOpts.value
|
|
630
|
+
const remoteOpts = computeRemoteOpts.value
|
|
631
|
+
if (remote) {
|
|
632
|
+
if (remoteOpts.clearOnClose) {
|
|
633
|
+
reactData.searchValue = ''
|
|
634
|
+
}
|
|
635
|
+
} else if (filterable) {
|
|
636
|
+
if (filterOpts.clearOnClose) {
|
|
637
|
+
reactData.searchValue = ''
|
|
638
|
+
}
|
|
639
|
+
} else {
|
|
640
|
+
reactData.searchValue = ''
|
|
641
|
+
}
|
|
604
642
|
reactData.searchLoading = false
|
|
605
643
|
reactData.visiblePanel = false
|
|
606
644
|
internalData.hpTimeout = setTimeout(() => {
|
|
@@ -918,14 +956,14 @@ export default defineVxeComponent({
|
|
|
918
956
|
}
|
|
919
957
|
|
|
920
958
|
const handleSearchEvent = () => {
|
|
921
|
-
const { modelValue, remote
|
|
959
|
+
const { modelValue, remote } = props
|
|
922
960
|
const { searchValue } = reactData
|
|
923
961
|
const remoteOpts = computeRemoteOpts.value
|
|
924
|
-
const
|
|
925
|
-
if (remote &&
|
|
962
|
+
const qyMethod = remoteOpts.queryMethod || props.remoteMethod
|
|
963
|
+
if (remote && qyMethod && remoteOpts.enabled) {
|
|
926
964
|
reactData.searchLoading = true
|
|
927
965
|
Promise.resolve(
|
|
928
|
-
|
|
966
|
+
qyMethod({ $select: $xeSelect, searchValue, value: modelValue })
|
|
929
967
|
).then(() => nextTick())
|
|
930
968
|
.catch(() => nextTick())
|
|
931
969
|
.finally(() => {
|
|
@@ -1417,11 +1455,11 @@ export default defineVxeComponent({
|
|
|
1417
1455
|
const inpPlaceholder = computeInpPlaceholder.value
|
|
1418
1456
|
const popupWrapperStyle = computePopupWrapperStyle.value
|
|
1419
1457
|
const popupOpts = computePopupOpts.value
|
|
1420
|
-
const popupClassName = popupOpts.className || props.popupClassName
|
|
1421
1458
|
const defaultSlot = slots.default
|
|
1422
1459
|
const headerSlot = slots.header
|
|
1423
1460
|
const footerSlot = slots.footer
|
|
1424
1461
|
const prefixSlot = slots.prefix
|
|
1462
|
+
const ppClassName = popupOpts.className || props.popupClassName
|
|
1425
1463
|
if (formReadonly) {
|
|
1426
1464
|
return h('div', {
|
|
1427
1465
|
ref: refElem,
|
|
@@ -1481,7 +1519,7 @@ export default defineVxeComponent({
|
|
|
1481
1519
|
}, [
|
|
1482
1520
|
h('div', {
|
|
1483
1521
|
ref: refOptionPanel,
|
|
1484
|
-
class: ['vxe-table--ignore-clear vxe-select--panel',
|
|
1522
|
+
class: ['vxe-table--ignore-clear vxe-select--panel', ppClassName ? (XEUtils.isFunction(ppClassName) ? ppClassName({ $select: $xeSelect }) : ppClassName) : '', {
|
|
1485
1523
|
[`size--${vSize}`]: vSize,
|
|
1486
1524
|
'is--transfer': btnTransfer,
|
|
1487
1525
|
'ani--leave': !loading && isAniVisible,
|
|
@@ -50,6 +50,10 @@ export default defineVxeComponent({
|
|
|
50
50
|
options: Array as PropType<VxeTableSelectPropTypes.Options>,
|
|
51
51
|
optionProps: Object as PropType<VxeTableSelectPropTypes.OptionProps>,
|
|
52
52
|
lazyOptions: Array as PropType<VxeTableSelectPropTypes.LazyOptions>,
|
|
53
|
+
/**
|
|
54
|
+
* 已废弃,请使用 popupConfig.zIndex
|
|
55
|
+
* @deprecated
|
|
56
|
+
*/
|
|
53
57
|
zIndex: Number as PropType<VxeTableSelectPropTypes.ZIndex>,
|
|
54
58
|
size: {
|
|
55
59
|
type: String as PropType<VxeTableSelectPropTypes.Size>,
|
|
@@ -139,8 +143,12 @@ export default defineVxeComponent({
|
|
|
139
143
|
|
|
140
144
|
const computeBtnTransfer = computed(() => {
|
|
141
145
|
const { transfer } = props
|
|
146
|
+
const popupOpts = computePopupOpts.value
|
|
147
|
+
if (XEUtils.isBoolean(popupOpts.transfer)) {
|
|
148
|
+
return popupOpts.transfer
|
|
149
|
+
}
|
|
142
150
|
if (transfer === null) {
|
|
143
|
-
const globalTransfer = getConfig().
|
|
151
|
+
const globalTransfer = getConfig().tableSelect.transfer
|
|
144
152
|
if (XEUtils.isBoolean(globalTransfer)) {
|
|
145
153
|
return globalTransfer
|
|
146
154
|
}
|
|
@@ -407,9 +415,10 @@ export default defineVxeComponent({
|
|
|
407
415
|
}
|
|
408
416
|
|
|
409
417
|
const updateZindex = () => {
|
|
410
|
-
const
|
|
411
|
-
|
|
412
|
-
|
|
418
|
+
const popupOpts = computePopupOpts.value
|
|
419
|
+
const customZIndex = popupOpts.zIndex || props.zIndex
|
|
420
|
+
if (customZIndex) {
|
|
421
|
+
reactData.panelIndex = XEUtils.toNumber(customZIndex)
|
|
413
422
|
} else if (reactData.panelIndex < getLastZIndex()) {
|
|
414
423
|
reactData.panelIndex = nextZIndex()
|
|
415
424
|
}
|
|
@@ -421,9 +430,10 @@ export default defineVxeComponent({
|
|
|
421
430
|
const targetElem = refElem.value
|
|
422
431
|
const panelElem = refOptionPanel.value
|
|
423
432
|
const btnTransfer = computeBtnTransfer.value
|
|
433
|
+
const popupOpts = computePopupOpts.value
|
|
424
434
|
const handleStyle = () => {
|
|
425
435
|
const ppObj = updatePanelPlacement(targetElem, panelElem, {
|
|
426
|
-
placement,
|
|
436
|
+
placement: popupOpts.placement || placement,
|
|
427
437
|
teleportTo: btnTransfer
|
|
428
438
|
})
|
|
429
439
|
const panelStyle: { [key: string]: string | number } = Object.assign(ppObj.style, {
|
|
@@ -620,13 +630,13 @@ export default defineVxeComponent({
|
|
|
620
630
|
const btnTransfer = computeBtnTransfer.value
|
|
621
631
|
const formReadonly = computeFormReadonly.value
|
|
622
632
|
const popupOpts = computePopupOpts.value
|
|
623
|
-
const { className: popupClassName } = popupOpts
|
|
624
633
|
const selectGridOpts = computeSelectGridOpts.value
|
|
625
634
|
const rowOpts = computeRowOpts.value
|
|
626
635
|
const popupWrapperStyle = computePopupWrapperStyle.value
|
|
627
636
|
const headerSlot = slots.header
|
|
628
637
|
const footerSlot = slots.footer
|
|
629
638
|
const prefixSlot = slots.prefix
|
|
639
|
+
const ppClassName = popupOpts.className
|
|
630
640
|
|
|
631
641
|
if (formReadonly) {
|
|
632
642
|
return h('div', {
|
|
@@ -674,7 +684,7 @@ export default defineVxeComponent({
|
|
|
674
684
|
}, [
|
|
675
685
|
h('div', {
|
|
676
686
|
ref: refOptionPanel,
|
|
677
|
-
class: ['vxe-table--ignore-clear vxe-table-select--panel',
|
|
687
|
+
class: ['vxe-table--ignore-clear vxe-table-select--panel', ppClassName ? (XEUtils.isFunction(ppClassName) ? ppClassName({ $tableSelect: $xeTableSelect }) : ppClassName) : '', {
|
|
678
688
|
[`size--${vSize}`]: vSize,
|
|
679
689
|
'is--transfer': btnTransfer,
|
|
680
690
|
'ani--leave': !loading && isAniVisible,
|