vxe-pc-ui 4.11.12 → 4.11.14
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/es/icon/style.css +1 -1
- package/es/select/src/select.js +12 -7
- package/es/style.css +1 -1
- package/es/style.min.css +1 -1
- package/es/ui/index.js +1 -1
- package/es/ui/src/log.js +1 -1
- package/lib/icon/style/style.css +1 -1
- package/lib/icon/style/style.min.css +1 -1
- package/lib/index.umd.js +18 -13
- package/lib/index.umd.min.js +1 -1
- package/lib/select/src/select.js +16 -11
- package/lib/select/src/select.min.js +1 -1
- package/lib/style.css +1 -1
- package/lib/style.min.css +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/select/src/select.ts +10 -6
- package/types/components/column.d.ts +12 -2
- package/types/components/grid.d.ts +11 -6
- package/types/components/table.d.ts +8 -0
- /package/es/icon/{iconfont.1766138804118.ttf → iconfont.1766398167086.ttf} +0 -0
- /package/es/icon/{iconfont.1766138804118.woff → iconfont.1766398167086.woff} +0 -0
- /package/es/icon/{iconfont.1766138804118.woff2 → iconfont.1766398167086.woff2} +0 -0
- /package/es/{iconfont.1766138804118.ttf → iconfont.1766398167086.ttf} +0 -0
- /package/es/{iconfont.1766138804118.woff → iconfont.1766398167086.woff} +0 -0
- /package/es/{iconfont.1766138804118.woff2 → iconfont.1766398167086.woff2} +0 -0
- /package/lib/icon/style/{iconfont.1766138804118.ttf → iconfont.1766398167086.ttf} +0 -0
- /package/lib/icon/style/{iconfont.1766138804118.woff → iconfont.1766398167086.woff} +0 -0
- /package/lib/icon/style/{iconfont.1766138804118.woff2 → iconfont.1766398167086.woff2} +0 -0
- /package/lib/{iconfont.1766138804118.ttf → iconfont.1766398167086.ttf} +0 -0
- /package/lib/{iconfont.1766138804118.woff → iconfont.1766398167086.woff} +0 -0
- /package/lib/{iconfont.1766138804118.woff2 → iconfont.1766398167086.woff2} +0 -0
package/lib/select/src/select.js
CHANGED
|
@@ -471,6 +471,7 @@ var _default = exports.default = (0, _comp.defineVxeComponent)({
|
|
|
471
471
|
*/
|
|
472
472
|
const handleOption = () => {
|
|
473
473
|
const {
|
|
474
|
+
remote,
|
|
474
475
|
modelValue,
|
|
475
476
|
filterable,
|
|
476
477
|
filterMethod
|
|
@@ -486,18 +487,22 @@ var _default = exports.default = (0, _comp.defineVxeComponent)({
|
|
|
486
487
|
const valueField = computeValueField.value;
|
|
487
488
|
const searchStr = `${searchValue || ''}`.toLowerCase();
|
|
488
489
|
let avList = [];
|
|
489
|
-
if (
|
|
490
|
-
avList = fullData.filter(option => isOptionVisible(option) && filterMethod({
|
|
491
|
-
$select: $xeSelect,
|
|
492
|
-
group: null,
|
|
493
|
-
option,
|
|
494
|
-
searchValue,
|
|
495
|
-
value: modelValue
|
|
496
|
-
}));
|
|
497
|
-
} else if (filterable) {
|
|
498
|
-
avList = fullData.filter(option => isOptionVisible(option) && (!searchStr || `${option[labelField] || option[valueField]}`.toLowerCase().indexOf(searchStr) > -1));
|
|
499
|
-
} else {
|
|
490
|
+
if (remote) {
|
|
500
491
|
avList = fullData.filter(isOptionVisible);
|
|
492
|
+
} else {
|
|
493
|
+
if (filterable && filterMethod) {
|
|
494
|
+
avList = fullData.filter(option => isOptionVisible(option) && filterMethod({
|
|
495
|
+
$select: $xeSelect,
|
|
496
|
+
group: null,
|
|
497
|
+
option,
|
|
498
|
+
searchValue,
|
|
499
|
+
value: modelValue
|
|
500
|
+
}));
|
|
501
|
+
} else if (filterable) {
|
|
502
|
+
avList = fullData.filter(option => isOptionVisible(option) && (!searchStr || `${option[labelField] || option[valueField]}`.toLowerCase().indexOf(searchStr) > -1));
|
|
503
|
+
} else {
|
|
504
|
+
avList = fullData.filter(isOptionVisible);
|
|
505
|
+
}
|
|
501
506
|
}
|
|
502
507
|
avList.forEach((item, index) => {
|
|
503
508
|
const cacheItem = optFullValMaps[item[valueField]];
|
|
@@ -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,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:L,emit:a}=e,b=(0,_vue.inject)("$xeModal",null),T=(0,_vue.inject)("$xeDrawer",null),E=(0,_vue.inject)("$xeTable",null),i=(0,_vue.inject)("$xeForm",null),o=(0,_vue.inject)("xeFormItemInfo",null);var t=_xeUtils.default.uniqueId();const O=(0,_vue.ref)(),P=(0,_vue.ref)(),w=(0,_vue.ref)(),k=(0,_vue.ref)(),A=(0,_vue.ref)(),M=(0,_vue.ref)(),z=(0,_ui.useSize)(V)["computeSize"],F=(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}),C=createInternalData(),y={refElem:O},N={xID:t,props:V,context:e,reactData:F,internalData:C,getRefMaps:()=>y},j=(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}),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(E||b||T||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")}),S=(0,_vue.computed)(()=>Object.assign({},V.defaultConfig)),K=(0,_vue.computed)(()=>Object.assign({},V.optionProps)),$=(0,_vue.computed)(()=>Object.assign({},V.optionGroupProps)),c=(0,_vue.computed)(()=>{return K.value.label||"label"}),I=(0,_vue.computed)(()=>{return K.value.value||"value"}),G=(0,_vue.computed)(()=>{return $.value.label||"label"}),R=(0,_vue.computed)(()=>{return $.value.options||"options"}),W=(0,_vue.computed)(()=>{var e=B.value;return ne(e)}),X=(0,_vue.computed)(()=>Object.assign({},(0,_ui.getConfig)().treeSelect.popupConfig,V.popupConfig)),Z=(0,_vue.computed)(()=>Object.assign({},(0,_ui.getConfig)().select.virtualYConfig||(0,_ui.getConfig)().select.scrollY,V.virtualYConfig||V.scrollY)),J=(0,_vue.computed)(()=>Object.assign({},(0,_ui.getConfig)().select.remoteConfig,V.remoteConfig)),Q=(0,_vue.computed)(()=>Object.assign({},(0,_ui.getConfig)().select.optionConfig,V.optionConfig)),ee=(0,_vue.computed)(()=>_xeUtils.default.toNumber(V.multiCharOverflow)),te=(0,_vue.computed)(()=>{var{height:e,width:t}=X.value,l={};return t&&(l.width=(0,_dom.toCssUnit)(t)),e&&(l.height=(0,_dom.toCssUnit)(e),l.maxHeight=(0,_dom.toCssUnit)(e)),l}),B=(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}),le=(0,_vue.computed)(()=>{var e=V["remote"],t=F["reactFlag"],l=B.value;return(e&&t?l.map(e=>re(e)):l.map(e=>ue(e))).join(", ")}),ae=(0,_vue.computed)(()=>{var{remote:e,multiple:t}=V,l=F["reactFlag"],a=ee.value,i=B.value;return e&&l?i.map(e=>re(e)).join(", "):(e=i.map(e=>ue(e)),t&&0<a&&e.length>a?e.slice(0,a)+"...":e.join(", "))}),D=(e,t)=>e&&(_xeUtils.default.isString(e)&&(e=L[e]||null),_xeUtils.default.isFunction(e))?(0,_vn.getSlotVNs)(e(t)):[],r=(e,t,l)=>{a(e,(0,_ui.createEvent)(l,{$select:N},t))},ie=e=>{a("update:modelValue",e)},oe=e=>{ie(e),r("default-change",{value:e},null)},g=()=>{return Q.value.keyField||V.optionId||"_X_OPTION_KEY"},Y=e=>{e=e[g()];return e?encodeURIComponent(e):""},ne=e=>{var{multiple:t,max:l}=V;return!(!t||!l)&&e.length>=_xeUtils.default.toNumber(l)},re=t=>{var e=V["lazyOptions"],{remoteValMaps:l,optFullValMaps:a}=C;const i=I.value;var o=c.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},ue=t=>{var e=V["lazyOptions"],l=C["optFullValMaps"];const a=I.value;var i=c.value,l=F.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{modelValue:t,filterable:e,filterMethod:l}=V,a=F["searchValue"],{fullData:i,optFullValMaps:o}=C,n=c.value,r=I.value,u=(""+(a||"")).toLowerCase();let s=[];return(s=e&&l?i.filter(e=>isOptionVisible(e)&&l({$select:N,group:null,option:e,searchValue:a,value:t})):e?i.filter(e=>isOptionVisible(e)&&(!u||-1<(""+(e[n]||e[r])).toLowerCase().indexOf(u))):i.filter(isOptionVisible)).forEach((e,t)=>{e=o[e[r]];e&&(e._index=t)}),C.afterVisibleList=s,(0,_vue.nextTick)()},se=e=>{e&&(F.currentOption=e)},u=()=>{const l=V["placement"],a=F["panelIndex"],i=O.value,o=A.value,n=H.value;var e=()=>{var e=(0,_dom.updatePanelPlacement)(i,o,{placement:l,teleportTo:n}),t=Object.assign(e.style,{zIndex:a});F.panelStyle=t,F.panelPlacement=e.placement};return e(),(0,_vue.nextTick)().then(e)},v=()=>{var{loading:e,filterable:t,remote:l}=V,{fullData:a,hpTimeout:i}=C,o=U.value,n=J.value;e||o||(i&&(clearTimeout(i),C.hpTimeout=void 0),F.initialized||(F.initialized=!0),F.isActivated=!0,F.isAniVisible=!0,t&&(l&&n.enabled&&n.autoLoad&&!a.length?Ie:(h(),f))(),setTimeout(()=>{F.visiblePanel=!0,V.filterable&&(0,_vue.nextTick)(()=>{var e=w.value;e&&e.focus()});x().then(()=>{(0,_vue.nextTick)(()=>{var{isAniVisible:e,visiblePanel:t}=F,l=C["optFullValMaps"],a=B.value;a.length&&e&&t&&(e=F.reactFlag?l[""+a[0]]:null)&&ke(e.item)}),m()})},10),setTimeout(()=>{x().then(()=>m())},100),(e=V.zIndex)?F.panelIndex=e:F.panelIndex<(0,_utils.getLastZIndex)()&&(F.panelIndex=(0,_utils.nextZIndex)()),u(),r("visible-change",{visible:!0},null))},d=()=>{F.searchValue="",F.searchLoading=!1,F.visiblePanel=!1,C.hpTimeout=setTimeout(()=>{F.isAniVisible=!1},350),r("visible-change",{visible:!1},null)},s=(e,t,l)=>{ie(t),t!==V.modelValue&&(r("change",{value:t,option:l},e),i)&&o&&i.triggerItemEvent(e,o.itemConfig.field,t)},p=(e,t)=>{C.remoteValMaps={},s(e,t,null),r("clear",{value:t},e)},ce=e=>{e=e.$event;p(e,null),d()},ve=e=>{var e=e["$event"],{multiple:t,max:l}=V,a=F["optList"],i=I.value;if(t){var o=B.value.slice(0);for(let e=0;e<a.length;e++){const n=a[e][i];if(ne(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)}s(e,o,a[0]),r("all-change",{value:o},e)}},de=e=>{e=e.$event;p(e,null),d()},pe=(t,l)=>{var e=V["multiple"],a=C["remoteValMaps"];const i=l[I.value];var o=a[i];if(F.visiblePanel){if(o?o.item=l:a[i]={key:Y(l),item:l,_index:-1},e){let e=[];o=B.value,a=_xeUtils.default.findIndexOf(o,e=>e===i);e=-1===a?o.concat([i]):o.filter(e=>e!==i),s(t,e,l)}else s(t,i,l),d();F.reactFlag++}},fe=e=>{var t=F["visiblePanel"];U.value||t&&(t=A.value,((0,_dom.getEventTargetNode)(e,t).flag?u:d)())},_e=e=>{var t,l,a=F["visiblePanel"];U.value||(t=O.value,l=A.value,F.isActivated=(0,_dom.getEventTargetNode)(e,t).flag||(0,_dom.getEventTargetNode)(e,l).flag,a&&!F.isActivated&&d())},_=e=>{var t=e.disabled,e=Y(e);return!t&&!Ne(e)},ge=(e,t)=>{var l=V["allowCreate"],a=F["optList"],{optFullValMaps:i,optAddMaps:o,afterVisibleList:n}=C,r=I.value;let u=n,s=0;if(l&&a.length&&(n=a[0],o[l=Y(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},he=t=>{var e=V["clearable"],{visiblePanel:l,currentOption:a}=F;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&&(F.isActivated=!1),l){if(n||i)d();else if(o)a&&(t.preventDefault(),t.stopPropagation(),pe(t,a));else if(r||u){t.preventDefault();let e=ge(a,u);(e=e||ge(null,u))&&(se(e),ke(e,u))}}else(r||u||o)&&F.isActivated&&(t.preventDefault(),v());F.isActivated&&s&&e&&p(t,null)}},me=()=>{var{visiblePanel:e,isActivated:t}=F;e&&d(),t&&(F.isActivated=!1),(e||t)&&(e=P.value)&&e.blur()},xe=()=>{var e=F["visiblePanel"];e&&u()},be=e=>{U.value||F.visiblePanel||(F.triggerFocusPanel=!0,v(),setTimeout(()=>{F.triggerFocusPanel=!1},500)),r("focus",{},e)},Te=e=>{Le(e),r("click",{triggerButton:!1,visible:F.visiblePanel},e)},Ee=e=>{F.isActivated=!1,r("blur",{},e)},ye=e=>{Le(e),r("click",{triggerButton:!0,visible:F.visiblePanel},e)},Se=e=>{F.searchValue=e},Ce=()=>{F.isActivated=!0},Ie=()=>{var{modelValue:e,remote:t,remoteMethod:l}=V,a=F["searchValue"],i=J.value,l=i.queryMethod||l;t&&l&&i.enabled?(F.searchLoading=!0,Promise.resolve(l({$select:N,searchValue:a,value:e})).then(()=>(0,_vue.nextTick)()).catch(()=>(0,_vue.nextTick)()).finally(()=>{F.searchLoading=!1,h(),f()})):(h(),f())},Ve=_xeUtils.default.debounce(Ie,350,{trailing:!0}),Le=e=>{e=e.$event;e.preventDefault(),F.triggerFocusPanel?F.triggerFocusPanel=!1:(F.visiblePanel?d:v)()},Oe=()=>{var e=F["scrollYLoad"],{scrollYStore:t,afterVisibleList:l}=C;F.bodyHeight=e?l.length*t.rowHeight:0,F.topSpaceHeight=e?Math.max(t.startIndex*t.rowHeight,0):0},Pe=()=>{var{filterable:e,allowCreate:t}=V;const{scrollYLoad:l,searchValue:a}=F;var{optAddMaps:i,scrollYStore:o,afterVisibleList:n}=C;const r=c.value;var u=I.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))),F.optList=o,(0,_vue.nextTick)()},f=()=>{Pe(),Oe()},we=()=>(0,_vue.nextTick)().then(()=>{var e=F["scrollYLoad"],t=C["scrollYStore"],l=M.value,a=Z.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=k.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),f):Oe)()}),ke=(e,t)=>{var l,a,i=F["scrollYLoad"],{optFullValMaps:o,scrollYStore:n}=C,o=o[e[I.value]];o&&(e=o.key,-1<(o=o._index))&&(l=k.value,a=A.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=k.value;return l&&(_xeUtils.default.isNumber(e)&&(l.scrollLeft=e),_xeUtils.default.isNumber(t))&&(l.scrollTop=t),F.scrollYLoad?new Promise(e=>{setTimeout(()=>{(0,_vue.nextTick)(()=>{e()})},50)}):(0,_vue.nextTick)()},m=()=>{const{lastScrollLeft:e,lastScrollTop:t}=C;return n().then(()=>{if(e||t)return C.lastScrollLeft=0,C.lastScrollTop=0,Ae(e,t)})},x=()=>{var e=O.value;return e&&e.clientWidth&&e.clientHeight?we():Promise.resolve()},Me=e=>{var t=C["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,f())},Fe=e=>{var t=e.target,l=t.scrollTop,t=t.scrollLeft,a=t!==C.lastScrollLeft,i=l!==C.lastScrollTop;C.lastScrollTop=l,C.lastScrollLeft=t,F.scrollYLoad&&Me(e),C.lastScrollTime=Date.now(),r("scroll",{scrollLeft:t,scrollTop:l,isX:a,isY:i},e)},l=e=>{{var t=e||[];const u=R.value,s=I.value,c=g(),v={},d={},p=[],f=e=>{p.push(e);let t=Y(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)}),C.fullData=p,C.optGroupKeyMaps=v,C.optFullValMaps=d,F.reactFlag++,h()}var t=V["multiple"],{isLoaded:l,fullData:a,scrollYStore:i}=C,o=S.value,n=Z.value;const r=I.value;if(Object.assign(i,{startIndex:0,endIndex:1,visibleSize:0}),C.synchData=e||[],F.scrollYLoad=!!n.enabled&&-1<n.gt&&(0===n.gt||n.gt<=a.length),Pe(),!l){i=o["selectMode"];if(0<e.length&&_xeUtils.default.eqNull(V.modelValue)){if("all"===i)t?(0,_vue.nextTick)(()=>{oe(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)&&oe(_[r])})}C.isLoaded=!0}}return we().then(()=>{m()})},n=()=>{var e=k.value;return e&&(e.scrollTop=0,e.scrollLeft=0),C.lastScrollTop=0,(C.lastScrollLeft=0,_vue.nextTick)()},Ne=e=>{var t=C["optGroupKeyMaps"];return!!t[e]};t={dispatchEvent:r,loadData:l,reloadData(e){return C.isLoaded=!1,n(),l(e)},isPanelVisible(){return F.visiblePanel},togglePanel(){return(F.visiblePanel?d:v)(),(0,_vue.nextTick)()},hidePanel(){return F.visiblePanel&&d(),(0,_vue.nextTick)()},showPanel(){return F.visiblePanel||v(),(0,_vue.nextTick)()},refreshOption(){return h(),f(),(0,_vue.nextTick)()},focus(){var e=P.value;return e&&e.blur(),F.isActivated=!0,(0,_vue.nextTick)()},blur(){var e=P.value;return e&&e.blur(),(F.isActivated=!1,_vue.nextTick)()},recalculate:x,clearScroll:n};Object.assign(N,t);const Ue=e=>{const{allowCreate:f,optionKey:_}=V,g=F["currentOption"],h=C["optAddMaps"];var t=Q.value;const m=c.value,x=I.value,b=G.value,T=B.value,{useKey:E,height:y}=t,S=L.option;return e.map((t,e)=>{var{slots:l,className:a}=t,i=Y(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||!(!W.value||v));var v=l?l.default:null,l={option:t,group:n?t:null,$select:N};let d="",p=[];return p=S?D(S,l):v?D(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&&Y(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||pe(e,t)},onMouseenter:()=>{var e;c||n||(e=C.lastScrollTime)&&Date.now()<e+250||se(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)(N)]:p):(0,_ui.renderEmptyElement)(N)})};return(0,_vue.watch)(()=>F.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(N,"mousewheel",fe),_ui.globalEvents.on(N,"mousedown",_e),_ui.globalEvents.on(N,"keydown",he),_ui.globalEvents.on(N,"blur",me),_ui.globalEvents.on(N,"resize",xe)}),(0,_vue.onUnmounted)(()=>{_ui.globalEvents.off(N,"mousewheel"),_ui.globalEvents.off(N,"mousedown"),_ui.globalEvents.off(N,"keydown"),_ui.globalEvents.off(N,"blur"),_ui.globalEvents.off(N,"resize"),_xeUtils.default.assign(C,createInternalData())}),(0,_vue.provide)("$xeSelect",N),N.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}=F,f=z.value,_=U.value,g=ae.value,h=le.value,m=H.value,x=j.value,b=q.value,T=te.value,E=X.value.className||V.popupClassName,y=L.default,S=L.header,C=L.footer;const I=L.prefix;return x?(0,_vue.h)("div",{ref:O,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=B.value,(0,_vue.h)("div",{ref:O,class:["vxe-select",e?_xeUtils.default.isFunction(e)?e({$select:N}):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:ce,onClick:Te,onFocus:be,onBlur:Ee,onSuffixClick:ye},I?{prefix:()=>I({})}:{}),(0,_vue.h)(_vue.Teleport,{to:"body",disabled:!m||!r},[(0,_vue.h)("div",{ref:A,class:["vxe-table--ignore-clear vxe-select--panel",E?_xeUtils.default.isFunction(E)?E({$select:N}):E:"",{["size--"+f]:f,"is--transfer":m,"ani--leave":!l&&s,"ani--enter":!l&&v}],placement:F.panelPlacement,style:F.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:F.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:Ce,onChange:Ve,onSearch:Ve})]):(0,_ui.renderEmptyElement)(N),i||o&&t||n||S?(0,_vue.h)("div",{class:"vxe-select--panel-header"},S?D(S,{}):[(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)(N),(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:ve}):(0,_ui.renderEmptyElement)(N),n?(0,_vue.h)(_button.default,{content:(0,_ui.getI18n)("vxe.select.clear"),mode:"text",onClick:de}):(0,_ui.renderEmptyElement)(N)])])]):(0,_ui.renderEmptyElement)(N),(0,_vue.h)("div",{class:"vxe-select--panel-body"},[(0,_vue.h)("div",{ref:k,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:M,class:"vxe-select--body",style:{transform:`translateY(${p}px)`}},(()=>{var{optList:e,searchLoading:t}=F;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?Ue(e):[(0,_vue.h)("div",{class:"vxe-select--empty-placeholder"},V.emptyText||(0,_ui.getI18n)("vxe.select.emptyText"))]})())])]),C?(0,_vue.h)("div",{class:"vxe-select--panel-footer"},D(C,{})):(0,_ui.renderEmptyElement)(N)])]:[])])]))},N},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,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(I,e){const{slots:L,emit:a}=e,b=(0,_vue.inject)("$xeModal",null),T=(0,_vue.inject)("$xeDrawer",null),E=(0,_vue.inject)("$xeTable",null),i=(0,_vue.inject)("$xeForm",null),o=(0,_vue.inject)("xeFormItemInfo",null);var t=_xeUtils.default.uniqueId();const O=(0,_vue.ref)(),P=(0,_vue.ref)(),w=(0,_vue.ref)(),k=(0,_vue.ref)(),A=(0,_vue.ref)(),M=(0,_vue.ref)(),z=(0,_ui.useSize)(I)["computeSize"],F=(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}),C=createInternalData(),y={refElem:O},N={xID:t,props:I,context:e,reactData:F,internalData:C,getRefMaps:()=>y},j=(0,_vue.computed)(()=>{var e=I["readonly"];return null===e?!!i&&i.props.readonly:e}),U=(0,_vue.computed)(()=>{var e=I["disabled"];return null===e?!!i&&i.props.disabled:e}),H=(0,_vue.computed)(()=>{var e=I["transfer"];if(null===e){var t=(0,_ui.getConfig)().select.transfer;if(_xeUtils.default.isBoolean(t))return t;if(E||b||T||i)return!0}return e}),q=(0,_vue.computed)(()=>{var e=I["placeholder"];return(e=e||(0,_ui.getConfig)().select.placeholder)?(0,_utils.getFuncText)(e):(0,_ui.getI18n)("vxe.base.pleaseSelect")}),S=(0,_vue.computed)(()=>Object.assign({},I.defaultConfig)),K=(0,_vue.computed)(()=>Object.assign({},I.optionProps)),$=(0,_vue.computed)(()=>Object.assign({},I.optionGroupProps)),v=(0,_vue.computed)(()=>{return K.value.label||"label"}),V=(0,_vue.computed)(()=>{return K.value.value||"value"}),G=(0,_vue.computed)(()=>{return $.value.label||"label"}),R=(0,_vue.computed)(()=>{return $.value.options||"options"}),W=(0,_vue.computed)(()=>{var e=B.value;return ne(e)}),X=(0,_vue.computed)(()=>Object.assign({},(0,_ui.getConfig)().treeSelect.popupConfig,I.popupConfig)),Z=(0,_vue.computed)(()=>Object.assign({},(0,_ui.getConfig)().select.virtualYConfig||(0,_ui.getConfig)().select.scrollY,I.virtualYConfig||I.scrollY)),J=(0,_vue.computed)(()=>Object.assign({},(0,_ui.getConfig)().select.remoteConfig,I.remoteConfig)),Q=(0,_vue.computed)(()=>Object.assign({},(0,_ui.getConfig)().select.optionConfig,I.optionConfig)),ee=(0,_vue.computed)(()=>_xeUtils.default.toNumber(I.multiCharOverflow)),te=(0,_vue.computed)(()=>{var{height:e,width:t}=X.value,l={};return t&&(l.width=(0,_dom.toCssUnit)(t)),e&&(l.height=(0,_dom.toCssUnit)(e),l.maxHeight=(0,_dom.toCssUnit)(e)),l}),B=(0,_vue.computed)(()=>{var{modelValue:e,multiple:t}=I;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}),le=(0,_vue.computed)(()=>{var e=I["remote"],t=F["reactFlag"],l=B.value;return(e&&t?l.map(e=>re(e)):l.map(e=>ue(e))).join(", ")}),ae=(0,_vue.computed)(()=>{var{remote:e,multiple:t}=I,l=F["reactFlag"],a=ee.value,i=B.value;return e&&l?i.map(e=>re(e)).join(", "):(e=i.map(e=>ue(e)),t&&0<a&&e.length>a?e.slice(0,a)+"...":e.join(", "))}),D=(e,t)=>e&&(_xeUtils.default.isString(e)&&(e=L[e]||null),_xeUtils.default.isFunction(e))?(0,_vn.getSlotVNs)(e(t)):[],r=(e,t,l)=>{a(e,(0,_ui.createEvent)(l,{$select:N},t))},ie=e=>{a("update:modelValue",e)},oe=e=>{ie(e),r("default-change",{value:e},null)},g=()=>{return Q.value.keyField||I.optionId||"_X_OPTION_KEY"},Y=e=>{e=e[g()];return e?encodeURIComponent(e):""},ne=e=>{var{multiple:t,max:l}=I;return!(!t||!l)&&e.length>=_xeUtils.default.toNumber(l)},re=t=>{var e=I["lazyOptions"],{remoteValMaps:l,optFullValMaps:a}=C;const i=V.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},ue=t=>{var e=I["lazyOptions"],l=C["optFullValMaps"];const a=V.value;var i=v.value,l=F.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,filterMethod:a}=I,i=F["searchValue"],{fullData:o,optFullValMaps:n}=C,r=v.value,u=V.value,s=(""+(i||"")).toLowerCase();let c=[];return(c=e?o.filter(isOptionVisible):l&&a?o.filter(e=>isOptionVisible(e)&&a({$select:N,group:null,option:e,searchValue:i,value:t})):l?o.filter(e=>isOptionVisible(e)&&(!s||-1<(""+(e[r]||e[u])).toLowerCase().indexOf(s))):o.filter(isOptionVisible)).forEach((e,t)=>{e=n[e[u]];e&&(e._index=t)}),C.afterVisibleList=c,(0,_vue.nextTick)()},se=e=>{e&&(F.currentOption=e)},u=()=>{const l=I["placement"],a=F["panelIndex"],i=O.value,o=A.value,n=H.value;var e=()=>{var e=(0,_dom.updatePanelPlacement)(i,o,{placement:l,teleportTo:n}),t=Object.assign(e.style,{zIndex:a});F.panelStyle=t,F.panelPlacement=e.placement};return e(),(0,_vue.nextTick)().then(e)},c=()=>{var{loading:e,filterable:t,remote:l}=I,{fullData:a,hpTimeout:i}=C,o=U.value,n=J.value;e||o||(i&&(clearTimeout(i),C.hpTimeout=void 0),F.initialized||(F.initialized=!0),F.isActivated=!0,F.isAniVisible=!0,t&&(l&&n.enabled&&n.autoLoad&&!a.length?Ve:(h(),f))(),setTimeout(()=>{F.visiblePanel=!0,I.filterable&&(0,_vue.nextTick)(()=>{var e=w.value;e&&e.focus()});x().then(()=>{(0,_vue.nextTick)(()=>{var{isAniVisible:e,visiblePanel:t}=F,l=C["optFullValMaps"],a=B.value;a.length&&e&&t&&(e=F.reactFlag?l[""+a[0]]:null)&&ke(e.item)}),m()})},10),setTimeout(()=>{x().then(()=>m())},100),(e=I.zIndex)?F.panelIndex=e:F.panelIndex<(0,_utils.getLastZIndex)()&&(F.panelIndex=(0,_utils.nextZIndex)()),u(),r("visible-change",{visible:!0},null))},d=()=>{F.searchValue="",F.searchLoading=!1,F.visiblePanel=!1,C.hpTimeout=setTimeout(()=>{F.isAniVisible=!1},350),r("visible-change",{visible:!1},null)},s=(e,t,l)=>{ie(t),t!==I.modelValue&&(r("change",{value:t,option:l},e),i)&&o&&i.triggerItemEvent(e,o.itemConfig.field,t)},p=(e,t)=>{C.remoteValMaps={},s(e,t,null),r("clear",{value:t},e)},ce=e=>{e=e.$event;p(e,null),d()},ve=e=>{var e=e["$event"],{multiple:t,max:l}=I,a=F["optList"],i=V.value;if(t){var o=B.value.slice(0);for(let e=0;e<a.length;e++){const n=a[e][i];if(ne(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)}s(e,o,a[0]),r("all-change",{value:o},e)}},de=e=>{e=e.$event;p(e,null),d()},pe=(t,l)=>{var e=I["multiple"],a=C["remoteValMaps"];const i=l[V.value];var o=a[i];if(F.visiblePanel){if(o?o.item=l:a[i]={key:Y(l),item:l,_index:-1},e){let e=[];o=B.value,a=_xeUtils.default.findIndexOf(o,e=>e===i);e=-1===a?o.concat([i]):o.filter(e=>e!==i),s(t,e,l)}else s(t,i,l),d();F.reactFlag++}},fe=e=>{var t=F["visiblePanel"];U.value||t&&(t=A.value,((0,_dom.getEventTargetNode)(e,t).flag?u:d)())},_e=e=>{var t,l,a=F["visiblePanel"];U.value||(t=O.value,l=A.value,F.isActivated=(0,_dom.getEventTargetNode)(e,t).flag||(0,_dom.getEventTargetNode)(e,l).flag,a&&!F.isActivated&&d())},_=e=>{var t=e.disabled,e=Y(e);return!t&&!Ne(e)},ge=(e,t)=>{var l=I["allowCreate"],a=F["optList"],{optFullValMaps:i,optAddMaps:o,afterVisibleList:n}=C,r=V.value;let u=n,s=0;if(l&&a.length&&(n=a[0],o[l=Y(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},he=t=>{var e=I["clearable"],{visiblePanel:l,currentOption:a}=F;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&&(F.isActivated=!1),l){if(n||i)d();else if(o)a&&(t.preventDefault(),t.stopPropagation(),pe(t,a));else if(r||u){t.preventDefault();let e=ge(a,u);(e=e||ge(null,u))&&(se(e),ke(e,u))}}else(r||u||o)&&F.isActivated&&(t.preventDefault(),c());F.isActivated&&s&&e&&p(t,null)}},me=()=>{var{visiblePanel:e,isActivated:t}=F;e&&d(),t&&(F.isActivated=!1),(e||t)&&(e=P.value)&&e.blur()},xe=()=>{var e=F["visiblePanel"];e&&u()},be=e=>{U.value||F.visiblePanel||(F.triggerFocusPanel=!0,c(),setTimeout(()=>{F.triggerFocusPanel=!1},500)),r("focus",{},e)},Te=e=>{Le(e),r("click",{triggerButton:!1,visible:F.visiblePanel},e)},Ee=e=>{F.isActivated=!1,r("blur",{},e)},ye=e=>{Le(e),r("click",{triggerButton:!0,visible:F.visiblePanel},e)},Se=e=>{F.searchValue=e},Ce=()=>{F.isActivated=!0},Ve=()=>{var{modelValue:e,remote:t,remoteMethod:l}=I,a=F["searchValue"],i=J.value,l=i.queryMethod||l;t&&l&&i.enabled?(F.searchLoading=!0,Promise.resolve(l({$select:N,searchValue:a,value:e})).then(()=>(0,_vue.nextTick)()).catch(()=>(0,_vue.nextTick)()).finally(()=>{F.searchLoading=!1,h(),f()})):(h(),f())},Ie=_xeUtils.default.debounce(Ve,350,{trailing:!0}),Le=e=>{e=e.$event;e.preventDefault(),F.triggerFocusPanel?F.triggerFocusPanel=!1:(F.visiblePanel?d:c)()},Oe=()=>{var e=F["scrollYLoad"],{scrollYStore:t,afterVisibleList:l}=C;F.bodyHeight=e?l.length*t.rowHeight:0,F.topSpaceHeight=e?Math.max(t.startIndex*t.rowHeight,0):0},Pe=()=>{var{filterable:e,allowCreate:t}=I;const{scrollYLoad:l,searchValue:a}=F;var{optAddMaps:i,scrollYStore:o,afterVisibleList:n}=C;const r=v.value;var u=V.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))),F.optList=o,(0,_vue.nextTick)()},f=()=>{Pe(),Oe()},we=()=>(0,_vue.nextTick)().then(()=>{var e=F["scrollYLoad"],t=C["scrollYStore"],l=M.value,a=Z.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=k.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),f):Oe)()}),ke=(e,t)=>{var l,a,i=F["scrollYLoad"],{optFullValMaps:o,scrollYStore:n}=C,o=o[e[V.value]];o&&(e=o.key,-1<(o=o._index))&&(l=k.value,a=A.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=k.value;return l&&(_xeUtils.default.isNumber(e)&&(l.scrollLeft=e),_xeUtils.default.isNumber(t))&&(l.scrollTop=t),F.scrollYLoad?new Promise(e=>{setTimeout(()=>{(0,_vue.nextTick)(()=>{e()})},50)}):(0,_vue.nextTick)()},m=()=>{const{lastScrollLeft:e,lastScrollTop:t}=C;return n().then(()=>{if(e||t)return C.lastScrollLeft=0,C.lastScrollTop=0,Ae(e,t)})},x=()=>{var e=O.value;return e&&e.clientWidth&&e.clientHeight?we():Promise.resolve()},Me=e=>{var t=C["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,f())},Fe=e=>{var t=e.target,l=t.scrollTop,t=t.scrollLeft,a=t!==C.lastScrollLeft,i=l!==C.lastScrollTop;C.lastScrollTop=l,C.lastScrollLeft=t,F.scrollYLoad&&Me(e),C.lastScrollTime=Date.now(),r("scroll",{scrollLeft:t,scrollTop:l,isX:a,isY:i},e)},l=e=>{{var t=e||[];const u=R.value,s=V.value,c=g(),v={},d={},p=[],f=e=>{p.push(e);let t=Y(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)}),C.fullData=p,C.optGroupKeyMaps=v,C.optFullValMaps=d,F.reactFlag++,h()}var t=I["multiple"],{isLoaded:l,fullData:a,scrollYStore:i}=C,o=S.value,n=Z.value;const r=V.value;if(Object.assign(i,{startIndex:0,endIndex:1,visibleSize:0}),C.synchData=e||[],F.scrollYLoad=!!n.enabled&&-1<n.gt&&(0===n.gt||n.gt<=a.length),Pe(),!l){i=o["selectMode"];if(0<e.length&&_xeUtils.default.eqNull(I.modelValue)){if("all"===i)t?(0,_vue.nextTick)(()=>{oe(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(I.modelValue)&&oe(_[r])})}C.isLoaded=!0}}return we().then(()=>{m()})},n=()=>{var e=k.value;return e&&(e.scrollTop=0,e.scrollLeft=0),C.lastScrollTop=0,(C.lastScrollLeft=0,_vue.nextTick)()},Ne=e=>{var t=C["optGroupKeyMaps"];return!!t[e]};t={dispatchEvent:r,loadData:l,reloadData(e){return C.isLoaded=!1,n(),l(e)},isPanelVisible(){return F.visiblePanel},togglePanel(){return(F.visiblePanel?d:c)(),(0,_vue.nextTick)()},hidePanel(){return F.visiblePanel&&d(),(0,_vue.nextTick)()},showPanel(){return F.visiblePanel||c(),(0,_vue.nextTick)()},refreshOption(){return h(),f(),(0,_vue.nextTick)()},focus(){var e=P.value;return e&&e.blur(),F.isActivated=!0,(0,_vue.nextTick)()},blur(){var e=P.value;return e&&e.blur(),(F.isActivated=!1,_vue.nextTick)()},recalculate:x,clearScroll:n};Object.assign(N,t);const Ue=e=>{const{allowCreate:f,optionKey:_}=I,g=F["currentOption"],h=C["optAddMaps"];var t=Q.value;const m=v.value,x=V.value,b=G.value,T=B.value,{useKey:E,height:y}=t,S=L.option;return e.map((t,e)=>{var{slots:l,className:a}=t,i=Y(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||!(!W.value||v));var v=l?l.default:null,l={option:t,group:n?t:null,$select:N};let d="",p=[];return p=S?D(S,l):v?D(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&&Y(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||pe(e,t)},onMouseenter:()=>{var e;c||n||(e=C.lastScrollTime)&&Date.now()<e+250||se(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)(N)]:p):(0,_ui.renderEmptyElement)(N)})};return(0,_vue.watch)(()=>F.staticOptions,e=>{l(e)}),(0,_vue.watch)(()=>I.options,e=>{l(e||[])}),(0,_vue.watch)(()=>I.optionGroups,e=>{l(e||[])}),(0,_vue.onMounted)(()=>{(0,_vue.nextTick)(()=>{var{options:e,optionGroups:t}=I;t?l(t):e&&l(e)}),_ui.globalEvents.on(N,"mousewheel",fe),_ui.globalEvents.on(N,"mousedown",_e),_ui.globalEvents.on(N,"keydown",he),_ui.globalEvents.on(N,"blur",me),_ui.globalEvents.on(N,"resize",xe)}),(0,_vue.onUnmounted)(()=>{_ui.globalEvents.off(N,"mousewheel"),_ui.globalEvents.off(N,"mousedown"),_ui.globalEvents.off(N,"keydown"),_ui.globalEvents.off(N,"blur"),_ui.globalEvents.off(N,"resize"),_xeUtils.default.assign(C,createInternalData())}),(0,_vue.provide)("$xeSelect",N),N.renderVN=()=>{var{className:e,multiple:t,loading:l,filterable:a,showTotalButoon:i,showCheckedButoon:o,showClearButton:n}=I,{initialized:r,isActivated:u,isAniVisible:s,optList:c,visiblePanel:v,bodyHeight:d,topSpaceHeight:p}=F,f=z.value,_=U.value,g=ae.value,h=le.value,m=H.value,x=j.value,b=q.value,T=te.value,E=X.value.className||I.popupClassName,y=L.default,S=L.header,C=L.footer;const V=L.prefix;return x?(0,_vue.h)("div",{ref:O,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=B.value,(0,_vue.h)("div",{ref:O,class:["vxe-select",e?_xeUtils.default.isFunction(e)?e({$select:N}):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:I.clearable,placeholder:b,readonly:!0,disabled:_,type:"text",prefixIcon:I.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:ce,onClick:Te,onFocus:be,onBlur:Ee,onSuffixClick:ye},V?{prefix:()=>V({})}:{}),(0,_vue.h)(_vue.Teleport,{to:"body",disabled:!m||!r},[(0,_vue.h)("div",{ref:A,class:["vxe-table--ignore-clear vxe-select--panel",E?_xeUtils.default.isFunction(E)?E({$select:N}):E:"",{["size--"+f]:f,"is--transfer":m,"ani--leave":!l&&s,"ani--enter":!l&&v}],placement:F.panelPlacement,style:F.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:F.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:Ce,onChange:Ie,onSearch:Ie})]):(0,_ui.renderEmptyElement)(N),i||o&&t||n||S?(0,_vue.h)("div",{class:"vxe-select--panel-header"},S?D(S,{}):[(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)(N),(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:ve}):(0,_ui.renderEmptyElement)(N),n?(0,_vue.h)(_button.default,{content:(0,_ui.getI18n)("vxe.select.clear"),mode:"text",onClick:de}):(0,_ui.renderEmptyElement)(N)])])]):(0,_ui.renderEmptyElement)(N),(0,_vue.h)("div",{class:"vxe-select--panel-body"},[(0,_vue.h)("div",{ref:k,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:M,class:"vxe-select--body",style:{transform:`translateY(${p}px)`}},(()=>{var{optList:e,searchLoading:t}=F;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?Ue(e):[(0,_vue.h)("div",{class:"vxe-select--empty-placeholder"},I.emptyText||(0,_ui.getI18n)("vxe.select.emptyText"))]})())])]),C?(0,_vue.h)("div",{class:"vxe-select--panel-footer"},D(C,{})):(0,_ui.renderEmptyElement)(N)])]:[])])]))},N},render(){return this.renderVN()}});
|