vxe-pc-ui
Version:
A vue based PC component library
1 lines • 23.6 kB
JavaScript
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},showRadio:{type:Boolean,default:()=>(0,_ui.getConfig)().select.showRadio},radioConfig:Object,showCheckbox:{type:Boolean,default:()=>(0,_ui.getConfig)().select.showCheckedButoon},checkboxConfig:Object,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,checkedClosable:{type:Boolean,default:()=>(0,_ui.getConfig)().select.checkedClosable},clearClosable:{type:Boolean,default:()=>(0,_ui.getConfig)().select.clearClosable},showCloseButton:{type:Boolean,default:()=>(0,_ui.getConfig)().select.showCloseButton},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(k,e){let{slots:w,emit:a}=e,n=(0,_vue.inject)("$xeModal",null),C=(0,_vue.inject)("$xeDrawer",null),E=(0,_vue.inject)("$xeTable",null),i=(0,_vue.inject)("$xeForm",null),T=(0,_vue.inject)("xeFormItemInfo",null);var t=_xeUtils.default.uniqueId();let V=(0,_vue.ref)(),L=(0,_vue.ref)(),K=(0,_vue.ref)(),P=(0,_vue.ref)(),B=(0,_vue.ref)(),q=(0,_vue.ref)(),R=(0,_ui.useSize)(k).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}),M=createInternalData(),y={refElem:V},D={xID:t,props:k,context:e,reactData:A,internalData:M,getRefMaps:()=>y},$=(0,_vue.computed)(()=>{var e=k.readonly;return null===e?!!i&&i.props.readonly:e}),U=(0,_vue.computed)(()=>{var e=k.disabled;return null===e?!!i&&i.props.disabled:e}),G=(0,_vue.computed)(()=>{var e=k.transfer,t=j.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(E||n||C||i)return!0}return e}),W=(0,_vue.computed)(()=>{var e=k.placeholder;return(e=e||(0,_ui.getConfig)().select.placeholder)?(0,_utils.getFuncText)(e):(0,_ui.getI18n)("vxe.base.pleaseSelect")}),O=(0,_vue.computed)(()=>Object.assign({},k.defaultConfig)),S=(0,_vue.computed)(()=>Object.assign({},k.optionProps)),I=(0,_vue.computed)(()=>Object.assign({},k.optionGroupProps)),v=(0,_vue.computed)(()=>S.value.label||"label"),N=(0,_vue.computed)(()=>S.value.value||"value"),X=(0,_vue.computed)(()=>I.value.label||"label"),Z=(0,_vue.computed)(()=>I.value.options||"options"),J=(0,_vue.computed)(()=>{var e=F.value;return ce(e)}),j=(0,_vue.computed)(()=>Object.assign({},(0,_ui.getConfig)().select.popupConfig,k.popupConfig)),Q=(0,_vue.computed)(()=>Object.assign({},(0,_ui.getConfig)().select.virtualYConfig||(0,_ui.getConfig)().select.scrollY,k.virtualYConfig||k.scrollY)),r=(0,_vue.computed)(()=>Object.assign({},(0,_ui.getConfig)().select.remoteConfig,k.remoteConfig)),ee=(0,_vue.computed)(()=>Object.assign({},(0,_ui.getConfig)().select.filterConfig,k.filterConfig)),te=(0,_vue.computed)(()=>Object.assign({},(0,_ui.getConfig)().select.optionConfig,k.optionConfig)),le=(0,_vue.computed)(()=>Object.assign({},(0,_ui.getConfig)().select.radioConfig,k.radioConfig)),ae=(0,_vue.computed)(()=>Object.assign({},(0,_ui.getConfig)().select.checkboxConfig,k.checkboxConfig)),ie=(0,_vue.computed)(()=>_xeUtils.default.toNumber(k.multiCharOverflow)),oe=(0,_vue.computed)(()=>{var{height:e,width:t}=j.value,l={};return t&&(l.width=(0,_dom.toCssUnit)(t)),e&&(l.height=(0,_dom.toCssUnit)(e),l.maxHeight=(0,_dom.toCssUnit)(e)),l}),F=(0,_vue.computed)(()=>{var{modelValue:e,multiple:t}=k;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}),ne=(0,_vue.computed)(()=>{var e=k.remote,t=A.reactFlag,l=F.value;return(e&&t?l.map(e=>ve(e)):l.map(e=>de(e))).join(", ")}),ue=(0,_vue.computed)(()=>{var{remote:e,multiple:t}=k,l=A.reactFlag,a=ie.value,i=F.value;return e&&l?i.map(e=>ve(e)).join(", "):(e=i.map(e=>de(e)),t&&0<a&&e.length>a?e.slice(0,a)+"...":e.join(", "))}),H=(e,t)=>e&&(_xeUtils.default.isString(e)&&(e=w[e]||null),_xeUtils.default.isFunction(e))?(0,_vn.getSlotVNs)(e(t)):[],s=(e,t,l)=>{a(e,(0,_ui.createEvent)(l,{$select:D},t))},re=e=>{a("update:modelValue",e)},se=e=>{re(e),s("default-change",{value:e},null)},c=()=>te.value.keyField||k.optionId||"_X_OPTION_KEY",z=e=>{e=e[c()];return e?encodeURIComponent(e):""},ce=e=>{var{multiple:t,max:l}=k;return!(!t||!l)&&e.length>=_xeUtils.default.toNumber(l)},ve=t=>{var e=k.lazyOptions,{remoteValMaps:l,optFullValMaps:a}=M;let i=N.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},de=t=>{var e=k.lazyOptions,l=M.optFullValMaps;let a=N.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},d=()=>{let{remote:e,modelValue:t,filterable:l}=k,a=A.searchValue,{fullData:i,optFullValMaps:o}=M,n=v.value,u=N.value;let r=ee.value.filterMethod||k.filterMethod,s=(""+(a||"")).toLowerCase(),c=[];return(c=e?i.filter(isOptionVisible):l&&r?i.filter(e=>isOptionVisible(e)&&r({$select:D,group:null,option:e,searchValue:a,value:t})):l?i.filter(e=>isOptionVisible(e)&&(!s||-1<(""+(e[n]||e[u])).toLowerCase().indexOf(s))):i.filter(isOptionVisible)).forEach((e,t)=>{e=o[e[u]];e&&(e._index=t)}),M.afterVisibleList=c,(0,_vue.nextTick)()},pe=e=>{e&&(A.currentOption=e)},fe=()=>{var e=j.value.zIndex||k.zIndex;e?A.panelIndex=_xeUtils.default.toNumber(e):A.panelIndex<(0,_utils.getLastZIndex)()&&(A.panelIndex=(0,_utils.nextZIndex)())},p=()=>{let l=k.placement,a=A.panelIndex,i=V.value,o=B.value,n=G.value,u=j.value;var e=()=>{var e=(0,_dom.updatePanelPlacement)(i,o,{placement:u.placement||l,defaultPlacement:u.defaultPlacement,teleportTo:n}),t=Object.assign(e.style,{zIndex:a});A.panelStyle=t,A.panelPlacement=e.placement};return e(),(0,_vue.nextTick)().then(e)},ge=()=>{(0,_vue.nextTick)(()=>{var{isAniVisible:e,visiblePanel:t}=A,l=M.optFullValMaps,a=F.value;a.length&&e&&t&&(e=A.reactFlag?l[""+a[0]]:null)&&(A.currentOption=e.item,Fe(e.item))})},f=()=>{var{loading:e,filterable:t,remote:l}=k,{fullData:a,hpTimeout:i}=M,o=U.value,n=r.value;let u=F.value;e||o||(i&&(clearTimeout(i),M.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)?Be:(d(),m))(),setTimeout(()=>{A.visiblePanel=!0,Se(),x().then(()=>{(u&&u.length?ge:b)()}),p()},10),setTimeout(()=>{x().then(()=>b())},100),fe(),p(),s("visible-change",{visible:!0},null))},g=e=>{var{filterable:t,remote:l}=k,a=ee.value,i=r.value;l?i.clearOnClose&&(A.searchValue=""):t&&!a.clearOnClose||(A.searchValue=""),A.searchLoading=!1,A.visiblePanel=!1,M.hpTimeout=setTimeout(()=>{A.isAniVisible=!1},350),s("visible-change",{visible:!1},e||null)},u=(e,t,l)=>{re(t),t!==k.modelValue&&(s("change",{value:t,option:l},e),i)&&T&&i.triggerItemEvent(e,T.itemConfig.field,t)},_=(e,t)=>{M.remoteValMaps={},u(e,t,null),s("clear",{value:t},e)},_e=e=>{e=e.$event;_(e,null),g(e)},he=e=>{var e=e.$event,{multiple:t,max:l,checkedClosable:a}=k,i=A.optList,o=N.value;if(t){var n=F.value.slice(0);for(let e=0;e<i.length;e++){let t=i[e][o];if(ce(n)){_ui.VxeUI&&_ui.VxeUI.modal.message({content:(0,_ui.getI18n)("vxe.select.overSizeErr",[l]),status:"warning"});break}n.some(e=>e===t)||n.push(t)}u(e,n,i[0]),a&&g(e),s("all-change",{value:n},e)}},me=e=>{var t=k.clearClosable,e=e.$event;_(e,null),t&&g(e)},be=e=>{e=e.$event;g(e)},Y=(t,l)=>{var e=k.multiple,a=M.remoteValMaps;let i=l[N.value];var o=a[i];if(A.visiblePanel){if(o?o.item=l:a[i]={key:z(l),item:l,_index:-1},e){let e=[];o=F.value,a=_xeUtils.default.findIndexOf(o,e=>e===i);e=-1===a?o.concat([i]):o.filter(e=>e!==i),u(t,e,l)}else u(t,i,l),g(t);A.reactFlag++}},xe=e=>{var t=A.visiblePanel;U.value||t&&(t=B.value,(0,_dom.getEventTargetNode)(e,t).flag?p():g(e))},Ce=e=>{var t,l=A.visiblePanel,a=U.value,i=j.value.trigger;a||(a=V.value,t=B.value,A.isActivated=(0,_dom.getEventTargetNode)(e,a).flag||(0,_dom.getEventTargetNode)(e,t).flag,l&&!A.isActivated&&"manual"!==i&&g(e))},h=e=>{var t=e.disabled,e=z(e);return!t&&!qe(e)},Ee=(e,t)=>{var l=k.allowCreate,a=A.optList,{optFullValMaps:i,optAddMaps:o,afterVisibleList:n}=M,u=N.value;let r=n,s=0;if(l&&a.length&&(n=a[0],o[l=z(n)])&&(s=1,r=[o[l]].concat(r)),!e)if(t)for(let e=0;e<r.length;e++){var c=r[e];if(h(c))return c}else for(let e=r.length-1;0<=e;e--){var v=r[e];if(h(v))return v}let d=0;a=e?i[e[u]]:null;if(-1<(d=a?a._index+s:d))if(t)for(let e=d+1;e<=r.length-1;e++){var p=r[e];if(h(p))return p}else if(0<d)for(let e=d-1;0<=e;e--){var f=r[e];if(h(f))return f}return null},Te=t=>{var e=k.clearable,{visiblePanel:l,currentOption:a}=A,i=U.value,o=j.value.trigger;if(!i){var i=_ui.globalEvents.hasKey(t,_ui.GLOBAL_EVENT_KEYS.TAB),n=_ui.globalEvents.hasKey(t,_ui.GLOBAL_EVENT_KEYS.ENTER),u=_ui.globalEvents.hasKey(t,_ui.GLOBAL_EVENT_KEYS.ESCAPE),r=_ui.globalEvents.hasKey(t,_ui.GLOBAL_EVENT_KEYS.ARROW_UP),s=_ui.globalEvents.hasKey(t,_ui.GLOBAL_EVENT_KEYS.ARROW_DOWN),c=_ui.globalEvents.hasKey(t,_ui.GLOBAL_EVENT_KEYS.DELETE);if(i&&(A.isActivated=!1),l){if(u||i)"manual"!==o&&g(t);else if(n)a&&(t.preventDefault(),t.stopPropagation(),Y(t,a));else if(r||s){t.preventDefault();let e=Ee(a,s);(e=e||Ee(null,s))&&(pe(e),Fe(e,s))}}else(r||s||n)&&A.isActivated&&(t.preventDefault(),f());A.isActivated&&c&&e&&_(t,null)}},ye=e=>{var{visiblePanel:t,isActivated:l}=A,a=j.value.trigger;t&&"manual"!==a&&g(e),l&&(A.isActivated=!1),(t||l)&&(a=L.value)&&a.blur()},Oe=()=>{var e=A.visiblePanel;e&&p()},Se=()=>{k.filterable&&(0,_vue.nextTick)(()=>{var e=K.value;e&&e.focus()})},Ie=e=>{var t=U.value,l=j.value.trigger;t||A.visiblePanel||l&&"default"!==l||(A.triggerFocusPanel=!0,f(),setTimeout(()=>{A.triggerFocusPanel=!1},500)),s("focus",{},e)},Ve=e=>{var t=j.value.trigger;t&&"default"!==t||Me(e),s("click",{triggerButton:!1,visible:A.visiblePanel},e)},Le=e=>{A.isActivated=!1,s("blur",{},e)},ke=e=>{var t=j.value.trigger;t&&"default"!==t&&"icon"!==t||Me(e),s("click",{triggerButton:!0,visible:A.visiblePanel},e)},we=e=>{A.searchValue=e},Pe=()=>{A.isActivated=!0},Be=()=>{var{modelValue:e,remote:t}=k,l=A.searchValue,a=r.value,i=a.queryMethod||k.remoteMethod;t&&i&&a.enabled?(A.searchLoading=!0,Promise.resolve(i({$select:D,searchValue:l,value:e})).then(()=>(0,_vue.nextTick)()).catch(()=>(0,_vue.nextTick)()).finally(()=>{A.searchLoading=!1,d(),m()})):(d(),m())},Ae=_xeUtils.default.debounce(Be,350,{trailing:!0}),Me=e=>{e=e.$event;e.preventDefault(),A.triggerFocusPanel?A.triggerFocusPanel=!1:A.visiblePanel?g(e):f()},De=(e,t)=>!!t.disabled||!(!J.value||e),Ue=()=>{var e=A.scrollYLoad,{scrollYStore:t,afterVisibleList:l}=M;A.bodyHeight=e?l.length*t.rowHeight:0,A.topSpaceHeight=e?Math.max(t.startIndex*t.rowHeight,0):0},Ne=()=>{var{filterable:e,allowCreate:t}=k;let{scrollYLoad:l,searchValue:a}=A;var{optAddMaps:i,scrollYStore:o,afterVisibleList:n}=M;let u=v.value;var r=N.value,o=l?n.slice(o.startIndex,o.endIndex):n.slice(0);return e&&t&&a&&(o.some(e=>e[u]===a)||(n=i[a]||(0,_vue.reactive)({[c()]:a,[u]:a,[r]:a}),i[a]=n,o.unshift(n))),A.optList=o,(0,_vue.nextTick)()},m=()=>{Ne(),Ue()},je=()=>(0,_vue.nextTick)().then(()=>{var e=A.scrollYLoad,t=M.scrollYStore,l=q.value,a=Q.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=P.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):Ue)()}),Fe=(e,t)=>{var l,a,{optFullValMaps:i,scrollYStore:o}=M,i=i[e[N.value]];i&&(e=i.key,-1<(i=i._index))&&(l=P.value,a=B.value)&&(a=a.querySelector(`[optid='${e}']`),l)&&(a?(e=l.offsetHeight,t?Math.ceil(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)):l.scrollTop=t?i*o.rowHeight-l.clientHeight+o.rowHeight:i*o.rowHeight)},He=(e,t)=>{var l=P.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)()},b=()=>{let{lastScrollLeft:e,lastScrollTop:t}=M;return o().then(()=>{if(e||t)return M.lastScrollLeft=0,M.lastScrollTop=0,He(e,t)})},x=()=>{var e=V.value;return e&&e.clientWidth&&e.clientHeight?je():Promise.resolve()},ze=e=>{var t=M.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())},Ye=()=>{var e=M.lastScrollTime;return!!(e&&Date.now()<e+250)},Ke=e=>{var t=e.target,l=t.scrollTop,t=t.scrollLeft,a=t!==M.lastScrollLeft,i=l!==M.lastScrollTop;M.lastScrollTop=l,M.lastScrollLeft=t,A.scrollYLoad&&ze(e),M.lastScrollTime=Date.now(),s("scroll",{scrollLeft:t,scrollTop:l,isX:a,isY:i},e)},l=t=>{(e=>{let t=Z.value,l=N.value,a=c(),i={},o={},n=[],u=e=>{n.push(e);let t=z(e);t||(t=getOptUniqueId(),e[a]=t),o[e[l]]={key:t,item:e,_index:-1}};e.forEach(e=>{u(e),e[t]&&(i[e[a]]=e)[t].forEach(u)}),M.fullData=n,M.optGroupKeyMaps=i,M.optFullValMaps=o,A.reactFlag++,d()})(t||[]);var e=k.multiple,{isLoaded:l,fullData:a,scrollYStore:i}=M,o=O.value,n=Q.value;let u=N.value;if(Object.assign(i,{startIndex:0,endIndex:1,visibleSize:0}),M.synchData=t||[],A.scrollYLoad=!!n.enabled&&-1<n.gt&&(0===n.gt||n.gt<=a.length),Ne(),!l){i=o.selectMode;if(0<t.length&&_xeUtils.default.eqNull(k.modelValue)){if("all"===i)e?(0,_vue.nextTick)(()=>{se(t.map(e=>e[u]))}):(0,_log.errLog)("vxe.error.notConflictProp",["default-config.selectMode=all","multiple=true"]);else if("first"===i||"last"===i){let e=_xeUtils.default[i](t);e&&(0,_vue.nextTick)(()=>{_xeUtils.default.eqNull(k.modelValue)&&se(e[u])})}M.isLoaded=!0}}return je().then(()=>{b()})},o=()=>{var e=P.value;return e&&(e.scrollTop=0,e.scrollLeft=0),M.lastScrollTop=0,(M.lastScrollLeft=0,_vue.nextTick)()},qe=e=>{var t=M.optGroupKeyMaps;return!!t[e]};t={dispatchEvent:s,loadData:l,reloadData(e){return M.isLoaded=!1,o(),l(e)},isPanelVisible(){return A.visiblePanel},togglePanel(){return(A.visiblePanel?g:f)(),(0,_vue.nextTick)()},hidePanel(){return A.visiblePanel&&g(),(0,_vue.nextTick)()},showPanel(){return A.visiblePanel||f(),(0,_vue.nextTick)()},refreshOption(){return d(),m(),(0,_vue.nextTick)()},focus(){var e=L.value;return e&&e.blur(),A.isActivated=!0,(0,_vue.nextTick)()},blur(){var e=L.value;return e&&e.blur(),(A.isActivated=!1,_vue.nextTick)()},recalculate:x,clearScroll:o};Object.assign(D,t);let Re=(t,l,e,a)=>{var{showIcon:i,trigger:o}=le.value;return l||!1===i?(0,_ui.renderEmptyElement)(D):(i={},o&&"default"!==o||(i.onClick=e=>{a||l||Y(e,t)}),(0,_vue.h)("div",Object.assign({key:2,class:["vxe-select-option--radio",{"is--checked":e,"is--disabled":a}]},i),[(0,_vue.h)("span",{class:["vxe-radio--icon",e?(0,_ui.getIcon)().RADIO_CHECKED:(0,_ui.getIcon)().RADIO_UNCHECKED]})]))},$e=(t,l,e,a)=>{var{showIcon:i,trigger:o}=ae.value;return l||!1===i?(0,_ui.renderEmptyElement)(D):(i={},o&&"default"!==o||(i.onClick=e=>{a||l||Y(e,t)}),(0,_vue.h)("div",Object.assign({key:3,class:["vxe-select-option--checkbox",{"is--checked":e,"is--disabled":a}]},i),[(0,_vue.h)("span",{class:["vxe-checkbox--icon",e?(0,_ui.getIcon)().CHECKBOX_CHECKED:(0,_ui.getIcon)().CHECKBOX_UNCHECKED]})]))},Ge=e=>{let{allowCreate:g,optionKey:_,multiple:t,showRadio:l,showCheckbox:a}=k,h=A.currentOption,m=M.optAddMaps;var i=te.value;let b=v.value,x=N.value,C=X.value,E=F.value,T=le.value,y=ae.value,{useKey:O,height:S}=i,I=w.option,V=a&&t,L=l&&!t;return e.map((t,e)=>{var{slots:l,className:a}=t,i=z(t),o=t[x];let n=qe(i);var u=!(!g||!m[i]),r=!u&&-1<E.indexOf(o),s=u||!n||isOptionVisible(t);let c=!u&&De(r,t);var l=(l?l.default:null)||I,v={option:t,group:n?t:null,$select:D};let d="";var p=[];V?p.push($e(t,n,r,c)):L&&p.push(Re(t,n,r,c));let f=[];f=l?H(l,v):[d=(0,_utils.getFuncText)(t[n?C:b]||o)],p.push((0,_vue.h)("div",{key:1,class:"vxe-select-option--label"},f));l={onMousedown:e=>{0===e.button&&e.stopPropagation()},onMouseenter:()=>{c||n||Ye()||pe(t)}};return(V?"option"!==y.trigger:L&&"option"!==T.trigger)||(l.onClick=e=>{c||n||Y(e,t)}),s?(0,_vue.h)("div",Object.assign({key:O||_?i:e,class:["vxe-select-option",a?_xeUtils.default.isFunction(a)?a(v):a:"",{"vxe-select-optgroup":n,"is--disabled":c,"is--selected":r,"is--add":u,"is--hover":h&&z(h)===i}],optid:i,title:d||null,style:S?{height:(0,_dom.toCssUnit)(S)}:void 0},l),g?[(0,_vue.h)("div",{key:1,class:"vxe-select-option--add-label"},p),u?(0,_vue.h)("div",{key:2,class:"vxe-select-option--add-icon"},[(0,_vue.h)("i",{class:(0,_ui.getIcon)().SELECT_ADD_OPTION})]):(0,_ui.renderEmptyElement)(D)]:p):(0,_ui.renderEmptyElement)(D)})};return(0,_vue.watch)(()=>A.staticOptions,e=>{l(e)}),(0,_vue.watch)(()=>k.options,e=>{l(e||[])}),(0,_vue.watch)(()=>k.optionGroups,e=>{l(e||[])}),(0,_vue.onMounted)(()=>{(0,_vue.nextTick)(()=>{var{options:e,optionGroups:t}=k;t?l(t):e&&l(e)}),_ui.globalEvents.on(D,"mousewheel",xe),_ui.globalEvents.on(D,"mousedown",Ce),_ui.globalEvents.on(D,"keydown",Te),_ui.globalEvents.on(D,"blur",ye),_ui.globalEvents.on(D,"resize",Oe)}),(0,_vue.onUnmounted)(()=>{_ui.globalEvents.off(D,"mousewheel"),_ui.globalEvents.off(D,"mousedown"),_ui.globalEvents.off(D,"keydown"),_ui.globalEvents.off(D,"blur"),_ui.globalEvents.off(D,"resize"),_xeUtils.default.assign(M,createInternalData())}),(0,_vue.provide)("$xeSelect",D),D.renderVN=()=>{var{className:e,multiple:t,loading:l,filterable:a,showTotalButoon:i,showCheckedButoon:o,showClearButton:n,showCloseButton:u}=k,{initialized:r,isActivated:s,isAniVisible:c,optList:v,visiblePanel:d,bodyHeight:p,topSpaceHeight:f}=A,g=R.value,_=U.value,h=ue.value,m=ne.value,b=G.value,x=$.value,C=W.value,E=oe.value,T=j.value,y=w.default,O=w.header,S=w.footer;let I=w.prefix;T=T.className||k.popupClassName;return x?(0,_vue.h)("div",{ref:V,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:m},h)]):(x=F.value,(0,_vue.h)("div",{ref:V,class:["vxe-select",e?_xeUtils.default.isFunction(e)?e({$select:D}):e:"",{["size--"+g]:g,"is--visible":d,"is--disabled":_,"is--filter":a,"is--loading":l,"is--active":s}]},[(0,_vue.h)("div",{class:"vxe-select-slots",ref:"hideOption"},y?y({}):[]),(0,_vue.h)(_input.default,{ref:L,clearable:k.clearable,placeholder:C,editable:!1,disabled:_,type:"text",prefixIcon:k.prefixIcon,suffixIcon:l?(0,_ui.getIcon)().SELECT_LOADED:d?(0,_ui.getIcon)().SELECT_OPEN:(0,_ui.getIcon)().SELECT_CLOSE,autoFocus:!1,title:m,modelValue:h,onClear:_e,onClick:Ve,onFocus:Ie,onBlur:Le,onSuffixClick:ke},I?{prefix:()=>I({})}:{}),(0,_vue.h)(_vue.Teleport,{to:"body",disabled:!b||!r},[(0,_vue.h)("div",{ref:B,class:["vxe-table--ignore-clear vxe-select--panel",T?_xeUtils.default.isFunction(T)?T({$select:D}):T:"",{["size--"+g]:g,"is--transfer":b,"ani--leave":!l&&c,"ani--enter":!l&&d}],placement:A.panelPlacement,style:A.panelStyle},r&&(d||c)?[(0,_vue.h)("div",{class:"vxe-select--panel-wrapper",style:E},[a?(0,_vue.h)("div",{class:"vxe-select--panel-search"},[(0,_vue.h)(_input.default,{ref:K,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":we,onFocus:Pe,onChange:Ae,onSearch:Ae})]):(0,_ui.renderEmptyElement)(D),o&&t||n||O?(0,_vue.h)("div",{class:"vxe-select--panel-header"},O?H(O,{}):[(0,_vue.h)("div",{class:"vxe-select--header-button"},[(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:he}):(0,_ui.renderEmptyElement)(D),n?(0,_vue.h)(_button.default,{content:(0,_ui.getI18n)("vxe.select.clear"),mode:"text",onClick:me}):(0,_ui.renderEmptyElement)(D)])])]):(0,_ui.renderEmptyElement)(D),(0,_vue.h)("div",{class:"vxe-select--panel-body"},[(0,_vue.h)("div",{ref:P,class:"vxe-select-option--wrapper",onScroll:Ke},[(0,_vue.h)("div",{class:"vxe-select--y-space",style:{height:p?p+"px":""}}),(0,_vue.h)("div",{ref:q,class:"vxe-select--body",style:{marginTop:f+"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?Ge(e):[(0,_vue.h)("div",{class:"vxe-select--empty-placeholder"},k.emptyText||(0,_ui.getI18n)("vxe.select.emptyText"))]})())])]),S||i||u&&t?(0,_vue.h)("div",{class:"vxe-select--panel-footer"},S?H(S,{}):[(0,_vue.h)("div",{class:"vxe-select--footer-button"},[i?(0,_vue.h)("div",{class:"vxe-select--total-btns"},(0,_ui.getI18n)("vxe.select.total",[x.length,v.length])):(0,_ui.renderEmptyElement)(D),u&&t?(0,_vue.h)("div",{class:"vxe-select--oper-btns"},[(0,_vue.h)(_button.default,{content:(0,_ui.getI18n)("vxe.select.close"),mode:"text",onClick:be})]):(0,_ui.renderEmptyElement)(D)])]):(0,_ui.renderEmptyElement)(D)])]:[])])]))},D},render(){return this.renderVN()}});