@data-slot/core 0.2.17 → 0.2.19
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.d.cts +22 -1
- package/dist/index.d.ts +22 -1
- package/dist/index.js +1 -1
- package/package.json +1 -1
package/dist/index.cjs
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
const e=(e,t)=>e.querySelector(`[data-slot="${t}"]`),t=(e,t)=>[...e.querySelectorAll(`[data-slot="${t}"]`)],n=(e,t)=>[...e.querySelectorAll(`[data-slot="${t}"]`)],r=new WeakMap;function i(e,t,n){if(typeof process<`u`&&process.env?.NODE_ENV===`production`)return;let i=r.get(e);i||(i=new Set,r.set(e,i)),!i.has(t)&&(i.add(t),console.warn(`[@data-slot] ${n}`))}function a(e){let t=`data-${e.replace(/([A-Z])/g,`-$1`).toLowerCase()}`,n=`data-${e}`;return t===n?[t]:[t,n]}function o(e,t){for(let n of a(t))if(e.hasAttribute(n))return e.getAttribute(n);return null}function s(e,t){return a(t).some(t=>e.hasAttribute(t))}const c=new Set([``,`true`,`1`,`yes`]),l=new Set([`false`,`0`,`no`]);function u(e,t){if(!s(e,t))return;let n=o(e,t);if(n===null)return;let r=n.toLowerCase();if(c.has(r))return!0;if(l.has(r))return!1;i(e,t,`Invalid boolean value "${n}" for data-${t}. Expected: true/false/1/0/yes/no or empty.`)}function d(e,t){let n=o(e,t);if(n===null||n===``)return;let r=Number(n);if(Number.isNaN(r)||!Number.isFinite(r)){i(e,t,`Invalid number value "${n}" for data-${t}.`);return}return r}function f(e,t){if(s(e,t))return o(e,t)??void 0}function p(e,t,n){let r=o(e,t);if(r!==null){if(n.includes(r))return r;i(e,t,`Invalid value "${r}" for data-${t}. Expected one of: ${n.join(`, `)}.`)}}let m=0;const h=(e,t)=>e.id||=`${t}-${++m}`,g=(e,t,n)=>{n===null?e.removeAttribute(`aria-${t}`):e.setAttribute(`aria-${t}`,String(n))},_=(e,t,n)=>{t&&e.setAttribute(`aria-labelledby`,h(t,`title`)),n&&e.setAttribute(`aria-describedby`,h(n,`desc`))};function v(e,t,n,r){return e.addEventListener(t,n,r),()=>e.removeEventListener(t,n,r)}const y=(e,t,n)=>e.dispatchEvent(new CustomEvent(t,{bubbles:!0,detail:n})),b=(...e)=>t=>{for(let n of e){if(t.defaultPrevented)break;n?.(t)}};exports.composeHandlers=b,exports.emit=y,exports.ensureId=h,exports.getDataBool=u,exports.getDataEnum=p,exports.getDataNumber=d,exports.getDataString=f,exports.getPart=e,exports.getParts=t,exports.getRoots=n,exports.linkLabelledBy=_,exports.on=v,exports.setAria=g;
|
|
1
|
+
const e=(e,t)=>e.querySelector(`[data-slot="${t}"]`),t=(e,t)=>[...e.querySelectorAll(`[data-slot="${t}"]`)],n=(e,t)=>[...e.querySelectorAll(`[data-slot="${t}"]`)],r=new WeakMap;function i(e,t,n){if(typeof process<`u`&&process.env?.NODE_ENV===`production`)return;let i=r.get(e);i||(i=new Set,r.set(e,i)),!i.has(t)&&(i.add(t),console.warn(`[@data-slot] ${n}`))}function a(e){let t=`data-${e.replace(/([A-Z])/g,`-$1`).toLowerCase()}`,n=`data-${e}`;return t===n?[t]:[t,n]}function o(e,t){for(let n of a(t))if(e.hasAttribute(n))return e.getAttribute(n);return null}function s(e,t){return a(t).some(t=>e.hasAttribute(t))}const c=new Set([``,`true`,`1`,`yes`]),l=new Set([`false`,`0`,`no`]);function u(e,t){if(!s(e,t))return;let n=o(e,t);if(n===null)return;let r=n.toLowerCase();if(c.has(r))return!0;if(l.has(r))return!1;i(e,t,`Invalid boolean value "${n}" for data-${t}. Expected: true/false/1/0/yes/no or empty.`)}function d(e,t){let n=o(e,t);if(n===null||n===``)return;let r=Number(n);if(Number.isNaN(r)||!Number.isFinite(r)){i(e,t,`Invalid number value "${n}" for data-${t}.`);return}return r}function f(e,t){if(s(e,t))return o(e,t)??void 0}function p(e,t,n){let r=o(e,t);if(r!==null){if(n.includes(r))return r;i(e,t,`Invalid value "${r}" for data-${t}. Expected one of: ${n.join(`, `)}.`)}}let m=0;const h=(e,t)=>e.id||=`${t}-${++m}`,g=(e,t,n)=>{n===null?e.removeAttribute(`aria-${t}`):e.setAttribute(`aria-${t}`,String(n))},_=(e,t,n)=>{t&&e.setAttribute(`aria-labelledby`,h(t,`title`)),n&&e.setAttribute(`aria-describedby`,h(n,`desc`))};function v(e,t,n,r){return e.addEventListener(t,n,r),()=>e.removeEventListener(t,n,r)}const y=(e,t,n)=>e.dispatchEvent(new CustomEvent(t,{bubbles:!0,detail:n})),b=(...e)=>t=>{for(let n of e){if(t.defaultPrevented)break;n?.(t)}};let x=0,S=``,C=``;function w(){if(x===0){let e=window.innerWidth-document.documentElement.clientWidth;S=document.body.style.overflow,C=document.body.style.paddingRight;let t=parseFloat(getComputedStyle(document.body).paddingRight)||0;document.body.style.paddingRight=`${t+e}px`,document.body.style.overflow=`hidden`}x++}function T(){x=Math.max(0,x-1),x===0&&(document.body.style.overflow=S,document.body.style.paddingRight=C)}exports.composeHandlers=b,exports.emit=y,exports.ensureId=h,exports.getDataBool=u,exports.getDataEnum=p,exports.getDataNumber=d,exports.getDataString=f,exports.getPart=e,exports.getParts=t,exports.getRoots=n,exports.linkLabelledBy=_,exports.lockScroll=w,exports.on=v,exports.setAria=g,exports.unlockScroll=T;
|
package/dist/index.d.cts
CHANGED
|
@@ -68,4 +68,25 @@ declare const emit: <T = unknown>(el: Element, name: string, detail?: T) => bool
|
|
|
68
68
|
*/
|
|
69
69
|
declare const composeHandlers: <E extends Event>(...handlers: Array<((e: E) => void) | undefined>) => ((e: E) => void);
|
|
70
70
|
//#endregion
|
|
71
|
-
|
|
71
|
+
//#region src/scroll.d.ts
|
|
72
|
+
/**
|
|
73
|
+
* Scroll lock utilities with reference counting.
|
|
74
|
+
* Prevents body scroll when overlays (dialogs, selects, dropdowns) are open.
|
|
75
|
+
* Handles scrollbar width compensation to prevent layout shift.
|
|
76
|
+
*/
|
|
77
|
+
/**
|
|
78
|
+
* Lock document scroll. Call when opening an overlay.
|
|
79
|
+
* Uses reference counting - multiple overlays can be open simultaneously.
|
|
80
|
+
*/
|
|
81
|
+
declare function lockScroll(): void;
|
|
82
|
+
/**
|
|
83
|
+
* Unlock document scroll. Call when closing an overlay.
|
|
84
|
+
* Only restores scroll when all overlays are closed (ref count reaches 0).
|
|
85
|
+
*/
|
|
86
|
+
declare function unlockScroll(): void;
|
|
87
|
+
/**
|
|
88
|
+
* Get current scroll lock count (for testing).
|
|
89
|
+
*/
|
|
90
|
+
|
|
91
|
+
//#endregion
|
|
92
|
+
export { composeHandlers, emit, ensureId, getDataBool, getDataEnum, getDataNumber, getDataString, getPart, getParts, getRoots, linkLabelledBy, lockScroll, on, setAria, unlockScroll };
|
package/dist/index.d.ts
CHANGED
|
@@ -68,4 +68,25 @@ declare const emit: <T = unknown>(el: Element, name: string, detail?: T) => bool
|
|
|
68
68
|
*/
|
|
69
69
|
declare const composeHandlers: <E extends Event>(...handlers: Array<((e: E) => void) | undefined>) => ((e: E) => void);
|
|
70
70
|
//#endregion
|
|
71
|
-
|
|
71
|
+
//#region src/scroll.d.ts
|
|
72
|
+
/**
|
|
73
|
+
* Scroll lock utilities with reference counting.
|
|
74
|
+
* Prevents body scroll when overlays (dialogs, selects, dropdowns) are open.
|
|
75
|
+
* Handles scrollbar width compensation to prevent layout shift.
|
|
76
|
+
*/
|
|
77
|
+
/**
|
|
78
|
+
* Lock document scroll. Call when opening an overlay.
|
|
79
|
+
* Uses reference counting - multiple overlays can be open simultaneously.
|
|
80
|
+
*/
|
|
81
|
+
declare function lockScroll(): void;
|
|
82
|
+
/**
|
|
83
|
+
* Unlock document scroll. Call when closing an overlay.
|
|
84
|
+
* Only restores scroll when all overlays are closed (ref count reaches 0).
|
|
85
|
+
*/
|
|
86
|
+
declare function unlockScroll(): void;
|
|
87
|
+
/**
|
|
88
|
+
* Get current scroll lock count (for testing).
|
|
89
|
+
*/
|
|
90
|
+
|
|
91
|
+
//#endregion
|
|
92
|
+
export { composeHandlers, emit, ensureId, getDataBool, getDataEnum, getDataNumber, getDataString, getPart, getParts, getRoots, linkLabelledBy, lockScroll, on, setAria, unlockScroll };
|
package/dist/index.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
const e=(e,t)=>e.querySelector(`[data-slot="${t}"]`),t=(e,t)=>[...e.querySelectorAll(`[data-slot="${t}"]`)],n=(e,t)=>[...e.querySelectorAll(`[data-slot="${t}"]`)],r=new WeakMap;function i(e,t,n){if(typeof process<`u`&&process.env?.NODE_ENV===`production`)return;let i=r.get(e);i||(i=new Set,r.set(e,i)),!i.has(t)&&(i.add(t),console.warn(`[@data-slot] ${n}`))}function a(e){let t=`data-${e.replace(/([A-Z])/g,`-$1`).toLowerCase()}`,n=`data-${e}`;return t===n?[t]:[t,n]}function o(e,t){for(let n of a(t))if(e.hasAttribute(n))return e.getAttribute(n);return null}function s(e,t){return a(t).some(t=>e.hasAttribute(t))}const c=new Set([``,`true`,`1`,`yes`]),l=new Set([`false`,`0`,`no`]);function u(e,t){if(!s(e,t))return;let n=o(e,t);if(n===null)return;let r=n.toLowerCase();if(c.has(r))return!0;if(l.has(r))return!1;i(e,t,`Invalid boolean value "${n}" for data-${t}. Expected: true/false/1/0/yes/no or empty.`)}function d(e,t){let n=o(e,t);if(n===null||n===``)return;let r=Number(n);if(Number.isNaN(r)||!Number.isFinite(r)){i(e,t,`Invalid number value "${n}" for data-${t}.`);return}return r}function f(e,t){if(s(e,t))return o(e,t)??void 0}function p(e,t,n){let r=o(e,t);if(r!==null){if(n.includes(r))return r;i(e,t,`Invalid value "${r}" for data-${t}. Expected one of: ${n.join(`, `)}.`)}}let m=0;const h=(e,t)=>e.id||=`${t}-${++m}`,g=(e,t,n)=>{n===null?e.removeAttribute(`aria-${t}`):e.setAttribute(`aria-${t}`,String(n))},_=(e,t,n)=>{t&&e.setAttribute(`aria-labelledby`,h(t,`title`)),n&&e.setAttribute(`aria-describedby`,h(n,`desc`))};function v(e,t,n,r){return e.addEventListener(t,n,r),()=>e.removeEventListener(t,n,r)}const y=(e,t,n)=>e.dispatchEvent(new CustomEvent(t,{bubbles:!0,detail:n})),b=(...e)=>t=>{for(let n of e){if(t.defaultPrevented)break;n?.(t)}};export{b as composeHandlers,y as emit,h as ensureId,u as getDataBool,p as getDataEnum,d as getDataNumber,f as getDataString,e as getPart,t as getParts,n as getRoots,_ as linkLabelledBy,v as on,g as setAria};
|
|
1
|
+
const e=(e,t)=>e.querySelector(`[data-slot="${t}"]`),t=(e,t)=>[...e.querySelectorAll(`[data-slot="${t}"]`)],n=(e,t)=>[...e.querySelectorAll(`[data-slot="${t}"]`)],r=new WeakMap;function i(e,t,n){if(typeof process<`u`&&process.env?.NODE_ENV===`production`)return;let i=r.get(e);i||(i=new Set,r.set(e,i)),!i.has(t)&&(i.add(t),console.warn(`[@data-slot] ${n}`))}function a(e){let t=`data-${e.replace(/([A-Z])/g,`-$1`).toLowerCase()}`,n=`data-${e}`;return t===n?[t]:[t,n]}function o(e,t){for(let n of a(t))if(e.hasAttribute(n))return e.getAttribute(n);return null}function s(e,t){return a(t).some(t=>e.hasAttribute(t))}const c=new Set([``,`true`,`1`,`yes`]),l=new Set([`false`,`0`,`no`]);function u(e,t){if(!s(e,t))return;let n=o(e,t);if(n===null)return;let r=n.toLowerCase();if(c.has(r))return!0;if(l.has(r))return!1;i(e,t,`Invalid boolean value "${n}" for data-${t}. Expected: true/false/1/0/yes/no or empty.`)}function d(e,t){let n=o(e,t);if(n===null||n===``)return;let r=Number(n);if(Number.isNaN(r)||!Number.isFinite(r)){i(e,t,`Invalid number value "${n}" for data-${t}.`);return}return r}function f(e,t){if(s(e,t))return o(e,t)??void 0}function p(e,t,n){let r=o(e,t);if(r!==null){if(n.includes(r))return r;i(e,t,`Invalid value "${r}" for data-${t}. Expected one of: ${n.join(`, `)}.`)}}let m=0;const h=(e,t)=>e.id||=`${t}-${++m}`,g=(e,t,n)=>{n===null?e.removeAttribute(`aria-${t}`):e.setAttribute(`aria-${t}`,String(n))},_=(e,t,n)=>{t&&e.setAttribute(`aria-labelledby`,h(t,`title`)),n&&e.setAttribute(`aria-describedby`,h(n,`desc`))};function v(e,t,n,r){return e.addEventListener(t,n,r),()=>e.removeEventListener(t,n,r)}const y=(e,t,n)=>e.dispatchEvent(new CustomEvent(t,{bubbles:!0,detail:n})),b=(...e)=>t=>{for(let n of e){if(t.defaultPrevented)break;n?.(t)}};let x=0,S=``,C=``;function w(){if(x===0){let e=window.innerWidth-document.documentElement.clientWidth;S=document.body.style.overflow,C=document.body.style.paddingRight;let t=parseFloat(getComputedStyle(document.body).paddingRight)||0;document.body.style.paddingRight=`${t+e}px`,document.body.style.overflow=`hidden`}x++}function T(){x=Math.max(0,x-1),x===0&&(document.body.style.overflow=S,document.body.style.paddingRight=C)}export{b as composeHandlers,y as emit,h as ensureId,u as getDataBool,p as getDataEnum,d as getDataNumber,f as getDataString,e as getPart,t as getParts,n as getRoots,_ as linkLabelledBy,w as lockScroll,v as on,g as setAria,T as unlockScroll};
|