1
0
mirror of https://github.com/ZeroCatDev/Classworks.git synced 2025-10-23 10:53:13 +00:00
Classworks/assets/VMenu-BlD-2RXD.js

2 lines
3.3 KiB
JavaScript

import{g as p,p as L,ak as M,aA as S,b4 as O,aH as B,ao as K,an as F,bw as N,c7 as w,ap as U,bj as j,c8 as H,at as q,c9 as E,aq as z,bN as k,aj as W,E as A,c as $,a4 as V,d as P,aR as G,as as J,av as Q,b6 as X,bV as Y,ca as g,cb as Z,bB as _,cc as ee}from"./index-BrYd6ITk.js";const te=L({id:String,submenu:Boolean,disableInitialFocus:Boolean,...Q(X({closeDelay:250,closeOnContentClick:!0,locationStrategy:"connected",location:void 0,openDelay:300,scrim:!1,scrollStrategy:"reposition",transition:{component:Y}}),["absolute"])},"VMenu"),ne=p()({name:"VMenu",props:te(),emits:{"update:modelValue":t=>!0},setup(t,h){let{slots:c}=h;const s=M(t,"modelValue"),{scopeId:R}=S(),{isRtl:f}=O(),v=B(),m=K(()=>t.id||`v-menu-${v}`),o=F(),n=N(w,null),d=U(new Set);_(w,{register(){d.value.add(v)},unregister(){d.value.delete(v)},closeParents(e){setTimeout(()=>{var a;!d.value.size&&!t.persistent&&(e==null||(a=o.value)!=null&&a.contentEl&&!ee(e,o.value.contentEl))&&(s.value=!1,n==null||n.closeParents())},40)}}),j(()=>{n==null||n.unregister(),document.removeEventListener("focusin",b)}),H(()=>s.value=!1);async function b(e){var u,i,r;const a=e.relatedTarget,l=e.target;await q(),s.value&&a!==l&&((u=o.value)!=null&&u.contentEl)&&((i=o.value)!=null&&i.globalTop)&&![document,o.value.contentEl].includes(l)&&!o.value.contentEl.contains(l)&&((r=E(o.value.contentEl)[0])==null||r.focus())}z(s,e=>{e?(n==null||n.register(),k&&!t.disableInitialFocus&&document.addEventListener("focusin",b,{once:!0})):(n==null||n.unregister(),k&&document.removeEventListener("focusin",b))},{immediate:!0});function C(e){n==null||n.closeParents(e)}function D(e){var a,l,u,i,r;if(!t.disabled)if(e.key==="Tab"||e.key==="Enter"&&!t.closeOnContentClick){if(e.key==="Enter"&&(e.target instanceof HTMLTextAreaElement||e.target instanceof HTMLInputElement&&e.target.closest("form")))return;e.key==="Enter"&&e.preventDefault(),Z(E((a=o.value)==null?void 0:a.contentEl,!1),e.shiftKey?"prev":"next",T=>T.tabIndex>=0)||(s.value=!1,(u=(l=o.value)==null?void 0:l.activatorEl)==null||u.focus())}else t.submenu&&e.key===(f.value?"ArrowRight":"ArrowLeft")&&(s.value=!1,(r=(i=o.value)==null?void 0:i.activatorEl)==null||r.focus())}function y(e){var l;if(t.disabled)return;const a=(l=o.value)==null?void 0:l.contentEl;a&&s.value?e.key==="ArrowDown"?(e.preventDefault(),e.stopImmediatePropagation(),g(a,"next")):e.key==="ArrowUp"?(e.preventDefault(),e.stopImmediatePropagation(),g(a,"prev")):t.submenu&&(e.key===(f.value?"ArrowRight":"ArrowLeft")?s.value=!1:e.key===(f.value?"ArrowLeft":"ArrowRight")&&(e.preventDefault(),g(a,"first"))):(t.submenu?e.key===(f.value?"ArrowLeft":"ArrowRight"):["ArrowDown","ArrowUp"].includes(e.key))&&(s.value=!0,e.preventDefault(),setTimeout(()=>setTimeout(()=>y(e))))}const I=W(()=>A({"aria-haspopup":"menu","aria-expanded":String(s.value),"aria-controls":m.value,onKeydown:y},t.activatorProps));return $(()=>{const e=V.filterProps(t);return P(V,A({ref:o,id:m.value,class:["v-menu",t.class],style:t.style},e,{modelValue:s.value,"onUpdate:modelValue":a=>s.value=a,absolute:!0,activatorProps:I.value,location:t.location??(t.submenu?"end":"bottom"),"onClick:outside":C,onKeydown:D},R),{activator:c.activator,default:function(){for(var a=arguments.length,l=new Array(a),u=0;u<a;u++)l[u]=arguments[u];return P(G,{root:"VMenu"},{default:()=>{var i;return[(i=c.default)==null?void 0:i.call(c,...l)]}})}})}),J({id:m,ΨopenChildren:d},o)}});export{ne as V};