vxe-pc-ui 4.11.44 → 4.11.45
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/es/button/src/button.js +18 -6
- package/es/date-picker/src/date-picker.js +17 -5
- package/es/date-range-picker/src/date-range-picker.js +17 -5
- package/es/icon/style.css +1 -1
- package/es/icon-picker/src/icon-picker.js +36 -74
- package/es/pulldown/src/pulldown.js +26 -6
- package/es/select/src/select.js +21 -7
- package/es/style.css +1 -1
- package/es/style.min.css +1 -1
- package/es/table-select/src/table-select.js +17 -7
- package/es/tree-select/src/tree-select.js +21 -7
- package/es/ui/index.js +1 -1
- package/es/ui/src/log.js +1 -1
- package/lib/button/src/button.js +18 -9
- package/lib/button/src/button.min.js +1 -1
- package/lib/date-picker/src/date-picker.js +19 -7
- package/lib/date-picker/src/date-picker.min.js +1 -1
- package/lib/date-range-picker/src/date-range-picker.js +19 -7
- package/lib/date-range-picker/src/date-range-picker.min.js +1 -1
- package/lib/icon/style/style.css +1 -1
- package/lib/icon/style/style.min.css +1 -1
- package/lib/icon-picker/src/icon-picker.js +39 -80
- package/lib/icon-picker/src/icon-picker.min.js +1 -1
- package/lib/index.umd.js +185 -146
- package/lib/index.umd.min.js +1 -1
- package/lib/pulldown/src/pulldown.js +26 -9
- package/lib/pulldown/src/pulldown.min.js +1 -1
- package/lib/select/src/select.js +22 -10
- package/lib/select/src/select.min.js +1 -1
- package/lib/style.css +1 -1
- package/lib/style.min.css +1 -1
- package/lib/table-select/src/table-select.js +18 -12
- package/lib/table-select/src/table-select.min.js +1 -1
- package/lib/tree-select/src/tree-select.js +22 -10
- package/lib/tree-select/src/tree-select.min.js +1 -1
- package/lib/ui/index.js +1 -1
- package/lib/ui/index.min.js +1 -1
- package/lib/ui/src/log.js +1 -1
- package/lib/ui/src/log.min.js +1 -1
- package/package.json +1 -1
- package/packages/button/src/button.ts +19 -6
- package/packages/date-picker/src/date-picker.ts +18 -5
- package/packages/date-range-picker/src/date-range-picker.ts +18 -5
- package/packages/icon-picker/src/icon-picker.ts +37 -71
- package/packages/pulldown/src/pulldown.ts +27 -6
- package/packages/select/src/select.ts +21 -7
- package/packages/table-select/src/table-select.ts +17 -7
- package/packages/tree-select/src/tree-select.ts +21 -7
- package/types/components/button.d.ts +18 -0
- package/types/components/date-picker.d.ts +8 -0
- package/types/components/date-range-picker.d.ts +8 -0
- package/types/components/icon-picker.d.ts +24 -0
- package/types/components/pulldown.d.ts +28 -0
- package/types/components/select.d.ts +26 -0
- package/types/components/table-select.d.ts +16 -1
- package/types/components/tree-select.d.ts +20 -2
- /package/es/icon/{iconfont.1768284745337.ttf → iconfont.1768381374840.ttf} +0 -0
- /package/es/icon/{iconfont.1768284745337.woff → iconfont.1768381374840.woff} +0 -0
- /package/es/icon/{iconfont.1768284745337.woff2 → iconfont.1768381374840.woff2} +0 -0
- /package/es/{iconfont.1768284745337.ttf → iconfont.1768381374840.ttf} +0 -0
- /package/es/{iconfont.1768284745337.woff → iconfont.1768381374840.woff} +0 -0
- /package/es/{iconfont.1768284745337.woff2 → iconfont.1768381374840.woff2} +0 -0
- /package/lib/icon/style/{iconfont.1768284745337.ttf → iconfont.1768381374840.ttf} +0 -0
- /package/lib/icon/style/{iconfont.1768284745337.woff → iconfont.1768381374840.woff} +0 -0
- /package/lib/icon/style/{iconfont.1768284745337.woff2 → iconfont.1768381374840.woff2} +0 -0
- /package/lib/{iconfont.1768284745337.ttf → iconfont.1768381374840.ttf} +0 -0
- /package/lib/{iconfont.1768284745337.woff → iconfont.1768381374840.woff} +0 -0
- /package/lib/{iconfont.1768284745337.woff2 → iconfont.1768381374840.woff2} +0 -0
|
@@ -21,6 +21,10 @@ var _default = exports.default = (0, _comp.defineVxeComponent)({
|
|
|
21
21
|
type: String,
|
|
22
22
|
default: (0, _ui.getConfig)().pulldown.trigger
|
|
23
23
|
},
|
|
24
|
+
/**
|
|
25
|
+
* 已废弃,请使用 popupConfig.zIndex
|
|
26
|
+
* @deprecated
|
|
27
|
+
*/
|
|
24
28
|
zIndex: Number,
|
|
25
29
|
size: {
|
|
26
30
|
type: String,
|
|
@@ -31,8 +35,13 @@ var _default = exports.default = (0, _comp.defineVxeComponent)({
|
|
|
31
35
|
type: [String, Function],
|
|
32
36
|
default: (0, _ui.getConfig)().pulldown.className
|
|
33
37
|
},
|
|
38
|
+
/**
|
|
39
|
+
* 已废弃,请使用 popupConfig.className
|
|
40
|
+
* @deprecated
|
|
41
|
+
*/
|
|
34
42
|
popupClassName: [String, Function],
|
|
35
43
|
showPopupShadow: Boolean,
|
|
44
|
+
popupConfig: Object,
|
|
36
45
|
destroyOnClose: {
|
|
37
46
|
type: Boolean,
|
|
38
47
|
default: (0, _ui.getConfig)().pulldown.destroyOnClose
|
|
@@ -75,6 +84,10 @@ var _default = exports.default = (0, _comp.defineVxeComponent)({
|
|
|
75
84
|
const {
|
|
76
85
|
transfer
|
|
77
86
|
} = props;
|
|
87
|
+
const popupOpts = computePopupOpts.value;
|
|
88
|
+
if (_xeUtils.default.isBoolean(popupOpts.transfer)) {
|
|
89
|
+
return popupOpts.transfer;
|
|
90
|
+
}
|
|
78
91
|
if (transfer === null) {
|
|
79
92
|
const globalTransfer = (0, _ui.getConfig)().pulldown.transfer;
|
|
80
93
|
if (_xeUtils.default.isBoolean(globalTransfer)) {
|
|
@@ -86,6 +99,9 @@ var _default = exports.default = (0, _comp.defineVxeComponent)({
|
|
|
86
99
|
}
|
|
87
100
|
return transfer;
|
|
88
101
|
});
|
|
102
|
+
const computePopupOpts = (0, _vue.computed)(() => {
|
|
103
|
+
return Object.assign({}, (0, _ui.getConfig)().pulldown.popupConfig, props.popupConfig);
|
|
104
|
+
});
|
|
89
105
|
const refMaps = {
|
|
90
106
|
refElem
|
|
91
107
|
};
|
|
@@ -99,11 +115,10 @@ var _default = exports.default = (0, _comp.defineVxeComponent)({
|
|
|
99
115
|
};
|
|
100
116
|
let pulldownMethods = {};
|
|
101
117
|
const updateZindex = () => {
|
|
102
|
-
const
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
reactData.panelIndex = zIndex;
|
|
118
|
+
const popupOpts = computePopupOpts.value;
|
|
119
|
+
const customZIndex = popupOpts.zIndex || props.zIndex;
|
|
120
|
+
if (customZIndex) {
|
|
121
|
+
reactData.panelIndex = _xeUtils.default.toNumber(customZIndex);
|
|
107
122
|
} else if (reactData.panelIndex < (0, _utils.getLastZIndex)()) {
|
|
108
123
|
reactData.panelIndex = (0, _utils.nextZIndex)();
|
|
109
124
|
}
|
|
@@ -124,9 +139,10 @@ var _default = exports.default = (0, _comp.defineVxeComponent)({
|
|
|
124
139
|
const targetElem = refPulldownContent.value;
|
|
125
140
|
const panelElem = refPulldownPanel.value;
|
|
126
141
|
const btnTransfer = computeBtnTransfer.value;
|
|
142
|
+
const popupOpts = computePopupOpts.value;
|
|
127
143
|
const handleStyle = () => {
|
|
128
144
|
const ppObj = (0, _dom.updatePanelPlacement)(targetElem, panelElem, {
|
|
129
|
-
placement,
|
|
145
|
+
placement: popupOpts.placement || placement,
|
|
130
146
|
teleportTo: btnTransfer
|
|
131
147
|
});
|
|
132
148
|
const panelStyle = Object.assign(ppObj.style, {
|
|
@@ -345,7 +361,6 @@ var _default = exports.default = (0, _comp.defineVxeComponent)({
|
|
|
345
361
|
const {
|
|
346
362
|
className,
|
|
347
363
|
options,
|
|
348
|
-
popupClassName,
|
|
349
364
|
showPopupShadow,
|
|
350
365
|
destroyOnClose,
|
|
351
366
|
disabled
|
|
@@ -360,10 +375,12 @@ var _default = exports.default = (0, _comp.defineVxeComponent)({
|
|
|
360
375
|
} = reactData;
|
|
361
376
|
const btnTransfer = computeBtnTransfer.value;
|
|
362
377
|
const vSize = computeSize.value;
|
|
378
|
+
const popupOpts = computePopupOpts.value;
|
|
363
379
|
const defaultSlot = slots.default;
|
|
364
380
|
const headerSlot = slots.header;
|
|
365
381
|
const footerSlot = slots.footer;
|
|
366
382
|
const dropdownSlot = slots.dropdown;
|
|
383
|
+
const ppClassName = popupOpts.className || props.popupClassName;
|
|
367
384
|
return (0, _vue.h)('div', {
|
|
368
385
|
ref: refElem,
|
|
369
386
|
class: ['vxe-pulldown', className ? _xeUtils.default.isFunction(className) ? className({
|
|
@@ -385,9 +402,9 @@ var _default = exports.default = (0, _comp.defineVxeComponent)({
|
|
|
385
402
|
disabled: btnTransfer ? !initialized : true
|
|
386
403
|
}, [(0, _vue.h)('div', {
|
|
387
404
|
ref: refPulldownPanel,
|
|
388
|
-
class: ['vxe-table--ignore-clear vxe-pulldown--panel',
|
|
405
|
+
class: ['vxe-table--ignore-clear vxe-pulldown--panel', ppClassName ? _xeUtils.default.isFunction(ppClassName) ? ppClassName({
|
|
389
406
|
$pulldown: $xePulldown
|
|
390
|
-
}) :
|
|
407
|
+
}) : ppClassName : '', {
|
|
391
408
|
[`size--${vSize}`]: vSize,
|
|
392
409
|
'is--transfer': btnTransfer,
|
|
393
410
|
'ani--leave': isAniVisible,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=void 0;var _vue=require("vue"),_comp=require("../../ui/src/comp"),_xeUtils=_interopRequireDefault(require("xe-utils")),_ui=require("../../ui"),_dom=require("../../ui/src/dom"),_utils=require("../../ui/src/utils");function _interopRequireDefault(e){return e&&e.__esModule?e:{default:e}}var _default=exports.default=(0,_comp.defineVxeComponent)({name:"VxePulldown",props:{modelValue:Boolean,disabled:Boolean,placement:String,trigger:{type:String,default:(0,_ui.getConfig)().pulldown.trigger},zIndex:Number,size:{type:String,default:()=>(0,_ui.getConfig)().pulldown.size||(0,_ui.getConfig)().size},options:Array,className:{type:[String,Function],default:(0,_ui.getConfig)().pulldown.className},popupClassName:[String,Function],showPopupShadow:Boolean,destroyOnClose:{type:Boolean,default:(0,_ui.getConfig)().pulldown.destroyOnClose},transfer:{type:Boolean,default:null}},emits:["update:modelValue","click","option-click","show-panel","hide-panel","visible-change"],setup(
|
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=void 0;var _vue=require("vue"),_comp=require("../../ui/src/comp"),_xeUtils=_interopRequireDefault(require("xe-utils")),_ui=require("../../ui"),_dom=require("../../ui/src/dom"),_utils=require("../../ui/src/utils");function _interopRequireDefault(e){return e&&e.__esModule?e:{default:e}}var _default=exports.default=(0,_comp.defineVxeComponent)({name:"VxePulldown",props:{modelValue:Boolean,disabled:Boolean,placement:String,trigger:{type:String,default:(0,_ui.getConfig)().pulldown.trigger},zIndex:Number,size:{type:String,default:()=>(0,_ui.getConfig)().pulldown.size||(0,_ui.getConfig)().size},options:Array,className:{type:[String,Function],default:(0,_ui.getConfig)().pulldown.className},popupClassName:[String,Function],showPopupShadow:Boolean,popupConfig:Object,destroyOnClose:{type:Boolean,default:(0,_ui.getConfig)().pulldown.destroyOnClose},transfer:{type:Boolean,default:null}},emits:["update:modelValue","click","option-click","show-panel","hide-panel","visible-change"],setup(b,e){const{slots:x,emit:n}=e,i=(0,_vue.inject)("$xeModal",null),t=(0,_vue.inject)("$xeDrawer",null),a=(0,_vue.inject)("$xeTable",null),u=(0,_vue.inject)("$xeForm",null);var l=_xeUtils.default.uniqueId();const w=(0,_ui.useSize)(b)["computeSize"],h=(0,_vue.reactive)({initialized:!1,panelIndex:0,panelStyle:{},panelPlacement:null,visiblePanel:!1,isAniVisible:!1,isActivated:!1}),o={hpTimeout:void 0},P=(0,_vue.ref)(),y=(0,_vue.ref)(),T=(0,_vue.ref)(),C=(0,_vue.computed)(()=>{var e=b["transfer"],l=E.value;if(_xeUtils.default.isBoolean(l.transfer))return l.transfer;if(null===e){l=(0,_ui.getConfig)().pulldown.transfer;if(_xeUtils.default.isBoolean(l))return l;if(a||i||t||u)return!0}return e}),E=(0,_vue.computed)(()=>Object.assign({},(0,_ui.getConfig)().pulldown.popupConfig,b.popupConfig)),s={refElem:P},z={xID:l,props:b,context:e,reactData:h,internalData:o,getRefMaps:()=>s};const d=()=>{var e=E.value.zIndex||b.zIndex;e?h.panelIndex=_xeUtils.default.toNumber(e):h.panelIndex<(0,_utils.getLastZIndex)()&&(h.panelIndex=(0,_utils.nextZIndex)())};const r=()=>{const i=b["placement"],n=h["panelIndex"],t=y.value,a=T.value,u=C.value,o=E.value;var e=()=>{var e=(0,_dom.updatePanelPlacement)(t,a,{placement:o.placement||i,teleportTo:u}),l=Object.assign(e.style,{zIndex:n});h.panelStyle=l,h.panelPlacement=e.placement};return e(),(0,_vue.nextTick)().then(e)},p=()=>(h.initialized||(h.initialized=!0),new Promise(e=>{b.disabled?(0,_vue.nextTick)(()=>{e()}):(o.hpTimeout&&clearTimeout(o.hpTimeout),h.isActivated=!0,h.isAniVisible=!0,setTimeout(()=>{h.visiblePanel=!0,n("update:modelValue",!0),r(),setTimeout(()=>{e(r())},40)},10),d(),g("visible-change",{visible:!0},null))})),v=()=>(h.visiblePanel=!1,g("visible-change",{visible:!1},null),n("update:modelValue",!1),new Promise(e=>{h.isAniVisible?o.hpTimeout=setTimeout(()=>{(h.isAniVisible=!1,_vue.nextTick)(()=>{e()})},350):(0,_vue.nextTick)(()=>{e()})}));const V=(e,l)=>{l.disabled||(h.visiblePanel&&(v(),g("hide-panel",{},e)),g("option-click",{option:l},e))},A=e=>{var l=b["trigger"];"click"===l&&(h.visiblePanel?(v(),g("hide-panel",{},e)):(p(),g("show-panel",{},e))),g("click",{$pulldown:z},e)},c=e=>{var l=b["disabled"],i=h["visiblePanel"],n=T.value;l||i&&((0,_dom.getEventTargetNode)(e,n).flag?r():(v(),g("hide-panel",{},e)))},_=e=>{var l=b["disabled"],i=h["visiblePanel"],n=P.value,t=T.value;l||(h.isActivated=(0,_dom.getEventTargetNode)(e,n).flag||(0,_dom.getEventTargetNode)(e,t).flag,i&&!h.isActivated&&(v(),g("hide-panel",{},e)))},m=e=>{var{visiblePanel:l,isActivated:i}=h;l&&(v(),g("hide-panel",{},e)),i&&(h.isActivated=!1)},f=()=>{var e=h["visiblePanel"];e&&r()},g=(e,l,i)=>{n(e,(0,_ui.createEvent)(i,{$pulldown:z},l))};l={dispatchEvent:g,isPanelVisible:()=>h.visiblePanel,togglePanel:()=>(h.visiblePanel?v:p)(),showPanel:p,hidePanel:v},Object.assign(z,l),(0,_vue.watch)(()=>b.modelValue,e=>{h.isActivated=!!e,(e?p:v)()}),(0,_vue.nextTick)(()=>{b.modelValue&&p(),_ui.globalEvents.on(z,"mousewheel",c),_ui.globalEvents.on(z,"mousedown",_),_ui.globalEvents.on(z,"blur",m),_ui.globalEvents.on(z,"resize",f)}),(0,_vue.onUnmounted)(()=>{_ui.globalEvents.off(z,"mousewheel"),_ui.globalEvents.off(z,"mousedown"),_ui.globalEvents.off(z,"blur"),_ui.globalEvents.off(z,"resize")});return z.renderVN=()=>{var{className:e,options:l,showPopupShadow:i,destroyOnClose:n,disabled:t}=b,{initialized:a,isActivated:u,isAniVisible:o,visiblePanel:s,panelStyle:d,panelPlacement:r}=h,p=C.value,v=w.value,c=E.value,_=x.default,m=x.header,f=x.footer,g=x.dropdown,c=c.className||b.popupClassName;return(0,_vue.h)("div",{ref:P,class:["vxe-pulldown",e?_xeUtils.default.isFunction(e)?e({$pulldown:z}):e:"",{["size--"+v]:v,"is--visible":s,"is--disabled":t,"is--active":u}]},[(0,_vue.h)("div",{ref:y,class:"vxe-pulldown--content",onClick:A},_?_({$pulldown:z}):[]),(0,_vue.h)(_vue.Teleport,{to:"body",disabled:!p||!a},[(0,_vue.h)("div",{ref:T,class:["vxe-table--ignore-clear vxe-pulldown--panel",c?_xeUtils.default.isFunction(c)?c({$pulldown:z}):c:"",{["size--"+v]:v,"is--transfer":p,"ani--leave":o,"ani--enter":s}],placement:r,style:d},[(0,_vue.h)("div",{class:["vxe-pulldown--panel-wrapper",{"is--shadow":i}]},a&&(!n||s||o)?[m?(0,_vue.h)("div",{class:"vxe-pulldown--panel-header"},m({$pulldown:z})):(0,_ui.renderEmptyElement)(z),(0,_vue.h)("div",{class:"vxe-pulldown--panel-body"},g?g({$pulldown:z}):[(e=>{const i=x.option;return(0,_vue.h)("div",{class:"vxe-pulldown--panel-list"},e?e.map(l=>(0,_vue.h)("div",{class:"vxe-pulldown--panel-item",onClick(e){V(e,l)}},i?i({$pulldown:z,option:l}):""+(l.label||""))):[])})(l)]),f?(0,_vue.h)("div",{class:"vxe-pulldown--panel-footer"},f({$pulldown:z})):(0,_ui.renderEmptyElement)(z)]:[])])])])},z},render(){return this.renderVN()}});
|
package/lib/select/src/select.js
CHANGED
|
@@ -78,11 +78,19 @@ var _default = exports.default = (0, _comp.defineVxeComponent)({
|
|
|
78
78
|
optionGroupProps: Object,
|
|
79
79
|
optionConfig: Object,
|
|
80
80
|
className: [String, Function],
|
|
81
|
+
/**
|
|
82
|
+
* 已废弃,请使用 popupConfig.className
|
|
83
|
+
* @deprecated
|
|
84
|
+
*/
|
|
81
85
|
popupClassName: [String, Function],
|
|
82
86
|
max: {
|
|
83
87
|
type: [String, Number],
|
|
84
88
|
default: null
|
|
85
89
|
},
|
|
90
|
+
/**
|
|
91
|
+
* 已废弃,请使用 popupConfig.zIndex
|
|
92
|
+
* @deprecated
|
|
93
|
+
*/
|
|
86
94
|
zIndex: Number,
|
|
87
95
|
size: {
|
|
88
96
|
type: String,
|
|
@@ -216,6 +224,10 @@ var _default = exports.default = (0, _comp.defineVxeComponent)({
|
|
|
216
224
|
const {
|
|
217
225
|
transfer
|
|
218
226
|
} = props;
|
|
227
|
+
const popupOpts = computePopupOpts.value;
|
|
228
|
+
if (_xeUtils.default.isBoolean(popupOpts.transfer)) {
|
|
229
|
+
return popupOpts.transfer;
|
|
230
|
+
}
|
|
219
231
|
if (transfer === null) {
|
|
220
232
|
const globalTransfer = (0, _ui.getConfig)().select.transfer;
|
|
221
233
|
if (_xeUtils.default.isBoolean(globalTransfer)) {
|
|
@@ -270,7 +282,7 @@ var _default = exports.default = (0, _comp.defineVxeComponent)({
|
|
|
270
282
|
return checkMaxLimit(selectVals);
|
|
271
283
|
});
|
|
272
284
|
const computePopupOpts = (0, _vue.computed)(() => {
|
|
273
|
-
return Object.assign({}, (0, _ui.getConfig)().
|
|
285
|
+
return Object.assign({}, (0, _ui.getConfig)().select.popupConfig, props.popupConfig);
|
|
274
286
|
});
|
|
275
287
|
const computeVirtualYOpts = (0, _vue.computed)(() => {
|
|
276
288
|
return Object.assign({}, (0, _ui.getConfig)().select.virtualYConfig || (0, _ui.getConfig)().select.scrollY, props.virtualYConfig || props.scrollY);
|
|
@@ -528,11 +540,10 @@ var _default = exports.default = (0, _comp.defineVxeComponent)({
|
|
|
528
540
|
}
|
|
529
541
|
};
|
|
530
542
|
const updateZIndex = () => {
|
|
531
|
-
const
|
|
532
|
-
|
|
533
|
-
|
|
534
|
-
|
|
535
|
-
reactData.panelIndex = zIndex;
|
|
543
|
+
const popupOpts = computePopupOpts.value;
|
|
544
|
+
const customZIndex = popupOpts.zIndex || props.zIndex;
|
|
545
|
+
if (customZIndex) {
|
|
546
|
+
reactData.panelIndex = _xeUtils.default.toNumber(customZIndex);
|
|
536
547
|
} else if (reactData.panelIndex < (0, _utils.getLastZIndex)()) {
|
|
537
548
|
reactData.panelIndex = (0, _utils.nextZIndex)();
|
|
538
549
|
}
|
|
@@ -547,9 +558,10 @@ var _default = exports.default = (0, _comp.defineVxeComponent)({
|
|
|
547
558
|
const targetElem = refElem.value;
|
|
548
559
|
const panelElem = refOptionPanel.value;
|
|
549
560
|
const btnTransfer = computeBtnTransfer.value;
|
|
561
|
+
const popupOpts = computePopupOpts.value;
|
|
550
562
|
const handleStyle = () => {
|
|
551
563
|
const ppObj = (0, _dom.updatePanelPlacement)(targetElem, panelElem, {
|
|
552
|
-
placement,
|
|
564
|
+
placement: popupOpts.placement || placement,
|
|
553
565
|
teleportTo: btnTransfer
|
|
554
566
|
});
|
|
555
567
|
const panelStyle = Object.assign(ppObj.style, {
|
|
@@ -1546,11 +1558,11 @@ var _default = exports.default = (0, _comp.defineVxeComponent)({
|
|
|
1546
1558
|
const inpPlaceholder = computeInpPlaceholder.value;
|
|
1547
1559
|
const popupWrapperStyle = computePopupWrapperStyle.value;
|
|
1548
1560
|
const popupOpts = computePopupOpts.value;
|
|
1549
|
-
const popupClassName = popupOpts.className || props.popupClassName;
|
|
1550
1561
|
const defaultSlot = slots.default;
|
|
1551
1562
|
const headerSlot = slots.header;
|
|
1552
1563
|
const footerSlot = slots.footer;
|
|
1553
1564
|
const prefixSlot = slots.prefix;
|
|
1565
|
+
const ppClassName = popupOpts.className || props.popupClassName;
|
|
1554
1566
|
if (formReadonly) {
|
|
1555
1567
|
return (0, _vue.h)('div', {
|
|
1556
1568
|
ref: refElem,
|
|
@@ -1603,9 +1615,9 @@ var _default = exports.default = (0, _comp.defineVxeComponent)({
|
|
|
1603
1615
|
disabled: btnTransfer ? !initialized : true
|
|
1604
1616
|
}, [(0, _vue.h)('div', {
|
|
1605
1617
|
ref: refOptionPanel,
|
|
1606
|
-
class: ['vxe-table--ignore-clear vxe-select--panel',
|
|
1618
|
+
class: ['vxe-table--ignore-clear vxe-select--panel', ppClassName ? _xeUtils.default.isFunction(ppClassName) ? ppClassName({
|
|
1607
1619
|
$select: $xeSelect
|
|
1608
|
-
}) :
|
|
1620
|
+
}) : ppClassName : '', {
|
|
1609
1621
|
[`size--${vSize}`]: vSize,
|
|
1610
1622
|
'is--transfer': btnTransfer,
|
|
1611
1623
|
'ani--leave': !loading && isAniVisible,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=void 0;var _vue=require("vue"),_comp=require("../../ui/src/comp"),_xeUtils=_interopRequireDefault(require("xe-utils")),_ui=require("../../ui"),_dom=require("../../ui/src/dom"),_utils=require("../../ui/src/utils"),_vn=require("../../ui/src/vn"),_log=require("../../ui/src/log"),_input=_interopRequireDefault(require("../../input/src/input")),_button=_interopRequireDefault(require("../../button/src/button"));function _interopRequireDefault(e){return e&&e.__esModule?e:{default:e}}function isOptionVisible(e){return!1!==e.visible}function getOptUniqueId(){return _xeUtils.default.uniqueId("opt_")}function createInternalData(){return{synchData:[],fullData:[],afterVisibleList:[],optAddMaps:{},optGroupKeyMaps:{},optFullValMaps:{},remoteValMaps:{},lastScrollLeft:0,lastScrollTop:0,scrollYStore:{startIndex:0,endIndex:0,visibleSize:0,offsetSize:0,rowHeight:0},lastScrollTime:0,hpTimeout:void 0}}var _default=exports.default=(0,_comp.defineVxeComponent)({name:"VxeSelect",props:{modelValue:[String,Number,Boolean,Array],defaultConfig:Object,clearable:Boolean,placeholder:String,readonly:{type:Boolean,default:null},loading:Boolean,disabled:{type:Boolean,default:null},multiple:Boolean,multiCharOverflow:{type:[Number,String],default:()=>(0,_ui.getConfig)().select.multiCharOverflow},prefixIcon:String,allowCreate:{type:Boolean,default:()=>(0,_ui.getConfig)().select.allowCreate},placement:String,lazyOptions:Array,options:Array,optionProps:Object,optionGroups:Array,optionGroupProps:Object,optionConfig:Object,className:[String,Function],popupClassName:[String,Function],max:{type:[String,Number],default:null},zIndex:Number,size:{type:String,default:()=>(0,_ui.getConfig)().select.size||(0,_ui.getConfig)().size},filterable:Boolean,filterMethod:Function,filterConfig:Object,remote:Boolean,remoteConfig:Object,emptyText:String,showTotalButoon:{type:Boolean,default:()=>(0,_ui.getConfig)().select.showTotalButoon},showCheckedButoon:{type:Boolean,default:()=>(0,_ui.getConfig)().select.showCheckedButoon},showClearButton:{type:Boolean,default:()=>(0,_ui.getConfig)().select.showClearButton},transfer:{type:Boolean,default:null},popupConfig:Object,virtualYConfig:Object,scrollY:Object,remoteMethod:Function,optionId:{type:String,default:()=>(0,_ui.getConfig)().select.optionId},optionKey:Boolean},emits:["update:modelValue","change","default-change","all-change","clear","blur","focus","click","scroll","visible-change"],setup(V,e){const{slots:I,emit:a}=e,T=(0,_vue.inject)("$xeModal",null),E=(0,_vue.inject)("$xeDrawer",null),y=(0,_vue.inject)("$xeTable",null),i=(0,_vue.inject)("$xeForm",null),o=(0,_vue.inject)("xeFormItemInfo",null);var t=_xeUtils.default.uniqueId();const L=(0,_vue.ref)(),P=(0,_vue.ref)(),w=(0,_vue.ref)(),M=(0,_vue.ref)(),k=(0,_vue.ref)(),Y=(0,_vue.ref)(),j=(0,_ui.useSize)(V)["computeSize"],A=(0,_vue.reactive)({initialized:!1,scrollYLoad:!1,bodyHeight:0,topSpaceHeight:0,optList:[],staticOptions:[],reactFlag:0,currentOption:null,searchValue:"",searchLoading:!1,panelIndex:0,panelStyle:{},panelPlacement:null,triggerFocusPanel:!1,visiblePanel:!1,isAniVisible:!1,isActivated:!1}),S=createInternalData(),C={refElem:L},F={xID:t,props:V,context:e,reactData:A,internalData:S,getRefMaps:()=>C},z=(0,_vue.computed)(()=>{var e=V["readonly"];return null===e?!!i&&i.props.readonly:e}),N=(0,_vue.computed)(()=>{var e=V["disabled"];return null===e?!!i&&i.props.disabled:e}),H=(0,_vue.computed)(()=>{var e=V["transfer"];if(null===e){var t=(0,_ui.getConfig)().select.transfer;if(_xeUtils.default.isBoolean(t))return t;if(y||T||E||i)return!0}return e}),q=(0,_vue.computed)(()=>{var e=V["placeholder"];return(e=e||(0,_ui.getConfig)().select.placeholder)?(0,_utils.getFuncText)(e):(0,_ui.getI18n)("vxe.base.pleaseSelect")}),K=(0,_vue.computed)(()=>Object.assign({},V.defaultConfig)),$=(0,_vue.computed)(()=>Object.assign({},V.optionProps)),G=(0,_vue.computed)(()=>Object.assign({},V.optionGroupProps)),v=(0,_vue.computed)(()=>{return $.value.label||"label"}),O=(0,_vue.computed)(()=>{return $.value.value||"value"}),R=(0,_vue.computed)(()=>{return G.value.label||"label"}),W=(0,_vue.computed)(()=>{return G.value.options||"options"}),X=(0,_vue.computed)(()=>{var e=U.value;return re(e)}),Z=(0,_vue.computed)(()=>Object.assign({},(0,_ui.getConfig)().treeSelect.popupConfig,V.popupConfig)),J=(0,_vue.computed)(()=>Object.assign({},(0,_ui.getConfig)().select.virtualYConfig||(0,_ui.getConfig)().select.scrollY,V.virtualYConfig||V.scrollY)),r=(0,_vue.computed)(()=>Object.assign({},(0,_ui.getConfig)().select.remoteConfig,V.remoteConfig)),Q=(0,_vue.computed)(()=>Object.assign({},(0,_ui.getConfig)().select.filterConfig,V.filterConfig)),ee=(0,_vue.computed)(()=>Object.assign({},(0,_ui.getConfig)().select.optionConfig,V.optionConfig)),te=(0,_vue.computed)(()=>_xeUtils.default.toNumber(V.multiCharOverflow)),le=(0,_vue.computed)(()=>{var{height:e,width:t}=Z.value,l={};return t&&(l.width=(0,_dom.toCssUnit)(t)),e&&(l.height=(0,_dom.toCssUnit)(e),l.maxHeight=(0,_dom.toCssUnit)(e)),l}),U=(0,_vue.computed)(()=>{var{modelValue:e,multiple:t}=V;let l=[];return _xeUtils.default.isArray(e)?l=e:t?(0,_utils.eqEmptyValue)(e)||(l=-1<(""+e).indexOf(",")?(""+e).split(","):[e]):l=null==e?[]:[e],l}),ae=(0,_vue.computed)(()=>{var e=V["remote"],t=A["reactFlag"],l=U.value;return(e&&t?l.map(e=>ue(e)):l.map(e=>se(e))).join(", ")}),ie=(0,_vue.computed)(()=>{var{remote:e,multiple:t}=V,l=A["reactFlag"],a=te.value,i=U.value;return e&&l?i.map(e=>ue(e)).join(", "):(e=i.map(e=>se(e)),t&&0<a&&e.length>a?e.slice(0,a)+"...":e.join(", "))}),B=(e,t)=>e&&(_xeUtils.default.isString(e)&&(e=I[e]||null),_xeUtils.default.isFunction(e))?(0,_vn.getSlotVNs)(e(t)):[],u=(e,t,l)=>{a(e,(0,_ui.createEvent)(l,{$select:F},t))},oe=e=>{a("update:modelValue",e)},ne=e=>{oe(e),u("default-change",{value:e},null)},g=()=>{return ee.value.keyField||V.optionId||"_X_OPTION_KEY"},D=e=>{e=e[g()];return e?encodeURIComponent(e):""},re=e=>{var{multiple:t,max:l}=V;return!(!t||!l)&&e.length>=_xeUtils.default.toNumber(l)},ue=t=>{var e=V["lazyOptions"],{remoteValMaps:l,optFullValMaps:a}=S;const i=O.value;var o=v.value,l=l[t]||a[t],a=l?l.item:null;if(a)return _xeUtils.default.toValueString(a[o]);if(e){l=e.find(e=>e[i]===t);if(l)return l[o]}return t},se=t=>{var e=V["lazyOptions"],l=S["optFullValMaps"];const a=O.value;var i=v.value,l=A.reactFlag?l[t]:null;if(l)return l.item[i];if(e){l=e.find(e=>e[a]===t);if(l)return l[i]}return t},h=()=>{const{remote:e,modelValue:t,filterable:l}=V,a=A["searchValue"],{fullData:i,optFullValMaps:o}=S,n=v.value,r=O.value;const u=Q.value.filterMethod||V.filterMethod,s=(""+(a||"")).toLowerCase();let c=[];return(c=e?i.filter(isOptionVisible):l&&u?i.filter(e=>isOptionVisible(e)&&u({$select:F,group:null,option:e,searchValue:a,value:t})):l?i.filter(e=>isOptionVisible(e)&&(!s||-1<(""+(e[n]||e[r])).toLowerCase().indexOf(s))):i.filter(isOptionVisible)).forEach((e,t)=>{e=o[e[r]];e&&(e._index=t)}),S.afterVisibleList=c,(0,_vue.nextTick)()},ce=e=>{e&&(A.currentOption=e)},s=()=>{const l=V["placement"],a=A["panelIndex"],i=L.value,o=k.value,n=H.value;var e=()=>{var e=(0,_dom.updatePanelPlacement)(i,o,{placement:l,teleportTo:n}),t=Object.assign(e.style,{zIndex:a});A.panelStyle=t,A.panelPlacement=e.placement};return e(),(0,_vue.nextTick)().then(e)},c=()=>{var{loading:e,filterable:t,remote:l}=V,{fullData:a,hpTimeout:i}=S,o=N.value,n=r.value;e||o||(i&&(clearTimeout(i),S.hpTimeout=void 0),A.initialized||(A.initialized=!0),A.isActivated=!0,A.isAniVisible=!0,t&&(l&&n.enabled&&(n.autoLoad&&!a.length||a.length&&n.clearOnClose)?Ve:(h(),m))(),setTimeout(()=>{A.visiblePanel=!0,V.filterable&&(0,_vue.nextTick)(()=>{var e=w.value;e&&e.focus()});b().then(()=>{(0,_vue.nextTick)(()=>{var{isAniVisible:e,visiblePanel:t}=A,l=S["optFullValMaps"],a=U.value;a.length&&e&&t&&(e=A.reactFlag?l[""+a[0]]:null)&&ke(e.item)}),x()})},10),setTimeout(()=>{b().then(()=>x())},100),(e=V.zIndex)?A.panelIndex=e:A.panelIndex<(0,_utils.getLastZIndex)()&&(A.panelIndex=(0,_utils.nextZIndex)()),s(),u("visible-change",{visible:!0},null))},d=()=>{var{filterable:e,remote:t}=V,l=Q.value,a=r.value;t?a.clearOnClose&&(A.searchValue=""):e&&!l.clearOnClose||(A.searchValue=""),A.searchLoading=!1,A.visiblePanel=!1,S.hpTimeout=setTimeout(()=>{A.isAniVisible=!1},350),u("visible-change",{visible:!1},null)},p=(e,t,l)=>{oe(t),t!==V.modelValue&&(u("change",{value:t,option:l},e),i)&&o&&i.triggerItemEvent(e,o.itemConfig.field,t)},f=(e,t)=>{S.remoteValMaps={},p(e,t,null),u("clear",{value:t},e)},ve=e=>{e=e.$event;f(e,null),d()},de=e=>{var e=e["$event"],{multiple:t,max:l}=V,a=A["optList"],i=O.value;if(t){var o=U.value.slice(0);for(let e=0;e<a.length;e++){const n=a[e][i];if(re(o)){_ui.VxeUI&&_ui.VxeUI.modal.message({content:(0,_ui.getI18n)("vxe.select.overSizeErr",[l]),status:"warning"});break}o.some(e=>e===n)||o.push(n)}p(e,o,a[0]),u("all-change",{value:o},e)}},pe=e=>{e=e.$event;f(e,null),d()},fe=(t,l)=>{var e=V["multiple"],a=S["remoteValMaps"];const i=l[O.value];var o=a[i];if(A.visiblePanel){if(o?o.item=l:a[i]={key:D(l),item:l,_index:-1},e){let e=[];o=U.value,a=_xeUtils.default.findIndexOf(o,e=>e===i);e=-1===a?o.concat([i]):o.filter(e=>e!==i),p(t,e,l)}else p(t,i,l),d();A.reactFlag++}},_e=e=>{var t=A["visiblePanel"];N.value||t&&(t=k.value,((0,_dom.getEventTargetNode)(e,t).flag?s:d)())},ge=e=>{var t,l,a=A["visiblePanel"];N.value||(t=L.value,l=k.value,A.isActivated=(0,_dom.getEventTargetNode)(e,t).flag||(0,_dom.getEventTargetNode)(e,l).flag,a&&!A.isActivated&&d())},_=e=>{var t=e.disabled,e=D(e);return!t&&!Ue(e)},he=(e,t)=>{var l=V["allowCreate"],a=A["optList"],{optFullValMaps:i,optAddMaps:o,afterVisibleList:n}=S,r=O.value;let u=n,s=0;if(l&&a.length&&(n=a[0],o[l=D(n)])&&(s=1,u=[o[l]].concat(u)),!e)if(t)for(let e=0;e<u.length;e++){var c=u[e];if(_(c))return c}else for(let e=u.length-1;0<=e;e--){var v=u[e];if(_(v))return v}let d=0;a=e?i[e[r]]:null;if(-1<(d=a?a._index+s:d))if(t)for(let e=d+1;e<=u.length-1;e++){var p=u[e];if(_(p))return p}else if(0<d)for(let e=d-1;0<=e;e--){var f=u[e];if(_(f))return f}return null},me=t=>{var e=V["clearable"],{visiblePanel:l,currentOption:a}=A;if(!N.value){var i=_ui.globalEvents.hasKey(t,_ui.GLOBAL_EVENT_KEYS.TAB),o=_ui.globalEvents.hasKey(t,_ui.GLOBAL_EVENT_KEYS.ENTER),n=_ui.globalEvents.hasKey(t,_ui.GLOBAL_EVENT_KEYS.ESCAPE),r=_ui.globalEvents.hasKey(t,_ui.GLOBAL_EVENT_KEYS.ARROW_UP),u=_ui.globalEvents.hasKey(t,_ui.GLOBAL_EVENT_KEYS.ARROW_DOWN),s=_ui.globalEvents.hasKey(t,_ui.GLOBAL_EVENT_KEYS.DELETE);if(i&&(A.isActivated=!1),l){if(n||i)d();else if(o)a&&(t.preventDefault(),t.stopPropagation(),fe(t,a));else if(r||u){t.preventDefault();let e=he(a,u);(e=e||he(null,u))&&(ce(e),ke(e,u))}}else(r||u||o)&&A.isActivated&&(t.preventDefault(),c());A.isActivated&&s&&e&&f(t,null)}},xe=()=>{var{visiblePanel:e,isActivated:t}=A;e&&d(),t&&(A.isActivated=!1),(e||t)&&(e=P.value)&&e.blur()},be=()=>{var e=A["visiblePanel"];e&&s()},Te=e=>{N.value||A.visiblePanel||(A.triggerFocusPanel=!0,c(),setTimeout(()=>{A.triggerFocusPanel=!1},500)),u("focus",{},e)},Ee=e=>{Le(e),u("click",{triggerButton:!1,visible:A.visiblePanel},e)},ye=e=>{A.isActivated=!1,u("blur",{},e)},Ce=e=>{Le(e),u("click",{triggerButton:!0,visible:A.visiblePanel},e)},Se=e=>{A.searchValue=e},Oe=()=>{A.isActivated=!0},Ve=()=>{var{modelValue:e,remote:t}=V,l=A["searchValue"],a=r.value,i=a.queryMethod||V.remoteMethod;t&&i&&a.enabled?(A.searchLoading=!0,Promise.resolve(i({$select:F,searchValue:l,value:e})).then(()=>(0,_vue.nextTick)()).catch(()=>(0,_vue.nextTick)()).finally(()=>{A.searchLoading=!1,h(),m()})):(h(),m())},Ie=_xeUtils.default.debounce(Ve,350,{trailing:!0}),Le=e=>{e=e.$event;e.preventDefault(),A.triggerFocusPanel?A.triggerFocusPanel=!1:(A.visiblePanel?d:c)()},Pe=()=>{var e=A["scrollYLoad"],{scrollYStore:t,afterVisibleList:l}=S;A.bodyHeight=e?l.length*t.rowHeight:0,A.topSpaceHeight=e?Math.max(t.startIndex*t.rowHeight,0):0},we=()=>{var{filterable:e,allowCreate:t}=V;const{scrollYLoad:l,searchValue:a}=A;var{optAddMaps:i,scrollYStore:o,afterVisibleList:n}=S;const r=v.value;var u=O.value,o=l?n.slice(o.startIndex,o.endIndex):n.slice(0);return e&&t&&a&&(o.some(e=>e[r]===a)||(n=i[a]||(0,_vue.reactive)({[g()]:a,[r]:a,[u]:a}),i[a]=n,o.unshift(n))),A.optList=o,(0,_vue.nextTick)()},m=()=>{we(),Pe()},Me=()=>(0,_vue.nextTick)().then(()=>{var e=A["scrollYLoad"],t=S["scrollYStore"],l=Y.value,a=J.value;let i=0,o;(o=l?o||l.children[0]:o)&&(i=o.offsetHeight),i=Math.max(20,i),t.rowHeight=i,(e?(l=M.value,e=Math.max(8,l?Math.ceil(l.clientHeight/i):0),l=Math.max(0,Math.min(2,_xeUtils.default.toNumber(a.oSize))),t.offsetSize=l,t.visibleSize=e,t.endIndex=Math.max(t.startIndex,e+l,t.endIndex),m):Pe)()}),ke=(e,t)=>{var l,a,i=A["scrollYLoad"],{optFullValMaps:o,scrollYStore:n}=S,o=o[e[O.value]];o&&(e=o.key,-1<(o=o._index))&&(l=M.value,a=k.value)&&(a=a.querySelector(`[optid='${e}']`),l)&&(a?(e=l.offsetHeight,t?a.offsetTop+a.offsetHeight-l.scrollTop>e?l.scrollTop=a.offsetTop+a.offsetHeight-e:(a.offsetTop+1<l.scrollTop||a.offsetTop+1>l.scrollTop+l.clientHeight)&&(l.scrollTop=a.offsetTop-1):a.offsetTop+1<l.scrollTop||a.offsetTop+1>l.scrollTop+l.clientHeight?l.scrollTop=a.offsetTop-1:a.offsetTop+a.offsetHeight-l.scrollTop>e&&(l.scrollTop=a.offsetTop+a.offsetHeight-e)):i&&(l.scrollTop=t?o*n.rowHeight-l.clientHeight+n.rowHeight:o*n.rowHeight))},Ae=(e,t)=>{var l=M.value;return l&&(_xeUtils.default.isNumber(e)&&(l.scrollLeft=e),_xeUtils.default.isNumber(t))&&(l.scrollTop=t),A.scrollYLoad?new Promise(e=>{setTimeout(()=>{(0,_vue.nextTick)(()=>{e()})},50)}):(0,_vue.nextTick)()},x=()=>{const{lastScrollLeft:e,lastScrollTop:t}=S;return n().then(()=>{if(e||t)return S.lastScrollLeft=0,S.lastScrollTop=0,Ae(e,t)})},b=()=>{var e=L.value;return e&&e.clientWidth&&e.clientHeight?Me():Promise.resolve()},Fe=e=>{var t=S["scrollYStore"],{startIndex:l,endIndex:a,visibleSize:i,offsetSize:o,rowHeight:n}=t,e=e.target.scrollTop,e=Math.floor(e/n),n=Math.max(0,e-1-o),o=e+i+o;!(e<=l||a-i-1<=e)||l===n&&a===o||(t.startIndex=n,t.endIndex=o,m())},Ne=e=>{var t=e.target,l=t.scrollTop,t=t.scrollLeft,a=t!==S.lastScrollLeft,i=l!==S.lastScrollTop;S.lastScrollTop=l,S.lastScrollLeft=t,A.scrollYLoad&&Fe(e),S.lastScrollTime=Date.now(),u("scroll",{scrollLeft:t,scrollTop:l,isX:a,isY:i},e)},l=e=>{{var t=e||[];const u=W.value,s=O.value,c=g(),v={},d={},p=[],f=e=>{p.push(e);let t=D(e);t||(t=getOptUniqueId(),e[c]=t),d[e[s]]={key:t,item:e,_index:-1}};t.forEach(e=>{f(e),e[u]&&(v[e[c]]=e)[u].forEach(f)}),S.fullData=p,S.optGroupKeyMaps=v,S.optFullValMaps=d,A.reactFlag++,h()}var t=V["multiple"],{isLoaded:l,fullData:a,scrollYStore:i}=S,o=K.value,n=J.value;const r=O.value;if(Object.assign(i,{startIndex:0,endIndex:1,visibleSize:0}),S.synchData=e||[],A.scrollYLoad=!!n.enabled&&-1<n.gt&&(0===n.gt||n.gt<=a.length),we(),!l){i=o["selectMode"];if(0<e.length&&_xeUtils.default.eqNull(V.modelValue)){if("all"===i)t?(0,_vue.nextTick)(()=>{ne(e.map(e=>e[r]))}):(0,_log.errLog)("vxe.error.notConflictProp",["default-config.selectMode=all","multiple=true"]);else if("first"===i||"last"===i){const _=_xeUtils.default[i](e);_&&(0,_vue.nextTick)(()=>{_xeUtils.default.eqNull(V.modelValue)&&ne(_[r])})}S.isLoaded=!0}}return Me().then(()=>{x()})},n=()=>{var e=M.value;return e&&(e.scrollTop=0,e.scrollLeft=0),S.lastScrollTop=0,(S.lastScrollLeft=0,_vue.nextTick)()},Ue=e=>{var t=S["optGroupKeyMaps"];return!!t[e]};t={dispatchEvent:u,loadData:l,reloadData(e){return S.isLoaded=!1,n(),l(e)},isPanelVisible(){return A.visiblePanel},togglePanel(){return(A.visiblePanel?d:c)(),(0,_vue.nextTick)()},hidePanel(){return A.visiblePanel&&d(),(0,_vue.nextTick)()},showPanel(){return A.visiblePanel||c(),(0,_vue.nextTick)()},refreshOption(){return h(),m(),(0,_vue.nextTick)()},focus(){var e=P.value;return e&&e.blur(),A.isActivated=!0,(0,_vue.nextTick)()},blur(){var e=P.value;return e&&e.blur(),(A.isActivated=!1,_vue.nextTick)()},recalculate:b,clearScroll:n};Object.assign(F,t);const Be=e=>{const{allowCreate:f,optionKey:_}=V,g=A["currentOption"],h=S["optAddMaps"];var t=ee.value;const m=v.value,x=O.value,b=R.value,T=U.value,{useKey:E,height:y}=t,C=I.option;return e.map((t,e)=>{var{slots:l,className:a}=t,i=D(t),o=t[x];const n=Ue(i);var r=!(!f||!h[i]),u=!r&&-1<T.indexOf(o),s=r||!n||isOptionVisible(t);const c=!r&&(v=u,!!t.disabled||!(!X.value||v));var v=l?l.default:null,l={option:t,group:n?t:null,$select:F};let d="",p=[];return p=C?B(C,l):v?B(v,l):d=(0,_utils.getFuncText)(t[n?b:m]||o),s?(0,_vue.h)("div",{key:E||_?i:e,class:["vxe-select-option",a?_xeUtils.default.isFunction(a)?a(l):a:"",{"vxe-select-optgroup":n,"is--disabled":c,"is--selected":u,"is--add":r,"is--hover":g&&D(g)===i}],optid:i,title:d||null,style:y?{height:(0,_dom.toCssUnit)(y)}:void 0,onMousedown:e=>{0===e.button&&e.stopPropagation()},onClick:e=>{c||n||fe(e,t)},onMouseenter:()=>{var e;c||n||(e=S.lastScrollTime)&&Date.now()<e+250||ce(t)}},f?[(0,_vue.h)("span",{key:1,class:"vxe-select-option--label"},p),r?(0,_vue.h)("span",{key:2,class:"vxe-select-option--add-icon"},[(0,_vue.h)("i",{class:(0,_ui.getIcon)().SELECT_ADD_OPTION})]):(0,_ui.renderEmptyElement)(F)]:p):(0,_ui.renderEmptyElement)(F)})};return(0,_vue.watch)(()=>A.staticOptions,e=>{l(e)}),(0,_vue.watch)(()=>V.options,e=>{l(e||[])}),(0,_vue.watch)(()=>V.optionGroups,e=>{l(e||[])}),(0,_vue.onMounted)(()=>{(0,_vue.nextTick)(()=>{var{options:e,optionGroups:t}=V;t?l(t):e&&l(e)}),_ui.globalEvents.on(F,"mousewheel",_e),_ui.globalEvents.on(F,"mousedown",ge),_ui.globalEvents.on(F,"keydown",me),_ui.globalEvents.on(F,"blur",xe),_ui.globalEvents.on(F,"resize",be)}),(0,_vue.onUnmounted)(()=>{_ui.globalEvents.off(F,"mousewheel"),_ui.globalEvents.off(F,"mousedown"),_ui.globalEvents.off(F,"keydown"),_ui.globalEvents.off(F,"blur"),_ui.globalEvents.off(F,"resize"),_xeUtils.default.assign(S,createInternalData())}),(0,_vue.provide)("$xeSelect",F),F.renderVN=()=>{var{className:e,multiple:t,loading:l,filterable:a,showTotalButoon:i,showCheckedButoon:o,showClearButton:n}=V,{initialized:r,isActivated:u,isAniVisible:s,optList:c,visiblePanel:v,bodyHeight:d,topSpaceHeight:p}=A,f=j.value,_=N.value,g=ie.value,h=ae.value,m=H.value,x=z.value,b=q.value,T=le.value,E=Z.value.className||V.popupClassName,y=I.default,C=I.header,S=I.footer;const O=I.prefix;return x?(0,_vue.h)("div",{ref:L,class:["vxe-select--readonly",e]},[(0,_vue.h)("div",{class:"vxe-select-slots",ref:"hideOption"},y?y({}):[]),(0,_vue.h)("span",{class:"vxe-select-label",title:h},g)]):(x=U.value,(0,_vue.h)("div",{ref:L,class:["vxe-select",e?_xeUtils.default.isFunction(e)?e({$select:F}):e:"",{["size--"+f]:f,"is--visible":v,"is--disabled":_,"is--filter":a,"is--loading":l,"is--active":u}]},[(0,_vue.h)("div",{class:"vxe-select-slots",ref:"hideOption"},y?y({}):[]),(0,_vue.h)(_input.default,{ref:P,clearable:V.clearable,placeholder:b,readonly:!0,disabled:_,type:"text",prefixIcon:V.prefixIcon,suffixIcon:l?(0,_ui.getIcon)().SELECT_LOADED:v?(0,_ui.getIcon)().SELECT_OPEN:(0,_ui.getIcon)().SELECT_CLOSE,autoFocus:!1,title:h,modelValue:g,onClear:ve,onClick:Ee,onFocus:Te,onBlur:ye,onSuffixClick:Ce},O?{prefix:()=>O({})}:{}),(0,_vue.h)(_vue.Teleport,{to:"body",disabled:!m||!r},[(0,_vue.h)("div",{ref:k,class:["vxe-table--ignore-clear vxe-select--panel",E?_xeUtils.default.isFunction(E)?E({$select:F}):E:"",{["size--"+f]:f,"is--transfer":m,"ani--leave":!l&&s,"ani--enter":!l&&v}],placement:A.panelPlacement,style:A.panelStyle},r&&(v||s)?[(0,_vue.h)("div",{class:"vxe-select--panel-wrapper",style:T},[a?(0,_vue.h)("div",{class:"vxe-select--panel-search"},[(0,_vue.h)(_input.default,{ref:w,class:"vxe-select-search--input",modelValue:A.searchValue,type:"text",clearable:!0,disabled:!1,readonly:!1,placeholder:(0,_ui.getI18n)("vxe.select.search"),prefixIcon:(0,_ui.getIcon)().INPUT_SEARCH,"onUpdate:modelValue":Se,onFocus:Oe,onChange:Ie,onSearch:Ie})]):(0,_ui.renderEmptyElement)(F),i||o&&t||n||C?(0,_vue.h)("div",{class:"vxe-select--panel-header"},C?B(C,{}):[(0,_vue.h)("div",{class:"vxe-select--header-button"},[i?(0,_vue.h)("div",{class:"vxe-select--header-total"},(0,_ui.getI18n)("vxe.select.total",[x.length,c.length])):(0,_ui.renderEmptyElement)(F),(0,_vue.h)("div",{class:"vxe-select--header-btns"},[o&&t?(0,_vue.h)(_button.default,{content:(0,_ui.getI18n)("vxe.select.allChecked"),mode:"text",onClick:de}):(0,_ui.renderEmptyElement)(F),n?(0,_vue.h)(_button.default,{content:(0,_ui.getI18n)("vxe.select.clear"),mode:"text",onClick:pe}):(0,_ui.renderEmptyElement)(F)])])]):(0,_ui.renderEmptyElement)(F),(0,_vue.h)("div",{class:"vxe-select--panel-body"},[(0,_vue.h)("div",{ref:M,class:"vxe-select-option--wrapper",onScroll:Ne},[(0,_vue.h)("div",{class:"vxe-select--y-space",style:{height:d?d+"px":""}}),(0,_vue.h)("div",{ref:Y,class:"vxe-select--body",style:{transform:`translateY(${p}px)`}},(()=>{var{optList:e,searchLoading:t}=A;return t?[(0,_vue.h)("div",{class:"vxe-select--search-loading"},[(0,_vue.h)("i",{class:["vxe-select--search-icon",(0,_ui.getIcon)().SELECT_LOADED]}),(0,_vue.h)("span",{class:"vxe-select--search-text"},(0,_ui.getI18n)("vxe.select.loadingText"))])]:e.length?Be(e):[(0,_vue.h)("div",{class:"vxe-select--empty-placeholder"},V.emptyText||(0,_ui.getI18n)("vxe.select.emptyText"))]})())])]),S?(0,_vue.h)("div",{class:"vxe-select--panel-footer"},B(S,{})):(0,_ui.renderEmptyElement)(F)])]:[])])]))},F},render(){return this.renderVN()}});
|
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=void 0;var _vue=require("vue"),_comp=require("../../ui/src/comp"),_xeUtils=_interopRequireDefault(require("xe-utils")),_ui=require("../../ui"),_dom=require("../../ui/src/dom"),_utils=require("../../ui/src/utils"),_vn=require("../../ui/src/vn"),_log=require("../../ui/src/log"),_input=_interopRequireDefault(require("../../input/src/input")),_button=_interopRequireDefault(require("../../button/src/button"));function _interopRequireDefault(e){return e&&e.__esModule?e:{default:e}}function isOptionVisible(e){return!1!==e.visible}function getOptUniqueId(){return _xeUtils.default.uniqueId("opt_")}function createInternalData(){return{synchData:[],fullData:[],afterVisibleList:[],optAddMaps:{},optGroupKeyMaps:{},optFullValMaps:{},remoteValMaps:{},lastScrollLeft:0,lastScrollTop:0,scrollYStore:{startIndex:0,endIndex:0,visibleSize:0,offsetSize:0,rowHeight:0},lastScrollTime:0,hpTimeout:void 0}}var _default=exports.default=(0,_comp.defineVxeComponent)({name:"VxeSelect",props:{modelValue:[String,Number,Boolean,Array],defaultConfig:Object,clearable:Boolean,placeholder:String,readonly:{type:Boolean,default:null},loading:Boolean,disabled:{type:Boolean,default:null},multiple:Boolean,multiCharOverflow:{type:[Number,String],default:()=>(0,_ui.getConfig)().select.multiCharOverflow},prefixIcon:String,allowCreate:{type:Boolean,default:()=>(0,_ui.getConfig)().select.allowCreate},placement:String,lazyOptions:Array,options:Array,optionProps:Object,optionGroups:Array,optionGroupProps:Object,optionConfig:Object,className:[String,Function],popupClassName:[String,Function],max:{type:[String,Number],default:null},zIndex:Number,size:{type:String,default:()=>(0,_ui.getConfig)().select.size||(0,_ui.getConfig)().size},filterable:Boolean,filterMethod:Function,filterConfig:Object,remote:Boolean,remoteConfig:Object,emptyText:String,showTotalButoon:{type:Boolean,default:()=>(0,_ui.getConfig)().select.showTotalButoon},showCheckedButoon:{type:Boolean,default:()=>(0,_ui.getConfig)().select.showCheckedButoon},showClearButton:{type:Boolean,default:()=>(0,_ui.getConfig)().select.showClearButton},transfer:{type:Boolean,default:null},popupConfig:Object,virtualYConfig:Object,scrollY:Object,remoteMethod:Function,optionId:{type:String,default:()=>(0,_ui.getConfig)().select.optionId},optionKey:Boolean},emits:["update:modelValue","change","default-change","all-change","clear","blur","focus","click","scroll","visible-change"],setup(V,e){const{slots:I,emit:a}=e,T=(0,_vue.inject)("$xeModal",null),E=(0,_vue.inject)("$xeDrawer",null),y=(0,_vue.inject)("$xeTable",null),i=(0,_vue.inject)("$xeForm",null),o=(0,_vue.inject)("xeFormItemInfo",null);var t=_xeUtils.default.uniqueId();const L=(0,_vue.ref)(),P=(0,_vue.ref)(),Y=(0,_vue.ref)(),w=(0,_vue.ref)(),M=(0,_vue.ref)(),j=(0,_vue.ref)(),z=(0,_ui.useSize)(V)["computeSize"],k=(0,_vue.reactive)({initialized:!1,scrollYLoad:!1,bodyHeight:0,topSpaceHeight:0,optList:[],staticOptions:[],reactFlag:0,currentOption:null,searchValue:"",searchLoading:!1,panelIndex:0,panelStyle:{},panelPlacement:null,triggerFocusPanel:!1,visiblePanel:!1,isAniVisible:!1,isActivated:!1}),S=createInternalData(),C={refElem:L},A={xID:t,props:V,context:e,reactData:k,internalData:S,getRefMaps:()=>C},H=(0,_vue.computed)(()=>{var e=V["readonly"];return null===e?!!i&&i.props.readonly:e}),U=(0,_vue.computed)(()=>{var e=V["disabled"];return null===e?!!i&&i.props.disabled:e}),q=(0,_vue.computed)(()=>{var e=V["transfer"],t=F.value;if(_xeUtils.default.isBoolean(t.transfer))return t.transfer;if(null===e){t=(0,_ui.getConfig)().select.transfer;if(_xeUtils.default.isBoolean(t))return t;if(y||T||E||i)return!0}return e}),K=(0,_vue.computed)(()=>{var e=V["placeholder"];return(e=e||(0,_ui.getConfig)().select.placeholder)?(0,_utils.getFuncText)(e):(0,_ui.getI18n)("vxe.base.pleaseSelect")}),$=(0,_vue.computed)(()=>Object.assign({},V.defaultConfig)),G=(0,_vue.computed)(()=>Object.assign({},V.optionProps)),R=(0,_vue.computed)(()=>Object.assign({},V.optionGroupProps)),v=(0,_vue.computed)(()=>{return G.value.label||"label"}),O=(0,_vue.computed)(()=>{return G.value.value||"value"}),W=(0,_vue.computed)(()=>{return R.value.label||"label"}),X=(0,_vue.computed)(()=>{return R.value.options||"options"}),Z=(0,_vue.computed)(()=>{var e=N.value;return re(e)}),F=(0,_vue.computed)(()=>Object.assign({},(0,_ui.getConfig)().select.popupConfig,V.popupConfig)),J=(0,_vue.computed)(()=>Object.assign({},(0,_ui.getConfig)().select.virtualYConfig||(0,_ui.getConfig)().select.scrollY,V.virtualYConfig||V.scrollY)),r=(0,_vue.computed)(()=>Object.assign({},(0,_ui.getConfig)().select.remoteConfig,V.remoteConfig)),Q=(0,_vue.computed)(()=>Object.assign({},(0,_ui.getConfig)().select.filterConfig,V.filterConfig)),ee=(0,_vue.computed)(()=>Object.assign({},(0,_ui.getConfig)().select.optionConfig,V.optionConfig)),te=(0,_vue.computed)(()=>_xeUtils.default.toNumber(V.multiCharOverflow)),le=(0,_vue.computed)(()=>{var{height:e,width:t}=F.value,l={};return t&&(l.width=(0,_dom.toCssUnit)(t)),e&&(l.height=(0,_dom.toCssUnit)(e),l.maxHeight=(0,_dom.toCssUnit)(e)),l}),N=(0,_vue.computed)(()=>{var{modelValue:e,multiple:t}=V;let l=[];return _xeUtils.default.isArray(e)?l=e:t?(0,_utils.eqEmptyValue)(e)||(l=-1<(""+e).indexOf(",")?(""+e).split(","):[e]):l=null==e?[]:[e],l}),ae=(0,_vue.computed)(()=>{var e=V["remote"],t=k["reactFlag"],l=N.value;return(e&&t?l.map(e=>ue(e)):l.map(e=>se(e))).join(", ")}),ie=(0,_vue.computed)(()=>{var{remote:e,multiple:t}=V,l=k["reactFlag"],a=te.value,i=N.value;return e&&l?i.map(e=>ue(e)).join(", "):(e=i.map(e=>se(e)),t&&0<a&&e.length>a?e.slice(0,a)+"...":e.join(", "))}),B=(e,t)=>e&&(_xeUtils.default.isString(e)&&(e=I[e]||null),_xeUtils.default.isFunction(e))?(0,_vn.getSlotVNs)(e(t)):[],u=(e,t,l)=>{a(e,(0,_ui.createEvent)(l,{$select:A},t))},oe=e=>{a("update:modelValue",e)},ne=e=>{oe(e),u("default-change",{value:e},null)},g=()=>{return ee.value.keyField||V.optionId||"_X_OPTION_KEY"},D=e=>{e=e[g()];return e?encodeURIComponent(e):""},re=e=>{var{multiple:t,max:l}=V;return!(!t||!l)&&e.length>=_xeUtils.default.toNumber(l)},ue=t=>{var e=V["lazyOptions"],{remoteValMaps:l,optFullValMaps:a}=S;const i=O.value;var o=v.value,l=l[t]||a[t],a=l?l.item:null;if(a)return _xeUtils.default.toValueString(a[o]);if(e){l=e.find(e=>e[i]===t);if(l)return l[o]}return t},se=t=>{var e=V["lazyOptions"],l=S["optFullValMaps"];const a=O.value;var i=v.value,l=k.reactFlag?l[t]:null;if(l)return l.item[i];if(e){l=e.find(e=>e[a]===t);if(l)return l[i]}return t},h=()=>{const{remote:e,modelValue:t,filterable:l}=V,a=k["searchValue"],{fullData:i,optFullValMaps:o}=S,n=v.value,r=O.value;const u=Q.value.filterMethod||V.filterMethod,s=(""+(a||"")).toLowerCase();let c=[];return(c=e?i.filter(isOptionVisible):l&&u?i.filter(e=>isOptionVisible(e)&&u({$select:A,group:null,option:e,searchValue:a,value:t})):l?i.filter(e=>isOptionVisible(e)&&(!s||-1<(""+(e[n]||e[r])).toLowerCase().indexOf(s))):i.filter(isOptionVisible)).forEach((e,t)=>{e=o[e[r]];e&&(e._index=t)}),S.afterVisibleList=c,(0,_vue.nextTick)()},ce=e=>{e&&(k.currentOption=e)},s=()=>{const l=V["placement"],a=k["panelIndex"],i=L.value,o=M.value,n=q.value,r=F.value;var e=()=>{var e=(0,_dom.updatePanelPlacement)(i,o,{placement:r.placement||l,teleportTo:n}),t=Object.assign(e.style,{zIndex:a});k.panelStyle=t,k.panelPlacement=e.placement};return e(),(0,_vue.nextTick)().then(e)},c=()=>{var{loading:e,filterable:t,remote:l}=V,{fullData:a,hpTimeout:i}=S,o=U.value,n=r.value;e||o||(i&&(clearTimeout(i),S.hpTimeout=void 0),k.initialized||(k.initialized=!0),k.isActivated=!0,k.isAniVisible=!0,t&&(l&&n.enabled&&(n.autoLoad&&!a.length||a.length&&n.clearOnClose)?Ve:(h(),m))(),setTimeout(()=>{k.visiblePanel=!0,V.filterable&&(0,_vue.nextTick)(()=>{var e=Y.value;e&&e.focus()});b().then(()=>{(0,_vue.nextTick)(()=>{var{isAniVisible:e,visiblePanel:t}=k,l=S["optFullValMaps"],a=N.value;a.length&&e&&t&&(e=k.reactFlag?l[""+a[0]]:null)&&ke(e.item)}),x()})},10),setTimeout(()=>{b().then(()=>x())},100),(e=F.value.zIndex||V.zIndex)?k.panelIndex=_xeUtils.default.toNumber(e):k.panelIndex<(0,_utils.getLastZIndex)()&&(k.panelIndex=(0,_utils.nextZIndex)()),s(),u("visible-change",{visible:!0},null))},d=()=>{var{filterable:e,remote:t}=V,l=Q.value,a=r.value;t?a.clearOnClose&&(k.searchValue=""):e&&!l.clearOnClose||(k.searchValue=""),k.searchLoading=!1,k.visiblePanel=!1,S.hpTimeout=setTimeout(()=>{k.isAniVisible=!1},350),u("visible-change",{visible:!1},null)},p=(e,t,l)=>{oe(t),t!==V.modelValue&&(u("change",{value:t,option:l},e),i)&&o&&i.triggerItemEvent(e,o.itemConfig.field,t)},f=(e,t)=>{S.remoteValMaps={},p(e,t,null),u("clear",{value:t},e)},ve=e=>{e=e.$event;f(e,null),d()},de=e=>{var e=e["$event"],{multiple:t,max:l}=V,a=k["optList"],i=O.value;if(t){var o=N.value.slice(0);for(let e=0;e<a.length;e++){const n=a[e][i];if(re(o)){_ui.VxeUI&&_ui.VxeUI.modal.message({content:(0,_ui.getI18n)("vxe.select.overSizeErr",[l]),status:"warning"});break}o.some(e=>e===n)||o.push(n)}p(e,o,a[0]),u("all-change",{value:o},e)}},pe=e=>{e=e.$event;f(e,null),d()},fe=(t,l)=>{var e=V["multiple"],a=S["remoteValMaps"];const i=l[O.value];var o=a[i];if(k.visiblePanel){if(o?o.item=l:a[i]={key:D(l),item:l,_index:-1},e){let e=[];o=N.value,a=_xeUtils.default.findIndexOf(o,e=>e===i);e=-1===a?o.concat([i]):o.filter(e=>e!==i),p(t,e,l)}else p(t,i,l),d();k.reactFlag++}},_e=e=>{var t=k["visiblePanel"];U.value||t&&(t=M.value,((0,_dom.getEventTargetNode)(e,t).flag?s:d)())},ge=e=>{var t,l,a=k["visiblePanel"];U.value||(t=L.value,l=M.value,k.isActivated=(0,_dom.getEventTargetNode)(e,t).flag||(0,_dom.getEventTargetNode)(e,l).flag,a&&!k.isActivated&&d())},_=e=>{var t=e.disabled,e=D(e);return!t&&!Ne(e)},he=(e,t)=>{var l=V["allowCreate"],a=k["optList"],{optFullValMaps:i,optAddMaps:o,afterVisibleList:n}=S,r=O.value;let u=n,s=0;if(l&&a.length&&(n=a[0],o[l=D(n)])&&(s=1,u=[o[l]].concat(u)),!e)if(t)for(let e=0;e<u.length;e++){var c=u[e];if(_(c))return c}else for(let e=u.length-1;0<=e;e--){var v=u[e];if(_(v))return v}let d=0;a=e?i[e[r]]:null;if(-1<(d=a?a._index+s:d))if(t)for(let e=d+1;e<=u.length-1;e++){var p=u[e];if(_(p))return p}else if(0<d)for(let e=d-1;0<=e;e--){var f=u[e];if(_(f))return f}return null},me=t=>{var e=V["clearable"],{visiblePanel:l,currentOption:a}=k;if(!U.value){var i=_ui.globalEvents.hasKey(t,_ui.GLOBAL_EVENT_KEYS.TAB),o=_ui.globalEvents.hasKey(t,_ui.GLOBAL_EVENT_KEYS.ENTER),n=_ui.globalEvents.hasKey(t,_ui.GLOBAL_EVENT_KEYS.ESCAPE),r=_ui.globalEvents.hasKey(t,_ui.GLOBAL_EVENT_KEYS.ARROW_UP),u=_ui.globalEvents.hasKey(t,_ui.GLOBAL_EVENT_KEYS.ARROW_DOWN),s=_ui.globalEvents.hasKey(t,_ui.GLOBAL_EVENT_KEYS.DELETE);if(i&&(k.isActivated=!1),l){if(n||i)d();else if(o)a&&(t.preventDefault(),t.stopPropagation(),fe(t,a));else if(r||u){t.preventDefault();let e=he(a,u);(e=e||he(null,u))&&(ce(e),ke(e,u))}}else(r||u||o)&&k.isActivated&&(t.preventDefault(),c());k.isActivated&&s&&e&&f(t,null)}},xe=()=>{var{visiblePanel:e,isActivated:t}=k;e&&d(),t&&(k.isActivated=!1),(e||t)&&(e=P.value)&&e.blur()},be=()=>{var e=k["visiblePanel"];e&&s()},Te=e=>{U.value||k.visiblePanel||(k.triggerFocusPanel=!0,c(),setTimeout(()=>{k.triggerFocusPanel=!1},500)),u("focus",{},e)},Ee=e=>{Le(e),u("click",{triggerButton:!1,visible:k.visiblePanel},e)},ye=e=>{k.isActivated=!1,u("blur",{},e)},Ce=e=>{Le(e),u("click",{triggerButton:!0,visible:k.visiblePanel},e)},Se=e=>{k.searchValue=e},Oe=()=>{k.isActivated=!0},Ve=()=>{var{modelValue:e,remote:t}=V,l=k["searchValue"],a=r.value,i=a.queryMethod||V.remoteMethod;t&&i&&a.enabled?(k.searchLoading=!0,Promise.resolve(i({$select:A,searchValue:l,value:e})).then(()=>(0,_vue.nextTick)()).catch(()=>(0,_vue.nextTick)()).finally(()=>{k.searchLoading=!1,h(),m()})):(h(),m())},Ie=_xeUtils.default.debounce(Ve,350,{trailing:!0}),Le=e=>{e=e.$event;e.preventDefault(),k.triggerFocusPanel?k.triggerFocusPanel=!1:(k.visiblePanel?d:c)()},Pe=()=>{var e=k["scrollYLoad"],{scrollYStore:t,afterVisibleList:l}=S;k.bodyHeight=e?l.length*t.rowHeight:0,k.topSpaceHeight=e?Math.max(t.startIndex*t.rowHeight,0):0},we=()=>{var{filterable:e,allowCreate:t}=V;const{scrollYLoad:l,searchValue:a}=k;var{optAddMaps:i,scrollYStore:o,afterVisibleList:n}=S;const r=v.value;var u=O.value,o=l?n.slice(o.startIndex,o.endIndex):n.slice(0);return e&&t&&a&&(o.some(e=>e[r]===a)||(n=i[a]||(0,_vue.reactive)({[g()]:a,[r]:a,[u]:a}),i[a]=n,o.unshift(n))),k.optList=o,(0,_vue.nextTick)()},m=()=>{we(),Pe()},Me=()=>(0,_vue.nextTick)().then(()=>{var e=k["scrollYLoad"],t=S["scrollYStore"],l=j.value,a=J.value;let i=0,o;(o=l?o||l.children[0]:o)&&(i=o.offsetHeight),i=Math.max(20,i),t.rowHeight=i,(e?(l=w.value,e=Math.max(8,l?Math.ceil(l.clientHeight/i):0),l=Math.max(0,Math.min(2,_xeUtils.default.toNumber(a.oSize))),t.offsetSize=l,t.visibleSize=e,t.endIndex=Math.max(t.startIndex,e+l,t.endIndex),m):Pe)()}),ke=(e,t)=>{var l,a,i=k["scrollYLoad"],{optFullValMaps:o,scrollYStore:n}=S,o=o[e[O.value]];o&&(e=o.key,-1<(o=o._index))&&(l=w.value,a=M.value)&&(a=a.querySelector(`[optid='${e}']`),l)&&(a?(e=l.offsetHeight,t?a.offsetTop+a.offsetHeight-l.scrollTop>e?l.scrollTop=a.offsetTop+a.offsetHeight-e:(a.offsetTop+1<l.scrollTop||a.offsetTop+1>l.scrollTop+l.clientHeight)&&(l.scrollTop=a.offsetTop-1):a.offsetTop+1<l.scrollTop||a.offsetTop+1>l.scrollTop+l.clientHeight?l.scrollTop=a.offsetTop-1:a.offsetTop+a.offsetHeight-l.scrollTop>e&&(l.scrollTop=a.offsetTop+a.offsetHeight-e)):i&&(l.scrollTop=t?o*n.rowHeight-l.clientHeight+n.rowHeight:o*n.rowHeight))},Ae=(e,t)=>{var l=w.value;return l&&(_xeUtils.default.isNumber(e)&&(l.scrollLeft=e),_xeUtils.default.isNumber(t))&&(l.scrollTop=t),k.scrollYLoad?new Promise(e=>{setTimeout(()=>{(0,_vue.nextTick)(()=>{e()})},50)}):(0,_vue.nextTick)()},x=()=>{const{lastScrollLeft:e,lastScrollTop:t}=S;return n().then(()=>{if(e||t)return S.lastScrollLeft=0,S.lastScrollTop=0,Ae(e,t)})},b=()=>{var e=L.value;return e&&e.clientWidth&&e.clientHeight?Me():Promise.resolve()},Ue=e=>{var t=S["scrollYStore"],{startIndex:l,endIndex:a,visibleSize:i,offsetSize:o,rowHeight:n}=t,e=e.target.scrollTop,e=Math.floor(e/n),n=Math.max(0,e-1-o),o=e+i+o;!(e<=l||a-i-1<=e)||l===n&&a===o||(t.startIndex=n,t.endIndex=o,m())},Fe=e=>{var t=e.target,l=t.scrollTop,t=t.scrollLeft,a=t!==S.lastScrollLeft,i=l!==S.lastScrollTop;S.lastScrollTop=l,S.lastScrollLeft=t,k.scrollYLoad&&Ue(e),S.lastScrollTime=Date.now(),u("scroll",{scrollLeft:t,scrollTop:l,isX:a,isY:i},e)},l=e=>{{var t=e||[];const u=X.value,s=O.value,c=g(),v={},d={},p=[],f=e=>{p.push(e);let t=D(e);t||(t=getOptUniqueId(),e[c]=t),d[e[s]]={key:t,item:e,_index:-1}};t.forEach(e=>{f(e),e[u]&&(v[e[c]]=e)[u].forEach(f)}),S.fullData=p,S.optGroupKeyMaps=v,S.optFullValMaps=d,k.reactFlag++,h()}var t=V["multiple"],{isLoaded:l,fullData:a,scrollYStore:i}=S,o=$.value,n=J.value;const r=O.value;if(Object.assign(i,{startIndex:0,endIndex:1,visibleSize:0}),S.synchData=e||[],k.scrollYLoad=!!n.enabled&&-1<n.gt&&(0===n.gt||n.gt<=a.length),we(),!l){i=o["selectMode"];if(0<e.length&&_xeUtils.default.eqNull(V.modelValue)){if("all"===i)t?(0,_vue.nextTick)(()=>{ne(e.map(e=>e[r]))}):(0,_log.errLog)("vxe.error.notConflictProp",["default-config.selectMode=all","multiple=true"]);else if("first"===i||"last"===i){const _=_xeUtils.default[i](e);_&&(0,_vue.nextTick)(()=>{_xeUtils.default.eqNull(V.modelValue)&&ne(_[r])})}S.isLoaded=!0}}return Me().then(()=>{x()})},n=()=>{var e=w.value;return e&&(e.scrollTop=0,e.scrollLeft=0),S.lastScrollTop=0,(S.lastScrollLeft=0,_vue.nextTick)()},Ne=e=>{var t=S["optGroupKeyMaps"];return!!t[e]};t={dispatchEvent:u,loadData:l,reloadData(e){return S.isLoaded=!1,n(),l(e)},isPanelVisible(){return k.visiblePanel},togglePanel(){return(k.visiblePanel?d:c)(),(0,_vue.nextTick)()},hidePanel(){return k.visiblePanel&&d(),(0,_vue.nextTick)()},showPanel(){return k.visiblePanel||c(),(0,_vue.nextTick)()},refreshOption(){return h(),m(),(0,_vue.nextTick)()},focus(){var e=P.value;return e&&e.blur(),k.isActivated=!0,(0,_vue.nextTick)()},blur(){var e=P.value;return e&&e.blur(),(k.isActivated=!1,_vue.nextTick)()},recalculate:b,clearScroll:n};Object.assign(A,t);const Be=e=>{const{allowCreate:f,optionKey:_}=V,g=k["currentOption"],h=S["optAddMaps"];var t=ee.value;const m=v.value,x=O.value,b=W.value,T=N.value,{useKey:E,height:y}=t,C=I.option;return e.map((t,e)=>{var{slots:l,className:a}=t,i=D(t),o=t[x];const n=Ne(i);var r=!(!f||!h[i]),u=!r&&-1<T.indexOf(o),s=r||!n||isOptionVisible(t);const c=!r&&(v=u,!!t.disabled||!(!Z.value||v));var v=l?l.default:null,l={option:t,group:n?t:null,$select:A};let d="",p=[];return p=C?B(C,l):v?B(v,l):d=(0,_utils.getFuncText)(t[n?b:m]||o),s?(0,_vue.h)("div",{key:E||_?i:e,class:["vxe-select-option",a?_xeUtils.default.isFunction(a)?a(l):a:"",{"vxe-select-optgroup":n,"is--disabled":c,"is--selected":u,"is--add":r,"is--hover":g&&D(g)===i}],optid:i,title:d||null,style:y?{height:(0,_dom.toCssUnit)(y)}:void 0,onMousedown:e=>{0===e.button&&e.stopPropagation()},onClick:e=>{c||n||fe(e,t)},onMouseenter:()=>{var e;c||n||(e=S.lastScrollTime)&&Date.now()<e+250||ce(t)}},f?[(0,_vue.h)("span",{key:1,class:"vxe-select-option--label"},p),r?(0,_vue.h)("span",{key:2,class:"vxe-select-option--add-icon"},[(0,_vue.h)("i",{class:(0,_ui.getIcon)().SELECT_ADD_OPTION})]):(0,_ui.renderEmptyElement)(A)]:p):(0,_ui.renderEmptyElement)(A)})};return(0,_vue.watch)(()=>k.staticOptions,e=>{l(e)}),(0,_vue.watch)(()=>V.options,e=>{l(e||[])}),(0,_vue.watch)(()=>V.optionGroups,e=>{l(e||[])}),(0,_vue.onMounted)(()=>{(0,_vue.nextTick)(()=>{var{options:e,optionGroups:t}=V;t?l(t):e&&l(e)}),_ui.globalEvents.on(A,"mousewheel",_e),_ui.globalEvents.on(A,"mousedown",ge),_ui.globalEvents.on(A,"keydown",me),_ui.globalEvents.on(A,"blur",xe),_ui.globalEvents.on(A,"resize",be)}),(0,_vue.onUnmounted)(()=>{_ui.globalEvents.off(A,"mousewheel"),_ui.globalEvents.off(A,"mousedown"),_ui.globalEvents.off(A,"keydown"),_ui.globalEvents.off(A,"blur"),_ui.globalEvents.off(A,"resize"),_xeUtils.default.assign(S,createInternalData())}),(0,_vue.provide)("$xeSelect",A),A.renderVN=()=>{var{className:e,multiple:t,loading:l,filterable:a,showTotalButoon:i,showCheckedButoon:o,showClearButton:n}=V,{initialized:r,isActivated:u,isAniVisible:s,optList:c,visiblePanel:v,bodyHeight:d,topSpaceHeight:p}=k,f=z.value,_=U.value,g=ie.value,h=ae.value,m=q.value,x=H.value,b=K.value,T=le.value,E=F.value,y=I.default,C=I.header,S=I.footer;const O=I.prefix;E=E.className||V.popupClassName;return x?(0,_vue.h)("div",{ref:L,class:["vxe-select--readonly",e]},[(0,_vue.h)("div",{class:"vxe-select-slots",ref:"hideOption"},y?y({}):[]),(0,_vue.h)("span",{class:"vxe-select-label",title:h},g)]):(x=N.value,(0,_vue.h)("div",{ref:L,class:["vxe-select",e?_xeUtils.default.isFunction(e)?e({$select:A}):e:"",{["size--"+f]:f,"is--visible":v,"is--disabled":_,"is--filter":a,"is--loading":l,"is--active":u}]},[(0,_vue.h)("div",{class:"vxe-select-slots",ref:"hideOption"},y?y({}):[]),(0,_vue.h)(_input.default,{ref:P,clearable:V.clearable,placeholder:b,readonly:!0,disabled:_,type:"text",prefixIcon:V.prefixIcon,suffixIcon:l?(0,_ui.getIcon)().SELECT_LOADED:v?(0,_ui.getIcon)().SELECT_OPEN:(0,_ui.getIcon)().SELECT_CLOSE,autoFocus:!1,title:h,modelValue:g,onClear:ve,onClick:Ee,onFocus:Te,onBlur:ye,onSuffixClick:Ce},O?{prefix:()=>O({})}:{}),(0,_vue.h)(_vue.Teleport,{to:"body",disabled:!m||!r},[(0,_vue.h)("div",{ref:M,class:["vxe-table--ignore-clear vxe-select--panel",E?_xeUtils.default.isFunction(E)?E({$select:A}):E:"",{["size--"+f]:f,"is--transfer":m,"ani--leave":!l&&s,"ani--enter":!l&&v}],placement:k.panelPlacement,style:k.panelStyle},r&&(v||s)?[(0,_vue.h)("div",{class:"vxe-select--panel-wrapper",style:T},[a?(0,_vue.h)("div",{class:"vxe-select--panel-search"},[(0,_vue.h)(_input.default,{ref:Y,class:"vxe-select-search--input",modelValue:k.searchValue,type:"text",clearable:!0,disabled:!1,readonly:!1,placeholder:(0,_ui.getI18n)("vxe.select.search"),prefixIcon:(0,_ui.getIcon)().INPUT_SEARCH,"onUpdate:modelValue":Se,onFocus:Oe,onChange:Ie,onSearch:Ie})]):(0,_ui.renderEmptyElement)(A),i||o&&t||n||C?(0,_vue.h)("div",{class:"vxe-select--panel-header"},C?B(C,{}):[(0,_vue.h)("div",{class:"vxe-select--header-button"},[i?(0,_vue.h)("div",{class:"vxe-select--header-total"},(0,_ui.getI18n)("vxe.select.total",[x.length,c.length])):(0,_ui.renderEmptyElement)(A),(0,_vue.h)("div",{class:"vxe-select--header-btns"},[o&&t?(0,_vue.h)(_button.default,{content:(0,_ui.getI18n)("vxe.select.allChecked"),mode:"text",onClick:de}):(0,_ui.renderEmptyElement)(A),n?(0,_vue.h)(_button.default,{content:(0,_ui.getI18n)("vxe.select.clear"),mode:"text",onClick:pe}):(0,_ui.renderEmptyElement)(A)])])]):(0,_ui.renderEmptyElement)(A),(0,_vue.h)("div",{class:"vxe-select--panel-body"},[(0,_vue.h)("div",{ref:w,class:"vxe-select-option--wrapper",onScroll:Fe},[(0,_vue.h)("div",{class:"vxe-select--y-space",style:{height:d?d+"px":""}}),(0,_vue.h)("div",{ref:j,class:"vxe-select--body",style:{transform:`translateY(${p}px)`}},(()=>{var{optList:e,searchLoading:t}=k;return t?[(0,_vue.h)("div",{class:"vxe-select--search-loading"},[(0,_vue.h)("i",{class:["vxe-select--search-icon",(0,_ui.getIcon)().SELECT_LOADED]}),(0,_vue.h)("span",{class:"vxe-select--search-text"},(0,_ui.getI18n)("vxe.select.loadingText"))])]:e.length?Be(e):[(0,_vue.h)("div",{class:"vxe-select--empty-placeholder"},V.emptyText||(0,_ui.getI18n)("vxe.select.emptyText"))]})())])]),S?(0,_vue.h)("div",{class:"vxe-select--panel-footer"},B(S,{})):(0,_ui.renderEmptyElement)(A)])]:[])])]))},A},render(){return this.renderVN()}});
|