import{_ as E,cv as M,Y as i,b as k,ae as j,o as h,c as V,a as d,r as q,t as D,h as U,n as c,l as L,an as T,w as z,k as $,F as A,p as P,bx as p,b5 as v,cw as R,cm as Y,bu as G}from"./v5WcX6fg.js";const H=["aria-expanded","onKeydown"],J=["aria-selected","onClick","onKeydown"],Q=["id","value","name"],W=["for"],X={__name:"DropdownSelect",props:{options:{type:Array,required:!0},name:{type:String,required:!0},defaultValue:{type:[String,Number,Object],default:null},placeholder:{type:[String,Number],default:null},modelValue:{type:[String,Number,Object],default:null},renderUp:{type:Boolean,default:!1},disabled:{type:Boolean,default:!1},displayName:{type:Function,default:void 0},maxVisibleOptions:{type:Number,default:void 0}},emits:["input","change","update:modelValue"],setup(a,{emit:B}){M(e=>({"4a20e53d":a.maxVisibleOptions?`calc(${a.maxVisibleOptions} * 3rem)`:"18.75rem"}));const l=a;function g(e){var t;return((t=l.displayName)==null?void 0:t.call(l,e))??e}const O=B,n=i(!1),o=i(l.modelValue||l.defaultValue),s=i(null),m=i(null),b=i(null),x=k(()=>g(o.value)??l.placeholder??"Select an option"),w=k({get(){return l.modelValue||o.value},set(e){O("update:modelValue",e),o.value=e}});j(()=>l.modelValue,e=>{o.value=e});const f=()=>{l.disabled||(n.value=!n.value,m.value.focus())},N=(e,t)=>{w.value=e,O("change",{option:e,index:t}),n.value=!1},C=()=>{l.disabled||(s.value=l.options.findIndex(e=>e===o.value),n.value=!0)},S=e=>{I(e.relatedTarget)||(n.value=!1)},F=()=>{l.disabled||(n.value||f(),s.value=(s.value+l.options.length-1)%l.options.length,b.value[s.value].focus())},K=()=>{l.disabled||(n.value||f(),s.value=(s.value+1)%l.options.length,b.value[s.value].focus())},I=e=>{let t=e;for(;t;){if(t===m.value)return!0;t=t.parentNode}return!1};return(e,t)=>(h(),V("div",{ref_key:"dropdown",ref:m,tabindex:"0",role:"combobox","aria-expanded":n.value,class:"animated-dropdown",onFocus:C,onBlur:S,onFocusout:S,onMousedown:t[1]||(t[1]=v(()=>{},["prevent"])),onKeydown:[p(v(f,["prevent"]),["enter"]),p(v(F,["prevent"]),["up"]),p(v(K,["prevent"]),["down"])]},[d("div",{class:c(["selected",{disabled:a.disabled,"render-down":n.value&&!a.renderUp&&!a.disabled,"render-up":n.value&&a.renderUp&&!a.disabled}]),onClick:f},[d("div",null,[q(e.$slots,"default",{selected:x.value},()=>[d("span",null,D(x.value),1)],!0)]),U(L(T),{class:c(["arrow",{rotate:n.value}])},null,8,["class"])],2),d("div",{class:c(["options-wrapper",{down:!a.renderUp,up:a.renderUp}])},[U(G,{name:"options"},{default:z(()=>[$(d("div",{class:c(["options",{down:!a.renderUp,up:a.renderUp}]),role:"listbox"},[(h(!0),V(A,null,P(a.options,(u,r)=>(h(),V("div",{key:r,ref_for:!0,ref_key:"optionElements",ref:b,tabindex:"-1",role:"option",class:c([{"selected-option":o.value===u},"option"]),"aria-selected":o.value===u,onClick:y=>N(u,r),onKeydown:p(v(y=>N(u,r),["prevent"]),["space"])},[$(d("input",{id:`${a.name}-${r}`,"onUpdate:modelValue":t[0]||(t[0]=y=>w.value=y),type:"radio",value:u,name:a.name},null,8,Q),[[R,w.value]]),d("label",{for:`${a.name}-${r}`},D(g(u)),9,W)],42,J))),128))],2),[[Y,n.value]])]),_:1})],2)],40,H))}},_=E(X,[["__scopeId","data-v-4b88ecb8"]]);export{_ as D};