vxe-pc-ui 4.15.13 → 4.15.14
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 +708 -139
- package/dist/style.css +1 -1
- package/dist/style.min.css +1 -1
- package/es/button/style.css +11 -0
- package/es/button/style.min.css +1 -1
- package/es/checkbox/src/button.js +3 -1
- package/es/checkbox/src/group.js +6 -1
- package/es/checkbox-button/style.css +151 -8
- package/es/checkbox-button/style.min.css +1 -1
- package/es/icon/style.css +1 -1
- package/es/icon-picker/src/icon-picker.js +145 -46
- package/es/icon-picker/style.css +29 -5
- package/es/icon-picker/style.min.css +1 -1
- package/es/language/ar-EG.js +3 -0
- package/es/language/de-DE.js +3 -0
- package/es/language/en-US.js +3 -0
- package/es/language/es-ES.js +3 -0
- package/es/language/fr-FR.js +3 -0
- package/es/language/hu-HU.js +3 -0
- package/es/language/hy-AM.js +3 -0
- package/es/language/id-ID.js +3 -0
- package/es/language/it-IT.js +3 -0
- package/es/language/ja-JP.js +3 -0
- package/es/language/ko-KR.js +3 -0
- package/es/language/ms-MY.js +3 -0
- package/es/language/nb-NO.js +3 -0
- package/es/language/pt-BR.js +3 -0
- package/es/language/ru-RU.js +3 -0
- package/es/language/th-TH.js +3 -0
- package/es/language/ug-CN.js +3 -0
- package/es/language/uk-UA.js +3 -0
- package/es/language/uz-UZ.js +3 -0
- package/es/language/vi-VN.js +3 -0
- package/es/language/zh-CHT.js +3 -0
- package/es/language/zh-CN.js +3 -0
- package/es/list/src/list.js +14 -1
- package/es/radio/src/button.js +3 -1
- package/es/radio/src/group.js +6 -1
- package/es/radio-button/style.css +151 -8
- package/es/radio-button/style.min.css +1 -1
- package/es/style.css +1 -1
- package/es/style.min.css +1 -1
- package/es/tree/src/tree.js +441 -18
- package/es/tree/src/util.js +15 -0
- package/es/ui/index.js +5 -2
- package/es/ui/src/log.js +1 -1
- package/es/vxe-button/style.css +11 -0
- package/es/vxe-button/style.min.css +1 -1
- package/es/vxe-checkbox-button/style.css +151 -8
- package/es/vxe-checkbox-button/style.min.css +1 -1
- package/es/vxe-icon-picker/style.css +29 -5
- package/es/vxe-icon-picker/style.min.css +1 -1
- package/es/vxe-radio-button/style.css +151 -8
- package/es/vxe-radio-button/style.min.css +1 -1
- package/lib/button/style/style.css +11 -0
- package/lib/button/style/style.min.css +1 -1
- package/lib/checkbox/src/button.js +3 -1
- package/lib/checkbox/src/button.min.js +1 -1
- package/lib/checkbox/src/group.js +6 -0
- package/lib/checkbox/src/group.min.js +1 -1
- package/lib/checkbox-button/style/style.css +151 -8
- package/lib/checkbox-button/style/style.min.css +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 +143 -29
- package/lib/icon-picker/src/icon-picker.min.js +1 -1
- package/lib/icon-picker/style/style.css +29 -5
- package/lib/icon-picker/style/style.min.css +1 -1
- package/lib/index.umd.js +731 -49
- package/lib/index.umd.min.js +1 -1
- package/lib/language/ar-EG.js +3 -0
- package/lib/language/ar-EG.min.js +1 -1
- package/lib/language/ar-EG.umd.js +3 -0
- package/lib/language/de-DE.js +3 -0
- package/lib/language/de-DE.min.js +1 -1
- package/lib/language/de-DE.umd.js +3 -0
- package/lib/language/en-US.js +3 -0
- package/lib/language/en-US.min.js +1 -1
- package/lib/language/en-US.umd.js +3 -0
- package/lib/language/es-ES.js +3 -0
- package/lib/language/es-ES.min.js +1 -1
- package/lib/language/es-ES.umd.js +3 -0
- package/lib/language/fr-FR.js +3 -0
- package/lib/language/fr-FR.min.js +1 -1
- package/lib/language/fr-FR.umd.js +3 -0
- package/lib/language/hu-HU.js +3 -0
- package/lib/language/hu-HU.min.js +1 -1
- package/lib/language/hu-HU.umd.js +3 -0
- package/lib/language/hy-AM.js +3 -0
- package/lib/language/hy-AM.min.js +1 -1
- package/lib/language/hy-AM.umd.js +3 -0
- package/lib/language/id-ID.js +3 -0
- package/lib/language/id-ID.min.js +1 -1
- package/lib/language/id-ID.umd.js +3 -0
- package/lib/language/it-IT.js +3 -0
- package/lib/language/it-IT.min.js +1 -1
- package/lib/language/it-IT.umd.js +3 -0
- package/lib/language/ja-JP.js +3 -0
- package/lib/language/ja-JP.min.js +1 -1
- package/lib/language/ja-JP.umd.js +3 -0
- package/lib/language/ko-KR.js +3 -0
- package/lib/language/ko-KR.min.js +1 -1
- package/lib/language/ko-KR.umd.js +3 -0
- package/lib/language/ms-MY.js +3 -0
- package/lib/language/ms-MY.min.js +1 -1
- package/lib/language/ms-MY.umd.js +3 -0
- package/lib/language/nb-NO.js +3 -0
- package/lib/language/nb-NO.min.js +1 -1
- package/lib/language/nb-NO.umd.js +3 -0
- package/lib/language/pt-BR.js +3 -0
- package/lib/language/pt-BR.min.js +1 -1
- package/lib/language/pt-BR.umd.js +3 -0
- package/lib/language/ru-RU.js +3 -0
- package/lib/language/ru-RU.min.js +1 -1
- package/lib/language/ru-RU.umd.js +3 -0
- package/lib/language/th-TH.js +3 -0
- package/lib/language/th-TH.min.js +1 -1
- package/lib/language/th-TH.umd.js +3 -0
- package/lib/language/ug-CN.js +3 -0
- package/lib/language/ug-CN.min.js +1 -1
- package/lib/language/ug-CN.umd.js +3 -0
- package/lib/language/uk-UA.js +3 -0
- package/lib/language/uk-UA.min.js +1 -1
- package/lib/language/uk-UA.umd.js +3 -0
- package/lib/language/uz-UZ.js +3 -0
- package/lib/language/uz-UZ.min.js +1 -1
- package/lib/language/uz-UZ.umd.js +3 -0
- package/lib/language/vi-VN.js +3 -0
- package/lib/language/vi-VN.min.js +1 -1
- package/lib/language/vi-VN.umd.js +3 -0
- package/lib/language/zh-CHT.js +3 -0
- package/lib/language/zh-CHT.min.js +1 -1
- package/lib/language/zh-CHT.umd.js +3 -0
- package/lib/language/zh-CN.js +3 -0
- package/lib/language/zh-CN.min.js +1 -1
- package/lib/language/zh-CN.umd.js +3 -0
- package/lib/list/src/list.js +19 -1
- package/lib/list/src/list.min.js +1 -1
- package/lib/radio/src/button.js +3 -1
- package/lib/radio/src/button.min.js +1 -1
- package/lib/radio/src/group.js +7 -1
- package/lib/radio/src/group.min.js +1 -1
- package/lib/radio-button/style/style.css +151 -8
- package/lib/radio-button/style/style.min.css +1 -1
- package/lib/style.css +1 -1
- package/lib/style.min.css +1 -1
- package/lib/tree/src/tree.js +525 -14
- package/lib/tree/src/tree.min.js +1 -1
- package/lib/tree/src/util.js +16 -0
- package/lib/tree/src/util.min.js +1 -1
- package/lib/ui/index.js +5 -2
- 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-button/style/style.css +11 -0
- package/lib/vxe-button/style/style.min.css +1 -1
- package/lib/vxe-checkbox-button/style/style.css +151 -8
- package/lib/vxe-checkbox-button/style/style.min.css +1 -1
- package/lib/vxe-icon-picker/style/style.css +29 -5
- package/lib/vxe-icon-picker/style/style.min.css +1 -1
- package/lib/vxe-radio-button/style/style.css +151 -8
- package/lib/vxe-radio-button/style/style.min.css +1 -1
- package/package.json +1 -1
- package/packages/checkbox/src/button.ts +3 -1
- package/packages/checkbox/src/group.ts +6 -1
- package/packages/icon-picker/src/icon-picker.ts +157 -48
- package/packages/language/ar-EG.ts +3 -0
- package/packages/language/de-DE.ts +3 -0
- package/packages/language/en-US.ts +3 -0
- package/packages/language/es-ES.ts +3 -0
- package/packages/language/fr-FR.ts +3 -0
- package/packages/language/hu-HU.ts +3 -0
- package/packages/language/hy-AM.ts +3 -0
- package/packages/language/id-ID.ts +3 -0
- package/packages/language/it-IT.ts +3 -0
- package/packages/language/ja-JP.ts +3 -0
- package/packages/language/ko-KR.ts +3 -0
- package/packages/language/ms-MY.ts +3 -0
- package/packages/language/nb-NO.ts +3 -0
- package/packages/language/pt-BR.ts +3 -0
- package/packages/language/ru-RU.ts +3 -0
- package/packages/language/th-TH.ts +3 -0
- package/packages/language/ug-CN.ts +3 -0
- package/packages/language/uk-UA.ts +3 -0
- package/packages/language/uz-UZ.ts +3 -0
- package/packages/language/vi-VN.ts +3 -0
- package/packages/language/zh-CHT.ts +3 -0
- package/packages/language/zh-CN.ts +3 -0
- package/packages/list/src/list.ts +14 -1
- package/packages/radio/src/button.ts +3 -1
- package/packages/radio/src/group.ts +6 -1
- package/packages/tree/src/tree.ts +443 -14
- package/packages/tree/src/util.ts +17 -1
- package/packages/ui/index.ts +4 -1
- package/styles/components/button.scss +24 -69
- package/styles/components/checkbox-button.scss +65 -13
- package/styles/components/icon-picker.scss +37 -11
- package/styles/components/radio-button.scss +65 -13
- package/styles/helpers/themeStatus.scss +58 -0
- package/types/all.d.ts +205 -0
- package/types/components/checkbox-group.d.ts +3 -1
- package/types/components/checkbox.d.ts +1 -1
- package/types/components/icon-picker.d.ts +27 -4
- package/types/components/list.d.ts +2 -2
- package/types/components/radio-group.d.ts +3 -1
- package/types/components/tree.d.ts +36 -0
- /package/es/icon/{iconfont.1782658269305.ttf → iconfont.1782742200841.ttf} +0 -0
- /package/es/icon/{iconfont.1782658269305.woff → iconfont.1782742200841.woff} +0 -0
- /package/es/icon/{iconfont.1782658269305.woff2 → iconfont.1782742200841.woff2} +0 -0
- /package/es/{iconfont.1782658269305.ttf → iconfont.1782742200841.ttf} +0 -0
- /package/es/{iconfont.1782658269305.woff → iconfont.1782742200841.woff} +0 -0
- /package/es/{iconfont.1782658269305.woff2 → iconfont.1782742200841.woff2} +0 -0
- /package/lib/icon/style/{iconfont.1782658269305.ttf → iconfont.1782742200841.ttf} +0 -0
- /package/lib/icon/style/{iconfont.1782658269305.woff → iconfont.1782742200841.woff} +0 -0
- /package/lib/icon/style/{iconfont.1782658269305.woff2 → iconfont.1782742200841.woff2} +0 -0
- /package/lib/{iconfont.1782658269305.ttf → iconfont.1782742200841.ttf} +0 -0
- /package/lib/{iconfont.1782658269305.woff → iconfont.1782742200841.woff} +0 -0
- /package/lib/{iconfont.1782658269305.woff2 → iconfont.1782742200841.woff2} +0 -0
|
@@ -1,14 +1,37 @@
|
|
|
1
|
-
import { h, Teleport, PropType, ref, inject, watch, computed, provide,
|
|
1
|
+
import { h, Teleport, PropType, ref, inject, watch, computed, provide, onBeforeUnmount, reactive, nextTick, onMounted } from 'vue'
|
|
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, updatePanelPlacement } from '../../ui/src/dom'
|
|
5
|
+
import { getEventTargetNode, toCssUnit, updatePanelPlacement } from '../../ui/src/dom'
|
|
6
6
|
import { getLastZIndex, nextZIndex, getFuncText } from '../../ui/src/utils'
|
|
7
7
|
import { getSlotVNs } from '../../ui/src/vn'
|
|
8
|
+
import VxeInputComponent from '../../input/src/input'
|
|
8
9
|
|
|
9
|
-
import type { VxeIconPickerPropTypes, VxeIconPickerConstructor, IconPickerInternalData, ValueOf, IconPickerReactData, VxeIconPickerEmits, IconPickerMethods, IconPickerPrivateRef, VxeIconPickerMethods, VxeIconPickerDefines, VxeDrawerConstructor, VxeDrawerMethods, VxeFormDefines, VxeFormConstructor, VxeFormPrivateMethods, VxeModalConstructor, VxeModalMethods } from '../../../types'
|
|
10
|
+
import type { VxeIconPickerPropTypes, VxeIconPickerConstructor, IconPickerInternalData, VxeInputConstructor, ValueOf, IconPickerReactData, VxeIconPickerEmits, IconPickerMethods, IconPickerPrivateRef, VxeIconPickerMethods, VxeIconPickerDefines, VxeDrawerConstructor, VxeDrawerMethods, VxeFormDefines, VxeFormConstructor, VxeFormPrivateMethods, VxeModalConstructor, VxeModalMethods, VxeComponentStyleType } from '../../../types'
|
|
10
11
|
import type { VxeTableConstructor, VxeTablePrivateMethods } from '../../../types/components/table'
|
|
11
12
|
|
|
13
|
+
function createReactData (): IconPickerReactData {
|
|
14
|
+
return {
|
|
15
|
+
initialized: false,
|
|
16
|
+
selectIcon: '',
|
|
17
|
+
panelIndex: 0,
|
|
18
|
+
panelStyle: {},
|
|
19
|
+
panelPlacement: null,
|
|
20
|
+
visiblePanel: false,
|
|
21
|
+
isAniVisible: false,
|
|
22
|
+
isActivated: false,
|
|
23
|
+
searchValue: '',
|
|
24
|
+
iconGroups: []
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
function createInternalData (): IconPickerInternalData {
|
|
29
|
+
return {
|
|
30
|
+
fullList: []
|
|
31
|
+
// hpTimeout: undefined
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
|
|
12
35
|
export default defineVxeComponent({
|
|
13
36
|
name: 'VxeIconPicker',
|
|
14
37
|
props: {
|
|
@@ -37,6 +60,11 @@ export default defineVxeComponent({
|
|
|
37
60
|
type: Boolean as PropType<VxeIconPickerPropTypes.Disabled>,
|
|
38
61
|
default: null
|
|
39
62
|
},
|
|
63
|
+
filterable: {
|
|
64
|
+
type: Boolean as PropType<VxeIconPickerPropTypes.Filterable>,
|
|
65
|
+
default: () => getConfig().iconPicker.filterable
|
|
66
|
+
},
|
|
67
|
+
filterConfig: Object as PropType<VxeIconPickerPropTypes.FilterConfig>,
|
|
40
68
|
icons: Array as PropType<VxeIconPickerPropTypes.Icons>,
|
|
41
69
|
placement: String as PropType<VxeIconPickerPropTypes.Placement>,
|
|
42
70
|
popupConfig: Object as PropType<VxeIconPickerPropTypes.PopupConfig>,
|
|
@@ -64,25 +92,16 @@ export default defineVxeComponent({
|
|
|
64
92
|
|
|
65
93
|
const { computeSize } = useSize(props)
|
|
66
94
|
|
|
67
|
-
const reactData = reactive
|
|
68
|
-
initialized: false,
|
|
69
|
-
selectIcon: `${props.modelValue || ''}`,
|
|
70
|
-
panelIndex: 0,
|
|
71
|
-
panelStyle: {},
|
|
72
|
-
panelPlacement: null,
|
|
73
|
-
visiblePanel: false,
|
|
74
|
-
isAniVisible: false,
|
|
75
|
-
isActivated: false
|
|
76
|
-
})
|
|
95
|
+
const reactData = reactive(createReactData())
|
|
77
96
|
|
|
78
|
-
const internalData
|
|
79
|
-
// hpTimeout: undefined
|
|
80
|
-
}
|
|
97
|
+
const internalData = createInternalData()
|
|
81
98
|
|
|
82
99
|
const refElem = ref<HTMLDivElement>()
|
|
83
100
|
const refInput = ref<HTMLInputElement>()
|
|
84
101
|
const refOptionPanel = ref<HTMLDivElement>()
|
|
85
102
|
|
|
103
|
+
const refInpSearch = ref<VxeInputConstructor>()
|
|
104
|
+
|
|
86
105
|
const refMaps: IconPickerPrivateRef = {
|
|
87
106
|
refElem
|
|
88
107
|
}
|
|
@@ -149,6 +168,20 @@ export default defineVxeComponent({
|
|
|
149
168
|
return getI18n('vxe.base.pleaseSelect')
|
|
150
169
|
})
|
|
151
170
|
|
|
171
|
+
const computePanelStyle = computed(() => {
|
|
172
|
+
const popupOpts = computePopupOpts.value
|
|
173
|
+
const { chunkSize, height, maxHeight } = popupOpts
|
|
174
|
+
const stys: VxeComponentStyleType = {
|
|
175
|
+
'--vxe-ui-icon-picker-item-width': `${100 / (chunkSize || 4)}%`
|
|
176
|
+
}
|
|
177
|
+
if (height) {
|
|
178
|
+
stys['--vxe-ui-icon-picker-panel-height'] = toCssUnit(height)
|
|
179
|
+
} else if (maxHeight) {
|
|
180
|
+
stys['--vxe-ui-icon-picker-panel-max-height'] = toCssUnit(maxHeight)
|
|
181
|
+
}
|
|
182
|
+
return stys
|
|
183
|
+
})
|
|
184
|
+
|
|
152
185
|
const computeIconList = computed<VxeIconPickerDefines.IconItemObj[]>(() => {
|
|
153
186
|
let { icons } = props
|
|
154
187
|
if (!icons || !icons.length) {
|
|
@@ -169,13 +202,12 @@ export default defineVxeComponent({
|
|
|
169
202
|
})
|
|
170
203
|
})
|
|
171
204
|
|
|
172
|
-
const
|
|
173
|
-
return Object.assign({}, getConfig().iconPicker.
|
|
205
|
+
const computeFilterOpts = computed(() => {
|
|
206
|
+
return Object.assign({}, getConfig().iconPicker.filterConfig, props.filterConfig)
|
|
174
207
|
})
|
|
175
208
|
|
|
176
|
-
const
|
|
177
|
-
|
|
178
|
-
return XEUtils.chunk(iconList, 4)
|
|
209
|
+
const computePopupOpts = computed(() => {
|
|
210
|
+
return Object.assign({}, getConfig().iconPicker.popupConfig, props.popupConfig)
|
|
179
211
|
})
|
|
180
212
|
|
|
181
213
|
const computeSelectIconItem = computed(() => {
|
|
@@ -197,6 +229,7 @@ export default defineVxeComponent({
|
|
|
197
229
|
const panelElem = refOptionPanel.value
|
|
198
230
|
const btnTransfer = computeBtnTransfer.value
|
|
199
231
|
const popupOpts = computePopupOpts.value
|
|
232
|
+
const { width } = popupOpts
|
|
200
233
|
const handleStyle = () => {
|
|
201
234
|
const ppObj = updatePanelPlacement(targetElem, panelElem, {
|
|
202
235
|
placement: popupOpts.placement || placement,
|
|
@@ -206,6 +239,12 @@ export default defineVxeComponent({
|
|
|
206
239
|
const panelStyle: { [key: string]: string | number } = Object.assign(ppObj.style, {
|
|
207
240
|
zIndex: panelIndex
|
|
208
241
|
})
|
|
242
|
+
if (width) {
|
|
243
|
+
Object.assign(panelStyle, {
|
|
244
|
+
width: toCssUnit(width),
|
|
245
|
+
minWidth: undefined
|
|
246
|
+
})
|
|
247
|
+
}
|
|
209
248
|
reactData.panelStyle = panelStyle
|
|
210
249
|
reactData.panelPlacement = ppObj.placement
|
|
211
250
|
}
|
|
@@ -242,6 +281,27 @@ export default defineVxeComponent({
|
|
|
242
281
|
}, 350)
|
|
243
282
|
}
|
|
244
283
|
|
|
284
|
+
const handleData = () => {
|
|
285
|
+
const { modelValue } = props
|
|
286
|
+
const { searchValue } = reactData
|
|
287
|
+
const filterOpts = computeFilterOpts.value
|
|
288
|
+
const { filterMethod } = filterOpts
|
|
289
|
+
const popupOpts = computePopupOpts.value
|
|
290
|
+
const { chunkSize } = popupOpts
|
|
291
|
+
const iconList = computeIconList.value
|
|
292
|
+
let visibleList = iconList
|
|
293
|
+
if (searchValue) {
|
|
294
|
+
const searchTxt = `${searchValue}`.toLowerCase()
|
|
295
|
+
visibleList = iconList.filter(item => {
|
|
296
|
+
if (filterMethod) {
|
|
297
|
+
return filterMethod({ option: item, value: modelValue, searchValue: searchTxt, $iconPicker: $xeIconPicker })
|
|
298
|
+
}
|
|
299
|
+
return (item.title && `${item.title}`.toLowerCase().indexOf(searchTxt) > -1) || (item.icon && `${item.icon}`.indexOf(searchTxt) > -1)
|
|
300
|
+
})
|
|
301
|
+
}
|
|
302
|
+
reactData.iconGroups = XEUtils.chunk(visibleList, chunkSize || 4)
|
|
303
|
+
}
|
|
304
|
+
|
|
245
305
|
const changeEvent = (evnt: Event, selectValue: any) => {
|
|
246
306
|
reactData.selectIcon = selectValue
|
|
247
307
|
if (selectValue !== props.modelValue) {
|
|
@@ -433,47 +493,64 @@ export default defineVxeComponent({
|
|
|
433
493
|
hideOptionPanel()
|
|
434
494
|
}
|
|
435
495
|
|
|
496
|
+
const modelSearchEvent = (value: string) => {
|
|
497
|
+
reactData.searchValue = value
|
|
498
|
+
}
|
|
499
|
+
|
|
500
|
+
const focusSearchEvent = () => {
|
|
501
|
+
reactData.isActivated = true
|
|
502
|
+
}
|
|
503
|
+
|
|
504
|
+
const handleSearchEvent = () => {
|
|
505
|
+
handleData()
|
|
506
|
+
}
|
|
507
|
+
|
|
508
|
+
const triggerSearchEvent = XEUtils.debounce(handleSearchEvent, 350, { trailing: true })
|
|
509
|
+
|
|
436
510
|
Object.assign($xeIconPicker, iconPickerMethods)
|
|
437
511
|
|
|
438
512
|
const renderIconWrapper = () => {
|
|
439
513
|
const { showIconTitle } = props
|
|
440
|
-
const { selectIcon } = reactData
|
|
441
|
-
const iconGroupList = computeIconGroupList.value
|
|
442
|
-
const isDisabled = computeIsDisabled.value
|
|
514
|
+
const { selectIcon, iconGroups } = reactData
|
|
443
515
|
|
|
444
516
|
return h('div', {
|
|
445
517
|
class: 'vxe-ico-picker--list-wrapper'
|
|
446
|
-
},
|
|
518
|
+
}, iconGroups.map(list => {
|
|
447
519
|
return h('div', {
|
|
448
520
|
class: 'vxe-ico-picker--list'
|
|
449
521
|
}, list.map(item => {
|
|
450
522
|
const { iconRender } = item
|
|
451
523
|
const compConf = iconRender ? renderer.get(iconRender.name) : null
|
|
452
|
-
const
|
|
524
|
+
const iconMethod = compConf ? compConf.renderIconPickerOptionIcon : null
|
|
453
525
|
return h('div', {
|
|
454
526
|
class: ['vxe-ico-picker--item', {
|
|
455
527
|
'is--selected': selectIcon === item.icon
|
|
456
|
-
}]
|
|
457
|
-
onClick (evnt) {
|
|
458
|
-
if (!isDisabled) {
|
|
459
|
-
handleClickIconEvent(evnt, item)
|
|
460
|
-
}
|
|
461
|
-
}
|
|
528
|
+
}]
|
|
462
529
|
}, [
|
|
463
530
|
h('div', {
|
|
464
|
-
class: 'vxe-ico-picker--item-
|
|
465
|
-
|
|
466
|
-
|
|
467
|
-
|
|
468
|
-
|
|
469
|
-
|
|
470
|
-
|
|
471
|
-
|
|
472
|
-
|
|
473
|
-
|
|
474
|
-
|
|
475
|
-
|
|
476
|
-
|
|
531
|
+
class: 'vxe-ico-picker--item-inner',
|
|
532
|
+
onClick (evnt) {
|
|
533
|
+
const isDisabled = computeIsDisabled.value
|
|
534
|
+
if (!isDisabled) {
|
|
535
|
+
handleClickIconEvent(evnt, item)
|
|
536
|
+
}
|
|
537
|
+
}
|
|
538
|
+
}, [
|
|
539
|
+
h('div', {
|
|
540
|
+
class: 'vxe-ico-picker--item-icon'
|
|
541
|
+
}, iconMethod && iconRender
|
|
542
|
+
? getSlotVNs(iconMethod(iconRender, { $iconPicker: $xeIconPicker, option: item }))
|
|
543
|
+
: [
|
|
544
|
+
h('i', {
|
|
545
|
+
class: item.icon || ''
|
|
546
|
+
})
|
|
547
|
+
]),
|
|
548
|
+
showIconTitle
|
|
549
|
+
? h('div', {
|
|
550
|
+
class: 'vxe-ico-picker--item-title'
|
|
551
|
+
}, `${item.title || ''}`)
|
|
552
|
+
: renderEmptyElement($xeIconPicker)
|
|
553
|
+
])
|
|
477
554
|
])
|
|
478
555
|
}))
|
|
479
556
|
}))
|
|
@@ -504,13 +581,14 @@ export default defineVxeComponent({
|
|
|
504
581
|
}
|
|
505
582
|
|
|
506
583
|
const renderVN = () => {
|
|
507
|
-
const { className, clearable } = props
|
|
584
|
+
const { className, clearable, filterable } = props
|
|
508
585
|
const { initialized, isActivated, isAniVisible, visiblePanel, selectIcon } = reactData
|
|
509
586
|
const vSize = computeSize.value
|
|
510
587
|
const isDisabled = computeIsDisabled.value
|
|
511
588
|
const btnTransfer = computeBtnTransfer.value
|
|
512
589
|
const formReadonly = computeFormReadonly.value
|
|
513
590
|
const inpPlaceholder = computeInpPlaceholder.value
|
|
591
|
+
const panelStyle = computePanelStyle.value
|
|
514
592
|
const popupOpts = computePopupOpts.value
|
|
515
593
|
const ppClassName = popupOpts.className || props.popupClassName
|
|
516
594
|
|
|
@@ -586,8 +664,30 @@ export default defineVxeComponent({
|
|
|
586
664
|
}, [
|
|
587
665
|
initialized && (visiblePanel || isAniVisible)
|
|
588
666
|
? h('div', {
|
|
589
|
-
class: 'vxe-ico-picker--panel-wrapper'
|
|
667
|
+
class: 'vxe-ico-picker--panel-wrapper',
|
|
668
|
+
style: panelStyle
|
|
590
669
|
}, [
|
|
670
|
+
filterable
|
|
671
|
+
? h('div', {
|
|
672
|
+
class: 'vxe-ico-picker--panel-search'
|
|
673
|
+
}, [
|
|
674
|
+
h(VxeInputComponent, {
|
|
675
|
+
ref: refInpSearch,
|
|
676
|
+
class: 'vxe-ico-picker-search--input',
|
|
677
|
+
modelValue: reactData.searchValue,
|
|
678
|
+
type: 'text',
|
|
679
|
+
clearable: true,
|
|
680
|
+
disabled: false,
|
|
681
|
+
readonly: false,
|
|
682
|
+
placeholder: getI18n('vxe.iconPicker.search'),
|
|
683
|
+
prefixIcon: getIcon().INPUT_SEARCH,
|
|
684
|
+
'onUpdate:modelValue': modelSearchEvent,
|
|
685
|
+
onFocus: focusSearchEvent,
|
|
686
|
+
onChange: triggerSearchEvent,
|
|
687
|
+
onSearch: triggerSearchEvent
|
|
688
|
+
})
|
|
689
|
+
])
|
|
690
|
+
: renderEmptyElement($xeIconPicker),
|
|
591
691
|
renderIconWrapper()
|
|
592
692
|
])
|
|
593
693
|
: renderEmptyElement($xeIconPicker)
|
|
@@ -596,10 +696,17 @@ export default defineVxeComponent({
|
|
|
596
696
|
])
|
|
597
697
|
}
|
|
598
698
|
|
|
699
|
+
reactData.selectIcon = `${props.modelValue || ''}`
|
|
700
|
+
handleData()
|
|
701
|
+
|
|
599
702
|
watch(() => props.modelValue, (val) => {
|
|
600
703
|
reactData.selectIcon = `${val || ''}`
|
|
601
704
|
})
|
|
602
705
|
|
|
706
|
+
watch(computeIconList, () => {
|
|
707
|
+
handleData()
|
|
708
|
+
})
|
|
709
|
+
|
|
603
710
|
onMounted(() => {
|
|
604
711
|
globalEvents.on($xeIconPicker, 'mousewheel', handleGlobalMousewheelEvent)
|
|
605
712
|
globalEvents.on($xeIconPicker, 'mousedown', handleGlobalMousedownEvent)
|
|
@@ -607,11 +714,13 @@ export default defineVxeComponent({
|
|
|
607
714
|
globalEvents.on($xeIconPicker, 'blur', handleGlobalBlurEvent)
|
|
608
715
|
})
|
|
609
716
|
|
|
610
|
-
|
|
717
|
+
onBeforeUnmount(() => {
|
|
611
718
|
globalEvents.off($xeIconPicker, 'mousewheel')
|
|
612
719
|
globalEvents.off($xeIconPicker, 'mousedown')
|
|
613
720
|
globalEvents.off($xeIconPicker, 'keydown')
|
|
614
721
|
globalEvents.off($xeIconPicker, 'blur')
|
|
722
|
+
XEUtils.assign(reactData, createReactData())
|
|
723
|
+
XEUtils.assign(internalData, createInternalData())
|
|
615
724
|
})
|
|
616
725
|
|
|
617
726
|
provide('$xeIconPicker', $xeIconPicker)
|
|
@@ -830,10 +830,15 @@ export default defineVxeComponent({
|
|
|
830
830
|
}
|
|
831
831
|
|
|
832
832
|
const handleRowClickEvent = (evnt: MouseEvent, row: any) => {
|
|
833
|
+
const { showRadio, showCheckbox } = props
|
|
833
834
|
const { currentRow } = internalData
|
|
835
|
+
const radioOpts = computeRadioOpts.value
|
|
836
|
+
const checkboxOpts = computeCheckboxOpts.value
|
|
834
837
|
const rowOpts = computeRowOpts.value
|
|
835
838
|
const { isCurrent } = rowOpts
|
|
836
839
|
let triggerCurrent = false
|
|
840
|
+
let triggerRadio = false
|
|
841
|
+
let triggerCheckbox = false
|
|
837
842
|
if (isCurrent) {
|
|
838
843
|
triggerCurrent = true
|
|
839
844
|
changeCurrentEvent(evnt, row)
|
|
@@ -841,7 +846,15 @@ export default defineVxeComponent({
|
|
|
841
846
|
internalData.currentRow = null
|
|
842
847
|
reactData.currRowFlag++
|
|
843
848
|
}
|
|
844
|
-
|
|
849
|
+
if (showRadio && radioOpts.trigger === 'row') {
|
|
850
|
+
triggerRadio = true
|
|
851
|
+
changeRadioEvent(evnt, row)
|
|
852
|
+
}
|
|
853
|
+
if (showCheckbox && checkboxOpts.trigger === 'row') {
|
|
854
|
+
triggerCheckbox = true
|
|
855
|
+
changeCheckboxEvent(evnt, row)
|
|
856
|
+
}
|
|
857
|
+
dispatchEvent('row-click', { row, triggerCurrent, triggerRadio, triggerCheckbox }, evnt)
|
|
845
858
|
}
|
|
846
859
|
|
|
847
860
|
const handleRowDblclickEvent = (evnt: MouseEvent, row: any) => {
|
|
@@ -183,7 +183,9 @@ export default defineVxeComponent({
|
|
|
183
183
|
onClick: clickEvent
|
|
184
184
|
}),
|
|
185
185
|
h('span', {
|
|
186
|
-
class: 'vxe-radio--label'
|
|
186
|
+
class: ['vxe-radio--label', {
|
|
187
|
+
'is--disabled': isDisabled
|
|
188
|
+
}]
|
|
187
189
|
}, defaultSlot ? defaultSlot({}) : getFuncText(content))
|
|
188
190
|
])
|
|
189
191
|
}
|
|
@@ -30,6 +30,10 @@ export default defineVxeComponent({
|
|
|
30
30
|
default: null
|
|
31
31
|
},
|
|
32
32
|
type: String as PropType<VxeRadioGroupPropTypes.Type>,
|
|
33
|
+
status: {
|
|
34
|
+
type: String as PropType<VxeRadioGroupPropTypes.Status>,
|
|
35
|
+
default: () => getConfig().radioGroup.status
|
|
36
|
+
},
|
|
33
37
|
options: Array as PropType<VxeRadioGroupPropTypes.Options>,
|
|
34
38
|
optionProps: Object as PropType<VxeRadioGroupPropTypes.OptionProps>,
|
|
35
39
|
strict: {
|
|
@@ -177,7 +181,7 @@ export default defineVxeComponent({
|
|
|
177
181
|
Object.assign($xeRadioGroup, radioGroupMethods, radioGroupPrivateMethods)
|
|
178
182
|
|
|
179
183
|
const renderVN = () => {
|
|
180
|
-
const { options, type } = props
|
|
184
|
+
const { options, type, status } = props
|
|
181
185
|
const vSize = computeSize.value
|
|
182
186
|
const defaultSlot = slots.default
|
|
183
187
|
const valueField = computeValueField.value as 'value'
|
|
@@ -187,6 +191,7 @@ export default defineVxeComponent({
|
|
|
187
191
|
|
|
188
192
|
return h('div', {
|
|
189
193
|
class: ['vxe-radio-group', {
|
|
194
|
+
[`theme--${status}`]: status,
|
|
190
195
|
[`size--${vSize}`]: vSize
|
|
191
196
|
}]
|
|
192
197
|
}, defaultSlot
|