wimui 0.49.0 → 0.50.0

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.
@@ -1,2 +1,2 @@
1
1
  "use client";
2
- const e=require("../../../_virtual/_rolldown/runtime.cjs"),t=require("../../../i18n/useWimTranslation.cjs"),n=require("../../../icon/chevron-right.cjs"),r=require("../../media/Icon/Icon.cjs"),i=require("../../_internal/BaseListItem/BaseListItem.cjs"),a=require("../VirtualList/VirtualList.cjs"),o=require("./tree-view.module.cjs"),s=require("./useTreeViewItemExpansion.cjs");let c=require("react");c=e.__toESM(c,1);let l=require("classnames");l=e.__toESM(l,1);let u=require("react/jsx-runtime");var d=(0,c.createContext)(null),f=()=>{let e=(0,c.useContext)(d);if(!e)throw Error(`TreeView components must be used within a TreeView`);return e},p=40,m=100;function h(e){return typeof e==`string`?e:typeof e==`number`?String(e):``}function g(e,t,n,r=0){let i=[];for(let a of e){let e=h(a.label),o=!n||e.toLowerCase().includes(n.toLowerCase()),s=n&&a.children?_(a.children,n):!1;if(n&&!o&&!s)continue;i.push({...a,depth:r,hasChildren:!!(a.children&&a.children.length>0)});let c=t.includes(a.value)||!!n&&s;a.children&&a.children.length>0&&c&&i.push(...g(a.children,t,n,r+1))}return i}function _(e,t){return e.some(e=>h(e.label).toLowerCase().includes(t.toLowerCase())||(e.children?_(e.children,t):!1))}function v(e,t){for(let n of e){if(n.value===t){let e=[],t=n=>{for(let r of n)e.push(r.value),r.children&&t(r.children)};return n.children&&t(n.children),e}if(n.children){let e=v(n.children,t);if(e!==null)return e}}return null}function y(e,t,n=[]){for(let r of e){if(r.value===t)return n;if(r.children){let e=y(r.children,t,[...n,r.value]);if(e!==null)return e}}return null}function b(e,t){let n=[],r=new Set(t);function i(e){if(!e.children?.length)return r.has(e.value)?`checked`:`unchecked`;let t=e.children.map(i),a=t.every(e=>e===`checked`),o=t.some(e=>e!==`unchecked`);return a?(r.add(e.value),`checked`):o?(n.push(e.value),`indeterminate`):`unchecked`}for(let t of e)i(t);return{indeterminateValues:n,effectiveCheckedSet:r}}var x=({children:e,nodes:s,className:f,multiSelect:_=!1,checkable:x=!1,checkStrategy:S=`cascade`,searchable:C=!1,defaultExpandedValues:w=[],defaultSelectedValues:T=[],defaultCheckedValues:ee=[],onCheckedChange:E,onSelectedChange:D,width:O,virtualThreshold:k=m,labels:A={},labelId:j,styles:M})=>{let{t:N}=t.useWimTranslation(`components`),{searchPlaceholder:P,searchAriaLabel:F=N(`treeview.search_aria`),expandLabel:I=e=>N(`treeview.expand`,{label:e}),collapseLabel:L=e=>N(`treeview.collapse`,{label:e})}=A,[R,z]=(0,c.useState)(w),[B,V]=(0,c.useState)(T),[H,U]=(0,c.useState)(ee),[W,te]=(0,c.useState)(``),[G,K]=(0,c.useState)(T[0]||null),q=c.default.useRef(null),{indeterminateValues:J,effectiveCheckedSet:Y}=(0,c.useMemo)(()=>!s||S!==`cascade`?{indeterminateValues:[],effectiveCheckedSet:new Set(H)}:b(s,new Set(H)),[s,S,H]),X=(0,c.useCallback)(e=>{z(t=>t.includes(e)?t.filter(t=>t!==e):[...t,e])},[]),Z=(0,c.useCallback)(e=>{if(_)V(t=>{let n=t.includes(e)?t.filter(t=>t!==e):[...t,e];return D?.(n),n});else{let t=[e];V(t),D?.(t)}},[_,D]),Q=(0,c.useCallback)(e=>{U(t=>{let n;if(!s)return n=t.includes(e)?t.filter(t=>t!==e):[...t,e],E?.(n),n;if(S===`cascade`){let{indeterminateValues:r}=b(s,new Set(t)),i=t.includes(e)&&!r.includes(e),a=[e,...v(s,e)??[]];n=i?t.filter(e=>!a.includes(e)):[...t,...a.filter(e=>!t.includes(e))];let{indeterminateValues:o,effectiveCheckedSet:c}=b(s,new Set(n));E?.([...c].filter(e=>!o.includes(e)))}else{if(t.includes(e))n=t.filter(t=>t!==e);else{let r=y(s,e)??[],i=v(s,e)??[],a=new Set([...r,...i]);n=[...t.filter(e=>!a.has(e)),e]}E?.(n)}return n})},[S,s,E]),ne=(0,c.useMemo)(()=>({expandedValues:R,selectedValues:B,checkedValues:H,indeterminateValues:J,focusedValue:G,toggleExpand:X,select:Z,toggleCheck:Q,setFocusedValue:K,containerRef:q,multiSelect:_,checkable:x,checkStrategy:S,searchQuery:W,labels:{expandLabel:I,collapseLabel:L}}),[R,B,H,J,G,X,Z,Q,_,x,S,W,I,L]),$=(0,c.useMemo)(()=>s?g(s,R,W):[],[s,R,W]),re=!!s&&$.length>=k,ie=(0,c.useCallback)((e,t,n)=>{switch(e.key){case`Enter`:case` `:e.preventDefault(),Z(t.value),x&&Q(t.value);break;case`ArrowDown`:e.preventDefault(),n<$.length-1&&K($[n+1].value);break;case`ArrowUp`:e.preventDefault(),n>0&&K($[n-1].value);break;case`Home`:e.preventDefault(),$.length>0&&K($[0].value);break;case`End`:e.preventDefault(),$.length>0&&K($[$.length-1].value);break;case`ArrowRight`:e.preventDefault(),t.hasChildren&&!R.includes(t.value)?X(t.value):t.hasChildren&&n<$.length-1&&K($[n+1].value);break;case`ArrowLeft`:if(e.preventDefault(),t.hasChildren&&R.includes(t.value))X(t.value);else for(let e=n-1;e>=0;e--)if($[e].depth<t.depth){K($[e].value);break}}},[$,R,Z,x,Q,X]),ae=(0,c.useCallback)((e,t)=>{let a=B.includes(e.value),s=Y.has(e.value),c=J.includes(e.value),d=R.includes(e.value),f=G===e.value,p=h(e.label);return(0,u.jsx)(`div`,{className:(0,l.default)(o.default.item,a&&o.default.selected,e.disabled&&o.default.disabled,M?.item),role:`treeitem`,"aria-expanded":e.hasChildren?d:void 0,"aria-selected":a,"aria-disabled":e.disabled,"aria-setsize":$.length,"aria-posinset":t+1,"aria-level":e.depth+1,"data-value":e.value,tabIndex:f?0:-1,onClick:t=>{t.stopPropagation(),K(e.value),e.disabled||(_&&x?Q(e.value):Z(e.value))},onKeyDown:n=>{n.stopPropagation(),ie(n,e,t)},onFocus:t=>{t.stopPropagation(),K(e.value)},style:{paddingLeft:e.depth*20},children:(0,u.jsx)(i.BaseListItem,{className:(0,l.default)(o.default.labelContainer,M?.labelContainer),active:a,disabled:e.disabled,icon:(0,u.jsxs)(`div`,{className:(0,l.default)(o.default.iconWrapper,M?.iconWrapper),children:[e.hasChildren?(0,u.jsx)(`button`,{type:`button`,className:(0,l.default)(o.default.expandBtn,d&&o.default.expanded,M?.expandBtn),onClick:t=>{t.stopPropagation(),e.disabled||X(e.value)},disabled:e.disabled,"aria-label":d?L(p):I(p),tabIndex:-1,children:(0,u.jsx)(r.Icon,{component:n.default,size:`sm`})}):(0,u.jsx)(`span`,{className:o.default.spacer}),x&&(0,u.jsx)(`input`,{type:`checkbox`,className:(0,l.default)(o.default.checkbox,M?.checkbox),checked:s&&!c,ref:e=>{e&&(e.indeterminate=c)},onChange:t=>{t.stopPropagation(),e.disabled||Q(e.value)},disabled:e.disabled,onClick:e=>e.stopPropagation(),"aria-label":p,tabIndex:-1}),e.icon&&(0,u.jsx)(`span`,{className:(0,l.default)(o.default.icon,M?.icon),children:e.icon})]}),children:e.label})},e.value)},[B,Y,J,R,G,$.length,_,x,Z,Q,X,ie,I,L,M]);return(0,u.jsx)(d.Provider,{value:ne,children:(0,u.jsxs)(`div`,{ref:q,"data-testid":`tree-view-root`,className:(0,l.default)(`wim-tree-view`,o.default.root,!!s&&o.default.dataDriven,f,M?.root),role:`tree`,"aria-label":A.treeAriaLabel,"aria-labelledby":A.treeAriaLabel?void 0:j,style:{width:O,maxWidth:`100%`},tabIndex:G?-1:0,onFocus:e=>{e.target===q.current&&(s?G?K(G):$.length>0&&K($[0].value):G?(q.current?.querySelector(`[role="treeitem"][data-value="${G}"]`))?.focus():(q.current?.querySelector(`[role="treeitem"]`))?.focus())},children:[C&&(0,u.jsx)(`div`,{className:(0,l.default)(o.default.search,M?.search),children:(0,u.jsx)(`input`,{type:`text`,"data-testid":`tree-view-search-input`,className:(0,l.default)(o.default.searchInput,M?.searchInput),placeholder:P,value:W,onChange:e=>te(e.target.value),"aria-label":F})}),s?re?(0,u.jsx)(a.VirtualList,{items:$,itemHeight:p,height:400,renderItem:ae,itemRole:`none`,role:`presentation`}):$.map((e,t)=>ae(e,t)):e]})})},S=({value:e,label:t,icon:a,children:d,className:p,disabled:m=!1})=>{let{expandedValues:g,selectedValues:_,checkedValues:v,indeterminateValues:y,focusedValue:b,toggleExpand:x,select:C,toggleCheck:w,setFocusedValue:T,containerRef:ee,multiSelect:E,checkable:D,searchQuery:O}=f(),k=c.default.useId(),A=`wim-tree-view-item-checkbox-${k}`,j=`wim-tree-view-item-label-${k}`,M=h(t),N=!O||M.toLowerCase().includes(O.toLowerCase()),P=c.default.useMemo(()=>{if(!O||!d)return!1;let e=t=>c.default.Children.toArray(t).some(t=>{if(!c.default.isValidElement(t)||t.type!==S)return!1;let n=t.props,r=n.label;return h(r).toLowerCase().includes(O.toLowerCase())?!0:n.children?e(n.children):!1});return e(d)},[d,O]),F=!!O&&P,I=g.includes(e)||F,L=_.includes(e),R=v.includes(e),z=y.includes(e),B=!!c.default.Children.count(d),{shouldRender:V,isVisualExpanded:H,handleTransitionEnd:U}=s.useTreeViewItemExpansion(I);return O&&!N&&!P?null:(0,u.jsxs)(`div`,{className:(0,l.default)(o.default.item,L&&o.default.selected,m&&o.default.disabled,p),role:`treeitem`,"aria-expanded":B?I:void 0,"aria-selected":L,"aria-disabled":m,"data-value":e,onClick:t=>{t.stopPropagation(),T(e),m||(E&&D?w(e):C(e))},onKeyDown:t=>{if(m)return;t.stopPropagation();let n=Array.from(ee.current?.querySelectorAll(`[role="treeitem"]:not([aria-disabled="true"])`)||[]),r=n.indexOf(t.currentTarget);switch(t.key){case`Enter`:case` `:t.preventDefault(),C(e),D&&w(e);break;case`ArrowDown`:t.preventDefault(),r<n.length-1&&n[r+1].focus();break;case`ArrowUp`:t.preventDefault(),r>0&&n[r-1].focus();break;case`Home`:t.preventDefault(),n.length>0&&n[0].focus();break;case`End`:t.preventDefault(),n.length>0&&n[n.length-1].focus();break;case`ArrowRight`:B&&(I?(t.preventDefault(),r<n.length-1&&n[r+1].focus()):(t.preventDefault(),x(e)));break;case`ArrowLeft`:if(B&&I)t.preventDefault(),x(e);else{t.preventDefault();let e=t.currentTarget.parentElement?.closest(`[role="treeitem"]`);e&&e.focus()}}},onFocus:t=>{t.stopPropagation(),T(e)},tabIndex:b===e?0:-1,children:[(0,u.jsx)(i.BaseListItem,{id:j,className:o.default.labelContainer,active:L,disabled:m,icon:(0,u.jsxs)(`div`,{className:o.default.iconWrapper,children:[B&&(0,u.jsx)(`button`,{type:`button`,className:(0,l.default)(o.default.expandBtn,I&&o.default.expanded),onClick:t=>{t.stopPropagation(),!m&&B&&x(e)},disabled:m,"aria-label":I?`Collapse ${typeof t==`string`?t:``}`:`Expand ${typeof t==`string`?t:``}`,tabIndex:-1,children:(0,u.jsx)(r.Icon,{component:n.default,size:`sm`})}),!B&&(0,u.jsx)(`span`,{className:o.default.spacer}),D&&(0,u.jsx)(`input`,{id:A,type:`checkbox`,className:o.default.checkbox,checked:R&&!z,ref:e=>{e&&(e.indeterminate=z)},onChange:t=>{t.stopPropagation(),m||w(e)},disabled:m,onClick:e=>e.stopPropagation(),"aria-labelledby":j,tabIndex:-1}),a&&(0,u.jsx)(`span`,{className:o.default.icon,children:a})]}),children:t}),B&&V&&(0,u.jsx)(`div`,{className:(0,l.default)(o.default.children,H&&o.default.expanded),onTransitionEnd:U,style:{gridTemplateRows:H?`1fr`:`0fr`},children:(0,u.jsx)(`div`,{className:o.default.childrenInner,role:`group`,children:d})})]})};x.displayName=`TreeView`,S.displayName=`TreeView.Item`;var C=x;C.Item=S,exports.TreeView=C,exports.default=C,exports.TreeViewItem=S;
2
+ const e=require("../../../_virtual/_rolldown/runtime.cjs"),t=require("../../../i18n/useWimTranslation.cjs"),n=require("../../../icon/chevron-right.cjs"),r=require("../../media/Icon/Icon.cjs"),i=require("../../_internal/BaseListItem/BaseListItem.cjs"),a=require("../VirtualList/VirtualList.cjs"),o=require("./tree-view.module.cjs"),s=require("./useTreeViewItemExpansion.cjs");let c=require("react");c=e.__toESM(c,1);let l=require("classnames");l=e.__toESM(l,1);let u=require("react/jsx-runtime");var d=(0,c.createContext)(null),f=()=>{let e=(0,c.useContext)(d);if(!e)throw Error(`TreeView components must be used within a TreeView`);return e},p=40,m=100;function h(e){return typeof e==`string`?e:typeof e==`number`?String(e):``}function g(e,t,n,r=0){let i=[];for(let a of e){let e=h(a.label),o=!n||e.toLowerCase().includes(n.toLowerCase()),s=n&&a.children?_(a.children,n):!1;if(n&&!o&&!s)continue;i.push({...a,depth:r,hasChildren:!!(a.children&&a.children.length>0)});let c=t.includes(a.value)||!!n&&s;a.children&&a.children.length>0&&c&&i.push(...g(a.children,t,n,r+1))}return i}function _(e,t){return e.some(e=>h(e.label).toLowerCase().includes(t.toLowerCase())||(e.children?_(e.children,t):!1))}function v(e,t){for(let n of e){if(n.value===t){let e=[],t=n=>{for(let r of n)e.push(r.value),r.children&&t(r.children)};return n.children&&t(n.children),e}if(n.children){let e=v(n.children,t);if(e!==null)return e}}return null}function y(e,t,n=[]){for(let r of e){if(r.value===t)return n;if(r.children){let e=y(r.children,t,[...n,r.value]);if(e!==null)return e}}return null}function b(e,t){let n=[],r=new Set(t);function i(e){if(!e.children?.length)return r.has(e.value)?`checked`:`unchecked`;let t=e.children.map(i),a=t.every(e=>e===`checked`),o=t.some(e=>e!==`unchecked`);return a?(r.add(e.value),`checked`):o?(n.push(e.value),`indeterminate`):`unchecked`}for(let t of e)i(t);return{indeterminateValues:n,effectiveCheckedSet:r}}var x=({children:e,nodes:s,className:f,multiSelect:_=!1,checkable:x=!1,checkStrategy:S=`cascade`,searchable:C=!1,defaultExpandedValues:w=[],defaultSelectedValues:T=[],defaultCheckedValues:ee=[],onCheckedChange:E,onSelectedChange:D,width:O,virtualThreshold:k=m,labels:A={},labelId:j,styles:M})=>{let{t:N}=t.useWimTranslation(`components`),{searchPlaceholder:P,searchAriaLabel:F=N(`treeview.search_aria`),expandLabel:I=e=>N(`treeview.expand`,{label:e}),collapseLabel:L=e=>N(`treeview.collapse`,{label:e})}=A,[R,z]=(0,c.useState)(w),[B,V]=(0,c.useState)(T),[H,U]=(0,c.useState)(ee),[W,te]=(0,c.useState)(``),[G,K]=(0,c.useState)(T[0]||null),q=c.default.useRef(null),{indeterminateValues:J,effectiveCheckedSet:Y}=(0,c.useMemo)(()=>!s||S!==`cascade`?{indeterminateValues:[],effectiveCheckedSet:new Set(H)}:b(s,new Set(H)),[s,S,H]),X=(0,c.useCallback)(e=>{z(t=>t.includes(e)?t.filter(t=>t!==e):[...t,e])},[]),Z=(0,c.useCallback)(e=>{if(_)V(t=>{let n=t.includes(e)?t.filter(t=>t!==e):[...t,e];return D?.(n),n});else{let t=[e];V(t),D?.(t)}},[_,D]),Q=(0,c.useCallback)(e=>{U(t=>{let n;if(!s)return n=t.includes(e)?t.filter(t=>t!==e):[...t,e],E?.(n),n;if(S===`cascade`){let{indeterminateValues:r}=b(s,new Set(t)),i=t.includes(e)&&!r.includes(e),a=[e,...v(s,e)??[]];n=i?t.filter(e=>!a.includes(e)):[...t,...a.filter(e=>!t.includes(e))];let{indeterminateValues:o,effectiveCheckedSet:c}=b(s,new Set(n));E?.([...c].filter(e=>!o.includes(e)))}else{if(t.includes(e))n=t.filter(t=>t!==e);else{let r=y(s,e)??[],i=v(s,e)??[],a=new Set([...r,...i]);n=[...t.filter(e=>!a.has(e)),e]}E?.(n)}return n})},[S,s,E]),ne=(0,c.useMemo)(()=>({expandedValues:R,selectedValues:B,checkedValues:H,indeterminateValues:J,focusedValue:G,toggleExpand:X,select:Z,toggleCheck:Q,setFocusedValue:K,containerRef:q,multiSelect:_,checkable:x,checkStrategy:S,searchQuery:W,labels:{expandLabel:I,collapseLabel:L}}),[R,B,H,J,G,X,Z,Q,_,x,S,W,I,L]),$=(0,c.useMemo)(()=>s?g(s,R,W):[],[s,R,W]),re=!!s&&$.length>=k,ie=(0,c.useCallback)((e,t,n)=>{switch(e.key){case`Enter`:case` `:e.preventDefault(),Z(t.value),x&&Q(t.value);break;case`ArrowDown`:e.preventDefault(),n<$.length-1&&K($[n+1].value);break;case`ArrowUp`:e.preventDefault(),n>0&&K($[n-1].value);break;case`Home`:e.preventDefault(),$.length>0&&K($[0].value);break;case`End`:e.preventDefault(),$.length>0&&K($[$.length-1].value);break;case`ArrowRight`:e.preventDefault(),t.hasChildren&&!R.includes(t.value)?X(t.value):t.hasChildren&&n<$.length-1&&K($[n+1].value);break;case`ArrowLeft`:if(e.preventDefault(),t.hasChildren&&R.includes(t.value))X(t.value);else for(let e=n-1;e>=0;e--)if($[e].depth<t.depth){K($[e].value);break}}},[$,R,Z,x,Q,X]),ae=(0,c.useCallback)((e,t)=>{let a=B.includes(e.value),s=Y.has(e.value),c=J.includes(e.value),d=R.includes(e.value),f=G===e.value,p=h(e.label);return(0,u.jsx)(`div`,{className:(0,l.default)(o.default.item,a&&o.default.selected,e.disabled&&o.default.disabled,M?.item),role:`treeitem`,"aria-expanded":e.hasChildren?d:void 0,"aria-selected":a,"aria-disabled":e.disabled,"aria-setsize":$.length,"aria-posinset":t+1,"aria-level":e.depth+1,"data-value":e.value,tabIndex:f?0:-1,onClick:t=>{t.stopPropagation(),K(e.value),e.disabled||(_&&x?Q(e.value):Z(e.value))},onKeyDown:n=>{n.key!==`Tab`&&n.stopPropagation(),ie(n,e,t)},onFocus:t=>{t.stopPropagation(),K(e.value)},style:{paddingLeft:e.depth*20},children:(0,u.jsx)(i.BaseListItem,{className:(0,l.default)(o.default.labelContainer,M?.labelContainer),active:a,disabled:e.disabled,icon:(0,u.jsxs)(`div`,{className:(0,l.default)(o.default.iconWrapper,M?.iconWrapper),children:[e.hasChildren?(0,u.jsx)(`button`,{type:`button`,className:(0,l.default)(o.default.expandBtn,d&&o.default.expanded,M?.expandBtn),onClick:t=>{t.stopPropagation(),e.disabled||X(e.value)},disabled:e.disabled,"aria-label":d?L(p):I(p),tabIndex:-1,children:(0,u.jsx)(r.Icon,{component:n.default,size:`sm`})}):(0,u.jsx)(`span`,{className:o.default.spacer}),x&&(0,u.jsx)(`input`,{type:`checkbox`,className:(0,l.default)(o.default.checkbox,M?.checkbox),checked:s&&!c,ref:e=>{e&&(e.indeterminate=c)},onChange:t=>{t.stopPropagation(),e.disabled||Q(e.value)},disabled:e.disabled,onClick:e=>e.stopPropagation(),"aria-label":p,tabIndex:-1}),e.icon&&(0,u.jsx)(`span`,{className:(0,l.default)(o.default.icon,M?.icon),children:e.icon})]}),children:e.label})},e.value)},[B,Y,J,R,G,$.length,_,x,Z,Q,X,ie,I,L,M]);return(0,u.jsx)(d.Provider,{value:ne,children:(0,u.jsxs)(`div`,{ref:q,"data-testid":`tree-view-root`,className:(0,l.default)(`wim-tree-view`,o.default.root,!!s&&o.default.dataDriven,f,M?.root),role:`tree`,"aria-label":A.treeAriaLabel,"aria-labelledby":A.treeAriaLabel?void 0:j,style:{width:O,maxWidth:`100%`},tabIndex:G?-1:0,onFocus:e=>{e.target===q.current&&(s?G?K(G):$.length>0&&K($[0].value):G?(q.current?.querySelector(`[role="treeitem"][data-value="${G}"]`))?.focus():(q.current?.querySelector(`[role="treeitem"]`))?.focus())},children:[C&&(0,u.jsx)(`div`,{className:(0,l.default)(o.default.search,M?.search),children:(0,u.jsx)(`input`,{type:`text`,"data-testid":`tree-view-search-input`,className:(0,l.default)(o.default.searchInput,M?.searchInput),placeholder:P,value:W,onChange:e=>te(e.target.value),"aria-label":F})}),s?re?(0,u.jsx)(a.VirtualList,{items:$,itemHeight:p,height:400,renderItem:ae,itemRole:`none`,role:`presentation`}):$.map((e,t)=>ae(e,t)):e]})})},S=({value:e,label:t,icon:a,children:d,className:p,disabled:m=!1})=>{let{expandedValues:g,selectedValues:_,checkedValues:v,indeterminateValues:y,focusedValue:b,toggleExpand:x,select:C,toggleCheck:w,setFocusedValue:T,containerRef:ee,multiSelect:E,checkable:D,searchQuery:O}=f(),k=c.default.useId(),A=`wim-tree-view-item-checkbox-${k}`,j=`wim-tree-view-item-label-${k}`,M=h(t),N=!O||M.toLowerCase().includes(O.toLowerCase()),P=c.default.useMemo(()=>{if(!O||!d)return!1;let e=t=>c.default.Children.toArray(t).some(t=>{if(!c.default.isValidElement(t)||t.type!==S)return!1;let n=t.props,r=n.label;return h(r).toLowerCase().includes(O.toLowerCase())?!0:n.children?e(n.children):!1});return e(d)},[d,O]),F=!!O&&P,I=g.includes(e)||F,L=_.includes(e),R=v.includes(e),z=y.includes(e),B=!!c.default.Children.count(d),{shouldRender:V,isVisualExpanded:H,handleTransitionEnd:U}=s.useTreeViewItemExpansion(I);return O&&!N&&!P?null:(0,u.jsxs)(`div`,{className:(0,l.default)(o.default.item,L&&o.default.selected,m&&o.default.disabled,p),role:`treeitem`,"aria-expanded":B?I:void 0,"aria-selected":L,"aria-disabled":m,"data-value":e,onClick:t=>{t.stopPropagation(),T(e),m||(E&&D?w(e):C(e))},onKeyDown:t=>{if(m)return;t.key!==`Tab`&&t.stopPropagation();let n=Array.from(ee.current?.querySelectorAll(`[role="treeitem"]:not([aria-disabled="true"])`)||[]),r=n.indexOf(t.currentTarget);switch(t.key){case`Enter`:case` `:t.preventDefault(),C(e),D&&w(e);break;case`ArrowDown`:t.preventDefault(),r<n.length-1&&n[r+1].focus();break;case`ArrowUp`:t.preventDefault(),r>0&&n[r-1].focus();break;case`Home`:t.preventDefault(),n.length>0&&n[0].focus();break;case`End`:t.preventDefault(),n.length>0&&n[n.length-1].focus();break;case`ArrowRight`:B&&(I?(t.preventDefault(),r<n.length-1&&n[r+1].focus()):(t.preventDefault(),x(e)));break;case`ArrowLeft`:if(B&&I)t.preventDefault(),x(e);else{t.preventDefault();let e=t.currentTarget.parentElement?.closest(`[role="treeitem"]`);e&&e.focus()}}},onFocus:t=>{t.stopPropagation(),T(e)},tabIndex:b===e?0:-1,children:[(0,u.jsx)(i.BaseListItem,{id:j,className:o.default.labelContainer,active:L,disabled:m,icon:(0,u.jsxs)(`div`,{className:o.default.iconWrapper,children:[B&&(0,u.jsx)(`button`,{type:`button`,className:(0,l.default)(o.default.expandBtn,I&&o.default.expanded),onClick:t=>{t.stopPropagation(),!m&&B&&x(e)},disabled:m,"aria-label":I?`Collapse ${typeof t==`string`?t:``}`:`Expand ${typeof t==`string`?t:``}`,tabIndex:-1,children:(0,u.jsx)(r.Icon,{component:n.default,size:`sm`})}),!B&&(0,u.jsx)(`span`,{className:o.default.spacer}),D&&(0,u.jsx)(`input`,{id:A,type:`checkbox`,className:o.default.checkbox,checked:R&&!z,ref:e=>{e&&(e.indeterminate=z)},onChange:t=>{t.stopPropagation(),m||w(e)},disabled:m,onClick:e=>e.stopPropagation(),"aria-labelledby":j,tabIndex:-1}),a&&(0,u.jsx)(`span`,{className:o.default.icon,children:a})]}),children:t}),B&&V&&(0,u.jsx)(`div`,{className:(0,l.default)(o.default.children,H&&o.default.expanded),onTransitionEnd:U,style:{gridTemplateRows:H?`1fr`:`0fr`},children:(0,u.jsx)(`div`,{className:o.default.childrenInner,role:`group`,children:d})})]})};x.displayName=`TreeView`,S.displayName=`TreeView.Item`;var C=x;C.Item=S,exports.TreeView=C,exports.default=C,exports.TreeViewItem=S;
@@ -205,7 +205,7 @@ var T = ({ children: o, nodes: c, className: u, multiSelect: _ = !1, checkable:
205
205
  t.stopPropagation(), q(e.value), e.disabled || (_ && x ? Q(e.value) : Z(e.value));
206
206
  },
207
207
  onKeyDown: (t) => {
208
- t.stopPropagation(), ce(t, e, i);
208
+ t.key !== "Tab" && t.stopPropagation(), ce(t, e, i);
209
209
  },
210
210
  onFocus: (t) => {
211
211
  t.stopPropagation(), q(e.value);
@@ -333,7 +333,7 @@ var T = ({ children: o, nodes: c, className: u, multiSelect: _ = !1, checkable:
333
333
  },
334
334
  onKeyDown: (t) => {
335
335
  if (d) return;
336
- t.stopPropagation();
336
+ t.key !== "Tab" && t.stopPropagation();
337
337
  let n = Array.from(T.current?.querySelectorAll("[role=\"treeitem\"]:not([aria-disabled=\"true\"])") || []), r = n.indexOf(t.currentTarget);
338
338
  switch (t.key) {
339
339
  case "Enter":
@@ -1,2 +1,2 @@
1
1
  "use client";
2
- const e=require("../../../_virtual/_rolldown/runtime.cjs"),t=require("../../../i18n/useWimTranslation.cjs"),n=require("../../layout/Transition/Transition.cjs"),r=require("../../../icon/chevron-down.cjs"),i=require("../../media/Icon/Icon.cjs"),a=require("../FieldTemplate/FieldTemplate.cjs"),o=require("./phone-input.module.cjs");let s=require("react");s=e.__toESM(s,1);let c=require("classnames");c=e.__toESM(c,1);let l=require("react/jsx-runtime");var u=[{code:`US`,name:`United States`,dialCode:`1`,flag:`🇺🇸`},{code:`JP`,name:`Japan`,dialCode:`81`,flag:`🇯🇵`},{code:`GB`,name:`United Kingdom`,dialCode:`44`,flag:`🇬🇧`},{code:`AU`,name:`Australia`,dialCode:`61`,flag:`🇦🇺`},{code:`DE`,name:`Germany`,dialCode:`49`,flag:`🇩🇪`},{code:`FR`,name:`France`,dialCode:`33`,flag:`🇫🇷`},{code:`CN`,name:`China`,dialCode:`86`,flag:`🇨🇳`},{code:`KR`,name:`South Korea`,dialCode:`82`,flag:`🇰🇷`},{code:`IN`,name:`India`,dialCode:`91`,flag:`🇮🇳`},{code:`BR`,name:`Brazil`,dialCode:`55`,flag:`🇧🇷`}],d=(0,s.forwardRef)(({value:e=``,onChange:d,countryCode:f=`US`,onCountryChange:p,placeholder:m=`000-0000-0000`,disabled:h=!1,error:g,required:_=!1,label:v,layout:y=`vertical`,className:b,fullWidth:x=!1,...S},C)=>{let w=`wim-phone-input-${(0,s.useId)()}`,T=v?`${w}-label`:void 0,{t:E}=t.useWimTranslation(`form`),D=E(`phone.select_country`),O=`${w}-countries`,k=e=>`${w}-country-${e}`,A=g?`${w}-error`:void 0,[j,M]=(0,s.useState)(!1),[N,P]=(0,s.useState)(-1),F=(0,s.useRef)(null),I=(0,s.useRef)(null);(0,s.useEffect)(()=>{let e=e=>{F.current&&!F.current.contains(e.target)&&M(!1)};return j&&document.addEventListener(`mousedown`,e),()=>{document.removeEventListener(`mousedown`,e)}},[j]);let L=u.find(e=>e.code===f)??u[0],R=e=>{d?.(e.target.value)},z=u.length-1,B=e=>{let t=u.findIndex(e=>e.code===L.code);P(e??Math.max(t,0)),M(!0)},V=e=>{let t=u[e];t&&(p?.(t.code),M(!1))},H=e=>{if(!h)switch(e.key){case`ArrowDown`:case`ArrowUp`:if(e.preventDefault(),!j)B();else{let t=e.key===`ArrowDown`?1:-1;P(e=>(e+t+u.length)%u.length)}break;case`Home`:case`End`:e.preventDefault(),j?P(e.key===`Home`?0:z):B(e.key===`Home`?0:z);break;case`Enter`:case` `:e.preventDefault(),j?V(N):B();break;case`Escape`:j&&(e.preventDefault(),M(!1));break;case`Tab`:M(!1)}};return(0,s.useEffect)(()=>{j&&N>=0&&(I.current?.querySelectorAll(`[role="option"]`)?.[N])?.scrollIntoView?.({block:`nearest`})},[N,j]),(0,l.jsx)(a.FieldTemplate,{label:v,labelId:T,htmlFor:w,required:_,error:g,errorId:A,layout:y,className:b,children:(0,l.jsxs)(`div`,{ref:F,className:(0,c.default)(`wim-phone-input`,o.default.root,x&&o.default.fullWidth,h&&o.default.disabled,g&&o.default.danger),"data-testid":`phone-input-root`,...S,children:[(0,l.jsxs)(`div`,{className:o.default.countryWrapper,children:[(0,l.jsxs)(`button`,{type:`button`,role:`combobox`,className:o.default.countryTrigger,onClick:()=>{h||(j?M(!1):B())},onKeyDown:H,onKeyUp:e=>{e.key===` `&&e.preventDefault()},disabled:h,"aria-haspopup":`listbox`,"aria-expanded":j,"aria-controls":j?O:void 0,"aria-activedescendant":j&&N>=0?k(N):void 0,"aria-label":D,children:[(0,l.jsx)(`span`,{"aria-hidden":`true`,style:{fontSize:`1.2em`},children:L.flag}),(0,l.jsxs)(`span`,{children:[`+`,L.dialCode]}),(0,l.jsx)(i.Icon,{component:r.default,size:`sm`,className:(0,c.default)(o.default.chevron,j&&o.default.chevronOpen)})]}),(0,l.jsx)(n.Transition,{show:j,preset:`fade`,className:o.default.dropdown,children:(0,l.jsx)(`ul`,{ref:I,id:O,className:o.default.countryList,role:`listbox`,"aria-label":D,tabIndex:-1,onMouseDown:e=>e.preventDefault(),children:u.map((e,t)=>(0,l.jsxs)(`li`,{id:k(t),className:(0,c.default)(o.default.countryOption,t===N&&o.default.active,L.code===e.code&&o.default.selected),onMouseEnter:()=>P(t),onClick:()=>V(t),role:`option`,"aria-selected":L.code===e.code,children:[(0,l.jsx)(`span`,{"aria-hidden":`true`,children:e.flag}),(0,l.jsx)(`span`,{className:o.default.countryName,children:e.name}),(0,l.jsxs)(`span`,{className:o.default.countryCode,children:[`+`,e.dialCode]})]},e.code))})})]}),(0,l.jsx)(`div`,{className:o.default.divider,"aria-hidden":`true`}),(0,l.jsx)(`input`,{id:w,ref:C,type:`tel`,value:e,onChange:R,placeholder:m,disabled:h,className:o.default.number,"aria-invalid":!!g,"aria-describedby":A})]})})});d.displayName=`PhoneInput`,exports.PHONE_COUNTRIES=u,exports.PhoneInput=d;
2
+ const e=require("../../../_virtual/_rolldown/runtime.cjs"),t=require("../../../i18n/useWimTranslation.cjs"),n=require("../../layout/Transition/Transition.cjs"),r=require("../../../icon/chevron-down.cjs"),i=require("../../media/Icon/Icon.cjs"),a=require("../FieldTemplate/FieldTemplate.cjs"),o=require("./phone-input.module.cjs");let s=require("react");s=e.__toESM(s,1);let c=require("classnames");c=e.__toESM(c,1);let l=require("react/jsx-runtime");var u=[{code:`US`,name:`United States`,dialCode:`1`,flag:`🇺🇸`},{code:`JP`,name:`Japan`,dialCode:`81`,flag:`🇯🇵`},{code:`GB`,name:`United Kingdom`,dialCode:`44`,flag:`🇬🇧`},{code:`AU`,name:`Australia`,dialCode:`61`,flag:`🇦🇺`},{code:`DE`,name:`Germany`,dialCode:`49`,flag:`🇩🇪`},{code:`FR`,name:`France`,dialCode:`33`,flag:`🇫🇷`},{code:`CN`,name:`China`,dialCode:`86`,flag:`🇨🇳`},{code:`KR`,name:`South Korea`,dialCode:`82`,flag:`🇰🇷`},{code:`IN`,name:`India`,dialCode:`91`,flag:`🇮🇳`},{code:`BR`,name:`Brazil`,dialCode:`55`,flag:`🇧🇷`}],d=(0,s.forwardRef)(({value:e=``,onChange:d,countryCode:f=`US`,onCountryChange:p,placeholder:m=`000-0000-0000`,disabled:h=!1,error:g,required:_=!1,label:v,layout:y=`vertical`,className:b,fullWidth:x=!1,...S},C)=>{let w=`wim-phone-input-${(0,s.useId)()}`,T=v?`${w}-label`:void 0,{t:E}=t.useWimTranslation(`form`),D=E(`phone.select_country`),O=`${w}-countries`,k=e=>`${w}-country-${e}`,A=g?`${w}-error`:void 0,[j,M]=(0,s.useState)(!1),[N,P]=(0,s.useState)(-1),F=(0,s.useRef)(null),I=(0,s.useRef)(null),L=(0,s.useRef)({text:``,timer:null});(0,s.useEffect)(()=>{let e=e=>{F.current&&!F.current.contains(e.target)&&M(!1)};return j&&document.addEventListener(`mousedown`,e),()=>{document.removeEventListener(`mousedown`,e)}},[j]);let R=u.find(e=>e.code===f)??u[0],z=e=>{d?.(e.target.value)},B=u.length-1,V=e=>{let t=u.findIndex(e=>e.code===R.code);P(e??Math.max(t,0)),M(!0)},H=e=>{let t=u[e];t&&(p?.(t.code),M(!1))},U=(e,t)=>{let n=e.toLowerCase().replace(/^\+/,``);if(n===``)return-1;let r=/^[0-9]+$/.test(n),i=(e,t)=>r?e.dialCode.startsWith(t):e.name.toLowerCase().startsWith(t),a=!r&&n.length>1&&n.split(``).every(e=>e===n[0]),o=a?n[0]:n,s=a||n.length===1?t+1:t;for(let e=0;e<u.length;e++){let t=(Math.max(s,0)+e)%u.length;if(i(u[t],o))return t}return-1},W=e=>{let t=L.current;t.timer&&clearTimeout(t.timer),t.text+=e,t.timer=setTimeout(()=>{t.text=``,t.timer=null},500);let n=U(t.text,j?N:-1);n<0||(j?P(n):V(n))},G=e=>{if(!h)switch(e.key){case`ArrowDown`:case`ArrowUp`:if(e.preventDefault(),!j)V();else{let t=e.key===`ArrowDown`?1:-1;P(e=>(e+t+u.length)%u.length)}break;case`Home`:case`End`:e.preventDefault(),j?P(e.key===`Home`?0:B):V(e.key===`Home`?0:B);break;case`Enter`:case` `:e.preventDefault(),e.key===` `&&L.current.text!==``?W(` `):j?H(N):V();break;case`Escape`:j&&(e.preventDefault(),M(!1));break;case`Tab`:M(!1);break;default:e.key.length===1&&!e.ctrlKey&&!e.metaKey&&!e.altKey&&(e.preventDefault(),W(e.key))}};return(0,s.useEffect)(()=>{let e=L.current;return()=>{e.timer&&clearTimeout(e.timer)}},[]),(0,s.useEffect)(()=>{j&&N>=0&&(I.current?.querySelectorAll(`[role="option"]`)?.[N])?.scrollIntoView?.({block:`nearest`})},[N,j]),(0,l.jsx)(a.FieldTemplate,{label:v,labelId:T,htmlFor:w,required:_,error:g,errorId:A,layout:y,className:b,children:(0,l.jsxs)(`div`,{ref:F,className:(0,c.default)(`wim-phone-input`,o.default.root,x&&o.default.fullWidth,h&&o.default.disabled,g&&o.default.danger),"data-testid":`phone-input-root`,...S,children:[(0,l.jsxs)(`div`,{className:o.default.countryWrapper,children:[(0,l.jsxs)(`button`,{type:`button`,role:`combobox`,className:o.default.countryTrigger,onClick:()=>{h||(j?M(!1):V())},onKeyDown:G,onKeyUp:e=>{e.key===` `&&e.preventDefault()},disabled:h,"aria-haspopup":`listbox`,"aria-expanded":j,"aria-controls":j?O:void 0,"aria-activedescendant":j&&N>=0?k(N):void 0,"aria-label":D,children:[(0,l.jsx)(`span`,{"aria-hidden":`true`,style:{fontSize:`1.2em`},children:R.flag}),(0,l.jsxs)(`span`,{children:[`+`,R.dialCode]}),(0,l.jsx)(i.Icon,{component:r.default,size:`sm`,className:(0,c.default)(o.default.chevron,j&&o.default.chevronOpen)})]}),(0,l.jsx)(n.Transition,{show:j,preset:`fade`,className:o.default.dropdown,children:(0,l.jsx)(`ul`,{ref:I,id:O,className:o.default.countryList,role:`listbox`,"aria-label":D,tabIndex:-1,onMouseDown:e=>e.preventDefault(),children:u.map((e,t)=>(0,l.jsxs)(`li`,{id:k(t),className:(0,c.default)(o.default.countryOption,t===N&&o.default.active,R.code===e.code&&o.default.selected),onMouseEnter:()=>P(t),onClick:()=>H(t),role:`option`,"aria-selected":R.code===e.code,children:[(0,l.jsx)(`span`,{"aria-hidden":`true`,children:e.flag}),(0,l.jsx)(`span`,{className:o.default.countryName,children:e.name}),(0,l.jsxs)(`span`,{className:o.default.countryCode,children:[`+`,e.dialCode]})]},e.code))})})]}),(0,l.jsx)(`div`,{className:o.default.divider,"aria-hidden":`true`}),(0,l.jsx)(`input`,{id:w,ref:C,type:`tel`,value:e,onChange:z,placeholder:m,disabled:h,className:o.default.number,"aria-invalid":!!g,"aria-describedby":A})]})})});d.displayName=`PhoneInput`,exports.PHONE_COUNTRIES=u,exports.PhoneInput=d;
@@ -71,7 +71,10 @@ var m = [
71
71
  flag: "🇧🇷"
72
72
  }
73
73
  ], h = o(({ value: o = "", onChange: h, countryCode: g = "US", onCountryChange: _, placeholder: v = "000-0000-0000", disabled: y = !1, error: b, required: x = !1, label: S, layout: C = "vertical", className: w, fullWidth: T = !1, ...E }, D) => {
74
- let O = `wim-phone-input-${c()}`, k = S ? `${O}-label` : void 0, { t: A } = e("form"), j = A("phone.select_country"), M = `${O}-countries`, N = (e) => `${O}-country-${e}`, P = b ? `${O}-error` : void 0, [F, I] = u(!1), [L, R] = u(-1), z = l(null), B = l(null);
74
+ let O = `wim-phone-input-${c()}`, k = S ? `${O}-label` : void 0, { t: A } = e("form"), j = A("phone.select_country"), M = `${O}-countries`, N = (e) => `${O}-country-${e}`, P = b ? `${O}-error` : void 0, [F, I] = u(!1), [L, R] = u(-1), z = l(null), B = l(null), V = l({
75
+ text: "",
76
+ timer: null
77
+ });
75
78
  s(() => {
76
79
  let e = (e) => {
77
80
  z.current && !z.current.contains(e.target) && I(!1);
@@ -80,19 +83,35 @@ var m = [
80
83
  document.removeEventListener("mousedown", e);
81
84
  };
82
85
  }, [F]);
83
- let V = m.find((e) => e.code === g) ?? m[0], H = (e) => {
86
+ let H = m.find((e) => e.code === g) ?? m[0], U = (e) => {
84
87
  h?.(e.target.value);
85
- }, U = m.length - 1, W = (e) => {
86
- let t = m.findIndex((e) => e.code === V.code);
88
+ }, W = m.length - 1, G = (e) => {
89
+ let t = m.findIndex((e) => e.code === H.code);
87
90
  R(e ?? Math.max(t, 0)), I(!0);
88
- }, G = (e) => {
91
+ }, K = (e) => {
89
92
  let t = m[e];
90
93
  t && (_?.(t.code), I(!1));
91
- }, K = (e) => {
94
+ }, q = (e, t) => {
95
+ let n = e.toLowerCase().replace(/^\+/, "");
96
+ if (n === "") return -1;
97
+ let r = /^[0-9]+$/.test(n), i = (e, t) => r ? e.dialCode.startsWith(t) : e.name.toLowerCase().startsWith(t), a = !r && n.length > 1 && n.split("").every((e) => e === n[0]), o = a ? n[0] : n, s = a || n.length === 1 ? t + 1 : t;
98
+ for (let e = 0; e < m.length; e++) {
99
+ let t = (Math.max(s, 0) + e) % m.length;
100
+ if (i(m[t], o)) return t;
101
+ }
102
+ return -1;
103
+ }, J = (e) => {
104
+ let t = V.current;
105
+ t.timer && clearTimeout(t.timer), t.text += e, t.timer = setTimeout(() => {
106
+ t.text = "", t.timer = null;
107
+ }, 500);
108
+ let n = q(t.text, F ? L : -1);
109
+ n < 0 || (F ? R(n) : G(n));
110
+ }, Y = (e) => {
92
111
  if (!y) switch (e.key) {
93
112
  case "ArrowDown":
94
113
  case "ArrowUp":
95
- if (e.preventDefault(), !F) W();
114
+ if (e.preventDefault(), !F) G();
96
115
  else {
97
116
  let t = e.key === "ArrowDown" ? 1 : -1;
98
117
  R((e) => (e + t + m.length) % m.length);
@@ -100,19 +119,27 @@ var m = [
100
119
  break;
101
120
  case "Home":
102
121
  case "End":
103
- e.preventDefault(), F ? R(e.key === "Home" ? 0 : U) : W(e.key === "Home" ? 0 : U);
122
+ e.preventDefault(), F ? R(e.key === "Home" ? 0 : W) : G(e.key === "Home" ? 0 : W);
104
123
  break;
105
124
  case "Enter":
106
125
  case " ":
107
- e.preventDefault(), F ? G(L) : W();
126
+ e.preventDefault(), e.key === " " && V.current.text !== "" ? J(" ") : F ? K(L) : G();
108
127
  break;
109
128
  case "Escape":
110
129
  F && (e.preventDefault(), I(!1));
111
130
  break;
112
- case "Tab": I(!1);
131
+ case "Tab":
132
+ I(!1);
133
+ break;
134
+ default: e.key.length === 1 && !e.ctrlKey && !e.metaKey && !e.altKey && (e.preventDefault(), J(e.key));
113
135
  }
114
136
  };
115
137
  return s(() => {
138
+ let e = V.current;
139
+ return () => {
140
+ e.timer && clearTimeout(e.timer);
141
+ };
142
+ }, []), s(() => {
116
143
  F && L >= 0 && (B.current?.querySelectorAll("[role=\"option\"]")?.[L])?.scrollIntoView?.({ block: "nearest" });
117
144
  }, [L, F]), /* @__PURE__ */ f(i, {
118
145
  label: S,
@@ -136,9 +163,9 @@ var m = [
136
163
  role: "combobox",
137
164
  className: a.countryTrigger,
138
165
  onClick: () => {
139
- y || (F ? I(!1) : W());
166
+ y || (F ? I(!1) : G());
140
167
  },
141
- onKeyDown: K,
168
+ onKeyDown: Y,
142
169
  onKeyUp: (e) => {
143
170
  e.key === " " && e.preventDefault();
144
171
  },
@@ -152,9 +179,9 @@ var m = [
152
179
  /* @__PURE__ */ f("span", {
153
180
  "aria-hidden": "true",
154
181
  style: { fontSize: "1.2em" },
155
- children: V.flag
182
+ children: H.flag
156
183
  }),
157
- /* @__PURE__ */ p("span", { children: ["+", V.dialCode] }),
184
+ /* @__PURE__ */ p("span", { children: ["+", H.dialCode] }),
158
185
  /* @__PURE__ */ f(r, {
159
186
  component: n,
160
187
  size: "sm",
@@ -175,11 +202,11 @@ var m = [
175
202
  onMouseDown: (e) => e.preventDefault(),
176
203
  children: m.map((e, t) => /* @__PURE__ */ p("li", {
177
204
  id: N(t),
178
- className: d(a.countryOption, t === L && a.active, V.code === e.code && a.selected),
205
+ className: d(a.countryOption, t === L && a.active, H.code === e.code && a.selected),
179
206
  onMouseEnter: () => R(t),
180
- onClick: () => G(t),
207
+ onClick: () => K(t),
181
208
  role: "option",
182
- "aria-selected": V.code === e.code,
209
+ "aria-selected": H.code === e.code,
183
210
  children: [
184
211
  /* @__PURE__ */ f("span", {
185
212
  "aria-hidden": "true",
@@ -207,7 +234,7 @@ var m = [
207
234
  ref: D,
208
235
  type: "tel",
209
236
  value: o,
210
- onChange: H,
237
+ onChange: U,
211
238
  placeholder: v,
212
239
  disabled: y,
213
240
  className: a.number,
@@ -1,2 +1,2 @@
1
1
  "use client";
2
- let e=require("react");function t({options:t,value:n,onChange:r,defaultValue:i,searchable:a,grouped:o,disabled:s,filterOption:c}){let[l,u]=(0,e.useState)(!1),[d,f]=(0,e.useState)(i||``),[p,m]=(0,e.useState)(``),[h,g]=(0,e.useState)(-1),[_,v]=(0,e.useState)(!1),y=(0,e.useRef)(null),b=(0,e.useRef)(null),x=(0,e.useRef)(null),S=(0,e.useRef)([]),C=n!==void 0,w=C?n:d,T=(0,e.useMemo)(()=>o&&t.length>0&&`options`in t[0]?t.flatMap(e=>e.options):t,[t,o]),E=(0,e.useMemo)(()=>{if(!p)return T;let e=c||((e,t)=>{if(e.type===`separator`)return!1;let n=typeof e.label==`string`?e.label:``,r=typeof e.value==`string`?e.value:``,i=t.toLowerCase();return n.toLowerCase().includes(i)||r.toLowerCase().includes(i)});return T.filter(t=>e(t,p))},[T,p,c]),D=T.find(e=>e.value===w);(0,e.useEffect)(()=>{let e=e=>{y.current&&!y.current.contains(e.target)&&(u(!1),m(``),g(-1))};return document.addEventListener(`mousedown`,e),()=>document.removeEventListener(`mousedown`,e)},[]),(0,e.useEffect)(()=>{l&&a&&x.current&&x.current.focus()},[l,a]),(0,e.useEffect)(()=>{h>=0&&S.current[h]&&S.current[h]?.scrollIntoView({block:`nearest`,behavior:`smooth`})},[h]);let O=()=>{s||(u(!l),l||(m(``),g(-1)))},k=e=>{e.type===`separator`||e.disabled||(!C&&e.value!==void 0&&f(e.value),r&&e.value!==void 0&&r(e.value),u(!1),m(``),g(-1),b.current?.focus())};return{isOpen:l,searchValue:p,setSearchValue:m,focusedIndex:h,setFocusedIndex:g,isKeyboardNavigating:_,setIsKeyboardNavigating:v,containerRef:y,triggerRef:b,searchInputRef:x,listItemsRef:S,currentValue:w,flatOptions:T,filteredOptions:E,selectedOption:D,focusedOption:h>=0?E[h]:null,handleToggle:O,handleSelect:k,handleClear:()=>{s||(C||f(``),r?.(``))},handleKeyDown:e=>{if(v(!0),!s)switch(e.key){case`Enter`:case` `:l?h>=0&&E[h]&&k(E[h]):u(!0),e.preventDefault();break;case`Escape`:u(!1),m(``),g(-1),b.current?.focus(),e.preventDefault();break;case`ArrowDown`:e.preventDefault(),l?g(e=>{let t=e+1;for(t>=E.length&&(t=0);t<E.length&&(E[t]?.disabled||E[t]?.type===`separator`);)t++;if(t>=E.length)for(t=0;t<e&&(E[t]?.disabled||E[t]?.type===`separator`);)t++;return t<E.length?t:e}):u(!0);break;case`ArrowUp`:e.preventDefault(),l&&g(e=>{let t=e-1;for(t<0&&(t=E.length-1);t>=0&&(E[t]?.disabled||E[t]?.type===`separator`);)t--;if(t<0)for(t=E.length-1;t>e&&(E[t]?.disabled||E[t]?.type===`separator`);)t--;return t>=0?t:e});break;case`Home`:l&&(e.preventDefault(),g(0));break;case`End`:l&&(e.preventDefault(),g(E.length-1))}}}}exports.useSelect=t;
2
+ let e=require("react");function t({options:t,value:n,onChange:r,defaultValue:i,searchable:a,grouped:o,disabled:s,filterOption:c}){let[l,u]=(0,e.useState)(!1),[d,f]=(0,e.useState)(i||``),[p,m]=(0,e.useState)(``),[h,g]=(0,e.useState)(-1),[_,v]=(0,e.useState)(!1),y=(0,e.useRef)(null),b=(0,e.useRef)(null),x=(0,e.useRef)(null),S=(0,e.useRef)([]),C=n!==void 0,w=C?n:d,T=(0,e.useMemo)(()=>o&&t.length>0&&`options`in t[0]?t.flatMap(e=>e.options):t,[t,o]),E=(0,e.useMemo)(()=>{if(!p)return T;let e=c||((e,t)=>{if(e.type===`separator`)return!1;let n=typeof e.label==`string`?e.label:``,r=typeof e.value==`string`?e.value:``,i=t.toLowerCase();return n.toLowerCase().includes(i)||r.toLowerCase().includes(i)});return T.filter(t=>e(t,p))},[T,p,c]),D=T.find(e=>e.value===w);(0,e.useEffect)(()=>{let e=e=>{y.current&&!y.current.contains(e.target)&&(u(!1),m(``),g(-1))};return document.addEventListener(`mousedown`,e),()=>document.removeEventListener(`mousedown`,e)},[]),(0,e.useEffect)(()=>{l&&a&&x.current&&x.current.focus()},[l,a]),(0,e.useEffect)(()=>{h>=0&&S.current[h]&&S.current[h]?.scrollIntoView({block:`nearest`,behavior:`smooth`})},[h]);let O=()=>{s||(u(!l),l||(m(``),g(-1)))},k=e=>{e.type===`separator`||e.disabled||(!C&&e.value!==void 0&&f(e.value),r&&e.value!==void 0&&r(e.value),u(!1),m(``),g(-1),b.current?.focus())};return{isOpen:l,searchValue:p,setSearchValue:m,focusedIndex:h,setFocusedIndex:g,isKeyboardNavigating:_,setIsKeyboardNavigating:v,containerRef:y,triggerRef:b,searchInputRef:x,listItemsRef:S,currentValue:w,flatOptions:T,filteredOptions:E,selectedOption:D,focusedOption:h>=0?E[h]:null,handleToggle:O,handleSelect:k,handleClear:()=>{s||(C||f(``),r?.(``))},handleKeyDown:e=>{if(v(!0),!s)switch(e.key){case`Enter`:case` `:l?h>=0&&E[h]&&k(E[h]):u(!0),e.preventDefault();break;case`Escape`:u(!1),m(``),g(-1),b.current?.focus(),e.preventDefault();break;case`Tab`:l&&(u(!1),m(``),g(-1));break;case`ArrowDown`:e.preventDefault(),l?g(e=>{let t=e+1;for(t>=E.length&&(t=0);t<E.length&&(E[t]?.disabled||E[t]?.type===`separator`);)t++;if(t>=E.length)for(t=0;t<e&&(E[t]?.disabled||E[t]?.type===`separator`);)t++;return t<E.length?t:e}):u(!0);break;case`ArrowUp`:e.preventDefault(),l&&g(e=>{let t=e-1;for(t<0&&(t=E.length-1);t>=0&&(E[t]?.disabled||E[t]?.type===`separator`);)t--;if(t<0)for(t=E.length-1;t>e&&(E[t]?.disabled||E[t]?.type===`separator`);)t--;return t>=0?t:e});break;case`Home`:l&&(e.preventDefault(),g(0));break;case`End`:l&&(e.preventDefault(),g(E.length-1))}}}}exports.useSelect=t;
@@ -64,6 +64,9 @@ function i({ options: i, value: a, onChange: o, defaultValue: s, searchable: c,
64
64
  case "Escape":
65
65
  p(!1), _(""), y(-1), C.current?.focus(), e.preventDefault();
66
66
  break;
67
+ case "Tab":
68
+ f && (p(!1), _(""), y(-1));
69
+ break;
67
70
  case "ArrowDown":
68
71
  e.preventDefault(), f ? y((e) => {
69
72
  let t = e + 1;
@@ -1,2 +1,2 @@
1
1
  "use client";
2
- const e=require("../../../_virtual/_rolldown/runtime.cjs"),t=require("./focus-trap.module.cjs");let n=require("react");n=e.__toESM(n,1);let r=require("classnames");r=e.__toESM(r,1);let i=require("react/jsx-runtime");var a=({children:e,active:a=!0,initialFocus:o=!0,className:s})=>{let c=(0,n.useRef)(null),l=(0,n.useRef)(null);return(0,n.useEffect)(()=>{if(!a)return;l.current=document.activeElement;let e=c.current;if(!e)return;let t=()=>Array.from(e.querySelectorAll(`button, [href], input, select, textarea, [tabindex]:not([tabindex="-1"])`)).filter(e=>{let t=window.getComputedStyle(e);return t.display!==`none`&&t.visibility!==`hidden`&&!e.disabled});if(o){let e=t();e.length>0&&e[0].focus()}let n=e=>{if(e.key!==`Tab`)return;let n=t();if(n.length===0){e.preventDefault();return}let r=n[0],i=n[n.length-1];e.shiftKey?document.activeElement===r&&(e.preventDefault(),i.focus()):document.activeElement===i&&(e.preventDefault(),r.focus())};return document.addEventListener(`keydown`,n),()=>{document.removeEventListener(`keydown`,n),l.current&&l.current.focus()}},[a,o]),(0,i.jsx)(`div`,{ref:c,className:(0,r.default)(`wim-focus-trap`,t.default.root,s),children:e})};exports.FocusTrap=a;
2
+ const e=require("../../../_virtual/_rolldown/runtime.cjs"),t=require("./focus-trap.module.cjs");let n=require("react");n=e.__toESM(n,1);let r=require("classnames");r=e.__toESM(r,1);let i=require("react/jsx-runtime");var a=({children:e,active:a=!0,initialFocus:o=!0,className:s})=>{let c=(0,n.useRef)(null),l=(0,n.useRef)(null);return(0,n.useEffect)(()=>{if(!a)return;l.current=document.activeElement;let e=c.current;if(!e)return;let t=()=>Array.from(e.querySelectorAll(`button, [href], input, select, textarea, [tabindex]:not([tabindex="-1"])`)).filter(e=>{let t=window.getComputedStyle(e);return e.tabIndex>=0&&t.display!==`none`&&t.visibility!==`hidden`&&!e.disabled});if(o){let e=t();e.length>0&&e[0].focus()}let n=n=>{if(n.key!==`Tab`)return;let r=t();if(r.length===0){n.preventDefault();return}let i=r[0],a=r[r.length-1],o=document.activeElement;if(!o||!e.contains(o))return;let s=r.indexOf(o);n.shiftKey?(s>=0?s>0:r.some(e=>e.compareDocumentPosition(o)&Node.DOCUMENT_POSITION_FOLLOWING))||(n.preventDefault(),a.focus()):(s>=0?s<r.length-1:r.some(e=>o.compareDocumentPosition(e)&Node.DOCUMENT_POSITION_FOLLOWING))||(n.preventDefault(),i.focus())};return document.addEventListener(`keydown`,n),()=>{document.removeEventListener(`keydown`,n),l.current&&l.current.focus()}},[a,o]),(0,i.jsx)(`div`,{ref:c,className:(0,r.default)(`wim-focus-trap`,t.default.root,s),children:e})};exports.FocusTrap=a;
@@ -13,21 +13,23 @@ var a = ({ children: a, active: o = !0, initialFocus: s = !0, className: c }) =>
13
13
  if (!e) return;
14
14
  let t = () => Array.from(e.querySelectorAll("button, [href], input, select, textarea, [tabindex]:not([tabindex=\"-1\"])")).filter((e) => {
15
15
  let t = window.getComputedStyle(e);
16
- return t.display !== "none" && t.visibility !== "hidden" && !e.disabled;
16
+ return e.tabIndex >= 0 && t.display !== "none" && t.visibility !== "hidden" && !e.disabled;
17
17
  });
18
18
  if (s) {
19
19
  let e = t();
20
20
  e.length > 0 && e[0].focus();
21
21
  }
22
- let n = (e) => {
23
- if (e.key !== "Tab") return;
24
- let n = t();
25
- if (n.length === 0) {
26
- e.preventDefault();
22
+ let n = (n) => {
23
+ if (n.key !== "Tab") return;
24
+ let r = t();
25
+ if (r.length === 0) {
26
+ n.preventDefault();
27
27
  return;
28
28
  }
29
- let r = n[0], i = n[n.length - 1];
30
- e.shiftKey ? document.activeElement === r && (e.preventDefault(), i.focus()) : document.activeElement === i && (e.preventDefault(), r.focus());
29
+ let i = r[0], a = r[r.length - 1], o = document.activeElement;
30
+ if (!o || !e.contains(o)) return;
31
+ let s = r.indexOf(o);
32
+ n.shiftKey ? (s >= 0 ? s > 0 : r.some((e) => e.compareDocumentPosition(o) & Node.DOCUMENT_POSITION_FOLLOWING)) || (n.preventDefault(), a.focus()) : (s >= 0 ? s < r.length - 1 : r.some((e) => o.compareDocumentPosition(e) & Node.DOCUMENT_POSITION_FOLLOWING)) || (n.preventDefault(), i.focus());
31
33
  };
32
34
  return document.addEventListener("keydown", n), () => {
33
35
  document.removeEventListener("keydown", n), u.current && u.current.focus();
@@ -4,7 +4,7 @@
4
4
 
5
5
  ## What this is
6
6
 
7
- **wimui** v0.49.0 — a React 19 component library: 228 documented components across 10 categories, with design tokens, dark mode, i18n (en/ja/pt-BR) and WAI-ARIA compliant a11y. Peer deps: react ^19, react-dom ^19 (plus optional peers for specific components — see package.json).
7
+ **wimui** v0.50.0 — a React 19 component library: 228 documented components across 10 categories, with design tokens, dark mode, i18n (en/ja/pt-BR) and WAI-ARIA compliant a11y. Peer deps: react ^19, react-dom ^19 (plus optional peers for specific components — see package.json).
8
8
 
9
9
  ## Install & required setup
10
10
 
package/dist/llms.txt CHANGED
@@ -4,7 +4,7 @@
4
4
 
5
5
  ## What this is
6
6
 
7
- **wimui** v0.49.0 — a React 19 component library: 228 documented components across 10 categories, with design tokens, dark mode, i18n (en/ja/pt-BR) and WAI-ARIA compliant a11y. Peer deps: react ^19, react-dom ^19 (plus optional peers for specific components — see package.json).
7
+ **wimui** v0.50.0 — a React 19 component library: 228 documented components across 10 categories, with design tokens, dark mode, i18n (en/ja/pt-BR) and WAI-ARIA compliant a11y. Peer deps: react ^19, react-dom ^19 (plus optional peers for specific components — see package.json).
8
8
 
9
9
  ## Install & required setup
10
10