1 line
9.5 KiB
JavaScript
1 line
9.5 KiB
JavaScript
import{a as e,c as t,d as n,i as r,l as i,n as a,o,r as s,s as ee,u as te}from"./VSelect-BvR-yyLS.js";import{$ as c,Ar as ne,Bn as l,C as re,Gn as ie,Lr as u,Nn as d,On as f,Rr as p,Sn as ae,Tn as oe,Tr as m,_n as se,ar as h,b as g,bi as ce,dt as le,fi as _,h as v,i as ue,jr as y,lr as b,m as de,mi as fe,or as pe,p as me,r as he,sr as x,t as ge,ti as S,tt as _e,u as ve,ui as C,ur as ye,wr as w,xr as T,y as be,yi as xe,yn as E}from"./index-CDcgx9V8.js";import{h as Se,n as D,p as Ce,t as O}from"./VTextField-B-BnrJAQ.js";var k=d({autoSelectFirst:{type:[Boolean,String]},clearOnSelect:Boolean,search:String,...e({filterKeys:[`title`]}),...a(),...x(D({modelValue:null,role:`combobox`}),[`validationValue`,`dirty`])},`VAutocomplete`),A=f()({name:`VAutocomplete`,props:k(),emits:{"update:focused":e=>!0,"update:search":e=>!0,"update:modelValue":e=>!0,"update:menu":e=>!0},setup(e,{slots:a}){let{t:d}=se(),f=C(),x=_(!1),D=_(!0),k=_(!1),A=C(),j=C(),M=_(-1),N=_(null),{items:P,transformIn:we,transformOut:Te}=me(e),{textColorClasses:Ee,textColorStyles:De}=le(()=>f.value?.color),{InputIcon:Oe}=Se(e),F=E(e,`search`,``),I=E(e,`modelValue`,[],e=>we(e===null?[null]:b(e)),t=>{let n=Te(t);return e.multiple?n:n[0]??null}),ke=w(()=>typeof e.counterValue==`function`?e.counterValue(I.value):typeof e.counterValue==`number`?e.counterValue:I.value.length),L=Ce(e),{filteredItems:R,getMatches:Ae}=o(e,P,()=>N.value??(D.value?``:F.value)),z=w(()=>e.hideSelected&&N.value===null?R.value.filter(e=>!I.value.some(t=>t.value===e.value)):R.value),B=fe(()=>e.closableChips&&!L.isReadonly.value&&!L.isDisabled.value),V=w(()=>!!(e.chips||a.chip)),H=w(()=>V.value||!!a.selection),je=w(()=>I.value.map(e=>e.props.value)),U=w(()=>z.value.find(e=>e.type===`item`&&!e.props.disabled)),W=w(()=>(e.autoSelectFirst===!0||e.autoSelectFirst===`exact`&&F.value===U.value?.title)&&z.value.length>0&&!D.value&&!k.value),G=w(()=>e.hideNoData&&!z.value.length||L.isReadonly.value||L.isDisabled.value),K=E(e,`menu`),q=w({get:()=>K.value,set:e=>{K.value&&!e&&A.value?.ΨopenChildren.size||e&&G.value||(K.value=e)}}),{menuId:Me,ariaExpanded:Ne,ariaControls:Pe}=s(e,q),J=C(),Y=C(),X=C(),Fe=t(J,f),Ie=i(q,()=>A.value?.contentEl,()=>f.value?.controlRef),{onTabKeydown:Le}=ee({groups:[{type:`element`,contentRef:Y},{type:`list`,contentRef:J,displayItemsCount:()=>z.value.length},{type:`element`,contentRef:X}],onLeave:()=>{q.value=!1,f.value?.focus()}});function Re(t){e.openOnClear&&(q.value=!0),F.value=``}function ze(){G.value||(q.value=!0)}function Be(e){G.value||(x.value&&(e.preventDefault(),e.stopPropagation()),q.value=!q.value)}function Ve(e){e.key===`Tab`&&Le(e),J.value?.$el.contains(e.target)&&(l(e)||e.key===`Backspace`)&&f.value?.focus()}function He(t){if(L.isReadonly.value)return;let n=f.value?.selectionStart,r=I.value.length;if([`Enter`,`ArrowDown`,`ArrowUp`].includes(t.key)&&t.preventDefault(),[`Enter`,`ArrowDown`].includes(t.key)&&(q.value=!0),[`Escape`].includes(t.key)&&(q.value=!1),W.value&&[`Enter`,`Tab`].includes(t.key)&&U.value&&!I.value.some(({value:e})=>e===U.value.value)&&$(U.value),t.key===`ArrowDown`&&W.value&&J.value?.focus(`next`),[`Backspace`,`Delete`].includes(t.key)){if(!e.multiple&&H.value&&I.value.length>0&&!F.value)return $(I.value[0],!1);if(~M.value){t.preventDefault();let e=M.value;$(I.value[M.value],!1),M.value=e>=r-1?r-2:e}else t.key===`Backspace`&&!F.value&&(M.value=r-1);return}if(e.multiple)if(t.key===`ArrowLeft`){if(M.value<0&&n&&n>0)return;let e=M.value>-1?M.value-1:r-1;if(I.value[e])M.value=e;else{let e=F.value?.length??null;M.value=-1,f.value?.setSelectionRange(e,e)}}else if(t.key===`ArrowRight`){if(M.value<0)return;let e=M.value+1;I.value[e]?M.value=e:(M.value=-1,f.value?.setSelectionRange(0,0))}else ~M.value&&l(t)&&(M.value=-1)}function Ue(e){if(h(f.value,`:autofill`)||h(f.value,`:-webkit-autofill`)){let t=P.value.find(t=>t.title===e.target.value);t&&$(t)}}function We(){e.eager&&j.value?.calculateVisibleItems()}function Ge(){x.value&&(A.value?.contentEl?._clickOutside?.lastMousedownWasOutside?x.value=!1:(D.value=!0,f.value?.focus())),N.value=null}function Ke(e){x.value=!0,setTimeout(()=>{k.value=!0})}function qe(e){if(k.value=!1,!f.value?.$el.contains(e.relatedTarget)){if(Ie(e))return;x.value=!1}}function Je(t){(t==null||t===``&&!e.multiple&&!H.value)&&(I.value=[])}let Z=0;function Ye(){Z=performance.now()}function Xe(e){let t=e.relatedTarget;((A.value?.contentEl)?.contains(t)||!t&&performance.now()-Z<10)&&(x.value=!0)}let Q=_(!1);function $(t,n=!0){if(!(!t||t.props.disabled))if(e.multiple){let r=I.value.findIndex(n=>(e.valueComparator||oe)(n.value,t.value)),i=n??!~r;if(~r){let e=i?[...I.value,t]:[...I.value];e.splice(r,1),I.value=e}else i&&(I.value=[...I.value,t]);e.clearOnSelect&&(F.value=``)}else{let e=n!==!1;I.value=e?[t]:[],N.value=D.value?``:F.value??``,F.value=e&&!H.value?t.title:``,p(()=>{q.value=!1,D.value=!0})}}return S(x,(t,n)=>{t!==n&&(t?(Q.value=!0,F.value=e.multiple||H.value?``:String(I.value.at(-1)?.props.title??``),D.value=!0,p(()=>Q.value=!1)):(!e.multiple&&F.value==null&&(I.value=[]),q.value=!1,!D.value&&F.value&&(N.value=F.value),F.value=``,M.value=-1))}),S(F,e=>{!x.value||Q.value||(e&&(q.value=!0),D.value=!e)}),S(q,t=>{if(!e.hideSelected&&t&&I.value.length&&D.value){let e=z.value.findIndex(e=>I.value.some(t=>e.value===t.value));ye&&window.requestAnimationFrame(()=>{e>=0&&j.value?.scrollToIndex(e)})}t&&(N.value=null)}),S(P,(e,t)=>{q.value||x.value&&!t.length&&e.length&&(q.value=!0)}),ae(()=>{let t=!!(!e.hideNoData||z.value.length||a[`prepend-item`]||a[`append-item`]||a[`no-data`]),i=I.value.length>0,o=O.filterProps(e),s={search:F,filteredItems:R.value};return y(O,u({ref:f},o,{modelValue:F.value,"onUpdate:modelValue":[e=>F.value=e,Je],focused:x.value,"onUpdate:focused":e=>x.value=e,validationValue:I.externalValue,counterValue:ke.value,dirty:i,onChange:Ue,class:[`v-autocomplete`,`v-autocomplete--${e.multiple?`multiple`:`single`}`,{"v-autocomplete--active-menu":q.value,"v-autocomplete--chips":!!e.chips,"v-autocomplete--selection-slot":!!H.value,"v-autocomplete--selecting-index":M.value>-1},e.class],style:e.style,readonly:L.isReadonly.value,placeholder:i?void 0:e.placeholder,"onClick:clear":Re,"onMousedown:control":ze,onKeydown:He,onBlur:Xe,"aria-expanded":Ne.value,"aria-controls":Pe.value}),{...a,default:({id:i})=>m(T,null,[y(he,u({id:Me.value,ref:A,modelValue:q.value,"onUpdate:modelValue":e=>q.value=e,activator:`parent`,disabled:G.value,eager:e.eager,maxHeight:310,openOnClick:!1,closeOnContentClick:!1,onAfterEnter:We,onAfterLeave:Ge},e.menuProps,{contentClass:[`v-autocomplete__content`,e.menuProps?.contentClass]}),{default:()=>[y(ge,{elevation:e.menuElevation,onFocusin:Ke,onKeydown:Ve,onMousedown:Ye},{default:()=>[a[`menu-header`]&&m(`header`,{ref:Y},[a[`menu-header`](s)]),t&&y(ve,u({key:`autocomplete-list`,ref:J,filterable:!0,selected:je.value,selectStrategy:e.multiple?`independent`:`single-independent`,onMousedown:e=>e.preventDefault(),onFocusout:qe,tabindex:`-1`,selectable:!!z.value.length,"aria-live":`polite`,"aria-labelledby":`${i.value}-label`,"aria-multiselectable":e.multiple,color:e.itemColor??e.color},Fe,e.listProps),{default:()=>[a[`prepend-item`]?.(),!z.value.length&&!e.hideNoData&&(a[`no-data`]?.()??y(v,{key:`no-data`,title:d(e.noDataText)},null)),y(te,{ref:j,renderless:!0,items:z.value,itemKey:`value`},{default:({item:t,index:i,itemRef:o})=>{let s=u(t.props,{ref:o,key:t.value,active:W.value&&t===U.value?!0:void 0,onClick:()=>$(t,null),"aria-posinset":i+1,"aria-setsize":z.value.length});return t.type===`divider`?a.divider?.({props:t.raw,index:i})??y(be,u(t.props,{key:`divider-${i}`}),null):t.type===`subheader`?a.subheader?.({props:t.raw,index:i})??y(de,u(t.props,{key:`subheader-${i}`}),null):a.item?.({item:t.raw,internalItem:t,index:i,props:s})??y(v,u(s,{role:`option`}),{prepend:({isSelected:r})=>m(T,null,[e.multiple&&!e.hideSelected?y(n,{key:t.value,modelValue:r,ripple:!1,tabindex:`-1`,"aria-hidden":!0,onClick:e=>e.preventDefault()},null):void 0,t.props.prependAvatar&&y(re,{image:t.props.prependAvatar},null),t.props.prependIcon&&y(c,{icon:t.props.prependIcon},null)]),title:()=>D.value?t.title:r(`v-autocomplete`,t.title,Ae(t)?.title)})}}),a[`append-item`]?.()]}),a[`menu-footer`]&&m(`footer`,{ref:X},[a[`menu-footer`](s)])]})]}),I.value.map((t,n)=>{function r(e){e.stopPropagation(),e.preventDefault(),$(t,!1)}let i=u(g.filterProps(t.props),{"onClick:close":r,onKeydown(e){e.key!==`Enter`&&e.key!==` `||(e.preventDefault(),e.stopPropagation(),r(e))},onMousedown(e){e.preventDefault(),e.stopPropagation()},modelValue:!0,"onUpdate:modelValue":void 0}),o=V.value?!!a.chip:!!a.selection,s=o?ie(V.value?a.chip({item:t.raw,internalItem:t,index:n,props:i}):a.selection({item:t.raw,internalItem:t,index:n})):void 0;if(!(o&&!s))return m(`div`,{key:t.value,class:xe([`v-autocomplete__selection`,n===M.value&&[`v-autocomplete__selection--selected`,Ee.value]]),style:ce(n===M.value?De.value:{})},[V.value?a.chip?y(_e,{key:`chip-defaults`,defaults:{VChip:{closable:B.value,size:`small`,text:t.title}}},{default:()=>[s]}):y(g,u({key:`chip`,closable:B.value,size:`small`,text:t.title,disabled:t.props.disabled},i),null):s??m(`span`,{class:`v-autocomplete__selection-text`},[t.title,e.multiple&&n<I.value.length-1&&m(`span`,{class:`v-autocomplete__selection-comma`},[ne(`,`)])])])})]),"append-inner":(...t)=>m(T,null,[a[`append-inner`]?.(...t),e.menuIcon?y(c,{class:`v-autocomplete__menu-icon`,color:f.value?.fieldIconColor,icon:e.menuIcon,onMousedown:Be,onClick:pe,"aria-hidden":!0,tabindex:`-1`},null):void 0,e.appendInnerIcon&&y(Oe,{key:`append-icon`,name:`appendInner`,color:t[0].iconColor.value},null)])})}),ue({isFocused:x,isPristine:D,menu:q,search:F,filteredItems:R,select:$},f)}});export{A as t}; |