@data-slot/core 0.2.4 → 0.2.5
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 +26 -1
- package/dist/index.d.ts +26 -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}"]`)];let r=
|
|
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;
|
package/dist/index.d.cts
CHANGED
|
@@ -11,6 +11,31 @@ declare const getParts: <T extends Element = Element>(root: Element, slot: strin
|
|
|
11
11
|
* Find all component roots within a scope by data-slot value
|
|
12
12
|
*/
|
|
13
13
|
declare const getRoots: <T extends Element = Element>(scope: ParentNode, slot: string) => T[];
|
|
14
|
+
/**
|
|
15
|
+
* Parse a boolean data attribute.
|
|
16
|
+
* - Present with no value, "true", "1", "yes" → true
|
|
17
|
+
* - "false", "0", "no" → false
|
|
18
|
+
* - Absent or invalid → undefined
|
|
19
|
+
*/
|
|
20
|
+
declare function getDataBool(el: Element, key: string): boolean | undefined;
|
|
21
|
+
/**
|
|
22
|
+
* Parse a number data attribute.
|
|
23
|
+
* - Valid finite number → number
|
|
24
|
+
* - Absent, invalid, NaN, Infinity, empty → undefined
|
|
25
|
+
*/
|
|
26
|
+
declare function getDataNumber(el: Element, key: string): number | undefined;
|
|
27
|
+
/**
|
|
28
|
+
* Parse a string data attribute.
|
|
29
|
+
* - Present (including empty string) → string
|
|
30
|
+
* - Absent → undefined
|
|
31
|
+
*/
|
|
32
|
+
declare function getDataString(el: Element, key: string): string | undefined;
|
|
33
|
+
/**
|
|
34
|
+
* Parse an enum data attribute.
|
|
35
|
+
* - Valid value in allowed array → T
|
|
36
|
+
* - Absent or invalid → undefined
|
|
37
|
+
*/
|
|
38
|
+
declare function getDataEnum<T extends string>(el: Element, key: string, allowed: readonly T[]): T | undefined;
|
|
14
39
|
//#endregion
|
|
15
40
|
//#region src/aria.d.ts
|
|
16
41
|
/**
|
|
@@ -43,4 +68,4 @@ declare const emit: <T = unknown>(el: Element, name: string, detail?: T) => bool
|
|
|
43
68
|
*/
|
|
44
69
|
declare const composeHandlers: <E extends Event>(...handlers: Array<((e: E) => void) | undefined>) => ((e: E) => void);
|
|
45
70
|
//#endregion
|
|
46
|
-
export { composeHandlers, emit, ensureId, getPart, getParts, getRoots, linkLabelledBy, on, setAria };
|
|
71
|
+
export { composeHandlers, emit, ensureId, getDataBool, getDataEnum, getDataNumber, getDataString, getPart, getParts, getRoots, linkLabelledBy, on, setAria };
|
package/dist/index.d.ts
CHANGED
|
@@ -11,6 +11,31 @@ declare const getParts: <T extends Element = Element>(root: Element, slot: strin
|
|
|
11
11
|
* Find all component roots within a scope by data-slot value
|
|
12
12
|
*/
|
|
13
13
|
declare const getRoots: <T extends Element = Element>(scope: ParentNode, slot: string) => T[];
|
|
14
|
+
/**
|
|
15
|
+
* Parse a boolean data attribute.
|
|
16
|
+
* - Present with no value, "true", "1", "yes" → true
|
|
17
|
+
* - "false", "0", "no" → false
|
|
18
|
+
* - Absent or invalid → undefined
|
|
19
|
+
*/
|
|
20
|
+
declare function getDataBool(el: Element, key: string): boolean | undefined;
|
|
21
|
+
/**
|
|
22
|
+
* Parse a number data attribute.
|
|
23
|
+
* - Valid finite number → number
|
|
24
|
+
* - Absent, invalid, NaN, Infinity, empty → undefined
|
|
25
|
+
*/
|
|
26
|
+
declare function getDataNumber(el: Element, key: string): number | undefined;
|
|
27
|
+
/**
|
|
28
|
+
* Parse a string data attribute.
|
|
29
|
+
* - Present (including empty string) → string
|
|
30
|
+
* - Absent → undefined
|
|
31
|
+
*/
|
|
32
|
+
declare function getDataString(el: Element, key: string): string | undefined;
|
|
33
|
+
/**
|
|
34
|
+
* Parse an enum data attribute.
|
|
35
|
+
* - Valid value in allowed array → T
|
|
36
|
+
* - Absent or invalid → undefined
|
|
37
|
+
*/
|
|
38
|
+
declare function getDataEnum<T extends string>(el: Element, key: string, allowed: readonly T[]): T | undefined;
|
|
14
39
|
//#endregion
|
|
15
40
|
//#region src/aria.d.ts
|
|
16
41
|
/**
|
|
@@ -43,4 +68,4 @@ declare const emit: <T = unknown>(el: Element, name: string, detail?: T) => bool
|
|
|
43
68
|
*/
|
|
44
69
|
declare const composeHandlers: <E extends Event>(...handlers: Array<((e: E) => void) | undefined>) => ((e: E) => void);
|
|
45
70
|
//#endregion
|
|
46
|
-
export { composeHandlers, emit, ensureId, getPart, getParts, getRoots, linkLabelledBy, on, setAria };
|
|
71
|
+
export { composeHandlers, emit, ensureId, getDataBool, getDataEnum, getDataNumber, getDataString, getPart, getParts, getRoots, linkLabelledBy, on, setAria };
|
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}"]`)];let r=
|
|
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};
|