@volverjs/ui-vue
Version:
@volverjs/ui-vue is a lightweight Vue 3 component library to accompany @volverjs/style.
2 lines • 97.2 kB
JavaScript
import{inject as e,computed as t,toRef as a,unref as l,defineComponent as o,useAttrs as i,useId as n,toRefs as r,ref as s,watch as u,onBeforeUnmount as d,createElementBlock as v,openBlock as c,normalizeClass as p,createElementVNode as f,withModifiers as m,renderSlot as b,normalizeProps as y,guardReactiveProps as g,createTextVNode as h,toDisplayString as S,onMounted as k,isRef as _,provide as $,watchEffect as w,reactive as x,nextTick as V,Fragment as A,renderList as L,createBlock as O,mergeProps as C,createSlots as E,withCtx as B,getCurrentInstance as I,resolveComponent as T,resolveDynamicComponent as D,mergeDefaults as N,createCommentVNode as M,createVNode as H,TransitionGroup as P,toHandlers as R,useSlots as j,h as F,withDirectives as U,vModelCheckbox as G,Transition as q,normalizeStyle as z,vShow as W,vModelSelect as K,mergeModels as Y,useModel as J,withKeys as X,vModelText as Z,vModelRadio as Q}from"vue";import{useVModel as ee,useStorage as te,useMutationObserver as ae,onClickOutside as le,useFocusWithin as oe,useElementHover as ie,onKeyStroke as ne,useFocus as re,useElementVisibility as se,refDebounced as ue,computedAsync as de}from"@vueuse/core";import ve from"mitt";import{iconLoaded as ce,Icon as pe,addIcon as fe}from"@iconify/vue";import{getProperty as me}from"dot-prop";import{autoPlacement as be,flip as ye,shift as ge,size as he,offset as Se,arrow as ke,useFloating as _e,autoUpdate as $e}from"@floating-ui/vue";import we from"vuedraggable";import{useIMask as xe}from"vue-imask";const Ve="eye-on",Ae="eye-off",Le="calendar",Oe="time",Ce="color",Ee="close",Be="add",Ie="trash",Te="edit",De="download",Ne={prefix:"normal"};var Me=/* @__PURE__ */(e=>(e.local="local",e.session="session",e))(Me||{}),He=/* @__PURE__ */(e=>(e.absolute="absolute",e.fixed="fixed",e))(He||{}),Pe=/* @__PURE__ */(e=>(e.left="left",e.right="right",e.top="top",e.bottom="bottom",e))(Pe||{}),Re=/* @__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))(Re||{}),je=/* @__PURE__ */(e=>(e.before="before",e.after="after",e))(je||{}),Fe=/* @__PURE__ */(e=>(e.button="button",e.submit="submit",e.reset="reset",e))(Fe||{}),Ue=/* @__PURE__ */(e=>(e.nuxtLink="nuxt-link",e.routerLink="router-link",e.a="a",e.button="button",e))(Ue||{}),Ge=/* @__PURE__ */(e=>(e.button="button",e.link="link",e.menuitem="menuitem",e))(Ge||{}),qe=/* @__PURE__ */(e=>(e.listbox="listbox",e.menu="menu",e))(qe||{}),ze=/* @__PURE__ */(e=>(e.option="option",e.presentation="presentation",e))(ze||{}),We=/* @__PURE__ */(e=>(e.alert="alert",e.alertdialog="alertdialog",e))(We||{});const Ke=Symbol.for("volver"),Ye=Symbol.for("buttonGroup"),Je=Symbol.for("radioGroup"),Xe=Symbol.for("checkGroup"),Ze=Symbol.for("accordionGroup"),Qe=Symbol.for("dropdownTrigger"),et=Symbol.for("dropdownItem"),tt=Symbol.for("dropdownAction"),at=Symbol.for("alertGroup"),lt={to:{type:[String,Object]},href:String,target:String,rel:{type:String,default:"noopener noreferrer"}},ot={valid:{type:Boolean,default:!1},validLabel:{type:[String,Array],default:void 0}},it={invalid:{type:Boolean,default:!1},invalidLabel:{type:[String,Array],default:void 0}},nt={loading:{type:Boolean,default:!1},loadingLabel:{type:String,default:"Loading..."}},rt={disabled:{type:Boolean,default:!1}},st={required:{type:Boolean,default:!1}},ut={selected:{type:Boolean,default:!1}},dt={active:{type:Boolean,default:!1}},vt={current:{type:Boolean,default:!1}},ct={showClearAction:{type:Boolean,default:!1},iconClear:{type:[String,Object],default:Ee},labelClear:{type:String,default:"Clear"}},pt={pressed:{type:Boolean,default:!1}},ft={label:{type:[String,Number],default:void 0}},mt={readonly:{type:Boolean,default:!1}},bt={modifiers:{type:[String,Array],default:void 0}},yt={hintLabel:{type:String,default:""}},gt={options:{type:Array,default:()=>[]},labelKey:{type:[String,Function],default:"label"},valueKey:{type:[String,Function],default:"value"},disabledKey:{type:[String,Function],default:"disabled"}},ht={count:{type:[Boolean,String],default:!1,validator:e=>[!0,!1,"limit","countdown"].includes(e)}},St={debounce:{type:[Number,String],default:void 0}},kt={icon:{type:[String,Object],default:void 0},iconPosition:{type:String,default:je.before,validation:e=>Object.values(je).includes(e)}},_t={tabindex:{type:[String,Number],default:0}},$t={floating:{type:Boolean,default:!1}},wt={unselectable:{type:Boolean,default:!0}},xt={id:[String,Number]},Vt={placement:{type:String,default:Pe.bottom,validator:e=>Object.values(Pe).includes(e)||Object.values(Re).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}},At={...xt,name:{type:String,required:!0}},Lt={autofocus:{type:Boolean,default:!1}},Ot={autocomplete:{type:String,default:"off"}},Ct={...At,...Lt,...Ot,..._t,...rt,...mt,...ot,...it,...yt,...nt,...bt,...ht,...St,...kt,...$t,...ft,minlength:{type:[String,Number],default:void 0},maxlength:{type:[String,Number],default:void 0},placeholder:{type:String,default:void 0},...st},Et={...At,..._t,...ot,...it,...yt,...rt,...mt,...bt,...ft,...nt,value:{type:[String,Number,Boolean],default:void 0},modelValue:{type:[Object,Number,Boolean,String],default:void 0}},Bt={...ot,...it,...gt,...yt,...rt,...mt,...bt,...ft,...nt,...st,modelValue:{type:[String,Array,Boolean,Number,Symbol],default:void 0},name:{type:String,required:!0},vertical:{type:Boolean,default:!1}},It={...rt,...ft,...pt,...dt,...vt,...lt,type:{type:String,default:Fe.button,validator:e=>Object.values(Fe).includes(e)},ariaLabel:{type:String,default:void 0},defaultTag:{type:String,default:Ue.button}},Tt={items:{type:Array,default:()=>[]}},Dt={storageType:{type:String,default:Me.local,validator:e=>Object.values(Me).includes(e)},storageKey:String};function Nt(l){const o=e(l,void 0),i=t(()=>void 0!==o);return{group:o,isInGroup:i,getGroupOrLocalRef:function(e,l,i){const n=o?.[e];if(n)return t({get:()=>n.value,set(e){n.value=e}});const r=a(l,e);return t({get:()=>r.value,set(t){i&&i(`update:${e}`,t)}})}}}const Mt={...bt,name:String,title:String,content:String,modelValue:{type:Boolean,default:void 0},disabled:Boolean,not:Boolean};function Ht(e,a,o){return t(()=>{const t={[e]:!0},i="string"==typeof a?.value?a.value.split(" "):a?.value;return i&&Array.isArray(i)&&i.forEach(a=>{a&&(t[`${e}--${a}`]=!0)}),o&&Object.keys(o.value).forEach(a=>{t[`${e}--${a}`]=l(o.value[a])}),t})}const Pt=["id","open"],Rt=["aria-controls","aria-expanded"],jt=["aria-hidden"],Ft=/* @__PURE__ */o({name:"VvAccordion",props:Mt,emits:["update:modelValue"],setup(e,{expose:a,emit:o}){const k=e,_=o,$=i(),w=ee(k,"modelValue",_),x=t(()=>k.name||$?.id||n()),{title:V,content:A,not:L}=r(k),{isInGroup:O,modifiers:C,disabled:E,bus:B}=function(e){const{group:a,isInGroup:l}=Nt(Ze),o=t(()=>Boolean(e.disabled||a?.disabled.value)),i=t(()=>{let t=e.modifiers,l=a?.modifiers.value;const o=/* @__PURE__ */new Set;return t&&(Array.isArray(t)||(t=t.split(" ")),t.forEach(e=>o.add(e))),l&&(Array.isArray(l)||(l=l.split(" ")),l.forEach(e=>o.add(e))),Array.from(o)});return{isInGroup:l,group:a,modifiers:i,disabled:o,bus:a?.bus}}(k),I=s(!1);function T(){E.value||(O.value?B?.emit("toggle",{name:x.value,value:!I.value}):I.value=!I.value)}function D(){I.value||T()}function N(){I.value&&T()}function M(e){B?B.emit("expand",{name:e}):console.warn(`[VvAccordion]: You are trying to expand accordion group of "${x.value}" but it is not in a group`)}function H(e){B?B?.emit("collapse",{name:e}):console.warn(`[VvAccordion]: You are trying to collapse accordion group of "${x.value}" but it is not in a group`)}u(w,e=>{"boolean"==typeof e&&(I.value=L.value?!e:e)},{immediate:!0}),u(I,e=>{w.value=L.value?!e:e}),B?.on("toggle",({name:e,value:t})=>{e===x.value&&(I.value=t)}),u(x,(e,t)=>{B&&(t&&t!==e&&B.emit("unregister",{name:t}),B.emit("register",{name:e}))},{immediate:!0}),d(()=>{B&&B.emit("unregister",{name:x.value})}),a({isExpanded:I,expand:D,collapse:N,groupExpand:M,groupCollapse:H});const P=Ht("vv-accordion",C,t(()=>({disabled:E.value})));return(e,t)=>(c(),v("details",{id:l(x),class:p(l(P)),open:l(I)},[f("summary",{"aria-controls":l(x),"aria-expanded":l(I),class:"vv-accordion__summary",onClick:t[0]||(t[0]=m(e=>T(),["prevent"]))},[b(e.$slots,"summary",y(g({isExpanded:l(I),expand:D,collapse:N,groupExpand:M,groupCollapse:H})),()=>[h(S(l(V)),1)])],8,Rt),f("div",{"aria-hidden":!l(I),class:"vv-accordion__content"},[b(e.$slots,"default",y(g({isExpanded:l(I),expand:D,collapse:N,groupExpand:M,groupCollapse:H})),()=>[h(S(l(A)),1)])],8,jt)],10,Pt))}}),Ut={...bt,...Dt,modelValue:{type:[String,Array],default:void 0},items:{type:Array,default:()=>[]},collapse:Boolean,itemModifiers:{type:[String,Array],default:""},disabled:Boolean,not:Boolean};function Gt(e,t=Me.local,a){const o=s();let i;return a&&(o.value=a),k(()=>{e&&u(e,(e,a)=>{const n=l(t)===Me.session?sessionStorage:localStorage;if(a&&a!==e&&n.removeItem(a),e)return i=te(e,i?.value??o.value,n),void(i.value&&(o.value=i.value));i=void 0},{immediate:!0}),_(t)&&u(t,(t,a)=>{if(e?.value){if(t){const a=t===Me.session?sessionStorage:localStorage;i=te(e.value,i?.value??o.value,a)}if(a&&a!==t){(a===Me.session?sessionStorage:localStorage).removeItem(e.value)}}})}),u(o,e=>{i&&(i.value=e)},{deep:!0,immediate:!0}),o}function qt(e,t){$(e,t)}const zt=/* @__PURE__ */o({name:"VvAccordionGroup",props:Ut,emits:["update:modelValue"],setup(e,{expose:a,emit:o}){const i=e,n=o,{disabled:s,modifiers:u,itemModifiers:d,items:f,storageKey:m,storageType:h}=r(i);w(()=>{"string"==typeof i.modelValue&&i.collapse&&console.warn("[VvAccordionGroup]: modelValue is a string but collapse is true.")});const S=x(/* @__PURE__ */new Set),_=Gt(m,h,[]),$=t({get:()=>null!==i.modelValue&&void 0!==i.modelValue?i.modelValue:_.value,set:e=>{n("update:modelValue",e),_.value=e}}),I=t({get:()=>{if(void 0===$.value)/* @__PURE__ */
return new Set;let e=/* @__PURE__ */new Set;return i.not?"string"==typeof $.value?e=new Set([...S].filter(e=>e!==$.value)):Array.isArray($.value)&&(e=new Set([...S].filter(e=>!$.value.includes(e)))):"string"==typeof $.value?e=/* @__PURE__ */new Set([$.value]):Array.isArray($.value)&&(e=new Set($.value)),e},set:e=>{i.not?$.value=[...S].filter(t=>!e.has(t)):i.collapse?$.value=[...e]:$.value=e.values().next().value}});k(()=>{i.not&&void 0===$.value&&($.value=i.collapse?[]:[...S.values()].splice(1,S.size)),V(()=>{for(const e of S)T.emit("toggle",{name:e,value:I.value.has(e)})})});const T=ve();function D(e){if("string"!=typeof e)if(Array.isArray(e))for(const t of e)T.emit("toggle",{name:t,value:!0});else for(const t of S)T.emit("toggle",{name:t,value:!0});else T.emit("toggle",{name:e,value:!0})}function N(e){if("string"!=typeof e)if(Array.isArray(e))for(const t of e)T.emit("toggle",{name:t,value:!1});else for(const t of S)T.emit("toggle",{name:t,value:!1});else T.emit("toggle",{name:e,value:!1})}qt(Ze,{disabled:s,modifiers:d,bus:T}),T.on("register",({name:e})=>{S.add(e)}),T.on("unregister",({name:e})=>{S.delete(e)}),T.on("toggle",({name:e,value:t})=>{const a=new Set(I.value);if(t){if(!i.collapse){for(const t of a)t!==e&&T.emit("toggle",{name:t,value:!1});a.clear()}return a.add(e),void(I.value=a)}a.delete(e),I.value=a}),T.on("expand",({name:e})=>D(e)),T.on("collapse",({name:e})=>N(e)),a({expandedAccordions:I,expand:D,collapse:N});const M=Ht("vv-accordion-group",u,t(()=>({disabled:s.value})));return(e,t)=>(c(),v("div",{class:p(l(M))},[b(e.$slots,"default",y(g({expandedAccordions:l(I),expand:D,collapse:N})),()=>[(c(!0),v(A,null,L(l(f),t=>(c(),O(Ft,C({key:t.title},{ref_for:!0},{name:t.name,title:t.title,content:t.content}),E({_:2},[e.$slots[`summary::${t.name}`]?{name:"summary",fn:B(a=>[b(e.$slots,`summary::${t.name}`,C({ref_for:!0},a))]),key:"0"}:void 0,e.$slots[`content::${t.name}`]?{name:"default",fn:B(a=>[b(e.$slots,`content::${t.name}`,C({ref_for:!0},a))]),key:"1"}:void 0]),1040))),128))])],2))}});function Wt(){return e(Ke,void 0)}const Kt=/* @__PURE__ */o({name:"VvAction",props:It,emits:["click","mouseover","mouseleave"],setup(a,{expose:o,emit:i}){const n=a,r=i,d=I(),v=Wt(),p=s(null);o({$el:p});const{reference:f,bus:m,aria:y,expanded:g}=e(Qe,{});u(()=>p.value,e=>{f&&(f.value=e)});const k=t(()=>n.pressed||g?.value),{role:_}=e(tt,{}),$=t(()=>{switch(!0){case n.disabled:return Ue.button;case void 0!==n.to:return v?.nuxt?T(Ue.nuxtLink):Ue.routerLink;case void 0!==n.href:return Ue.a;default:return n.defaultTag}}),w=t(()=>{const e={...y?.value,ariaPressed:!!k.value||void 0,ariaLabel:n.ariaLabel,role:_?.value};switch($.value){case Ue.a:return{...e,href:n.href,target:n.target,rel:n.rel};case Ue.routerLink:case Ue.nuxtLink:return{...e,to:n.to,target:n.target};case Ue.button:return{...e,type:n.type,disabled:n.disabled};default:return e}});function x(e){n.disabled?e.preventDefault():d?.vnode.props?.onClick?r("click",e):m?.emit("click",e)}function V(e){d?.vnode.props?.onMouseover?r("mouseover",e):m?.emit("mouseover",e)}function A(e){d?.vnode.props?.onMouseleave?r("mouseleave",e):m?.emit("mouseleave",e)}return(e,t)=>(c(),O(D(l($)),C(l(w),{ref_key:"element",ref:p,class:{active:e.active,pressed:l(k),disabled:e.disabled,current:e.current},onClickPassive:x,onMouseoverPassive:V,onMouseleavePassive:A}),{default:B(()=>[b(e.$slots,"default",{},()=>[h(S(e.label),1)])]),_:3},16,["class"]))}});function Yt(e){return t(()=>String(e?.value||n()))}function Jt(e,a){const l=t(()=>"string"==typeof e?.value?{name:e?.value}:e?.value),o=t(()=>a?.value===je.before?l.value:void 0),i=t(()=>a?.value===je.after?l.value:void 0),n=t(()=>a?.value===Pe.left?l.value:void 0),r=t(()=>a?.value===Pe.right?l.value:void 0),s=t(()=>a?.value===Pe.top?l.value:void 0),u=t(()=>a?.value===Pe.bottom?l.value:void 0);return{hasIcon:l,hasIconLeft:n,hasIconRight:r,hasIconTop:s,hasIconBottom:u,hasIconBefore:o,hasIconAfter:i}}const Xt={...xt,...kt,modifiers:{type:[String,Array],default:void 0},dismissable:{type:Boolean,default:!1},autoClose:{type:Number,default:0},closeLabel:{type:String,default:"Close"},title:{type:String,default:void 0},content:{type:String,default:void 0},footer:{type:String,default:void 0},role:{type:String,default:We.alert}};function Zt(a,l){const{bus:o}=e(at,{}),i=Yt(t(()=>a.id)),n=t(()=>`${i.value}-title`);let r;const d=()=>{r&&clearTimeout(r),l("close",i.value),o?.emit("close",i.value)};u(()=>a.autoClose,e=>{e>0?r=setTimeout(d,e):r&&clearTimeout(r)},{immediate:!0});const v=s(!1),c=()=>{v.value=!0,r&&clearTimeout(r)},p=()=>{v.value=!1,a.autoClose>0&&(r=setTimeout(d,a.autoClose))},{hasIcon:f}=Jt(t(()=>a.icon)),m=Ht("vv-alert",t(()=>a.modifiers),t(()=>({dismissable:a.autoClose>0||a.dismissable,"auto-close":a.autoClose>0,hover:v.value}))),b=t(()=>({"--alert-duration":`${a.autoClose}ms`}));return{close:d,hasIcon:f,hasTitleId:n,hasProps:t(()=>({onMouseover:c,onMouseleave:p,class:m.value,style:b.value,role:a.role,"aria-labelledby":n.value}))}}const Qt=/* @__PURE__ */o({name:"VvIcon",props:/* @__PURE__ */N({name:{},color:{},width:{},height:{},provider:{},prefix:{},src:{},horizontalFlip:{type:Boolean},verticalFlip:{type:Boolean},flip:{},mode:{},inline:{type:Boolean},rotate:{},onLoad:{type:Function},svg:{},modifiers:{}},Ne),setup(e){const a=e,o=t(()=>"string"==typeof a.rotate?Number.parseFloat(a.rotate):a.rotate),i=s(!0),n=Wt(),{modifiers:u}=r(a),d=Ht("vv-icon",u),v=t(()=>a.provider||n?.iconsProvider),p=t(()=>{const e=a.name??"",t=`@${v.value}:${a.prefix}:${e}`;if(ce(t))return t;const l=n?.iconsCollections.find(t=>{const a=`@${v.value}:${t.prefix}:${e}`;return ce(a)});return l?`@${v.value}:${l.prefix}:${e}`:e});function f(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),l=t?.innerHTML.trim()||"";t&&l&&fe(`@${v.value}:${a.prefix}:${a.name}`,{body:l,height:t.viewBox.baseVal.height,width:t.viewBox.baseVal.width})}return n&&a.src&&!ce(`@${v.value}:${a.prefix}:${a.name}`)&&(i.value=!1,n.fetchIcon(a.src).then(e=>{e&&(f(e),i.value=!0)}).catch(e=>{throw new Error(`Error during fetch icon: ${e?.message}`)})),a.svg&&f(a.svg),(t,a)=>l(i)?(c(),O(l(pe),C({key:0,class:l(d)},{inline:e.inline,width:e.width,height:e.height,horizontalFlip:e.horizontalFlip,verticalFlip:e.verticalFlip,flip:e.flip,rotate:l(o),color:e.color,icon:l(p)},{onLoad:e.onLoad}),null,16,["class","onLoad"])):M("v-if",!0)}}),ea={key:0,class:"vv-alert__header"},ta=["id"],aa=["aria-label"],la={key:1,class:"vv-alert__content"},oa={key:2,class:"vv-alert__footer"},ia=/* @__PURE__ */o({name:"VvAlert",props:Xt,emits:["close"],setup(e,{expose:t,emit:a}){const o=e,i=a,{hasProps:n,hasTitleId:r,hasIcon:s,close:u}=Zt(o,i);return t({close:u}),(e,t)=>(c(),v("div",y(g(l(n))),[e.$slots.header||e.$slots.title||e.$slots.close||e.$slots["title::before"]||e.$slots["title::after"]||e.title||l(s)||e.dismissable||e.autoClose?(c(),v("div",ea,[l(s)?(c(),O(Qt,C({key:0},l(s),{class:"vv-alert__icon"}),null,16)):M("v-if",!0),b(e.$slots,"header",{},()=>[b(e.$slots,"title::before"),e.$slots.title||e.title?(c(),v("strong",{key:0,id:l(r),class:"vv-alert__title"},[b(e.$slots,"title",{},()=>[h(S(e.title),1)])],8,ta)):M("v-if",!0),b(e.$slots,"title::after")]),b(e.$slots,"close",y(g({close:l(u)})),()=>[e.dismissable||e.autoClose?(c(),v("button",{key:0,class:"vv-alert__close",type:"button","aria-label":e.closeLabel,onClick:t[0]||(t[0]=m((...e)=>l(u)&&l(u)(...e),["stop"]))},[...t[1]||(t[1]=[f("div",{class:"vv-alert__close-mask"},null,-1)])],8,aa)):M("v-if",!0)])])):M("v-if",!0),e.$slots.default||e.content?(c(),v("div",la,[b(e.$slots,"default",{},()=>[h(S(e.content),1)])])):M("v-if",!0),e.$slots.footer||e.footer?(c(),v("div",oa,[b(e.$slots,"footer",{},()=>[h(S(e.footer),1)])])):M("v-if",!0)],16))}});const na={...bt,name:{type:String,required:!0},items:{type:Array,default:()=>[]},stack:{type:Boolean,default:!1},reverse:{type:Boolean,default:!1},inline:{type:String,default:void 0},block:{type:String,default:void 0},position:{type:String,default:void 0},transition:{type:String,default:void 0}};function ra(e,a){const l=function({name:e}){const t=ve();return $(at,{name:e,bus:t}),t}({name:t(()=>e.name)});(e.block&&!e.inline||!e.block&&e.inline)&&console.warn("[VvAlertGroup]: block and inline props must coexist at the same time.");const o=t(()=>{const a=[Ht("vv-alert-group",t(()=>e.modifiers),t(()=>({stack:e.stack,reverse:e.reverse,absolute:"absolute"===e.position,fixed:"fixed"===e.position}))).value];return e.inline&&e.block&&a.push(`vv-alert-group--${e.block}-${e.inline}`),a}),i=t(()=>e.transition?e.transition:e.position?"start"===e.inline?"vv-alert--fade-inline-start":"end"===e.inline?"vv-alert--fade-inline-end":"top"===e.block?"vv-alert--fade-block-top":"bottom"===e.block?"vv-alert--fade-block-bottom":"vv-alert--fade":"vv-alert--fade");return l.on("close",e=>{a("close",e)}),{hasTransition:i,hasProps:t(()=>({class:o.value}))}}const sa=/* @__PURE__ */o({name:"VvAlertGroup",props:na,emits:["close","beforeEnter","afterLeave","enter","afterEnter","enterCancelled","beforeLeave","leave","leaveCancelled"],setup(e,{emit:t}){const a=e,o=t,{hasProps:i,hasTransition:n}=ra(a,o),r={"before-enter":()=>{o("beforeEnter")},"after-leave":()=>{o("afterLeave")},enter:()=>{o("enter")},"after-enter":()=>{o("afterEnter")},"enter-cancelled":()=>{o("enterCancelled")},"before-leave":()=>{o("beforeLeave")},leave:()=>{o("leave")},"leave-cancelled":()=>{o("leaveCancelled")}};return(e,t)=>(c(),v("div",y(g(l(i))),[b(e.$slots,"before"),H(P,C({tag:"div",role:"group",name:l(n),class:"vv-alert-group__list"},R(r)),{default:B(()=>[b(e.$slots,"default",{},()=>[(c(!0),v(A,null,L(e.items,e=>(c(),O(ia,C({ref_for:!0},e,{key:e.id}),null,16))),128))])]),_:3},16,["name"]),b(e.$slots,"after")],16))}}),ua={...bt,imgSrc:String},da=["role","aria-label"],va=["src"],ca=/* @__PURE__ */o({name:"VvAvatar",props:ua,setup(e){const t=e,{modifiers:a}=r(t),o=Ht("vv-avatar",a);return(e,t)=>(c(),v("span",{class:p(l(o)),role:e.imgSrc?void 0:"img","aria-label":e.imgSrc?void 0:"avatar"},[b(e.$slots,"default",{},()=>[e.imgSrc?(c(),v("img",{key:0,src:e.imgSrc,alt:"avatar"},null,8,va)):M("v-if",!0)])],10,da))}}),pa={...bt,items:{type:Array,default:()=>[],required:!0},toShow:{type:Number,default:3},totalItems:{type:Number},avatarModifiers:[String,Array]},fa={key:0},ma=/* @__PURE__ */o({name:"VvAvatarGroup",props:pa,setup(e){const a=e,{modifiers:o,items:i,toShow:n,totalItems:s,avatarModifiers:u}=r(a),d=Ht("vv-avatar-group",o),f=t(()=>u?.value&&Array.isArray(u?.value)?u.value.join(" "):u?.value||""),m=t(()=>i.value.slice(0,n.value).map(e=>{let t=[],a=[];return u?.value&&(t=Array.isArray(u?.value)?u?.value:[u?.value]),e.modifiers&&(a=Array.isArray(e.modifiers)?e.modifiers:[e.modifiers]),{...e,key:e.key||Yt().value,modifiers:[...t,...a]}}));return(e,t)=>(c(),v("span",{class:p(l(d))},[b(e.$slots,"default",{},()=>[(c(!0),v(A,null,L(l(m),e=>(c(),O(ca,C({key:e.key},{ref_for:!0},{modifiers:e.modifiers,imgSrc:e.imgSrc}),{default:B(()=>[e.text?(c(),v("span",fa,S(e.text),1)):M("v-if",!0)]),_:2},1040))),128)),(l(s)||l(i).length)>l(n)?(c(),O(ca,{key:0,modifiers:`${l(f)} surface bordered`},{default:B(()=>[h(S("+"+((l(s)||l(i).length)-l(n))),1)]),_:1},8,["modifiers"])):M("v-if",!0)])],2))}}),ba={...bt,value:[String,Number]},ya=/* @__PURE__ */o({name:"VvBadge",props:ba,setup(e){const t=e,{modifiers:a}=r(t),o=Ht("vv-badge",a);return(e,t)=>(c(),v("span",{class:p(l(o))},[b(e.$slots,"default",{},()=>[h(S(e.value),1)])],2))}}),ga={...bt,routes:Array},ha={class:"vv-breadcrumb__list"},Sa=["content"],ka=/* @__PURE__ */o({name:"VvBreadcrumb",props:ga,setup(e){const a=e,{modifiers:o}=r(a),i=Ht("vv-breadcrumb",o),n=t(()=>a.routes?.length??0),s=e=>e===n.value-1;return(e,t)=>(c(),v("nav",{class:p(l(i)),"aria-label":"breadcrumbs"},[f("ol",ha,[(c(!0),v(A,null,L(e.routes,({label:t,...a},l)=>(c(),v("li",{key:`${t}-${l}`,class:p(s(l)?"vv-breadcrumb__item-active":"vv-breadcrumb__item"),itemprop:"itemListElement",itemtype:"https://schema.org/ListItem",itemscope:""},[H(Kt,C({ref_for:!0},a,{class:s(l)?"vv-breadcrumb__label":"vv-breadcrumb__link","aria-current":s(l)?"page":void 0,itemprop:"item","default-tag":"span"}),{default:B(()=>[b(e.$slots,"label",C({ref_for:!0},{...a,index:l,label:t,isLast:s(l)}),()=>[h(S(t),1)])]),_:2},1040,["class","aria-current"]),f("meta",{itemprop:"position",content:`${l+1}`},null,8,Sa)],2))),128))])],2))}}),_a={...It,...xt,...bt,...wt,...nt,...kt,iconPosition:{type:String,default:Pe.left,validator:e=>Object.values(Pe).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 $a(e,t,a){return wa(e,t)}function wa(e,t){if(e===t)return!0;if(e&&t&&"object"==typeof e&&"object"==typeof t){const a=Array.isArray(e),l=Array.isArray(t);let o,i,n;if(a&&l){if(i=e.length,i!==t.length)return!1;for(o=i;0!==o--;)if(!wa(e[o],t[o]))return!1;return!0}if(a!==l)return!1;const r=e instanceof Date,s=t instanceof Date;if(r!==s)return!1;if(r&&s)return e.getTime()===t.getTime();const u=e instanceof RegExp,d=t instanceof RegExp;if(u!==d)return!1;if(u&&d)return e.toString()===t.toString();const v=Object.keys(e);if(i=v.length,i!==Object.keys(t).length)return!1;for(o=i;0!==o--;)if(!Object.prototype.hasOwnProperty.call(t,v[o]))return!1;for(o=i;0!==o--;)if(n=v[o],!wa(e[n],t[n]))return!1;return!0}return Number.isNaN(e)&&Number.isNaN(t)}function xa(e,t){if(null!=e&&t&&t.length)for(const a of t)if($a(e,a))return!0;return!1}function Va(e){return null==(t=l(e))||""===t||Array.isArray(t)&&0===t.length||!(t instanceof Date)&&"object"==typeof t&&0===Object.keys(t).length;var t}const Aa={key:1,class:"vv-button__label"},La={key:1,class:"vv-button__label"},Oa=/* @__PURE__ */o({name:"VvButton",inheritAttrs:!1,props:_a,emits:["update:modelValue"],setup(e,{expose:a,emit:o}){const n=e,u=o,d=i(),p=j(),{id:f,modifiers:m,iconPosition:y,icon:g,label:k,modelValue:_,disabled:$,toggle:w,unselectable:x}=function(e,a){const{group:l,isInGroup:o,getGroupOrLocalRef:i}=Nt(Ye),{id:n,iconPosition:s,icon:u,label:d,pressed:v}=r(e),c=i("modelValue",e,a),p=i("toggle",e),f=i("unselectable",e),m=t(()=>l?.multiple.value??!1),b=t(()=>{let t=e.modifiers,a=l?.modifiers.value;const o=/* @__PURE__ */new Set;return t&&(Array.isArray(t)||(t=t.split(" ")),t.forEach(e=>o.add(e))),a&&(Array.isArray(a)||(a=a.split(" ")),a.forEach(e=>o.add(e))),Array.from(o)}),y=t(()=>Boolean(e.disabled||l?.disabled.value));return{group:l,isInGroup:o,modelValue:c,toggle:p,unselectable:f,multiple:m,modifiers:b,disabled:y,id:n,pressed:v,iconPosition:s,icon:u,label:d}}(n,u),V=Yt(f),L=t(()=>d?.name||V.value),E=s(null);a({$el:t(()=>E.value?.$el)});const I=t(()=>w.value?Array.isArray(_.value)?xa(L.value,_.value):$a(L.value,_.value):n.pressed),T=Ht("vv-button",m,t(()=>({reverse:[Pe.right,Pe.bottom].includes(y.value),column:[Pe.top,Pe.bottom].includes(y.value),"icon-only":Boolean(g?.value&&!k?.value&&!p.default)}))),{hasIcon:D}=Jt(g),N=t(()=>void 0!==n.value?n.value:L.value),H=t(()=>{if(w.value)return{onClick:P}});function P(){if(w.value){if(Array.isArray(_.value))return xa(N.value,_.value)?void(x.value&&(_.value=_.value.filter(e=>e!==N.value))):void _.value.push(N.value);if(N.value===_.value&&x.value)return void(_.value=n.uncheckedValue);_.value=N.value}}return(e,t)=>(c(),O(Kt,C({...l(d),...l(H),disabled:l($),pressed:l(I),active:e.active,type:e.type,to:e.to,href:e.href,target:e.target,rel:e.rel,ariaLabel:e.ariaLabel},{id:l(V),ref_key:"element",ref:E,class:l(T)}),{default:B(()=>[b(e.$slots,"default",{},()=>[e.loading?b(e.$slots,"loading",{key:0},()=>[e.loadingIcon?(c(),O(Qt,{key:0,class:"vv-button__loading-icon",name:e.loadingIcon},null,8,["name"])):M("v-if",!0),e.loadingLabel?(c(),v("span",Aa,S(e.loadingLabel),1)):M("v-if",!0)]):(c(),v(A,{key:1},[b(e.$slots,"before"),l(D)?(c(),O(Qt,C({key:0},l(D),{class:"vv-button__icon"}),null,16)):M("v-if",!0),l(k)?(c(),v("span",La,[b(e.$slots,"label",{},()=>[h(S(l(k)),1)])])):M("v-if",!0),b(e.$slots,"after")],64))])]),_:3},16,["id","class"]))}}),Ca={...bt,...rt,...wt,legendLabel:{type:String},itemModifiers:{type:[String,Array],default:""},toggle:{type:Boolean,default:!1},multiple:{type:Boolean,default:!1},modelValue:{type:[String,Number,Boolean,Array],default:void 0}},Ea={key:0,class:"vv-button-group__legend"},Ba=/* @__PURE__ */o({name:"VvButtonGroup",props:Ca,emits:["update:modelValue"],setup(e,{emit:a}){const o=e,i=a,{disabled:n,toggle:s,modifiers:u,multiple:d,unselectable:f,itemModifiers:m}=r(o);w(()=>{"string"==typeof o.modelValue&&d.value&&console.warn("[VvButtonGroup]: modelValue is a string but multiple is true.")});const y=t({get:()=>d.value?o.modelValue:Array.isArray(o.modelValue)?o.modelValue[0]:o.modelValue,set:e=>void 0===e||!Array.isArray(o.modelValue)&&!d.value||Array.isArray(e)?i("update:modelValue",e):i("update:modelValue",[e])});qt(Ye,{modelValue:y,disabled:n,toggle:s,multiple:d,unselectable:f,modifiers:m});const g=Ht("vv-button-group",u);return(e,t)=>(c(),v("fieldset",{class:p(l(g)),role:"group"},[e.$slots.legend||e.legendLabel?(c(),v("legend",Ea,[b(e.$slots,"legend",{},()=>[h(S(e.legendLabel),1)])])):M("v-if",!0),b(e.$slots,"default")],2))}}),Ia={...bt,title:String},Ta={key:0,class:"vv-card__header"},Da={key:1,class:"vv-card__content"},Na={key:2,class:"vv-card__footer"},Ma=/* @__PURE__ */o({name:"VvCard",props:Ia,setup(e){const t=e,{modifiers:a}=r(t),o=Ht("vv-card",a);return(e,t)=>(c(),v("article",{class:p(l(o))},[e.$slots.header||e.title?(c(),v("header",Ta,[b(e.$slots,"header",{},()=>[h(S(e.title),1)])])):M("v-if",!0),b(e.$slots,"default"),e.$slots.content?(c(),v("div",Da,[b(e.$slots,"content")])):M("v-if",!0),e.$slots.footer?(c(),v("footer",Na,[b(e.$slots,"footer")])):M("v-if",!0)],2))}}),Ha={...Et,...bt,indeterminate:Boolean,uncheckedValue:[String,Number,Boolean],switch:Boolean};function Pa(e){return Array.isArray(e)?e.filter(e=>"string"==typeof e).join(" "):e}function Ra(e,a){const l=t(()=>_(e)?e.value:e),i=t(()=>Pa(l.value.invalidLabel)),n=t(()=>Pa(l.value.validLabel)),r=t(()=>l.value.loadingLabel),s=t(()=>l.value.hintLabel),u=t(()=>Boolean(l.value.loading&&(a.loading||r.value))),d=t(()=>!u.value&&Boolean(l.value.invalid&&(a.invalid||i.value))),v=t(()=>!u.value&&!d.value&&Boolean(l.value.valid&&(a.valid||n.value))),c=t(()=>!u.value&&!d.value&&!v.value&&Boolean(a.hint||s.value)),p=t(()=>d.value||v.value||u.value||c.value),f=t(()=>({modelValue:l.value.modelValue,valid:l.value.valid,invalid:l.value.invalid,loading:l.value.loading})),m=o({name:"HintSlot",props:{tag:{type:String,default:"small"}},setup:()=>({isVisible:p,invalidLabel:i,validLabel:n,loadingLabel:r,hintLabel:s,hasInvalidLabelOrSlot:d,hasValidLabelOrSlot:v,hasLoadingLabelOrSlot:u,hasHintLabelOrSlot:c}),render(){if(this.isVisible){let e;return this.hasInvalidLabelOrSlot&&(e="alert"),this.hasValidLabelOrSlot&&(e="status"),this.hasLoadingLabelOrSlot?F(this.tag,{role:e},this.$slots.loading?.()??this.loadingLabel):this.hasInvalidLabelOrSlot?F(this.tag,{role:e},this.$slots.invalid?.()??this.$slots.invalid??this.invalidLabel):this.hasValidLabelOrSlot?F(this.tag,{role:e},this.$slots.valid?.()??this.validLabel):F(this.tag,{role:e},this.$slots.hint?.()??this.$slots.hint??this.hintLabel)}return null}});return{hasInvalidLabelOrSlot:d,hasHintLabelOrSlot:c,hasValidLabelOrSlot:v,hasLoadingLabelOrSlot:u,hintSlotScope:f,HintSlot:m}}function ja(e,a,l){const o=Wt(),i=t(()=>{if(o&&o.defaults.value?.[e])return o.defaults.value[e]});return t(()=>{if(void 0===i.value)return l;const e=i.value,t=a,o=l;return Object.keys(t).reduce((a,l)=>{const i=o[l];if(a[l]=i,l in e){if(Array.isArray(t[l])){const o=t[l];if(o.length){o[0]===i&&(a[l]=e[l])}}if("function"==typeof t[l]){(0,t[l])()===i&&(a[l]=e[l])}if("object"==typeof t[l]){let o=t[l].default;"function"==typeof o&&(o=o()),"object"==typeof o?JSON.stringify(o)===JSON.stringify(i)&&(a[l]=e[l]):o===i&&(a[l]=e[l])}}return a},{})})}const Fa=["for"],Ua=["id","name","disabled","value","tabindex","aria-invalid","aria-describedby","aria-errormessage"],Ga=/* @__PURE__ */o({name:"VvCheckbox",props:Ha,emits:["click","update:modelValue","change","blur"],setup(e,{emit:a}){const o=e,i=a,n=j(),d=ja("VvCheckbox",Ha,o),{id:m,disabled:$,readonly:x,valid:V,invalid:A,propsSwitch:L,modelValue:O,indeterminate:C,isInGroup:I}=function(e,a){const{group:l,isInGroup:o,getGroupOrLocalRef:i}=Nt(Xe),{id:n,switch:s,indeterminate:u}=r(e),d=i("modelValue",e,a),v=i("valid",e),c=i("invalid",e),p=t(()=>Boolean(e.readonly||l?.readonly.value)),f=t(()=>Boolean(e.disabled||l?.disabled.value));return{id:n,propsSwitch:s,indeterminate:u,group:l,isInGroup:o,modelValue:d,valid:v,invalid:c,readonly:p,disabled:f}}(o,i),T=Yt(m),D=t(()=>`${T.value}-hint`),N=t(()=>R.value?-1:o.tabindex),M=s(),P=t(()=>void 0!==o.uncheckedValue&&!I.value),R=t(()=>$.value||x.value),F=t(()=>!0===A.value||!0!==V.value&&void 0),q=t(()=>P.value?O.value===o.value:Array.isArray(O.value)?xa(o.value,O.value):$a(o.value,O.value)),z=t(()=>!!C.value||!(q.value||!P.value||o.uncheckedValue===O.value)),W=t(()=>{if(!P.value)return!["string","number","boolean"].includes(typeof o.value)||o.value}),K=t({get:()=>q.value,set(e){if(P.value)O.value=e?o.value:o.uncheckedValue;else if(Array.isArray(O.value)||I.value){const t=O.value??[],a=new Set(Array.isArray(t)?t:[t]);e?a.add(o.value):a.delete(o.value),O.value=[...a]}else O.value=e?o.value:void 0;i("change",e)}}),{modifiers:Y}=r(o),J=Ht("vv-checkbox",Y,t(()=>({switch:L.value,valid:V.value,invalid:A.value,disabled:$.value,readonly:x.value,indeterminate:C.value})));w(()=>{P.value&&Array.isArray(O.value)&&console.warn("[VvCheckbox] The model value is an array but the component is in binary mode.")}),u(()=>z.value,e=>{M.value.indeterminate=!!e}),k(()=>{z.value&&(M.value.indeterminate=!0)});const{HintSlot:X,hasHintLabelOrSlot:Z,hasInvalidLabelOrSlot:Q,hintSlotScope:ee}=Ra(d,n);return(e,t)=>(c(),v("label",{class:p(l(J)),for:l(T)},[U(f("input",{id:l(T),ref_key:"input",ref:M,"onUpdate:modelValue":t[0]||(t[0]=e=>_(K)?K.value=e:null),type:"checkbox",class:"vv-checkbox__input",name:e.name,disabled:l(R),value:l(W),tabindex:l(N),"aria-invalid":l(F),"aria-describedby":l(Z)?l(D):void 0,"aria-errormessage":l(Q)?l(D):void 0},null,8,Ua),[[G,l(K)]]),b(e.$slots,"default",{value:l(O)},()=>[h(S(e.label),1)]),H(l(X),{id:l(D),class:"vv-checkbox__hint"},E({_:2},[e.$slots.hint?{name:"hint",fn:B(()=>[b(e.$slots,"hint",y(g(l(ee))))]),key:"0"}:void 0,e.$slots.loading?{name:"loading",fn:B(()=>[b(e.$slots,"loading",y(g(l(ee))))]),key:"1"}:void 0,e.$slots.valid?{name:"valid",fn:B(()=>[b(e.$slots,"valid",y(g(l(ee))))]),key:"2"}:void 0,e.$slots.invalid?{name:"invalid",fn:B(()=>[b(e.$slots,"invalid",y(g(l(ee))))]),key:"3"}:void 0]),1032,["id"])],10,Fa))}}),qa=Bt;function za(e){const{options:t,labelKey:a,valueKey:l,disabledKey:o}=r(e);return{options:t,getOptionLabel:e=>"string"==typeof e?e:"function"==typeof a.value?a.value(e):String(a.value?me(e,a.value):e),getOptionValue:e=>"string"==typeof e?e:"function"==typeof l.value?l.value(e):l.value?me(e,l.value):e,isOptionDisabled:e=>"string"!=typeof e&&("function"==typeof o.value?o.value(e):!!o.value&&Boolean(me(e,o.value))),getOptionGrouped:e=>"string"==typeof e?[]:"object"==typeof e&&e&&"options"in e?e.options:[]}}const Wa=["textContent"],Ka={class:"vv-checkbox-group__wrapper"},Ya=/* @__PURE__ */o({name:"VvCheckboxGroup",props:qa,emits:["update:modelValue","change"],setup(e,{emit:a}){const o=e,i=a,n=j(),s=ja("VvCheckboxGroup",qa,o),u=ee(o,"modelValue",i),{disabled:d,readonly:m,vertical:h,valid:k,invalid:_,modifiers:$}=r(o);qt(Xe,{modelValue:u,disabled:d,readonly:m,valid:k,invalid:_});const{getOptionLabel:w,getOptionValue:x,isOptionDisabled:V}=za(o),I=Ht("vv-checkbox-group",$,t(()=>({disabled:d.value,readonly:m.value,required:o.required,horizontal:!h.value,valid:k.value,invalid:_.value})));const{HintSlot:T,hintSlotScope:D}=Ra(s,n);return(e,t)=>(c(),v("fieldset",{class:p(l(I))},[e.label?(c(),v("legend",{key:0,textContent:S(e.label)},null,8,Wa)):M("v-if",!0),f("div",Ka,[e.options.length>0?(c(!0),v(A,{key:0},L(e.options,(e,t)=>(c(),O(Ga,C({key:t},{ref_for:!0},function(e,t){return{id:`${o.name}_opt${t}`,name:o.name,label:w(e),value:x(e),required:o.required,disabled:V(e)}}(e,t)),null,16))),128)):b(e.$slots,"default",{key:1})]),H(l(T),{class:"vv-checkbox-group__hint"},E({_:2},[e.$slots.hint?{name:"hint",fn:B(()=>[b(e.$slots,"hint",y(g(l(D))))]),key:"0"}:void 0,e.$slots.loading?{name:"loading",fn:B(()=>[b(e.$slots,"loading",y(g(l(D))))]),key:"1"}:void 0,e.$slots.valid?{name:"valid",fn:B(()=>[b(e.$slots,"valid",y(g(l(D))))]),key:"2"}:void 0,e.$slots.invalid?{name:"invalid",fn:B(()=>[b(e.$slots,"invalid",y(g(l(D))))]),key:"3"}:void 0]),1024)],2))}}),Ja={...At,..._t,...ot,...it,...yt,...nt,...rt,...mt,...bt,...gt,...kt,...$t,...Vt,...ft,...st,...ct,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:{...Vt.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 Xa(){return{...Ja,options:{...Ja.options,type:Array},searchFunction:{...Ja.searchFunction,type:Function}}}const Za=o({components:{VvIcon:Qt},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(e,{emit:a}){const{hasIcon:l}=Jt(t(()=>e.icon));return{hasIcon:l,onClick:function(t){t?.stopPropagation(),e.disabled||a("clear")}}},render(){const e=this.hasIcon?F(Qt,{...this.hasIcon,class:`vv-${this.inputType}__icon`}):void 0;return F("button",{disabled:this.disabled,class:`vv-${this.inputType}__action`,ariaLabel:this.label,type:"button",onClick:this.onClick},e)}}),Qa={...xt,...Vt,...bt,modelValue:{type:Boolean,default:void 0},reference:{type:Object,default:null},role:{type:String,default:qe.menu,validator:e=>Object.values(qe).includes(e)}},el={focusOnHover:{type:Boolean,default:!1}},tl={...rt,...ut,...wt,...bt,deselectHintLabel:{type:String},selectHintLabel:{type:String},selectedHintLabel:{type:String},focusOnHover:{type:Boolean,default:!1}};const al=["id","tabindex","role","aria-labelledby"],ll=/* @__PURE__ */o({name:"VvDropdown",inheritAttrs:!1,props:Qa,emits:["update:modelValue","beforeEnter","afterLeave","beforeExpand","beforeCollapse","afterExpand","afterCollapse","before-enter","after-leave","enter","afterEnter","enterCancelled","beforeLeave","leave","leaveCancelled"],setup(e,{expose:a,emit:n}){const d=e,m=n,{id:h}=r(d),S=Yt(h),_=i(),w=s("auto"),x=s("auto"),L=s(),O=s(),E=s(),I=s(),T=t({get:()=>d.reference??L.value,set:e=>{L.value=e}}),D=s(!1);k(()=>{ae(O.value,()=>{D.value="true"===window.getComputedStyle(O.value).getPropertyValue("--dropdown-custom-position")?.trim()},{attributeFilter:["style"],window:window})});const N=t(()=>{const e=[];if(d.autoPlacement?"boolean"==typeof d.autoPlacement?e.push(be()):e.push(be(d.autoPlacement)):d.flip&&("boolean"==typeof d.flip?e.push(ye({fallbackStrategy:"initialPlacement"})):e.push(ye(d.flip))),d.shift&&("boolean"==typeof d.shift?e.push(ge()):e.push(ge(d.shift))),d.size){const t=({availableWidth:e,availableHeight:t})=>{w.value=`${e}px`,x.value=`${t}px`};"boolean"==typeof d.size?e.push(he({apply:t})):e.push(he({...d.size,apply:t}))}return d.offset&&(e.push(Se(Number(d.offset))),["string","number"].includes(typeof d.offset)?e.push(Se(Number(d.offset))):e.push(Se(d.offset))),d.arrow&&e.push(ke({element:E})),e}),{x:P,y:j,middlewareData:G,placement:K,strategy:Y}=_e(T,O,{whileElementsMounted:(...e)=>$e(...e,{animationFrame:d.strategy===He.fixed}),placement:t(()=>d.placement),strategy:t(()=>d.strategy),middleware:N}),J=t(()=>{if(D.value)return;const e=d.triggerWidth&&T.value?`${T.value?.offsetWidth}px`:void 0;return{position:Y.value,top:`${j.value??0}px`,left:`${P.value??0}px`,maxWidth:e?void 0:w.value,maxHeight:x.value,width:e}}),X=t(()=>K.value.split("-")[0]),Z=t(()=>{if(D.value)return;const e={[Pe.top]:Pe.bottom,[Pe.right]:Pe.left,[Pe.bottom]:Pe.top,[Pe.left]:Pe.right}[X.value];return{left:void 0!==G.value.arrow?.x?`${G.value.arrow?.x}px`:void 0,top:void 0!==G.value.arrow?.y?`${G.value.arrow?.y}px`:void 0,[e]:-(E.value?.offsetWidth??0)/2+"px"}}),Q=ee(d,"modelValue",m),te=s(!1),re=t({get:()=>Q.value??te.value,set:e=>{void 0!==Q.value?Q.value=e:te.value=e}});function se(){re.value=!0}function ue(){re.value=!1}function de(){re.value=!re.value}function ce(e){T.value=e}le(O,()=>{!d.keepOpen&&re.value&&(re.value=!1)},{ignore:[T]});const pe=t(()=>T.value?.getAttribute?.("id")??void 0),fe=t(()=>({"aria-controls":S.value,"aria-haspopup":!0,"aria-expanded":re.value})),{component:me,bus:we}=function({reference:e,id:t,expanded:a,aria:l}){const i=ve(),n=o({name:"VvDropdownTriggerProvider",setup(){$(Qe,{reference:e,id:t,expanded:a,aria:l,bus:i})},render(){return F(A,{},this.$slots.default?.())}});return{bus:i,component:n}}({reference:T,id:S,expanded:re,aria:fe});we.on("click",de);const{role:xe,modifiers:Ve}=r(d),Ae=Ht("vv-dropdown",Ve,t(()=>({arrow:d.arrow}))),{focused:Le}=oe(O);function Oe(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 Ce(){V(()=>{const e=Oe(O.value);e.length>0&&e[0].focus({preventScroll:!0})})}function Ee(){V(()=>{if(Le.value){const e=Oe(O.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 Be(){V(()=>{if(Le.value){const e=Oe(O.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})}})}u(re,e=>{e&&d.autofocusFirst&&Ce()}),a({toggle:de,show:se,hide:ue,init:ce,focusFirst:Ce,focusFirstListElement:function(){V(()=>{const e=Oe(I.value);e.length>0&&e[0].focus({preventScroll:!0})})},focusNext:Ee,focusPrev:Be,customPosition:D});const Ie=ie(O),{itemRole:Te}=function({role:e,...a}){const l=t(()=>e.value===qe.listbox?ze.option:ze.presentation);return $(et,{role:l,...a}),{itemRole:l}}({role:xe,expanded:re,focused:Le,hovered:Ie});ne("Escape",e=>{re.value&&(e.preventDefault(),ue())}),ne("ArrowDown",e=>{re.value&&Le.value&&(e.preventDefault(),Ee())}),ne("ArrowUp",e=>{re.value&&Le.value&&(e.preventDefault(),Be())}),ne([" ","Enter"],e=>{const t=e.target;re.value&&Le.value&&t&&t?.click()});const De={"before-enter":()=>{m(re.value?"beforeExpand":"beforeCollapse"),m("beforeEnter")},"after-leave":()=>{m(re.value?"afterExpand":"afterCollapse"),m("afterLeave")},enter:()=>{m("enter")},"after-enter":()=>{m("afterEnter")},"enter-cancelled":()=>{m("enterCancelled")},"before-leave":()=>{m("beforeLeave")},leave:()=>{m("leave")},"leave-cancelled":()=>{m("leaveCancelled")}};return(e,t)=>(c(),v(A,null,[H(l(me),null,{default:B(()=>[b(e.$slots,"default",y(g({init:ce,show:se,hide:ue,toggle:de,expanded:l(re),aria:l(fe)})))]),_:3}),H(q,C({name:e.transitionName},R(De),{persisted:""}),{default:B(()=>[U(f("div",{ref_key:"floatingEl",ref:O,style:z(l(J)),class:p(l(Ae))},[d.arrow?(c(),v("div",{key:0,ref_key:"arrowEl",ref:E,style:z(l(Z)),class:"vv-dropdown__arrow"},null,4)):M("v-if",!0),b(e.$slots,"before",y(g({expanded:l(re)}))),f("div",C(l(_),{id:l(S),ref_key:"listEl",ref:I,tabindex:l(re)?void 0:-1,role:l(xe),"aria-labelledby":l(pe),class:"vv-dropdown__list"}),[b(e.$slots,"items",y(g({role:l(Te)})))],16,al),b(e.$slots,"after",y(g({expanded:l(re)})))],6),[[W,l(re)]])]),_:3},16,["name"])],64))}}),ol={class:"vv-dropdown-optgroup",role:"presentation",tabindex:"-1"},il=/* @__PURE__ */o({name:"VvDropdownOptgroup",props:{...ft},setup(e){const t=e;return(e,a)=>(c(),v("li",ol,[b(e.$slots,"default",{},()=>[h(S(t.label),1)])]))}}),nl=/* @__PURE__ */o({name:"VvDropdownItem",props:el,setup(t){const a=t,{role:o,expanded:i}=e(et,{}),n=s(null);!function({expanded:e}){$(tt,{role:s(Ge.menuitem),expanded:e})}({expanded:i});const r=ie(n),{focused:d}=re(n),{focused:p}=oe(n);return u(r,e=>{e&&a.focusOnHover&&(d.value=!0)}),(e,t)=>(c(),v("div",C({role:l(o)},{ref_key:"element",ref:n,class:["vv-dropdown__item",{"focus-visible":l(d)||l(p)}]}),[b(e.$slots,"default")],16))}}),rl=["title"],sl=/* @__PURE__ */o({name:"VvDropdownOption",props:tl,setup(e){const a=e,{modifiers:o}=r(a),i=Ht("vv-dropdown-option",o,t(()=>({disabled:a.disabled,selected:a.selected,unselectable:a.unselectable&&a.selected}))),n=t(()=>a.selected?a.unselectable?a.deselectHintLabel:a.selectedHintLabel:a.disabled?"":a.selectHintLabel);return(e,t)=>(c(),O(nl,{class:p(l(i)),tabindex:e.disabled?-1:0,"aria-selected":e.selected,"aria-disabled":e.disabled,"focus-on-hover":e.focusOnHover},{default:B(()=>[b(e.$slots,"default"),f("span",{class:"vv-dropdown-option__hint",title:l(n)},[b(e.$slots,"hint",y(g({disabled:e.disabled,selected:e.selected,unselectable:e.unselectable})),()=>[h(S(l(n)),1)])],8,rl)]),_:3},8,["class","tabindex","aria-selected","aria-disabled","focus-on-hover"]))}}),ul={...At,...Lt,...Ot,..._t,...ot,...it,...yt,...nt,...rt,...mt,...bt,...gt,...kt,...$t,...wt,...ft,...ct,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 dl(){return{...ul,options:{...ul.options,type:Array,default:()=>[]}}}function vl(e,t){const{focused:a}=re(e);return u(a,a=>{t(a?"focus":"blur",l(e))}),{focused:a}}const cl=["for"],pl={class:"vv-select__wrapper"},fl={key:0,class:"vv-select__input-before"},ml={class:"vv-select__inner"},bl=["id"],yl=["disabled","hidden"],gl=["disabled","value"],hl=["disabled","label"],Sl=["disabled","value"],kl={key:2,class:"vv-select__input-after"},_l=/* @__PURE__ */o({name:"VvSelect",props:dl(),emits:["update:modelValue","focus","blur","clear"],setup(e,{emit:a}){const o=e,i=a,n=j(),d=ja("VvSelect",dl(),o),m=s(),{HintSlot:h,hasHintLabelOrSlot:k,hasInvalidLabelOrSlot:$,hintSlotScope:w}=Ra(d,n),{focused:x}=vl(m,i);function V(e){return"string"!=typeof e&&e.options?.length}const{id:I,modifiers:T,disabled:D,readonly:N,loading:P,icon:R,iconPosition:F,invalid:G,valid:q,floating:z,multiple:W}=r(o),Y=Yt(I),J=t(()=>`${Y.value}-hint`),X=t(()=>o.disabled||o.readonly),Z=t(()=>X.value?-1:o.tabindex),Q=t({get:()=>o.modelValue,set:e=>{Array.isArray(e)&&0===(e=e.filter(e=>void 0!==e)).length&&!o.unselectable&&m.value?m.value.value=String(o.modelValue):i("update:modelValue",e)}}),ee=t(()=>Array.isArray(Q.value)?Q.value.length>0:void 0!==Q.value&&null!==Q.value),te=t(()=>!X.value&&o.unselectable),ae=se(m);u(ae,e=>{e&&o.autofocus&&(x.value=!0)});const{hasIconBefore:le,hasIconAfter:oe}=Jt(R,F),ie=t(()=>!0===o.invalid||!0!==o.valid&&void 0),ne=Ht("vv-select",T,t(()=>({valid:q.value,invalid:G.value,loading:P.value,disabled:D.value,readonly:N.value,"icon-before":void 0!==le.value,"icon-after":void 0!==oe.value,dirty:ee.value,focus:x.value&&!X.value,floating:z.value,multiple:W.value}))),{getOptionLabel:re,getOptionValue:ue,isOptionDisabled:de,getOptionGrouped:ve}=za(o);function ce(){Array.isArray(Q.value)?Q.value=[]:Q.value=void 0,i("clear")}u(()=>o.options,e=>{if(e?.length&&o.autoselectFirst&&!ee.value){const t=ue(e[0]);Q.value=o.multiple?[t]:t}},{immediate:!0});const pe=t(()=>({name:o.name,tabindex:Z.value,disabled:X.value,required:o.required,size:o.size,autocomplete:o.autocomplete,multiple:o.multiple,"aria-invalid":ie.value,"aria-describedby":k.value?J.value:void 0,"aria-errormessage":$.value?J.value:void 0})),fe=t(()=>({valid:o.valid,invalid:o.invalid,modelValue:o.modelValue}));return(e,t)=>(c(),v("div",{class:p(l(ne))},[e.label?(c(),v("label",{key:0,for:l(Y)},S(e.label),9,cl)):M("v-if",!0),f("div",pl,[e.$slots.before?(c(),v("div",fl,[b(e.$slots,"before",y(g(l(fe))))])):M("v-if",!0),f("div",ml,[l(le)?(c(),O(Qt,C({key:0},l(le),{class:"vv-select__icon"}),null,16)):M("v-if",!0),U(f("select",C({id:l(Y),ref_key:"selectEl",ref:m},l(pe),{"onUpdate:modelValue":t[0]||(t[0]=e=>_(Q)?Q.value=e:null)}),[e.placeholder?(c(),v("option",{key:0,value:void 0,disabled:!l(te),hidden:!l(te)},S(e.placeholder),9,yl)):M("v-if",!0),(c(!0),v(A,null,L(e.options,(e,t)=>(c(),v(A,null,[V(e)?(c(),v("optgroup",{key:`group-${t}`,disabled:l(de)(e),label:l(re)(e)},[(c(!0),v(A,null,L(l(ve)(e),(e,a)=>(c(),v("option",{key:`group-${t}-item-${a}`,disabled:l(de)(e),value:l(ue)(e)},S(l(re)(e)),9,Sl))),128))],8,hl)):(c(),v("option",{key:t,disabled:l(de)(e),value:l(ue)(e)},S(l(re)(e)),9,gl))],64))),256))],16,bl),[[K,l(Q)]]),l(oe)?(c(),O(Qt,C({key:1},l(oe),{class:"vv-select__icon vv-select__icon-after"}),null,16)):M("v-if",!0)]),l(te)&&l(d).showClearAction?(c(),O(l(Za),{key:1,"input-type":"select",label:e.labelClear,icon:e.iconClear,disabled:!l(ee),onClear:ce},null,8,["label","icon","disabled"])):M("v-if",!0),e.$slots.after?(c(),v("div",kl,[b(e.$slots,"after",y(g(l(fe))))])):M("v-if",!0)]),H(l(h),{id:l(J),class:"vv-select__hint"},E({_:2},[e.$slots.hint?{name:"hint",fn:B(()=>[b(e.$slots,"hint",y(g(l(w))))]),key:"0"}:void 0,e.$slots.loading?{name:"loading",fn:B(()=>[b(e.$slots,"loading",y(g(l(w))))]),key:"1"}:void 0,e.$slots.valid?{name:"valid",fn:B(()=>[b(e.$slots,"valid",y(g(l(w))))]),key:"2"}:void 0,e.$slots.invalid?{name:"invalid",fn:B(()=>[b(e.$slots,"invalid",y(g(l(w))))]),key:"3"}:void 0]),1032,["id"])],2))}}),$l=["id"],wl=["id","for"],xl=["id","aria-controls","placeholder"],Vl={key:0,class:"vv-select__input-before"},Al={class:"vv-select__inner"},Ll=["aria-controls","aria-expanded","aria-labelledby","aria-describedby","aria-errormessage","tabindex"],Ol={key:0,class:"vv-select__value"},Cl=["aria-label","onClick"],El={key:2,class:"vv-select__input-after"},Bl=/* @__PURE__ */o({...{name:"VvCombobox",components:{VvDropdown:ll,VvDropdownOption:sl,VvDropdownOptgroup:il,VvButton:Oa}},props:/* @__PURE__ */Y(Xa(),{search:{type:String,default:"",required:!1},searchModifiers:{}}),emits:/* @__PURE__ */Y(["update:modelValue","update:search","update:options","focus","blur","clear","change:search"],["update:search"]),setup(e,{emit:a}){const o=e,i=a,n=j(),d=ja("VvCombobox",Xa(),o),k=s(null),$=s(null),w=s(null),x=s(),{HintSlot:V,hasHintLabelOrSlot:I,hasInvalidLabelOrSlot:T,hintSlotScope:D}=Ra(d,n),{focused:N}=vl(k,i),{focused:P}=oe(w);u(N,e=>{o.autoOpen&&(!e||G.value?e||!G.value||P