@data-slot/tabs 0.2.122 → 0.2.124
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.cjs +1 -1
- package/dist/index.js +1 -1
- package/package.json +2 -2
package/dist/index.cjs
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});let e=require(`@data-slot/core`);const t=[`horizontal`,`vertical`],n=[`auto`,`manual`]
|
|
1
|
+
Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});let e=require(`@data-slot/core`);const t=[`horizontal`,`vertical`],n=[`auto`,`manual`],r=`@data-slot/tabs`;function i(i,a={}){let o=(0,e.reuseRootBinding)(i,r,`[@data-slot/tabs] createTabs() called more than once for the same root. Returning the existing controller. Destroy it before rebinding with new options.`);if(o)return o;let s=(0,e.getPart)(i,`tabs-list`),c=(0,e.getParts)(i,`tabs-trigger`),l=(0,e.getParts)(i,`tabs-content`),u=(0,e.getPart)(i,`tabs-indicator`);if(!s||c.length===0)throw Error(`Tabs requires tabs-list and at least one tabs-trigger`);let d=a.onValueChange,f=a.orientation??(0,e.getDataEnum)(i,`orientation`,t)??`horizontal`,p=a.activationMode??(0,e.getDataEnum)(i,`activationMode`,n)??`auto`,m=new Map;for(let e of l){let t=(e.dataset.value||``).trim();t&&m.set(t,e)}let h=[],g=new Map,_=new Map;for(let e of c){let t=(e.dataset.value||``).trim();if(!t)continue;let n={el:e,value:t,disabled:e.hasAttribute(`disabled`)||e.dataset.disabled!==void 0||e.getAttribute(`aria-disabled`)===`true`,panel:m.get(t)};h.push(n),g.set(t,n),_.set(e,n)}let v=h.filter(e=>!e.disabled),y=new Map;v.forEach((e,t)=>y.set(e.value,t));let b=v[0]?.value||``,x=(a.defaultValue??(0,e.getDataString)(i,`defaultValue`)??``).trim(),S=g.get(x),C=S&&!S.disabled?x:b,w=[],T=null;s.setAttribute(`role`,`tablist`),f===`vertical`&&(0,e.setAria)(s,`orientation`,`vertical`);for(let t of h){let{el:n,disabled:r,panel:i}=t;n.setAttribute(`role`,`tab`);let a=(0,e.ensureId)(n,`tab`);if(n.tagName===`BUTTON`&&!n.hasAttribute(`type`)&&(n.type=`button`),r&&(n.setAttribute(`aria-disabled`,`true`),n.tagName===`BUTTON`&&(n.disabled=!0)),i){i.setAttribute(`role`,`tabpanel`),i.tabIndex=-1;let t=(0,e.ensureId)(i,`tabpanel`);n.setAttribute(`aria-controls`,t),i.setAttribute(`aria-labelledby`,a)}}let E=e=>{let t=0,n=0,r=e;for(;r&&r!==s;){t+=r.offsetLeft,n+=r.offsetTop;let e=r.offsetParent;if(!(e instanceof HTMLElement))return null;e!==s&&(t-=e.scrollLeft,n-=e.scrollTop),r=e}return r===s?{left:t,top:n,width:e.offsetWidth,height:e.offsetHeight}:null},D=e=>{let t=s.getBoundingClientRect(),n=e.getBoundingClientRect();return{left:n.left-t.left-s.clientLeft+s.scrollLeft,top:n.top-t.top-s.clientTop+s.scrollTop,width:n.width,height:n.height}},O=()=>{if(!u)return;let e=g.get(C);if(!e)return;let t=E(e.el)??D(e.el);u.style.setProperty(`--active-tab-left`,`${t.left}px`),u.style.setProperty(`--active-tab-width`,`${t.width}px`),u.style.setProperty(`--active-tab-top`,`${t.top}px`),u.style.setProperty(`--active-tab-height`,`${t.height}px`)},k=()=>{!u||T!==null||(T=requestAnimationFrame(()=>{T=null,O()}))},A=(e,t)=>{let n=h.findIndex(t=>t.value===e),r=h.findIndex(e=>e.value===t);return n<0||r<0||n===r?null:f===`vertical`?r>n?`down`:`up`:r>n?`right`:`left`},j=(t,n=!1)=>{if(t=t.trim(),C===t&&!n)return;let r=g.get(t);if(!r||r.disabled)if(n){if(t=b,!t)return}else return;let a=C,o=a!==t,s=!n&&o?A(a,t):null;C=t;for(let n of h){let r=n.value===t;(0,e.setAria)(n.el,`selected`,r),n.el.tabIndex=r&&!n.disabled?0:-1,n.el.dataset.state=r?`active`:`inactive`}for(let e of l){let n=(e.dataset.value||``).trim();if(!n)continue;let r=n===t;e.hidden=!r,e.dataset.state=r?`active`:`inactive`,s?e.dataset.activationDirection=s:delete e.dataset.activationDirection}i.setAttribute(`data-value`,t),k(),o&&!n&&((0,e.emit)(i,`tabs:change`,{value:t}),d?.(t))};if(j(C,!0),u){let t=()=>k();w.push((0,e.on)(window,`resize`,t)),w.push((0,e.on)(s,`scroll`,t));let n=new ResizeObserver(t);n.observe(s),w.push(()=>n.disconnect()),w.push(()=>{T!==null&&(cancelAnimationFrame(T),T=null)})}w.push((0,e.on)(s,`click`,e=>{let t=e.target.closest?.(`[data-slot="tabs-trigger"]`);if(!t)return;let n=_.get(t);n&&!n.disabled&&j(n.value)}));let M=f===`horizontal`,N=M?`ArrowLeft`:`ArrowUp`,P=M?`ArrowRight`:`ArrowDown`;w.push((0,e.on)(s,`keydown`,e=>{let t=e.target.closest?.(`[data-slot="tabs-trigger"]`);if(!t)return;let n=_.get(t);if(!n||v.length===0)return;if(e.key===`Enter`||e.key===` `){e.preventDefault(),n.disabled||j(n.value);return}if(M&&e.key===`ArrowDown`&&n.value===C){let t=n.panel;if(t){e.preventDefault(),(t.querySelector(`a[href],button:not([disabled]),input:not([disabled]),select:not([disabled]),textarea:not([disabled]),[tabindex]:not([tabindex="-1"])`)||t).focus();return}}let r=y.get(n.value)??-1;r===-1&&(r=y.get(C)??0);let i=r;switch(e.key){case N:i=r-1,i<0&&(i=v.length-1);break;case P:i=r+1,i>=v.length&&(i=0);break;case`Home`:i=0;break;case`End`:i=v.length-1;break;default:return}e.preventDefault();let a=v[i];a&&(a.el.focus(),p===`auto`&&j(a.value))}));let F=e=>{let t=e,n=e.currentTarget,r=t.detail,i=(typeof r==`string`?r:r?.value??n?.dataset?.value)?.trim();i&&j(i)};w.push((0,e.on)(i,`tabs:set`,F)),w.push((0,e.on)(i,`tabs:select`,F));let I={select:e=>j(e),get value(){return C},updateIndicator:O,destroy:()=>{w.forEach(e=>e()),w.length=0,(0,e.clearRootBinding)(i,r,I)}};return(0,e.setRootBinding)(i,r,I),I}function a(t=document){let n=[];for(let a of(0,e.getRoots)(t,`tabs`))(0,e.hasRootBinding)(a,r)||n.push(i(a));return n}exports.create=a,exports.createTabs=i;
|
package/dist/index.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
import{
|
|
1
|
+
import{clearRootBinding as e,emit as t,ensureId as n,getDataEnum as r,getDataString as i,getPart as a,getParts as o,getRoots as s,hasRootBinding as c,on as l,reuseRootBinding as u,setAria as d,setRootBinding as f}from"@data-slot/core";const p=[`horizontal`,`vertical`],m=[`auto`,`manual`],h=`@data-slot/tabs`;function g(s,c={}){let g=u(s,h,`[@data-slot/tabs] createTabs() called more than once for the same root. Returning the existing controller. Destroy it before rebinding with new options.`);if(g)return g;let _=a(s,`tabs-list`),v=o(s,`tabs-trigger`),y=o(s,`tabs-content`),b=a(s,`tabs-indicator`);if(!_||v.length===0)throw Error(`Tabs requires tabs-list and at least one tabs-trigger`);let x=c.onValueChange,S=c.orientation??r(s,`orientation`,p)??`horizontal`,C=c.activationMode??r(s,`activationMode`,m)??`auto`,w=new Map;for(let e of y){let t=(e.dataset.value||``).trim();t&&w.set(t,e)}let T=[],E=new Map,D=new Map;for(let e of v){let t=(e.dataset.value||``).trim();if(!t)continue;let n={el:e,value:t,disabled:e.hasAttribute(`disabled`)||e.dataset.disabled!==void 0||e.getAttribute(`aria-disabled`)===`true`,panel:w.get(t)};T.push(n),E.set(t,n),D.set(e,n)}let O=T.filter(e=>!e.disabled),k=new Map;O.forEach((e,t)=>k.set(e.value,t));let A=O[0]?.value||``,j=(c.defaultValue??i(s,`defaultValue`)??``).trim(),M=E.get(j),N=M&&!M.disabled?j:A,P=[],F=null;_.setAttribute(`role`,`tablist`),S===`vertical`&&d(_,`orientation`,`vertical`);for(let e of T){let{el:t,disabled:r,panel:i}=e;t.setAttribute(`role`,`tab`);let a=n(t,`tab`);if(t.tagName===`BUTTON`&&!t.hasAttribute(`type`)&&(t.type=`button`),r&&(t.setAttribute(`aria-disabled`,`true`),t.tagName===`BUTTON`&&(t.disabled=!0)),i){i.setAttribute(`role`,`tabpanel`),i.tabIndex=-1;let e=n(i,`tabpanel`);t.setAttribute(`aria-controls`,e),i.setAttribute(`aria-labelledby`,a)}}let I=e=>{let t=0,n=0,r=e;for(;r&&r!==_;){t+=r.offsetLeft,n+=r.offsetTop;let e=r.offsetParent;if(!(e instanceof HTMLElement))return null;e!==_&&(t-=e.scrollLeft,n-=e.scrollTop),r=e}return r===_?{left:t,top:n,width:e.offsetWidth,height:e.offsetHeight}:null},L=e=>{let t=_.getBoundingClientRect(),n=e.getBoundingClientRect();return{left:n.left-t.left-_.clientLeft+_.scrollLeft,top:n.top-t.top-_.clientTop+_.scrollTop,width:n.width,height:n.height}},R=()=>{if(!b)return;let e=E.get(N);if(!e)return;let t=I(e.el)??L(e.el);b.style.setProperty(`--active-tab-left`,`${t.left}px`),b.style.setProperty(`--active-tab-width`,`${t.width}px`),b.style.setProperty(`--active-tab-top`,`${t.top}px`),b.style.setProperty(`--active-tab-height`,`${t.height}px`)},z=()=>{!b||F!==null||(F=requestAnimationFrame(()=>{F=null,R()}))},B=(e,t)=>{let n=T.findIndex(t=>t.value===e),r=T.findIndex(e=>e.value===t);return n<0||r<0||n===r?null:S===`vertical`?r>n?`down`:`up`:r>n?`right`:`left`},V=(e,n=!1)=>{if(e=e.trim(),N===e&&!n)return;let r=E.get(e);if(!r||r.disabled)if(n){if(e=A,!e)return}else return;let i=N,a=i!==e,o=!n&&a?B(i,e):null;N=e;for(let t of T){let n=t.value===e;d(t.el,`selected`,n),t.el.tabIndex=n&&!t.disabled?0:-1,t.el.dataset.state=n?`active`:`inactive`}for(let t of y){let n=(t.dataset.value||``).trim();if(!n)continue;let r=n===e;t.hidden=!r,t.dataset.state=r?`active`:`inactive`,o?t.dataset.activationDirection=o:delete t.dataset.activationDirection}s.setAttribute(`data-value`,e),z(),a&&!n&&(t(s,`tabs:change`,{value:e}),x?.(e))};if(V(N,!0),b){let e=()=>z();P.push(l(window,`resize`,e)),P.push(l(_,`scroll`,e));let t=new ResizeObserver(e);t.observe(_),P.push(()=>t.disconnect()),P.push(()=>{F!==null&&(cancelAnimationFrame(F),F=null)})}P.push(l(_,`click`,e=>{let t=e.target.closest?.(`[data-slot="tabs-trigger"]`);if(!t)return;let n=D.get(t);n&&!n.disabled&&V(n.value)}));let H=S===`horizontal`,U=H?`ArrowLeft`:`ArrowUp`,W=H?`ArrowRight`:`ArrowDown`;P.push(l(_,`keydown`,e=>{let t=e.target.closest?.(`[data-slot="tabs-trigger"]`);if(!t)return;let n=D.get(t);if(!n||O.length===0)return;if(e.key===`Enter`||e.key===` `){e.preventDefault(),n.disabled||V(n.value);return}if(H&&e.key===`ArrowDown`&&n.value===N){let t=n.panel;if(t){e.preventDefault(),(t.querySelector(`a[href],button:not([disabled]),input:not([disabled]),select:not([disabled]),textarea:not([disabled]),[tabindex]:not([tabindex="-1"])`)||t).focus();return}}let r=k.get(n.value)??-1;r===-1&&(r=k.get(N)??0);let i=r;switch(e.key){case U:i=r-1,i<0&&(i=O.length-1);break;case W:i=r+1,i>=O.length&&(i=0);break;case`Home`:i=0;break;case`End`:i=O.length-1;break;default:return}e.preventDefault();let a=O[i];a&&(a.el.focus(),C===`auto`&&V(a.value))}));let G=e=>{let t=e,n=e.currentTarget,r=t.detail,i=(typeof r==`string`?r:r?.value??n?.dataset?.value)?.trim();i&&V(i)};P.push(l(s,`tabs:set`,G)),P.push(l(s,`tabs:select`,G));let K={select:e=>V(e),get value(){return N},updateIndicator:R,destroy:()=>{P.forEach(e=>e()),P.length=0,e(s,h,K)}};return f(s,h,K),K}function _(e=document){let t=[];for(let n of s(e,`tabs`))c(n,h)||t.push(g(n));return t}export{_ as create,g as createTabs};
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@data-slot/tabs",
|
|
3
|
-
"version": "0.2.
|
|
3
|
+
"version": "0.2.124",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"sideEffects": false,
|
|
6
6
|
"main": "./dist/index.cjs",
|
|
@@ -34,6 +34,6 @@
|
|
|
34
34
|
],
|
|
35
35
|
"license": "MIT",
|
|
36
36
|
"dependencies": {
|
|
37
|
-
"@data-slot/core": "0.2.
|
|
37
|
+
"@data-slot/core": "0.2.124"
|
|
38
38
|
}
|
|
39
39
|
}
|