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,10 +1,31 @@
|
|
|
1
|
-
import { h, Teleport, ref, inject, watch, computed, provide,
|
|
1
|
+
import { h, Teleport, 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';
|
|
9
|
+
function createReactData() {
|
|
10
|
+
return {
|
|
11
|
+
initialized: false,
|
|
12
|
+
selectIcon: '',
|
|
13
|
+
panelIndex: 0,
|
|
14
|
+
panelStyle: {},
|
|
15
|
+
panelPlacement: null,
|
|
16
|
+
visiblePanel: false,
|
|
17
|
+
isAniVisible: false,
|
|
18
|
+
isActivated: false,
|
|
19
|
+
searchValue: '',
|
|
20
|
+
iconGroups: []
|
|
21
|
+
};
|
|
22
|
+
}
|
|
23
|
+
function createInternalData() {
|
|
24
|
+
return {
|
|
25
|
+
fullList: []
|
|
26
|
+
// hpTimeout: undefined
|
|
27
|
+
};
|
|
28
|
+
}
|
|
8
29
|
export default defineVxeComponent({
|
|
9
30
|
name: 'VxeIconPicker',
|
|
10
31
|
props: {
|
|
@@ -33,6 +54,11 @@ export default defineVxeComponent({
|
|
|
33
54
|
type: Boolean,
|
|
34
55
|
default: null
|
|
35
56
|
},
|
|
57
|
+
filterable: {
|
|
58
|
+
type: Boolean,
|
|
59
|
+
default: () => getConfig().iconPicker.filterable
|
|
60
|
+
},
|
|
61
|
+
filterConfig: Object,
|
|
36
62
|
icons: Array,
|
|
37
63
|
placement: String,
|
|
38
64
|
popupConfig: Object,
|
|
@@ -56,22 +82,12 @@ export default defineVxeComponent({
|
|
|
56
82
|
const formItemInfo = inject('xeFormItemInfo', null);
|
|
57
83
|
const xID = XEUtils.uniqueId();
|
|
58
84
|
const { computeSize } = useSize(props);
|
|
59
|
-
const reactData = reactive(
|
|
60
|
-
|
|
61
|
-
selectIcon: `${props.modelValue || ''}`,
|
|
62
|
-
panelIndex: 0,
|
|
63
|
-
panelStyle: {},
|
|
64
|
-
panelPlacement: null,
|
|
65
|
-
visiblePanel: false,
|
|
66
|
-
isAniVisible: false,
|
|
67
|
-
isActivated: false
|
|
68
|
-
});
|
|
69
|
-
const internalData = {
|
|
70
|
-
// hpTimeout: undefined
|
|
71
|
-
};
|
|
85
|
+
const reactData = reactive(createReactData());
|
|
86
|
+
const internalData = createInternalData();
|
|
72
87
|
const refElem = ref();
|
|
73
88
|
const refInput = ref();
|
|
74
89
|
const refOptionPanel = ref();
|
|
90
|
+
const refInpSearch = ref();
|
|
75
91
|
const refMaps = {
|
|
76
92
|
refElem
|
|
77
93
|
};
|
|
@@ -131,6 +147,20 @@ export default defineVxeComponent({
|
|
|
131
147
|
}
|
|
132
148
|
return getI18n('vxe.base.pleaseSelect');
|
|
133
149
|
});
|
|
150
|
+
const computePanelStyle = computed(() => {
|
|
151
|
+
const popupOpts = computePopupOpts.value;
|
|
152
|
+
const { chunkSize, height, maxHeight } = popupOpts;
|
|
153
|
+
const stys = {
|
|
154
|
+
'--vxe-ui-icon-picker-item-width': `${100 / (chunkSize || 4)}%`
|
|
155
|
+
};
|
|
156
|
+
if (height) {
|
|
157
|
+
stys['--vxe-ui-icon-picker-panel-height'] = toCssUnit(height);
|
|
158
|
+
}
|
|
159
|
+
else if (maxHeight) {
|
|
160
|
+
stys['--vxe-ui-icon-picker-panel-max-height'] = toCssUnit(maxHeight);
|
|
161
|
+
}
|
|
162
|
+
return stys;
|
|
163
|
+
});
|
|
134
164
|
const computeIconList = computed(() => {
|
|
135
165
|
let { icons } = props;
|
|
136
166
|
if (!icons || !icons.length) {
|
|
@@ -150,13 +180,12 @@ export default defineVxeComponent({
|
|
|
150
180
|
};
|
|
151
181
|
});
|
|
152
182
|
});
|
|
183
|
+
const computeFilterOpts = computed(() => {
|
|
184
|
+
return Object.assign({}, getConfig().iconPicker.filterConfig, props.filterConfig);
|
|
185
|
+
});
|
|
153
186
|
const computePopupOpts = computed(() => {
|
|
154
187
|
return Object.assign({}, getConfig().iconPicker.popupConfig, props.popupConfig);
|
|
155
188
|
});
|
|
156
|
-
const computeIconGroupList = computed(() => {
|
|
157
|
-
const iconList = computeIconList.value;
|
|
158
|
-
return XEUtils.chunk(iconList, 4);
|
|
159
|
-
});
|
|
160
189
|
const computeSelectIconItem = computed(() => {
|
|
161
190
|
const { selectIcon } = reactData;
|
|
162
191
|
const iconList = computeIconList.value;
|
|
@@ -174,6 +203,7 @@ export default defineVxeComponent({
|
|
|
174
203
|
const panelElem = refOptionPanel.value;
|
|
175
204
|
const btnTransfer = computeBtnTransfer.value;
|
|
176
205
|
const popupOpts = computePopupOpts.value;
|
|
206
|
+
const { width } = popupOpts;
|
|
177
207
|
const handleStyle = () => {
|
|
178
208
|
const ppObj = updatePanelPlacement(targetElem, panelElem, {
|
|
179
209
|
placement: popupOpts.placement || placement,
|
|
@@ -183,6 +213,12 @@ export default defineVxeComponent({
|
|
|
183
213
|
const panelStyle = Object.assign(ppObj.style, {
|
|
184
214
|
zIndex: panelIndex
|
|
185
215
|
});
|
|
216
|
+
if (width) {
|
|
217
|
+
Object.assign(panelStyle, {
|
|
218
|
+
width: toCssUnit(width),
|
|
219
|
+
minWidth: undefined
|
|
220
|
+
});
|
|
221
|
+
}
|
|
186
222
|
reactData.panelStyle = panelStyle;
|
|
187
223
|
reactData.panelPlacement = ppObj.placement;
|
|
188
224
|
};
|
|
@@ -216,6 +252,26 @@ export default defineVxeComponent({
|
|
|
216
252
|
reactData.isAniVisible = false;
|
|
217
253
|
}, 350);
|
|
218
254
|
};
|
|
255
|
+
const handleData = () => {
|
|
256
|
+
const { modelValue } = props;
|
|
257
|
+
const { searchValue } = reactData;
|
|
258
|
+
const filterOpts = computeFilterOpts.value;
|
|
259
|
+
const { filterMethod } = filterOpts;
|
|
260
|
+
const popupOpts = computePopupOpts.value;
|
|
261
|
+
const { chunkSize } = popupOpts;
|
|
262
|
+
const iconList = computeIconList.value;
|
|
263
|
+
let visibleList = iconList;
|
|
264
|
+
if (searchValue) {
|
|
265
|
+
const searchTxt = `${searchValue}`.toLowerCase();
|
|
266
|
+
visibleList = iconList.filter(item => {
|
|
267
|
+
if (filterMethod) {
|
|
268
|
+
return filterMethod({ option: item, value: modelValue, searchValue: searchTxt, $iconPicker: $xeIconPicker });
|
|
269
|
+
}
|
|
270
|
+
return (item.title && `${item.title}`.toLowerCase().indexOf(searchTxt) > -1) || (item.icon && `${item.icon}`.indexOf(searchTxt) > -1);
|
|
271
|
+
});
|
|
272
|
+
}
|
|
273
|
+
reactData.iconGroups = XEUtils.chunk(visibleList, chunkSize || 4);
|
|
274
|
+
};
|
|
219
275
|
const changeEvent = (evnt, selectValue) => {
|
|
220
276
|
reactData.selectIcon = selectValue;
|
|
221
277
|
if (selectValue !== props.modelValue) {
|
|
@@ -400,45 +456,58 @@ export default defineVxeComponent({
|
|
|
400
456
|
changeEvent(evnt, value);
|
|
401
457
|
hideOptionPanel();
|
|
402
458
|
};
|
|
459
|
+
const modelSearchEvent = (value) => {
|
|
460
|
+
reactData.searchValue = value;
|
|
461
|
+
};
|
|
462
|
+
const focusSearchEvent = () => {
|
|
463
|
+
reactData.isActivated = true;
|
|
464
|
+
};
|
|
465
|
+
const handleSearchEvent = () => {
|
|
466
|
+
handleData();
|
|
467
|
+
};
|
|
468
|
+
const triggerSearchEvent = XEUtils.debounce(handleSearchEvent, 350, { trailing: true });
|
|
403
469
|
Object.assign($xeIconPicker, iconPickerMethods);
|
|
404
470
|
const renderIconWrapper = () => {
|
|
405
471
|
const { showIconTitle } = props;
|
|
406
|
-
const { selectIcon } = reactData;
|
|
407
|
-
const iconGroupList = computeIconGroupList.value;
|
|
408
|
-
const isDisabled = computeIsDisabled.value;
|
|
472
|
+
const { selectIcon, iconGroups } = reactData;
|
|
409
473
|
return h('div', {
|
|
410
474
|
class: 'vxe-ico-picker--list-wrapper'
|
|
411
|
-
},
|
|
475
|
+
}, iconGroups.map(list => {
|
|
412
476
|
return h('div', {
|
|
413
477
|
class: 'vxe-ico-picker--list'
|
|
414
478
|
}, list.map(item => {
|
|
415
479
|
const { iconRender } = item;
|
|
416
480
|
const compConf = iconRender ? renderer.get(iconRender.name) : null;
|
|
417
|
-
const
|
|
481
|
+
const iconMethod = compConf ? compConf.renderIconPickerOptionIcon : null;
|
|
418
482
|
return h('div', {
|
|
419
483
|
class: ['vxe-ico-picker--item', {
|
|
420
484
|
'is--selected': selectIcon === item.icon
|
|
421
|
-
}]
|
|
422
|
-
onClick(evnt) {
|
|
423
|
-
if (!isDisabled) {
|
|
424
|
-
handleClickIconEvent(evnt, item);
|
|
425
|
-
}
|
|
426
|
-
}
|
|
485
|
+
}]
|
|
427
486
|
}, [
|
|
428
487
|
h('div', {
|
|
429
|
-
class: 'vxe-ico-picker--item-
|
|
430
|
-
|
|
431
|
-
|
|
432
|
-
|
|
433
|
-
|
|
434
|
-
|
|
435
|
-
|
|
436
|
-
|
|
437
|
-
|
|
438
|
-
|
|
439
|
-
|
|
440
|
-
|
|
441
|
-
|
|
488
|
+
class: 'vxe-ico-picker--item-inner',
|
|
489
|
+
onClick(evnt) {
|
|
490
|
+
const isDisabled = computeIsDisabled.value;
|
|
491
|
+
if (!isDisabled) {
|
|
492
|
+
handleClickIconEvent(evnt, item);
|
|
493
|
+
}
|
|
494
|
+
}
|
|
495
|
+
}, [
|
|
496
|
+
h('div', {
|
|
497
|
+
class: 'vxe-ico-picker--item-icon'
|
|
498
|
+
}, iconMethod && iconRender
|
|
499
|
+
? getSlotVNs(iconMethod(iconRender, { $iconPicker: $xeIconPicker, option: item }))
|
|
500
|
+
: [
|
|
501
|
+
h('i', {
|
|
502
|
+
class: item.icon || ''
|
|
503
|
+
})
|
|
504
|
+
]),
|
|
505
|
+
showIconTitle
|
|
506
|
+
? h('div', {
|
|
507
|
+
class: 'vxe-ico-picker--item-title'
|
|
508
|
+
}, `${item.title || ''}`)
|
|
509
|
+
: renderEmptyElement($xeIconPicker)
|
|
510
|
+
])
|
|
442
511
|
]);
|
|
443
512
|
}));
|
|
444
513
|
}));
|
|
@@ -467,13 +536,14 @@ export default defineVxeComponent({
|
|
|
467
536
|
]);
|
|
468
537
|
};
|
|
469
538
|
const renderVN = () => {
|
|
470
|
-
const { className, clearable } = props;
|
|
539
|
+
const { className, clearable, filterable } = props;
|
|
471
540
|
const { initialized, isActivated, isAniVisible, visiblePanel, selectIcon } = reactData;
|
|
472
541
|
const vSize = computeSize.value;
|
|
473
542
|
const isDisabled = computeIsDisabled.value;
|
|
474
543
|
const btnTransfer = computeBtnTransfer.value;
|
|
475
544
|
const formReadonly = computeFormReadonly.value;
|
|
476
545
|
const inpPlaceholder = computeInpPlaceholder.value;
|
|
546
|
+
const panelStyle = computePanelStyle.value;
|
|
477
547
|
const popupOpts = computePopupOpts.value;
|
|
478
548
|
const ppClassName = popupOpts.className || props.popupClassName;
|
|
479
549
|
if (formReadonly) {
|
|
@@ -548,8 +618,30 @@ export default defineVxeComponent({
|
|
|
548
618
|
}, [
|
|
549
619
|
initialized && (visiblePanel || isAniVisible)
|
|
550
620
|
? h('div', {
|
|
551
|
-
class: 'vxe-ico-picker--panel-wrapper'
|
|
621
|
+
class: 'vxe-ico-picker--panel-wrapper',
|
|
622
|
+
style: panelStyle
|
|
552
623
|
}, [
|
|
624
|
+
filterable
|
|
625
|
+
? h('div', {
|
|
626
|
+
class: 'vxe-ico-picker--panel-search'
|
|
627
|
+
}, [
|
|
628
|
+
h(VxeInputComponent, {
|
|
629
|
+
ref: refInpSearch,
|
|
630
|
+
class: 'vxe-ico-picker-search--input',
|
|
631
|
+
modelValue: reactData.searchValue,
|
|
632
|
+
type: 'text',
|
|
633
|
+
clearable: true,
|
|
634
|
+
disabled: false,
|
|
635
|
+
readonly: false,
|
|
636
|
+
placeholder: getI18n('vxe.iconPicker.search'),
|
|
637
|
+
prefixIcon: getIcon().INPUT_SEARCH,
|
|
638
|
+
'onUpdate:modelValue': modelSearchEvent,
|
|
639
|
+
onFocus: focusSearchEvent,
|
|
640
|
+
onChange: triggerSearchEvent,
|
|
641
|
+
onSearch: triggerSearchEvent
|
|
642
|
+
})
|
|
643
|
+
])
|
|
644
|
+
: renderEmptyElement($xeIconPicker),
|
|
553
645
|
renderIconWrapper()
|
|
554
646
|
])
|
|
555
647
|
: renderEmptyElement($xeIconPicker)
|
|
@@ -557,20 +649,27 @@ export default defineVxeComponent({
|
|
|
557
649
|
])
|
|
558
650
|
]);
|
|
559
651
|
};
|
|
652
|
+
reactData.selectIcon = `${props.modelValue || ''}`;
|
|
653
|
+
handleData();
|
|
560
654
|
watch(() => props.modelValue, (val) => {
|
|
561
655
|
reactData.selectIcon = `${val || ''}`;
|
|
562
656
|
});
|
|
657
|
+
watch(computeIconList, () => {
|
|
658
|
+
handleData();
|
|
659
|
+
});
|
|
563
660
|
onMounted(() => {
|
|
564
661
|
globalEvents.on($xeIconPicker, 'mousewheel', handleGlobalMousewheelEvent);
|
|
565
662
|
globalEvents.on($xeIconPicker, 'mousedown', handleGlobalMousedownEvent);
|
|
566
663
|
globalEvents.on($xeIconPicker, 'keydown', handleGlobalKeydownEvent);
|
|
567
664
|
globalEvents.on($xeIconPicker, 'blur', handleGlobalBlurEvent);
|
|
568
665
|
});
|
|
569
|
-
|
|
666
|
+
onBeforeUnmount(() => {
|
|
570
667
|
globalEvents.off($xeIconPicker, 'mousewheel');
|
|
571
668
|
globalEvents.off($xeIconPicker, 'mousedown');
|
|
572
669
|
globalEvents.off($xeIconPicker, 'keydown');
|
|
573
670
|
globalEvents.off($xeIconPicker, 'blur');
|
|
671
|
+
XEUtils.assign(reactData, createReactData());
|
|
672
|
+
XEUtils.assign(internalData, createInternalData());
|
|
574
673
|
});
|
|
575
674
|
provide('$xeIconPicker', $xeIconPicker);
|
|
576
675
|
$xeIconPicker.renderVN = renderVN;
|
package/es/icon-picker/style.css
CHANGED
|
@@ -7,6 +7,11 @@
|
|
|
7
7
|
border-radius: var(--vxe-ui-base-border-radius);
|
|
8
8
|
background-color: var(--vxe-ui-layout-background-color);
|
|
9
9
|
}
|
|
10
|
+
.vxe-ico-picker.is--disabled {
|
|
11
|
+
background-color: var(--vxe-ui-input-disabled-background-color);
|
|
12
|
+
color: var(--vxe-ui-font-disabled-color);
|
|
13
|
+
cursor: no-drop;
|
|
14
|
+
}
|
|
10
15
|
.vxe-ico-picker.show--clear:hover .vxe-ico-picker--clear-icon {
|
|
11
16
|
display: block;
|
|
12
17
|
}
|
|
@@ -64,6 +69,15 @@
|
|
|
64
69
|
transition: transform 0.2s ease-in-out;
|
|
65
70
|
}
|
|
66
71
|
|
|
72
|
+
.vxe-ico-picker--panel-search {
|
|
73
|
+
display: block;
|
|
74
|
+
flex-shrink: 0;
|
|
75
|
+
padding: var(--vxe-ui-layout-padding-default);
|
|
76
|
+
}
|
|
77
|
+
.vxe-ico-picker--panel-search .vxe-ico-picker-search--input {
|
|
78
|
+
width: 100%;
|
|
79
|
+
}
|
|
80
|
+
|
|
67
81
|
.vxe-ico-picker--readonly {
|
|
68
82
|
color: var(--vxe-ui-font-color);
|
|
69
83
|
display: inline-flex;
|
|
@@ -83,10 +97,17 @@
|
|
|
83
97
|
color: var(--vxe-ui-font-primary-color);
|
|
84
98
|
}
|
|
85
99
|
|
|
100
|
+
.vxe-ico-picker--all-list {
|
|
101
|
+
display: flex;
|
|
102
|
+
flex-direction: row;
|
|
103
|
+
flex-wrap: wrap;
|
|
104
|
+
}
|
|
105
|
+
|
|
86
106
|
.vxe-ico-picker--list-wrapper {
|
|
87
107
|
overflow-x: hidden;
|
|
88
108
|
overflow-y: auto;
|
|
89
|
-
|
|
109
|
+
height: var(--vxe-ui-icon-picker-panel-height);
|
|
110
|
+
max-height: var(--vxe-ui-icon-picker-panel-max-height, var(--vxe-ui-icon-picker-panel-height, 22.3em));
|
|
90
111
|
padding: var(--vxe-ui-layout-padding-qtr);
|
|
91
112
|
}
|
|
92
113
|
|
|
@@ -98,17 +119,20 @@
|
|
|
98
119
|
.vxe-ico-picker--item {
|
|
99
120
|
display: flex;
|
|
100
121
|
flex-direction: column;
|
|
101
|
-
width: 4.8em;
|
|
122
|
+
min-width: 4.8em;
|
|
123
|
+
width: var(--vxe-ui-icon-picker-item-width, 4.8em);
|
|
124
|
+
padding: var(--vxe-ui-layout-padding-half);
|
|
125
|
+
}
|
|
126
|
+
.vxe-ico-picker--item .vxe-ico-picker--item-inner {
|
|
102
127
|
padding: 0.2em;
|
|
103
128
|
border: 1px solid var(--vxe-ui-input-border-color);
|
|
104
129
|
border-radius: var(--vxe-ui-base-border-radius);
|
|
105
|
-
margin: var(--vxe-ui-layout-padding-half);
|
|
106
130
|
cursor: pointer;
|
|
107
131
|
}
|
|
108
|
-
.vxe-ico-picker--item:hover {
|
|
132
|
+
.vxe-ico-picker--item .vxe-ico-picker--item-inner:hover {
|
|
109
133
|
background-color: var(--vxe-ui-base-hover-background-color);
|
|
110
134
|
}
|
|
111
|
-
.vxe-ico-picker--item.is--selected {
|
|
135
|
+
.vxe-ico-picker--item.is--selected .vxe-ico-picker--item-inner {
|
|
112
136
|
color: var(--vxe-ui-font-primary-color);
|
|
113
137
|
border-color: var(--vxe-ui-font-primary-color);
|
|
114
138
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
.vxe-ico-picker{position:relative;display:inline-block;color:var(--vxe-ui-font-color);width:100px;border:1px solid var(--vxe-ui-input-border-color);border-radius:var(--vxe-ui-base-border-radius);background-color:var(--vxe-ui-layout-background-color)}.vxe-ico-picker.show--clear:hover .vxe-ico-picker--clear-icon{display:block}.vxe-ico-picker.is--active{border-color:var(--vxe-ui-font-primary-color)}.vxe-ico-picker--inner{display:flex;flex-direction:row;width:100%;padding:0 .5em}.vxe-ico-picker--input{position:absolute;z-index:-1;width:1px;height:1px;outline:0;border:0}.vxe-ico-picker--icon{flex-grow:1;display:inline-flex;flex-direction:row;align-items:center;justify-content:left;padding:0 .5em}.vxe-ico-picker--icon>svg{max-width:1em;max-height:1em;vertical-align:middle}.vxe-ico-picker--placeholder{flex-grow:1;color:var(--vxe-ui-input-placeholder-color);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.vxe-ico-picker--suffix{display:flex;flex-direction:row;flex-shrink:0;color:var(--vxe-ui-input-placeholder-color);cursor:pointer}.vxe-ico-picker--suffix .vxe-ico-picker--suffix-icon>i{display:inline-block;transition:transform .2s ease-in-out}.vxe-ico-picker--readonly{color:var(--vxe-ui-font-color);display:inline-flex}.vxe-ico-picker--clear-icon{display:none;padding-right:.5em;height:100%;color:var(--vxe-ui-input-placeholder-color);cursor:pointer}.vxe-ico-picker--clear-icon:hover{color:var(--vxe-ui-font-color)}.vxe-ico-picker--clear-icon:active{color:var(--vxe-ui-font-primary-color)}.vxe-ico-picker--list-wrapper{overflow-x:hidden;overflow-y:auto;max-height:22.3em;padding:var(--vxe-ui-layout-padding-qtr)}.vxe-ico-picker--list{display:flex;flex-direction:row}.vxe-ico-picker--item{display:flex;flex-direction:column;width:4.8em;padding:.2em;border:1px solid var(--vxe-ui-input-border-color);border-radius:var(--vxe-ui-base-border-radius);
|
|
1
|
+
.vxe-ico-picker{position:relative;display:inline-block;color:var(--vxe-ui-font-color);width:100px;border:1px solid var(--vxe-ui-input-border-color);border-radius:var(--vxe-ui-base-border-radius);background-color:var(--vxe-ui-layout-background-color)}.vxe-ico-picker.is--disabled{background-color:var(--vxe-ui-input-disabled-background-color);color:var(--vxe-ui-font-disabled-color);cursor:no-drop}.vxe-ico-picker.show--clear:hover .vxe-ico-picker--clear-icon{display:block}.vxe-ico-picker.is--active{border-color:var(--vxe-ui-font-primary-color)}.vxe-ico-picker--inner{display:flex;flex-direction:row;width:100%;padding:0 .5em}.vxe-ico-picker--input{position:absolute;z-index:-1;width:1px;height:1px;outline:0;border:0}.vxe-ico-picker--icon{flex-grow:1;display:inline-flex;flex-direction:row;align-items:center;justify-content:left;padding:0 .5em}.vxe-ico-picker--icon>svg{max-width:1em;max-height:1em;vertical-align:middle}.vxe-ico-picker--placeholder{flex-grow:1;color:var(--vxe-ui-input-placeholder-color);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.vxe-ico-picker--suffix{display:flex;flex-direction:row;flex-shrink:0;color:var(--vxe-ui-input-placeholder-color);cursor:pointer}.vxe-ico-picker--suffix .vxe-ico-picker--suffix-icon>i{display:inline-block;transition:transform .2s ease-in-out}.vxe-ico-picker--panel-search{display:block;flex-shrink:0;padding:var(--vxe-ui-layout-padding-default)}.vxe-ico-picker--panel-search .vxe-ico-picker-search--input{width:100%}.vxe-ico-picker--readonly{color:var(--vxe-ui-font-color);display:inline-flex}.vxe-ico-picker--clear-icon{display:none;padding-right:.5em;height:100%;color:var(--vxe-ui-input-placeholder-color);cursor:pointer}.vxe-ico-picker--clear-icon:hover{color:var(--vxe-ui-font-color)}.vxe-ico-picker--clear-icon:active{color:var(--vxe-ui-font-primary-color)}.vxe-ico-picker--all-list{display:flex;flex-direction:row;flex-wrap:wrap}.vxe-ico-picker--list-wrapper{overflow-x:hidden;overflow-y:auto;height:var(--vxe-ui-icon-picker-panel-height);max-height:var(--vxe-ui-icon-picker-panel-max-height,var(--vxe-ui-icon-picker-panel-height,22.3em));padding:var(--vxe-ui-layout-padding-qtr)}.vxe-ico-picker--list{display:flex;flex-direction:row}.vxe-ico-picker--item{display:flex;flex-direction:column;min-width:4.8em;width:var(--vxe-ui-icon-picker-item-width,4.8em);padding:var(--vxe-ui-layout-padding-half)}.vxe-ico-picker--item .vxe-ico-picker--item-inner{padding:.2em;border:1px solid var(--vxe-ui-input-border-color);border-radius:var(--vxe-ui-base-border-radius);cursor:pointer}.vxe-ico-picker--item .vxe-ico-picker--item-inner:hover{background-color:var(--vxe-ui-base-hover-background-color)}.vxe-ico-picker--item.is--selected .vxe-ico-picker--item-inner{color:var(--vxe-ui-font-primary-color);border-color:var(--vxe-ui-font-primary-color)}.vxe-ico-picker--item-icon{flex-grow:1;display:flex;flex-direction:row;align-items:center;justify-content:center;height:1.5em;font-size:1.4em}.vxe-ico-picker--item-icon>svg{max-width:1em;max-height:1em;vertical-align:middle}.vxe-ico-picker--item-title{padding:0 .2em;line-height:1.3em;flex-shrink:0;text-align:center;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:.9em}.vxe-ico-picker--item-icon,.vxe-ico-picker--item-title{width:100%}.vxe-ico-picker--panel-wrapper{position:relative;border-radius:var(--vxe-ui-base-border-radius);border:1px solid var(--vxe-ui-base-popup-border-color);box-shadow:var(--vxe-ui-base-popup-box-shadow);background-color:var(--vxe-ui-layout-background-color)}.vxe-ico-picker--panel{display:none;position:absolute;left:0;padding:4px 0;color:var(--vxe-ui-font-color);text-align:left}.vxe-ico-picker--panel:not(.is--transfer){min-width:100%}.vxe-ico-picker--panel.is--transfer{position:fixed}.vxe-ico-picker--panel.ani--leave{display:block;opacity:0;transform:scaleY(.5);transition:transform .3s cubic-bezier(.23,1,.32,1),opacity .3s cubic-bezier(.23,1,.32,1);transform-origin:center top;backface-visibility:hidden}.vxe-ico-picker--panel.ani--leave[placement=top]{transform-origin:center bottom}.vxe-ico-picker--panel.ani--enter{opacity:1;transform:scaleY(1)}.vxe-ico-picker{height:var(--vxe-ui-input-height-default);line-height:var(--vxe-ui-input-height-default)}.vxe-ico-picker.size--medium{height:var(--vxe-ui-input-height-medium);line-height:var(--vxe-ui-input-height-medium)}.vxe-ico-picker.size--small{height:var(--vxe-ui-input-height-small);line-height:var(--vxe-ui-input-height-small)}.vxe-ico-picker.size--mini{height:var(--vxe-ui-input-height-mini);line-height:var(--vxe-ui-input-height-mini)}.vxe-ico-picker,.vxe-ico-picker--panel{font-size:var(--vxe-ui-font-size-default)}.vxe-ico-picker--panel.size--medium,.vxe-ico-picker.size--medium{font-size:var(--vxe-ui-font-size-medium)}.vxe-ico-picker--panel.size--small,.vxe-ico-picker.size--small{font-size:var(--vxe-ui-font-size-small)}.vxe-ico-picker--panel.size--mini,.vxe-ico-picker.size--mini{font-size:var(--vxe-ui-font-size-mini)}
|
package/es/language/ar-EG.js
CHANGED
package/es/language/de-DE.js
CHANGED
package/es/language/en-US.js
CHANGED
package/es/language/es-ES.js
CHANGED
package/es/language/fr-FR.js
CHANGED
package/es/language/hu-HU.js
CHANGED
package/es/language/hy-AM.js
CHANGED
package/es/language/id-ID.js
CHANGED
package/es/language/it-IT.js
CHANGED
package/es/language/ja-JP.js
CHANGED
package/es/language/ko-KR.js
CHANGED
package/es/language/ms-MY.js
CHANGED
package/es/language/nb-NO.js
CHANGED
package/es/language/pt-BR.js
CHANGED
package/es/language/ru-RU.js
CHANGED
package/es/language/th-TH.js
CHANGED
package/es/language/ug-CN.js
CHANGED
package/es/language/uk-UA.js
CHANGED
package/es/language/uz-UZ.js
CHANGED
package/es/language/vi-VN.js
CHANGED
package/es/language/zh-CHT.js
CHANGED