@data-slot/combobox 0.2.48 → 0.2.50
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.js +1 -1
- package/package.json +2 -2
package/dist/index.cjs
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});let e=require(`@data-slot/core`);const t=[`top`,`bottom`],n=[`start`,`center`,`end`];function r(r,a={}){let o=(0,e.getPart)(r,`combobox-input`),s=(0,e.getPart)(r,`combobox-content`),c=(0,e.getPart)(r,`combobox-list`)??(0,e.getPart)(s??r,`combobox-list`),l=(0,e.getPart)(r,`combobox-trigger`),u=(0,e.getPart)(c??s??r,`combobox-empty`);if(!o||!s)throw Error(`Combobox requires combobox-input and combobox-content slots`);let ee=a.defaultValue??(0,e.getDataString)(r,`defaultValue`)??null,
|
|
1
|
+
Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});let e=require(`@data-slot/core`);const t=[`top`,`bottom`],n=[`start`,`center`,`end`];function r(r,a={}){let o=(0,e.getPart)(r,`combobox-input`),s=(0,e.getPart)(r,`combobox-content`),c=(0,e.getPart)(r,`combobox-list`)??(0,e.getPart)(s??r,`combobox-list`),l=(0,e.getPart)(r,`combobox-trigger`),u=(0,e.getPart)(c??s??r,`combobox-empty`);if(!o||!s)throw Error(`Combobox requires combobox-input and combobox-content slots`);let ee=a.defaultValue??(0,e.getDataString)(r,`defaultValue`)??null,te=a.defaultOpen??(0,e.getDataBool)(r,`defaultOpen`)??!1,d=a.placeholder??(0,e.getDataString)(r,`placeholder`)??``,f=a.disabled??(0,e.getDataBool)(r,`disabled`)??!1,p=a.required??(0,e.getDataBool)(r,`required`)??!1,m=a.name??(0,e.getDataString)(r,`name`)??null,ne=a.openOnFocus??(0,e.getDataBool)(r,`openOnFocus`)??!0,h=a.autoHighlight??(0,e.getDataBool)(r,`autoHighlight`)??!0,re=a.filter??null,g=a.onValueChange,_=a.onOpenChange,ie=a.onInputValueChange,v=a.itemToStringValue??null,ae=a.side??(0,e.getDataEnum)(s,`side`,t)??(0,e.getDataEnum)(r,`side`,t)??`bottom`,oe=a.align??(0,e.getDataEnum)(s,`align`,n)??(0,e.getDataEnum)(r,`align`,n)??`start`,se=a.sideOffset??(0,e.getDataNumber)(s,`sideOffset`)??(0,e.getDataNumber)(r,`sideOffset`)??4,ce=a.alignOffset??(0,e.getDataNumber)(s,`alignOffset`)??(0,e.getDataNumber)(r,`alignOffset`)??0,le=a.avoidCollisions??(0,e.getDataBool)(s,`avoidCollisions`)??(0,e.getDataBool)(r,`avoidCollisions`)??!0,ue=a.collisionPadding??(0,e.getDataNumber)(s,`collisionPadding`)??(0,e.getDataNumber)(r,`collisionPadding`)??8,y=!1,b=ee,x=-1,S=!1,C=[],w=r.ownerDocument??document,T=-1/0,E=!1,D=[],O=[],k=[],A=new Map,j=null,M=(0,e.createPortalLifecycle)({content:s,root:r,wrapperSlot:`combobox-positioner`}),N=!1,P=e=>e.hasAttribute(`disabled`)||e.hasAttribute(`data-disabled`)||e.getAttribute(`aria-disabled`)===`true`,F=e=>{if(e.dataset.label)return e.dataset.label;let t=``;for(let n of e.childNodes)n.nodeType===Node.TEXT_NODE&&(t+=n.textContent);return t.trim()||(e.textContent?.trim()??``)},I=e=>e.hasAttribute(`data-value`)?e.getAttribute(`data-value`):void 0,de=t=>t===null?null:(0,e.getParts)(c??s,`combobox-item`).find(e=>I(e)===t)??null,L=e=>{let t=de(e);return v?v(t,e):t?F(t):``},fe=(0,e.ensureId)(o,`combobox-input`),R=c??s,z=(0,e.ensureId)(R,`combobox-list`);o.setAttribute(`role`,`combobox`),o.setAttribute(`aria-autocomplete`,`list`),o.setAttribute(`autocomplete`,`off`),o.setAttribute(`aria-controls`,z),c?c.setAttribute(`role`,`listbox`):s.setAttribute(`role`,`listbox`),l&&(l.hasAttribute(`type`)||l.setAttribute(`type`,`button`),l.tabIndex=-1,l.setAttribute(`aria-label`,`Toggle`));let B=document.querySelector(`label[for="${CSS.escape(fe)}"]`);if(B){let t=(0,e.ensureId)(B,`combobox-label`),n=o.getAttribute(`aria-labelledby`);o.setAttribute(`aria-labelledby`,n?`${n} ${t}`:t),R.setAttribute(`aria-labelledby`,t)}f&&(o.setAttribute(`aria-disabled`,`true`),o.disabled=!0,l&&(l.setAttribute(`aria-disabled`,`true`),l.setAttribute(`data-disabled`,``))),p&&(o.setAttribute(`aria-required`,`true`),o.required=!0);let pe=()=>{p&&o.setCustomValidity(b===null?`Please select a value`:``)};d&&(o.placeholder=d),m&&(o.name&&o.removeAttribute(`name`),j=document.createElement(`input`),j.type=`hidden`,j.name=m,j.value=b??``,r.appendChild(j));let me=re??((e,t,n)=>n.toLowerCase().includes(e.toLowerCase())),he=()=>{let t=c??s;D=(0,e.getParts)(t,`combobox-item`);for(let t of D)t.setAttribute(`role`,`option`),(0,e.ensureId)(t,`combobox-item`),P(t)?t.setAttribute(`aria-disabled`,`true`):t.removeAttribute(`aria-disabled`),I(t)===b?((0,e.setAria)(t,`selected`,!0),t.setAttribute(`data-selected`,``)):((0,e.setAria)(t,`selected`,!1),t.removeAttribute(`data-selected`));let n=(0,e.getParts)(t,`combobox-group`);for(let t of n){t.setAttribute(`role`,`group`);let n=(0,e.getPart)(t,`combobox-label`);if(n){let r=(0,e.ensureId)(n,`combobox-label`);t.setAttribute(`aria-labelledby`,r)}}V()},V=()=>{O=D.filter(e=>!e.hidden),k=O.filter(e=>!P(e)),A=new Map(k.map((e,t)=>[e,t]))},H=(e,t)=>{let n=t===`previous`?e.previousElementSibling:e.nextElementSibling;for(;n;){if(n instanceof HTMLElement&&!n.hidden&&n.dataset.slot!==`combobox-separator`)return!0;n=t===`previous`?n.previousElementSibling:n.nextElementSibling}return!1},U=t=>{let n=c??s,r=t.trim(),i=0;for(let e of D){let t=I(e)??``,n=F(e),a=r===``||me(r,t,n);e.hidden=!a,a&&i++}let a=(0,e.getParts)(n,`combobox-group`);for(let t of a)t.hidden=!(0,e.getParts)(t,`combobox-item`).some(e=>!e.hidden);let o=(0,e.getParts)(n,`combobox-separator`);for(let e of o)e.hidden=!H(e,`previous`)||!H(e,`next`);u&&(u.hidden=i>0),i===0?s.setAttribute(`data-empty`,``):s.removeAttribute(`data-empty`),V()},W=()=>{let n=M.container,i=r.ownerDocument.defaultView??window,a=r.getBoundingClientRect();s.style.minWidth=`${a.width}px`;let o=(0,e.computeFloatingPosition)({anchorRect:a,contentRect:s.getBoundingClientRect(),side:ae,align:oe,sideOffset:se,alignOffset:ce,avoidCollisions:le,collisionPadding:ue,allowedSides:t});n.style.position=`absolute`,n.style.top=`0px`,n.style.left=`0px`,n.style.transform=`translate3d(${o.x+i.scrollX}px, ${o.y+i.scrollY}px, 0)`,n.style.willChange=`transform`,n.style.margin=`0`,s.setAttribute(`data-side`,o.side),s.setAttribute(`data-align`,o.align),n!==s&&(n.setAttribute(`data-side`,o.side),n.setAttribute(`data-align`,o.align))},G=(0,e.createPositionSync)({observedElements:[r,s],isActive:()=>y,ancestorScroll:!1,onUpdate:W,ignoreScrollTarget:e=>e instanceof Node&&s.contains(e)}),K=e=>c&&c.contains(e)&&c.scrollHeight>c.clientHeight?c:s,q=t=>{for(let n=0;n<k.length;n++){let r=k[n];n===t?(r.setAttribute(`data-highlighted`,``),o.setAttribute(`aria-activedescendant`,r.id),(0,e.ensureItemVisibleInContainer)(r,K(r))):r.removeAttribute(`data-highlighted`)}x=t},J=()=>{for(let e of D)e.removeAttribute(`data-highlighted`);x=-1,o.removeAttribute(`aria-activedescendant`)},Y=e=>{r.setAttribute(`data-state`,e),s.setAttribute(`data-state`,e),l&&l.setAttribute(`data-state`,e),e===`open`?(r.setAttribute(`data-open`,``),s.setAttribute(`data-open`,``),l&&l.setAttribute(`data-open`,``),r.removeAttribute(`data-closed`),s.removeAttribute(`data-closed`),l&&l.removeAttribute(`data-closed`)):(r.setAttribute(`data-closed`,``),s.setAttribute(`data-closed`,``),l&&l.setAttribute(`data-closed`,``),r.removeAttribute(`data-open`),s.removeAttribute(`data-open`),l&&l.removeAttribute(`data-open`))},X=(0,e.createPresenceLifecycle)({element:s,onExitComplete:()=>{N||(M.restore(),s.hidden=!0)}}),Z=(t,n=!1)=>{if(y!==t&&!(f&&t)){if(t){y=!0,(0,e.setAria)(o,`expanded`,!0),M.mount(),s.hidden=!1,Y(`open`),X.enter(),he(),S=!1,U(o.value);let t=k.findIndex(e=>I(e)===b);t>=0?q(t):h&&k.length>0?q(0):J(),G.start(),W(),G.update(),requestAnimationFrame(()=>{y&&G.update()})}else y=!1,(0,e.setAria)(o,`expanded`,!1),Y(`closed`),J(),S=!1,G.stop(),X.exit(),o.value=L(b);(0,e.emit)(r,`combobox:open-change`,{open:y}),_?.(y)}},Q=(t,n=!1)=>{if(b===t&&!n)return;let i=b;b=t,pe(),j&&(j.value=t??``),t===null?r.removeAttribute(`data-value`):r.setAttribute(`data-value`,t);let a=c??s,l=D.length>0?D:(0,e.getParts)(a,`combobox-item`);for(let n of l)I(n)===t?((0,e.setAria)(n,`selected`,!0),n.setAttribute(`data-selected`,``)):((0,e.setAria)(n,`selected`,!1),n.removeAttribute(`data-selected`));o.value=L(t),!n&&i!==t&&((0,e.emit)(r,`combobox:change`,{value:t}),g?.(t))},$=e=>{if(P(e))return;let t=I(e);t!==void 0&&(Q(t),Z(!1))};return(0,e.setAria)(o,`expanded`,!1),s.hidden=!0,Y(`closed`),Q(b,!0),C.push((0,e.on)(w,`keydown`,e=>{e.key===`Tab`&&(T=Date.now())},{capture:!0}),(0,e.on)(o,`pointerdown`,()=>{E=!0}),(0,e.on)(o,`input`,()=>{let t=o.value;(0,e.emit)(r,`combobox:input-change`,{inputValue:t}),ie?.(t),y?(U(t),h&&k.length>0?q(0):J(),G.update()):Z(!0)}),(0,e.on)(o,`keydown`,e=>{if(!f)switch(e.key){case`ArrowDown`:{if(e.preventDefault(),!y){Z(!0);return}S=!0;let t=k.length;if(t===0)return;q(x===-1?0:(x+1)%t);break}case`ArrowUp`:{if(e.preventDefault(),!y){Z(!0);return}S=!0;let t=k.length;if(t===0)return;q(x===-1?t-1:(x-1+t)%t);break}case`Home`:if(!y)return;e.preventDefault(),S=!0,k.length>0&&q(0);break;case`End`:if(!y)return;e.preventDefault(),S=!0,k.length>0&&q(k.length-1);break;case`Enter`:if(!y)return;e.preventDefault(),x>=0&&x<k.length&&$(k[x]);break;case`Escape`:y?(e.preventDefault(),Z(!1)):b!==null&&(e.preventDefault(),Q(null));break;case`Tab`:y&&Z(!1,!0);break}}),(0,e.on)(o,`focus`,()=>{if(f)return;o.select();let e=E||Date.now()-T<=750;E=!1,ne&&!y&&e&&Z(!0)})),l&&C.push((0,e.on)(l,`click`,()=>{f||(y?Z(!1):(Z(!0),o.focus()))})),C.push((0,e.on)(s,`click`,e=>{let t=e.target.closest?.(`[data-slot="combobox-item"]`);t&&!t.hidden&&$(t)}),(0,e.on)(s,`pointermove`,e=>{let t=e.target.closest?.(`[data-slot="combobox-item"]`);if(!(S&&(S=!1,t&&A.get(t)===x)))if(t&&!P(t)&&!t.hidden){let e=A.get(t);e!==void 0&&e!==x&&q(e)}else J()}),(0,e.on)(s,`pointerleave`,()=>{S||J()}),(0,e.on)(s,`mousedown`,e=>{e.preventDefault()})),C.push((0,e.createDismissLayer)({root:r,isOpen:()=>y,onDismiss:()=>Z(!1),closeOnClickOutside:!0,closeOnEscape:!1})),C.push((0,e.on)(r,`combobox:set`,e=>{let t=e.detail;t?.value!==void 0&&Q(t.value),t?.open!==void 0&&Z(t.open),t?.inputValue!==void 0&&(o.value=t.inputValue),t?.itemToStringValue!==void 0&&(v=t.itemToStringValue,o.value=L(b))})),te&&Z(!0),{get value(){return b},get inputValue(){return o.value},get isOpen(){return y},select:e=>Q(e),clear:()=>Q(null),open:()=>Z(!0),close:()=>Z(!1),setItemToStringValue:e=>{v=e,o.value=L(b)},destroy:()=>{N=!0,G.stop(),X.cleanup(),M.cleanup(),C.forEach(e=>e()),C.length=0,j&&j.parentNode&&j.parentNode.removeChild(j),i.delete(r)}}}const i=new WeakSet;function a(t=document){let n=[];for(let a of(0,e.getRoots)(t,`combobox`))i.has(a)||(i.add(a),n.push(r(a)));return n}exports.create=a,exports.createCombobox=r;
|
package/dist/index.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
import{computeFloatingPosition as e,createDismissLayer as t,createPortalLifecycle as n,createPositionSync as r,createPresenceLifecycle as i,emit as a,ensureId as o,ensureItemVisibleInContainer as ee,getDataBool as s,getDataEnum as c,getDataNumber as l,getDataString as u,getPart as d,getParts as f,getRoots as p,on as m,setAria as h}from"@data-slot/core";const g=[`top`,`bottom`],te=[`start`,`center`,`end`];function _(p,_={}){let y=d(p,`combobox-input`),b=d(p,`combobox-content`),x=d(p,`combobox-list`)??d(b??p,`combobox-list`),S=d(p,`combobox-trigger`),ne=d(x??b??p,`combobox-empty`);if(!y||!b)throw Error(`Combobox requires combobox-input and combobox-content slots`);let re=_.defaultValue??u(p,`defaultValue`)??null,ie=_.defaultOpen??s(p,`defaultOpen`)??!1,C=_.placeholder??u(p,`placeholder`)??``,w=_.disabled??s(p,`disabled`)??!1,
|
|
1
|
+
import{computeFloatingPosition as e,createDismissLayer as t,createPortalLifecycle as n,createPositionSync as r,createPresenceLifecycle as i,emit as a,ensureId as o,ensureItemVisibleInContainer as ee,getDataBool as s,getDataEnum as c,getDataNumber as l,getDataString as u,getPart as d,getParts as f,getRoots as p,on as m,setAria as h}from"@data-slot/core";const g=[`top`,`bottom`],te=[`start`,`center`,`end`];function _(p,_={}){let y=d(p,`combobox-input`),b=d(p,`combobox-content`),x=d(p,`combobox-list`)??d(b??p,`combobox-list`),S=d(p,`combobox-trigger`),ne=d(x??b??p,`combobox-empty`);if(!y||!b)throw Error(`Combobox requires combobox-input and combobox-content slots`);let re=_.defaultValue??u(p,`defaultValue`)??null,ie=_.defaultOpen??s(p,`defaultOpen`)??!1,C=_.placeholder??u(p,`placeholder`)??``,w=_.disabled??s(p,`disabled`)??!1,ae=_.required??s(p,`required`)??!1,oe=_.name??u(p,`name`)??null,se=_.openOnFocus??s(p,`openOnFocus`)??!0,ce=_.autoHighlight??s(p,`autoHighlight`)??!0,le=_.filter??null,ue=_.onValueChange,de=_.onOpenChange,fe=_.onInputValueChange,T=_.itemToStringValue??null,pe=_.side??c(b,`side`,g)??c(p,`side`,g)??`bottom`,me=_.align??c(b,`align`,te)??c(p,`align`,te)??`start`,he=_.sideOffset??l(b,`sideOffset`)??l(p,`sideOffset`)??4,ge=_.alignOffset??l(b,`alignOffset`)??l(p,`alignOffset`)??0,_e=_.avoidCollisions??s(b,`avoidCollisions`)??s(p,`avoidCollisions`)??!0,ve=_.collisionPadding??l(b,`collisionPadding`)??l(p,`collisionPadding`)??8,E=!1,D=re,O=-1,k=!1,A=[],ye=p.ownerDocument??document,be=-1/0,j=!1,M=[],N=[],P=[],F=new Map,I=null,L=n({content:b,root:p,wrapperSlot:`combobox-positioner`}),xe=!1,R=e=>e.hasAttribute(`disabled`)||e.hasAttribute(`data-disabled`)||e.getAttribute(`aria-disabled`)===`true`,Se=e=>{if(e.dataset.label)return e.dataset.label;let t=``;for(let n of e.childNodes)n.nodeType===Node.TEXT_NODE&&(t+=n.textContent);return t.trim()||(e.textContent?.trim()??``)},z=e=>e.hasAttribute(`data-value`)?e.getAttribute(`data-value`):void 0,Ce=e=>e===null?null:f(x??b,`combobox-item`).find(t=>z(t)===e)??null,B=e=>{let t=Ce(e);return T?T(t,e):t?Se(t):``},we=o(y,`combobox-input`),V=x??b,Te=o(V,`combobox-list`);y.setAttribute(`role`,`combobox`),y.setAttribute(`aria-autocomplete`,`list`),y.setAttribute(`autocomplete`,`off`),y.setAttribute(`aria-controls`,Te),x?x.setAttribute(`role`,`listbox`):b.setAttribute(`role`,`listbox`),S&&(S.hasAttribute(`type`)||S.setAttribute(`type`,`button`),S.tabIndex=-1,S.setAttribute(`aria-label`,`Toggle`));let H=document.querySelector(`label[for="${CSS.escape(we)}"]`);if(H){let e=o(H,`combobox-label`),t=y.getAttribute(`aria-labelledby`);y.setAttribute(`aria-labelledby`,t?`${t} ${e}`:e),V.setAttribute(`aria-labelledby`,e)}w&&(y.setAttribute(`aria-disabled`,`true`),y.disabled=!0,S&&(S.setAttribute(`aria-disabled`,`true`),S.setAttribute(`data-disabled`,``))),ae&&(y.setAttribute(`aria-required`,`true`),y.required=!0);let Ee=()=>{ae&&y.setCustomValidity(D===null?`Please select a value`:``)};C&&(y.placeholder=C),oe&&(y.name&&y.removeAttribute(`name`),I=document.createElement(`input`),I.type=`hidden`,I.name=oe,I.value=D??``,p.appendChild(I));let De=le??((e,t,n)=>n.toLowerCase().includes(e.toLowerCase())),Oe=()=>{let e=x??b;M=f(e,`combobox-item`);for(let e of M)e.setAttribute(`role`,`option`),o(e,`combobox-item`),R(e)?e.setAttribute(`aria-disabled`,`true`):e.removeAttribute(`aria-disabled`),z(e)===D?(h(e,`selected`,!0),e.setAttribute(`data-selected`,``)):(h(e,`selected`,!1),e.removeAttribute(`data-selected`));let t=f(e,`combobox-group`);for(let e of t){e.setAttribute(`role`,`group`);let t=d(e,`combobox-label`);if(t){let n=o(t,`combobox-label`);e.setAttribute(`aria-labelledby`,n)}}U()},U=()=>{N=M.filter(e=>!e.hidden),P=N.filter(e=>!R(e)),F=new Map(P.map((e,t)=>[e,t]))},W=(e,t)=>{let n=t===`previous`?e.previousElementSibling:e.nextElementSibling;for(;n;){if(n instanceof HTMLElement&&!n.hidden&&n.dataset.slot!==`combobox-separator`)return!0;n=t===`previous`?n.previousElementSibling:n.nextElementSibling}return!1},G=e=>{let t=x??b,n=e.trim(),r=0;for(let e of M){let t=z(e)??``,i=Se(e),a=n===``||De(n,t,i);e.hidden=!a,a&&r++}let i=f(t,`combobox-group`);for(let e of i)e.hidden=!f(e,`combobox-item`).some(e=>!e.hidden);let a=f(t,`combobox-separator`);for(let e of a)e.hidden=!W(e,`previous`)||!W(e,`next`);ne&&(ne.hidden=r>0),r===0?b.setAttribute(`data-empty`,``):b.removeAttribute(`data-empty`),U()},K=()=>{let t=L.container,n=p.ownerDocument.defaultView??window,r=p.getBoundingClientRect();b.style.minWidth=`${r.width}px`;let i=e({anchorRect:r,contentRect:b.getBoundingClientRect(),side:pe,align:me,sideOffset:he,alignOffset:ge,avoidCollisions:_e,collisionPadding:ve,allowedSides:g});t.style.position=`absolute`,t.style.top=`0px`,t.style.left=`0px`,t.style.transform=`translate3d(${i.x+n.scrollX}px, ${i.y+n.scrollY}px, 0)`,t.style.willChange=`transform`,t.style.margin=`0`,b.setAttribute(`data-side`,i.side),b.setAttribute(`data-align`,i.align),t!==b&&(t.setAttribute(`data-side`,i.side),t.setAttribute(`data-align`,i.align))},q=r({observedElements:[p,b],isActive:()=>E,ancestorScroll:!1,onUpdate:K,ignoreScrollTarget:e=>e instanceof Node&&b.contains(e)}),ke=e=>x&&x.contains(e)&&x.scrollHeight>x.clientHeight?x:b,J=e=>{for(let t=0;t<P.length;t++){let n=P[t];t===e?(n.setAttribute(`data-highlighted`,``),y.setAttribute(`aria-activedescendant`,n.id),ee(n,ke(n))):n.removeAttribute(`data-highlighted`)}O=e},Y=()=>{for(let e of M)e.removeAttribute(`data-highlighted`);O=-1,y.removeAttribute(`aria-activedescendant`)},X=e=>{p.setAttribute(`data-state`,e),b.setAttribute(`data-state`,e),S&&S.setAttribute(`data-state`,e),e===`open`?(p.setAttribute(`data-open`,``),b.setAttribute(`data-open`,``),S&&S.setAttribute(`data-open`,``),p.removeAttribute(`data-closed`),b.removeAttribute(`data-closed`),S&&S.removeAttribute(`data-closed`)):(p.setAttribute(`data-closed`,``),b.setAttribute(`data-closed`,``),S&&S.setAttribute(`data-closed`,``),p.removeAttribute(`data-open`),b.removeAttribute(`data-open`),S&&S.removeAttribute(`data-open`))},Z=i({element:b,onExitComplete:()=>{xe||(L.restore(),b.hidden=!0)}}),Q=(e,t=!1)=>{if(E!==e&&!(w&&e)){if(e){E=!0,h(y,`expanded`,!0),L.mount(),b.hidden=!1,X(`open`),Z.enter(),Oe(),k=!1,G(y.value);let e=P.findIndex(e=>z(e)===D);e>=0?J(e):ce&&P.length>0?J(0):Y(),q.start(),K(),q.update(),requestAnimationFrame(()=>{E&&q.update()})}else E=!1,h(y,`expanded`,!1),X(`closed`),Y(),k=!1,q.stop(),Z.exit(),y.value=B(D);a(p,`combobox:open-change`,{open:E}),de?.(E)}},$=(e,t=!1)=>{if(D===e&&!t)return;let n=D;D=e,Ee(),I&&(I.value=e??``),e===null?p.removeAttribute(`data-value`):p.setAttribute(`data-value`,e);let r=x??b,i=M.length>0?M:f(r,`combobox-item`);for(let t of i)z(t)===e?(h(t,`selected`,!0),t.setAttribute(`data-selected`,``)):(h(t,`selected`,!1),t.removeAttribute(`data-selected`));y.value=B(e),!t&&n!==e&&(a(p,`combobox:change`,{value:e}),ue?.(e))},Ae=e=>{if(R(e))return;let t=z(e);t!==void 0&&($(t),Q(!1))};return h(y,`expanded`,!1),b.hidden=!0,X(`closed`),$(D,!0),A.push(m(ye,`keydown`,e=>{e.key===`Tab`&&(be=Date.now())},{capture:!0}),m(y,`pointerdown`,()=>{j=!0}),m(y,`input`,()=>{let e=y.value;a(p,`combobox:input-change`,{inputValue:e}),fe?.(e),E?(G(e),ce&&P.length>0?J(0):Y(),q.update()):Q(!0)}),m(y,`keydown`,e=>{if(!w)switch(e.key){case`ArrowDown`:{if(e.preventDefault(),!E){Q(!0);return}k=!0;let t=P.length;if(t===0)return;J(O===-1?0:(O+1)%t);break}case`ArrowUp`:{if(e.preventDefault(),!E){Q(!0);return}k=!0;let t=P.length;if(t===0)return;J(O===-1?t-1:(O-1+t)%t);break}case`Home`:if(!E)return;e.preventDefault(),k=!0,P.length>0&&J(0);break;case`End`:if(!E)return;e.preventDefault(),k=!0,P.length>0&&J(P.length-1);break;case`Enter`:if(!E)return;e.preventDefault(),O>=0&&O<P.length&&Ae(P[O]);break;case`Escape`:E?(e.preventDefault(),Q(!1)):D!==null&&(e.preventDefault(),$(null));break;case`Tab`:E&&Q(!1,!0);break}}),m(y,`focus`,()=>{if(w)return;y.select();let e=j||Date.now()-be<=750;j=!1,se&&!E&&e&&Q(!0)})),S&&A.push(m(S,`click`,()=>{w||(E?Q(!1):(Q(!0),y.focus()))})),A.push(m(b,`click`,e=>{let t=e.target.closest?.(`[data-slot="combobox-item"]`);t&&!t.hidden&&Ae(t)}),m(b,`pointermove`,e=>{let t=e.target.closest?.(`[data-slot="combobox-item"]`);if(!(k&&(k=!1,t&&F.get(t)===O)))if(t&&!R(t)&&!t.hidden){let e=F.get(t);e!==void 0&&e!==O&&J(e)}else Y()}),m(b,`pointerleave`,()=>{k||Y()}),m(b,`mousedown`,e=>{e.preventDefault()})),A.push(t({root:p,isOpen:()=>E,onDismiss:()=>Q(!1),closeOnClickOutside:!0,closeOnEscape:!1})),A.push(m(p,`combobox:set`,e=>{let t=e.detail;t?.value!==void 0&&$(t.value),t?.open!==void 0&&Q(t.open),t?.inputValue!==void 0&&(y.value=t.inputValue),t?.itemToStringValue!==void 0&&(T=t.itemToStringValue,y.value=B(D))})),ie&&Q(!0),{get value(){return D},get inputValue(){return y.value},get isOpen(){return E},select:e=>$(e),clear:()=>$(null),open:()=>Q(!0),close:()=>Q(!1),setItemToStringValue:e=>{T=e,y.value=B(D)},destroy:()=>{xe=!0,q.stop(),Z.cleanup(),L.cleanup(),A.forEach(e=>e()),A.length=0,I&&I.parentNode&&I.parentNode.removeChild(I),v.delete(p)}}}const v=new WeakSet;function y(e=document){let t=[];for(let n of p(e,`combobox`))v.has(n)||(v.add(n),t.push(_(n)));return t}export{y as create,_ as createCombobox};
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@data-slot/combobox",
|
|
3
|
-
"version": "0.2.
|
|
3
|
+
"version": "0.2.50",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"sideEffects": false,
|
|
6
6
|
"main": "./dist/index.cjs",
|
|
@@ -40,6 +40,6 @@
|
|
|
40
40
|
],
|
|
41
41
|
"license": "MIT",
|
|
42
42
|
"dependencies": {
|
|
43
|
-
"@data-slot/core": "0.2.
|
|
43
|
+
"@data-slot/core": "0.2.50"
|
|
44
44
|
}
|
|
45
45
|
}
|