1 |
- import{o as x,a as W,f as D,P as A,g as q,c as L,R as k,d as b,N as F,t as z,m as G,b as T,M as m,u as U}from"./micro-task.27a59902.js";import{e as g,B as E,z as j,d as S,h as O,A as y,y as H,F as K,D as C,x as J}from"./index.c685e846.js";function B(e,n){if(e)return e;let r=n!=null?n:"button";if(typeof r=="string"&&r.toLowerCase()==="button")return"button"}function Q(e,n){let r=g(B(e.value.type,e.value.as));return E(()=>{r.value=B(e.value.type,e.value.as)}),j(()=>{var o;r.value||!x(n)||x(n)instanceof HTMLButtonElement&&!((o=x(n))!=null&&o.hasAttribute("type"))&&(r.value="button")}),r}let V=S({props:{onFocus:{type:Function,required:!0}},setup(e){let n=g(!0);return()=>n.value?O(D,{as:"button",type:"button",features:W.Focusable,onFocus(r){r.preventDefault();let o,t=50;function i(){var l;if(t--<=0){o&&cancelAnimationFrame(o);return}if((l=e.onFocus)!=null&&l.call(e)){n.value=!1,cancelAnimationFrame(o);return}o=requestAnimationFrame(i)}o=requestAnimationFrame(i)}}):null}}),M=Symbol("TabsContext");function w(e){let n=J(M,null);if(n===null){let r=new Error(`<${e} /> is missing a parent <TabGroup /> component.`);throw Error.captureStackTrace&&Error.captureStackTrace(r,w),r}return n}let Z=S({name:"TabGroup",emits:{change:e=>!0},props:{as:{type:[Object,String],default:"template"},selectedIndex:{type:[Number],default:null},defaultIndex:{type:[Number],default:0},vertical:{type:[Boolean],default:!1},manual:{type:[Boolean],default:!1}},inheritAttrs:!1,setup(e,{slots:n,attrs:r,emit:o}){let t=g(null),i=g([]),l=g([]),c=y(()=>e.selectedIndex!==null),v=y(()=>c.value?e.selectedIndex:t.value),p={selectedIndex:t,orientation:y(()=>e.vertical?"vertical":"horizontal"),activation:y(()=>e.manual?"manual":"auto"),tabs:i,panels:l,setSelectedIndex(u){v.value!==u&&o("change",u),c.value||(t.value=u)},registerTab(u){i.value.includes(u)||i.value.push(u)},unregisterTab(u){let s=i.value.indexOf(u);s!==-1&&i.value.splice(s,1)},registerPanel(u){l.value.includes(u)||l.value.push(u)},unregisterPanel(u){let s=l.value.indexOf(u);s!==-1&&l.value.splice(s,1)}};return H(M,p),j(()=>{var u;if(p.tabs.value.length<=0||e.selectedIndex===null&&t.value!==null)return;let s=p.tabs.value.map(P=>x(P)).filter(Boolean),f=s.filter(P=>!P.hasAttribute("disabled")),h=(u=e.selectedIndex)!=null?u:e.defaultIndex;if(h<0)t.value=s.indexOf(f[0]);else if(h>p.tabs.value.length)t.value=s.indexOf(f[f.length-1]);else{let P=s.slice(0,h),a=[...s.slice(h),...P].find(d=>f.includes(d));if(!a)return;t.value=s.indexOf(a)}}),()=>{let u={selectedIndex:t.value};return O(K,[i.value.length<=0&&O(V,{onFocus:()=>{for(let s of i.value){let f=x(s);if((f==null?void 0:f.tabIndex)===0)return f.focus(),!0}return!1}}),A({theirProps:{...r,...q(e,["selectedIndex","defaultIndex","manual","vertical","onChange"])},ourProps:{},slot:u,slots:n,attrs:r,name:"TabGroup"})])}}}),_=S({name:"TabList",props:{as:{type:[Object,String],default:"div"}},setup(e,{attrs:n,slots:r}){let o=w("TabList");return()=>{let t={selectedIndex:o.selectedIndex.value},i={role:"tablist","aria-orientation":o.orientation.value};return A({ourProps:i,theirProps:e,slot:t,attrs:n,slots:r,name:"TabList"})}}}),ee=S({name:"Tab",props:{as:{type:[Object,String],default:"button"},disabled:{type:[Boolean],default:!1}},setup(e,{attrs:n,slots:r,expose:o}){let t=w("Tab"),i=`headlessui-tabs-tab-${L()}`,l=g(null);o({el:l,$el:l}),E(()=>t.registerTab(l)),C(()=>t.unregisterTab(l));let c=y(()=>t.tabs.value.indexOf(l)),v=y(()=>c.value===t.selectedIndex.value);function p(a){var d;let I=a();if(I===F.Success&&t.activation.value==="auto"){let N=(d=G(l))==null?void 0:d.activeElement,$=t.tabs.value.findIndex(R=>x(R)===N);$!==-1&&t.setSelectedIndex($)}return I}function u(a){let d=t.tabs.value.map(I=>x(I)).filter(Boolean);if(a.key===b.Space||a.key===b.Enter){a.preventDefault(),a.stopPropagation(),t.setSelectedIndex(c.value);return}switch(a.key){case b.Home:case b.PageUp:return a.preventDefault(),a.stopPropagation(),p(()=>T(d,m.First));case b.End:case b.PageDown:return a.preventDefault(),a.stopPropagation(),p(()=>T(d,m.Last))}if(p(()=>U(t.orientation.value,{vertical(){return a.key===b.ArrowUp?T(d,m.Previous|m.WrapAround):a.key===b.ArrowDown?T(d,m.Next|m.WrapAround):F.Error},horizontal(){return a.key===b.ArrowLeft?T(d,m.Previous|m.WrapAround):a.key===b.ArrowRight?T(d,m.Next|m.WrapAround):F.Error}}))===F.Success)return a.preventDefault()}let s=g(!1);function f(){var a;s.value||(s.value=!0,!e.disabled&&((a=x(l))==null||a.focus(),t.setSelectedIndex(c.value),z(()=>{s.value=!1})))}function h(a){a.preventDefault()}let P=Q(y(()=>({as:e.as,type:n.type})),l);return()=>{var a;let d={selected:v.value},I={ref:l,onKeydown:u,onMousedown:h,onClick:f,id:i,role:"tab",type:P.value,"aria-controls":(a=x(t.panels.value[c.value]))==null?void 0:a.id,"aria-selected":v.value,tabIndex:v.value?0:-1,disabled:e.disabled?!0:void 0};return A({ourProps:I,theirProps:e,slot:d,attrs:n,slots:r,name:"Tab"})}}}),te=S({name:"TabPanels",props:{as:{type:[Object,String],default:"div"}},setup(e,{slots:n,attrs:r}){let o=w("TabPanels");return()=>{let t={selectedIndex:o.selectedIndex.value};return A({theirProps:e,ourProps:{},slot:t,attrs:r,slots:n,name:"TabPanels"})}}}),ae=S({name:"TabPanel",props:{as:{type:[Object,String],default:"div"},static:{type:Boolean,default:!1},unmount:{type:Boolean,default:!0}},setup(e,{attrs:n,slots:r,expose:o}){let t=w("TabPanel"),i=`headlessui-tabs-panel-${L()}`,l=g(null);o({el:l,$el:l}),E(()=>t.registerPanel(l)),C(()=>t.unregisterPanel(l));let c=y(()=>t.panels.value.indexOf(l)),v=y(()=>c.value===t.selectedIndex.value);return()=>{var p;let u={selected:v.value},s={ref:l,id:i,role:"tabpanel","aria-labelledby":(p=x(t.tabs.value[c.value]))==null?void 0:p.id,tabIndex:v.value?0:-1};return!v.value&&e.unmount&&!e.static?O(D,{as:"span",...s}):A({ourProps:s,theirProps:e,slot:u,attrs:n,slots:r,features:k.Static|k.RenderStrategy,visible:v.value,name:"TabPanel"})}}});export{ae as c,ee as d,te as f,Z as o,_ as s};
|