@volverjs/ui-vue
Version:
@volverjs/ui-vue is a lightweight Vue 3 component library to accompany @volverjs/style.
2 lines (1 loc) • 39.7 kB
JavaScript
import{computed as e,isRef as t,defineComponent as l,h as a,inject as o,unref as n,mergeDefaults as i,ref as r,toRefs as u,createBlock as s,createCommentVNode as d,openBlock as v,mergeProps as c,createElementBlock as f,normalizeClass as p,renderSlot as b,createTextVNode as y,toDisplayString as m,toRef as g,getCurrentInstance as h,watch as S,resolveComponent as L,resolveDynamicComponent as k,withCtx as O,useId as $,useAttrs as w,useSlots as _,Fragment as x,provide as V,onMounted as B,createVNode as A,normalizeProps as C,guardReactiveProps as H,Transition as N,toHandlers as P,withDirectives as j,createElementVNode as E,normalizeStyle as F,vShow as I,nextTick as D,renderList as M,vModelSelect as q,createSlots as z,mergeModels as K,useModel as T,withModifiers as W,withKeys as G,vModelText as J}from"vue";import{iconLoaded as R,Icon as U,addIcon as Q}from"@iconify/vue";import{autoPlacement as X,flip as Y,shift as Z,size as ee,offset as te,arrow as le,useFloating as ae,autoUpdate as oe}from"@floating-ui/vue";import{useMutationObserver as ne,useVModel as ie,onClickOutside as re,useFocusWithin as ue,useElementHover as se,onKeyStroke as de,useFocus as ve,useElementVisibility as ce,refDebounced as fe,computedAsync as pe}from"@vueuse/core";import be from"mitt";import{getProperty as ye}from"dot-prop";const me={prefix:"normal"};var ge=/* @__PURE__ */(e=>(e.local="local",e.session="session",e))(ge||{}),he=/* @__PURE__ */(e=>(e.absolute="absolute",e.fixed="fixed",e))(he||{}),Se=/* @__PURE__ */(e=>(e.left="left",e.right="right",e.top="top",e.bottom="bottom",e))(Se||{}),Le=/* @__PURE__ */(e=>(e.topStart="top-start",e.topEnd="top-end",e.bottomStart="bottom-start",e.bottomEnd="bottom-end",e.leftStart="left-start",e.leftEnd="left-end",e.rightStart="right-start",e.rightEnd="right-end",e))(Le||{}),ke=/* @__PURE__ */(e=>(e.before="before",e.after="after",e))(ke||{}),Oe=/* @__PURE__ */(e=>(e.button="button",e.submit="submit",e.reset="reset",e))(Oe||{}),$e=/* @__PURE__ */(e=>(e.nuxtLink="nuxt-link",e.routerLink="router-link",e.a="a",e.button="button",e))($e||{}),we=/* @__PURE__ */(e=>(e.button="button",e.link="link",e.menuitem="menuitem",e))(we||{}),_e=/* @__PURE__ */(e=>(e.listbox="listbox",e.menu="menu",e))(_e||{}),xe=/* @__PURE__ */(e=>(e.option="option",e.presentation="presentation",e))(xe||{});const Ve=Symbol.for("volver"),Be=Symbol.for("buttonGroup"),Ae=Symbol.for("dropdownTrigger"),Ce=Symbol.for("dropdownItem"),He=Symbol.for("dropdownAction"),Ne={to:{type:[String,Object]},href:String,target:String,rel:{type:String,default:"noopener noreferrer"}},Pe={valid:{type:Boolean,default:!1},validLabel:{type:[String,Array],default:void 0}},je={invalid:{type:Boolean,default:!1},invalidLabel:{type:[String,Array],default:void 0}},Ee={loading:{type:Boolean,default:!1},loadingLabel:{type:String,default:"Loading..."}},Fe={disabled:{type:Boolean,default:!1}},Ie={required:{type:Boolean,default:!1}},De={selected:{type:Boolean,default:!1}},Me={active:{type:Boolean,default:!1}},qe={current:{type:Boolean,default:!1}},ze={showClearAction:{type:Boolean,default:!1},iconClear:{type:[String,Object],default:"close"},labelClear:{type:String,default:"Clear"}},Ke={pressed:{type:Boolean,default:!1}},Te={label:{type:[String,Number],default:void 0}},We={readonly:{type:Boolean,default:!1}},Ge={modifiers:{type:[String,Array],default:void 0}},Je={hintLabel:{type:String,default:""}},Re={options:{type:Array,default:()=>[]},labelKey:{type:[String,Function],default:"label"},valueKey:{type:[String,Function],default:"value"},disabledKey:{type:[String,Function],default:"disabled"}},Ue={icon:{type:[String,Object],default:void 0},iconPosition:{type:String,default:ke.before,validation:e=>Object.values(ke).includes(e)}},Qe={tabindex:{type:[String,Number],default:0}},Xe={floating:{type:Boolean,default:!1}},Ye={unselectable:{type:Boolean,default:!0}},Ze={id:[String,Number]},et={placement:{type:String,default:Se.bottom,validator:e=>Object.values(Se).includes(e)||Object.values(Le).includes(e)},strategy:{type:String,default:void 0,validator:e=>Object.values(he).includes(e)},transitionName:{type:String,default:void 0},offset:{type:[Number,String,Object],default:0},shift:{type:[Boolean,Object],default:!1},flip:{type:[Boolean,Object],default:!0},size:{type:[Boolean,Object],default:()=>({padding:10})},autoPlacement:{type:[Boolean,Object],default:!1},arrow:{type:Boolean,default:!1},keepOpen:{type:Boolean,default:!1},autofocusFirst:{type:Boolean,default:!0},triggerWidth:{type:Boolean,default:!1}},tt={...Ze,name:{type:String,required:!0}},lt={autofocus:{type:Boolean,default:!1}},at={autocomplete:{type:String,default:"off"}},ot={...Fe,...Te,...Ke,...Me,...qe,...Ne,type:{type:String,default:Oe.button,validator:e=>Object.values(Oe).includes(e)},ariaLabel:{type:String,default:void 0},defaultTag:{type:String,default:$e.button}};ge.local;const nt={...tt,...Qe,...Pe,...je,...Je,...Ee,...Fe,...We,...Ge,...Re,...Ue,...Xe,...et,...Te,...Ie,...ze,transitionName:{type:String,default:"vv-dropdown--mobile-fade-block"},modelValue:{type:[String,Number,Boolean,Object,Array],default:void 0},noResultsLabel:{type:String,default:"No results"},noOptionsLabel:{type:String,default:"No options available"},selectedOptionNotFoundLabel:{type:String,default:"Selected option not found"},selectedHintLabel:{type:String,default:"Selected"},deselectActionLabel:{type:String,default:"Deselect"},selectHintLabel:{type:String,default:"Press enter to select"},deselectHintLabel:{type:String,default:"Press enter to remove"},addOptionHintLabel:{type:String,default:"Press enter to add"},closeLabel:{type:String,default:"Close"},placeholder:String,addable:Boolean,searchable:Boolean,keepSearch:Boolean,searchFunction:{type:Function,default:void 0},searchPlaceholder:{type:String,default:"Search..."},debounceSearch:{type:[Number,String],default:0},multiple:Boolean,minValues:{type:[Number,String],default:0},maxValues:[Number,String],unselectable:{type:Boolean,default:!0},separator:{type:String,default:", "},native:Boolean,badges:Boolean,badgeModifiers:{type:[String,Array],default:"action sm"},triggerWidth:{...et.triggerWidth,default:!0},dropdownModifiers:{type:[String,Array],default:"mobile"},autoOpen:{type:Boolean,default:!1},autoselectFirst:{type:Boolean,default:!1},keepOpen:{type:Boolean,default:!1},focusOnHover:{type:Boolean,default:!0}};function it(){return{...nt,options:{...nt.options,type:Array},searchFunction:{...nt.searchFunction,type:Function}}}function rt(e,t,l){return ut(e,t)}function ut(e,t){if(e===t)return!0;if(e&&t&&"object"==typeof e&&"object"==typeof t){const l=Array.isArray(e),a=Array.isArray(t);let o,n,i;if(l&&a){if(n=e.length,n!==t.length)return!1;for(o=n;0!==o--;)if(!ut(e[o],t[o]))return!1;return!0}if(l!==a)return!1;const r=e instanceof Date,u=t instanceof Date;if(r!==u)return!1;if(r&&u)return e.getTime()===t.getTime();const s=e instanceof RegExp,d=t instanceof RegExp;if(s!==d)return!1;if(s&&d)return e.toString()===t.toString();const v=Object.keys(e);if(n=v.length,n!==Object.keys(t).length)return!1;for(o=n;0!==o--;)if(!Object.prototype.hasOwnProperty.call(t,v[o]))return!1;for(o=n;0!==o--;)if(i=v[o],!ut(e[i],t[i]))return!1;return!0}return Number.isNaN(e)&&Number.isNaN(t)}function st(e,t){if(null!=e&&t&&t.length)for(const l of t)if(rt(e,l))return!0;return!1}function dt(e){return Array.isArray(e)?e.filter(e=>"string"==typeof e).join(" "):e}function vt(o,n){const i=e(()=>t(o)?o.value:o),r=e(()=>dt(i.value.invalidLabel)),u=e(()=>dt(i.value.validLabel)),s=e(()=>i.value.loadingLabel),d=e(()=>i.value.hintLabel),v=e(()=>Boolean(i.value.loading&&(n.loading||s.value))),c=e(()=>!v.value&&Boolean(i.value.invalid&&(n.invalid||r.value))),f=e(()=>!v.value&&!c.value&&Boolean(i.value.valid&&(n.valid||u.value))),p=e(()=>!v.value&&!c.value&&!f.value&&Boolean(n.hint||d.value)),b=e(()=>c.value||f.value||v.value||p.value),y=e(()=>({modelValue:i.value.modelValue,valid:i.value.valid,invalid:i.value.invalid,loading:i.value.loading})),m=l({name:"HintSlot",props:{tag:{type:String,default:"small"}},setup:()=>({isVisible:b,invalidLabel:r,validLabel:u,loadingLabel:s,hintLabel:d,hasInvalidLabelOrSlot:c,hasValidLabelOrSlot:f,hasLoadingLabelOrSlot:v,hasHintLabelOrSlot:p}),render(){if(this.isVisible){let e;return this.hasInvalidLabelOrSlot&&(e="alert"),this.hasValidLabelOrSlot&&(e="status"),this.hasLoadingLabelOrSlot?a(this.tag,{role:e},this.$slots.loading?.()??this.loadingLabel):this.hasInvalidLabelOrSlot?a(this.tag,{role:e},this.$slots.invalid?.()??this.$slots.invalid??this.invalidLabel):this.hasValidLabelOrSlot?a(this.tag,{role:e},this.$slots.valid?.()??this.validLabel):a(this.tag,{role:e},this.$slots.hint?.()??this.$slots.hint??this.hintLabel)}return null}});return{hasInvalidLabelOrSlot:c,hasHintLabelOrSlot:p,hasValidLabelOrSlot:f,hasLoadingLabelOrSlot:v,hintSlotScope:y,HintSlot:m}}function ct(){return o(Ve,void 0)}function ft(t,l,a){return e(()=>{const e={[t]:!0},o="string"==typeof l?.value?l.value.split(" "):l?.value;return o&&Array.isArray(o)&&o.forEach(l=>{l&&(e[`${t}--${l}`]=!0)}),a&&Object.keys(a.value).forEach(l=>{e[`${t}--${l}`]=n(a.value[l])}),e})}const pt=/* @__PURE__ */l({name:"VvIcon",props:/* @__PURE__ */i({name:{},color:{},width:{},height:{},provider:{},prefix:{},src:{},horizontalFlip:{type:Boolean},verticalFlip:{type:Boolean},flip:{},mode:{},inline:{type:Boolean},rotate:{},onLoad:{type:Function},svg:{},modifiers:{}},me),setup(t){const l=t,a=e(()=>"string"==typeof l.rotate?Number.parseFloat(l.rotate):l.rotate),o=r(!0),i=ct(),{modifiers:f}=u(l),p=ft("vv-icon",f),b=e(()=>l.provider||i?.iconsProvider),y=e(()=>{const e=l.name??"",t=`@${b.value}:${l.prefix}:${e}`;if(R(t))return t;const a=i?.iconsCollections.find(t=>{const l=`@${b.value}:${t.prefix}:${e}`;return R(l)});return a?`@${b.value}:${a.prefix}:${e}`:e});function m(e){const t=function(e){let t;if("undefined"==typeof window){const{JSDOM:e}=require("jsdom");t=(new e).window}return(t?new t.DOMParser:new window.DOMParser).parseFromString(e,"text/html").querySelector("svg")}(e),a=t?.innerHTML.trim()||"";t&&a&&Q(`@${b.value}:${l.prefix}:${l.name}`,{body:a,height:t.viewBox.baseVal.height,width:t.viewBox.baseVal.width})}return i&&l.src&&!R(`@${b.value}:${l.prefix}:${l.name}`)&&(o.value=!1,i.fetchIcon(l.src).then(e=>{e&&(m(e),o.value=!0)}).catch(e=>{throw new Error(`Error during fetch icon: ${e?.message}`)})),l.svg&&m(l.svg),(e,l)=>n(o)?(v(),s(n(U),c({key:0,class:n(p)},{inline:t.inline,width:t.width,height:t.height,horizontalFlip:t.horizontalFlip,verticalFlip:t.verticalFlip,flip:t.flip,rotate:n(a),color:t.color,icon:n(y)},{onLoad:t.onLoad}),null,16,["class","onLoad"])):d("v-if",!0)}});function bt(t,l){const a=e(()=>"string"==typeof t?.value?{name:t?.value}:t?.value),o=e(()=>l?.value===ke.before?a.value:void 0),n=e(()=>l?.value===ke.after?a.value:void 0),i=e(()=>l?.value===Se.left?a.value:void 0),r=e(()=>l?.value===Se.right?a.value:void 0),u=e(()=>l?.value===Se.top?a.value:void 0),s=e(()=>l?.value===Se.bottom?a.value:void 0);return{hasIcon:a,hasIconLeft:i,hasIconRight:r,hasIconTop:u,hasIconBottom:s,hasIconBefore:o,hasIconAfter:n}}const yt=l({components:{VvIcon:pt},props:{inputType:{type:String,default:"input-text"},disabled:{type:Boolean,default:!1},label:{type:String,default:"Clear"},icon:{type:[String,Object],default:"close"}},emits:["clear"],setup(t,{emit:l}){const{hasIcon:a}=bt(e(()=>t.icon));return{hasIcon:a,onClick:function(e){e?.stopPropagation(),t.disabled||l("clear")}}},render(){const e=this.hasIcon?a(pt,{...this.hasIcon,class:`vv-${this.inputType}__icon`}):void 0;return a("button",{disabled:this.disabled,class:`vv-${this.inputType}__action`,ariaLabel:this.label,type:"button",onClick:this.onClick},e)}}),mt={...Ge,value:[String,Number]},gt=/* @__PURE__ */l({name:"VvBadge",props:mt,setup(e){const t=e,{modifiers:l}=u(t),a=ft("vv-badge",l);return(e,t)=>(v(),f("span",{class:p(n(a))},[b(e.$slots,"default",{},()=>[y(m(e.value),1)])],2))}});const ht={...ot,...Ze,...Ge,...Ye,...Ee,...Ue,iconPosition:{type:String,default:Se.left,validator:e=>Object.values(Se).includes(e)},loadingIcon:{type:String,default:"eos-icons:bubble-loading"},toggle:{type:Boolean,default:!1},value:{type:[String,Number,Boolean],default:void 0},uncheckedValue:{type:[String,Number,Boolean],default:void 0},modelValue:{type:[String,Number,Boolean],default:void 0}};function St(t,l){const{group:a,isInGroup:n,getGroupOrLocalRef:i}=function(t){const l=o(t,void 0),a=e(()=>void 0!==l);return{group:l,isInGroup:a,getGroupOrLocalRef:function(t,a,o){const n=l?.[t];if(n)return e({get:()=>n.value,set(e){n.value=e}});const i=g(a,t);return e({get:()=>i.value,set(e){o&&o(`update:${t}`,e)}})}}}(Be),{id:r,iconPosition:s,icon:d,label:v,pressed:c}=u(t),f=i("modelValue",t,l),p=i("toggle",t),b=i("unselectable",t),y=e(()=>a?.multiple.value??!1),m=e(()=>{let e=t.modifiers,l=a?.modifiers.value;const o=/* @__PURE__ */new Set;return e&&(Array.isArray(e)||(e=e.split(" ")),e.forEach(e=>o.add(e))),l&&(Array.isArray(l)||(l=l.split(" ")),l.forEach(e=>o.add(e))),Array.from(o)}),h=e(()=>Boolean(t.disabled||a?.disabled.value));return{group:a,isInGroup:n,modelValue:f,toggle:p,unselectable:b,multiple:y,modifiers:m,disabled:h,id:r,pressed:c,iconPosition:s,icon:d,label:v}}const Lt=/* @__PURE__ */l({name:"VvAction",props:ot,emits:["click","mouseover","mouseleave"],setup(t,{expose:l,emit:a}){const i=t,u=a,d=h(),f=ct(),p=r(null);l({$el:p});const{reference:g,bus:$,aria:w,expanded:_}=o(Ae,{});S(()=>p.value,e=>{g&&(g.value=e)});const x=e(()=>i.pressed||_?.value),{role:V}=o(He,{}),B=e(()=>{switch(!0){case i.disabled:return $e.button;case void 0!==i.to:return f?.nuxt?L($e.nuxtLink):$e.routerLink;case void 0!==i.href:return $e.a;default:return i.defaultTag}}),A=e(()=>{const e={...w?.value,ariaPressed:!!x.value||void 0,ariaLabel:i.ariaLabel,role:V?.value};switch(B.value){case $e.a:return{...e,href:i.href,target:i.target,rel:i.rel};case $e.routerLink:case $e.nuxtLink:return{...e,to:i.to,target:i.target};case $e.button:return{...e,type:i.type,disabled:i.disabled};default:return e}});function C(e){i.disabled?e.preventDefault():d?.vnode.props?.onClick?u("click",e):$?.emit("click",e)}function H(e){d?.vnode.props?.onMouseover?u("mouseover",e):$?.emit("mouseover",e)}function N(e){d?.vnode.props?.onMouseleave?u("mouseleave",e):$?.emit("mouseleave",e)}return(e,t)=>(v(),s(k(n(B)),c(n(A),{ref_key:"element",ref:p,class:{active:e.active,pressed:n(x),disabled:e.disabled,current:e.current},onClickPassive:C,onMouseoverPassive:H,onMouseleavePassive:N}),{default:O(()=>[b(e.$slots,"default",{},()=>[y(m(e.label),1)])]),_:3},16,["class"]))}});function kt(t){return e(()=>String(t?.value||$()))}const Ot={key:1,class:"vv-button__label"},$t={key:1,class:"vv-button__label"},wt=/* @__PURE__ */l({name:"VvButton",inheritAttrs:!1,props:ht,emits:["update:modelValue"],setup(t,{expose:l,emit:a}){const o=t,i=a,u=w(),p=_(),{id:g,modifiers:h,iconPosition:S,icon:L,label:k,modelValue:$,disabled:V,toggle:B,unselectable:A}=St(o,i),C=kt(g),H=e(()=>u?.name||C.value),N=r(null);l({$el:e(()=>N.value?.$el)});const P=e(()=>B.value?Array.isArray($.value)?st(H.value,$.value):rt(H.value,$.value):o.pressed),j=ft("vv-button",h,e(()=>({reverse:[Se.right,Se.bottom].includes(S.value),column:[Se.top,Se.bottom].includes(S.value),"icon-only":Boolean(L?.value&&!k?.value&&!p.default)}))),{hasIcon:E}=bt(L),F=e(()=>void 0!==o.value?o.value:H.value),I=e(()=>{if(B.value)return{onClick:D}});function D(){if(B.value){if(Array.isArray($.value))return st(F.value,$.value)?void(A.value&&($.value=$.value.filter(e=>e!==F.value))):void $.value.push(F.value);if(F.value===$.value&&A.value)return void($.value=o.uncheckedValue);$.value=F.value}}return(e,t)=>(v(),s(Lt,c({...n(u),...n(I),disabled:n(V),pressed:n(P),active:e.active,type:e.type,to:e.to,href:e.href,target:e.target,rel:e.rel,ariaLabel:e.ariaLabel},{id:n(C),ref_key:"element",ref:N,class:n(j)}),{default:O(()=>[b(e.$slots,"default",{},()=>[e.loading?b(e.$slots,"loading",{key:0},()=>[e.loadingIcon?(v(),s(pt,{key:0,class:"vv-button__loading-icon",name:e.loadingIcon},null,8,["name"])):d("v-if",!0),e.loadingLabel?(v(),f("span",Ot,m(e.loadingLabel),1)):d("v-if",!0)]):(v(),f(x,{key:1},[b(e.$slots,"before"),n(E)?(v(),s(pt,c({key:0},n(E),{class:"vv-button__icon"}),null,16)):d("v-if",!0),n(k)?(v(),f("span",$t,[b(e.$slots,"label",{},()=>[y(m(n(k)),1)])])):d("v-if",!0),b(e.$slots,"after")],64))])]),_:3},16,["id","class"]))}}),_t={...Ze,...et,...Ge,modelValue:{type:Boolean,default:void 0},reference:{type:Object,default:null},role:{type:String,default:_e.menu,validator:e=>Object.values(_e).includes(e)}},xt={focusOnHover:{type:Boolean,default:!1}},Vt={...Fe,...De,...Ye,...Ge,deselectHintLabel:{type:String},selectHintLabel:{type:String},selectedHintLabel:{type:String},focusOnHover:{type:Boolean,default:!1}};const Bt=["id","tabindex","role","aria-labelledby"],At=/* @__PURE__ */l({name:"VvDropdown",inheritAttrs:!1,props:_t,emits:["update:modelValue","beforeEnter","afterLeave","beforeExpand","beforeCollapse","afterExpand","afterCollapse","before-enter","after-leave","enter","afterEnter","enterCancelled","beforeLeave","leave","leaveCancelled"],setup(t,{expose:o,emit:i}){const s=t,y=i,{id:m}=u(s),g=kt(m),h=w(),L=r("auto"),k=r("auto"),$=r(),_=r(),M=r(),q=r(),z=e({get:()=>s.reference??$.value,set:e=>{$.value=e}}),K=r(!1);B(()=>{ne(_.value,()=>{K.value="true"===window.getComputedStyle(_.value).getPropertyValue("--dropdown-custom-position")?.trim()},{attributeFilter:["style"],window:window})});const T=e(()=>{const e=[];if(s.autoPlacement?"boolean"==typeof s.autoPlacement?e.push(X()):e.push(X(s.autoPlacement)):s.flip&&("boolean"==typeof s.flip?e.push(Y({fallbackStrategy:"initialPlacement"})):e.push(Y(s.flip))),s.shift&&("boolean"==typeof s.shift?e.push(Z()):e.push(Z(s.shift))),s.size){const t=({availableWidth:e,availableHeight:t})=>{L.value=`${e}px`,k.value=`${t}px`};"boolean"==typeof s.size?e.push(ee({apply:t})):e.push(ee({...s.size,apply:t}))}return s.offset&&(e.push(te(Number(s.offset))),["string","number"].includes(typeof s.offset)?e.push(te(Number(s.offset))):e.push(te(s.offset))),s.arrow&&e.push(le({element:M})),e}),{x:W,y:G,middlewareData:J,placement:R,strategy:U}=ae(z,_,{whileElementsMounted:(...e)=>oe(...e,{animationFrame:s.strategy===he.fixed}),placement:e(()=>s.placement),strategy:e(()=>s.strategy),middleware:T}),Q=e(()=>{if(K.value)return;const e=s.triggerWidth&&z.value?`${z.value?.offsetWidth}px`:void 0;return{position:U.value,top:`${G.value??0}px`,left:`${W.value??0}px`,maxWidth:e?void 0:L.value,maxHeight:k.value,width:e}}),ve=e(()=>R.value.split("-")[0]),ce=e(()=>{if(K.value)return;const e={[Se.top]:Se.bottom,[Se.right]:Se.left,[Se.bottom]:Se.top,[Se.left]:Se.right}[ve.value];return{left:void 0!==J.value.arrow?.x?`${J.value.arrow?.x}px`:void 0,top:void 0!==J.value.arrow?.y?`${J.value.arrow?.y}px`:void 0,[e]:-(M.value?.offsetWidth??0)/2+"px"}}),fe=ie(s,"modelValue",y),pe=r(!1),ye=e({get:()=>fe.value??pe.value,set:e=>{void 0!==fe.value?fe.value=e:pe.value=e}});function me(){ye.value=!0}function ge(){ye.value=!1}function Le(){ye.value=!ye.value}function ke(e){z.value=e}re(_,()=>{!s.keepOpen&&ye.value&&(ye.value=!1)},{ignore:[z]});const Oe=e(()=>z.value?.getAttribute?.("id")??void 0),$e=e(()=>({"aria-controls":g.value,"aria-haspopup":!0,"aria-expanded":ye.value})),{component:we,bus:Ve}=function({reference:e,id:t,expanded:o,aria:n}){const i=be(),r=l({name:"VvDropdownTriggerProvider",setup(){V(Ae,{reference:e,id:t,expanded:o,aria:n,bus:i})},render(){return a(x,{},this.$slots.default?.())}});return{bus:i,component:r}}({reference:z,id:g,expanded:ye,aria:$e});Ve.on("click",Le);const{role:Be,modifiers:He}=u(s),Ne=ft("vv-dropdown",He,e(()=>({arrow:s.arrow}))),{focused:Pe}=ue(_);function je(e){return e?[...e.querySelectorAll('a[href], button, input, textarea, select, details, [tabindex]:not([tabindex="-1"])')].filter(e=>!e.hasAttribute("disabled")&&!e.getAttribute("aria-hidden")):[]}function Ee(){D(()=>{const e=je(_.value);e.length>0&&e[0].focus({preventScroll:!0})})}function Fe(){D(()=>{if(Pe.value){const e=je(_.value);if(0===e.length||!document.activeElement)return;const t=e.indexOf(document.activeElement);t<e.length-1?e[t+1].focus({preventScroll:!0}):e[0].focus({preventScroll:!0})}})}function Ie(){D(()=>{if(Pe.value){const e=je(_.value);if(0===e.length||!document.activeElement)return;const t=e.indexOf(document.activeElement);t>0?e[t-1].focus({preventScroll:!0}):e[e.length-1].focus({preventScroll:!0})}})}S(ye,e=>{e&&s.autofocusFirst&&Ee()}),o({toggle:Le,show:me,hide:ge,init:ke,focusFirst:Ee,focusFirstListElement:function(){D(()=>{const e=je(q.value);e.length>0&&e[0].focus({preventScroll:!0})})},focusNext:Fe,focusPrev:Ie,customPosition:K});const De=se(_),{itemRole:Me}=function({role:t,...l}){const a=e(()=>t.value===_e.listbox?xe.option:xe.presentation);return V(Ce,{role:a,...l}),{itemRole:a}}({role:Be,expanded:ye,focused:Pe,hovered:De});de("Escape",e=>{ye.value&&(e.preventDefault(),ge())}),de("ArrowDown",e=>{ye.value&&Pe.value&&(e.preventDefault(),Fe())}),de("ArrowUp",e=>{ye.value&&Pe.value&&(e.preventDefault(),Ie())}),de([" ","Enter"],e=>{const t=e.target;ye.value&&Pe.value&&t&&t?.click()});const qe={"before-enter":()=>{y(ye.value?"beforeExpand":"beforeCollapse"),y("beforeEnter")},"after-leave":()=>{y(ye.value?"afterExpand":"afterCollapse"),y("afterLeave")},enter:()=>{y("enter")},"after-enter":()=>{y("afterEnter")},"enter-cancelled":()=>{y("enterCancelled")},"before-leave":()=>{y("beforeLeave")},leave:()=>{y("leave")},"leave-cancelled":()=>{y("leaveCancelled")}};return(e,t)=>(v(),f(x,null,[A(n(we),null,{default:O(()=>[b(e.$slots,"default",C(H({init:ke,show:me,hide:ge,toggle:Le,expanded:n(ye),aria:n($e)})))]),_:3}),A(N,c({name:e.transitionName},P(qe),{persisted:""}),{default:O(()=>[j(E("div",{ref_key:"floatingEl",ref:_,style:F(n(Q)),class:p(n(Ne))},[s.arrow?(v(),f("div",{key:0,ref_key:"arrowEl",ref:M,style:F(n(ce)),class:"vv-dropdown__arrow"},null,4)):d("v-if",!0),b(e.$slots,"before",C(H({expanded:n(ye)}))),E("div",c(n(h),{id:n(g),ref_key:"listEl",ref:q,tabindex:n(ye)?void 0:-1,role:n(Be),"aria-labelledby":n(Oe),class:"vv-dropdown__list"}),[b(e.$slots,"items",C(H({role:n(Me)})))],16,Bt),b(e.$slots,"after",C(H({expanded:n(ye)})))],6),[[I,n(ye)]])]),_:3},16,["name"])],64))}}),Ct={class:"vv-dropdown-optgroup",role:"presentation",tabindex:"-1"},Ht=/* @__PURE__ */l({name:"VvDropdownOptgroup",props:{...Te},setup(e){const t=e;return(e,l)=>(v(),f("li",Ct,[b(e.$slots,"default",{},()=>[y(m(t.label),1)])]))}}),Nt=/* @__PURE__ */l({name:"VvDropdownItem",props:xt,setup(e){const t=e,{role:l,expanded:a}=o(Ce,{}),i=r(null);!function({expanded:e}){V(He,{role:r(we.menuitem),expanded:e})}({expanded:a});const u=se(i),{focused:s}=ve(i),{focused:d}=ue(i);return S(u,e=>{e&&t.focusOnHover&&(s.value=!0)}),(e,t)=>(v(),f("div",c({role:n(l)},{ref_key:"element",ref:i,class:["vv-dropdown__item",{"focus-visible":n(s)||n(d)}]}),[b(e.$slots,"default")],16))}}),Pt=["title"],jt=/* @__PURE__ */l({name:"VvDropdownOption",props:Vt,setup(t){const l=t,{modifiers:a}=u(l),o=ft("vv-dropdown-option",a,e(()=>({disabled:l.disabled,selected:l.selected,unselectable:l.unselectable&&l.selected}))),i=e(()=>l.selected?l.unselectable?l.deselectHintLabel:l.selectedHintLabel:l.disabled?"":l.selectHintLabel);return(e,t)=>(v(),s(Nt,{class:p(n(o)),tabindex:e.disabled?-1:0,"aria-selected":e.selected,"aria-disabled":e.disabled,"focus-on-hover":e.focusOnHover},{default:O(()=>[b(e.$slots,"default"),E("span",{class:"vv-dropdown-option__hint",title:n(i)},[b(e.$slots,"hint",C(H({disabled:e.disabled,selected:e.selected,unselectable:e.unselectable})),()=>[y(m(n(i)),1)])],8,Pt)]),_:3},8,["class","tabindex","aria-selected","aria-disabled","focus-on-hover"]))}}),Et={...tt,...lt,...at,...Qe,...Pe,...je,...Je,...Ee,...Fe,...We,...Ge,...Re,...Ue,...Xe,...Ye,...Te,...ze,multiple:Boolean,required:Boolean,size:[String,Number],modelValue:{type:[String,Number,Boolean,Object,Array],default:void 0},autoselectFirst:{type:Boolean,default:!1},placeholder:String};function Ft(){return{...Et,options:{...Et.options,type:Array,default:()=>[]}}}function It(t,l,a){const o=ct(),n=e(()=>{if(o&&o.defaults.value?.[t])return o.defaults.value[t]});return e(()=>{if(void 0===n.value)return a;const e=n.value,t=l,o=a;return Object.keys(t).reduce((l,a)=>{const n=o[a];if(l[a]=n,a in e){if(Array.isArray(t[a])){const o=t[a];if(o.length){o[0]===n&&(l[a]=e[a])}}if("function"==typeof t[a]){(0,t[a])()===n&&(l[a]=e[a])}if("object"==typeof t[a]){let o=t[a].default;"function"==typeof o&&(o=o()),"object"==typeof o?JSON.stringify(o)===JSON.stringify(n)&&(l[a]=e[a]):o===n&&(l[a]=e[a])}}return l},{})})}function Dt(e,t){const{focused:l}=ve(e);return S(l,l=>{t(l?"focus":"blur",n(e))}),{focused:l}}function Mt(e){const{options:t,labelKey:l,valueKey:a,disabledKey:o}=u(e);return{options:t,getOptionLabel:e=>"string"==typeof e?e:"function"==typeof l.value?l.value(e):String(l.value?ye(e,l.value):e),getOptionValue:e=>"string"==typeof e?e:"function"==typeof a.value?a.value(e):a.value?ye(e,a.value):e,isOptionDisabled:e=>"string"!=typeof e&&("function"==typeof o.value?o.value(e):!!o.value&&Boolean(ye(e,o.value))),getOptionGrouped:e=>"string"==typeof e?[]:"object"==typeof e&&e&&"options"in e?e.options:[]}}const qt=["for"],zt={class:"vv-select__wrapper"},Kt={key:0,class:"vv-select__input-before"},Tt={class:"vv-select__inner"},Wt=["id"],Gt=["disabled","hidden"],Jt=["disabled","value"],Rt=["disabled","label"],Ut=["disabled","value"],Qt={key:2,class:"vv-select__input-after"},Xt=/* @__PURE__ */l({name:"VvSelect",props:Ft(),emits:["update:modelValue","focus","blur","clear"],setup(l,{emit:a}){const o=l,i=a,y=_(),g=It("VvSelect",Ft(),o),h=r(),{HintSlot:L,hasHintLabelOrSlot:k,hasInvalidLabelOrSlot:$,hintSlotScope:w}=vt(g,y),{focused:V}=Dt(h,i);function B(e){return"string"!=typeof e&&e.options?.length}const{id:N,modifiers:P,disabled:F,readonly:I,loading:D,icon:K,iconPosition:T,invalid:W,valid:G,floating:J,multiple:R}=u(o),U=kt(N),Q=e(()=>`${U.value}-hint`),X=e(()=>o.disabled||o.readonly),Y=e(()=>X.value?-1:o.tabindex),Z=e({get:()=>o.modelValue,set:e=>{Array.isArray(e)&&0===(e=e.filter(e=>void 0!==e)).length&&!o.unselectable&&h.value?h.value.value=String(o.modelValue):i("update:modelValue",e)}}),ee=e(()=>Array.isArray(Z.value)?Z.value.length>0:void 0!==Z.value&&null!==Z.value),te=e(()=>!X.value&&o.unselectable),le=ce(h);S(le,e=>{e&&o.autofocus&&(V.value=!0)});const{hasIconBefore:ae,hasIconAfter:oe}=bt(K,T),ne=e(()=>!0===o.invalid||!0!==o.valid&&void 0),ie=ft("vv-select",P,e(()=>({valid:G.value,invalid:W.value,loading:D.value,disabled:F.value,readonly:I.value,"icon-before":void 0!==ae.value,"icon-after":void 0!==oe.value,dirty:ee.value,focus:V.value&&!X.value,floating:J.value,multiple:R.value}))),{getOptionLabel:re,getOptionValue:ue,isOptionDisabled:se,getOptionGrouped:de}=Mt(o);function ve(){Array.isArray(Z.value)?Z.value=[]:Z.value=void 0,i("clear")}S(()=>o.options,e=>{if(e?.length&&o.autoselectFirst&&!ee.value){const t=ue(e[0]);Z.value=o.multiple?[t]:t}},{immediate:!0});const fe=e(()=>({name:o.name,tabindex:Y.value,disabled:X.value,required:o.required,size:o.size,autocomplete:o.autocomplete,multiple:o.multiple,"aria-invalid":ne.value,"aria-describedby":k.value?Q.value:void 0,"aria-errormessage":$.value?Q.value:void 0})),pe=e(()=>({valid:o.valid,invalid:o.invalid,modelValue:o.modelValue}));return(e,l)=>(v(),f("div",{class:p(n(ie))},[e.label?(v(),f("label",{key:0,for:n(U)},m(e.label),9,qt)):d("v-if",!0),E("div",zt,[e.$slots.before?(v(),f("div",Kt,[b(e.$slots,"before",C(H(n(pe))))])):d("v-if",!0),E("div",Tt,[n(ae)?(v(),s(pt,c({key:0},n(ae),{class:"vv-select__icon"}),null,16)):d("v-if",!0),j(E("select",c({id:n(U),ref_key:"selectEl",ref:h},n(fe),{"onUpdate:modelValue":l[0]||(l[0]=e=>t(Z)?Z.value=e:null)}),[e.placeholder?(v(),f("option",{key:0,value:void 0,disabled:!n(te),hidden:!n(te)},m(e.placeholder),9,Gt)):d("v-if",!0),(v(!0),f(x,null,M(e.options,(e,t)=>(v(),f(x,null,[B(e)?(v(),f("optgroup",{key:`group-${t}`,disabled:n(se)(e),label:n(re)(e)},[(v(!0),f(x,null,M(n(de)(e),(e,l)=>(v(),f("option",{key:`group-${t}-item-${l}`,disabled:n(se)(e),value:n(ue)(e)},m(n(re)(e)),9,Ut))),128))],8,Rt)):(v(),f("option",{key:t,disabled:n(se)(e),value:n(ue)(e)},m(n(re)(e)),9,Jt))],64))),256))],16,Wt),[[q,n(Z)]]),n(oe)?(v(),s(pt,c({key:1},n(oe),{class:"vv-select__icon vv-select__icon-after"}),null,16)):d("v-if",!0)]),n(te)&&n(g).showClearAction?(v(),s(n(yt),{key:1,"input-type":"select",label:e.labelClear,icon:e.iconClear,disabled:!n(ee),onClear:ve},null,8,["label","icon","disabled"])):d("v-if",!0),e.$slots.after?(v(),f("div",Qt,[b(e.$slots,"after",C(H(n(pe))))])):d("v-if",!0)]),A(n(L),{id:n(Q),class:"vv-select__hint"},z({_:2},[e.$slots.hint?{name:"hint",fn:O(()=>[b(e.$slots,"hint",C(H(n(w))))]),key:"0"}:void 0,e.$slots.loading?{name:"loading",fn:O(()=>[b(e.$slots,"loading",C(H(n(w))))]),key:"1"}:void 0,e.$slots.valid?{name:"valid",fn:O(()=>[b(e.$slots,"valid",C(H(n(w))))]),key:"2"}:void 0,e.$slots.invalid?{name:"invalid",fn:O(()=>[b(e.$slots,"invalid",C(H(n(w))))]),key:"3"}:void 0]),1032,["id"])],2))}}),Yt=["id"],Zt=["id","for"],el=["id","aria-controls","placeholder"],tl={key:0,class:"vv-select__input-before"},ll={class:"vv-select__inner"},al=["aria-controls","aria-expanded","aria-labelledby","aria-describedby","aria-errormessage","tabindex"],ol={key:0,class:"vv-select__value"},nl=["aria-label","onClick"],il={key:2,class:"vv-select__input-after"},rl=/* @__PURE__ */l({...{name:"VvCombobox",components:{VvDropdown:At,VvDropdownOption:jt,VvDropdownOptgroup:Ht,VvButton:wt}},props:/* @__PURE__ */K(it(),{search:{type:String,default:"",required:!1},searchModifiers:{}}),emits:/* @__PURE__ */K(["update:modelValue","update:search","update:options","focus","blur","clear","change:search"],["update:search"]),setup(l,{emit:a}){const o=l,i=a,g=_(),h=It("VvCombobox",it(),o),L=r(null),k=r(null),$=r(null),w=r(),{HintSlot:V,hasHintLabelOrSlot:B,hasInvalidLabelOrSlot:N,hintSlotScope:P}=vt(h,g),{focused:F}=Dt(L,i),{focused:I}=ue($);S(F,e=>{o.autoOpen&&(!e||K.value?e||!K.value||I.value||Q():U())}),S(I,e=>{F.value||e||!K.value||Q()});const D=T(l,"search"),q=fe(D,e(()=>Number(o.debounceSearch)));S(q,()=>{i("update:search",q.value),i("change:search",q.value)});const K=r(!1);function R(){Se.value||(K.value=!K.value)}function U(){Se.value||K.value||(K.value=!0)}function Q(){!Se.value&&K.value&&(K.value=!1)}function X(){h.value.searchable&&k.value&&k.value.focus({preventScroll:!0})}function Y(){h.value.keepSearch||(D.value="")}function Z(e){return"string"!=typeof e&&e.options?.length}const{id:ee,icon:te,iconPosition:le,modifiers:ae,disabled:oe,required:ne,readonly:ie,loading:re,valid:se,invalid:ve,floating:ce}=u(o),be=kt(ee),ye=e(()=>`${be.value}-hint`),me=e(()=>`${be.value}-dropdown`),ge=e(()=>`${be.value}-search`),he=e(()=>`${be.value}-label`),Se=e(()=>o.disabled||o.readonly),Le=e(()=>Se.value?-1:o.tabindex),ke=e({get:()=>Array.isArray(o.modelValue)?o.modelValue:void 0!==o.modelValue&&null!==o.modelValue?[o.modelValue]:[],set:e=>{i("update:modelValue",o.multiple||Array.isArray(o.modelValue)?e:e.pop())}}),Oe=e(()=>ke.value.length),$e=e(()=>Oe.value>0),we=e(()=>o.multiple?void 0===o.maxValues?1/0:Number(o.maxValues):1),xe=e(()=>!Se.value&&(!!o.unselectable&&(0===Number(o.minValues)||Oe.value>Number(o.minValues)))),Ve=e(()=>!Se.value&&(!o.multiple||Oe.value<we.value)),Be=r(!1),Ae=e(()=>Be.value||re.value),{hasIconBefore:Ce,hasIconAfter:He}=bt(te,le),Ne=ft("vv-select",ae,e(()=>({disabled:oe.value,required:ne.value,loading:Ae.value,readonly:ie.value,"icon-before":void 0!==Ce.value,"icon-after":void 0!==He.value,valid:se.value,invalid:ve.value,dirty:$e.value,focus:(F.value||I.value||K.value)&&!Se.value,floating:ce.value,badges:o.badges}))),Pe=r(/* @__PURE__ */new Set),{getOptionLabel:je,getOptionValue:Ee,getOptionGrouped:Fe,isOptionDisabled:Ie}=Mt(o),De=e(()=>{const e=[...Pe.value];for(const t of o.options)Z(t)?e.push(...Fe(t)):e.push(t);return e}),Me=e(()=>{const e=[...o.options,...Pe.value];for(const t of ke.value)De.value.some(e=>{const l=Ee(e);return"object"==typeof l&&"object"==typeof t?JSON.stringify(l)===JSON.stringify(t):l===t})||e.push(t);return e});function qe(e){return Ie(e)||!Ve.value&&!Ke(e)}S(Pe,e=>{e.size>0&&i("update:options",Me.value)});const ze=pe(async()=>{if(h.value.searchFunction){Be.value=!0;const e=await Promise.resolve(h.value.searchFunction(q.value,Me.value));return Be.value=!1,e}const e=q.value.toLowerCase().trim();return e?Me.value?.reduce((t,l)=>{if(Z(l)){const a=je(l).toLowerCase(),o=Fe(l).filter(t=>je(t).toLowerCase().includes(e));if(a.includes(e))t.push(l);else if(o.length>0){const e="object"==typeof l?{...l,options:o}:l;t.push(e)}return t}return je(l).toLowerCase().includes(e)&&t.push(l),t},[]):Me.value});function Ke(e){const t=Ee(e);return"object"==typeof t?ke.value.some(e=>"object"==typeof e&&JSON.stringify(e)===JSON.stringify(t)):ke.value.includes(t)}const Te=e(()=>Me.value.reduce((e,t)=>Z(t)?[...e,...Fe(t)]:[...e,t],[]).filter(e=>Ke(e))),We=e(()=>Te.value.map(e=>je(e)).join(o.separator));function Ge(){o.autoOpen?U():R()}function Je(e){const t=Ke(e),l=Ee(e);t&&xe.value?ke.value=ke.value.filter(e=>"object"==typeof l&&"object"==typeof e?JSON.stringify(e)!==JSON.stringify(l):e!==l):!t&&Ve.value&&(o.multiple?ke.value=[...ke.value,l]:ke.value=[l]),o.multiple||o.keepOpen||Q()}function Re(){ke.value=[],i("update:search",""),i("clear")}S(Me,e=>{if(e?.length&&o.autoselectFirst&&!$e.value){const t=e.find(e=>!Z(e));if(t)return void Je(t);const l=e.find(e=>Z(e));if(l){const e=Fe(l);e.length&&Je(e[0])}}},{immediate:!0});const Ue=e(()=>({id:be.value,name:o.name,tabindex:Le.value,valid:se.value,validLabel:h.value.validLabel,invalid:ve.value,invalidLabel:h.value.invalidLabel,hintLabel:h.value.hintLabel,loading:Ae.value,loadingLabel:h.value.loadingLabel,disabled:oe.value,readonly:ie.value,modifiers:h.value.modifiers,options:h.value.options,labelKey:h.value.labelKey,valueKey:h.value.valueKey,icon:h.value.icon,iconPosition:h.value.iconPosition,floating:h.value.floating,unselectable:xe.value,autoselectFirst:h.value.autoselectFirst,multiple:h.value.multiple,label:h.value.label,placeholder:h.value.placeholder,modelValue:o.modelValue})),Qe=e(()=>({id:me.value,reference:$.value,placement:h.value.placement,strategy:h.value.strategy,transitionName:h.value.transitionName,offset:h.value.offset,shift:h.value.shift,flip:h.value.flip,autoPlacement:h.value.autoPlacement,arrow:h.value.arrow,autofocusFirst:!!h.value.searchable||h.value.autofocusFirst,triggerWidth:h.value.triggerWidth,modifiers:h.value.dropdownModifiers})),Xe=e(()=>({valid:o.valid,invalid:o.invalid,modelValue:o.modelValue}));function Ye(){if(ze.value?.length){if(1===ze.value.length){const e=ze.value[0];if(Z(e)){const t=Fe(e);return void(t.length&&Je(t[0]))}return void Je(e)}w.value?.focusFirstListElement()}else if(h.value.addable){const e=D.value.trim();if(!e)return;if(De.value.some(t=>je(t).toLowerCase()===e.toLowerCase()))return;Pe.value.add(e),Je(e)}}return de([" ","Enter"],e=>{o.autoOpen||!K.value&&F.value&&(e.preventDefault(),e.stopImmediatePropagation(),R())},{target:L}),(e,l)=>e.native?(v(),s(Xt,c({key:1},n(Ue),{"onUpdate:modelValue":l[3]||(l[3]=e=>i("update:modelValue",e))}),null,16)):(v(),f("div",{key:0,id:n(be),class:p(n(Ne))},[e.label?(v(),f("label",{key:0,id:n(he),for:n(h).searchable?n(ge):void 0},m(e.label),9,Zt)):d("v-if",!0),E("div",{ref_key:"wrapperEl",ref:$,class:"vv-select__wrapper"},[A(At,c({ref_key:"dropdownEl",ref:w,modelValue:n(K),"onUpdate:modelValue":l[2]||(l[2]=e=>t(K)?K.value=e:null)},n(Qe),{role:n(_e).listbox,onAfterExpand:X,onAfterCollapse:Y}),z({default:O(({aria:t})=>[e.$slots.before?(v(),f("div",tl,[b(e.$slots,"before",C(H(n(Xe))))])):d("v-if",!0),E("div",ll,[n(Ce)?(v(),s(pt,c({key:0},n(Ce),{class:"vv-select__icon"}),null,16)):d("v-if",!0),E("div",c({ref_key:"inputEl",ref:L},t,{class:"vv-select__input",role:"combobox","aria-controls":n(me),"aria-expanded":n(K),"aria-labelledby":n(he),"aria-describedby":n(B)?n(ye):void 0,"aria-errormessage":n(N)?n(ye):void 0,tabindex:n(Le),onClickPassive:Ge}),[n(We)?b(e.$slots,"value",C(c({key:0},{selectedOptions:n(Te),onInput:Je})),()=>[e.badges?(v(!0),f(x,{key:1},M(n(Te),(t,l)=>(v(),s(gt,{key:l,modifiers:e.badgeModifiers,class:"vv-select__badge"},{default:O(()=>[y(m(n(je)(t))+" ",1),n(xe)?(v(),f("button",{key:0,"aria-label":n(h).deselectActionLabel,type:"button",onClick:W(e=>Je(t),["stop"])},[A(pt,{name:"close"})],8,nl)):d("v-if",!0)]),_:2},1032,["modifiers"]))),128)):(v(),f("div",ol,m(n(We)),1))]):b(e.$slots,"placeholder",{key:1},()=>[y(m(e.placeholder),1)])],16,al),n(He)?(v(),s(pt,c({key:1},n(He),{class:"vv-select__icon vv-select__icon-after"}),null,16)):d("v-if",!0)]),n(xe)&&n(h).showClearAction?(v(),s(n(yt),{key:1,"input-type":"select",label:e.labelClear,icon:e.iconClear,disabled:!n($e),onClear:Re},null,8,["label","icon","disabled"])):d("v-if",!0),e.$slots.after?(v(),f("div",il,[b(e.$slots,"after",C(H(n(Xe))))])):d("v-if",!0)]),items:O(()=>[!n(oe)&&n(ze)?.length?(v(!0),f(x,{key:0},M(n(ze),(t,l)=>(v(),f(x,{key:l},[Z(t)?(v(),f(x,{key:0},[A(Ht,{label:n(je)(t)},{default:O(()=>[b(e.$slots,"option-group",c({ref_for:!0},{option:t,selectedOptions:n(Te)}),()=>[y(m(n(je)(t)),1)])]),_:2},1032,["label"]),(v(!0),f(x,null,M(n(Fe)(t),(t,l)=>(v(),s(jt,c({ref_for:!0},{selected:Ke(t),disabled:qe(t),unselectable:n(xe),deselectHintLabel:n(h).deselectHintLabel,selectHintLabel:n(h).selectHintLabel,selectedHintLabel:n(h).selectedHintLabel,focusOnHover:e.focusOnHover},{key:l,class:"vv-dropdown-option",onClickPassive:e=>Je(t)}),{default:O(()=>[b(e.$slots,"option",c({ref_for:!0},{option:t,selectedOptions:n(Te),selected:Ke(t),disabled:qe(t)}),()=>[y(m(n(je)(t)),1)])]),_:2},1040,["onClickPassive"]))),128))],64)):(v(),s(jt,c({key:1,ref_for:!0},{selected:Ke(t),disabled:qe(t),unselectable:n(xe),deselectHintLabel:n(h).deselectHintLabel,selectHintLabel:n(h).selectHintLabel,selectedHintLabel:n(h).selectedHintLabel,focusOnHover:e.focusOnHover},{class:"vv-dropdown-option",onClickPassive:e=>Je(t)}),{default:O(()=>[b(e.$slots,"option",c({ref_for:!0},{option:t,selectedOptions:n(Te),selected:Ke(t),disabled:qe(t)}),()=>[y(m(n(je)(t)),1)])]),_:2},1040,["onClickPassive"]))],64))),128)):e.options.length?(v(),s(jt,{key:2,modifiers:"inert"},{default:O(()=>[b(e.$slots,"no-results",{},()=>[y(m(n(h).addable?n(h).addOptionHintLabel:n(h).noResultsLabel),1)])]),_:3})):(v(),s(jt,{key:1,modifiers:"inert"},{default:O(()=>[b(e.$slots,"no-options",{},()=>[y(m(n(h).addable&&D.value.length?n(h).addOptionHintLabel:n(h).noOptionsLabel),1)])]),_:3}))]),after:O(()=>[b(e.$slots,"dropdown::after",{},()=>[n(w)?.customPosition?(v(),s(wt,{key:0,label:n(h).closeLabel,modifiers:"secondary",onClick:l[1]||(l[1]=e=>n(w).hide())},null,8,["label"])):d("v-if",!0)])]),_:2},[n(h).searchable||e.$slots["dropdown::before"]?{name:"before",fn:O(()=>[b(e.$slots,"dropdown::before"),n(h).searchable&&!n(oe)?j((v(),f("input",{key:0,id:n(ge),ref_key:"inputSearchEl",ref:k,"onUpdate:modelValue":l[0]||(l[0]=e=>D.value=e),"aria-autocomplete":"list","aria-controls":n(me),autocomplete:"off",spellcheck:"false",type:"search",class:"vv-dropdown__search",placeholder:n(h).searchPlaceholder,onKeyup:G(Ye,["enter"])},null,40,el)),[[J,D.value]]):d("v-if",!0)]),key:"0"}:void 0]),1040,["modelValue","role"])],512),A(n(V),{id:n(ye),class:"vv-select__hint"},z({_:2},[e.$slots.hint?{name:"hint",fn:O(()=>[b(e.$slots,"hint",C(H(n(P))))]),key:"0"}:void 0,e.$slots.loading?{name:"loading",fn:O(()=>[b(e.$slots,"loading",C(H(n(P))))]),key:"1"}:void 0,e.$slots.valid?{name:"valid",fn:O(()=>[b(e.$slots,"valid",C(H(n(P))))]),key:"2"}:void 0,e.$slots.invalid?{name:"invalid",fn:O(()=>[b(e.$slots,"invalid",C(H(n(P))))]),key:"3"}:void 0]),1032,["id"])],10,Yt))}});export{rl as default};