@data-slot/popover 0.2.12 → 0.2.13

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 CHANGED
@@ -212,20 +212,33 @@ Control the popover via events:
212
212
 
213
213
  | Event | Detail | Description |
214
214
  |-------|--------|-------------|
215
- | `popover:set` | `{ value: boolean }` | Set open state programmatically |
215
+ | `popover:set` | `{ open: boolean }` | Set open state programmatically |
216
216
 
217
217
  ```javascript
218
218
  // Open the popover
219
219
  element.dispatchEvent(
220
- new CustomEvent("popover:set", { detail: { value: true } })
220
+ new CustomEvent("popover:set", { detail: { open: true } })
221
221
  );
222
222
 
223
223
  // Close the popover
224
224
  element.dispatchEvent(
225
- new CustomEvent("popover:set", { detail: { value: false } })
225
+ new CustomEvent("popover:set", { detail: { open: false } })
226
+ );
227
+ ```
228
+
229
+ #### Deprecated Shapes
230
+
231
+ The following shape is deprecated and will be removed in v1.0:
232
+
233
+ ```javascript
234
+ // Deprecated: { value: boolean }
235
+ element.dispatchEvent(
236
+ new CustomEvent("popover:set", { detail: { value: true } })
226
237
  );
227
238
  ```
228
239
 
240
+ Use `{ open: boolean }` instead.
241
+
229
242
  ## License
230
243
 
231
244
  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.`)}function u(e,t,n){let i=a(e,t);if(i!==null){if(n.includes(i))return i;r(e,t,`Invalid value "${i}" for data-${t}. Expected one of: ${n.join(`, `)}.`)}}let d=0;const f=(e,t)=>e.id||=`${t}-${++d}`,p=(e,t,n)=>{n===null?e.removeAttribute(`aria-${t}`):e.setAttribute(`aria-${t}`,String(n))};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=[`top`,`bottom`,`left`,`right`];function _(t,n={}){let r=e(t,`popover-trigger`),i=e(t,`popover-content`),a=e(t,`popover-close`);if(!r||!i)throw Error(`Popover requires trigger and content slots`);let o=n.defaultOpen??l(t,`defaultOpen`)??!1,s=n.onOpenChange,c=n.closeOnClickOutside??l(t,`closeOnClickOutside`)??!0,d=n.closeOnEscape??l(t,`closeOnEscape`)??!0,_=n.position??u(i,`position`,g)??u(t,`position`,g)??`bottom`,v=o,y=[],b=f(i,`popover-content`);r.setAttribute(`aria-haspopup`,`dialog`),r.setAttribute(`aria-controls`,b),i.setAttribute(`data-position`,_);let x=e=>{v!==e&&(v=e,p(r,`expanded`,v),i.hidden=!v,t.setAttribute(`data-state`,v?`open`:`closed`),h(t,`popover:change`,{open:v}),s?.(v))};p(r,`expanded`,v),i.hidden=!v,t.setAttribute(`data-state`,v?`open`:`closed`),y.push(m(r,`click`,()=>x(!v))),a&&y.push(m(a,`click`,()=>x(!1))),c&&y.push(m(document,`pointerdown`,e=>{if(!v)return;let n=e.target;t.contains(n)||x(!1)})),d&&y.push(m(document,`keydown`,e=>{v&&e.key===`Escape`&&(e.preventDefault(),x(!1),r.focus())})),y.push(m(t,`popover:set`,e=>{let t=e.detail;typeof t?.value==`boolean`&&x(t.value)}));let S={open:()=>x(!0),close:()=>x(!1),toggle:()=>x(!v),get isOpen(){return v},destroy:()=>{y.forEach(e=>e()),y.length=0}};return S}const v=new WeakSet;function y(e=document){let n=[];for(let r of t(e,`popover`)){if(v.has(r))continue;v.add(r),n.push(_(r))}return n}exports.create=y,exports.createPopover=_;
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.`)}function u(e,t,n){let i=a(e,t);if(i!==null){if(n.includes(i))return i;r(e,t,`Invalid value "${i}" for data-${t}. Expected one of: ${n.join(`, `)}.`)}}let d=0;const f=(e,t)=>e.id||=`${t}-${++d}`,p=(e,t,n)=>{n===null?e.removeAttribute(`aria-${t}`):e.setAttribute(`aria-${t}`,String(n))};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=[`top`,`bottom`,`left`,`right`];function _(t,n={}){let r=e(t,`popover-trigger`),i=e(t,`popover-content`),a=e(t,`popover-close`);if(!r||!i)throw Error(`Popover requires trigger and content slots`);let o=n.defaultOpen??l(t,`defaultOpen`)??!1,s=n.onOpenChange,c=n.closeOnClickOutside??l(t,`closeOnClickOutside`)??!0,d=n.closeOnEscape??l(t,`closeOnEscape`)??!0,_=n.position??u(i,`position`,g)??u(t,`position`,g)??`bottom`,v=o,y=[],b=f(i,`popover-content`);r.setAttribute(`aria-haspopup`,`dialog`),r.setAttribute(`aria-controls`,b),i.setAttribute(`data-position`,_);let x=e=>{v!==e&&(v=e,p(r,`expanded`,v),i.hidden=!v,t.setAttribute(`data-state`,v?`open`:`closed`),h(t,`popover:change`,{open:v}),s?.(v))};p(r,`expanded`,v),i.hidden=!v,t.setAttribute(`data-state`,v?`open`:`closed`),y.push(m(r,`click`,()=>x(!v))),a&&y.push(m(a,`click`,()=>x(!1))),c&&y.push(m(document,`pointerdown`,e=>{if(!v)return;let n=e.target;t.contains(n)||x(!1)})),d&&y.push(m(document,`keydown`,e=>{v&&e.key===`Escape`&&(e.preventDefault(),x(!1),r.focus())})),y.push(m(t,`popover:set`,e=>{let t=e.detail,n;t?.open===void 0?t?.value!==void 0&&(n=t.value):n=t.open,typeof n==`boolean`&&x(n)}));let S={open:()=>x(!0),close:()=>x(!1),toggle:()=>x(!v),get isOpen(){return v},destroy:()=>{y.forEach(e=>e()),y.length=0}};return S}const v=new WeakSet;function y(e=document){let n=[];for(let r of t(e,`popover`)){if(v.has(r))continue;v.add(r),n.push(_(r))}return n}exports.create=y,exports.createPopover=_;
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.`)}function u(e,t,n){let i=a(e,t);if(i!==null){if(n.includes(i))return i;r(e,t,`Invalid value "${i}" for data-${t}. Expected one of: ${n.join(`, `)}.`)}}let d=0;const f=(e,t)=>e.id||=`${t}-${++d}`,p=(e,t,n)=>{n===null?e.removeAttribute(`aria-${t}`):e.setAttribute(`aria-${t}`,String(n))};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=[`top`,`bottom`,`left`,`right`];function _(t,n={}){let r=e(t,`popover-trigger`),i=e(t,`popover-content`),a=e(t,`popover-close`);if(!r||!i)throw Error(`Popover requires trigger and content slots`);let o=n.defaultOpen??l(t,`defaultOpen`)??!1,s=n.onOpenChange,c=n.closeOnClickOutside??l(t,`closeOnClickOutside`)??!0,d=n.closeOnEscape??l(t,`closeOnEscape`)??!0,_=n.position??u(i,`position`,g)??u(t,`position`,g)??`bottom`,v=o,y=[],b=f(i,`popover-content`);r.setAttribute(`aria-haspopup`,`dialog`),r.setAttribute(`aria-controls`,b),i.setAttribute(`data-position`,_);let x=e=>{v!==e&&(v=e,p(r,`expanded`,v),i.hidden=!v,t.setAttribute(`data-state`,v?`open`:`closed`),h(t,`popover:change`,{open:v}),s?.(v))};p(r,`expanded`,v),i.hidden=!v,t.setAttribute(`data-state`,v?`open`:`closed`),y.push(m(r,`click`,()=>x(!v))),a&&y.push(m(a,`click`,()=>x(!1))),c&&y.push(m(document,`pointerdown`,e=>{if(!v)return;let n=e.target;t.contains(n)||x(!1)})),d&&y.push(m(document,`keydown`,e=>{v&&e.key===`Escape`&&(e.preventDefault(),x(!1),r.focus())})),y.push(m(t,`popover:set`,e=>{let t=e.detail;typeof t?.value==`boolean`&&x(t.value)}));let S={open:()=>x(!0),close:()=>x(!1),toggle:()=>x(!v),get isOpen(){return v},destroy:()=>{y.forEach(e=>e()),y.length=0}};return S}const v=new WeakSet;function y(e=document){let n=[];for(let r of t(e,`popover`)){if(v.has(r))continue;v.add(r),n.push(_(r))}return n}export{y as create,_ as createPopover};
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.`)}function u(e,t,n){let i=a(e,t);if(i!==null){if(n.includes(i))return i;r(e,t,`Invalid value "${i}" for data-${t}. Expected one of: ${n.join(`, `)}.`)}}let d=0;const f=(e,t)=>e.id||=`${t}-${++d}`,p=(e,t,n)=>{n===null?e.removeAttribute(`aria-${t}`):e.setAttribute(`aria-${t}`,String(n))};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=[`top`,`bottom`,`left`,`right`];function _(t,n={}){let r=e(t,`popover-trigger`),i=e(t,`popover-content`),a=e(t,`popover-close`);if(!r||!i)throw Error(`Popover requires trigger and content slots`);let o=n.defaultOpen??l(t,`defaultOpen`)??!1,s=n.onOpenChange,c=n.closeOnClickOutside??l(t,`closeOnClickOutside`)??!0,d=n.closeOnEscape??l(t,`closeOnEscape`)??!0,_=n.position??u(i,`position`,g)??u(t,`position`,g)??`bottom`,v=o,y=[],b=f(i,`popover-content`);r.setAttribute(`aria-haspopup`,`dialog`),r.setAttribute(`aria-controls`,b),i.setAttribute(`data-position`,_);let x=e=>{v!==e&&(v=e,p(r,`expanded`,v),i.hidden=!v,t.setAttribute(`data-state`,v?`open`:`closed`),h(t,`popover:change`,{open:v}),s?.(v))};p(r,`expanded`,v),i.hidden=!v,t.setAttribute(`data-state`,v?`open`:`closed`),y.push(m(r,`click`,()=>x(!v))),a&&y.push(m(a,`click`,()=>x(!1))),c&&y.push(m(document,`pointerdown`,e=>{if(!v)return;let n=e.target;t.contains(n)||x(!1)})),d&&y.push(m(document,`keydown`,e=>{v&&e.key===`Escape`&&(e.preventDefault(),x(!1),r.focus())})),y.push(m(t,`popover:set`,e=>{let t=e.detail,n;t?.open===void 0?t?.value!==void 0&&(n=t.value):n=t.open,typeof n==`boolean`&&x(n)}));let S={open:()=>x(!0),close:()=>x(!1),toggle:()=>x(!v),get isOpen(){return v},destroy:()=>{y.forEach(e=>e()),y.length=0}};return S}const v=new WeakSet;function y(e=document){let n=[];for(let r of t(e,`popover`)){if(v.has(r))continue;v.add(r),n.push(_(r))}return n}export{y as create,_ as createPopover};
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@data-slot/popover",
3
- "version": "0.2.12",
3
+ "version": "0.2.13",
4
4
  "type": "module",
5
5
  "sideEffects": false,
6
6
  "main": "./dist/index.cjs",