Files
monisuo/monisuo-admin/dist/assets/RovingFocusGroup-BI5E2MOD.js
2026-03-22 23:32:23 +08:00

1 line
2.8 KiB
JavaScript

import{Ct as e,H as t,S as n,bt as r,mt as i,nt as a,v as o,w as s,z as c}from"./vue.runtime.esm-bundler-DQjudA8G.js";import{m as l}from"./dist-t_U6YImb.js";import{t as u}from"./createContext-BefgL9WT.js";import{r as d}from"./useForwardPropsEmits-ixfQllIc.js";import{t as f}from"./Primitive-jhoGcsVx.js";import{n as p}from"./usePrimitiveElement-BKQPgqfD.js";import{t as m}from"./Collection-CEQN_ElG.js";var h=`rovingFocusGroup.onEntryFocus`,g={bubbles:!1,cancelable:!0},_={ArrowLeft:`prev`,ArrowUp:`prev`,ArrowRight:`next`,ArrowDown:`next`,PageUp:`first`,Home:`first`,PageDown:`last`,End:`last`};function v(e,t){return t===`rtl`?e===`ArrowLeft`?`ArrowRight`:e===`ArrowRight`?`ArrowLeft`:e:e}function y(e,t,n){let r=v(e.key,n);if(!(t===`vertical`&&[`ArrowLeft`,`ArrowRight`].includes(r))&&!(t===`horizontal`&&[`ArrowUp`,`ArrowDown`].includes(r)))return _[r]}function b(e,t=!1){let n=d();for(let r of e)if(r===n||(r.focus({preventScroll:t}),d()!==n))return}function x(e,t){return e.map((n,r)=>e[(t+r)%e.length])}var[S,C]=u(`RovingFocusGroup`),w=s({__name:`RovingFocusGroup`,props:{orientation:{type:String,required:!1,default:void 0},dir:{type:String,required:!1},loop:{type:Boolean,required:!1,default:!1},currentTabStopId:{type:[String,null],required:!1},defaultCurrentTabStopId:{type:String,required:!1},preventScrollOnEntryFocus:{type:Boolean,required:!1,default:!1},asChild:{type:Boolean,required:!1},as:{type:null,required:!1}},emits:[`entryFocus`,`update:currentTabStopId`],setup(s,{expose:u,emit:d}){let _=s,v=d,{loop:y,orientation:x,dir:S}=r(_),w=p(S),T=l(_,`currentTabStopId`,v,{defaultValue:_.defaultCurrentTabStopId,passive:_.currentTabStopId===void 0}),E=i(!1),D=i(!1),O=i(0),{getItems:k,CollectionSlot:A}=m({isProvider:!0});function j(e){let t=!D.value;if(e.currentTarget&&e.target===e.currentTarget&&t&&!E.value){let t=new CustomEvent(h,g);if(e.currentTarget.dispatchEvent(t),v(`entryFocus`,t),!t.defaultPrevented){let e=k().map(e=>e.ref).filter(e=>e.dataset.disabled!==``);b([e.find(e=>e.getAttribute(`data-active`)===``),e.find(e=>e.getAttribute(`data-highlighted`)===``),e.find(e=>e.id===T.value),...e].filter(Boolean),_.preventScrollOnEntryFocus)}}D.value=!1}function M(){setTimeout(()=>{D.value=!1},1)}return u({getItems:k}),C({loop:y,dir:w,orientation:x,currentTabStopId:T,onItemFocus:e=>{T.value=e},onItemShiftTab:()=>{E.value=!0},onFocusableItemAdd:()=>{O.value++},onFocusableItemRemove:()=>{O.value--}}),(r,i)=>(c(),o(e(A),null,{default:a(()=>[n(e(f),{tabindex:E.value||O.value===0?-1:0,"data-orientation":e(x),as:r.as,"as-child":r.asChild,dir:e(w),style:{outline:`none`},onMousedown:i[0]||=e=>D.value=!0,onMouseup:M,onFocus:j,onBlur:i[1]||=e=>E.value=!1},{default:a(()=>[t(r.$slots,`default`)]),_:3},8,[`tabindex`,`data-orientation`,`as`,`as-child`,`dir`])]),_:3}))}});export{x as a,y as i,S as n,b as r,w as t};