UNPKG

vue-treeselectjs

Version:
2 lines (1 loc) 4.23 kB
(function(t,i){typeof exports=="object"&&typeof module<"u"?module.exports=i(require("vue"),require("treeselectjs")):typeof define=="function"&&define.amd?define(["vue","treeselectjs"],i):(t=typeof globalThis<"u"?globalThis:t||self,t.VueTreeselect=i(t.Vue,t.Treeselect))})(this,function(t,i){"use strict";const y=["modelValue","options","id","iconElements"],m=t.defineComponent({name:"VueTreeselect",props:{modelValue:{type:[Array,Number,String],default:()=>[]},options:{type:Array,default:()=>[]},openLevel:{type:Number,default:0},appendToBody:{type:Boolean,default:!1},alwaysOpen:{type:Boolean,default:!1},showTags:{type:Boolean,default:!0},tagsCountText:{type:String,default:"elements selected"},tagsSortFn:{type:Function,default:null},clearable:{type:Boolean,default:!0},searchable:{type:Boolean,default:!0},placeholder:{type:String,default:"Select..."},grouped:{type:Boolean,default:!0},disabled:{type:Boolean,default:!1},emptyText:{type:String,default:"No results found..."},staticList:{type:Boolean,default:!1},id:{type:String,default:""},ariaLabel:{type:String,default:""},isSingleSelect:{type:Boolean,default:!1},showCount:{type:Boolean,default:!1},isGroupedValue:{type:Boolean,default:!1},disabledBranchNode:{type:Boolean,default:!1},direction:{type:String,default:"auto"},expandSelected:{type:Boolean,default:!1},saveScrollPosition:{type:Boolean,default:!0},isIndependentNodes:{type:Boolean,default:!1},rtl:{type:Boolean,default:!1},isBoostedRendering:{type:Boolean,default:!1},listClassName:{type:String,default:""},iconElements:{type:Object,default:()=>({})}},emits:["input","open","close","name-change","search","open-close-group","update:modelValue"],setup(e,{emit:a}){const s=t.ref(null),c=t.ref(null),n=t.ref(null),u=l=>{a("update:modelValue",l),a("input",l)},T=l=>a("open",l),B=l=>a("close",l),C=l=>a("name-change",l),b=l=>a("search",l),_=(l,o)=>a("open-close-group",{groupId:l,isClosed:o}),N=t.computed(()=>JSON.stringify(e.modelValue)),V=t.computed(()=>JSON.stringify(e.options)),R=t.computed(()=>JSON.stringify(e.iconElements));return t.watch(()=>e,l=>{if(n.value){const o=t.toRaw(n.value),r=t.toRaw(l);let f=!1;Object.keys(r).forEach(d=>{const E=r[d]===o[d];!y.includes(d)&&!E&&(o[d]=r[d],f=!0)}),f&&o.mount()}},{deep:!0}),t.watch(()=>N.value,()=>{n.value&&t.toRaw(n.value).updateValue(e.modelValue)}),t.watch(()=>e.id,l=>{if(n.value){const o=t.toRaw(n.value);(o.id||l)&&(o.id=l??"",o.mount())}}),t.watch(()=>V.value,()=>{if(n.value){const l=t.toRaw(n.value);l.options=e.options,l.mount(),l.updateValue(e.modelValue)}}),t.watch(()=>R.value,()=>{if(n.value){const l=t.toRaw(n.value);l.iconElements={...l.iconElements,...e.iconElements},l.mount()}}),t.onMounted(()=>{if(!s.value)throw new Error("Treeselect container ref is not defined");n.value=new i({parentHtmlContainer:s.value,value:e.modelValue,options:e.options,openLevel:e.openLevel,appendToBody:e.appendToBody,alwaysOpen:e.alwaysOpen,showTags:e.showTags,tagsCountText:e.tagsCountText,tagsSortFn:e.tagsSortFn,clearable:e.clearable,searchable:e.searchable,placeholder:e.placeholder,grouped:e.grouped,disabled:e.disabled,emptyText:e.emptyText,staticList:e.staticList,id:e.id,ariaLabel:e.ariaLabel,isSingleSelect:e.isSingleSelect,showCount:e.showCount,isGroupedValue:e.isGroupedValue,disabledBranchNode:e.disabledBranchNode,direction:e.direction,expandSelected:e.expandSelected,saveScrollPosition:e.saveScrollPosition,isIndependentNodes:e.isIndependentNodes,rtl:e.rtl,isBoostedRendering:e.isBoostedRendering,listClassName:e.listClassName,inputCallback:u,openCallback:T,closeCallback:B,nameChangeCallback:C,searchCallback:b,openCloseGroupCallback:_,listSlotHtmlComponent:c.value??null,iconElements:e.iconElements})}),t.onUnmounted(()=>{n.value&&t.toRaw(n.value).destroy()}),{treeselectContainerRef:s,treeselectAfterListSlotRef:c}}}),x="",h=(e,a)=>{const s=e.__vccOpts||e;for(const[c,n]of a)s[c]=n;return s},g={class:"vue-treeselect"},p={ref:"treeselectContainerRef"},S={ref:"treeselectAfterListSlotRef",class:"treeselect__after-list-slot"};function w(e,a,s,c,n,u){return t.openBlock(),t.createElementBlock("div",g,[t.createElementVNode("div",p,null,512),t.createElementVNode("div",S,[t.renderSlot(e.$slots,"default")],512)])}return h(m,[["render",w]])});