Files
site/public/dist/assets/menu.esm.eab5e425.js
2025-04-21 16:03:20 +02:00

2 lines
8.7 KiB
JavaScript
Vendored

import{d as b,r as D,a as C,F as O,m as A,c as T,K as I}from"./dom.esm.2d7131b5.js";import{u as $,d as B,e as _,S as E}from"./transition.esm.89c10969.js";import{u as L}from"./use-resolve-button-type.esm.e228f45b.js";import{a5 as P,a6 as R,P as S,Q as M,R as K,S as j,$ as w,a3 as U,a4 as F}from"./vendor.7e4e5e39.js";function W(n){throw new Error("Unexpected object: "+n)}var f;(function(n){n[n.First=0]="First",n[n.Previous=1]="Previous",n[n.Next=2]="Next",n[n.Last=3]="Last",n[n.Specific=4]="Specific",n[n.Nothing=5]="Nothing"})(f||(f={}));function V(n,e){var a=e.resolveItems();if(a.length<=0)return null;var d=e.resolveActiveIndex(),o=d!=null?d:-1,u=function(){switch(n.focus){case f.First:return a.findIndex(function(t){return!e.resolveDisabled(t)});case f.Previous:{var l=a.slice().reverse().findIndex(function(t,r,i){return o!==-1&&i.length-r-1>=o?!1:!e.resolveDisabled(t)});return l===-1?l:a.length-1-l}case f.Next:return a.findIndex(function(t,r){return r<=o?!1:!e.resolveDisabled(t)});case f.Last:{var p=a.slice().reverse().findIndex(function(t){return!e.resolveDisabled(t)});return p===-1?p:a.length-1-p}case f.Specific:return a.findIndex(function(t){return e.resolveId(t)===n.id});case f.Nothing:return null;default:W(n)}}();return u===-1?d:u}function Q(n){var e=n.container,a=n.accept,d=n.walk,o=n.enabled;P(function(){var u=e.value;if(!!u&&!(o!==void 0&&!o.value))for(var l=Object.assign(function(t){return a(t)},{acceptNode:a}),p=document.createTreeWalker(u,NodeFilter.SHOW_ELEMENT,l,!1);p.nextNode();)d(p.currentNode)})}var h;(function(n){n[n.Open=0]="Open",n[n.Closed=1]="Closed"})(h||(h={}));function q(n){requestAnimationFrame(function(){return requestAnimationFrame(n)})}var N=Symbol("MenuContext");function k(n){var e=U(N,null);if(e===null){var a=new Error("<"+n+" /> is missing a parent <Menu /> component.");throw Error.captureStackTrace&&Error.captureStackTrace(a,k),a}return e}var X=R({name:"Menu",props:{as:{type:[Object,String],default:"template"}},setup:function(e,a){var d=a.slots,o=a.attrs,u=S(h.Closed),l=S(null),p=S(null),t=S([]),r=S(""),i=S(null),g={menuState:u,buttonRef:l,itemsRef:p,items:t,searchQuery:r,activeItemIndex:i,closeMenu:function(){u.value=h.Closed,i.value=null},openMenu:function(){return u.value=h.Open},goToItem:function(s,c){var m=V(s===f.Specific?{focus:f.Specific,id:c}:{focus:s},{resolveItems:function(){return t.value},resolveActiveIndex:function(){return i.value},resolveId:function(x){return x.id},resolveDisabled:function(x){return x.dataRef.disabled}});r.value===""&&i.value===m||(r.value="",i.value=m)},search:function(s){r.value+=s.toLowerCase();var c=t.value.findIndex(function(m){return m.dataRef.textValue.startsWith(r.value)&&!m.dataRef.disabled});c===-1||c===i.value||(i.value=c)},clearSearch:function(){r.value=""},registerItem:function(s,c){t.value.push({id:s,dataRef:c})},unregisterItem:function(s){var c=t.value.slice(),m=i.value!==null?c[i.value]:null,y=c.findIndex(function(x){return x.id===s});y!==-1&&c.splice(y,1),t.value=c,i.value=function(){return y===i.value||m===null?null:c.indexOf(m)}()}};return B("mousedown",function(v){var s,c,m,y=v.target,x=document.activeElement;u.value===h.Open&&(((s=b(l))==null?void 0:s.contains(y))||(((c=b(p))==null?void 0:c.contains(y))||g.closeMenu(),!(x!==document.body&&(x==null?void 0:x.contains(y)))&&(v.defaultPrevented||(m=b(l))==null||m.focus({preventScroll:!0}))))}),F(N,g),_(M(function(){var v;return A(u.value,(v={},v[h.Open]=E.Open,v[h.Closed]=E.Closed,v))})),function(){var v={open:u.value===h.Open};return D({props:e,slot:v,slots:d,attrs:o,name:"Menu"})}}}),Y=R({name:"MenuButton",props:{disabled:{type:Boolean,default:!1},as:{type:[Object,String],default:"button"}},render:function(){var e,a=k("MenuButton"),d={open:a.menuState.value===h.Open},o={ref:"el",id:this.id,type:this.type,"aria-haspopup":!0,"aria-controls":(e=b(a.itemsRef))==null?void 0:e.id,"aria-expanded":this.$props.disabled?void 0:a.menuState.value===h.Open,onKeydown:this.handleKeyDown,onKeyup:this.handleKeyUp,onClick:this.handleClick};return D({props:C({},this.$props,o),slot:d,attrs:this.$attrs,slots:this.$slots,name:"MenuButton"})},setup:function(e,a){var d=a.attrs,o=k("MenuButton"),u="headlessui-menu-button-"+T();function l(r){switch(r.key){case I.Space:case I.Enter:case I.ArrowDown:r.preventDefault(),r.stopPropagation(),o.openMenu(),w(function(){var i;(i=b(o.itemsRef))==null||i.focus({preventScroll:!0}),o.goToItem(f.First)});break;case I.ArrowUp:r.preventDefault(),r.stopPropagation(),o.openMenu(),w(function(){var i;(i=b(o.itemsRef))==null||i.focus({preventScroll:!0}),o.goToItem(f.Last)});break}}function p(r){switch(r.key){case I.Space:r.preventDefault();break}}function t(r){e.disabled||(o.menuState.value===h.Open?(o.closeMenu(),w(function(){var i;return(i=b(o.buttonRef))==null?void 0:i.focus({preventScroll:!0})})):(r.preventDefault(),r.stopPropagation(),o.openMenu(),q(function(){var i;return(i=b(o.itemsRef))==null?void 0:i.focus({preventScroll:!0})})))}return{id:u,el:o.buttonRef,type:L(M(function(){return{as:e.as,type:d.type}}),o.buttonRef),handleKeyDown:l,handleKeyUp:p,handleClick:t}}}),Z=R({name:"MenuItems",props:{as:{type:[Object,String],default:"div"},static:{type:Boolean,default:!1},unmount:{type:Boolean,default:!0}},render:function(){var e,a,d=k("MenuItems"),o={open:d.menuState.value===h.Open},u={"aria-activedescendant":d.activeItemIndex.value===null||(e=d.items.value[d.activeItemIndex.value])==null?void 0:e.id,"aria-labelledby":(a=b(d.buttonRef))==null?void 0:a.id,id:this.id,onKeydown:this.handleKeyDown,onKeyup:this.handleKeyUp,role:"menu",tabIndex:0,ref:"el"},l=this.$props;return D({props:C({},l,u),slot:o,attrs:this.$attrs,slots:this.$slots,features:O.RenderStrategy|O.Static,visible:this.visible,name:"MenuItems"})},setup:function(){var e=k("MenuItems"),a="headlessui-menu-items-"+T(),d=S(null);Q({container:M(function(){return b(e.itemsRef)}),enabled:M(function(){return e.menuState.value===h.Open}),accept:function(r){return r.getAttribute("role")==="menuitem"?NodeFilter.FILTER_REJECT:r.hasAttribute("role")?NodeFilter.FILTER_SKIP:NodeFilter.FILTER_ACCEPT},walk:function(r){r.setAttribute("role","none")}});function o(t){switch(d.value&&clearTimeout(d.value),t.key){case I.Space:if(e.searchQuery.value!=="")return t.preventDefault(),t.stopPropagation(),e.search(t.key);case I.Enter:if(t.preventDefault(),t.stopPropagation(),e.activeItemIndex.value!==null){var r,i=e.items.value[e.activeItemIndex.value].id;(r=document.getElementById(i))==null||r.click()}e.closeMenu(),w(function(){var g;return(g=b(e.buttonRef))==null?void 0:g.focus({preventScroll:!0})});break;case I.ArrowDown:return t.preventDefault(),t.stopPropagation(),e.goToItem(f.Next);case I.ArrowUp:return t.preventDefault(),t.stopPropagation(),e.goToItem(f.Previous);case I.Home:case I.PageUp:return t.preventDefault(),t.stopPropagation(),e.goToItem(f.First);case I.End:case I.PageDown:return t.preventDefault(),t.stopPropagation(),e.goToItem(f.Last);case I.Escape:t.preventDefault(),t.stopPropagation(),e.closeMenu(),w(function(){var g;return(g=b(e.buttonRef))==null?void 0:g.focus({preventScroll:!0})});break;case I.Tab:t.preventDefault(),t.stopPropagation();break;default:t.key.length===1&&(e.search(t.key),d.value=setTimeout(function(){return e.clearSearch()},350));break}}function u(t){switch(t.key){case I.Space:t.preventDefault();break}}var l=$(),p=M(function(){return l!==null?l.value===E.Open:e.menuState.value===h.Open});return{id:a,el:e.itemsRef,handleKeyDown:o,handleKeyUp:u,visible:p}}}),ee=R({name:"MenuItem",props:{as:{type:[Object,String],default:"template"},disabled:{type:Boolean,default:!1}},setup:function(e,a){var d=a.slots,o=a.attrs,u=k("MenuItem"),l="headlessui-menu-item-"+T(),p=M(function(){return u.activeItemIndex.value!==null?u.items.value[u.activeItemIndex.value].id===l:!1}),t=S({disabled:e.disabled,textValue:""});K(function(){var s,c,m=(s=document.getElementById(l))==null||(c=s.textContent)==null?void 0:c.toLowerCase().trim();m!==void 0&&(t.value.textValue=m)}),K(function(){return u.registerItem(l,t)}),j(function(){return u.unregisterItem(l)}),P(function(){u.menuState.value===h.Open&&(!p.value||w(function(){var s;return(s=document.getElementById(l))==null||s.scrollIntoView==null?void 0:s.scrollIntoView({block:"nearest"})}))});function r(s){if(e.disabled)return s.preventDefault();u.closeMenu(),w(function(){var c;return(c=b(u.buttonRef))==null?void 0:c.focus({preventScroll:!0})})}function i(){if(e.disabled)return u.goToItem(f.Nothing);u.goToItem(f.Specific,l)}function g(){e.disabled||p.value||u.goToItem(f.Specific,l)}function v(){e.disabled||!p.value||u.goToItem(f.Nothing)}return function(){var s=e.disabled,c={active:p.value,disabled:s},m={id:l,role:"menuitem",tabIndex:s===!0?void 0:-1,"aria-disabled":s===!0?!0:void 0,onClick:r,onFocus:i,onPointermove:g,onMousemove:g,onPointerleave:v,onMouseleave:v};return D({props:C({},e,m),slot:c,attrs:o,slots:d,name:"MenuItem"})}}});export{X as M,Y as a,ee as b,Z as c};