@data-slot/tabs 0.2.29 → 0.2.31
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 +5 -5
package/dist/index.cjs
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
|
|
1
|
+
var e=Object.create,t=Object.defineProperty,n=Object.getOwnPropertyDescriptor,r=Object.getOwnPropertyNames,i=Object.getPrototypeOf,a=Object.prototype.hasOwnProperty,o=(e,i,o,s)=>{if(i&&typeof i==`object`||typeof i==`function`)for(var c=r(i),l=0,u=c.length,d;l<u;l++)d=c[l],!a.call(e,d)&&d!==o&&t(e,d,{get:(e=>i[e]).bind(null,d),enumerable:!(s=n(i,d))||s.enumerable});return e},s=(n,r,a)=>(a=n==null?{}:e(i(n)),o(r||!n||!n.__esModule?t(a,`default`,{value:n,enumerable:!0}):a,n));const c=s(require(`@data-slot/core`)),l=[`horizontal`,`vertical`],u=[`auto`,`manual`],d=`a[href],button:not([disabled]),input:not([disabled]),select:not([disabled]),textarea:not([disabled]),[tabindex]:not([tabindex="-1"])`;function f(e,t={}){let n=(0,c.getPart)(e,`tabs-list`),r=(0,c.getParts)(e,`tabs-trigger`),i=(0,c.getParts)(e,`tabs-content`),a=(0,c.getPart)(e,`tabs-indicator`);if(!n||r.length===0)throw Error(`Tabs requires tabs-list and at least one tabs-trigger`);let o=t.onValueChange,s=t.orientation??(0,c.getDataEnum)(e,`orientation`,l)??`horizontal`,f=t.activationMode??(0,c.getDataEnum)(e,`activationMode`,u)??`auto`,m=new Map;for(let e of i){let t=(e.dataset.value||``).trim();t&&m.set(t,e)}let h=[],g=new Map,_=new Map;for(let e of r){let t=(e.dataset.value||``).trim();if(!t)continue;let n=e.hasAttribute(`disabled`)||e.dataset.disabled!==void 0||e.getAttribute(`aria-disabled`)===`true`,r=m.get(t),i={el:e,value:t,disabled:n,panel:r};h.push(i),g.set(t,i),_.set(e,i)}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=(t.defaultValue??(0,c.getDataString)(e,`defaultValue`)??``).trim(),S=g.get(x),C=S&&!S.disabled?x:b,w=[];n.setAttribute(`role`,`tablist`),s===`vertical`&&(0,c.setAria)(n,`orientation`,`vertical`);for(let e of h){let{el:t,disabled:n,panel:r}=e;t.setAttribute(`role`,`tab`);let i=(0,c.ensureId)(t,`tab`);if(t.tagName===`BUTTON`&&!t.hasAttribute(`type`)&&(t.type=`button`),n&&(t.setAttribute(`aria-disabled`,`true`),t.tagName===`BUTTON`&&(t.disabled=!0)),r){r.setAttribute(`role`,`tabpanel`),r.tabIndex=-1;let e=(0,c.ensureId)(r,`tabpanel`);t.setAttribute(`aria-controls`,e),r.setAttribute(`aria-labelledby`,i)}}let T=()=>{if(!a)return;let e=g.get(C);if(!e)return;let t=n.getBoundingClientRect(),r=e.el.getBoundingClientRect(),i=n.scrollLeft,o=n.scrollTop;a.style.setProperty(`--active-tab-left`,`${r.left-t.left-n.clientLeft+i}px`),a.style.setProperty(`--active-tab-width`,`${r.width}px`),a.style.setProperty(`--active-tab-top`,`${r.top-t.top-n.clientTop+o}px`),a.style.setProperty(`--active-tab-height`,`${r.height}px`)},E=(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 s=C!==t;C=t;for(let e of h){let n=e.value===t;(0,c.setAria)(e.el,`selected`,n),e.el.tabIndex=n&&!e.disabled?0:-1,e.el.dataset.state=n?`active`:`inactive`}for(let e of i){let n=(e.dataset.value||``).trim();if(!n)continue;let r=n===t;e.hidden=!r,e.dataset.state=r?`active`:`inactive`}e.setAttribute(`data-value`,t),a&&T(),s&&!n&&((0,c.emit)(e,`tabs:change`,{value:t}),o?.(t))};if(E(C,!0),a){let e=()=>requestAnimationFrame(T);w.push((0,c.on)(window,`resize`,e)),w.push((0,c.on)(n,`scroll`,e));let t=new ResizeObserver(e);t.observe(n),w.push(()=>t.disconnect())}w.push((0,c.on)(n,`click`,e=>{let t=e.target.closest?.(`[data-slot="tabs-trigger"]`);if(!t)return;let n=_.get(t);n&&!n.disabled&&E(n.value)}));let D=s===`horizontal`,O=D?`ArrowLeft`:`ArrowUp`,k=D?`ArrowRight`:`ArrowDown`;w.push((0,c.on)(n,`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||E(n.value);return}if(D&&e.key===`ArrowDown`&&n.value===C){let t=n.panel;if(t){e.preventDefault();let n=t.querySelector(d);(n||t).focus();return}}let r=y.get(n.value)??-1;r===-1&&(r=y.get(C)??0);let i=r;switch(e.key){case O:i=r-1,i<0&&(i=v.length-1);break;case k: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(),f===`auto`&&E(a.value))}));let A=e=>{let t=e,n=e.currentTarget,r=t.detail,i=typeof r==`string`?r:r?.value??n?.dataset?.value,a=i?.trim();a&&E(a)};w.push((0,c.on)(e,`tabs:set`,A)),w.push((0,c.on)(e,`tabs:select`,A));let j={select:e=>E(e),get value(){return C},updateIndicator:T,destroy:()=>{w.forEach(e=>e()),w.length=0,p.delete(e)}};return j}const p=new WeakSet;function m(e=document){let t=[];for(let n of(0,c.getRoots)(e,`tabs`)){if(p.has(n))continue;p.add(n),t.push(f(n))}return t}exports.create=m,exports.createTabs=f;
|
package/dist/index.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
|
|
1
|
+
import{emit as e,ensureId as t,getDataEnum as n,getDataString as r,getPart as i,getParts as a,getRoots as o,on as s,setAria as c}from"@data-slot/core";const l=[`horizontal`,`vertical`],u=[`auto`,`manual`],d=`a[href],button:not([disabled]),input:not([disabled]),select:not([disabled]),textarea:not([disabled]),[tabindex]:not([tabindex="-1"])`;function f(o,f={}){let m=i(o,`tabs-list`),h=a(o,`tabs-trigger`),g=a(o,`tabs-content`),_=i(o,`tabs-indicator`);if(!m||h.length===0)throw Error(`Tabs requires tabs-list and at least one tabs-trigger`);let v=f.onValueChange,y=f.orientation??n(o,`orientation`,l)??`horizontal`,b=f.activationMode??n(o,`activationMode`,u)??`auto`,x=new Map;for(let e of g){let t=(e.dataset.value||``).trim();t&&x.set(t,e)}let S=[],C=new Map,w=new Map;for(let e of h){let t=(e.dataset.value||``).trim();if(!t)continue;let n=e.hasAttribute(`disabled`)||e.dataset.disabled!==void 0||e.getAttribute(`aria-disabled`)===`true`,r=x.get(t),i={el:e,value:t,disabled:n,panel:r};S.push(i),C.set(t,i),w.set(e,i)}let T=S.filter(e=>!e.disabled),E=new Map;T.forEach((e,t)=>E.set(e.value,t));let D=T[0]?.value||``,O=(f.defaultValue??r(o,`defaultValue`)??``).trim(),k=C.get(O),A=k&&!k.disabled?O:D,j=[];m.setAttribute(`role`,`tablist`),y===`vertical`&&c(m,`orientation`,`vertical`);for(let e of S){let{el:n,disabled:r,panel:i}=e;n.setAttribute(`role`,`tab`);let a=t(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 e=t(i,`tabpanel`);n.setAttribute(`aria-controls`,e),i.setAttribute(`aria-labelledby`,a)}}let M=()=>{if(!_)return;let e=C.get(A);if(!e)return;let t=m.getBoundingClientRect(),n=e.el.getBoundingClientRect(),r=m.scrollLeft,i=m.scrollTop;_.style.setProperty(`--active-tab-left`,`${n.left-t.left-m.clientLeft+r}px`),_.style.setProperty(`--active-tab-width`,`${n.width}px`),_.style.setProperty(`--active-tab-top`,`${n.top-t.top-m.clientTop+i}px`),_.style.setProperty(`--active-tab-height`,`${n.height}px`)},N=(t,n=!1)=>{if(t=t.trim(),A===t&&!n)return;let r=C.get(t);if(!r||r.disabled)if(n){if(t=D,!t)return}else return;let i=A!==t;A=t;for(let e of S){let n=e.value===t;c(e.el,`selected`,n),e.el.tabIndex=n&&!e.disabled?0:-1,e.el.dataset.state=n?`active`:`inactive`}for(let e of g){let n=(e.dataset.value||``).trim();if(!n)continue;let r=n===t;e.hidden=!r,e.dataset.state=r?`active`:`inactive`}o.setAttribute(`data-value`,t),_&&M(),i&&!n&&(e(o,`tabs:change`,{value:t}),v?.(t))};if(N(A,!0),_){let e=()=>requestAnimationFrame(M);j.push(s(window,`resize`,e)),j.push(s(m,`scroll`,e));let t=new ResizeObserver(e);t.observe(m),j.push(()=>t.disconnect())}j.push(s(m,`click`,e=>{let t=e.target.closest?.(`[data-slot="tabs-trigger"]`);if(!t)return;let n=w.get(t);n&&!n.disabled&&N(n.value)}));let P=y===`horizontal`,F=P?`ArrowLeft`:`ArrowUp`,I=P?`ArrowRight`:`ArrowDown`;j.push(s(m,`keydown`,e=>{let t=e.target.closest?.(`[data-slot="tabs-trigger"]`);if(!t)return;let n=w.get(t);if(!n||T.length===0)return;if(e.key===`Enter`||e.key===` `){e.preventDefault(),n.disabled||N(n.value);return}if(P&&e.key===`ArrowDown`&&n.value===A){let t=n.panel;if(t){e.preventDefault();let n=t.querySelector(d);(n||t).focus();return}}let r=E.get(n.value)??-1;r===-1&&(r=E.get(A)??0);let i=r;switch(e.key){case F:i=r-1,i<0&&(i=T.length-1);break;case I:i=r+1,i>=T.length&&(i=0);break;case`Home`:i=0;break;case`End`:i=T.length-1;break;default:return}e.preventDefault();let a=T[i];a&&(a.el.focus(),b===`auto`&&N(a.value))}));let L=e=>{let t=e,n=e.currentTarget,r=t.detail,i=typeof r==`string`?r:r?.value??n?.dataset?.value,a=i?.trim();a&&N(a)};j.push(s(o,`tabs:set`,L)),j.push(s(o,`tabs:select`,L));let R={select:e=>N(e),get value(){return A},updateIndicator:M,destroy:()=>{j.forEach(e=>e()),j.length=0,p.delete(o)}};return R}const p=new WeakSet;function m(e=document){let t=[];for(let n of o(e,`tabs`)){if(p.has(n))continue;p.add(n),t.push(f(n))}return t}export{m as create,f 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.31",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"sideEffects": false,
|
|
6
6
|
"main": "./dist/index.cjs",
|
|
@@ -24,9 +24,6 @@
|
|
|
24
24
|
"scripts": {
|
|
25
25
|
"build": "tsdown"
|
|
26
26
|
},
|
|
27
|
-
"devDependencies": {
|
|
28
|
-
"@data-slot/core": "workspace:*"
|
|
29
|
-
},
|
|
30
27
|
"repository": {
|
|
31
28
|
"type": "git",
|
|
32
29
|
"url": "https://github.com/bejamas/data-slot",
|
|
@@ -39,5 +36,8 @@
|
|
|
39
36
|
"vanilla",
|
|
40
37
|
"data-slot"
|
|
41
38
|
],
|
|
42
|
-
"license": "MIT"
|
|
39
|
+
"license": "MIT",
|
|
40
|
+
"dependencies": {
|
|
41
|
+
"@data-slot/core": "workspace:*"
|
|
42
|
+
}
|
|
43
43
|
}
|