vxe-pc-ui 3.14.17 → 3.14.18
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/language/ar-EG.js +4 -2
- package/es/language/de-DE.js +4 -2
- package/es/language/en-US.js +4 -2
- package/es/language/es-ES.js +4 -2
- package/es/language/fr-FR.js +4 -2
- package/es/language/hu-HU.js +4 -2
- package/es/language/hy-AM.js +4 -2
- package/es/language/id-ID.js +4 -2
- package/es/language/it-IT.js +4 -2
- package/es/language/ja-JP.js +4 -2
- package/es/language/ko-KR.js +4 -2
- package/es/language/ms-MY.js +4 -2
- package/es/language/nb-NO.js +4 -2
- package/es/language/pt-BR.js +4 -2
- package/es/language/ru-RU.js +4 -2
- package/es/language/th-TH.js +4 -2
- package/es/language/ug-CN.js +4 -2
- package/es/language/uk-UA.js +4 -2
- package/es/language/uz-UZ.js +4 -2
- package/es/language/vi-VN.js +4 -2
- package/es/language/zh-CHT.js +4 -2
- package/es/language/zh-CN.js +4 -2
- package/es/select/src/select.js +192 -48
- package/es/select/style.css +120 -12
- package/es/select/style.min.css +1 -1
- package/es/style.css +1 -1
- package/es/style.min.css +1 -1
- package/es/tree-select/src/tree-select.js +63 -20
- package/es/tree-select/style.css +5 -0
- package/es/tree-select/style.min.css +1 -1
- package/es/ui/index.js +10 -2
- package/es/ui/src/log.js +1 -1
- package/es/vxe-select/style.css +120 -12
- package/es/vxe-select/style.min.css +1 -1
- package/es/vxe-tree-select/style.css +5 -0
- package/es/vxe-tree-select/style.min.css +1 -1
- package/lib/index.umd.js +278 -69
- package/lib/index.umd.min.js +1 -1
- package/lib/language/ar-EG.js +4 -2
- package/lib/language/ar-EG.min.js +1 -1
- package/lib/language/ar-EG.umd.js +4 -2
- package/lib/language/de-DE.js +4 -2
- package/lib/language/de-DE.min.js +1 -1
- package/lib/language/de-DE.umd.js +4 -2
- package/lib/language/en-US.js +4 -2
- package/lib/language/en-US.min.js +1 -1
- package/lib/language/en-US.umd.js +4 -2
- package/lib/language/es-ES.js +4 -2
- package/lib/language/es-ES.min.js +1 -1
- package/lib/language/es-ES.umd.js +4 -2
- package/lib/language/fr-FR.js +4 -2
- package/lib/language/fr-FR.min.js +1 -1
- package/lib/language/fr-FR.umd.js +4 -2
- package/lib/language/hu-HU.js +4 -2
- package/lib/language/hu-HU.min.js +1 -1
- package/lib/language/hu-HU.umd.js +4 -2
- package/lib/language/hy-AM.js +4 -2
- package/lib/language/hy-AM.min.js +1 -1
- package/lib/language/hy-AM.umd.js +4 -2
- package/lib/language/id-ID.js +4 -2
- package/lib/language/id-ID.min.js +1 -1
- package/lib/language/id-ID.umd.js +4 -2
- package/lib/language/it-IT.js +4 -2
- package/lib/language/it-IT.min.js +1 -1
- package/lib/language/it-IT.umd.js +4 -2
- package/lib/language/ja-JP.js +4 -2
- package/lib/language/ja-JP.min.js +1 -1
- package/lib/language/ja-JP.umd.js +4 -2
- package/lib/language/ko-KR.js +4 -2
- package/lib/language/ko-KR.min.js +1 -1
- package/lib/language/ko-KR.umd.js +4 -2
- package/lib/language/ms-MY.js +4 -2
- package/lib/language/ms-MY.min.js +1 -1
- package/lib/language/ms-MY.umd.js +4 -2
- package/lib/language/nb-NO.js +4 -2
- package/lib/language/nb-NO.min.js +1 -1
- package/lib/language/nb-NO.umd.js +4 -2
- package/lib/language/pt-BR.js +4 -2
- package/lib/language/pt-BR.min.js +1 -1
- package/lib/language/pt-BR.umd.js +4 -2
- package/lib/language/ru-RU.js +4 -2
- package/lib/language/ru-RU.min.js +1 -1
- package/lib/language/ru-RU.umd.js +4 -2
- package/lib/language/th-TH.js +4 -2
- package/lib/language/th-TH.min.js +1 -1
- package/lib/language/th-TH.umd.js +4 -2
- package/lib/language/ug-CN.js +4 -2
- package/lib/language/ug-CN.min.js +1 -1
- package/lib/language/ug-CN.umd.js +4 -2
- package/lib/language/uk-UA.js +4 -2
- package/lib/language/uk-UA.min.js +1 -1
- package/lib/language/uk-UA.umd.js +4 -2
- package/lib/language/uz-UZ.js +4 -2
- package/lib/language/uz-UZ.min.js +1 -1
- package/lib/language/uz-UZ.umd.js +4 -2
- package/lib/language/vi-VN.js +4 -2
- package/lib/language/vi-VN.min.js +1 -1
- package/lib/language/vi-VN.umd.js +4 -2
- package/lib/language/zh-CHT.js +4 -2
- package/lib/language/zh-CHT.min.js +1 -1
- package/lib/language/zh-CHT.umd.js +4 -2
- package/lib/language/zh-CN.js +4 -2
- package/lib/language/zh-CN.min.js +1 -1
- package/lib/language/zh-CN.umd.js +4 -2
- package/lib/select/src/select.js +192 -44
- package/lib/select/src/select.min.js +1 -1
- package/lib/select/style/style.css +120 -12
- package/lib/select/style/style.min.css +1 -1
- package/lib/style.css +1 -1
- package/lib/style.min.css +1 -1
- package/lib/tree-select/src/tree-select.js +71 -20
- package/lib/tree-select/src/tree-select.min.js +1 -1
- package/lib/tree-select/style/style.css +5 -0
- package/lib/tree-select/style/style.min.css +1 -1
- package/lib/ui/index.js +10 -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-select/style/style.css +120 -12
- package/lib/vxe-select/style/style.min.css +1 -1
- package/lib/vxe-tree-select/style/style.css +5 -0
- package/lib/vxe-tree-select/style/style.min.css +1 -1
- package/package.json +1 -1
- package/packages/language/ar-EG.ts +4 -2
- package/packages/language/de-DE.ts +4 -2
- package/packages/language/en-US.ts +4 -2
- package/packages/language/es-ES.ts +4 -2
- package/packages/language/fr-FR.ts +4 -2
- package/packages/language/hu-HU.ts +4 -2
- package/packages/language/hy-AM.ts +4 -2
- package/packages/language/id-ID.ts +4 -2
- package/packages/language/it-IT.ts +4 -2
- package/packages/language/ja-JP.ts +4 -2
- package/packages/language/ko-KR.ts +4 -2
- package/packages/language/ms-MY.ts +4 -2
- package/packages/language/nb-NO.ts +4 -2
- package/packages/language/pt-BR.ts +4 -2
- package/packages/language/ru-RU.ts +4 -2
- package/packages/language/th-TH.ts +4 -2
- package/packages/language/ug-CN.ts +4 -2
- package/packages/language/uk-UA.ts +4 -2
- package/packages/language/uz-UZ.ts +4 -2
- package/packages/language/vi-VN.ts +4 -2
- package/packages/language/zh-CHT.ts +4 -2
- package/packages/language/zh-CN.ts +4 -2
- package/packages/select/src/select.ts +210 -49
- package/packages/tree-select/src/tree-select.ts +65 -21
- package/packages/ui/index.ts +9 -1
- package/styles/components/select.scss +39 -12
- package/styles/components/tree-select.scss +4 -0
- package/styles/theme/dark.scss +3 -0
- package/styles/theme/light.scss +3 -0
- package/styles/variable.scss +3 -0
- package/types/components/select.d.ts +20 -0
- package/types/components/tree-select.d.ts +22 -1
- /package/es/icon/{iconfont.1779331536287.ttf → iconfont.1779433512609.ttf} +0 -0
- /package/es/icon/{iconfont.1779331536287.woff → iconfont.1779433512609.woff} +0 -0
- /package/es/icon/{iconfont.1779331536287.woff2 → iconfont.1779433512609.woff2} +0 -0
- /package/es/{iconfont.1779331536287.ttf → iconfont.1779433512609.ttf} +0 -0
- /package/es/{iconfont.1779331536287.woff → iconfont.1779433512609.woff} +0 -0
- /package/es/{iconfont.1779331536287.woff2 → iconfont.1779433512609.woff2} +0 -0
- /package/lib/icon/style/{iconfont.1779331536287.ttf → iconfont.1779433512609.ttf} +0 -0
- /package/lib/icon/style/{iconfont.1779331536287.woff → iconfont.1779433512609.woff} +0 -0
- /package/lib/icon/style/{iconfont.1779331536287.woff2 → iconfont.1779433512609.woff2} +0 -0
- /package/lib/{iconfont.1779331536287.ttf → iconfont.1779433512609.ttf} +0 -0
- /package/lib/{iconfont.1779331536287.woff → iconfont.1779433512609.woff} +0 -0
- /package/lib/{iconfont.1779331536287.woff2 → iconfont.1779433512609.woff2} +0 -0
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { PropType, CreateElement, VNode } from 'vue'
|
|
2
2
|
import { defineVxeComponent } from '../../ui/src/comp'
|
|
3
3
|
import XEUtils from 'xe-utils'
|
|
4
|
-
import { getConfig, getIcon, getI18n, globalEvents, GLOBAL_EVENT_KEYS, createEvent, globalMixins, renderEmptyElement } from '../../ui'
|
|
4
|
+
import { VxeUI, getConfig, getIcon, getI18n, globalEvents, GLOBAL_EVENT_KEYS, createEvent, globalMixins, renderEmptyElement } from '../../ui'
|
|
5
5
|
import { getEventTargetNode, toCssUnit, updatePanelPlacement } from '../../ui/src/dom'
|
|
6
6
|
import { getLastZIndex, nextZIndex, getFuncText, eqEmptyValue } from '../../ui/src/utils'
|
|
7
7
|
import { getSlotVNs } from '../../ui/src/vn'
|
|
@@ -96,6 +96,16 @@ export default /* define-vxe-component start */ defineVxeComponent({
|
|
|
96
96
|
type: [String, Number] as PropType<VxeSelectPropTypes.Max>,
|
|
97
97
|
default: null
|
|
98
98
|
},
|
|
99
|
+
showRadio: {
|
|
100
|
+
type: Boolean as PropType<VxeSelectPropTypes.ShowCloseButton>,
|
|
101
|
+
default: () => getConfig().select.showRadio
|
|
102
|
+
},
|
|
103
|
+
radioConfig: Object as PropType<VxeSelectPropTypes.RadioConfig>,
|
|
104
|
+
showCheckbox: {
|
|
105
|
+
type: Boolean as PropType<VxeSelectPropTypes.ShowCloseButton>,
|
|
106
|
+
default: () => getConfig().select.showCheckedButoon
|
|
107
|
+
},
|
|
108
|
+
checkboxConfig: Object as PropType<VxeSelectPropTypes.CheckboxConfig>,
|
|
99
109
|
/**
|
|
100
110
|
* 已废弃,请使用 popupConfig.zIndex
|
|
101
111
|
* @deprecated
|
|
@@ -115,6 +125,18 @@ export default /* define-vxe-component start */ defineVxeComponent({
|
|
|
115
125
|
remote: Boolean as PropType<VxeSelectPropTypes.Remote>,
|
|
116
126
|
remoteConfig: Object as PropType<VxeSelectPropTypes.RemoteConfig>,
|
|
117
127
|
emptyText: String as PropType<VxeSelectPropTypes.EmptyText>,
|
|
128
|
+
checkedClosable: {
|
|
129
|
+
type: Boolean as PropType<VxeSelectPropTypes.CheckedClosable>,
|
|
130
|
+
default: () => getConfig().select.checkedClosable
|
|
131
|
+
},
|
|
132
|
+
clearClosable: {
|
|
133
|
+
type: Boolean as PropType<VxeSelectPropTypes.ClearClosable>,
|
|
134
|
+
default: () => getConfig().select.clearClosable
|
|
135
|
+
},
|
|
136
|
+
showCloseButton: {
|
|
137
|
+
type: Boolean as PropType<VxeSelectPropTypes.ShowCloseButton>,
|
|
138
|
+
default: () => getConfig().select.showCloseButton
|
|
139
|
+
},
|
|
118
140
|
showTotalButoon: {
|
|
119
141
|
type: Boolean as PropType<VxeSelectPropTypes.ShowTotalButoon>,
|
|
120
142
|
default: () => getConfig().select.showTotalButoon
|
|
@@ -362,6 +384,18 @@ export default /* define-vxe-component start */ defineVxeComponent({
|
|
|
362
384
|
|
|
363
385
|
return Object.assign({}, getConfig().select.optionConfig, props.optionConfig)
|
|
364
386
|
},
|
|
387
|
+
computeRadioOpts () {
|
|
388
|
+
const $xeSelect = this
|
|
389
|
+
const props = $xeSelect
|
|
390
|
+
|
|
391
|
+
return Object.assign({}, getConfig().select.radioConfig, props.radioConfig)
|
|
392
|
+
},
|
|
393
|
+
computeCheckboxOpts () {
|
|
394
|
+
const $xeSelect = this
|
|
395
|
+
const props = $xeSelect
|
|
396
|
+
|
|
397
|
+
return Object.assign({}, getConfig().select.checkboxConfig, props.checkboxConfig)
|
|
398
|
+
},
|
|
365
399
|
computeIsGroup (this: any) {
|
|
366
400
|
const $xeSelect = this
|
|
367
401
|
const reactData = $xeSelect.reactData
|
|
@@ -850,7 +884,7 @@ export default /* define-vxe-component start */ defineVxeComponent({
|
|
|
850
884
|
$xeSelect.dispatchEvent('visible-change', { visible: true }, null)
|
|
851
885
|
}
|
|
852
886
|
},
|
|
853
|
-
hideOptionPanel () {
|
|
887
|
+
hideOptionPanel (evnt?: Event) {
|
|
854
888
|
const $xeSelect = this
|
|
855
889
|
const props = $xeSelect
|
|
856
890
|
const reactData = $xeSelect.reactData
|
|
@@ -875,7 +909,7 @@ export default /* define-vxe-component start */ defineVxeComponent({
|
|
|
875
909
|
internalData.hpTimeout = setTimeout(() => {
|
|
876
910
|
reactData.isAniVisible = false
|
|
877
911
|
}, 350)
|
|
878
|
-
$xeSelect.dispatchEvent('visible-change', { visible: false }, null)
|
|
912
|
+
$xeSelect.dispatchEvent('visible-change', { visible: false }, evnt || null)
|
|
879
913
|
},
|
|
880
914
|
changeEvent (evnt: Event, selectValue: any, option: any) {
|
|
881
915
|
const $xeSelect = this
|
|
@@ -905,7 +939,7 @@ export default /* define-vxe-component start */ defineVxeComponent({
|
|
|
905
939
|
|
|
906
940
|
const { $event } = params
|
|
907
941
|
$xeSelect.clearValueEvent($event, null)
|
|
908
|
-
$xeSelect.hideOptionPanel()
|
|
942
|
+
$xeSelect.hideOptionPanel($event)
|
|
909
943
|
},
|
|
910
944
|
allCheckedPanelEvent (params: VxeButtonDefines.ClickEventParams) {
|
|
911
945
|
const $xeSelect = this
|
|
@@ -913,7 +947,7 @@ export default /* define-vxe-component start */ defineVxeComponent({
|
|
|
913
947
|
const reactData = $xeSelect.reactData
|
|
914
948
|
|
|
915
949
|
const { $event } = params
|
|
916
|
-
const { multiple } = props
|
|
950
|
+
const { multiple, max, checkedClosable } = props
|
|
917
951
|
const { optList } = reactData
|
|
918
952
|
const valueField = $xeSelect.computeValueField
|
|
919
953
|
if (multiple) {
|
|
@@ -924,6 +958,12 @@ export default /* define-vxe-component start */ defineVxeComponent({
|
|
|
924
958
|
const selectValue = option[valueField]
|
|
925
959
|
// 检测是否超过最大可选数量
|
|
926
960
|
if ($xeSelect.checkMaxLimit(currVlas)) {
|
|
961
|
+
if (VxeUI) {
|
|
962
|
+
VxeUI.modal.message({
|
|
963
|
+
content: getI18n('vxe.select.overSizeErr', [max]),
|
|
964
|
+
status: 'warning'
|
|
965
|
+
})
|
|
966
|
+
}
|
|
927
967
|
break
|
|
928
968
|
}
|
|
929
969
|
if (!currVlas.some(val => val === selectValue)) {
|
|
@@ -931,15 +971,28 @@ export default /* define-vxe-component start */ defineVxeComponent({
|
|
|
931
971
|
}
|
|
932
972
|
}
|
|
933
973
|
$xeSelect.changeEvent($event, currVlas, optList[0])
|
|
974
|
+
if (checkedClosable) {
|
|
975
|
+
$xeSelect.hideOptionPanel($event)
|
|
976
|
+
}
|
|
934
977
|
$xeSelect.dispatchEvent('all-change', { value: currVlas }, $event)
|
|
935
978
|
}
|
|
936
979
|
},
|
|
937
980
|
clearCheckedPanelEvent (params: VxeButtonDefines.ClickEventParams) {
|
|
938
981
|
const $xeSelect = this
|
|
982
|
+
const props = $xeSelect
|
|
939
983
|
|
|
984
|
+
const { clearClosable } = props
|
|
940
985
|
const { $event } = params
|
|
941
986
|
$xeSelect.clearValueEvent($event, null)
|
|
942
|
-
|
|
987
|
+
if (clearClosable) {
|
|
988
|
+
$xeSelect.hideOptionPanel($event)
|
|
989
|
+
}
|
|
990
|
+
},
|
|
991
|
+
closePanelEvent (params: VxeButtonDefines.ClickEventParams) {
|
|
992
|
+
const $xeSelect = this
|
|
993
|
+
|
|
994
|
+
const { $event } = params
|
|
995
|
+
$xeSelect.hideOptionPanel($event)
|
|
943
996
|
},
|
|
944
997
|
changeOptionEvent (evnt: Event, option: any) {
|
|
945
998
|
const $xeSelect = this
|
|
@@ -976,7 +1029,7 @@ export default /* define-vxe-component start */ defineVxeComponent({
|
|
|
976
1029
|
$xeSelect.changeEvent(evnt, multipleValue, option)
|
|
977
1030
|
} else {
|
|
978
1031
|
$xeSelect.changeEvent(evnt, selectValue, option)
|
|
979
|
-
$xeSelect.hideOptionPanel()
|
|
1032
|
+
$xeSelect.hideOptionPanel(evnt)
|
|
980
1033
|
}
|
|
981
1034
|
reactData.reactFlag++
|
|
982
1035
|
},
|
|
@@ -992,7 +1045,7 @@ export default /* define-vxe-component start */ defineVxeComponent({
|
|
|
992
1045
|
if (getEventTargetNode(evnt, panelElem).flag) {
|
|
993
1046
|
$xeSelect.updatePlacement()
|
|
994
1047
|
} else {
|
|
995
|
-
$xeSelect.hideOptionPanel()
|
|
1048
|
+
$xeSelect.hideOptionPanel(evnt)
|
|
996
1049
|
}
|
|
997
1050
|
}
|
|
998
1051
|
}
|
|
@@ -1011,7 +1064,7 @@ export default /* define-vxe-component start */ defineVxeComponent({
|
|
|
1011
1064
|
reactData.isActivated = getEventTargetNode(evnt, el).flag || getEventTargetNode(evnt, panelElem).flag
|
|
1012
1065
|
if (visiblePanel && !reactData.isActivated) {
|
|
1013
1066
|
if (trigger !== 'manual') {
|
|
1014
|
-
$xeSelect.hideOptionPanel()
|
|
1067
|
+
$xeSelect.hideOptionPanel(evnt)
|
|
1015
1068
|
}
|
|
1016
1069
|
}
|
|
1017
1070
|
}
|
|
@@ -1112,7 +1165,7 @@ export default /* define-vxe-component start */ defineVxeComponent({
|
|
|
1112
1165
|
if (visiblePanel) {
|
|
1113
1166
|
if (isEsc || isTab) {
|
|
1114
1167
|
if (trigger !== 'manual') {
|
|
1115
|
-
$xeSelect.hideOptionPanel()
|
|
1168
|
+
$xeSelect.hideOptionPanel(evnt)
|
|
1116
1169
|
}
|
|
1117
1170
|
} else if (isEnter) {
|
|
1118
1171
|
if (currentOption) {
|
|
@@ -1143,7 +1196,7 @@ export default /* define-vxe-component start */ defineVxeComponent({
|
|
|
1143
1196
|
}
|
|
1144
1197
|
}
|
|
1145
1198
|
},
|
|
1146
|
-
handleGlobalBlurEvent () {
|
|
1199
|
+
handleGlobalBlurEvent (evnt: Event) {
|
|
1147
1200
|
const $xeSelect = this
|
|
1148
1201
|
const reactData = $xeSelect.reactData
|
|
1149
1202
|
|
|
@@ -1152,7 +1205,7 @@ export default /* define-vxe-component start */ defineVxeComponent({
|
|
|
1152
1205
|
const { trigger } = popupOpts
|
|
1153
1206
|
if (visiblePanel) {
|
|
1154
1207
|
if (trigger !== 'manual') {
|
|
1155
|
-
$xeSelect.hideOptionPanel()
|
|
1208
|
+
$xeSelect.hideOptionPanel(evnt)
|
|
1156
1209
|
}
|
|
1157
1210
|
}
|
|
1158
1211
|
if (isActivated) {
|
|
@@ -1278,7 +1331,7 @@ export default /* define-vxe-component start */ defineVxeComponent({
|
|
|
1278
1331
|
|
|
1279
1332
|
$xeSelect.handleSearchEvent()
|
|
1280
1333
|
}, 350, { trailing: true }),
|
|
1281
|
-
togglePanelEvent
|
|
1334
|
+
togglePanelEvent (params: any) {
|
|
1282
1335
|
const $xeSelect = this
|
|
1283
1336
|
const reactData = $xeSelect.reactData
|
|
1284
1337
|
|
|
@@ -1288,7 +1341,7 @@ export default /* define-vxe-component start */ defineVxeComponent({
|
|
|
1288
1341
|
reactData.triggerFocusPanel = false
|
|
1289
1342
|
} else {
|
|
1290
1343
|
if (reactData.visiblePanel) {
|
|
1291
|
-
$xeSelect.hideOptionPanel()
|
|
1344
|
+
$xeSelect.hideOptionPanel($event)
|
|
1292
1345
|
} else {
|
|
1293
1346
|
$xeSelect.showOptionPanel()
|
|
1294
1347
|
}
|
|
@@ -1614,6 +1667,68 @@ export default /* define-vxe-component start */ defineVxeComponent({
|
|
|
1614
1667
|
//
|
|
1615
1668
|
// Render
|
|
1616
1669
|
//
|
|
1670
|
+
renderRadio (h: CreateElement, option: VxeOptionProps, isOptGroup: boolean, isChecked: boolean, isDisabled: boolean) {
|
|
1671
|
+
const $xeSelect = this
|
|
1672
|
+
|
|
1673
|
+
const radioOpts = $xeSelect.computeRadioOpts
|
|
1674
|
+
const { showIcon, trigger } = radioOpts
|
|
1675
|
+
if (isOptGroup || showIcon === false) {
|
|
1676
|
+
return renderEmptyElement($xeSelect)
|
|
1677
|
+
}
|
|
1678
|
+
const ons: {
|
|
1679
|
+
click?(evnt: MouseEvent): void
|
|
1680
|
+
} = {}
|
|
1681
|
+
if (!trigger || trigger === 'default') {
|
|
1682
|
+
ons.click = (evnt) => {
|
|
1683
|
+
if (!isDisabled && !isOptGroup) {
|
|
1684
|
+
$xeSelect.changeOptionEvent(evnt, option)
|
|
1685
|
+
}
|
|
1686
|
+
}
|
|
1687
|
+
}
|
|
1688
|
+
return h('div', {
|
|
1689
|
+
key: 2,
|
|
1690
|
+
class: ['vxe-select-option--radio', {
|
|
1691
|
+
'is--checked': isChecked,
|
|
1692
|
+
'is--disabled': isDisabled
|
|
1693
|
+
}],
|
|
1694
|
+
on: ons
|
|
1695
|
+
}, [
|
|
1696
|
+
h('span', {
|
|
1697
|
+
class: ['vxe-radio--icon', isChecked ? getIcon().RADIO_CHECKED : getIcon().RADIO_UNCHECKED]
|
|
1698
|
+
})
|
|
1699
|
+
])
|
|
1700
|
+
},
|
|
1701
|
+
renderCheckbox (h: CreateElement, option: VxeOptionProps, isOptGroup: boolean, isChecked: boolean, isDisabled: boolean) {
|
|
1702
|
+
const $xeSelect = this
|
|
1703
|
+
|
|
1704
|
+
const checkboxOpts = $xeSelect.computeCheckboxOpts
|
|
1705
|
+
const { showIcon, trigger } = checkboxOpts
|
|
1706
|
+
if (isOptGroup || showIcon === false) {
|
|
1707
|
+
return renderEmptyElement($xeSelect)
|
|
1708
|
+
}
|
|
1709
|
+
const ons: {
|
|
1710
|
+
click?(evnt: MouseEvent): void
|
|
1711
|
+
} = {}
|
|
1712
|
+
if (!trigger || trigger === 'default') {
|
|
1713
|
+
ons.click = (evnt) => {
|
|
1714
|
+
if (!isDisabled && !isOptGroup) {
|
|
1715
|
+
$xeSelect.changeOptionEvent(evnt, option)
|
|
1716
|
+
}
|
|
1717
|
+
}
|
|
1718
|
+
}
|
|
1719
|
+
return h('div', {
|
|
1720
|
+
key: 3,
|
|
1721
|
+
class: ['vxe-select-option--checkbox', {
|
|
1722
|
+
'is--checked': isChecked,
|
|
1723
|
+
'is--disabled': isDisabled
|
|
1724
|
+
}],
|
|
1725
|
+
on: ons
|
|
1726
|
+
}, [
|
|
1727
|
+
h('span', {
|
|
1728
|
+
class: ['vxe-checkbox--icon', isChecked ? getIcon().CHECKBOX_CHECKED : getIcon().CHECKBOX_UNCHECKED]
|
|
1729
|
+
})
|
|
1730
|
+
])
|
|
1731
|
+
},
|
|
1617
1732
|
renderOption (h: CreateElement, list: VxeOptionProps[]) {
|
|
1618
1733
|
const $xeSelect = this
|
|
1619
1734
|
const props = $xeSelect
|
|
@@ -1621,7 +1736,7 @@ export default /* define-vxe-component start */ defineVxeComponent({
|
|
|
1621
1736
|
const reactData = $xeSelect.reactData
|
|
1622
1737
|
const internalData = $xeSelect.internalData
|
|
1623
1738
|
|
|
1624
|
-
const { allowCreate, optionKey } = props
|
|
1739
|
+
const { allowCreate, optionKey, multiple, showRadio, showCheckbox } = props
|
|
1625
1740
|
const { currentOption } = reactData
|
|
1626
1741
|
const { optAddMaps } = internalData
|
|
1627
1742
|
const optionOpts = $xeSelect.computeOptionOpts
|
|
@@ -1629,8 +1744,12 @@ export default /* define-vxe-component start */ defineVxeComponent({
|
|
|
1629
1744
|
const valueField = $xeSelect.computeValueField
|
|
1630
1745
|
const groupLabelField = $xeSelect.computeGroupLabelField
|
|
1631
1746
|
const selectVals = $xeSelect.computeSelectVals
|
|
1747
|
+
const radioOpts = $xeSelect.computeRadioOpts
|
|
1748
|
+
const checkboxOpts = $xeSelect.computeCheckboxOpts
|
|
1632
1749
|
const { useKey, height } = optionOpts
|
|
1633
1750
|
const optionSlot = slots.option
|
|
1751
|
+
const isCheckboxMode = showCheckbox && multiple
|
|
1752
|
+
const isRadioMode = showRadio && !multiple
|
|
1634
1753
|
return list.map((option, cIndex) => {
|
|
1635
1754
|
const { slots, className } = option
|
|
1636
1755
|
const optid = $xeSelect.getOptId(option)
|
|
@@ -1641,16 +1760,53 @@ export default /* define-vxe-component start */ defineVxeComponent({
|
|
|
1641
1760
|
const isVisible = isAdd || (!isOptGroup || isOptionVisible(option))
|
|
1642
1761
|
const isDisabled = !isAdd && $xeSelect.checkOptionDisabled(isSelected, option)
|
|
1643
1762
|
const defaultSlot = slots ? slots.default : null
|
|
1763
|
+
const optSlot = defaultSlot || optionSlot
|
|
1644
1764
|
const optParams = { option, group: isOptGroup ? option : null, $select: $xeSelect }
|
|
1645
1765
|
let optLabel = ''
|
|
1646
|
-
|
|
1647
|
-
if (
|
|
1648
|
-
optVNs
|
|
1649
|
-
} else if (
|
|
1650
|
-
optVNs
|
|
1766
|
+
const optVNs: VxeComponentSlotType[] = []
|
|
1767
|
+
if (isCheckboxMode) {
|
|
1768
|
+
optVNs.push($xeSelect.renderCheckbox(h, option, isOptGroup, isSelected, isDisabled))
|
|
1769
|
+
} else if (isRadioMode) {
|
|
1770
|
+
optVNs.push($xeSelect.renderRadio(h, option, isOptGroup, isSelected, isDisabled))
|
|
1771
|
+
}
|
|
1772
|
+
let otlbVNs: string | VxeComponentSlotType[] = []
|
|
1773
|
+
if (optSlot) {
|
|
1774
|
+
otlbVNs = $xeSelect.callSlot(optSlot, optParams, h)
|
|
1651
1775
|
} else {
|
|
1652
1776
|
optLabel = getFuncText(option[(isOptGroup ? groupLabelField : labelField) as 'label'] || optionValue)
|
|
1653
|
-
|
|
1777
|
+
otlbVNs = [optLabel]
|
|
1778
|
+
}
|
|
1779
|
+
optVNs.push(
|
|
1780
|
+
h('div', {
|
|
1781
|
+
key: 1,
|
|
1782
|
+
class: 'vxe-select-option--label'
|
|
1783
|
+
}, otlbVNs)
|
|
1784
|
+
)
|
|
1785
|
+
|
|
1786
|
+
const ons: {
|
|
1787
|
+
mousedown(evnt: MouseEvent): void
|
|
1788
|
+
mouseenter(evnt: MouseEvent): void
|
|
1789
|
+
click?(evnt: MouseEvent): void
|
|
1790
|
+
} = {
|
|
1791
|
+
mousedown: (evnt) => {
|
|
1792
|
+
const isLeftBtn = evnt.button === 0
|
|
1793
|
+
if (isLeftBtn) {
|
|
1794
|
+
evnt.stopPropagation()
|
|
1795
|
+
}
|
|
1796
|
+
},
|
|
1797
|
+
mouseenter: () => {
|
|
1798
|
+
if (!isDisabled && !isOptGroup && !$xeSelect.isVMScrollProcess()) {
|
|
1799
|
+
$xeSelect.setCurrentOption(option)
|
|
1800
|
+
}
|
|
1801
|
+
}
|
|
1802
|
+
}
|
|
1803
|
+
|
|
1804
|
+
if (isCheckboxMode ? checkboxOpts.trigger === 'option' : (isRadioMode ? radioOpts.trigger === 'option' : true)) {
|
|
1805
|
+
ons.click = (evnt) => {
|
|
1806
|
+
if (!isDisabled && !isOptGroup) {
|
|
1807
|
+
$xeSelect.changeOptionEvent(evnt, option)
|
|
1808
|
+
}
|
|
1809
|
+
}
|
|
1654
1810
|
}
|
|
1655
1811
|
|
|
1656
1812
|
return isVisible
|
|
@@ -1672,29 +1828,12 @@ export default /* define-vxe-component start */ defineVxeComponent({
|
|
|
1672
1828
|
height: toCssUnit(height)
|
|
1673
1829
|
}
|
|
1674
1830
|
: undefined,
|
|
1675
|
-
on:
|
|
1676
|
-
mousedown: (evnt: MouseEvent) => {
|
|
1677
|
-
const isLeftBtn = evnt.button === 0
|
|
1678
|
-
if (isLeftBtn) {
|
|
1679
|
-
evnt.stopPropagation()
|
|
1680
|
-
}
|
|
1681
|
-
},
|
|
1682
|
-
click: (evnt: MouseEvent) => {
|
|
1683
|
-
if (!isDisabled && !isOptGroup) {
|
|
1684
|
-
$xeSelect.changeOptionEvent(evnt, option)
|
|
1685
|
-
}
|
|
1686
|
-
},
|
|
1687
|
-
mouseenter: () => {
|
|
1688
|
-
if (!isDisabled && !isOptGroup && !$xeSelect.isVMScrollProcess()) {
|
|
1689
|
-
$xeSelect.setCurrentOption(option)
|
|
1690
|
-
}
|
|
1691
|
-
}
|
|
1692
|
-
}
|
|
1831
|
+
on: ons
|
|
1693
1832
|
}, allowCreate
|
|
1694
1833
|
? [
|
|
1695
1834
|
h('span', {
|
|
1696
1835
|
key: 1,
|
|
1697
|
-
class: 'vxe-select-option--label'
|
|
1836
|
+
class: 'vxe-select-option--add-label'
|
|
1698
1837
|
}, optVNs),
|
|
1699
1838
|
isAdd
|
|
1700
1839
|
? h('span', {
|
|
@@ -1746,7 +1885,7 @@ export default /* define-vxe-component start */ defineVxeComponent({
|
|
|
1746
1885
|
const slots = $xeSelect.$scopedSlots
|
|
1747
1886
|
const reactData = $xeSelect.reactData
|
|
1748
1887
|
|
|
1749
|
-
const { className, multiple, loading, filterable, showTotalButoon, showCheckedButoon, showClearButton } = props
|
|
1888
|
+
const { className, multiple, loading, filterable, showTotalButoon, showCheckedButoon, showClearButton, showCloseButton } = props
|
|
1750
1889
|
const { initialized, isActivated, isAniVisible, optList, visiblePanel, bodyHeight, topSpaceHeight } = reactData
|
|
1751
1890
|
const vSize = $xeSelect.computeSize
|
|
1752
1891
|
const isDisabled = $xeSelect.computeIsDisabled
|
|
@@ -1865,7 +2004,7 @@ export default /* define-vxe-component start */ defineVxeComponent({
|
|
|
1865
2004
|
})
|
|
1866
2005
|
])
|
|
1867
2006
|
: renderEmptyElement($xeSelect),
|
|
1868
|
-
|
|
2007
|
+
(showCheckedButoon && multiple) || showClearButton || headerSlot
|
|
1869
2008
|
? h('div', {
|
|
1870
2009
|
class: 'vxe-select--panel-header'
|
|
1871
2010
|
}, headerSlot
|
|
@@ -1874,11 +2013,6 @@ export default /* define-vxe-component start */ defineVxeComponent({
|
|
|
1874
2013
|
h('div', {
|
|
1875
2014
|
class: 'vxe-tree-select--header-button'
|
|
1876
2015
|
}, [
|
|
1877
|
-
showTotalButoon
|
|
1878
|
-
? h('div', {
|
|
1879
|
-
class: 'vxe-tree-select--header-total'
|
|
1880
|
-
}, getI18n('vxe.select.total', [selectVals.length, optList.length]))
|
|
1881
|
-
: renderEmptyElement($xeSelect),
|
|
1882
2016
|
h('div', {
|
|
1883
2017
|
class: 'vxe-tree-select--header-btns'
|
|
1884
2018
|
}, [
|
|
@@ -1933,10 +2067,37 @@ export default /* define-vxe-component start */ defineVxeComponent({
|
|
|
1933
2067
|
}, $xeSelect.renderOpts(h))
|
|
1934
2068
|
])
|
|
1935
2069
|
]),
|
|
1936
|
-
footerSlot
|
|
2070
|
+
footerSlot || showTotalButoon || (showCloseButton && multiple)
|
|
1937
2071
|
? h('div', {
|
|
1938
2072
|
class: 'vxe-select--panel-footer'
|
|
1939
|
-
},
|
|
2073
|
+
}, footerSlot
|
|
2074
|
+
? $xeSelect.callSlot(footerSlot, {}, h)
|
|
2075
|
+
: [
|
|
2076
|
+
h('div', {
|
|
2077
|
+
class: 'vxe-select--footer-button'
|
|
2078
|
+
}, [
|
|
2079
|
+
showTotalButoon
|
|
2080
|
+
? h('div', {
|
|
2081
|
+
class: 'vxe-select--total-btns'
|
|
2082
|
+
}, getI18n('vxe.select.total', [selectVals.length, optList.length]))
|
|
2083
|
+
: renderEmptyElement($xeSelect),
|
|
2084
|
+
showCloseButton && multiple
|
|
2085
|
+
? h('div', {
|
|
2086
|
+
class: 'vxe-select--oper-btns'
|
|
2087
|
+
}, [
|
|
2088
|
+
h(VxeButtonComponent, {
|
|
2089
|
+
props: {
|
|
2090
|
+
content: getI18n('vxe.select.close'),
|
|
2091
|
+
mode: 'text'
|
|
2092
|
+
},
|
|
2093
|
+
on: {
|
|
2094
|
+
click: $xeSelect.closePanelEvent
|
|
2095
|
+
}
|
|
2096
|
+
})
|
|
2097
|
+
])
|
|
2098
|
+
: renderEmptyElement($xeSelect)
|
|
2099
|
+
])
|
|
2100
|
+
])
|
|
1940
2101
|
: renderEmptyElement($xeSelect)
|
|
1941
2102
|
])
|
|
1942
2103
|
]
|