@data-slot/toggle 0.2.10 → 0.2.12
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/README.md +23 -2
- package/dist/index.cjs +1 -1
- package/dist/index.js +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -170,6 +170,8 @@ The component automatically handles:
|
|
|
170
170
|
|
|
171
171
|
## Events
|
|
172
172
|
|
|
173
|
+
### Outbound Events
|
|
174
|
+
|
|
173
175
|
Listen for changes via custom events:
|
|
174
176
|
|
|
175
177
|
```javascript
|
|
@@ -178,20 +180,39 @@ element.addEventListener("toggle:change", (e) => {
|
|
|
178
180
|
});
|
|
179
181
|
```
|
|
180
182
|
|
|
183
|
+
### Inbound Events
|
|
184
|
+
|
|
181
185
|
Control the toggle via events (ignored when disabled):
|
|
182
186
|
|
|
187
|
+
| Event | Detail | Description |
|
|
188
|
+
|-------|--------|-------------|
|
|
189
|
+
| `toggle:set` | `{ value: boolean }` | Set pressed state programmatically |
|
|
190
|
+
|
|
183
191
|
```javascript
|
|
184
192
|
// Set to specific state
|
|
185
193
|
element.dispatchEvent(
|
|
186
|
-
new CustomEvent("toggle:set", { detail: {
|
|
194
|
+
new CustomEvent("toggle:set", { detail: { value: true } })
|
|
187
195
|
);
|
|
196
|
+
```
|
|
197
|
+
|
|
198
|
+
### Deprecated Shapes
|
|
199
|
+
|
|
200
|
+
The following shapes are deprecated and will be removed in v1.0:
|
|
188
201
|
|
|
189
|
-
|
|
202
|
+
```javascript
|
|
203
|
+
// Deprecated: boolean detail
|
|
190
204
|
element.dispatchEvent(
|
|
191
205
|
new CustomEvent("toggle:set", { detail: true })
|
|
192
206
|
);
|
|
207
|
+
|
|
208
|
+
// Deprecated: { pressed } shape
|
|
209
|
+
element.dispatchEvent(
|
|
210
|
+
new CustomEvent("toggle:set", { detail: { pressed: true } })
|
|
211
|
+
);
|
|
193
212
|
```
|
|
194
213
|
|
|
214
|
+
Use `{ value: boolean }` instead.
|
|
215
|
+
|
|
195
216
|
## License
|
|
196
217
|
|
|
197
218
|
MIT
|
package/dist/index.cjs
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
const e=(e,t)=>[...e.querySelectorAll(`[data-slot="${t}"]`)],t=new WeakMap;function n(e,n,r){if(typeof process<`u`&&process.env?.NODE_ENV===`production`)return;let i=t.get(e);i||(i=new Set,t.set(e,i)),!i.has(n)&&(i.add(n),console.warn(`[@data-slot] ${r}`))}function r(e){let t=`data-${e.replace(/([A-Z])/g,`-$1`).toLowerCase()}`,n=`data-${e}`;return t===n?[t]:[t,n]}function i(e,t){for(let n of r(t))if(e.hasAttribute(n))return e.getAttribute(n);return null}function a(e,t){return r(t).some(t=>e.hasAttribute(t))}const o=new Set([``,`true`,`1`,`yes`]),s=new Set([`false`,`0`,`no`]);function c(e,t){if(!a(e,t))return;let r=i(e,t);if(r===null)return;let c=r.toLowerCase();if(o.has(c))return!0;if(s.has(c))return!1;n(e,t,`Invalid boolean value "${r}" for data-${t}. Expected: true/false/1/0/yes/no or empty.`)}const l=(e,t,n)=>{n===null?e.removeAttribute(`aria-${t}`):e.setAttribute(`aria-${t}`,String(n))};function u(e,t,n,r){return e.addEventListener(t,n,r),()=>e.removeEventListener(t,n,r)}const d=(e,t,n)=>e.dispatchEvent(new CustomEvent(t,{bubbles:!0,detail:n}));function f(e,t={}){let n=t.defaultPressed??c(e,`defaultPressed`)??!1,r=t.disabled??c(e,`disabled`)??!1,i=t.onPressedChange,a=n,o=[],s=()=>e.hasAttribute(`disabled`)||e.getAttribute(`aria-disabled`)===`true`,f=(t,n=!1)=>{a===t&&!n||(a=t,l(e,`pressed`,a),e.dataset.state=a?`on`:`off`,n||(d(e,`toggle:change`,{pressed:a}),i?.(a)))};return r&&(e.tagName===`BUTTON`&&e.setAttribute(`disabled`,``),e.setAttribute(`aria-disabled`,`true`)),e.tagName===`BUTTON`&&!e.hasAttribute(`type`)&&e.setAttribute(`type`,`button`),f(a,!0),o.push(u(e,`click`,()=>{s()||f(!a)})),o.push(u(e,`toggle:set`,e=>{if(s())return;let t=e.detail,n
|
|
1
|
+
const e=(e,t)=>[...e.querySelectorAll(`[data-slot="${t}"]`)],t=new WeakMap;function n(e,n,r){if(typeof process<`u`&&process.env?.NODE_ENV===`production`)return;let i=t.get(e);i||(i=new Set,t.set(e,i)),!i.has(n)&&(i.add(n),console.warn(`[@data-slot] ${r}`))}function r(e){let t=`data-${e.replace(/([A-Z])/g,`-$1`).toLowerCase()}`,n=`data-${e}`;return t===n?[t]:[t,n]}function i(e,t){for(let n of r(t))if(e.hasAttribute(n))return e.getAttribute(n);return null}function a(e,t){return r(t).some(t=>e.hasAttribute(t))}const o=new Set([``,`true`,`1`,`yes`]),s=new Set([`false`,`0`,`no`]);function c(e,t){if(!a(e,t))return;let r=i(e,t);if(r===null)return;let c=r.toLowerCase();if(o.has(c))return!0;if(s.has(c))return!1;n(e,t,`Invalid boolean value "${r}" for data-${t}. Expected: true/false/1/0/yes/no or empty.`)}const l=(e,t,n)=>{n===null?e.removeAttribute(`aria-${t}`):e.setAttribute(`aria-${t}`,String(n))};function u(e,t,n,r){return e.addEventListener(t,n,r),()=>e.removeEventListener(t,n,r)}const d=(e,t,n)=>e.dispatchEvent(new CustomEvent(t,{bubbles:!0,detail:n}));function f(e,t={}){let n=t.defaultPressed??c(e,`defaultPressed`)??!1,r=t.disabled??c(e,`disabled`)??!1,i=t.onPressedChange,a=n,o=[],s=()=>e.hasAttribute(`disabled`)||e.getAttribute(`aria-disabled`)===`true`,f=(t,n=!1)=>{a===t&&!n||(a=t,l(e,`pressed`,a),e.dataset.state=a?`on`:`off`,n||(d(e,`toggle:change`,{pressed:a}),i?.(a)))};return r&&(e.tagName===`BUTTON`&&e.setAttribute(`disabled`,``),e.setAttribute(`aria-disabled`,`true`)),e.tagName===`BUTTON`&&!e.hasAttribute(`type`)&&e.setAttribute(`type`,`button`),f(a,!0),o.push(u(e,`click`,()=>{s()||f(!a)})),o.push(u(e,`toggle:set`,e=>{if(s())return;let t=e.detail,n;typeof t==`boolean`?n=t:t?.value===void 0?t?.pressed!==void 0&&(n=t.pressed):n=t.value,typeof n==`boolean`&&f(n)})),{toggle:()=>f(!a),press:()=>f(!0),release:()=>f(!1),get pressed(){return a},destroy:()=>{o.forEach(e=>e()),o.length=0,p.delete(e)}}}const p=new WeakSet;function m(t=document){let n=[];for(let r of e(t,`toggle`)){if(p.has(r))continue;p.add(r),n.push(f(r))}return n}exports.create=m,exports.createToggle=f;
|
package/dist/index.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
const e=(e,t)=>[...e.querySelectorAll(`[data-slot="${t}"]`)],t=new WeakMap;function n(e,n,r){if(typeof process<`u`&&process.env?.NODE_ENV===`production`)return;let i=t.get(e);i||(i=new Set,t.set(e,i)),!i.has(n)&&(i.add(n),console.warn(`[@data-slot] ${r}`))}function r(e){let t=`data-${e.replace(/([A-Z])/g,`-$1`).toLowerCase()}`,n=`data-${e}`;return t===n?[t]:[t,n]}function i(e,t){for(let n of r(t))if(e.hasAttribute(n))return e.getAttribute(n);return null}function a(e,t){return r(t).some(t=>e.hasAttribute(t))}const o=new Set([``,`true`,`1`,`yes`]),s=new Set([`false`,`0`,`no`]);function c(e,t){if(!a(e,t))return;let r=i(e,t);if(r===null)return;let c=r.toLowerCase();if(o.has(c))return!0;if(s.has(c))return!1;n(e,t,`Invalid boolean value "${r}" for data-${t}. Expected: true/false/1/0/yes/no or empty.`)}const l=(e,t,n)=>{n===null?e.removeAttribute(`aria-${t}`):e.setAttribute(`aria-${t}`,String(n))};function u(e,t,n,r){return e.addEventListener(t,n,r),()=>e.removeEventListener(t,n,r)}const d=(e,t,n)=>e.dispatchEvent(new CustomEvent(t,{bubbles:!0,detail:n}));function f(e,t={}){let n=t.defaultPressed??c(e,`defaultPressed`)??!1,r=t.disabled??c(e,`disabled`)??!1,i=t.onPressedChange,a=n,o=[],s=()=>e.hasAttribute(`disabled`)||e.getAttribute(`aria-disabled`)===`true`,f=(t,n=!1)=>{a===t&&!n||(a=t,l(e,`pressed`,a),e.dataset.state=a?`on`:`off`,n||(d(e,`toggle:change`,{pressed:a}),i?.(a)))};return r&&(e.tagName===`BUTTON`&&e.setAttribute(`disabled`,``),e.setAttribute(`aria-disabled`,`true`)),e.tagName===`BUTTON`&&!e.hasAttribute(`type`)&&e.setAttribute(`type`,`button`),f(a,!0),o.push(u(e,`click`,()=>{s()||f(!a)})),o.push(u(e,`toggle:set`,e=>{if(s())return;let t=e.detail,n
|
|
1
|
+
const e=(e,t)=>[...e.querySelectorAll(`[data-slot="${t}"]`)],t=new WeakMap;function n(e,n,r){if(typeof process<`u`&&process.env?.NODE_ENV===`production`)return;let i=t.get(e);i||(i=new Set,t.set(e,i)),!i.has(n)&&(i.add(n),console.warn(`[@data-slot] ${r}`))}function r(e){let t=`data-${e.replace(/([A-Z])/g,`-$1`).toLowerCase()}`,n=`data-${e}`;return t===n?[t]:[t,n]}function i(e,t){for(let n of r(t))if(e.hasAttribute(n))return e.getAttribute(n);return null}function a(e,t){return r(t).some(t=>e.hasAttribute(t))}const o=new Set([``,`true`,`1`,`yes`]),s=new Set([`false`,`0`,`no`]);function c(e,t){if(!a(e,t))return;let r=i(e,t);if(r===null)return;let c=r.toLowerCase();if(o.has(c))return!0;if(s.has(c))return!1;n(e,t,`Invalid boolean value "${r}" for data-${t}. Expected: true/false/1/0/yes/no or empty.`)}const l=(e,t,n)=>{n===null?e.removeAttribute(`aria-${t}`):e.setAttribute(`aria-${t}`,String(n))};function u(e,t,n,r){return e.addEventListener(t,n,r),()=>e.removeEventListener(t,n,r)}const d=(e,t,n)=>e.dispatchEvent(new CustomEvent(t,{bubbles:!0,detail:n}));function f(e,t={}){let n=t.defaultPressed??c(e,`defaultPressed`)??!1,r=t.disabled??c(e,`disabled`)??!1,i=t.onPressedChange,a=n,o=[],s=()=>e.hasAttribute(`disabled`)||e.getAttribute(`aria-disabled`)===`true`,f=(t,n=!1)=>{a===t&&!n||(a=t,l(e,`pressed`,a),e.dataset.state=a?`on`:`off`,n||(d(e,`toggle:change`,{pressed:a}),i?.(a)))};return r&&(e.tagName===`BUTTON`&&e.setAttribute(`disabled`,``),e.setAttribute(`aria-disabled`,`true`)),e.tagName===`BUTTON`&&!e.hasAttribute(`type`)&&e.setAttribute(`type`,`button`),f(a,!0),o.push(u(e,`click`,()=>{s()||f(!a)})),o.push(u(e,`toggle:set`,e=>{if(s())return;let t=e.detail,n;typeof t==`boolean`?n=t:t?.value===void 0?t?.pressed!==void 0&&(n=t.pressed):n=t.value,typeof n==`boolean`&&f(n)})),{toggle:()=>f(!a),press:()=>f(!0),release:()=>f(!1),get pressed(){return a},destroy:()=>{o.forEach(e=>e()),o.length=0,p.delete(e)}}}const p=new WeakSet;function m(t=document){let n=[];for(let r of e(t,`toggle`)){if(p.has(r))continue;p.add(r),n.push(f(r))}return n}export{m as create,f as createToggle};
|