2 lines
4.0 KiB
JavaScript
2 lines
4.0 KiB
JavaScript
import{o as i,i as E,t as H,u as k,a as D,A as m,l as M,N as h}from"./kbVoKX6w.js";import{r as c,o as S,b7 as I,d as w,k as g,ag as A,bn as B,bm as C}from"./l4qGU2QO.js";function O(e,t){if(e)return e;let a=t??"button";if(typeof a=="string"&&a.toLowerCase()==="button")return"button"}function j(e,t){let a=c(O(e.value.type,e.value.as));return S(()=>{a.value=O(e.value.type,e.value.as)}),I(()=>{var s;a.value||i(t)&&i(t)instanceof HTMLButtonElement&&!((s=i(t))!=null&&s.hasAttribute("type"))&&(a.value="button")}),a}var v=(e=>(e.Space=" ",e.Enter="Enter",e.Escape="Escape",e.Backspace="Backspace",e.Delete="Delete",e.ArrowLeft="ArrowLeft",e.ArrowUp="ArrowUp",e.ArrowRight="ArrowRight",e.ArrowDown="ArrowDown",e.Home="Home",e.End="End",e.PageUp="PageUp",e.PageDown="PageDown",e.Tab="Tab",e))(v||{}),K=(e=>(e[e.Open=0]="Open",e[e.Closed=1]="Closed",e))(K||{});let $=Symbol("DisclosureContext");function P(e){let t=C($,null);if(t===null){let a=new Error(`<${e} /> is missing a parent <Disclosure /> component.`);throw Error.captureStackTrace&&Error.captureStackTrace(a,P),a}return t}let T=Symbol("DisclosurePanelContext");function N(){return C(T,null)}let V=w({name:"Disclosure",props:{as:{type:[Object,String],default:"template"},defaultOpen:{type:[Boolean],default:!1}},setup(e,{slots:t,attrs:a}){let s=c(e.defaultOpen?0:1),l=c(null),p=c(null),u={buttonId:c(`headlessui-disclosure-button-${E()}`),panelId:c(`headlessui-disclosure-panel-${E()}`),disclosureState:s,panel:l,button:p,toggleDisclosure(){s.value=k(s.value,{0:1,1:0})},closeDisclosure(){s.value!==1&&(s.value=1)},close(n){u.closeDisclosure();let r=n?n instanceof HTMLElement?n:n.value instanceof HTMLElement?i(n):i(u.button):i(u.button);r==null||r.focus()}};return B($,u),H(g(()=>k(s.value,{0:D.Open,1:D.Closed}))),()=>{let{defaultOpen:n,...r}=e,d={open:s.value===0,close:u.close};return m({theirProps:r,ourProps:{},slot:d,slots:t,attrs:a,name:"Disclosure"})}}}),q=w({name:"DisclosureButton",props:{as:{type:[Object,String],default:"button"},disabled:{type:[Boolean],default:!1},id:{type:String,default:null}},setup(e,{attrs:t,slots:a,expose:s}){let l=P("DisclosureButton"),p=N(),u=g(()=>p===null?!1:p.value===l.panelId.value);S(()=>{u.value||e.id!==null&&(l.buttonId.value=e.id)}),A(()=>{u.value||(l.buttonId.value=null)});let n=c(null);s({el:n,$el:n}),u.value||I(()=>{l.button.value=n.value});let r=j(g(()=>({as:e.as,type:t.type})),n);function d(){var o;e.disabled||(u.value?(l.toggleDisclosure(),(o=i(l.button))==null||o.focus()):l.toggleDisclosure())}function f(o){var b;if(!e.disabled)if(u.value)switch(o.key){case v.Space:case v.Enter:o.preventDefault(),o.stopPropagation(),l.toggleDisclosure(),(b=i(l.button))==null||b.focus();break}else switch(o.key){case v.Space:case v.Enter:o.preventDefault(),o.stopPropagation(),l.toggleDisclosure();break}}function y(o){switch(o.key){case v.Space:o.preventDefault();break}}return()=>{var o;let b={open:l.disclosureState.value===0},{id:x,...L}=e,U=u.value?{ref:n,type:r.value,onClick:d,onKeydown:f}:{id:(o=l.buttonId.value)!=null?o:x,ref:n,type:r.value,"aria-expanded":l.disclosureState.value===0,"aria-controls":l.disclosureState.value===0||i(l.panel)?l.panelId.value:void 0,disabled:e.disabled?!0:void 0,onClick:d,onKeydown:f,onKeyup:y};return m({ourProps:U,theirProps:L,slot:b,attrs:t,slots:a,name:"DisclosureButton"})}}}),z=w({name:"DisclosurePanel",props:{as:{type:[Object,String],default:"div"},static:{type:Boolean,default:!1},unmount:{type:Boolean,default:!0},id:{type:String,default:null}},setup(e,{attrs:t,slots:a,expose:s}){let l=P("DisclosurePanel");S(()=>{e.id!==null&&(l.panelId.value=e.id)}),A(()=>{l.panelId.value=null}),s({el:l.panel,$el:l.panel}),B(T,l.panelId);let p=M(),u=g(()=>p!==null?(p.value&D.Open)===D.Open:l.disclosureState.value===0);return()=>{var n;let r={open:l.disclosureState.value===0,close:l.close},{id:d,...f}=e,y={id:(n=l.panelId.value)!=null?n:d,ref:l.panel};return m({ourProps:y,theirProps:f,slot:r,attrs:t,slots:a,features:h.RenderStrategy|h.Static,visible:u.value,name:"DisclosurePanel"})}}});export{V as N,q as Q,z as V};
|