1
0
mirror of https://github.com/ZeroCatDev/Classworks.git synced 2026-06-27 19:35:07 +00:00
Classworks/assets/VCombobox-C4UwMVM6.js

3 lines
11 KiB
JavaScript

import{h as qe,e as He,V as se,i as Ge}from"./VTextField-CtuWRDTq.js";import{u as Je,a as We,b as Qe,c as Xe,h as Ye,d as Ze,e as el,m as ll,f as al}from"./VSelect-Bs96fMPL.js";import{aB as tl,H as nl,aC as _,f as re,p as ul,q as ce,i as ol,a6 as il,o as sl,ag as rl,E as cl}from"./index-BxeI5EAR.js";import{f as vl,an as dl,n as ve,w as fl,o as de,E as ml,u as hl,aI as bl,aJ as pl,aK as fe,aL as gl,p as yl,a5 as xl,aM as Vl}from"./vendor-vuetify-95axeNJO.js";import{V as kl,a as Cl}from"./VSheet-BGbWEv9p.js";import{V as wl}from"./VCheckboxBtn-DpYnatkN.js";import{V as me}from"./VChip-CY3PUswk.js";import{s as P,o as L,j as d,k as S,F as Q,m as F,N as Il,n as Dl,a1 as Fl,e as w,I as N,b as A,t as Sl}from"./vendor-vue-28M5UGz3.js";const Rl=yl({alwaysFilter:Boolean,autoSelectFirst:{type:[Boolean,String]},clearOnSelect:{type:Boolean,default:!0},delimiters:Array,...ll({filterKeys:["title"]}),...el({hideNoData:!0,returnObject:!0}),...xl(Ge({modelValue:null,role:"combobox"}),["validationValue","dirty"])},"VCombobox"),Nl=vl()({name:"VCombobox",props:Rl(),emits:{"update:focused":l=>!0,"update:modelValue":l=>!0,"update:search":l=>!0,"update:menu":l=>!0},setup(l,he){var te;let{emit:be,slots:t}=he;const{t:pe}=dl(),m=A(),g=P(!1),I=P(!0),G=P(!1),K=A(),O=A(),i=P(-1);let $=!1;const{items:X,transformIn:ge,transformOut:ye}=tl(l),{textColorClasses:xe,textColorStyles:Ve}=nl(()=>{var e;return(e=m.value)==null?void 0:e.color}),{InputIcon:ke}=qe(l),o=ve(l,"modelValue",[],e=>ge(fl(e)),e=>{const a=ye(e);return l.multiple?a:a[0]??null}),R=He(l),Y=Sl(()=>l.closableChips&&!R.isReadonly.value&&!R.isDisabled.value),z=w(()=>!!(l.chips||t.chip)),D=w(()=>z.value||!!t.selection),y=P(!l.multiple&&!D.value?((te=o.value[0])==null?void 0:te.title)??"":""),T=P(null),v=w({get:()=>y.value,set:async e=>{var a;if(y.value=e??"",e===null||e===""&&!l.multiple&&!D.value?o.value=[]:!l.multiple&&!D.value&&(o.value=[_(l,e)],N(()=>{var n;return(n=O.value)==null?void 0:n.scrollToIndex(0)})),e&&l.multiple&&((a=l.delimiters)!=null&&a.length)){const n=le(e);n.length>1&&(ae(n),y.value="")}e||(i.value=-1),I.value=!e}}),Ce=w(()=>typeof l.counterValue=="function"?l.counterValue(o.value):typeof l.counterValue=="number"?l.counterValue:l.multiple?o.value.length:v.value.length),{filteredItems:U,getMatches:we}=Je(l,X,()=>T.value??(l.alwaysFilter||!I.value?v.value:"")),x=w(()=>l.hideSelected&&T.value===null?U.value.filter(e=>!o.value.some(a=>a.value===e.value)):U.value),j=w(()=>l.hideNoData&&!x.value.length||R.isReadonly.value||R.isDisabled.value),J=ve(l,"menu"),r=w({get:()=>J.value,set:e=>{var a;J.value&&!e&&((a=K.value)!=null&&a.ΨopenChildren.size)||e&&j.value||(J.value=e)}}),{menuId:Ie,ariaExpanded:De,ariaControls:Fe}=We(l,r);L(y,e=>{$?N(()=>$=!1):g.value&&!r.value&&(r.value=!0),be("update:search",e)}),L(o,e=>{var a;!l.multiple&&!D.value&&(y.value=((a=e[0])==null?void 0:a.title)??"")});const Se=w(()=>o.value.map(e=>e.value)),E=w(()=>x.value.find(e=>e.type==="item"&&!e.props.disabled)),W=w(()=>{var a;return(l.autoSelectFirst===!0||l.autoSelectFirst==="exact"&&v.value===((a=E.value)==null?void 0:a.title))&&x.value.length>0&&!I.value&&!G.value}),M=A(),Z=A(),ee=A(),Re=Ze(M,m),Pe=al(r,()=>{var e;return(e=K.value)==null?void 0:e.contentEl},()=>{var e;return(e=m.value)==null?void 0:e.controlRef}),{onTabKeydown:Ae}=Qe({groups:[{type:"element",contentRef:Z},{type:"list",contentRef:M,displayItemsCount:()=>x.value.length},{type:"element",contentRef:ee}],onLeave:()=>{var e;r.value=!1,(e=m.value)==null||e.focus()}});function Te(e){$=!0,N(()=>$=!1),l.openOnClear&&(r.value=!0)}function Ee(){j.value||(r.value=!0)}function Me(e){j.value||(g.value&&(e.preventDefault(),e.stopPropagation()),r.value=!r.value)}function Be(e){var a,n;e.key==="Tab"&&Ae(e),(a=M.value)!=null&&a.$el.contains(e.target)&&(fe(e)||e.key==="Backspace")&&((n=m.value)==null||n.focus())}function _e(e){var c,f,h,k;if(gl(e)||R.isReadonly.value)return;const a=(c=m.value)==null?void 0:c.selectionStart,n=o.value.length;if(["Enter","ArrowDown","ArrowUp"].includes(e.key)&&e.preventDefault(),["Enter","ArrowDown"].includes(e.key)&&(r.value=!0),["Escape"].includes(e.key)&&(r.value=!1),W.value&&["Enter","Tab"].includes(e.key)&&E.value&&!o.value.some(u=>{let{value:b}=u;return b===E.value.value})&&V(E.value),e.key==="ArrowDown"&&W.value&&((f=M.value)==null||f.focus("next")),e.key==="Enter"&&v.value&&(V(_(l,v.value),!0,!0),D.value&&(y.value="")),["Backspace","Delete"].includes(e.key)){if(!l.multiple&&D.value&&o.value.length>0&&!v.value)return V(o.value[0],!1);if(~i.value){e.preventDefault();const u=i.value;V(o.value[i.value],!1),i.value=u>=n-1?n-2:u}else e.key==="Backspace"&&!v.value&&(i.value=n-1);return}if(l.multiple)if(e.key==="ArrowLeft"){if(i.value<0&&a&&a>0)return;const u=i.value>-1?i.value-1:n-1;o.value[u]?i.value=u:(i.value=-1,(h=m.value)==null||h.setSelectionRange(v.value.length,v.value.length))}else if(e.key==="ArrowRight"){if(i.value<0)return;const u=i.value+1;o.value[u]?i.value=u:(i.value=-1,(k=m.value)==null||k.setSelectionRange(0,0))}else~i.value&&fe(e)&&(i.value=-1)}function Le(e){var c;const a=((c=e==null?void 0:e.clipboardData)==null?void 0:c.getData("Text"))??"",n=le(a);n.length>1&&l.multiple&&(e.preventDefault(),ae(n))}function Ne(){var e;l.eager&&((e=O.value)==null||e.calculateVisibleItems())}function Ke(){var e;g.value&&((e=m.value)==null||e.focus()),I.value=!0,T.value=null}function V(e){let a=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!0,n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:!1;if(!(!e||e.props.disabled))if(l.multiple){const c=o.value.findIndex(h=>(l.valueComparator||de)(h.value,e.value)),f=a??!~c;if(~c){const h=f?[...o.value,e]:[...o.value];h.splice(c,1),o.value=h}else f&&(o.value=[...o.value,e]);l.clearOnSelect&&(v.value="")}else{const c=a!==!1;o.value=c?[e]:[],(!I.value||l.alwaysFilter)&&y.value&&(T.value=y.value),y.value=c&&!D.value?e.title:"",N(()=>{r.value=n,I.value=!0})}}function le(e){const n=[`
`,...l.delimiters??[]].map(Vl).join("|");return e.split(new RegExp(`(?:${n})+`))}async function ae(e){for(let a of e)a=a.trim(),a&&(V(_(l,a)),await N())}function Oe(e){g.value=!0,setTimeout(()=>{G.value=!0})}function $e(e){var a;if(G.value=!1,!((a=m.value)!=null&&a.$el.contains(e.relatedTarget))){if(Pe(e))return;g.value=!1}}function ze(e){var n;const a=(n=K.value)==null?void 0:n.contentEl;a!=null&&a.contains(e.relatedTarget)&&(g.value=!0)}return L(g,(e,a)=>{if(!(e||e===a)&&(i.value=-1,r.value=!1,v.value)){if(l.multiple){V(_(l,v.value));return}if(!D.value)return;o.value.some(n=>{let{title:c}=n;return c===v.value})?y.value="":V(_(l,v.value))}}),L(r,e=>{if(!l.hideSelected&&e&&o.value.length&&I.value){const a=x.value.findIndex(n=>o.value.some(c=>(l.valueComparator||de)(c.value,n.value)));ml&&window.requestAnimationFrame(()=>{var n;a>=0&&((n=O.value)==null||n.scrollToIndex(a))})}e&&(T.value=null)}),L(X,(e,a)=>{r.value||g.value&&!a.length&&e.length&&(r.value=!0)}),hl(()=>{const e=!!(!l.hideNoData||x.value.length||t["prepend-item"]||t["append-item"]||t["no-data"]),a=o.value.length>0,n=se.filterProps(l),c={search:v,filteredItems:U.value};return d(se,F({ref:m},n,{modelValue:v.value,"onUpdate:modelValue":f=>v.value=f,focused:g.value,"onUpdate:focused":f=>g.value=f,validationValue:o.externalValue,counterValue:Ce.value,dirty:a,class:["v-combobox",{"v-combobox--active-menu":r.value,"v-combobox--chips":!!l.chips,"v-combobox--selection-slot":!!D.value,"v-combobox--selecting-index":i.value>-1,[`v-combobox--${l.multiple?"multiple":"single"}`]:!0},l.class],style:l.style,readonly:R.isReadonly.value,placeholder:a?void 0:l.placeholder,"onClick:clear":Te,"onMousedown:control":Ee,onKeydown:_e,onPaste:Le,onBlur:ze,"aria-expanded":De.value,"aria-controls":Fe.value}),{...t,default:f=>{var k;let{id:h}=f;return S(Q,null,[d(kl,F({id:Ie.value,ref:K,modelValue:r.value,"onUpdate:modelValue":u=>r.value=u,activator:"parent",disabled:j.value,eager:l.eager,maxHeight:310,openOnClick:!1,closeOnContentClick:!1,onAfterEnter:Ne,onAfterLeave:Ke},l.menuProps,{contentClass:["v-combobox__content",(k=l.menuProps)==null?void 0:k.contentClass]}),{default:()=>[d(Cl,{onFocusin:Oe,onKeydown:Be},{default:()=>[t["menu-header"]&&S("header",{ref:Z},[t["menu-header"](c)]),e&&d(ul,F({key:"combobox-list",ref:M,filterable:!0,selected:Se.value,selectStrategy:l.multiple?"independent":"single-independent",onMousedown:u=>u.preventDefault(),selectable:!!x.value.length,onFocusout:$e,tabindex:"-1","aria-live":"polite","aria-labelledby":`${h.value}-label`,"aria-multiselectable":l.multiple,color:l.itemColor??l.color},Re,l.listProps),{default:()=>{var u,b,B;return[(u=t["prepend-item"])==null?void 0:u.call(t),!x.value.length&&!l.hideNoData&&(((b=t["no-data"])==null?void 0:b.call(t))??d(ce,{key:"no-data",title:pe(l.noDataText)},null)),d(Xe,{ref:O,renderless:!0,items:x.value,itemKey:"value"},{default:q=>{var ue,oe,ie;let{item:s,index:C,itemRef:p}=q;const ne=F(s.props,{ref:p,key:s.value,active:W.value&&s===E.value?!0:void 0,onClick:()=>V(s,null),"aria-posinset":C+1,"aria-setsize":x.value.length});return s.type==="divider"?((ue=t.divider)==null?void 0:ue.call(t,{props:s.raw,index:C}))??d(ol,F(s.props,{key:`divider-${C}`}),null):s.type==="subheader"?((oe=t.subheader)==null?void 0:oe.call(t,{props:s.raw,index:C}))??d(il,F(s.props,{key:`subheader-${C}`}),null):((ie=t.item)==null?void 0:ie.call(t,{item:s,index:C,props:ne}))??d(ce,F(ne,{role:"option"}),{prepend:H=>{let{isSelected:Ue}=H;return S(Q,null,[l.multiple&&!l.hideSelected?d(wl,{key:s.value,modelValue:Ue,ripple:!1,tabindex:"-1","aria-hidden":!0,onClick:je=>je.preventDefault()},null):void 0,s.props.prependAvatar&&d(sl,{image:s.props.prependAvatar},null),s.props.prependIcon&&d(re,{icon:s.props.prependIcon},null)])},title:()=>{var H;return I.value?s.title:Ye("v-combobox",s.title,(H=we(s))==null?void 0:H.title)}})}}),(B=t["append-item"])==null?void 0:B.call(t)]}}),t["menu-footer"]&&S("footer",{ref:ee},[t["menu-footer"](c)])]})]}),o.value.map((u,b)=>{function B(p){p.stopPropagation(),p.preventDefault(),V(u,!1)}const q=F(me.filterProps(u.props),{"onClick:close":B,onKeydown(p){p.key!=="Enter"&&p.key!==" "||(p.preventDefault(),p.stopPropagation(),B(p))},onMousedown(p){p.preventDefault(),p.stopPropagation()},modelValue:!0,"onUpdate:modelValue":void 0}),s=z.value?!!t.chip:!!t.selection,C=s?pl(z.value?t.chip({item:u,index:b,props:q}):t.selection({item:u,index:b})):void 0;if(!(s&&!C))return S("div",{key:u.value,class:Dl(["v-combobox__selection",b===i.value&&["v-combobox__selection--selected",xe.value]]),style:Il(b===i.value?Ve.value:{})},[z.value?t.chip?d(rl,{key:"chip-defaults",defaults:{VChip:{closable:Y.value,size:"small",text:u.title}}},{default:()=>[C]}):d(me,F({key:"chip",closable:Y.value,size:"small",text:u.title,disabled:u.props.disabled},q),null):C??S("span",{class:"v-combobox__selection-text"},[u.title,l.multiple&&b<o.value.length-1&&S("span",{class:"v-combobox__selection-comma"},[Fl(",")])])])})])},"append-inner":function(){var u,b;for(var f=arguments.length,h=new Array(f),k=0;k<f;k++)h[k]=arguments[k];return S(Q,null,[(u=t["append-inner"])==null?void 0:u.call(t,...h),(!l.hideNoData||l.items.length)&&l.menuIcon?d(re,{class:"v-combobox__menu-icon",color:(b=m.value)==null?void 0:b.fieldIconColor,icon:l.menuIcon,onMousedown:Me,onClick:bl,"aria-hidden":!0,tabindex:"-1"},null):void 0,l.appendInnerIcon&&d(ke,{key:"append-icon",name:"appendInner",color:h[0].iconColor.value},null)])}})}),cl({isFocused:g,isPristine:I,menu:r,search:v,selectionIndex:i,filteredItems:U,select:V},m)}});export{Nl as V};