vxe-pc-ui 4.4.1 → 4.4.3
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/color-picker/src/color-picker.js +2 -2
- package/es/date-picker/src/date-picker.js +1 -1
- package/es/form/src/form.js +1 -1
- package/es/icon/style.css +1 -1
- package/es/icon-picker/src/icon-picker.js +1 -1
- package/es/input/src/input.js +4 -4
- package/es/number-input/src/number-input.js +3 -3
- package/es/pulldown/src/pulldown.js +1 -1
- package/es/select/src/select.js +67 -19
- package/es/select/style.css +17 -0
- package/es/select/style.min.css +1 -1
- package/es/style.css +1 -1
- package/es/style.min.css +1 -1
- package/es/table-select/src/table-select.js +1 -1
- package/es/tree-select/src/tree-select.js +1 -1
- package/es/ui/index.js +2 -1
- package/es/ui/src/log.js +1 -1
- package/es/vxe-select/style.css +17 -0
- package/es/vxe-select/style.min.css +1 -1
- package/lib/color-picker/src/color-picker.js +2 -2
- package/lib/color-picker/src/color-picker.min.js +1 -1
- package/lib/date-picker/src/date-picker.js +1 -1
- package/lib/date-picker/src/date-picker.min.js +1 -1
- package/lib/form/src/form.js +1 -1
- package/lib/form/src/form.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 +1 -1
- package/lib/icon-picker/src/icon-picker.min.js +1 -1
- package/lib/index.umd.js +88 -31
- package/lib/index.umd.min.js +1 -1
- package/lib/input/src/input.js +4 -4
- package/lib/input/src/input.min.js +1 -1
- package/lib/number-input/src/number-input.js +3 -3
- package/lib/number-input/src/number-input.min.js +1 -1
- package/lib/pulldown/src/pulldown.js +1 -1
- package/lib/pulldown/src/pulldown.min.js +1 -1
- package/lib/select/src/select.js +70 -14
- package/lib/select/src/select.min.js +1 -1
- package/lib/select/style/style.css +17 -0
- package/lib/select/style/style.min.css +1 -1
- package/lib/style.css +1 -1
- package/lib/style.min.css +1 -1
- package/lib/table-select/src/table-select.js +1 -1
- package/lib/table-select/src/table-select.min.js +1 -1
- package/lib/tree-select/src/tree-select.js +1 -1
- package/lib/tree-select/src/tree-select.min.js +1 -1
- package/lib/ui/index.js +2 -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/lib/vxe-select/style/style.css +17 -0
- package/lib/vxe-select/style/style.min.css +1 -1
- package/package.json +1 -1
- package/packages/color-picker/src/color-picker.ts +3 -3
- package/packages/date-picker/src/date-picker.ts +1 -1
- package/packages/form/src/form.ts +1 -1
- package/packages/icon-picker/src/icon-picker.ts +1 -1
- package/packages/input/src/input.ts +4 -4
- package/packages/number-input/src/number-input.ts +3 -3
- package/packages/pulldown/src/pulldown.ts +1 -1
- package/packages/select/src/select.ts +68 -19
- package/packages/table-select/src/table-select.ts +1 -1
- package/packages/tree-select/src/tree-select.ts +1 -1
- package/packages/ui/index.ts +1 -0
- package/styles/components/select.scss +19 -0
- package/types/components/select.d.ts +15 -2
- package/types/ui/global-icon.d.ts +1 -0
- /package/es/icon/{iconfont.1741079794679.ttf → iconfont.1741230076540.ttf} +0 -0
- /package/es/icon/{iconfont.1741079794679.woff → iconfont.1741230076540.woff} +0 -0
- /package/es/icon/{iconfont.1741079794679.woff2 → iconfont.1741230076540.woff2} +0 -0
- /package/es/{iconfont.1741079794679.ttf → iconfont.1741230076540.ttf} +0 -0
- /package/es/{iconfont.1741079794679.woff → iconfont.1741230076540.woff} +0 -0
- /package/es/{iconfont.1741079794679.woff2 → iconfont.1741230076540.woff2} +0 -0
- /package/lib/icon/style/{iconfont.1741079794679.ttf → iconfont.1741230076540.ttf} +0 -0
- /package/lib/icon/style/{iconfont.1741079794679.woff → iconfont.1741230076540.woff} +0 -0
- /package/lib/icon/style/{iconfont.1741079794679.woff2 → iconfont.1741230076540.woff2} +0 -0
- /package/lib/{iconfont.1741079794679.ttf → iconfont.1741230076540.ttf} +0 -0
- /package/lib/{iconfont.1741079794679.woff → iconfont.1741230076540.woff} +0 -0
- /package/lib/{iconfont.1741079794679.woff2 → iconfont.1741230076540.woff2} +0 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=void 0;var _vue=require("vue"),_xeUtils=_interopRequireDefault(require("xe-utils")),_ui=require("../../ui"),_dom=require("../../ui/src/dom"),_utils=require("../../ui/src/utils"),_vn=require("../../ui/src/vn"),_input=_interopRequireDefault(require("../../input/src/input"));function _interopRequireDefault(e){return e&&e.__esModule?e:{default:e}}function isOptionVisible(e){return!1!==e.visible}function getOptUniqueId(){return _xeUtils.default.uniqueId("opt_")}var _default=exports.default=(0,_vue.defineComponent)({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,placement:String,options:Array,optionProps:Object,optionGroups:Array,optionGroupProps:Object,optionConfig:Object,className:[String,Function],popupClassName:[String,Function],max:{type:[String,Number],default:null},size:{type:String,default:()=>(0,_ui.getConfig)().select.size||(0,_ui.getConfig)().size},filterable:Boolean,filterMethod:Function,remote:Boolean,remoteMethod:Function,emptyText:String,transfer:{type:Boolean,default:null},scrollY:Object,optionId:{type:String,default:()=>(0,_ui.getConfig)().select.optionId},optionKey:Boolean},emits:["update:modelValue","change","clear","blur","focus","click","scroll"],setup(E,e){const{slots:b,emit:i}=e,x=(0,_vue.inject)("$xeModal",null),m=(0,_vue.inject)("$xeDrawer",null),D=(0,_vue.inject)("$xeTable",null),l=(0,_vue.inject)("$xeForm",null),a=(0,_vue.inject)("xeFormItemInfo",null);var t=_xeUtils.default.uniqueId();const T=(0,_vue.ref)(),S=(0,_vue.ref)(),y=(0,_vue.ref)(),V=(0,_vue.ref)(),L=(0,_vue.ref)(),I=(0,_vue.ref)(),Y=(0,_ui.useSize)(E)["computeSize"],O=(0,_vue.reactive)({initialized:!1,scrollYLoad:!1,bodyHeight:0,topSpaceHeight:0,optList:[],afterVisibleList:[],staticOptions:[],reactFlag:0,currentOption:null,searchValue:"",searchLoading:!1,panelIndex:0,panelStyle:{},panelPlacement:null,triggerFocusPanel:!1,visiblePanel:!1,isAniVisible:!1,isActivated:!1}),P={synchData:[],fullData:[],optGroupKeyMaps:{},optFullValMaps:{},remoteValMaps:{},lastScrollLeft:0,lastScrollTop:0,scrollYStore:{startIndex:0,endIndex:0,visibleSize:0,offsetSize:0,rowHeight:0},lastScrollTime:0,hpTimeout:void 0},H={refElem:T},A={xID:t,props:E,context:e,reactData:O,internalData:P,getRefMaps:()=>H},q=(0,_vue.computed)(()=>{var e=E["readonly"];return null===e?!!l&&l.props.readonly:e}),C=(0,_vue.computed)(()=>{var e=E["disabled"];return null===e?!!l&&l.props.disabled:e}),N=(0,_vue.computed)(()=>{var e=E["transfer"];if(null===e){var t=(0,_ui.getConfig)().select.transfer;if(_xeUtils.default.isBoolean(t))return t;if(D||x||m||l)return!0}return e}),B=(0,_vue.computed)(()=>{var e=E["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({},E.defaultConfig)),o=(0,_vue.computed)(()=>Object.assign({},E.optionProps)),s=(0,_vue.computed)(()=>Object.assign({},E.optionGroupProps)),u=(0,_vue.computed)(()=>{return o.value.label||"label"}),U=(0,_vue.computed)(()=>{return o.value.value||"value"}),j=(0,_vue.computed)(()=>{return s.value.label||"label"}),z=(0,_vue.computed)(()=>{return s.value.options||"options"}),G=(0,_vue.computed)(()=>{var{modelValue:e,multiple:t,max:l}=E;return!(!t||!l)&&(_xeUtils.default.isArray(e)?e.length:_xeUtils.default.eqNull(e)?0:1)>=_xeUtils.default.toNumber(l)}),_=(0,_vue.computed)(()=>Object.assign({},(0,_ui.getConfig)().select.scrollY,E.scrollY)),r=(0,_vue.computed)(()=>Object.assign({},(0,_ui.getConfig)().select.optionConfig,E.optionConfig)),R=(0,_vue.computed)(()=>_xeUtils.default.toNumber(E.multiCharOverflow)),$=(0,_vue.computed)(()=>{const{modelValue:e,remote:t,multiple:l}=E,i=R.value;var a;return _xeUtils.default.eqNull(e)?"":(a=_xeUtils.default.isArray(e)?e:[e],(t?a.map(e=>J(e)):a.map(e=>{e=Q(e);return l&&0<i&&e.length>i?e.substring(0,i)+"...":e})).join(", "))}),W=(e,t)=>e&&(_xeUtils.default.isString(e)&&(e=b[e]||null),_xeUtils.default.isFunction(e))?(0,_vn.getSlotVNs)(e(t)):[],n=(e,t,l)=>{i(e,(0,_ui.createEvent)(l,{$select:A},t))},X=e=>{i("update:modelValue",e)},Z=()=>{return r.value.keyField||E.optionId||"_X_OPTION_KEY"},M=e=>{e=e[Z()];return e?encodeURIComponent(e):""},J=e=>{var t=P["remoteValMaps"],l=u.value,t=t[e],t=t?t.item:null;return _xeUtils.default.toValueString(t?t[l]:e)},Q=e=>{var t=P["optFullValMaps"],l=u.value,t=O.reactFlag?t[e]:null;return t?t.item[l]:_xeUtils.default.toValueString(e)},g=()=>{const{filterable:e,filterMethod:t}=E;var l=O["searchValue"];const{fullData:i,optFullValMaps:a}=P,o=u.value,s=U.value,r=(""+(l||"")).toLowerCase();let n=[];return(n=e&&t?i.filter(e=>isOptionVisible(e)&&t({group:null,option:e,searchValue:r})):e?i.filter(e=>isOptionVisible(e)&&(!r||-1<(""+e[o]).toLowerCase().indexOf(r))):i.filter(isOptionVisible)).forEach((e,t)=>{e=a[e[s]];e&&(e._index=t)}),O.afterVisibleList=n,(0,_vue.nextTick)()},ee=e=>{e&&(O.currentOption=e)},te=()=>(0,_vue.nextTick)().then(()=>{var i=E["placement"],a=O["panelIndex"],o=T.value,s=L.value,e=N.value;if(s&&o){var r=o.offsetHeight,n=o.offsetWidth,u=s.offsetHeight,s=s.offsetWidth,a={zIndex:a},{boundingTop:o,boundingLeft:c,visibleHeight:v,visibleWidth:d}=(0,_dom.getAbsolutePos)(o);let l="bottom";if(e){let e=c,t=o+r;"top"===i?(l="top",t=o-u):i||(t+u+5>v&&(l="top",t=o-u),t<5&&(l="bottom",t=o+r)),e+s+5>d&&(e-=e+s+5-d),e<5&&(e=5),Object.assign(a,{left:e+"px",top:t+"px",minWidth:n+"px"})}else"top"===i?(l="top",a.bottom=r+"px"):i||v<o+r+u&&5<o-r-u&&(l="top",a.bottom=r+"px");return O.panelStyle=a,O.panelPlacement=l,(0,_vue.nextTick)()}}),w=()=>{var{loading:e,filterable:t}=E,l=P["hpTimeout"],i=C.value;e||i||(l&&(clearTimeout(l),P.hpTimeout=void 0),O.initialized||(O.initialized=!0),O.isActivated=!0,O.isAniVisible=!0,t&&(g(),v()),setTimeout(()=>{O.visiblePanel=!0,E.filterable&&(0,_vue.nextTick)(()=>{var e=y.value;e&&e.focus()});d().then(()=>h())},10),setTimeout(()=>{d().then(()=>h())},100),O.panelIndex<(0,_utils.getLastZIndex)()&&(O.panelIndex=(0,_utils.nextZIndex)()),te())},k=()=>{O.searchValue="",O.searchLoading=!1,O.visiblePanel=!1,P.hpTimeout=window.setTimeout(()=>{O.isAniVisible=!1},350)},c=(e,t)=>{X(t),t!==E.modelValue&&(n("change",{value:t},e),l)&&a&&l.triggerItemEvent(e,a.itemConfig.field,t)},le=(e,t)=>{P.remoteValMaps={},c(e,t),n("clear",{value:t},e)},ie=(e,t)=>{le(t,null),k()},ae=(t,e)=>{var{modelValue:l,multiple:i}=E,a=P["remoteValMaps"];const o=e[U.value];var s=a[o];if(s?s.item=e:a[o]={key:M(e),item:e,_index:-1},i){let e=[];s=_xeUtils.default.eqNull(l)?[]:_xeUtils.default.isArray(l)?l:[l],a=_xeUtils.default.findIndexOf(s,e=>e===o);e=-1===a?s.concat([o]):s.filter(e=>e!==o),c(t,e)}else c(t,o),k();O.reactFlag++},oe=e=>{var t=O["visiblePanel"];C.value||t&&(t=L.value,((0,_dom.getEventTargetNode)(e,t).flag?te:k)())},se=e=>{var t,l,i=O["visiblePanel"];C.value||(t=T.value,l=L.value,O.isActivated=(0,_dom.getEventTargetNode)(e,t).flag||(0,_dom.getEventTargetNode)(e,l).flag,i&&!O.isActivated&&k())},F=e=>{var t=e.disabled,e=M(e);return!t&&!Se(e)},re=e=>{var t=E["clearable"],{visiblePanel:l,currentOption:i}=O;if(!C.value){var a=_ui.globalEvents.hasKey(e,_ui.GLOBAL_EVENT_KEYS.TAB),o=_ui.globalEvents.hasKey(e,_ui.GLOBAL_EVENT_KEYS.ENTER),s=_ui.globalEvents.hasKey(e,_ui.GLOBAL_EVENT_KEYS.ESCAPE),r=_ui.globalEvents.hasKey(e,_ui.GLOBAL_EVENT_KEYS.ARROW_UP),n=_ui.globalEvents.hasKey(e,_ui.GLOBAL_EVENT_KEYS.ARROW_DOWN),u=_ui.globalEvents.hasKey(e,_ui.GLOBAL_EVENT_KEYS.DELETE),c=_ui.globalEvents.hasKey(e,_ui.GLOBAL_EVENT_KEYS.SPACEBAR);if(a&&(O.isActivated=!1),l)if(s||a)k();else if(o)e.preventDefault(),e.stopPropagation(),ae(e,i);else if(r||n){e.preventDefault();l=((t,e)=>{var l=O["afterVisibleList"],i=P["optFullValMaps"],a=U.value;if(!t)for(let e=0;e<l.length-1;e++){var o=l[e];if(F(o))return o}i=i[t[a]];if(i){t=i._index;if(-1<t)if(e)for(let e=t+1;e<=l.length-1;e++){var s=l[e];if(F(s))return s}else if(0<t)for(let e=t-1;0<=e;e--){var r=l[e];if(F(r))return r}}return null})(i,n);if(l){ee(l);{s=l;a=n;const v=O["scrollYLoad"],{optFullValMaps:d,scrollYStore:p}=P,f=U.value,_=d[s[f]];if(_){const g=_.key;const h=_._index;if(h>-1){const x=V.value;const m=L.value;const b=m.querySelector(`[optid='${g}']`);if(x)if(b){const T=x.offsetHeight;const S=1;if(a){if(b.offsetTop+b.offsetHeight-x.scrollTop>T)x.scrollTop=b.offsetTop+b.offsetHeight-T}else if(b.offsetTop+S<x.scrollTop||b.offsetTop+S>x.scrollTop+x.clientHeight)x.scrollTop=b.offsetTop-S}else if(v)if(a)x.scrollTop=h*p.rowHeight-x.clientHeight+p.rowHeight;else x.scrollTop=h*p.rowHeight}}}}}else c&&e.preventDefault();else(r||n||o||c)&&O.isActivated&&(e.preventDefault(),w());O.isActivated&&u&&t&&le(e,null)}},ne=()=>{k()},ue=e=>{C.value||O.visiblePanel||(O.triggerFocusPanel=!0,w(),setTimeout(()=>{O.triggerFocusPanel=!1},150)),n("focus",{},e)},ce=e=>{_e(e),n("click",{},e)},ve=e=>{O.isActivated=!1,n("blur",{},e)},de=e=>{O.searchValue=e},pe=()=>{O.isActivated=!0};const fe=_xeUtils.default.debounce(()=>{var{remote:e,remoteMethod:t}=E,l=O["searchValue"];e&&t?(O.searchLoading=!0,Promise.resolve(t({searchValue:l})).then(()=>(0,_vue.nextTick)()).catch(()=>(0,_vue.nextTick)()).finally(()=>{O.searchLoading=!1,g(),v()})):(g(),v())},350,{trailing:!0}),_e=e=>{e=e.$event;e.preventDefault(),O.triggerFocusPanel?O.triggerFocusPanel=!1:(O.visiblePanel?k:w)()},ge=()=>{var{scrollYLoad:e,afterVisibleList:t}=O,l=P["scrollYStore"];O.bodyHeight=e?t.length*l.rowHeight:0,O.topSpaceHeight=e?Math.max(l.startIndex*l.rowHeight,0):0},he=()=>{var{scrollYLoad:e,afterVisibleList:t}=O,l=P["scrollYStore"];return O.optList=e?t.slice(l.startIndex,l.endIndex):t.slice(0),(0,_vue.nextTick)()},v=()=>{he(),ge()},xe=()=>(0,_vue.nextTick)().then(()=>{var e=O["scrollYLoad"],t=P["scrollYStore"],l=I.value,i=_.value;let a=0,o;(o=l?(o=i.sItem?l.querySelector(i.sItem):o)||l.children[0]:o)&&(a=o.offsetHeight),a=Math.max(20,a),t.rowHeight=a,(e?(l=V.value,e=Math.max(8,l?Math.ceil(l.clientHeight/a):0),l=Math.max(0,Math.min(2,_xeUtils.default.toNumber(i.oSize))),t.offsetSize=l,t.visibleSize=e,t.endIndex=Math.max(t.startIndex,e+l,t.endIndex),v):ge)()}),me=(e,t)=>{var l=V.value;return l&&(_xeUtils.default.isNumber(e)&&(l.scrollLeft=e),_xeUtils.default.isNumber(t))&&(l.scrollTop=t),O.scrollYLoad?new Promise(e=>{setTimeout(()=>{(0,_vue.nextTick)(()=>{e()})},50)}):(0,_vue.nextTick)()},h=()=>{const{lastScrollLeft:e,lastScrollTop:t}=P;return f().then(()=>{if(e||t)return P.lastScrollLeft=0,P.lastScrollTop=0,me(e,t)})},d=()=>{var e=T.value;return e&&e.clientWidth&&e.clientHeight?xe():Promise.resolve()},be=e=>{var t=P["scrollYStore"],{startIndex:l,endIndex:i,visibleSize:a,offsetSize:o,rowHeight:s}=t,e=e.target.scrollTop,e=Math.floor(e/s),s=Math.max(0,e-1-o),o=e+a+o;!(e<=l||i-a-1<=e)||l===s&&i===o||(t.startIndex=s,t.endIndex=o,v())},Te=e=>{var t=e.target,l=t.scrollTop,t=t.scrollLeft,i=t!==P.lastScrollLeft,a=l!==P.lastScrollTop;P.lastScrollTop=l,P.lastScrollLeft=t,O.scrollYLoad&&be(e),P.lastScrollTime=Date.now(),n("scroll",{scrollLeft:t,scrollTop:l,isX:i,isY:a},e)},p=e=>{{var t=e||[];const r=z.value,n=U.value,u=Z(),c={},v={},d=[],p=e=>{d.push(e);let t=M(e);t||(t=getOptUniqueId(),e[u]=t),v[e[n]]={key:t,item:e,_index:-1}};t.forEach(e=>{p(e),e[r]&&(c[e[u]]=e)[r].forEach(p)}),P.fullData=d,P.optGroupKeyMaps=c,P.optFullValMaps=v,O.reactFlag++,g()}var{isLoaded:t,fullData:l,scrollYStore:i}=P,a=K.value,o=_.value;const s=U.value;if(Object.assign(i,{startIndex:0,endIndex:1,visibleSize:0}),P.synchData=e||[],O.scrollYLoad=!!o.enabled&&-1<o.gt&&(0===o.gt||o.gt<=l.length),he(),!t){i=a["selectMode"];if(0<e.length&&_xeUtils.default.eqNull(E.modelValue)){if("first"===i||"last"===i){const f=_xeUtils.default[i](e);f&&(0,_vue.nextTick)(()=>{_xeUtils.default.eqNull(E.modelValue)&&X(f[s])})}P.isLoaded=!0}}return xe().then(()=>{h()})},f=()=>{var e=V.value;return e&&(e.scrollTop=0,e.scrollLeft=0),P.lastScrollTop=0,(P.lastScrollLeft=0,_vue.nextTick)()},Se=e=>{var t=P["optGroupKeyMaps"];return!!t[e]};t={dispatchEvent:n,loadData:p,reloadData(e){return P.isLoaded=!1,f(),p(e)},isPanelVisible(){return O.visiblePanel},togglePanel(){return(O.visiblePanel?k:w)(),(0,_vue.nextTick)()},hidePanel(){return O.visiblePanel&&k(),(0,_vue.nextTick)()},showPanel(){return O.visiblePanel||w(),(0,_vue.nextTick)()},refreshOption(){return g(),v(),(0,_vue.nextTick)()},focus(){var e=S.value;return O.isActivated=!0,e.blur(),(0,_vue.nextTick)()},blur(){return S.value.blur(),(O.isActivated=!1,_vue.nextTick)()},recalculate:d,clearScroll:f};Object.assign(A,t);const Ee=(e,v)=>{const{optionKey:d,modelValue:p}=E,f=O["currentOption"];var t=r.value;const _=u.value,g=U.value,h=j.value,x=t["useKey"],m=b.option;return e.map((t,e)=>{var{slots:l,className:i}=t,a=M(t),o=t[g];const s=Se(a);var o=_xeUtils.default.isArray(p)?-1<p.indexOf(o):p===o,r=!s||isOptionVisible(t);c=o,u=v;const n=!!t.disabled||!(!u||!u.disabled)||!(!G.value||c);var u=l?l.default:null,c={option:t,group:null,$select:A};return r?(0,_vue.h)("div",{key:x||d?a:e,class:["vxe-select-option",i?_xeUtils.default.isFunction(i)?i(c):i:"",{"vxe-select-optgroup":s,"is--disabled":n,"is--selected":o,"is--hover":f&&M(f)===a}],optid:a,onMousedown:e=>{0===e.button&&e.stopPropagation()},onClick:e=>{n||s||ae(e,t)},onMouseenter:()=>{var e;n||s||(e=P.lastScrollTime)&&Date.now()<e+250||ee(t)}},m?W(m,c):u?W(u,c):(0,_utils.getFuncText)(t[s?h:_])):(0,_vue.createCommentVNode)()})};return(0,_vue.watch)(()=>O.staticOptions,e=>{p(e)}),(0,_vue.watch)(()=>E.options,e=>{p(e||[])}),(0,_vue.watch)(()=>E.optionGroups,e=>{p(e||[])}),(0,_vue.onMounted)(()=>{(0,_vue.nextTick)(()=>{var{options:e,optionGroups:t}=E;t?p(t):e&&p(e)}),_ui.globalEvents.on(A,"mousewheel",oe),_ui.globalEvents.on(A,"mousedown",se),_ui.globalEvents.on(A,"keydown",re),_ui.globalEvents.on(A,"blur",ne)}),(0,_vue.onUnmounted)(()=>{_ui.globalEvents.off(A,"mousewheel"),_ui.globalEvents.off(A,"mousedown"),_ui.globalEvents.off(A,"keydown"),_ui.globalEvents.off(A,"blur")}),(0,_vue.provide)("$xeSelect",A),A.renderVN=()=>{var{className:e,popupClassName:t,loading:l,filterable:i}=E,{initialized:a,isActivated:o,isAniVisible:s,visiblePanel:r,bodyHeight:n,topSpaceHeight:u}=O,c=Y.value,v=C.value,d=$.value,p=N.value,f=q.value,_=B.value,g=b.default,h=b.header,x=b.footer;const m=b.prefix;return f?(0,_vue.h)("div",{ref:T,class:["vxe-select--readonly",e]},[(0,_vue.h)("div",{class:"vxe-select-slots",ref:"hideOption"},g?g({}):[]),(0,_vue.h)("span",{class:"vxe-select-label"},d)]):(0,_vue.h)("div",{ref:T,class:["vxe-select",e?_xeUtils.default.isFunction(e)?e({$select:A}):e:"",{["size--"+c]:c,"is--visible":r,"is--disabled":v,"is--filter":i,"is--loading":l,"is--active":o}]},[(0,_vue.h)("div",{class:"vxe-select-slots",ref:"hideOption"},g?g({}):[]),(0,_vue.h)(_input.default,{ref:S,clearable:E.clearable,placeholder:_,readonly:!0,disabled:v,type:"text",prefixIcon:E.prefixIcon,suffixIcon:l?(0,_ui.getIcon)().SELECT_LOADED:r?(0,_ui.getIcon)().SELECT_OPEN:(0,_ui.getIcon)().SELECT_CLOSE,modelValue:d,onClear:ie,onClick:ce,onFocus:ue,onBlur:ve,onSuffixClick:_e},m?{prefix:()=>m({})}:{}),(0,_vue.h)(_vue.Teleport,{to:"body",disabled:!p||!a},[(0,_vue.h)("div",{ref:L,class:["vxe-table--ignore-clear vxe-select--panel",t?_xeUtils.default.isFunction(t)?t({$select:A}):t:"",{["size--"+c]:c,"is--transfer":p,"ani--leave":!l&&s,"ani--enter":!l&&r}],placement:O.panelPlacement,style:O.panelStyle},a&&(r||s)?[(0,_vue.h)("div",{class:"vxe-select--panel-wrapper"},[i?(0,_vue.h)("div",{class:"vxe-select--panel-search"},[(0,_vue.h)(_input.default,{ref:y,class:"vxe-select-search--input",modelValue:O.searchValue,clearable:!0,disabled:!1,readonly:!1,placeholder:(0,_ui.getI18n)("vxe.select.search"),prefixIcon:(0,_ui.getIcon)().INPUT_SEARCH,"onUpdate:modelValue":de,onFocus:pe,onChange:fe,onSearch:fe})]):(0,_vue.createCommentVNode)(),h?(0,_vue.h)("div",{class:"vxe-select--panel-header"},h({})):(0,_vue.createCommentVNode)(),(0,_vue.h)("div",{class:"vxe-select--panel-body"},[(0,_vue.h)("div",{ref:V,class:"vxe-select-option--wrapper",onScroll:Te},[(0,_vue.h)("div",{class:"vxe-select--y-space",style:{height:n?n+"px":""}}),(0,_vue.h)("div",{ref:I,class:"vxe-select--body",style:{marginTop:u?u+"px":""}},(()=>{var{optList:e,searchLoading:t}=O;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?Ee(e):[(0,_vue.h)("div",{class:"vxe-select--empty-placeholder"},E.emptyText||(0,_ui.getI18n)("vxe.select.emptyText"))]})())])]),x?(0,_vue.h)("div",{class:"vxe-select--panel-footer"},x({})):(0,_vue.createCommentVNode)()])]:[])])])},A},render(){return this.renderVN()}});
|
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=void 0;var _vue=require("vue"),_xeUtils=_interopRequireDefault(require("xe-utils")),_ui=require("../../ui"),_dom=require("../../ui/src/dom"),_utils=require("../../ui/src/utils"),_vn=require("../../ui/src/vn"),_input=_interopRequireDefault(require("../../input/src/input"));function _interopRequireDefault(e){return e&&e.__esModule?e:{default:e}}function isOptionVisible(e){return!1!==e.visible}function getOptUniqueId(){return _xeUtils.default.uniqueId("opt_")}var _default=exports.default=(0,_vue.defineComponent)({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,options:Array,optionProps:Object,optionGroups:Array,optionGroupProps:Object,optionConfig:Object,className:[String,Function],popupClassName:[String,Function],max:{type:[String,Number],default:null},size:{type:String,default:()=>(0,_ui.getConfig)().select.size||(0,_ui.getConfig)().size},filterable:Boolean,filterMethod:Function,remote:Boolean,remoteMethod:Function,emptyText:String,transfer:{type:Boolean,default:null},scrollY:Object,optionId:{type:String,default:()=>(0,_ui.getConfig)().select.optionId},optionKey:Boolean},emits:["update:modelValue","change","clear","blur","focus","click","scroll","visible-change"],setup(S,e){const{slots:y,emit:i}=e,f=(0,_vue.inject)("$xeModal",null),m=(0,_vue.inject)("$xeDrawer",null),F=(0,_vue.inject)("$xeTable",null),l=(0,_vue.inject)("$xeForm",null),a=(0,_vue.inject)("xeFormItemInfo",null);var t=_xeUtils.default.uniqueId();const b=(0,_vue.ref)(),T=(0,_vue.ref)(),E=(0,_vue.ref)(),L=(0,_vue.ref)(),V=(0,_vue.ref)(),I=(0,_vue.ref)(),Y=(0,_ui.useSize)(S)["computeSize"],O=(0,_vue.reactive)({initialized:!1,scrollYLoad:!1,bodyHeight:0,topSpaceHeight:0,optList:[],afterVisibleList:[],staticOptions:[],reactFlag:0,currentOption:null,searchValue:"",searchLoading:!1,panelIndex:0,panelStyle:{},panelPlacement:null,triggerFocusPanel:!1,visiblePanel:!1,isAniVisible:!1,isActivated:!1}),P={synchData:[],fullData:[],optAddMaps:{},optGroupKeyMaps:{},optFullValMaps:{},remoteValMaps:{},lastScrollLeft:0,lastScrollTop:0,scrollYStore:{startIndex:0,endIndex:0,visibleSize:0,offsetSize:0,rowHeight:0},lastScrollTime:0,hpTimeout:void 0},H={refElem:b},A={xID:t,props:S,context:e,reactData:O,internalData:P,getRefMaps:()=>H},B=(0,_vue.computed)(()=>{var e=S["readonly"];return null===e?!!l&&l.props.readonly:e}),C=(0,_vue.computed)(()=>{var e=S["disabled"];return null===e?!!l&&l.props.disabled:e}),M=(0,_vue.computed)(()=>{var e=S["transfer"];if(null===e){var t=(0,_ui.getConfig)().select.transfer;if(_xeUtils.default.isBoolean(t))return t;if(F||f||m||l)return!0}return e}),q=(0,_vue.computed)(()=>{var e=S["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({},S.defaultConfig)),o=(0,_vue.computed)(()=>Object.assign({},S.optionProps)),s=(0,_vue.computed)(()=>Object.assign({},S.optionGroupProps)),u=(0,_vue.computed)(()=>{return o.value.label||"label"}),N=(0,_vue.computed)(()=>{return o.value.value||"value"}),j=(0,_vue.computed)(()=>{return s.value.label||"label"}),z=(0,_vue.computed)(()=>{return s.value.options||"options"}),G=(0,_vue.computed)(()=>{var{modelValue:e,multiple:t,max:l}=S;return!(!t||!l)&&(_xeUtils.default.isArray(e)?e.length:_xeUtils.default.eqNull(e)?0:1)>=_xeUtils.default.toNumber(l)}),_=(0,_vue.computed)(()=>Object.assign({},(0,_ui.getConfig)().select.scrollY,S.scrollY)),R=(0,_vue.computed)(()=>Object.assign({},(0,_ui.getConfig)().select.optionConfig,S.optionConfig)),$=(0,_vue.computed)(()=>_xeUtils.default.toNumber(S.multiCharOverflow)),W=(0,_vue.computed)(()=>{const{modelValue:e,remote:t,multiple:l}=S,i=$.value;var a;return _xeUtils.default.eqNull(e)?"":(a=_xeUtils.default.isArray(e)?e:[e],(t?a.map(e=>J(e)):a.map(e=>{e=Q(e);return l&&0<i&&e.length>i?e.substring(0,i)+"...":e})).join(", "))}),X=(e,t)=>e&&(_xeUtils.default.isString(e)&&(e=y[e]||null),_xeUtils.default.isFunction(e))?(0,_vn.getSlotVNs)(e(t)):[],r=(e,t,l)=>{i(e,(0,_ui.createEvent)(l,{$select:A},t))},Z=e=>{i("update:modelValue",e)},g=()=>{return R.value.keyField||S.optionId||"_X_OPTION_KEY"},U=e=>{e=e[g()];return e?encodeURIComponent(e):""},J=e=>{var t=P["remoteValMaps"],l=u.value,t=t[e],t=t?t.item:null;return _xeUtils.default.toValueString(t?t[l]:e)},Q=e=>{var t=P["optFullValMaps"],l=u.value,t=O.reactFlag?t[e]:null;return t?t.item[l]:_xeUtils.default.toValueString(e)},h=()=>{const{filterable:e,filterMethod:t}=S;var l=O["searchValue"];const{fullData:i,optFullValMaps:a}=P,o=u.value,s=N.value,r=(""+(l||"")).toLowerCase();let n=[];return(n=e&&t?i.filter(e=>isOptionVisible(e)&&t({group:null,option:e,searchValue:r})):e?i.filter(e=>isOptionVisible(e)&&(!r||-1<(""+e[o]).toLowerCase().indexOf(r))):i.filter(isOptionVisible)).forEach((e,t)=>{e=a[e[s]];e&&(e._index=t)}),O.afterVisibleList=n,(0,_vue.nextTick)()},ee=e=>{e&&(O.currentOption=e)},te=()=>(0,_vue.nextTick)().then(()=>{var i=S["placement"],a=O["panelIndex"],o=b.value,s=V.value,e=M.value;if(s&&o){var r=o.offsetHeight,n=o.offsetWidth,u=s.offsetHeight,s=s.offsetWidth,a={zIndex:a},{boundingTop:o,boundingLeft:c,visibleHeight:v,visibleWidth:d}=(0,_dom.getAbsolutePos)(o);let l="bottom";if(e){let e=c,t=o+r;"top"===i?(l="top",t=o-u):i||(t+u+5>v&&(l="top",t=o-u),t<5&&(l="bottom",t=o+r)),e+s+5>d&&(e-=e+s+5-d),e<5&&(e=5),Object.assign(a,{left:e+"px",top:t+"px",minWidth:n+"px"})}else"top"===i?(l="top",a.bottom=r+"px"):i||v<o+r+u&&5<o-r-u&&(l="top",a.bottom=r+"px");return O.panelStyle=a,O.panelPlacement=l,(0,_vue.nextTick)()}}),k=()=>{var{loading:e,filterable:t}=S,l=P["hpTimeout"],i=C.value;e||i||(l&&(clearTimeout(l),P.hpTimeout=void 0),O.initialized||(O.initialized=!0),O.isActivated=!0,O.isAniVisible=!0,t&&(h(),c()),setTimeout(()=>{O.visiblePanel=!0,S.filterable&&(0,_vue.nextTick)(()=>{var e=E.value;e&&e.focus()});v().then(()=>x())},10),setTimeout(()=>{v().then(()=>x())},100),O.panelIndex<(0,_utils.getLastZIndex)()&&(O.panelIndex=(0,_utils.nextZIndex)()),te(),r("visible-change",{visible:!0},null))},w=()=>{O.searchValue="",O.searchLoading=!1,O.visiblePanel=!1,P.hpTimeout=setTimeout(()=>{O.isAniVisible=!1},350),r("visible-change",{visible:!1},null)},n=(e,t)=>{Z(t),t!==S.modelValue&&(r("change",{value:t},e),l)&&a&&l.triggerItemEvent(e,a.itemConfig.field,t)},le=(e,t)=>{P.remoteValMaps={},n(e,t),r("clear",{value:t},e)},ie=(e,t)=>{le(t,null),w()},ae=(t,e)=>{var{modelValue:l,multiple:i}=S,a=P["remoteValMaps"];const o=e[N.value];var s=a[o];if(s?s.item=e:a[o]={key:U(e),item:e,_index:-1},i){let e=[];s=_xeUtils.default.eqNull(l)?[]:_xeUtils.default.isArray(l)?l:[l],a=_xeUtils.default.findIndexOf(s,e=>e===o);e=-1===a?s.concat([o]):s.filter(e=>e!==o),n(t,e)}else n(t,o),w();O.reactFlag++},oe=e=>{var t=O["visiblePanel"];C.value||t&&(t=V.value,((0,_dom.getEventTargetNode)(e,t).flag?te:w)())},se=e=>{var t,l,i=O["visiblePanel"];C.value||(t=b.value,l=V.value,O.isActivated=(0,_dom.getEventTargetNode)(e,t).flag||(0,_dom.getEventTargetNode)(e,l).flag,i&&!O.isActivated&&w())},D=e=>{var t=e.disabled,e=U(e);return!t&&!Se(e)},re=e=>{var t=S["clearable"],{visiblePanel:l,currentOption:i}=O;if(!C.value){var a=_ui.globalEvents.hasKey(e,_ui.GLOBAL_EVENT_KEYS.TAB),o=_ui.globalEvents.hasKey(e,_ui.GLOBAL_EVENT_KEYS.ENTER),s=_ui.globalEvents.hasKey(e,_ui.GLOBAL_EVENT_KEYS.ESCAPE),r=_ui.globalEvents.hasKey(e,_ui.GLOBAL_EVENT_KEYS.ARROW_UP),n=_ui.globalEvents.hasKey(e,_ui.GLOBAL_EVENT_KEYS.ARROW_DOWN),u=_ui.globalEvents.hasKey(e,_ui.GLOBAL_EVENT_KEYS.DELETE),c=_ui.globalEvents.hasKey(e,_ui.GLOBAL_EVENT_KEYS.SPACEBAR);if(a&&(O.isActivated=!1),l)if(s||a)w();else if(o)e.preventDefault(),e.stopPropagation(),ae(e,i);else if(r||n){e.preventDefault();l=((t,e)=>{var l=O["afterVisibleList"],i=P["optFullValMaps"],a=N.value;if(!t)for(let e=0;e<l.length-1;e++){var o=l[e];if(D(o))return o}i=i[t[a]];if(i){t=i._index;if(-1<t)if(e)for(let e=t+1;e<=l.length-1;e++){var s=l[e];if(D(s))return s}else if(0<t)for(let e=t-1;0<=e;e--){var r=l[e];if(D(r))return r}}return null})(i,n);if(l){ee(l);{s=l;a=n;const v=O["scrollYLoad"],{optFullValMaps:d,scrollYStore:p}=P,f=N.value,_=d[s[f]];if(_){const g=_.key;const h=_._index;if(h>-1){const x=L.value;const m=V.value;const b=m.querySelector(`[optid='${g}']`);if(x)if(b){const T=x.offsetHeight;const E=1;if(a){if(b.offsetTop+b.offsetHeight-x.scrollTop>T)x.scrollTop=b.offsetTop+b.offsetHeight-T}else if(b.offsetTop+E<x.scrollTop||b.offsetTop+E>x.scrollTop+x.clientHeight)x.scrollTop=b.offsetTop-E}else if(v)if(a)x.scrollTop=h*p.rowHeight-x.clientHeight+p.rowHeight;else x.scrollTop=h*p.rowHeight}}}}}else c&&e.preventDefault();else(r||n||o||c)&&O.isActivated&&(e.preventDefault(),k());O.isActivated&&u&&t&&le(e,null)}},ne=()=>{w()},ue=e=>{C.value||O.visiblePanel||(O.triggerFocusPanel=!0,k(),setTimeout(()=>{O.triggerFocusPanel=!1},500)),r("focus",{},e)},ce=e=>{ge(e),r("click",{triggerButton:!1,visible:O.visiblePanel},e)},ve=e=>{O.isActivated=!1,r("blur",{},e)},de=e=>{ge(e),r("click",{triggerButton:!0,visible:O.visiblePanel},e)},pe=e=>{O.searchValue=e},fe=()=>{O.isActivated=!0};const _e=_xeUtils.default.debounce(()=>{var{remote:e,remoteMethod:t}=S,l=O["searchValue"];e&&t?(O.searchLoading=!0,Promise.resolve(t({searchValue:l})).then(()=>(0,_vue.nextTick)()).catch(()=>(0,_vue.nextTick)()).finally(()=>{O.searchLoading=!1,h(),c()})):(h(),c())},350,{trailing:!0}),ge=e=>{e=e.$event;e.preventDefault(),O.triggerFocusPanel?O.triggerFocusPanel=!1:(O.visiblePanel?w:k)()},he=()=>{var{scrollYLoad:e,afterVisibleList:t}=O,l=P["scrollYStore"];O.bodyHeight=e?t.length*l.rowHeight:0,O.topSpaceHeight=e?Math.max(l.startIndex*l.rowHeight,0):0},xe=()=>{var{filterable:e,allowCreate:t}=S;const{scrollYLoad:l,afterVisibleList:i,searchValue:a}=O;var{optAddMaps:o,scrollYStore:s}=P;const r=u.value;var n=N.value,s=l?i.slice(s.startIndex,s.endIndex):i.slice(0);return e&&t&&a&&(s.some(e=>e[r]===a)||(e=o[a]||{[g()]:a,[r]:a,[n]:a},o[a]=e,s.unshift(e))),O.optList=s,(0,_vue.nextTick)()},c=()=>{xe(),he()},me=()=>(0,_vue.nextTick)().then(()=>{var e=O["scrollYLoad"],t=P["scrollYStore"],l=I.value,i=_.value;let a=0,o;(o=l?(o=i.sItem?l.querySelector(i.sItem):o)||l.children[0]:o)&&(a=o.offsetHeight),a=Math.max(20,a),t.rowHeight=a,(e?(l=L.value,e=Math.max(8,l?Math.ceil(l.clientHeight/a):0),l=Math.max(0,Math.min(2,_xeUtils.default.toNumber(i.oSize))),t.offsetSize=l,t.visibleSize=e,t.endIndex=Math.max(t.startIndex,e+l,t.endIndex),c):he)()}),be=(e,t)=>{var l=L.value;return l&&(_xeUtils.default.isNumber(e)&&(l.scrollLeft=e),_xeUtils.default.isNumber(t))&&(l.scrollTop=t),O.scrollYLoad?new Promise(e=>{setTimeout(()=>{(0,_vue.nextTick)(()=>{e()})},50)}):(0,_vue.nextTick)()},x=()=>{const{lastScrollLeft:e,lastScrollTop:t}=P;return p().then(()=>{if(e||t)return P.lastScrollLeft=0,P.lastScrollTop=0,be(e,t)})},v=()=>{var e=b.value;return e&&e.clientWidth&&e.clientHeight?me():Promise.resolve()},Te=e=>{var t=P["scrollYStore"],{startIndex:l,endIndex:i,visibleSize:a,offsetSize:o,rowHeight:s}=t,e=e.target.scrollTop,e=Math.floor(e/s),s=Math.max(0,e-1-o),o=e+a+o;!(e<=l||i-a-1<=e)||l===s&&i===o||(t.startIndex=s,t.endIndex=o,c())},Ee=e=>{var t=e.target,l=t.scrollTop,t=t.scrollLeft,i=t!==P.lastScrollLeft,a=l!==P.lastScrollTop;P.lastScrollTop=l,P.lastScrollLeft=t,O.scrollYLoad&&Te(e),P.lastScrollTime=Date.now(),r("scroll",{scrollLeft:t,scrollTop:l,isX:i,isY:a},e)},d=e=>{{var t=e||[];const r=z.value,n=N.value,u=g(),c={},v={},d=[],p=e=>{d.push(e);let t=U(e);t||(t=getOptUniqueId(),e[u]=t),v[e[n]]={key:t,item:e,_index:-1}};t.forEach(e=>{p(e),e[r]&&(c[e[u]]=e)[r].forEach(p)}),P.fullData=d,P.optGroupKeyMaps=c,P.optFullValMaps=v,O.reactFlag++,h()}var{isLoaded:t,fullData:l,scrollYStore:i}=P,a=K.value,o=_.value;const s=N.value;if(Object.assign(i,{startIndex:0,endIndex:1,visibleSize:0}),P.synchData=e||[],O.scrollYLoad=!!o.enabled&&-1<o.gt&&(0===o.gt||o.gt<=l.length),xe(),!t){i=a["selectMode"];if(0<e.length&&_xeUtils.default.eqNull(S.modelValue)){if("first"===i||"last"===i){const f=_xeUtils.default[i](e);f&&(0,_vue.nextTick)(()=>{_xeUtils.default.eqNull(S.modelValue)&&Z(f[s])})}P.isLoaded=!0}}return me().then(()=>{x()})},p=()=>{var e=L.value;return e&&(e.scrollTop=0,e.scrollLeft=0),P.lastScrollTop=0,(P.lastScrollLeft=0,_vue.nextTick)()},Se=e=>{var t=P["optGroupKeyMaps"];return!!t[e]};t={dispatchEvent:r,loadData:d,reloadData(e){return P.isLoaded=!1,p(),d(e)},isPanelVisible(){return O.visiblePanel},togglePanel(){return(O.visiblePanel?w:k)(),(0,_vue.nextTick)()},hidePanel(){return O.visiblePanel&&w(),(0,_vue.nextTick)()},showPanel(){return O.visiblePanel||k(),(0,_vue.nextTick)()},refreshOption(){return h(),c(),(0,_vue.nextTick)()},focus(){var e=T.value;return O.isActivated=!0,e.blur(),(0,_vue.nextTick)()},blur(){return T.value.blur(),(O.isActivated=!1,_vue.nextTick)()},recalculate:v,clearScroll:p};Object.assign(A,t);const ye=(e,d)=>{const{allowCreate:p,optionKey:f,modelValue:_}=S,g=O["currentOption"],h=P["optAddMaps"];var t=R.value;const x=u.value,m=N.value,b=j.value,T=t["useKey"],E=y.option;return e.map((t,e)=>{var{slots:l,className:i}=t,a=U(t),o=t[m];const s=Se(a);var r=!(!p||!h[a]),o=!r&&(_xeUtils.default.isArray(_)?-1<_.indexOf(o):_===o),n=r||!s||isOptionVisible(t);const u=!(r||(v=o,c=d,!t.disabled&&(!c||!c.disabled)&&(!G.value||v)));var c=l?l.default:null,v={option:t,group:null,$select:A},l=E?X(E,v):c?X(c,v):(0,_utils.getFuncText)(t[s?b:x]);return n?(0,_vue.h)("div",{key:T||f?a:e,class:["vxe-select-option",i?_xeUtils.default.isFunction(i)?i(v):i:"",{"vxe-select-optgroup":s,"is--disabled":u,"is--selected":o,"is--add":r,"is--hover":g&&U(g)===a}],optid:a,onMousedown:e=>{0===e.button&&e.stopPropagation()},onClick:e=>{u||s||ae(e,t)},onMouseenter:()=>{var e;u||s||(e=P.lastScrollTime)&&Date.now()<e+250||ee(t)}},p?[(0,_vue.h)("span",{key:1,class:"vxe-select-option--label"},l),r?(0,_vue.h)("span",{key:2,class:"vxe-select-option--add-icon"},[(0,_vue.h)("i",{class:(0,_ui.getIcon)().ADD_OPTION})]):(0,_ui.renderEmptyElement)(A)]:l):(0,_ui.renderEmptyElement)(A)})};return(0,_vue.watch)(()=>O.staticOptions,e=>{d(e)}),(0,_vue.watch)(()=>S.options,e=>{d(e||[])}),(0,_vue.watch)(()=>S.optionGroups,e=>{d(e||[])}),(0,_vue.onMounted)(()=>{(0,_vue.nextTick)(()=>{var{options:e,optionGroups:t}=S;t?d(t):e&&d(e)}),_ui.globalEvents.on(A,"mousewheel",oe),_ui.globalEvents.on(A,"mousedown",se),_ui.globalEvents.on(A,"keydown",re),_ui.globalEvents.on(A,"blur",ne)}),(0,_vue.onUnmounted)(()=>{_ui.globalEvents.off(A,"mousewheel"),_ui.globalEvents.off(A,"mousedown"),_ui.globalEvents.off(A,"keydown"),_ui.globalEvents.off(A,"blur")}),(0,_vue.provide)("$xeSelect",A),A.renderVN=()=>{var{className:e,popupClassName:t,loading:l,filterable:i}=S,{initialized:a,isActivated:o,isAniVisible:s,visiblePanel:r,bodyHeight:n,topSpaceHeight:u}=O,c=Y.value,v=C.value,d=W.value,p=M.value,f=B.value,_=q.value,g=y.default,h=y.header,x=y.footer;const m=y.prefix;return f?(0,_vue.h)("div",{ref:b,class:["vxe-select--readonly",e]},[(0,_vue.h)("div",{class:"vxe-select-slots",ref:"hideOption"},g?g({}):[]),(0,_vue.h)("span",{class:"vxe-select-label"},d)]):(0,_vue.h)("div",{ref:b,class:["vxe-select",e?_xeUtils.default.isFunction(e)?e({$select:A}):e:"",{["size--"+c]:c,"is--visible":r,"is--disabled":v,"is--filter":i,"is--loading":l,"is--active":o}]},[(0,_vue.h)("div",{class:"vxe-select-slots",ref:"hideOption"},g?g({}):[]),(0,_vue.h)(_input.default,{ref:T,clearable:S.clearable,placeholder:_,readonly:!0,disabled:v,type:"text",prefixIcon:S.prefixIcon,suffixIcon:l?(0,_ui.getIcon)().SELECT_LOADED:r?(0,_ui.getIcon)().SELECT_OPEN:(0,_ui.getIcon)().SELECT_CLOSE,modelValue:d,onClear:ie,onClick:ce,onFocus:ue,onBlur:ve,onSuffixClick:de},m?{prefix:()=>m({})}:{}),(0,_vue.h)(_vue.Teleport,{to:"body",disabled:!p||!a},[(0,_vue.h)("div",{ref:V,class:["vxe-table--ignore-clear vxe-select--panel",t?_xeUtils.default.isFunction(t)?t({$select:A}):t:"",{["size--"+c]:c,"is--transfer":p,"ani--leave":!l&&s,"ani--enter":!l&&r}],placement:O.panelPlacement,style:O.panelStyle},a&&(r||s)?[(0,_vue.h)("div",{class:"vxe-select--panel-wrapper"},[i?(0,_vue.h)("div",{class:"vxe-select--panel-search"},[(0,_vue.h)(_input.default,{ref:E,class:"vxe-select-search--input",modelValue:O.searchValue,clearable:!0,disabled:!1,readonly:!1,placeholder:(0,_ui.getI18n)("vxe.select.search"),prefixIcon:(0,_ui.getIcon)().INPUT_SEARCH,"onUpdate:modelValue":pe,onFocus:fe,onChange:_e,onSearch:_e})]):(0,_ui.renderEmptyElement)(A),h?(0,_vue.h)("div",{class:"vxe-select--panel-header"},h({})):(0,_ui.renderEmptyElement)(A),(0,_vue.h)("div",{class:"vxe-select--panel-body"},[(0,_vue.h)("div",{ref:L,class:"vxe-select-option--wrapper",onScroll:Ee},[(0,_vue.h)("div",{class:"vxe-select--y-space",style:{height:n?n+"px":""}}),(0,_vue.h)("div",{ref:I,class:"vxe-select--body",style:{marginTop:u?u+"px":""}},(()=>{var{optList:e,searchLoading:t}=O;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?ye(e):[(0,_vue.h)("div",{class:"vxe-select--empty-placeholder"},S.emptyText||(0,_ui.getI18n)("vxe.select.emptyText"))]})())])]),x?(0,_vue.h)("div",{class:"vxe-select--panel-footer"},x({})):(0,_ui.renderEmptyElement)(A)])]:[])])])},A},render(){return this.renderVN()}});
|
|
@@ -117,6 +117,7 @@
|
|
|
117
117
|
}
|
|
118
118
|
|
|
119
119
|
.vxe-select-option {
|
|
120
|
+
position: relative;
|
|
120
121
|
padding: 0 0.6em;
|
|
121
122
|
max-width: 600px;
|
|
122
123
|
white-space: nowrap;
|
|
@@ -128,6 +129,15 @@
|
|
|
128
129
|
user-select: none;
|
|
129
130
|
cursor: pointer;
|
|
130
131
|
}
|
|
132
|
+
.vxe-select-option.is--add {
|
|
133
|
+
padding-right: 2em;
|
|
134
|
+
}
|
|
135
|
+
.vxe-select-option.is--add:hover .vxe-select-option--add-icon {
|
|
136
|
+
color: var(--vxe-ui-font-primary-color);
|
|
137
|
+
}
|
|
138
|
+
.vxe-select-option.is--add .vxe-select-option--add-icon {
|
|
139
|
+
display: block;
|
|
140
|
+
}
|
|
131
141
|
.vxe-select-option.is--selected {
|
|
132
142
|
color: var(--vxe-ui-font-primary-color);
|
|
133
143
|
}
|
|
@@ -145,6 +155,13 @@
|
|
|
145
155
|
cursor: default;
|
|
146
156
|
}
|
|
147
157
|
|
|
158
|
+
.vxe-select-option--add-icon {
|
|
159
|
+
display: none;
|
|
160
|
+
position: absolute;
|
|
161
|
+
top: 0;
|
|
162
|
+
right: 0.6em;
|
|
163
|
+
}
|
|
164
|
+
|
|
148
165
|
.vxe-select--search-icon {
|
|
149
166
|
margin-right: 0.5em;
|
|
150
167
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
.vxe-select{position:relative;display:inline-block;width:180px;color:var(--vxe-ui-font-color);text-align:left}.vxe-select>.vxe-input .vxe-input--inner{cursor:pointer}.vxe-select.is--disabled>.vxe-input .vxe-input--inner{cursor:no-drop}.vxe-select.is--loading>.vxe-input .vxe-input--inner{cursor:progress}.vxe-select>.vxe-input{width:100%}.vxe-select>.vxe-input .vxe-input--suffix-icon>i{display:inline-block;transition:transform .2s ease-in-out}.vxe-select.is--active:not(.is--filter)>.vxe-input{border-color:var(--vxe-ui-font-primary-color)}.vxe-select--readonly{color:var(--vxe-ui-font-color);display:inline-flex}.vxe-select-slots{display:none}.vxe-select--panel{display:none;position:absolute;left:0;padding:4px 0;color:var(--vxe-ui-font-color);text-align:left}.vxe-select--panel:not(.is--transfer){min-width:100%}.vxe-select--panel.is--transfer{position:fixed}.vxe-select--panel.ani--leave{display:block;opacity:0;transform:scaleY(.5);transition:transform .3s cubic-bezier(.23,1,.32,1),opacity .3s cubic-bezier(.23,1,.32,1);transform-origin:center top;backface-visibility:hidden}.vxe-select--panel.ani--leave[placement=top]{transform-origin:center bottom}.vxe-select--panel.ani--enter{opacity:1;transform:scaleY(1)}.vxe-select--panel-search{display:block;padding:var(--vxe-ui-layout-padding-default)}.vxe-select--panel-search .vxe-select-search--input{width:100%}.vxe-select--panel-wrapper{position:relative;border-radius:var(--vxe-ui-base-border-radius);border:1px solid var(--vxe-ui-base-popup-border-color);box-shadow:var(--vxe-ui-base-popup-box-shadow);background-color:var(--vxe-ui-layout-background-color)}.vxe-select--panel-header{border-bottom:1px solid var(--vxe-ui-base-popup-border-color)}.vxe-select--panel-footer{border-top:1px solid var(--vxe-ui-base-popup-border-color)}.vxe-select--panel-footer,.vxe-select--panel-header{padding:4px 0}.vxe-select-option--wrapper{position:relative;overflow-x:hidden;overflow-y:auto}.vxe-select--y-space{width:0;float:left}.vxe-select--body,.vxe-select-option--wrapper{padding:0;margin:0;border:0;outline:0}.vxe-select-option--wrapper{max-height:18em}.vxe-select-option{padding:0 .6em;max-width:600px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;-webkit-user-select:none;-moz-user-select:none;user-select:none;cursor:pointer}.vxe-select-option.is--selected{color:var(--vxe-ui-font-primary-color)}.vxe-select-option:not(.is--disabled).is--hover{background-color:var(--vxe-ui-base-hover-background-color)}.vxe-select-option.is--disabled{color:var(--vxe-ui-font-disabled-color);cursor:no-drop}.vxe-select-optgroup{color:var(--vxe-ui-select-title-color);font-size:12px;cursor:default}.vxe-select--search-icon{margin-right:.5em}.vxe-select--empty-placeholder,.vxe-select--search-loading{padding:0 .6em;text-align:center;color:var(--vxe-ui-select-empty-color)}.vxe-select,.vxe-select--panel{font-size:var(--vxe-ui-font-size-default)}.vxe-select--panel.size--medium,.vxe-select.size--medium{font-size:var(--vxe-ui-font-size-medium)}.vxe-select--panel.size--small,.vxe-select.size--small{font-size:var(--vxe-ui-font-size-small)}.vxe-select--panel.size--mini,.vxe-select.size--mini{font-size:var(--vxe-ui-font-size-mini)}.vxe-select--panel .vxe-select-option{height:var(--vxe-ui-select-option-height-default)}.vxe-select--panel .vxe-select--empty-placeholder,.vxe-select--panel .vxe-select--search-loading,.vxe-select--panel .vxe-select-option{line-height:var(--vxe-ui-select-option-height-default)}.vxe-select--panel.size--medium .vxe-select-option{height:var(--vxe-ui-select-option-height-medium)}.vxe-select--panel.size--medium .vxe-select--empty-placeholder,.vxe-select--panel.size--medium .vxe-select--search-loading,.vxe-select--panel.size--medium .vxe-select-option{line-height:var(--vxe-ui-select-option-height-medium)}.vxe-select--panel.size--small .vxe-select-option{height:var(--vxe-ui-select-option-height-small)}.vxe-select--panel.size--small .vxe-select--empty-placeholder,.vxe-select--panel.size--small .vxe-select--search-loading,.vxe-select--panel.size--small .vxe-select-option{line-height:var(--vxe-ui-select-option-height-small)}.vxe-select--panel.size--mini .vxe-select-option{height:var(--vxe-ui-select-option-height-mini)}.vxe-select--panel.size--mini .vxe-select--empty-placeholder,.vxe-select--panel.size--mini .vxe-select--search-loading,.vxe-select--panel.size--mini .vxe-select-option{line-height:var(--vxe-ui-select-option-height-mini)}
|
|
1
|
+
.vxe-select{position:relative;display:inline-block;width:180px;color:var(--vxe-ui-font-color);text-align:left}.vxe-select>.vxe-input .vxe-input--inner{cursor:pointer}.vxe-select.is--disabled>.vxe-input .vxe-input--inner{cursor:no-drop}.vxe-select.is--loading>.vxe-input .vxe-input--inner{cursor:progress}.vxe-select>.vxe-input{width:100%}.vxe-select>.vxe-input .vxe-input--suffix-icon>i{display:inline-block;transition:transform .2s ease-in-out}.vxe-select.is--active:not(.is--filter)>.vxe-input{border-color:var(--vxe-ui-font-primary-color)}.vxe-select--readonly{color:var(--vxe-ui-font-color);display:inline-flex}.vxe-select-slots{display:none}.vxe-select--panel{display:none;position:absolute;left:0;padding:4px 0;color:var(--vxe-ui-font-color);text-align:left}.vxe-select--panel:not(.is--transfer){min-width:100%}.vxe-select--panel.is--transfer{position:fixed}.vxe-select--panel.ani--leave{display:block;opacity:0;transform:scaleY(.5);transition:transform .3s cubic-bezier(.23,1,.32,1),opacity .3s cubic-bezier(.23,1,.32,1);transform-origin:center top;backface-visibility:hidden}.vxe-select--panel.ani--leave[placement=top]{transform-origin:center bottom}.vxe-select--panel.ani--enter{opacity:1;transform:scaleY(1)}.vxe-select--panel-search{display:block;padding:var(--vxe-ui-layout-padding-default)}.vxe-select--panel-search .vxe-select-search--input{width:100%}.vxe-select--panel-wrapper{position:relative;border-radius:var(--vxe-ui-base-border-radius);border:1px solid var(--vxe-ui-base-popup-border-color);box-shadow:var(--vxe-ui-base-popup-box-shadow);background-color:var(--vxe-ui-layout-background-color)}.vxe-select--panel-header{border-bottom:1px solid var(--vxe-ui-base-popup-border-color)}.vxe-select--panel-footer{border-top:1px solid var(--vxe-ui-base-popup-border-color)}.vxe-select--panel-footer,.vxe-select--panel-header{padding:4px 0}.vxe-select-option--wrapper{position:relative;overflow-x:hidden;overflow-y:auto}.vxe-select--y-space{width:0;float:left}.vxe-select--body,.vxe-select-option--wrapper{padding:0;margin:0;border:0;outline:0}.vxe-select-option--wrapper{max-height:18em}.vxe-select-option{position:relative;padding:0 .6em;max-width:600px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;-webkit-user-select:none;-moz-user-select:none;user-select:none;cursor:pointer}.vxe-select-option.is--add{padding-right:2em}.vxe-select-option.is--add:hover .vxe-select-option--add-icon{color:var(--vxe-ui-font-primary-color)}.vxe-select-option.is--add .vxe-select-option--add-icon{display:block}.vxe-select-option.is--selected{color:var(--vxe-ui-font-primary-color)}.vxe-select-option:not(.is--disabled).is--hover{background-color:var(--vxe-ui-base-hover-background-color)}.vxe-select-option.is--disabled{color:var(--vxe-ui-font-disabled-color);cursor:no-drop}.vxe-select-optgroup{color:var(--vxe-ui-select-title-color);font-size:12px;cursor:default}.vxe-select-option--add-icon{display:none;position:absolute;top:0;right:.6em}.vxe-select--search-icon{margin-right:.5em}.vxe-select--empty-placeholder,.vxe-select--search-loading{padding:0 .6em;text-align:center;color:var(--vxe-ui-select-empty-color)}.vxe-select,.vxe-select--panel{font-size:var(--vxe-ui-font-size-default)}.vxe-select--panel.size--medium,.vxe-select.size--medium{font-size:var(--vxe-ui-font-size-medium)}.vxe-select--panel.size--small,.vxe-select.size--small{font-size:var(--vxe-ui-font-size-small)}.vxe-select--panel.size--mini,.vxe-select.size--mini{font-size:var(--vxe-ui-font-size-mini)}.vxe-select--panel .vxe-select-option{height:var(--vxe-ui-select-option-height-default)}.vxe-select--panel .vxe-select--empty-placeholder,.vxe-select--panel .vxe-select--search-loading,.vxe-select--panel .vxe-select-option{line-height:var(--vxe-ui-select-option-height-default)}.vxe-select--panel.size--medium .vxe-select-option{height:var(--vxe-ui-select-option-height-medium)}.vxe-select--panel.size--medium .vxe-select--empty-placeholder,.vxe-select--panel.size--medium .vxe-select--search-loading,.vxe-select--panel.size--medium .vxe-select-option{line-height:var(--vxe-ui-select-option-height-medium)}.vxe-select--panel.size--small .vxe-select-option{height:var(--vxe-ui-select-option-height-small)}.vxe-select--panel.size--small .vxe-select--empty-placeholder,.vxe-select--panel.size--small .vxe-select--search-loading,.vxe-select--panel.size--small .vxe-select-option{line-height:var(--vxe-ui-select-option-height-small)}.vxe-select--panel.size--mini .vxe-select-option{height:var(--vxe-ui-select-option-height-mini)}.vxe-select--panel.size--mini .vxe-select--empty-placeholder,.vxe-select--panel.size--mini .vxe-select--search-loading,.vxe-select--panel.size--mini .vxe-select-option{line-height:var(--vxe-ui-select-option-height-mini)}
|