@data-slot/popover 0.1.0 → 0.1.2

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 CHANGED
@@ -1 +1 @@
1
- var e=Object.create,t=Object.defineProperty,n=Object.getOwnPropertyDescriptor,r=Object.getOwnPropertyNames,i=Object.getPrototypeOf,a=Object.prototype.hasOwnProperty,o=(e,i,o,s)=>{if(i&&typeof i==`object`||typeof i==`function`)for(var c=r(i),l=0,u=c.length,d;l<u;l++)d=c[l],!a.call(e,d)&&d!==o&&t(e,d,{get:(e=>i[e]).bind(null,d),enumerable:!(s=n(i,d))||s.enumerable});return e},s=(n,r,a)=>(a=n==null?{}:e(i(n)),o(r||!n||!n.__esModule?t(a,`default`,{value:n,enumerable:!0}):a,n));const c=s(require(`@data-slot/core`));function l(e,t={}){let{defaultOpen:n=!1,onOpenChange:r,closeOnClickOutside:i=!0,closeOnEscape:a=!0}=t,o=(0,c.getPart)(e,`popover-trigger`),s=(0,c.getPart)(e,`popover-content`),l=(0,c.getPart)(e,`popover-close`);if(!o||!s)throw Error(`Popover requires trigger and content slots`);let u=t.position??s.dataset.position??`bottom`,d=n,f=[],p=(0,c.ensureId)(s,`popover-content`);o.setAttribute(`aria-haspopup`,`dialog`),o.setAttribute(`aria-controls`,p),s.setAttribute(`data-position`,u);let m=t=>{d!==t&&(d=t,(0,c.setAria)(o,`expanded`,d),s.hidden=!d,e.setAttribute(`data-state`,d?`open`:`closed`),(0,c.emit)(e,`popover:change`,{open:d}),r?.(d))};(0,c.setAria)(o,`expanded`,d),s.hidden=!d,e.setAttribute(`data-state`,d?`open`:`closed`),f.push((0,c.on)(o,`click`,()=>m(!d))),l&&f.push((0,c.on)(l,`click`,()=>m(!1))),i&&f.push((0,c.on)(document,`pointerdown`,t=>{if(!d)return;let n=t.target;e.contains(n)||m(!1)})),a&&f.push((0,c.on)(document,`keydown`,e=>{d&&e.key===`Escape`&&(e.preventDefault(),m(!1),o.focus())}));let h={open:()=>m(!0),close:()=>m(!1),toggle:()=>m(!d),get isOpen(){return d},destroy:()=>{f.forEach(e=>e()),f.length=0}};return h}const u=new WeakSet;function d(e=document){let t=[];for(let n of(0,c.getRoots)(e,`popover`)){if(u.has(n))continue;u.add(n),t.push(l(n))}return t}exports.create=d,exports.createPopover=l;
1
+ const e=(e,t)=>e.querySelector(`[data-slot="${t}"]`),t=(e,t)=>[...e.querySelectorAll(`[data-slot="${t}"]`)];let n=0;const r=(e,t)=>e.id||=`${t}-${++n}`,i=(e,t,n)=>{n===null?e.removeAttribute(`aria-${t}`):e.setAttribute(`aria-${t}`,String(n))},a=(e,t,n,r)=>(e.addEventListener(t,n,r),()=>e.removeEventListener(t,n,r)),o=(e,t,n)=>e.dispatchEvent(new CustomEvent(t,{bubbles:!0,detail:n}));function s(t,n={}){let{defaultOpen:s=!1,onOpenChange:c,closeOnClickOutside:l=!0,closeOnEscape:u=!0}=n,d=e(t,`popover-trigger`),f=e(t,`popover-content`),p=e(t,`popover-close`);if(!d||!f)throw Error(`Popover requires trigger and content slots`);let m=n.position??f.dataset.position??`bottom`,h=s,g=[],_=r(f,`popover-content`);d.setAttribute(`aria-haspopup`,`dialog`),d.setAttribute(`aria-controls`,_),f.setAttribute(`data-position`,m);let v=e=>{h!==e&&(h=e,i(d,`expanded`,h),f.hidden=!h,t.setAttribute(`data-state`,h?`open`:`closed`),o(t,`popover:change`,{open:h}),c?.(h))};i(d,`expanded`,h),f.hidden=!h,t.setAttribute(`data-state`,h?`open`:`closed`),g.push(a(d,`click`,()=>v(!h))),p&&g.push(a(p,`click`,()=>v(!1))),l&&g.push(a(document,`pointerdown`,e=>{if(!h)return;let n=e.target;t.contains(n)||v(!1)})),u&&g.push(a(document,`keydown`,e=>{h&&e.key===`Escape`&&(e.preventDefault(),v(!1),d.focus())}));let y={open:()=>v(!0),close:()=>v(!1),toggle:()=>v(!h),get isOpen(){return h},destroy:()=>{g.forEach(e=>e()),g.length=0}};return y}const c=new WeakSet;function l(e=document){let n=[];for(let r of t(e,`popover`)){if(c.has(r))continue;c.add(r),n.push(s(r))}return n}exports.create=l,exports.createPopover=s;
package/dist/index.js CHANGED
@@ -1 +1 @@
1
- import{emit as e,ensureId as t,getPart as n,getRoots as r,on as i,setAria as a}from"@data-slot/core";function o(r,o={}){let{defaultOpen:s=!1,onOpenChange:c,closeOnClickOutside:l=!0,closeOnEscape:u=!0}=o,d=n(r,`popover-trigger`),f=n(r,`popover-content`),p=n(r,`popover-close`);if(!d||!f)throw Error(`Popover requires trigger and content slots`);let m=o.position??f.dataset.position??`bottom`,h=s,g=[],_=t(f,`popover-content`);d.setAttribute(`aria-haspopup`,`dialog`),d.setAttribute(`aria-controls`,_),f.setAttribute(`data-position`,m);let v=t=>{h!==t&&(h=t,a(d,`expanded`,h),f.hidden=!h,r.setAttribute(`data-state`,h?`open`:`closed`),e(r,`popover:change`,{open:h}),c?.(h))};a(d,`expanded`,h),f.hidden=!h,r.setAttribute(`data-state`,h?`open`:`closed`),g.push(i(d,`click`,()=>v(!h))),p&&g.push(i(p,`click`,()=>v(!1))),l&&g.push(i(document,`pointerdown`,e=>{if(!h)return;let t=e.target;r.contains(t)||v(!1)})),u&&g.push(i(document,`keydown`,e=>{h&&e.key===`Escape`&&(e.preventDefault(),v(!1),d.focus())}));let y={open:()=>v(!0),close:()=>v(!1),toggle:()=>v(!h),get isOpen(){return h},destroy:()=>{g.forEach(e=>e()),g.length=0}};return y}const s=new WeakSet;function c(e=document){let t=[];for(let n of r(e,`popover`)){if(s.has(n))continue;s.add(n),t.push(o(n))}return t}export{c as create,o as createPopover};
1
+ const e=(e,t)=>e.querySelector(`[data-slot="${t}"]`),t=(e,t)=>[...e.querySelectorAll(`[data-slot="${t}"]`)];let n=0;const r=(e,t)=>e.id||=`${t}-${++n}`,i=(e,t,n)=>{n===null?e.removeAttribute(`aria-${t}`):e.setAttribute(`aria-${t}`,String(n))},a=(e,t,n,r)=>(e.addEventListener(t,n,r),()=>e.removeEventListener(t,n,r)),o=(e,t,n)=>e.dispatchEvent(new CustomEvent(t,{bubbles:!0,detail:n}));function s(t,n={}){let{defaultOpen:s=!1,onOpenChange:c,closeOnClickOutside:l=!0,closeOnEscape:u=!0}=n,d=e(t,`popover-trigger`),f=e(t,`popover-content`),p=e(t,`popover-close`);if(!d||!f)throw Error(`Popover requires trigger and content slots`);let m=n.position??f.dataset.position??`bottom`,h=s,g=[],_=r(f,`popover-content`);d.setAttribute(`aria-haspopup`,`dialog`),d.setAttribute(`aria-controls`,_),f.setAttribute(`data-position`,m);let v=e=>{h!==e&&(h=e,i(d,`expanded`,h),f.hidden=!h,t.setAttribute(`data-state`,h?`open`:`closed`),o(t,`popover:change`,{open:h}),c?.(h))};i(d,`expanded`,h),f.hidden=!h,t.setAttribute(`data-state`,h?`open`:`closed`),g.push(a(d,`click`,()=>v(!h))),p&&g.push(a(p,`click`,()=>v(!1))),l&&g.push(a(document,`pointerdown`,e=>{if(!h)return;let n=e.target;t.contains(n)||v(!1)})),u&&g.push(a(document,`keydown`,e=>{h&&e.key===`Escape`&&(e.preventDefault(),v(!1),d.focus())}));let y={open:()=>v(!0),close:()=>v(!1),toggle:()=>v(!h),get isOpen(){return h},destroy:()=>{g.forEach(e=>e()),g.length=0}};return y}const c=new WeakSet;function l(e=document){let n=[];for(let r of t(e,`popover`)){if(c.has(r))continue;c.add(r),n.push(s(r))}return n}export{l as create,s as createPopover};
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@data-slot/popover",
3
- "version": "0.1.0",
3
+ "version": "0.1.2",
4
4
  "type": "module",
5
5
  "sideEffects": false,
6
6
  "main": "./dist/index.cjs",
@@ -18,13 +18,26 @@
18
18
  }
19
19
  }
20
20
  },
21
- "files": ["dist"],
21
+ "files": [
22
+ "dist"
23
+ ],
22
24
  "scripts": {
23
25
  "build": "tsdown"
24
26
  },
25
- "dependencies": {
27
+ "devDependencies": {
26
28
  "@data-slot/core": "workspace:*"
27
29
  },
28
- "keywords": ["headless", "ui", "popover", "vanilla", "data-slot"],
30
+ "repository": {
31
+ "type": "git",
32
+ "url": "https://github.com/bejamas/data-slot",
33
+ "directory": "packages/popover"
34
+ },
35
+ "keywords": [
36
+ "headless",
37
+ "ui",
38
+ "popover",
39
+ "vanilla",
40
+ "data-slot"
41
+ ],
29
42
  "license": "MIT"
30
43
  }