@data-slot/dialog 0.2.11 → 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 +22 -0
- package/dist/index.cjs +1 -1
- package/dist/index.js +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -189,6 +189,8 @@ The component automatically handles:
|
|
|
189
189
|
|
|
190
190
|
## Events
|
|
191
191
|
|
|
192
|
+
### Outbound Events
|
|
193
|
+
|
|
192
194
|
Listen for changes via custom events:
|
|
193
195
|
|
|
194
196
|
```javascript
|
|
@@ -197,6 +199,26 @@ element.addEventListener("dialog:change", (e) => {
|
|
|
197
199
|
});
|
|
198
200
|
```
|
|
199
201
|
|
|
202
|
+
### Inbound Events
|
|
203
|
+
|
|
204
|
+
Control the dialog via events:
|
|
205
|
+
|
|
206
|
+
| Event | Detail | Description |
|
|
207
|
+
|-------|--------|-------------|
|
|
208
|
+
| `dialog:set` | `{ value: boolean }` | Set open state programmatically |
|
|
209
|
+
|
|
210
|
+
```javascript
|
|
211
|
+
// Open the dialog
|
|
212
|
+
element.dispatchEvent(
|
|
213
|
+
new CustomEvent("dialog:set", { detail: { value: true } })
|
|
214
|
+
);
|
|
215
|
+
|
|
216
|
+
// Close the dialog
|
|
217
|
+
element.dispatchEvent(
|
|
218
|
+
new CustomEvent("dialog:set", { detail: { value: false } })
|
|
219
|
+
);
|
|
220
|
+
```
|
|
221
|
+
|
|
200
222
|
## License
|
|
201
223
|
|
|
202
224
|
MIT
|
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=new WeakMap;function r(e,t,r){if(typeof process<`u`&&process.env?.NODE_ENV===`production`)return;let i=n.get(e);i||(i=new Set,n.set(e,i)),!i.has(t)&&(i.add(t),console.warn(`[@data-slot] ${r}`))}function i(e){let t=`data-${e.replace(/([A-Z])/g,`-$1`).toLowerCase()}`,n=`data-${e}`;return t===n?[t]:[t,n]}function a(e,t){for(let n of i(t))if(e.hasAttribute(n))return e.getAttribute(n);return null}function o(e,t){return i(t).some(t=>e.hasAttribute(t))}const s=new Set([``,`true`,`1`,`yes`]),c=new Set([`false`,`0`,`no`]);function l(e,t){if(!o(e,t))return;let n=a(e,t);if(n===null)return;let i=n.toLowerCase();if(s.has(i))return!0;if(c.has(i))return!1;r(e,t,`Invalid boolean value "${n}" for data-${t}. Expected: true/false/1/0/yes/no or empty.`)}let u=0;const d=(e,t)=>e.id||=`${t}-${++u}`,f=(e,t,n)=>{n===null?e.removeAttribute(`aria-${t}`):e.setAttribute(`aria-${t}`,String(n))},p=(e,t,n)=>{t&&e.setAttribute(`aria-labelledby`,d(t,`title`)),n&&e.setAttribute(`aria-describedby`,d(n,`desc`))};function m(e,t,n,r){return e.addEventListener(t,n,r),()=>e.removeEventListener(t,n,r)}const h=(e,t,n)=>e.dispatchEvent(new CustomEvent(t,{bubbles:!0,detail:n})),g=`a[href],button:not([disabled]),input:not([disabled]),select:not([disabled]),textarea:not([disabled]),[tabindex]:not([tabindex="-1"])`,_=[];let v=0,y=``,b=``,x=null;function S(){let e=1e3;_.forEach((t,n)=>{let r=e+n*10;t._overlay&&(t._overlay.style.zIndex=String(r)),t._content&&(t._content.style.zIndex=String(r+1))})}function C(){if(x)return;let e=e=>{if(_.length===0)return;let t=_[_.length-1];if(!(!t||!t.isOpen)){if(e.key===`Escape`&&t._closeOnEscape){e.preventDefault(),t.close();return}e.key===`Tab`&&t._handleKeydown&&t._handleKeydown(e)}},t=m(document,`keydown`,e);x=()=>{t(),x=null}}function w(){_.length===0&&x&&x()}function T(t,n={}){let r=n.defaultOpen??l(t,`defaultOpen`)??!1,i=n.onOpenChange,a=n.closeOnClickOutside??l(t,`closeOnClickOutside`)??!0,o=n.closeOnEscape??l(t,`closeOnEscape`)??!0,s=n.lockScroll??l(t,`lockScroll`)??!0,c=n.alertDialog??l(t,`alertDialog`)??!1,u=e(t,`dialog-trigger`),x=e(t,`dialog-portal`),T=e(t,`dialog-overlay`),E=e(t,`dialog-content`),D=e(t,`dialog-title`),O=e(t,`dialog-description`);if(!E)throw Error(`Dialog requires dialog-content slot`);if(!T)throw Error(`Dialog requires dialog-overlay slot`);let k=!1,A=null,j=[],M=null,N=null,P=!1,F=!1;d(E,`dialog-content`),E.setAttribute(`role`,c?`alertdialog`:`dialog`),f(E,`modal`,!0),p(E,D,O),T.setAttribute(`role`,`presentation`),T.setAttribute(`aria-hidden`,`true`),T.tabIndex=-1,u&&(u.setAttribute(`aria-haspopup`,`dialog`),u.setAttribute(`aria-controls`,E.id),f(u,`expanded`,!1));let I=!1,L=()=>{E.hasAttribute(`tabindex`)||(E.tabIndex=-1,I=!0)},R=()=>{I&&(E.removeAttribute(`tabindex`),I=!1)},z=()=>{let e=E.querySelector(`[autofocus]`);if(e)return e.focus();let t=E.querySelector(g);if(t)return t.focus();L(),E.focus()},B=()=>{x&&!P&&(M=x.parentNode,N=x.nextSibling,document.body.appendChild(x),P=!0)},V=e=>{t.setAttribute(`data-state`,e),x&&x.setAttribute(`data-state`,e),T.setAttribute(`data-state`,e),E.setAttribute(`data-state`,e)},H=()=>{T.style.zIndex=``,E.style.zIndex=``},U=(e,n=!1)=>{if(!(k===e&&!n)){if(e){if(B(),A=document.activeElement,_.push(G),C(),S(),s&&!F){if(v===0){let e=window.innerWidth-document.documentElement.clientWidth;y=document.body.style.overflow,b=document.body.style.paddingRight,document.body.style.paddingRight=`${e}px`,document.body.style.overflow=`hidden`}v++,F=!0}}else{let e=_.indexOf(G);e!==-1&&_.splice(e,1),w(),H(),S(),F&&(v=Math.max(0,v-1),F=!1,v===0&&(document.body.style.overflow=y,document.body.style.paddingRight=b)),R();let t=A;A=null,requestAnimationFrame(()=>{t&&document.contains(t)&&typeof t.focus==`function`?t.focus():u&&document.contains(u)&&u.focus()})}k=e,E.hidden=!k,T.hidden=!k,u&&f(u,`expanded`,k),V(k?`open`:`closed`),h(t,`dialog:change`,{open:k}),i?.(k),e&&requestAnimationFrame(z)}},W=e=>{if(e.key!==`Tab`)return;let t=E.querySelectorAll(g);if(t.length===0){e.preventDefault(),L(),E.focus();return}let n=t[0],r=t[t.length-1],i=document.activeElement;if(!E.contains(i)){e.preventDefault(),n.focus();return}if(n===r){e.preventDefault();return}e.shiftKey?i===n&&(e.preventDefault(),r.focus()):i===r&&(e.preventDefault(),n.focus())};r?(B(),E.hidden=!1,T.hidden=!1,V(`open`),k=!0,u&&f(u,`expanded`,!0)):(E.hidden=!0,T.hidden=!0,V(`closed`)),u&&j.push(m(u,`click`,()=>U(!k))),j.push(m(E,`click`,e=>{let t=e.target;if(!t)return;let n=t.closest?.(`[data-slot="dialog-close"]`);n&&E.contains(n)&&U(!1)})),a&&j.push(m(T,`pointerdown`,e=>{e.target===T&&k&&U(!1)}));let G={open:()=>U(!0),close:()=>U(!1),toggle:()=>U(!k),get isOpen(){return k},destroy:()=>{if(k)U(!1,!0);else{let e=_.indexOf(G);e!==-1&&(_.splice(e,1),S(),w())}R(),j.forEach(e=>e()),j.length=0,x&&P&&(M&&document.contains(M)?M.insertBefore(x,N):x.remove(),P=!1)},_handleKeydown:W,_closeOnEscape:o,_content:E,_overlay:T};if(r){if(A=document.activeElement,_.push(G),C(),S(),s&&!F){if(v===0){let e=window.innerWidth-document.documentElement.clientWidth;y=document.body.style.overflow,b=document.body.style.paddingRight,document.body.style.paddingRight=`${e}px`,document.body.style.overflow=`hidden`}v++,F=!0}h(t,`dialog:change`,{open:!0}),i?.(!0),requestAnimationFrame(z)}return G}const E=new WeakSet;function D(e=document){let n=[];for(let r of t(e,`dialog`)){if(E.has(r))continue;E.add(r),n.push(T(r))}return n}exports.create=D,exports.createDialog=T;
|
|
1
|
+
const e=(e,t)=>e.querySelector(`[data-slot="${t}"]`),t=(e,t)=>[...e.querySelectorAll(`[data-slot="${t}"]`)],n=new WeakMap;function r(e,t,r){if(typeof process<`u`&&process.env?.NODE_ENV===`production`)return;let i=n.get(e);i||(i=new Set,n.set(e,i)),!i.has(t)&&(i.add(t),console.warn(`[@data-slot] ${r}`))}function i(e){let t=`data-${e.replace(/([A-Z])/g,`-$1`).toLowerCase()}`,n=`data-${e}`;return t===n?[t]:[t,n]}function a(e,t){for(let n of i(t))if(e.hasAttribute(n))return e.getAttribute(n);return null}function o(e,t){return i(t).some(t=>e.hasAttribute(t))}const s=new Set([``,`true`,`1`,`yes`]),c=new Set([`false`,`0`,`no`]);function l(e,t){if(!o(e,t))return;let n=a(e,t);if(n===null)return;let i=n.toLowerCase();if(s.has(i))return!0;if(c.has(i))return!1;r(e,t,`Invalid boolean value "${n}" for data-${t}. Expected: true/false/1/0/yes/no or empty.`)}let u=0;const d=(e,t)=>e.id||=`${t}-${++u}`,f=(e,t,n)=>{n===null?e.removeAttribute(`aria-${t}`):e.setAttribute(`aria-${t}`,String(n))},p=(e,t,n)=>{t&&e.setAttribute(`aria-labelledby`,d(t,`title`)),n&&e.setAttribute(`aria-describedby`,d(n,`desc`))};function m(e,t,n,r){return e.addEventListener(t,n,r),()=>e.removeEventListener(t,n,r)}const h=(e,t,n)=>e.dispatchEvent(new CustomEvent(t,{bubbles:!0,detail:n})),g=`a[href],button:not([disabled]),input:not([disabled]),select:not([disabled]),textarea:not([disabled]),[tabindex]:not([tabindex="-1"])`,_=[];let v=0,y=``,b=``,x=null;function S(){let e=1e3;_.forEach((t,n)=>{let r=e+n*10;t._overlay&&(t._overlay.style.zIndex=String(r)),t._content&&(t._content.style.zIndex=String(r+1))})}function C(){if(x)return;let e=e=>{if(_.length===0)return;let t=_[_.length-1];if(!(!t||!t.isOpen)){if(e.key===`Escape`&&t._closeOnEscape){e.preventDefault(),t.close();return}e.key===`Tab`&&t._handleKeydown&&t._handleKeydown(e)}},t=m(document,`keydown`,e);x=()=>{t(),x=null}}function w(){_.length===0&&x&&x()}function T(t,n={}){let r=n.defaultOpen??l(t,`defaultOpen`)??!1,i=n.onOpenChange,a=n.closeOnClickOutside??l(t,`closeOnClickOutside`)??!0,o=n.closeOnEscape??l(t,`closeOnEscape`)??!0,s=n.lockScroll??l(t,`lockScroll`)??!0,c=n.alertDialog??l(t,`alertDialog`)??!1,u=e(t,`dialog-trigger`),x=e(t,`dialog-portal`),T=e(t,`dialog-overlay`),E=e(t,`dialog-content`),D=e(t,`dialog-title`),O=e(t,`dialog-description`);if(!E)throw Error(`Dialog requires dialog-content slot`);if(!T)throw Error(`Dialog requires dialog-overlay slot`);let k=!1,A=null,j=[],M=null,N=null,P=!1,F=!1;d(E,`dialog-content`),E.setAttribute(`role`,c?`alertdialog`:`dialog`),f(E,`modal`,!0),p(E,D,O),T.setAttribute(`role`,`presentation`),T.setAttribute(`aria-hidden`,`true`),T.tabIndex=-1,u&&(u.setAttribute(`aria-haspopup`,`dialog`),u.setAttribute(`aria-controls`,E.id),f(u,`expanded`,!1));let I=!1,L=()=>{E.hasAttribute(`tabindex`)||(E.tabIndex=-1,I=!0)},R=()=>{I&&(E.removeAttribute(`tabindex`),I=!1)},z=()=>{let e=E.querySelector(`[autofocus]`);if(e)return e.focus();let t=E.querySelector(g);if(t)return t.focus();L(),E.focus()},B=()=>{x&&!P&&(M=x.parentNode,N=x.nextSibling,document.body.appendChild(x),P=!0)},V=e=>{t.setAttribute(`data-state`,e),x&&x.setAttribute(`data-state`,e),T.setAttribute(`data-state`,e),E.setAttribute(`data-state`,e)},H=()=>{T.style.zIndex=``,E.style.zIndex=``},U=(e,n=!1)=>{if(!(k===e&&!n)){if(e){if(B(),A=document.activeElement,_.push(G),C(),S(),s&&!F){if(v===0){let e=window.innerWidth-document.documentElement.clientWidth;y=document.body.style.overflow,b=document.body.style.paddingRight,document.body.style.paddingRight=`${e}px`,document.body.style.overflow=`hidden`}v++,F=!0}}else{let e=_.indexOf(G);e!==-1&&_.splice(e,1),w(),H(),S(),F&&(v=Math.max(0,v-1),F=!1,v===0&&(document.body.style.overflow=y,document.body.style.paddingRight=b)),R();let t=A;A=null,requestAnimationFrame(()=>{t&&document.contains(t)&&typeof t.focus==`function`?t.focus():u&&document.contains(u)&&u.focus()})}k=e,E.hidden=!k,T.hidden=!k,u&&f(u,`expanded`,k),V(k?`open`:`closed`),h(t,`dialog:change`,{open:k}),i?.(k),e&&requestAnimationFrame(z)}},W=e=>{if(e.key!==`Tab`)return;let t=E.querySelectorAll(g);if(t.length===0){e.preventDefault(),L(),E.focus();return}let n=t[0],r=t[t.length-1],i=document.activeElement;if(!E.contains(i)){e.preventDefault(),n.focus();return}if(n===r){e.preventDefault();return}e.shiftKey?i===n&&(e.preventDefault(),r.focus()):i===r&&(e.preventDefault(),n.focus())};r?(B(),E.hidden=!1,T.hidden=!1,V(`open`),k=!0,u&&f(u,`expanded`,!0)):(E.hidden=!0,T.hidden=!0,V(`closed`)),u&&j.push(m(u,`click`,()=>U(!k))),j.push(m(E,`click`,e=>{let t=e.target;if(!t)return;let n=t.closest?.(`[data-slot="dialog-close"]`);n&&E.contains(n)&&U(!1)})),a&&j.push(m(T,`pointerdown`,e=>{e.target===T&&k&&U(!1)}));let G={open:()=>U(!0),close:()=>U(!1),toggle:()=>U(!k),get isOpen(){return k},destroy:()=>{if(k)U(!1,!0);else{let e=_.indexOf(G);e!==-1&&(_.splice(e,1),S(),w())}R(),j.forEach(e=>e()),j.length=0,x&&P&&(M&&document.contains(M)?M.insertBefore(x,N):x.remove(),P=!1)},_handleKeydown:W,_closeOnEscape:o,_content:E,_overlay:T};if(j.push(m(t,`dialog:set`,e=>{let t=e.detail;typeof t?.value==`boolean`&&U(t.value)})),r){if(A=document.activeElement,_.push(G),C(),S(),s&&!F){if(v===0){let e=window.innerWidth-document.documentElement.clientWidth;y=document.body.style.overflow,b=document.body.style.paddingRight,document.body.style.paddingRight=`${e}px`,document.body.style.overflow=`hidden`}v++,F=!0}h(t,`dialog:change`,{open:!0}),i?.(!0),requestAnimationFrame(z)}return G}const E=new WeakSet;function D(e=document){let n=[];for(let r of t(e,`dialog`)){if(E.has(r))continue;E.add(r),n.push(T(r))}return n}exports.create=D,exports.createDialog=T;
|
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=new WeakMap;function r(e,t,r){if(typeof process<`u`&&process.env?.NODE_ENV===`production`)return;let i=n.get(e);i||(i=new Set,n.set(e,i)),!i.has(t)&&(i.add(t),console.warn(`[@data-slot] ${r}`))}function i(e){let t=`data-${e.replace(/([A-Z])/g,`-$1`).toLowerCase()}`,n=`data-${e}`;return t===n?[t]:[t,n]}function a(e,t){for(let n of i(t))if(e.hasAttribute(n))return e.getAttribute(n);return null}function o(e,t){return i(t).some(t=>e.hasAttribute(t))}const s=new Set([``,`true`,`1`,`yes`]),c=new Set([`false`,`0`,`no`]);function l(e,t){if(!o(e,t))return;let n=a(e,t);if(n===null)return;let i=n.toLowerCase();if(s.has(i))return!0;if(c.has(i))return!1;r(e,t,`Invalid boolean value "${n}" for data-${t}. Expected: true/false/1/0/yes/no or empty.`)}let u=0;const d=(e,t)=>e.id||=`${t}-${++u}`,f=(e,t,n)=>{n===null?e.removeAttribute(`aria-${t}`):e.setAttribute(`aria-${t}`,String(n))},p=(e,t,n)=>{t&&e.setAttribute(`aria-labelledby`,d(t,`title`)),n&&e.setAttribute(`aria-describedby`,d(n,`desc`))};function m(e,t,n,r){return e.addEventListener(t,n,r),()=>e.removeEventListener(t,n,r)}const h=(e,t,n)=>e.dispatchEvent(new CustomEvent(t,{bubbles:!0,detail:n})),g=`a[href],button:not([disabled]),input:not([disabled]),select:not([disabled]),textarea:not([disabled]),[tabindex]:not([tabindex="-1"])`,_=[];let v=0,y=``,b=``,x=null;function S(){let e=1e3;_.forEach((t,n)=>{let r=e+n*10;t._overlay&&(t._overlay.style.zIndex=String(r)),t._content&&(t._content.style.zIndex=String(r+1))})}function C(){if(x)return;let e=e=>{if(_.length===0)return;let t=_[_.length-1];if(!(!t||!t.isOpen)){if(e.key===`Escape`&&t._closeOnEscape){e.preventDefault(),t.close();return}e.key===`Tab`&&t._handleKeydown&&t._handleKeydown(e)}},t=m(document,`keydown`,e);x=()=>{t(),x=null}}function w(){_.length===0&&x&&x()}function T(t,n={}){let r=n.defaultOpen??l(t,`defaultOpen`)??!1,i=n.onOpenChange,a=n.closeOnClickOutside??l(t,`closeOnClickOutside`)??!0,o=n.closeOnEscape??l(t,`closeOnEscape`)??!0,s=n.lockScroll??l(t,`lockScroll`)??!0,c=n.alertDialog??l(t,`alertDialog`)??!1,u=e(t,`dialog-trigger`),x=e(t,`dialog-portal`),T=e(t,`dialog-overlay`),E=e(t,`dialog-content`),D=e(t,`dialog-title`),O=e(t,`dialog-description`);if(!E)throw Error(`Dialog requires dialog-content slot`);if(!T)throw Error(`Dialog requires dialog-overlay slot`);let k=!1,A=null,j=[],M=null,N=null,P=!1,F=!1;d(E,`dialog-content`),E.setAttribute(`role`,c?`alertdialog`:`dialog`),f(E,`modal`,!0),p(E,D,O),T.setAttribute(`role`,`presentation`),T.setAttribute(`aria-hidden`,`true`),T.tabIndex=-1,u&&(u.setAttribute(`aria-haspopup`,`dialog`),u.setAttribute(`aria-controls`,E.id),f(u,`expanded`,!1));let I=!1,L=()=>{E.hasAttribute(`tabindex`)||(E.tabIndex=-1,I=!0)},R=()=>{I&&(E.removeAttribute(`tabindex`),I=!1)},z=()=>{let e=E.querySelector(`[autofocus]`);if(e)return e.focus();let t=E.querySelector(g);if(t)return t.focus();L(),E.focus()},B=()=>{x&&!P&&(M=x.parentNode,N=x.nextSibling,document.body.appendChild(x),P=!0)},V=e=>{t.setAttribute(`data-state`,e),x&&x.setAttribute(`data-state`,e),T.setAttribute(`data-state`,e),E.setAttribute(`data-state`,e)},H=()=>{T.style.zIndex=``,E.style.zIndex=``},U=(e,n=!1)=>{if(!(k===e&&!n)){if(e){if(B(),A=document.activeElement,_.push(G),C(),S(),s&&!F){if(v===0){let e=window.innerWidth-document.documentElement.clientWidth;y=document.body.style.overflow,b=document.body.style.paddingRight,document.body.style.paddingRight=`${e}px`,document.body.style.overflow=`hidden`}v++,F=!0}}else{let e=_.indexOf(G);e!==-1&&_.splice(e,1),w(),H(),S(),F&&(v=Math.max(0,v-1),F=!1,v===0&&(document.body.style.overflow=y,document.body.style.paddingRight=b)),R();let t=A;A=null,requestAnimationFrame(()=>{t&&document.contains(t)&&typeof t.focus==`function`?t.focus():u&&document.contains(u)&&u.focus()})}k=e,E.hidden=!k,T.hidden=!k,u&&f(u,`expanded`,k),V(k?`open`:`closed`),h(t,`dialog:change`,{open:k}),i?.(k),e&&requestAnimationFrame(z)}},W=e=>{if(e.key!==`Tab`)return;let t=E.querySelectorAll(g);if(t.length===0){e.preventDefault(),L(),E.focus();return}let n=t[0],r=t[t.length-1],i=document.activeElement;if(!E.contains(i)){e.preventDefault(),n.focus();return}if(n===r){e.preventDefault();return}e.shiftKey?i===n&&(e.preventDefault(),r.focus()):i===r&&(e.preventDefault(),n.focus())};r?(B(),E.hidden=!1,T.hidden=!1,V(`open`),k=!0,u&&f(u,`expanded`,!0)):(E.hidden=!0,T.hidden=!0,V(`closed`)),u&&j.push(m(u,`click`,()=>U(!k))),j.push(m(E,`click`,e=>{let t=e.target;if(!t)return;let n=t.closest?.(`[data-slot="dialog-close"]`);n&&E.contains(n)&&U(!1)})),a&&j.push(m(T,`pointerdown`,e=>{e.target===T&&k&&U(!1)}));let G={open:()=>U(!0),close:()=>U(!1),toggle:()=>U(!k),get isOpen(){return k},destroy:()=>{if(k)U(!1,!0);else{let e=_.indexOf(G);e!==-1&&(_.splice(e,1),S(),w())}R(),j.forEach(e=>e()),j.length=0,x&&P&&(M&&document.contains(M)?M.insertBefore(x,N):x.remove(),P=!1)},_handleKeydown:W,_closeOnEscape:o,_content:E,_overlay:T};if(r){if(A=document.activeElement,_.push(G),C(),S(),s&&!F){if(v===0){let e=window.innerWidth-document.documentElement.clientWidth;y=document.body.style.overflow,b=document.body.style.paddingRight,document.body.style.paddingRight=`${e}px`,document.body.style.overflow=`hidden`}v++,F=!0}h(t,`dialog:change`,{open:!0}),i?.(!0),requestAnimationFrame(z)}return G}const E=new WeakSet;function D(e=document){let n=[];for(let r of t(e,`dialog`)){if(E.has(r))continue;E.add(r),n.push(T(r))}return n}export{D as create,T as createDialog};
|
|
1
|
+
const e=(e,t)=>e.querySelector(`[data-slot="${t}"]`),t=(e,t)=>[...e.querySelectorAll(`[data-slot="${t}"]`)],n=new WeakMap;function r(e,t,r){if(typeof process<`u`&&process.env?.NODE_ENV===`production`)return;let i=n.get(e);i||(i=new Set,n.set(e,i)),!i.has(t)&&(i.add(t),console.warn(`[@data-slot] ${r}`))}function i(e){let t=`data-${e.replace(/([A-Z])/g,`-$1`).toLowerCase()}`,n=`data-${e}`;return t===n?[t]:[t,n]}function a(e,t){for(let n of i(t))if(e.hasAttribute(n))return e.getAttribute(n);return null}function o(e,t){return i(t).some(t=>e.hasAttribute(t))}const s=new Set([``,`true`,`1`,`yes`]),c=new Set([`false`,`0`,`no`]);function l(e,t){if(!o(e,t))return;let n=a(e,t);if(n===null)return;let i=n.toLowerCase();if(s.has(i))return!0;if(c.has(i))return!1;r(e,t,`Invalid boolean value "${n}" for data-${t}. Expected: true/false/1/0/yes/no or empty.`)}let u=0;const d=(e,t)=>e.id||=`${t}-${++u}`,f=(e,t,n)=>{n===null?e.removeAttribute(`aria-${t}`):e.setAttribute(`aria-${t}`,String(n))},p=(e,t,n)=>{t&&e.setAttribute(`aria-labelledby`,d(t,`title`)),n&&e.setAttribute(`aria-describedby`,d(n,`desc`))};function m(e,t,n,r){return e.addEventListener(t,n,r),()=>e.removeEventListener(t,n,r)}const h=(e,t,n)=>e.dispatchEvent(new CustomEvent(t,{bubbles:!0,detail:n})),g=`a[href],button:not([disabled]),input:not([disabled]),select:not([disabled]),textarea:not([disabled]),[tabindex]:not([tabindex="-1"])`,_=[];let v=0,y=``,b=``,x=null;function S(){let e=1e3;_.forEach((t,n)=>{let r=e+n*10;t._overlay&&(t._overlay.style.zIndex=String(r)),t._content&&(t._content.style.zIndex=String(r+1))})}function C(){if(x)return;let e=e=>{if(_.length===0)return;let t=_[_.length-1];if(!(!t||!t.isOpen)){if(e.key===`Escape`&&t._closeOnEscape){e.preventDefault(),t.close();return}e.key===`Tab`&&t._handleKeydown&&t._handleKeydown(e)}},t=m(document,`keydown`,e);x=()=>{t(),x=null}}function w(){_.length===0&&x&&x()}function T(t,n={}){let r=n.defaultOpen??l(t,`defaultOpen`)??!1,i=n.onOpenChange,a=n.closeOnClickOutside??l(t,`closeOnClickOutside`)??!0,o=n.closeOnEscape??l(t,`closeOnEscape`)??!0,s=n.lockScroll??l(t,`lockScroll`)??!0,c=n.alertDialog??l(t,`alertDialog`)??!1,u=e(t,`dialog-trigger`),x=e(t,`dialog-portal`),T=e(t,`dialog-overlay`),E=e(t,`dialog-content`),D=e(t,`dialog-title`),O=e(t,`dialog-description`);if(!E)throw Error(`Dialog requires dialog-content slot`);if(!T)throw Error(`Dialog requires dialog-overlay slot`);let k=!1,A=null,j=[],M=null,N=null,P=!1,F=!1;d(E,`dialog-content`),E.setAttribute(`role`,c?`alertdialog`:`dialog`),f(E,`modal`,!0),p(E,D,O),T.setAttribute(`role`,`presentation`),T.setAttribute(`aria-hidden`,`true`),T.tabIndex=-1,u&&(u.setAttribute(`aria-haspopup`,`dialog`),u.setAttribute(`aria-controls`,E.id),f(u,`expanded`,!1));let I=!1,L=()=>{E.hasAttribute(`tabindex`)||(E.tabIndex=-1,I=!0)},R=()=>{I&&(E.removeAttribute(`tabindex`),I=!1)},z=()=>{let e=E.querySelector(`[autofocus]`);if(e)return e.focus();let t=E.querySelector(g);if(t)return t.focus();L(),E.focus()},B=()=>{x&&!P&&(M=x.parentNode,N=x.nextSibling,document.body.appendChild(x),P=!0)},V=e=>{t.setAttribute(`data-state`,e),x&&x.setAttribute(`data-state`,e),T.setAttribute(`data-state`,e),E.setAttribute(`data-state`,e)},H=()=>{T.style.zIndex=``,E.style.zIndex=``},U=(e,n=!1)=>{if(!(k===e&&!n)){if(e){if(B(),A=document.activeElement,_.push(G),C(),S(),s&&!F){if(v===0){let e=window.innerWidth-document.documentElement.clientWidth;y=document.body.style.overflow,b=document.body.style.paddingRight,document.body.style.paddingRight=`${e}px`,document.body.style.overflow=`hidden`}v++,F=!0}}else{let e=_.indexOf(G);e!==-1&&_.splice(e,1),w(),H(),S(),F&&(v=Math.max(0,v-1),F=!1,v===0&&(document.body.style.overflow=y,document.body.style.paddingRight=b)),R();let t=A;A=null,requestAnimationFrame(()=>{t&&document.contains(t)&&typeof t.focus==`function`?t.focus():u&&document.contains(u)&&u.focus()})}k=e,E.hidden=!k,T.hidden=!k,u&&f(u,`expanded`,k),V(k?`open`:`closed`),h(t,`dialog:change`,{open:k}),i?.(k),e&&requestAnimationFrame(z)}},W=e=>{if(e.key!==`Tab`)return;let t=E.querySelectorAll(g);if(t.length===0){e.preventDefault(),L(),E.focus();return}let n=t[0],r=t[t.length-1],i=document.activeElement;if(!E.contains(i)){e.preventDefault(),n.focus();return}if(n===r){e.preventDefault();return}e.shiftKey?i===n&&(e.preventDefault(),r.focus()):i===r&&(e.preventDefault(),n.focus())};r?(B(),E.hidden=!1,T.hidden=!1,V(`open`),k=!0,u&&f(u,`expanded`,!0)):(E.hidden=!0,T.hidden=!0,V(`closed`)),u&&j.push(m(u,`click`,()=>U(!k))),j.push(m(E,`click`,e=>{let t=e.target;if(!t)return;let n=t.closest?.(`[data-slot="dialog-close"]`);n&&E.contains(n)&&U(!1)})),a&&j.push(m(T,`pointerdown`,e=>{e.target===T&&k&&U(!1)}));let G={open:()=>U(!0),close:()=>U(!1),toggle:()=>U(!k),get isOpen(){return k},destroy:()=>{if(k)U(!1,!0);else{let e=_.indexOf(G);e!==-1&&(_.splice(e,1),S(),w())}R(),j.forEach(e=>e()),j.length=0,x&&P&&(M&&document.contains(M)?M.insertBefore(x,N):x.remove(),P=!1)},_handleKeydown:W,_closeOnEscape:o,_content:E,_overlay:T};if(j.push(m(t,`dialog:set`,e=>{let t=e.detail;typeof t?.value==`boolean`&&U(t.value)})),r){if(A=document.activeElement,_.push(G),C(),S(),s&&!F){if(v===0){let e=window.innerWidth-document.documentElement.clientWidth;y=document.body.style.overflow,b=document.body.style.paddingRight,document.body.style.paddingRight=`${e}px`,document.body.style.overflow=`hidden`}v++,F=!0}h(t,`dialog:change`,{open:!0}),i?.(!0),requestAnimationFrame(z)}return G}const E=new WeakSet;function D(e=document){let n=[];for(let r of t(e,`dialog`)){if(E.has(r))continue;E.add(r),n.push(T(r))}return n}export{D as create,T as createDialog};
|