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