vxe-pc-ui 3.7.4 → 3.7.6
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/icon/style.css +1 -1
- package/es/language/ar-EG.js +19 -1
- package/es/language/de-DE.js +19 -1
- package/es/language/en-US.js +20 -2
- package/es/language/es-ES.js +19 -1
- package/es/language/fr-FR.js +19 -1
- package/es/language/hu-HU.js +19 -1
- package/es/language/hy-AM.js +18 -0
- package/es/language/id-ID.js +19 -1
- package/es/language/it-IT.js +19 -1
- package/es/language/ja-JP.js +19 -1
- package/es/language/ko-KR.js +19 -1
- package/es/language/ms-MY.js +19 -1
- package/es/language/nb-NO.js +19 -1
- package/es/language/pt-BR.js +19 -1
- package/es/language/ru-RU.js +19 -1
- package/es/language/th-TH.js +19 -1
- package/es/language/ug-CN.js +19 -1
- package/es/language/uk-UA.js +19 -1
- package/es/language/uz-UZ.js +19 -1
- package/es/language/vi-VN.js +19 -1
- package/es/language/zh-CHT.js +19 -1
- package/es/language/zh-CN.js +18 -0
- package/es/list/src/list.js +1 -1
- package/es/select/src/select.js +138 -41
- package/es/select/style.css +21 -0
- package/es/select/style.min.css +1 -1
- package/es/style.css +1 -1
- package/es/style.min.css +1 -1
- package/es/tree/src/tree.js +1160 -601
- package/es/tree/src/util.js +31 -0
- package/es/tree/style.css +23 -26
- package/es/tree/style.min.css +1 -1
- package/es/tree-select/src/tree-select.js +258 -24
- package/es/tree-select/style.css +36 -1
- package/es/tree-select/style.min.css +1 -1
- package/es/ui/index.js +20 -4
- package/es/ui/src/dom.js +9 -0
- package/es/ui/src/log.js +1 -1
- package/es/vxe-select/style.css +21 -0
- package/es/vxe-select/style.min.css +1 -1
- package/es/vxe-tree/style.css +23 -26
- package/es/vxe-tree/style.min.css +1 -1
- package/es/vxe-tree-select/style.css +36 -1
- package/es/vxe-tree-select/style.min.css +1 -1
- package/lib/icon/style/style.css +1 -1
- package/lib/icon/style/style.min.css +1 -1
- package/lib/index.umd.js +1541 -532
- package/lib/index.umd.min.js +1 -1
- package/lib/language/ar-EG.js +19 -1
- package/lib/language/ar-EG.min.js +1 -1
- package/lib/language/ar-EG.umd.js +19 -1
- package/lib/language/de-DE.js +19 -1
- package/lib/language/de-DE.min.js +1 -1
- package/lib/language/de-DE.umd.js +19 -1
- package/lib/language/en-US.js +20 -2
- package/lib/language/en-US.min.js +1 -1
- package/lib/language/en-US.umd.js +20 -2
- package/lib/language/es-ES.js +19 -1
- package/lib/language/es-ES.min.js +1 -1
- package/lib/language/es-ES.umd.js +19 -1
- package/lib/language/fr-FR.js +19 -1
- package/lib/language/fr-FR.min.js +1 -1
- package/lib/language/fr-FR.umd.js +19 -1
- package/lib/language/hu-HU.js +19 -1
- package/lib/language/hu-HU.min.js +1 -1
- package/lib/language/hu-HU.umd.js +19 -1
- package/lib/language/hy-AM.js +18 -0
- package/lib/language/hy-AM.min.js +1 -1
- package/lib/language/hy-AM.umd.js +18 -0
- package/lib/language/id-ID.js +19 -1
- package/lib/language/id-ID.min.js +1 -1
- package/lib/language/id-ID.umd.js +19 -1
- package/lib/language/it-IT.js +19 -1
- package/lib/language/it-IT.min.js +1 -1
- package/lib/language/it-IT.umd.js +19 -1
- package/lib/language/ja-JP.js +19 -1
- package/lib/language/ja-JP.min.js +1 -1
- package/lib/language/ja-JP.umd.js +19 -1
- package/lib/language/ko-KR.js +19 -1
- package/lib/language/ko-KR.min.js +1 -1
- package/lib/language/ko-KR.umd.js +19 -1
- package/lib/language/ms-MY.js +19 -1
- package/lib/language/ms-MY.min.js +1 -1
- package/lib/language/ms-MY.umd.js +19 -1
- package/lib/language/nb-NO.js +19 -1
- package/lib/language/nb-NO.min.js +1 -1
- package/lib/language/nb-NO.umd.js +19 -1
- package/lib/language/pt-BR.js +19 -1
- package/lib/language/pt-BR.min.js +1 -1
- package/lib/language/pt-BR.umd.js +19 -1
- package/lib/language/ru-RU.js +19 -1
- package/lib/language/ru-RU.min.js +1 -1
- package/lib/language/ru-RU.umd.js +19 -1
- package/lib/language/th-TH.js +19 -1
- package/lib/language/th-TH.min.js +1 -1
- package/lib/language/th-TH.umd.js +19 -1
- package/lib/language/ug-CN.js +19 -1
- package/lib/language/ug-CN.min.js +1 -1
- package/lib/language/ug-CN.umd.js +19 -1
- package/lib/language/uk-UA.js +19 -1
- package/lib/language/uk-UA.min.js +1 -1
- package/lib/language/uk-UA.umd.js +19 -1
- package/lib/language/uz-UZ.js +19 -1
- package/lib/language/uz-UZ.min.js +1 -1
- package/lib/language/uz-UZ.umd.js +19 -1
- package/lib/language/vi-VN.js +19 -1
- package/lib/language/vi-VN.min.js +1 -1
- package/lib/language/vi-VN.umd.js +19 -1
- package/lib/language/zh-CHT.js +19 -1
- package/lib/language/zh-CHT.min.js +1 -1
- package/lib/language/zh-CHT.umd.js +19 -1
- package/lib/language/zh-CN.js +18 -0
- package/lib/language/zh-CN.min.js +1 -1
- package/lib/language/zh-CN.umd.js +18 -0
- package/lib/list/src/list.js +1 -1
- package/lib/list/src/list.min.js +1 -1
- package/lib/select/src/select.js +145 -45
- package/lib/select/src/select.min.js +1 -1
- package/lib/select/style/style.css +21 -0
- 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/src/tree.js +1223 -626
- package/lib/tree/src/tree.min.js +1 -1
- package/lib/tree/src/util.js +37 -0
- package/lib/tree/src/util.min.js +1 -0
- package/lib/tree/style/style.css +23 -26
- package/lib/tree/style/style.min.css +1 -1
- package/lib/tree-select/src/tree-select.js +265 -26
- package/lib/tree-select/src/tree-select.min.js +1 -1
- package/lib/tree-select/style/style.css +36 -1
- package/lib/tree-select/style/style.min.css +1 -1
- package/lib/ui/index.js +20 -4
- package/lib/ui/index.min.js +1 -1
- package/lib/ui/src/dom.js +10 -0
- package/lib/ui/src/dom.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 +21 -0
- package/lib/vxe-select/style/style.min.css +1 -1
- package/lib/vxe-tree/style/style.css +23 -26
- package/lib/vxe-tree/style/style.min.css +1 -1
- package/lib/vxe-tree-select/style/style.css +36 -1
- package/lib/vxe-tree-select/style/style.min.css +1 -1
- package/package.json +1 -1
- package/packages/language/ar-EG.ts +19 -1
- package/packages/language/de-DE.ts +19 -1
- package/packages/language/en-US.ts +20 -2
- package/packages/language/es-ES.ts +19 -1
- package/packages/language/fr-FR.ts +19 -1
- package/packages/language/hu-HU.ts +19 -1
- package/packages/language/hy-AM.ts +18 -0
- package/packages/language/id-ID.ts +19 -1
- package/packages/language/it-IT.ts +19 -1
- package/packages/language/ja-JP.ts +19 -1
- package/packages/language/ko-KR.ts +19 -1
- package/packages/language/ms-MY.ts +19 -1
- package/packages/language/nb-NO.ts +19 -1
- package/packages/language/pt-BR.ts +19 -1
- package/packages/language/ru-RU.ts +19 -1
- package/packages/language/th-TH.ts +19 -1
- package/packages/language/ug-CN.ts +19 -1
- package/packages/language/uk-UA.ts +19 -1
- package/packages/language/uz-UZ.ts +19 -1
- package/packages/language/vi-VN.ts +19 -1
- package/packages/language/zh-CHT.ts +19 -1
- package/packages/language/zh-CN.ts +18 -0
- package/packages/list/src/list.ts +1 -1
- package/packages/select/src/select.ts +144 -44
- package/packages/tree/src/tree.ts +1206 -626
- package/packages/tree/src/util.ts +34 -0
- package/packages/tree-select/src/tree-select.ts +272 -26
- package/packages/ui/index.ts +19 -3
- package/packages/ui/src/dom.ts +10 -0
- package/styles/components/select.scss +19 -0
- package/styles/components/tree-select.scss +36 -1
- package/styles/components/tree.scss +28 -31
- package/types/components/button.d.ts +11 -1
- package/types/components/grid.d.ts +5 -0
- package/types/components/icon-picker.d.ts +11 -1
- package/types/components/input.d.ts +2 -2
- package/types/components/select.d.ts +29 -40
- package/types/components/table.d.ts +2 -4
- package/types/components/tree-select.d.ts +72 -12
- package/types/components/tree.d.ts +129 -8
- /package/es/icon/{iconfont.1752133985860.ttf → iconfont.1752416451473.ttf} +0 -0
- /package/es/icon/{iconfont.1752133985860.woff → iconfont.1752416451473.woff} +0 -0
- /package/es/icon/{iconfont.1752133985860.woff2 → iconfont.1752416451473.woff2} +0 -0
- /package/es/{iconfont.1752133985860.ttf → iconfont.1752416451473.ttf} +0 -0
- /package/es/{iconfont.1752133985860.woff → iconfont.1752416451473.woff} +0 -0
- /package/es/{iconfont.1752133985860.woff2 → iconfont.1752416451473.woff2} +0 -0
- /package/lib/icon/style/{iconfont.1752133985860.ttf → iconfont.1752416451473.ttf} +0 -0
- /package/lib/icon/style/{iconfont.1752133985860.woff → iconfont.1752416451473.woff} +0 -0
- /package/lib/icon/style/{iconfont.1752133985860.woff2 → iconfont.1752416451473.woff2} +0 -0
- /package/lib/{iconfont.1752133985860.ttf → iconfont.1752416451473.ttf} +0 -0
- /package/lib/{iconfont.1752133985860.woff → iconfont.1752416451473.woff} +0 -0
- /package/lib/{iconfont.1752133985860.woff2 → iconfont.1752416451473.woff2} +0 -0
|
@@ -4,10 +4,11 @@ import XEUtils from 'xe-utils'
|
|
|
4
4
|
import { getConfig, getIcon, getI18n, globalEvents, GLOBAL_EVENT_KEYS, createEvent, globalMixins, renderEmptyElement } from '../../ui'
|
|
5
5
|
import { getEventTargetNode, updatePanelPlacement } from '../../ui/src/dom'
|
|
6
6
|
import { getLastZIndex, nextZIndex, getFuncText } from '../../ui/src/utils'
|
|
7
|
-
import VxeInputComponent from '../../input/src/input'
|
|
8
7
|
import { getSlotVNs } from '../../ui/src/vn'
|
|
8
|
+
import VxeInputComponent from '../../input/src/input'
|
|
9
|
+
import VxeButtonComponent from '../../button/src/button'
|
|
9
10
|
|
|
10
|
-
import type { VxeSelectPropTypes, SelectInternalData, ValueOf, VxeComponentSizeType, SelectReactData, VxeSelectEmits, VxeInputDefines, VxeSelectDefines,
|
|
11
|
+
import type { VxeSelectPropTypes, SelectInternalData, ValueOf, VxeComponentSizeType, SelectReactData, VxeSelectEmits, VxeButtonDefines, VxeInputDefines, VxeSelectDefines, VxeOptionProps, VxeDrawerConstructor, VxeDrawerMethods, VxeFormDefines, VxeFormConstructor, VxeFormPrivateMethods, VxeModalConstructor, VxeModalMethods, VxeInputConstructor, VxeComponentSlotType } from '../../../types'
|
|
11
12
|
import type { VxeTableConstructor, VxeTablePrivateMethods } from '../../../types/components/table'
|
|
12
13
|
|
|
13
14
|
function isOptionVisible (option: any) {
|
|
@@ -70,10 +71,20 @@ export default /* define-vxe-component start */ defineVxeComponent({
|
|
|
70
71
|
filterable: Boolean as PropType<VxeSelectPropTypes.Filterable>,
|
|
71
72
|
filterMethod: Function as PropType<VxeSelectPropTypes.FilterMethod>,
|
|
72
73
|
remote: Boolean as PropType<VxeSelectPropTypes.Remote>,
|
|
73
|
-
// 已废弃,被 remote-config.queryMethod 替换
|
|
74
|
-
remoteMethod: Function as PropType<VxeSelectPropTypes.RemoteMethod>,
|
|
75
74
|
remoteConfig: Object as PropType<VxeSelectPropTypes.RemoteConfig>,
|
|
76
75
|
emptyText: String as PropType<VxeSelectPropTypes.EmptyText>,
|
|
76
|
+
showTotalButoon: {
|
|
77
|
+
type: Boolean as PropType<VxeSelectPropTypes.ShowTotalButoon>,
|
|
78
|
+
default: () => getConfig().select.showTotalButoon
|
|
79
|
+
},
|
|
80
|
+
showCheckedButoon: {
|
|
81
|
+
type: Boolean as PropType<VxeSelectPropTypes.ShowCheckedButoon>,
|
|
82
|
+
default: () => getConfig().select.showCheckedButoon
|
|
83
|
+
},
|
|
84
|
+
showClearButton: {
|
|
85
|
+
type: Boolean as PropType<VxeSelectPropTypes.ShowClearButton>,
|
|
86
|
+
default: () => getConfig().select.showClearButton
|
|
87
|
+
},
|
|
77
88
|
transfer: {
|
|
78
89
|
type: Boolean as PropType<VxeSelectPropTypes.Transfer>,
|
|
79
90
|
default: null
|
|
@@ -81,12 +92,23 @@ export default /* define-vxe-component start */ defineVxeComponent({
|
|
|
81
92
|
virtualYConfig: Object as PropType<VxeSelectPropTypes.VirtualYConfig>,
|
|
82
93
|
scrollY: Object as PropType<VxeSelectPropTypes.ScrollY>,
|
|
83
94
|
|
|
84
|
-
|
|
95
|
+
/**
|
|
96
|
+
* 已废弃,被 remote-config.queryMethod 替换
|
|
97
|
+
* @deprecated
|
|
98
|
+
*/
|
|
99
|
+
remoteMethod: Function as PropType<VxeSelectPropTypes.RemoteMethod>,
|
|
100
|
+
/**
|
|
101
|
+
* 已废弃,被 option-config.keyField 替换
|
|
102
|
+
* @deprecated
|
|
103
|
+
*/
|
|
85
104
|
optionId: {
|
|
86
105
|
type: String as PropType<VxeSelectPropTypes.OptionId>,
|
|
87
106
|
default: () => getConfig().select.optionId
|
|
88
107
|
},
|
|
89
|
-
|
|
108
|
+
/**
|
|
109
|
+
* 已废弃,被 option-config.useKey 替换
|
|
110
|
+
* @deprecated
|
|
111
|
+
*/
|
|
90
112
|
optionKey: Boolean as PropType<VxeSelectPropTypes.OptionKey>
|
|
91
113
|
},
|
|
92
114
|
inject: {
|
|
@@ -121,7 +143,6 @@ export default /* define-vxe-component start */ defineVxeComponent({
|
|
|
121
143
|
bodyHeight: 0,
|
|
122
144
|
topSpaceHeight: 0,
|
|
123
145
|
optList: [],
|
|
124
|
-
afterVisibleList: [],
|
|
125
146
|
staticOptions: [],
|
|
126
147
|
reactFlag: 1,
|
|
127
148
|
|
|
@@ -140,6 +161,7 @@ export default /* define-vxe-component start */ defineVxeComponent({
|
|
|
140
161
|
const internalData: SelectInternalData = {
|
|
141
162
|
synchData: [],
|
|
142
163
|
fullData: [],
|
|
164
|
+
afterVisibleList: [],
|
|
143
165
|
optAddMaps: {},
|
|
144
166
|
optGroupKeyMaps: {},
|
|
145
167
|
optFullValMaps: {},
|
|
@@ -281,13 +303,10 @@ export default /* define-vxe-component start */ defineVxeComponent({
|
|
|
281
303
|
const $xeSelect = this
|
|
282
304
|
const props = $xeSelect
|
|
283
305
|
|
|
284
|
-
const { value
|
|
285
|
-
|
|
286
|
-
return (XEUtils.isArray(value) ? value.length : (XEUtils.eqNull(value) ? 0 : 1)) >= XEUtils.toNumber(max)
|
|
287
|
-
}
|
|
288
|
-
return false
|
|
306
|
+
const { value: modelValue } = props
|
|
307
|
+
return ($xeSelect as any).checkMaxLimit(modelValue) as boolean
|
|
289
308
|
},
|
|
290
|
-
|
|
309
|
+
computeVirtualYOpts () {
|
|
291
310
|
const $xeSelect = this
|
|
292
311
|
const props = $xeSelect
|
|
293
312
|
|
|
@@ -399,8 +418,10 @@ export default /* define-vxe-component start */ defineVxeComponent({
|
|
|
399
418
|
const reactData = $xeSelect.reactData
|
|
400
419
|
|
|
401
420
|
const $input = $xeSelect.$refs.refInput as VxeInputConstructor
|
|
421
|
+
if ($input) {
|
|
422
|
+
$input.blur()
|
|
423
|
+
}
|
|
402
424
|
reactData.isActivated = true
|
|
403
|
-
$input.blur()
|
|
404
425
|
return $xeSelect.$nextTick()
|
|
405
426
|
},
|
|
406
427
|
blur () {
|
|
@@ -408,7 +429,9 @@ export default /* define-vxe-component start */ defineVxeComponent({
|
|
|
408
429
|
const reactData = $xeSelect.reactData
|
|
409
430
|
|
|
410
431
|
const $input = $xeSelect.$refs.refInput as VxeInputConstructor
|
|
411
|
-
$input
|
|
432
|
+
if ($input) {
|
|
433
|
+
$input.blur()
|
|
434
|
+
}
|
|
412
435
|
reactData.isActivated = false
|
|
413
436
|
return $xeSelect.$nextTick()
|
|
414
437
|
},
|
|
@@ -439,6 +462,16 @@ export default /* define-vxe-component start */ defineVxeComponent({
|
|
|
439
462
|
const optid = option[$xeSelect.getOptKey()]
|
|
440
463
|
return optid ? encodeURIComponent(optid) : ''
|
|
441
464
|
},
|
|
465
|
+
checkMaxLimit (selectVals: VxeSelectPropTypes.ModelValue | undefined) {
|
|
466
|
+
const $xeSelect = this
|
|
467
|
+
const props = $xeSelect
|
|
468
|
+
|
|
469
|
+
const { multiple, max } = props
|
|
470
|
+
if (multiple && max) {
|
|
471
|
+
return (XEUtils.isArray(selectVals) ? selectVals.length : (XEUtils.eqNull(selectVals) ? 0 : 1)) >= XEUtils.toNumber(max)
|
|
472
|
+
}
|
|
473
|
+
return false
|
|
474
|
+
},
|
|
442
475
|
getRemoteSelectLabel (value: any) {
|
|
443
476
|
const $xeSelect = this
|
|
444
477
|
const internalData = $xeSelect.internalData
|
|
@@ -501,7 +534,7 @@ export default /* define-vxe-component start */ defineVxeComponent({
|
|
|
501
534
|
cacheItem._index = index
|
|
502
535
|
}
|
|
503
536
|
})
|
|
504
|
-
|
|
537
|
+
internalData.afterVisibleList = avList
|
|
505
538
|
return $xeSelect.$nextTick()
|
|
506
539
|
},
|
|
507
540
|
refreshOption () {
|
|
@@ -649,7 +682,7 @@ export default /* define-vxe-component start */ defineVxeComponent({
|
|
|
649
682
|
reactData.isAniVisible = true
|
|
650
683
|
if (filterable) {
|
|
651
684
|
if (remote && remoteOpts.enabled && remoteOpts.autoLoad && !fullData.length) {
|
|
652
|
-
$xeSelect.
|
|
685
|
+
$xeSelect.handleSearchEvent()
|
|
653
686
|
} else {
|
|
654
687
|
$xeSelect.handleOption()
|
|
655
688
|
$xeSelect.updateYData()
|
|
@@ -711,6 +744,40 @@ export default /* define-vxe-component start */ defineVxeComponent({
|
|
|
711
744
|
$xeSelect.clearValueEvent($event, null)
|
|
712
745
|
$xeSelect.hideOptionPanel()
|
|
713
746
|
},
|
|
747
|
+
allCheckedPanelEvent (params: VxeButtonDefines.ClickEventParams) {
|
|
748
|
+
const $xeSelect = this
|
|
749
|
+
const props = $xeSelect
|
|
750
|
+
const reactData = $xeSelect.reactData
|
|
751
|
+
|
|
752
|
+
const { $event } = params
|
|
753
|
+
const { value: modelValue, multiple } = props
|
|
754
|
+
const { optList } = reactData
|
|
755
|
+
const valueField = $xeSelect.computeValueField
|
|
756
|
+
if (multiple) {
|
|
757
|
+
const multipleValue: any[] = XEUtils.eqNull(modelValue) ? [] : (XEUtils.isArray(modelValue) ? modelValue : [modelValue])
|
|
758
|
+
for (let i = 0; i < optList.length; i++) {
|
|
759
|
+
const option = optList[i]
|
|
760
|
+
const selectValue = option[valueField]
|
|
761
|
+
// 检测是否超过最大可选数量
|
|
762
|
+
if ($xeSelect.checkMaxLimit(multipleValue)) {
|
|
763
|
+
break
|
|
764
|
+
}
|
|
765
|
+
if (!multipleValue.some(val => val === selectValue)) {
|
|
766
|
+
multipleValue.push(selectValue)
|
|
767
|
+
}
|
|
768
|
+
}
|
|
769
|
+
$xeSelect.changeEvent($event, multipleValue)
|
|
770
|
+
$xeSelect.dispatchEvent('all-change', { value: multipleValue }, $event)
|
|
771
|
+
$xeSelect.hideOptionPanel()
|
|
772
|
+
}
|
|
773
|
+
},
|
|
774
|
+
clearCheckedPanelEvent (params: VxeButtonDefines.ClickEventParams) {
|
|
775
|
+
const $xeSelect = this
|
|
776
|
+
|
|
777
|
+
const { $event } = params
|
|
778
|
+
$xeSelect.clearValueEvent($event, null)
|
|
779
|
+
$xeSelect.hideOptionPanel()
|
|
780
|
+
},
|
|
714
781
|
changeOptionEvent (evnt: Event, option: any) {
|
|
715
782
|
const $xeSelect = this
|
|
716
783
|
const props = $xeSelect
|
|
@@ -799,8 +866,8 @@ export default /* define-vxe-component start */ defineVxeComponent({
|
|
|
799
866
|
const internalData = $xeSelect.internalData
|
|
800
867
|
|
|
801
868
|
const { allowCreate } = props
|
|
802
|
-
const {
|
|
803
|
-
const { optFullValMaps, optAddMaps } = internalData
|
|
869
|
+
const { optList } = reactData
|
|
870
|
+
const { optFullValMaps, optAddMaps, afterVisibleList } = internalData
|
|
804
871
|
const valueField = $xeSelect.computeValueField
|
|
805
872
|
let fullList = afterVisibleList
|
|
806
873
|
let offsetAddIndex = 0
|
|
@@ -972,13 +1039,13 @@ export default /* define-vxe-component start */ defineVxeComponent({
|
|
|
972
1039
|
$xeSelect.togglePanelEvent(evnt)
|
|
973
1040
|
$xeSelect.dispatchEvent('click', { triggerButton: true, visible: reactData.visiblePanel }, evnt)
|
|
974
1041
|
},
|
|
975
|
-
modelSearchEvent
|
|
1042
|
+
modelSearchEvent (value: string) {
|
|
976
1043
|
const $xeSelect = this
|
|
977
1044
|
const reactData = $xeSelect.reactData
|
|
978
1045
|
|
|
979
1046
|
reactData.searchValue = value
|
|
980
1047
|
},
|
|
981
|
-
focusSearchEvent
|
|
1048
|
+
focusSearchEvent () {
|
|
982
1049
|
const $xeSelect = this
|
|
983
1050
|
const reactData = $xeSelect.reactData
|
|
984
1051
|
|
|
@@ -1030,15 +1097,12 @@ export default /* define-vxe-component start */ defineVxeComponent({
|
|
|
1030
1097
|
}
|
|
1031
1098
|
}
|
|
1032
1099
|
},
|
|
1033
|
-
checkOptionDisabled (isSelected: any, option: VxeOptionProps
|
|
1100
|
+
checkOptionDisabled (isSelected: any, option: VxeOptionProps) {
|
|
1034
1101
|
const $xeSelect = this
|
|
1035
1102
|
|
|
1036
1103
|
if (option.disabled) {
|
|
1037
1104
|
return true
|
|
1038
1105
|
}
|
|
1039
|
-
if (group && group.disabled) {
|
|
1040
|
-
return true
|
|
1041
|
-
}
|
|
1042
1106
|
const isMaximize = $xeSelect.computeIsMaximize
|
|
1043
1107
|
if (isMaximize && !isSelected) {
|
|
1044
1108
|
return true
|
|
@@ -1050,8 +1114,8 @@ export default /* define-vxe-component start */ defineVxeComponent({
|
|
|
1050
1114
|
const reactData = $xeSelect.reactData
|
|
1051
1115
|
const internalData = $xeSelect.internalData
|
|
1052
1116
|
|
|
1053
|
-
const { scrollYLoad
|
|
1054
|
-
const { scrollYStore } = internalData
|
|
1117
|
+
const { scrollYLoad } = reactData
|
|
1118
|
+
const { scrollYStore, afterVisibleList } = internalData
|
|
1055
1119
|
reactData.bodyHeight = scrollYLoad ? afterVisibleList.length * scrollYStore.rowHeight : 0
|
|
1056
1120
|
reactData.topSpaceHeight = scrollYLoad ? Math.max(scrollYStore.startIndex * scrollYStore.rowHeight, 0) : 0
|
|
1057
1121
|
},
|
|
@@ -1062,8 +1126,8 @@ export default /* define-vxe-component start */ defineVxeComponent({
|
|
|
1062
1126
|
const internalData = $xeSelect.internalData
|
|
1063
1127
|
|
|
1064
1128
|
const { filterable, allowCreate } = props
|
|
1065
|
-
const { scrollYLoad,
|
|
1066
|
-
const { optAddMaps, scrollYStore } = internalData
|
|
1129
|
+
const { scrollYLoad, searchValue } = reactData
|
|
1130
|
+
const { optAddMaps, scrollYStore, afterVisibleList } = internalData
|
|
1067
1131
|
const labelField = $xeSelect.computeLabelField
|
|
1068
1132
|
const valueField = $xeSelect.computeValueField
|
|
1069
1133
|
const restList = scrollYLoad ? afterVisibleList.slice(scrollYStore.startIndex, scrollYStore.endIndex) : afterVisibleList.slice(0)
|
|
@@ -1096,13 +1160,10 @@ export default /* define-vxe-component start */ defineVxeComponent({
|
|
|
1096
1160
|
const { scrollYLoad } = reactData
|
|
1097
1161
|
const { scrollYStore } = internalData
|
|
1098
1162
|
const virtualBodyElem = $xeSelect.$refs.refVirtualBody as HTMLDivElement
|
|
1099
|
-
const
|
|
1163
|
+
const virtualYOpts = $xeSelect.computeVirtualYOpts
|
|
1100
1164
|
let rowHeight = 0
|
|
1101
1165
|
let firstItemElem: HTMLElement | undefined
|
|
1102
1166
|
if (virtualBodyElem) {
|
|
1103
|
-
if (sYOpts.sItem) {
|
|
1104
|
-
firstItemElem = virtualBodyElem.querySelector(sYOpts.sItem) as HTMLElement
|
|
1105
|
-
}
|
|
1106
1167
|
if (!firstItemElem) {
|
|
1107
1168
|
firstItemElem = virtualBodyElem.children[0] as HTMLElement
|
|
1108
1169
|
}
|
|
@@ -1116,7 +1177,7 @@ export default /* define-vxe-component start */ defineVxeComponent({
|
|
|
1116
1177
|
if (scrollYLoad) {
|
|
1117
1178
|
const scrollBodyElem = $xeSelect.$refs.refVirtualWrapper as HTMLDivElement
|
|
1118
1179
|
const visibleYSize = Math.max(8, scrollBodyElem ? Math.ceil(scrollBodyElem.clientHeight / rowHeight) : 0)
|
|
1119
|
-
const offsetYSize = Math.max(0, Math.min(2, XEUtils.toNumber(
|
|
1180
|
+
const offsetYSize = Math.max(0, Math.min(2, XEUtils.toNumber(virtualYOpts.oSize)))
|
|
1120
1181
|
scrollYStore.offsetSize = offsetYSize
|
|
1121
1182
|
scrollYStore.visibleSize = visibleYSize
|
|
1122
1183
|
scrollYStore.endIndex = Math.max(scrollYStore.startIndex, visibleYSize + offsetYSize, scrollYStore.endIndex)
|
|
@@ -1286,7 +1347,7 @@ export default /* define-vxe-component start */ defineVxeComponent({
|
|
|
1286
1347
|
$xeSelect.cacheItemMap(datas || [])
|
|
1287
1348
|
const { isLoaded, fullData, scrollYStore } = internalData
|
|
1288
1349
|
const defaultOpts = $xeSelect.computeDefaultOpts
|
|
1289
|
-
const
|
|
1350
|
+
const virtualYOpts = $xeSelect.computeVirtualYOpts
|
|
1290
1351
|
const valueField = $xeSelect.computeValueField
|
|
1291
1352
|
Object.assign(scrollYStore, {
|
|
1292
1353
|
startIndex: 0,
|
|
@@ -1295,7 +1356,7 @@ export default /* define-vxe-component start */ defineVxeComponent({
|
|
|
1295
1356
|
})
|
|
1296
1357
|
internalData.synchData = datas || []
|
|
1297
1358
|
// 如果gt为0,则总是启用
|
|
1298
|
-
reactData.scrollYLoad = !!
|
|
1359
|
+
reactData.scrollYLoad = !!virtualYOpts.enabled && virtualYOpts.gt > -1 && (virtualYOpts.gt === 0 || virtualYOpts.gt <= fullData.length)
|
|
1299
1360
|
$xeSelect.handleData()
|
|
1300
1361
|
if (!isLoaded) {
|
|
1301
1362
|
const { selectMode } = defaultOpts
|
|
@@ -1349,7 +1410,7 @@ export default /* define-vxe-component start */ defineVxeComponent({
|
|
|
1349
1410
|
//
|
|
1350
1411
|
// Render
|
|
1351
1412
|
//
|
|
1352
|
-
renderOption (h: CreateElement, list: VxeOptionProps[]
|
|
1413
|
+
renderOption (h: CreateElement, list: VxeOptionProps[]) {
|
|
1353
1414
|
const $xeSelect = this
|
|
1354
1415
|
const props = $xeSelect
|
|
1355
1416
|
const slots = $xeSelect.$scopedSlots
|
|
@@ -1373,9 +1434,9 @@ export default /* define-vxe-component start */ defineVxeComponent({
|
|
|
1373
1434
|
const isAdd = !!(allowCreate && optAddMaps[optid])
|
|
1374
1435
|
const isSelected = !isAdd && (XEUtils.isArray(value) ? value.indexOf(optionValue) > -1 : value === optionValue)
|
|
1375
1436
|
const isVisible = isAdd || (!isOptGroup || isOptionVisible(option))
|
|
1376
|
-
const isDisabled = !isAdd && $xeSelect.checkOptionDisabled(isSelected, option
|
|
1437
|
+
const isDisabled = !isAdd && $xeSelect.checkOptionDisabled(isSelected, option)
|
|
1377
1438
|
const defaultSlot = slots ? slots.default : null
|
|
1378
|
-
const optParams = { option, group: null, $select: $xeSelect }
|
|
1439
|
+
const optParams = { option, group: isOptGroup ? option : null, $select: $xeSelect }
|
|
1379
1440
|
let optLabel = ''
|
|
1380
1441
|
let optVNs: string | VxeComponentSlotType[] = []
|
|
1381
1442
|
if (optionSlot) {
|
|
@@ -1475,8 +1536,8 @@ export default /* define-vxe-component start */ defineVxeComponent({
|
|
|
1475
1536
|
const slots = $xeSelect.$scopedSlots
|
|
1476
1537
|
const reactData = $xeSelect.reactData
|
|
1477
1538
|
|
|
1478
|
-
const { className, popupClassName, loading, filterable } = props
|
|
1479
|
-
const { initialized, isActivated, isAniVisible, visiblePanel, bodyHeight, topSpaceHeight } = reactData
|
|
1539
|
+
const { value: modelValue, className, popupClassName, multiple, loading, filterable, showTotalButoon, showCheckedButoon, showClearButton } = props
|
|
1540
|
+
const { initialized, isActivated, isAniVisible, optList, visiblePanel, bodyHeight, topSpaceHeight } = reactData
|
|
1480
1541
|
const vSize = $xeSelect.computeSize
|
|
1481
1542
|
const isDisabled = $xeSelect.computeIsDisabled
|
|
1482
1543
|
const selectLabel = $xeSelect.computeSelectLabel
|
|
@@ -1501,6 +1562,7 @@ export default /* define-vxe-component start */ defineVxeComponent({
|
|
|
1501
1562
|
}, selectLabel)
|
|
1502
1563
|
])
|
|
1503
1564
|
}
|
|
1565
|
+
const selectVals = XEUtils.eqNull(modelValue) ? [] : (XEUtils.isArray(modelValue) ? modelValue : [modelValue])
|
|
1504
1566
|
return h('div', {
|
|
1505
1567
|
ref: 'refElem',
|
|
1506
1568
|
class: ['vxe-select', className ? (XEUtils.isFunction(className) ? className({ $select: $xeSelect }) : className) : '', {
|
|
@@ -1584,10 +1646,48 @@ export default /* define-vxe-component start */ defineVxeComponent({
|
|
|
1584
1646
|
})
|
|
1585
1647
|
])
|
|
1586
1648
|
: renderEmptyElement($xeSelect),
|
|
1587
|
-
headerSlot
|
|
1649
|
+
showTotalButoon || (showCheckedButoon && multiple) || showClearButton || headerSlot
|
|
1588
1650
|
? h('div', {
|
|
1589
1651
|
class: 'vxe-select--panel-header'
|
|
1590
|
-
},
|
|
1652
|
+
}, headerSlot
|
|
1653
|
+
? $xeSelect.callSlot(headerSlot, {}, h)
|
|
1654
|
+
: [
|
|
1655
|
+
h('div', {
|
|
1656
|
+
class: 'vxe-tree-select--header-button'
|
|
1657
|
+
}, [
|
|
1658
|
+
showTotalButoon
|
|
1659
|
+
? h('div', {
|
|
1660
|
+
class: 'vxe-tree-select--header-total'
|
|
1661
|
+
}, getI18n('vxe.select.total', [selectVals.length, optList.length]))
|
|
1662
|
+
: renderEmptyElement($xeSelect),
|
|
1663
|
+
h('div', {
|
|
1664
|
+
class: 'vxe-tree-select--header-btns'
|
|
1665
|
+
}, [
|
|
1666
|
+
(showCheckedButoon && multiple)
|
|
1667
|
+
? h(VxeButtonComponent, {
|
|
1668
|
+
props: {
|
|
1669
|
+
content: getI18n('vxe.select.allChecked'),
|
|
1670
|
+
mode: 'text'
|
|
1671
|
+
},
|
|
1672
|
+
on: {
|
|
1673
|
+
click: $xeSelect.allCheckedPanelEvent
|
|
1674
|
+
}
|
|
1675
|
+
})
|
|
1676
|
+
: renderEmptyElement($xeSelect),
|
|
1677
|
+
showClearButton
|
|
1678
|
+
? h(VxeButtonComponent, {
|
|
1679
|
+
props: {
|
|
1680
|
+
content: getI18n('vxe.select.clear'),
|
|
1681
|
+
mode: 'text'
|
|
1682
|
+
},
|
|
1683
|
+
on: {
|
|
1684
|
+
click: $xeSelect.clearCheckedPanelEvent
|
|
1685
|
+
}
|
|
1686
|
+
})
|
|
1687
|
+
: renderEmptyElement($xeSelect)
|
|
1688
|
+
])
|
|
1689
|
+
])
|
|
1690
|
+
])
|
|
1591
1691
|
: renderEmptyElement($xeSelect),
|
|
1592
1692
|
h('div', {
|
|
1593
1693
|
class: 'vxe-select--panel-body'
|
|
@@ -1609,7 +1709,7 @@ export default /* define-vxe-component start */ defineVxeComponent({
|
|
|
1609
1709
|
ref: 'refVirtualBody',
|
|
1610
1710
|
class: 'vxe-select--body',
|
|
1611
1711
|
style: {
|
|
1612
|
-
|
|
1712
|
+
transform: `translateY(${topSpaceHeight}px)`
|
|
1613
1713
|
}
|
|
1614
1714
|
}, $xeSelect.renderOpts(h))
|
|
1615
1715
|
])
|