wimui 0.50.1 → 0.50.3

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("../../layout/Transition/Transition.cjs"),n=require("../../../icon/check.cjs"),r=require("../../../icon/chevron-down.cjs"),i=require("../../media/Icon/Icon.cjs"),a=require("./model-selector.module.cjs");let o=require("react");o=e.__toESM(o,1);let s=require("classnames");s=e.__toESM(s,1);let c=require("react/jsx-runtime");var l=e=>e>=1e6?`${(e/1e6).toFixed(e%1e6==0?0:1)}M`:e>=1e3?`${(e/1e3).toFixed(e%1e3==0?0:1)}K`:String(e),u=(e,t=`$`)=>`${t}${e}`,d=o.default.forwardRef(({models:e,value:d,defaultValue:f,onChange:p,size:m=`md`,disabled:h=!1,fullWidth:g=!1,showPricing:_=!0,showContext:v=!0,labels:y,className:b,...x},S)=>{let{placeholder:C=`Select a model`,contextLabel:w=`Context`,inputLabel:T=`In`,outputLabel:E=`Out`,perTokensLabel:D=`/1M`,triggerAriaLabel:O=`Select a model`}=y??{},k=d!==void 0,[A,j]=(0,o.useState)(f),M=k?d:A,N=e.find(e=>e.id===M),[P,F]=(0,o.useState)(!1),[I,L]=(0,o.useState)(-1),R=(0,o.useRef)(null),z=(0,o.useRef)(null),B=(0,o.useId)(),V=`${B}-listbox`,H=(0,o.useCallback)(e=>{R.current=e,typeof S==`function`?S(e):S&&(S.current=e)},[S]);(0,o.useEffect)(()=>{if(!P)return;let e=e=>{R.current&&!R.current.contains(e.target)&&F(!1)};return document.addEventListener(`mousedown`,e),()=>document.removeEventListener(`mousedown`,e)},[P]);let U=e=>{e.disabled||(k||j(e.id),p?.(e.id,e),F(!1))},W=(t,n)=>{let r=t;for(let t=0;t<e.length;t++){if(!e[r]?.disabled)return r;r=(r+n+e.length)%e.length}return-1},G=t=>{let n=e.findIndex(e=>e.id===M);L(t??(n>=0?n:W(0,1))),F(!0)},K=t=>{L(n=>{let r=n;for(let n=0;n<e.length&&(r=(r+t+e.length)%e.length,e[r]?.disabled);n++);return r})},q=t=>{if(!h)switch(t.key){case`ArrowDown`:case`ArrowUp`:t.preventDefault(),P?K(t.key===`ArrowDown`?1:-1):G();break;case`Home`:case`End`:t.preventDefault(),t.key===`Home`?P?L(W(0,1)):G(W(0,1)):P?L(W(e.length-1,-1)):G(W(e.length-1,-1));break;case`Enter`:case` `:if(t.preventDefault(),!P)G();else{let t=e[I];t&&U(t)}break;case`Escape`:P&&(t.preventDefault(),F(!1));break;case`Tab`:F(!1)}};(0,o.useEffect)(()=>{P&&I>=0&&(z.current?.querySelectorAll(`[role="option"]`)?.[I])?.scrollIntoView({block:`nearest`})},[I,P]);let J=e=>{let t=[];if(v&&e.contextLength&&t.push((0,c.jsxs)(`span`,{className:a.default.meta,children:[w,` `,l(e.contextLength)]},`ctx`)),_&&e.pricing){let{input:n,output:r,currency:i}=e.pricing;n!==void 0&&t.push((0,c.jsxs)(`span`,{className:a.default.meta,children:[T,` `,u(n,i),D]},`in`)),r!==void 0&&t.push((0,c.jsxs)(`span`,{className:a.default.meta,children:[E,` `,u(r,i),D]},`out`))}return t.length===0?null:(0,c.jsx)(`span`,{className:a.default.metaRow,children:t})};return(0,c.jsxs)(`div`,{ref:H,className:(0,s.default)(`wim-model-selector`,a.default.root,a.default[m],g&&a.default.fullWidth,h&&a.default.disabled,b),...x,children:[(0,c.jsxs)(`button`,{type:`button`,role:`combobox`,className:a.default.trigger,"aria-haspopup":`listbox`,"aria-expanded":P,"aria-controls":P?V:void 0,"aria-activedescendant":P&&I>=0?`${B}-opt-${I}`:void 0,"aria-label":O,disabled:h,onClick:()=>{h||(P?F(!1):G())},onKeyDown:q,onKeyUp:e=>{e.key===` `&&e.preventDefault()},children:[(0,c.jsx)(`span`,{className:a.default.triggerLabel,children:N?(0,c.jsxs)(c.Fragment,{children:[(0,c.jsx)(`span`,{className:a.default.triggerName,children:N.name}),N.badge&&(0,c.jsx)(`span`,{className:a.default.badge,children:N.badge})]}):(0,c.jsx)(`span`,{className:a.default.placeholder,children:C})}),(0,c.jsx)(i.Icon,{component:r.default,size:`sm`,className:(0,s.default)(a.default.chevron,P&&a.default.chevronOpen)})]}),(0,c.jsx)(t.Transition,{show:P,preset:`scale`,unmount:!0,className:a.default.dropdownWrapper,children:(0,c.jsx)(`ul`,{ref:z,id:V,role:`listbox`,"aria-label":O,tabIndex:-1,className:a.default.dropdown,onMouseDown:e=>e.preventDefault(),children:e.map((e,t)=>{let r=e.id===M;return(0,c.jsxs)(`li`,{id:`${B}-opt-${t}`,role:`option`,"aria-selected":r,"aria-disabled":e.disabled||void 0,className:(0,s.default)(a.default.option,t===I&&a.default.active,e.disabled&&a.default.optionDisabled),onMouseEnter:()=>L(t),onClick:()=>U(e),children:[(0,c.jsx)(`span`,{className:a.default.check,"aria-hidden":`true`,children:r&&(0,c.jsx)(i.Icon,{component:n.default,size:`sm`})}),(0,c.jsxs)(`span`,{className:a.default.optionBody,children:[(0,c.jsxs)(`span`,{className:a.default.optionHeader,children:[(0,c.jsx)(`span`,{className:a.default.optionName,children:e.name}),e.badge&&(0,c.jsx)(`span`,{className:a.default.badge,children:e.badge})]}),e.description&&(0,c.jsx)(`span`,{className:a.default.description,children:e.description}),J(e)]})]},e.id)})})})]})});d.displayName=`ModelSelector`,exports.ModelSelector=d;
2
+ const e=require("../../../_virtual/_rolldown/runtime.cjs"),t=require("../../layout/Transition/Transition.cjs"),n=require("../../../icon/check.cjs"),r=require("../../../icon/chevron-down.cjs"),i=require("../../media/Icon/Icon.cjs"),a=require("./model-selector.module.cjs");let o=require("react");o=e.__toESM(o,1);let s=require("classnames");s=e.__toESM(s,1);let c=require("react/jsx-runtime");var l=e=>e>=1e6?`${(e/1e6).toFixed(e%1e6==0?0:1)}M`:e>=1e3?`${(e/1e3).toFixed(e%1e3==0?0:1)}K`:String(e),u=(e,t=`$`)=>`${t}${e}`,d=o.default.forwardRef(({models:e,value:d,defaultValue:f,onChange:p,size:m=`md`,disabled:h=!1,fullWidth:g=!1,showPricing:_=!0,showContext:v=!0,labels:y,className:b,...x},S)=>{let{placeholder:C=`Select a model`,contextLabel:w=`Context`,inputLabel:T=`In`,outputLabel:E=`Out`,perTokensLabel:D=`/1M`,triggerAriaLabel:O=`Select a model`}=y??{},k=d!==void 0,[A,j]=(0,o.useState)(f),M=k?d:A,N=e.find(e=>e.id===M),[P,F]=(0,o.useState)(!1),[I,L]=(0,o.useState)(-1),R=(0,o.useRef)(null),z=(0,o.useRef)(null),B=(0,o.useId)(),V=`${B}-listbox`,H=(0,o.useCallback)(e=>{R.current=e,typeof S==`function`?S(e):S&&(S.current=e)},[S]);(0,o.useEffect)(()=>{if(!P)return;let e=e=>{R.current&&!R.current.contains(e.target)&&F(!1)};return document.addEventListener(`mousedown`,e),()=>document.removeEventListener(`mousedown`,e)},[P]);let U=e=>{e.disabled||(k||j(e.id),p?.(e.id,e),F(!1))},W=(t,n)=>{let r=t;for(let t=0;t<e.length;t++){if(!e[r]?.disabled)return r;r=(r+n+e.length)%e.length}return-1},G=t=>{let n=e.findIndex(e=>e.id===M);L(t??(n>=0?n:W(0,1))),F(!0)},K=t=>{L(n=>{let r=n;for(let n=0;n<e.length&&(r=(r+t+e.length)%e.length,e[r]?.disabled);n++);return r})},q=t=>{if(!h)switch(t.key){case`ArrowDown`:case`ArrowUp`:t.preventDefault(),P?K(t.key===`ArrowDown`?1:-1):G();break;case`Home`:case`End`:t.preventDefault(),t.key===`Home`?P?L(W(0,1)):G(W(0,1)):P?L(W(e.length-1,-1)):G(W(e.length-1,-1));break;case`Enter`:case` `:if(t.preventDefault(),!P)G();else{let t=e[I];t&&U(t)}break;case`Escape`:P&&(t.preventDefault(),F(!1));break;case`Tab`:F(!1)}};(0,o.useEffect)(()=>{P&&I>=0&&(z.current?.querySelectorAll(`[role="option"]`)?.[I])?.scrollIntoView({block:`nearest`})},[I,P]);let J=e=>{let t=[];if(v&&e.contextLength&&t.push((0,c.jsxs)(`span`,{className:a.default.meta,children:[w,` `,l(e.contextLength)]},`ctx`)),_&&e.pricing){let{input:n,output:r,currency:i}=e.pricing;n!==void 0&&t.push((0,c.jsxs)(`span`,{className:a.default.meta,children:[T,` `,u(n,i),D]},`in`)),r!==void 0&&t.push((0,c.jsxs)(`span`,{className:a.default.meta,children:[E,` `,u(r,i),D]},`out`))}if(t.length===0)return null;let n=t.flatMap((e,t)=>t===0?[e]:[` `,e]);return(0,c.jsx)(`span`,{className:a.default.metaRow,children:n})};return(0,c.jsxs)(`div`,{ref:H,className:(0,s.default)(`wim-model-selector`,a.default.root,a.default[m],g&&a.default.fullWidth,h&&a.default.disabled,b),...x,children:[(0,c.jsxs)(`button`,{type:`button`,role:`combobox`,className:a.default.trigger,"aria-haspopup":`listbox`,"aria-expanded":P,"aria-controls":P?V:void 0,"aria-activedescendant":P&&I>=0?`${B}-opt-${I}`:void 0,"aria-label":O,disabled:h,onClick:()=>{h||(P?F(!1):G())},onKeyDown:q,onKeyUp:e=>{e.key===` `&&e.preventDefault()},children:[(0,c.jsx)(`span`,{className:a.default.triggerLabel,children:N?(0,c.jsxs)(c.Fragment,{children:[(0,c.jsx)(`span`,{className:a.default.triggerName,children:N.name}),` `,N.badge&&(0,c.jsx)(`span`,{className:a.default.badge,children:N.badge})]}):(0,c.jsx)(`span`,{className:a.default.placeholder,children:C})}),(0,c.jsx)(i.Icon,{component:r.default,size:`sm`,className:(0,s.default)(a.default.chevron,P&&a.default.chevronOpen)})]}),(0,c.jsx)(t.Transition,{show:P,preset:`scale`,unmount:!0,className:a.default.dropdownWrapper,children:(0,c.jsx)(`ul`,{ref:z,id:V,role:`listbox`,"aria-label":O,tabIndex:-1,className:a.default.dropdown,onMouseDown:e=>e.preventDefault(),children:e.map((e,t)=>{let r=e.id===M;return(0,c.jsxs)(`li`,{id:`${B}-opt-${t}`,role:`option`,"aria-selected":r,"aria-disabled":e.disabled||void 0,className:(0,s.default)(a.default.option,t===I&&a.default.active,e.disabled&&a.default.optionDisabled),onMouseEnter:()=>L(t),onClick:()=>U(e),children:[(0,c.jsx)(`span`,{className:a.default.check,"aria-hidden":`true`,children:r&&(0,c.jsx)(i.Icon,{component:n.default,size:`sm`})}),(0,c.jsxs)(`span`,{className:a.default.optionBody,children:[(0,c.jsxs)(`span`,{className:a.default.optionHeader,children:[(0,c.jsx)(`span`,{className:a.default.optionName,children:e.name}),` `,e.badge&&(0,c.jsx)(`span`,{className:a.default.badge,children:e.badge})]}),` `,e.description&&(0,c.jsx)(`span`,{className:a.default.description,children:e.description}),` `,J(e)]})]},e.id)})})})]})});d.displayName=`ModelSelector`,exports.ModelSelector=d;
@@ -93,9 +93,11 @@ var h = (e) => e >= 1e6 ? `${(e / 1e6).toFixed(e % 1e6 == 0 ? 0 : 1)}M` : e >= 1
93
93
  ]
94
94
  }, "out"));
95
95
  }
96
- return t.length === 0 ? null : /* @__PURE__ */ p("span", {
96
+ if (t.length === 0) return null;
97
+ let n = t.flatMap((e, t) => t === 0 ? [e] : [" ", e]);
98
+ return /* @__PURE__ */ p("span", {
97
99
  className: i.metaRow,
98
- children: t
100
+ children: n
99
101
  });
100
102
  };
101
103
  return /* @__PURE__ */ m("div", {
@@ -121,13 +123,17 @@ var h = (e) => e >= 1e6 ? `${(e / 1e6).toFixed(e % 1e6 == 0 ? 0 : 1)}M` : e >= 1
121
123
  },
122
124
  children: [/* @__PURE__ */ p("span", {
123
125
  className: i.triggerLabel,
124
- children: z ? /* @__PURE__ */ m(f, { children: [/* @__PURE__ */ p("span", {
125
- className: i.triggerName,
126
- children: z.name
127
- }), z.badge && /* @__PURE__ */ p("span", {
128
- className: i.badge,
129
- children: z.badge
130
- })] }) : /* @__PURE__ */ p("span", {
126
+ children: z ? /* @__PURE__ */ m(f, { children: [
127
+ /* @__PURE__ */ p("span", {
128
+ className: i.triggerName,
129
+ children: z.name
130
+ }),
131
+ " ",
132
+ z.badge && /* @__PURE__ */ p("span", {
133
+ className: i.badge,
134
+ children: z.badge
135
+ })
136
+ ] }) : /* @__PURE__ */ p("span", {
131
137
  className: i.placeholder,
132
138
  children: k
133
139
  })
@@ -171,18 +177,24 @@ var h = (e) => e >= 1e6 ? `${(e / 1e6).toFixed(e % 1e6 == 0 ? 0 : 1)}M` : e >= 1
171
177
  children: [
172
178
  /* @__PURE__ */ m("span", {
173
179
  className: i.optionHeader,
174
- children: [/* @__PURE__ */ p("span", {
175
- className: i.optionName,
176
- children: e.name
177
- }), e.badge && /* @__PURE__ */ p("span", {
178
- className: i.badge,
179
- children: e.badge
180
- })]
180
+ children: [
181
+ /* @__PURE__ */ p("span", {
182
+ className: i.optionName,
183
+ children: e.name
184
+ }),
185
+ " ",
186
+ e.badge && /* @__PURE__ */ p("span", {
187
+ className: i.badge,
188
+ children: e.badge
189
+ })
190
+ ]
181
191
  }),
192
+ " ",
182
193
  e.description && /* @__PURE__ */ p("span", {
183
194
  className: i.description,
184
195
  children: e.description
185
196
  }),
197
+ " ",
186
198
  ee(e)
187
199
  ]
188
200
  })]
@@ -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`,dialCode:`1`,flag:`🇺🇸`},{code:`JP`,dialCode:`81`,flag:`🇯🇵`},{code:`GB`,dialCode:`44`,flag:`🇬🇧`},{code:`AU`,dialCode:`61`,flag:`🇦🇺`},{code:`DE`,dialCode:`49`,flag:`🇩🇪`},{code:`FR`,dialCode:`33`,flag:`🇫🇷`},{code:`CN`,dialCode:`86`,flag:`🇨🇳`},{code:`KR`,dialCode:`82`,flag:`🇰🇷`},{code:`IN`,dialCode:`91`,flag:`🇮🇳`},{code:`BR`,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=>E(`phone.countries.${e.code}`),W=(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):U(e).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},G=e=>{let t=L.current;t.timer&&clearTimeout(t.timer),t.text+=e,t.timer=setTimeout(()=>{t.text=``,t.timer=null},500);let n=W(t.text,j?N:-1);n<0||(j?P(n):V(n))},K=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!==``?G(` `):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(),G(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:K,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:U(e)}),(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;
2
+ const e=require("../../../_virtual/_rolldown/runtime.cjs"),t=require("../../../i18n/generated/resources.cjs"),n=require("../../../i18n/useWimTranslation.cjs"),r=require("../../layout/Transition/Transition.cjs"),i=require("../../../icon/chevron-down.cjs"),a=require("../../media/Icon/Icon.cjs"),o=require("../FieldTemplate/FieldTemplate.cjs"),s=require("./phone-input.module.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=[{code:`US`,dialCode:`1`,flag:`🇺🇸`},{code:`JP`,dialCode:`81`,flag:`🇯🇵`},{code:`GB`,dialCode:`44`,flag:`🇬🇧`},{code:`AU`,dialCode:`61`,flag:`🇦🇺`},{code:`DE`,dialCode:`49`,flag:`🇩🇪`},{code:`FR`,dialCode:`33`,flag:`🇫🇷`},{code:`CN`,dialCode:`86`,flag:`🇨🇳`},{code:`KR`,dialCode:`82`,flag:`🇰🇷`},{code:`IN`,dialCode:`91`,flag:`🇮🇳`},{code:`BR`,dialCode:`55`,flag:`🇧🇷`}],f=(0,c.forwardRef)(({value:e=``,onChange:f,countryCode:p=`US`,onCountryChange:m,placeholder:h=`000-0000-0000`,disabled:g=!1,error:_,required:v=!1,label:y,layout:b=`vertical`,className:x,fullWidth:S=!1,...C},w)=>{let T=`wim-phone-input-${(0,c.useId)()}`,E=y?`${T}-label`:void 0,{t:D}=n.useWimTranslation(`form`),O=D(`phone.select_country`),k=`${T}-countries`,A=e=>`${T}-country-${e}`,j=_?`${T}-error`:void 0,[M,N]=(0,c.useState)(!1),[P,F]=(0,c.useState)(-1),I=(0,c.useRef)(null),L=(0,c.useRef)(null),R=(0,c.useRef)({text:``,timer:null});(0,c.useEffect)(()=>{let e=e=>{I.current&&!I.current.contains(e.target)&&N(!1)};return M&&document.addEventListener(`mousedown`,e),()=>{document.removeEventListener(`mousedown`,e)}},[M]);let z=d.find(e=>e.code===p)??d[0],B=e=>{f?.(e.target.value)},V=d.length-1,H=e=>{let t=d.findIndex(e=>e.code===z.code);F(e??Math.max(t,0)),N(!0)},U=e=>{let t=d[e];t&&(m?.(t.code),N(!1))},W=e=>D(`phone.countries.${e.code}`),G=e=>(t.wimResources.en?.form)?.phone?.countries?.[e.code]??``,K=(e,t)=>{let n=e.toLowerCase().replace(/^\+/,``);if(n===``)return-1;let r=/^[0-9]+$/.test(n),i=!r&&n.length>1&&n.split(``).every(e=>e===n[0]),a=i?n[0]:n,o=i||n.length===1?t+1:t,s=r?[e=>e.dialCode]:[e=>W(e).toLowerCase(),e=>G(e).toLowerCase(),e=>e.code.toLowerCase()];for(let e of s)for(let t=0;t<d.length;t++){let n=(Math.max(o,0)+t)%d.length;if(e(d[n]).startsWith(a))return n}return-1},q=e=>{let t=R.current;t.timer&&clearTimeout(t.timer),t.text+=e,t.timer=setTimeout(()=>{t.text=``,t.timer=null},500);let n=K(t.text,M?P:-1);n<0||(M?F(n):H(n))},J=e=>{if(!g)switch(e.key){case`ArrowDown`:case`ArrowUp`:if(e.preventDefault(),!M)H();else{let t=e.key===`ArrowDown`?1:-1;F(e=>(e+t+d.length)%d.length)}break;case`Home`:case`End`:e.preventDefault(),M?F(e.key===`Home`?0:V):H(e.key===`Home`?0:V);break;case`Enter`:case` `:e.preventDefault(),e.key===` `&&R.current.text!==``?q(` `):M?U(P):H();break;case`Escape`:M&&(e.preventDefault(),N(!1));break;case`Tab`:N(!1);break;default:e.key.length===1&&!e.ctrlKey&&!e.metaKey&&!e.altKey&&(e.preventDefault(),q(e.key))}};return(0,c.useEffect)(()=>{let e=R.current;return()=>{e.timer&&clearTimeout(e.timer)}},[]),(0,c.useEffect)(()=>{M&&P>=0&&(L.current?.querySelectorAll(`[role="option"]`)?.[P])?.scrollIntoView?.({block:`nearest`})},[P,M]),(0,u.jsx)(o.FieldTemplate,{label:y,labelId:E,htmlFor:T,required:v,error:_,errorId:j,layout:b,className:x,children:(0,u.jsxs)(`div`,{ref:I,className:(0,l.default)(`wim-phone-input`,s.default.root,S&&s.default.fullWidth,g&&s.default.disabled,_&&s.default.danger),"data-testid":`phone-input-root`,...C,children:[(0,u.jsxs)(`div`,{className:s.default.countryWrapper,children:[(0,u.jsxs)(`button`,{type:`button`,role:`combobox`,className:s.default.countryTrigger,onClick:()=>{g||(M?N(!1):H())},onKeyDown:J,onKeyUp:e=>{e.key===` `&&e.preventDefault()},disabled:g,"aria-haspopup":`listbox`,"aria-expanded":M,"aria-controls":M?k:void 0,"aria-activedescendant":M&&P>=0?A(P):void 0,"aria-label":O,children:[(0,u.jsx)(`span`,{"aria-hidden":`true`,style:{fontSize:`1.2em`},children:z.flag}),(0,u.jsxs)(`span`,{children:[`+`,z.dialCode]}),(0,u.jsx)(a.Icon,{component:i.default,size:`sm`,className:(0,l.default)(s.default.chevron,M&&s.default.chevronOpen)})]}),(0,u.jsx)(r.Transition,{show:M,preset:`fade`,className:s.default.dropdown,children:(0,u.jsx)(`ul`,{ref:L,id:k,className:s.default.countryList,role:`listbox`,"aria-label":O,tabIndex:-1,onMouseDown:e=>e.preventDefault(),children:d.map((e,t)=>(0,u.jsxs)(`li`,{id:A(t),className:(0,l.default)(s.default.countryOption,t===P&&s.default.active,z.code===e.code&&s.default.selected),onMouseEnter:()=>F(t),onClick:()=>U(t),role:`option`,"aria-selected":z.code===e.code,children:[(0,u.jsx)(`span`,{"aria-hidden":`true`,children:e.flag}),(0,u.jsx)(`span`,{className:s.default.countryName,children:W(e)}),` `,(0,u.jsxs)(`span`,{className:s.default.countryCode,children:[`+`,e.dialCode]})]},e.code))})})]}),(0,u.jsx)(`div`,{className:s.default.divider,"aria-hidden":`true`}),(0,u.jsx)(`input`,{id:T,ref:w,type:`tel`,value:e,onChange:B,placeholder:h,disabled:g,className:s.default.number,"aria-invalid":!!_,"aria-describedby":j})]})})});f.displayName=`PhoneInput`,exports.PHONE_COUNTRIES=d,exports.PhoneInput=f;
@@ -1,15 +1,16 @@
1
1
  "use client";
2
- import { useWimTranslation as e } from "../../../i18n/useWimTranslation.js";
3
- import { Transition as t } from "../../layout/Transition/Transition.js";
4
- import n from "../../../icon/chevron-down.js";
5
- import { Icon as r } from "../../media/Icon/Icon.js";
6
- import { FieldTemplate as i } from "../FieldTemplate/FieldTemplate.js";
7
- import a from "./phone-input.module.js";
8
- import { forwardRef as o, useEffect as s, useId as c, useRef as l, useState as u } from "react";
9
- import d from "classnames";
10
- import { jsx as f, jsxs as p } from "react/jsx-runtime";
2
+ import { wimResources as e } from "../../../i18n/generated/resources.js";
3
+ import { useWimTranslation as t } from "../../../i18n/useWimTranslation.js";
4
+ import { Transition as n } from "../../layout/Transition/Transition.js";
5
+ import r from "../../../icon/chevron-down.js";
6
+ import { Icon as i } from "../../media/Icon/Icon.js";
7
+ import { FieldTemplate as a } from "../FieldTemplate/FieldTemplate.js";
8
+ import o from "./phone-input.module.js";
9
+ import { forwardRef as s, useEffect as c, useId as l, useRef as u, useState as d } from "react";
10
+ import f from "classnames";
11
+ import { jsx as p, jsxs as m } from "react/jsx-runtime";
11
12
  //#region src/components/form/PhoneInput/PhoneInput.tsx
12
- var m = [
13
+ var h = [
13
14
  {
14
15
  code: "US",
15
16
  dialCode: "1",
@@ -60,154 +61,159 @@ var m = [
60
61
  dialCode: "55",
61
62
  flag: "🇧🇷"
62
63
  }
63
- ], 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) => {
64
- 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({
64
+ ], g = s(({ value: s = "", onChange: g, countryCode: _ = "US", onCountryChange: v, placeholder: y = "000-0000-0000", disabled: b = !1, error: x, required: S = !1, label: C, layout: w = "vertical", className: T, fullWidth: E = !1, ...D }, O) => {
65
+ let k = `wim-phone-input-${l()}`, A = C ? `${k}-label` : void 0, { t: j } = t("form"), M = j("phone.select_country"), N = `${k}-countries`, P = (e) => `${k}-country-${e}`, F = x ? `${k}-error` : void 0, [I, L] = d(!1), [R, z] = d(-1), B = u(null), V = u(null), H = u({
65
66
  text: "",
66
67
  timer: null
67
68
  });
68
- s(() => {
69
+ c(() => {
69
70
  let e = (e) => {
70
- z.current && !z.current.contains(e.target) && I(!1);
71
+ B.current && !B.current.contains(e.target) && L(!1);
71
72
  };
72
- return F && document.addEventListener("mousedown", e), () => {
73
+ return I && document.addEventListener("mousedown", e), () => {
73
74
  document.removeEventListener("mousedown", e);
74
75
  };
75
- }, [F]);
76
- let H = m.find((e) => e.code === g) ?? m[0], U = (e) => {
77
- h?.(e.target.value);
78
- }, W = m.length - 1, G = (e) => {
79
- let t = m.findIndex((e) => e.code === H.code);
80
- R(e ?? Math.max(t, 0)), I(!0);
81
- }, K = (e) => {
82
- let t = m[e];
83
- t && (_?.(t.code), I(!1));
84
- }, q = (e) => A(`phone.countries.${e.code}`), J = (e, t) => {
76
+ }, [I]);
77
+ let U = h.find((e) => e.code === _) ?? h[0], W = (e) => {
78
+ g?.(e.target.value);
79
+ }, G = h.length - 1, K = (e) => {
80
+ let t = h.findIndex((e) => e.code === U.code);
81
+ z(e ?? Math.max(t, 0)), L(!0);
82
+ }, q = (e) => {
83
+ let t = h[e];
84
+ t && (v?.(t.code), L(!1));
85
+ }, J = (e) => j(`phone.countries.${e.code}`), Y = (t) => (e.en?.form)?.phone?.countries?.[t.code] ?? "", X = (e, t) => {
85
86
  let n = e.toLowerCase().replace(/^\+/, "");
86
87
  if (n === "") return -1;
87
- let r = /^[0-9]+$/.test(n), i = (e, t) => r ? e.dialCode.startsWith(t) : q(e).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;
88
- for (let e = 0; e < m.length; e++) {
89
- let t = (Math.max(s, 0) + e) % m.length;
90
- if (i(m[t], o)) return t;
88
+ let r = /^[0-9]+$/.test(n), i = !r && n.length > 1 && n.split("").every((e) => e === n[0]), a = i ? n[0] : n, o = i || n.length === 1 ? t + 1 : t, s = r ? [(e) => e.dialCode] : [
89
+ (e) => J(e).toLowerCase(),
90
+ (e) => Y(e).toLowerCase(),
91
+ (e) => e.code.toLowerCase()
92
+ ];
93
+ for (let e of s) for (let t = 0; t < h.length; t++) {
94
+ let n = (Math.max(o, 0) + t) % h.length;
95
+ if (e(h[n]).startsWith(a)) return n;
91
96
  }
92
97
  return -1;
93
- }, Y = (e) => {
94
- let t = V.current;
98
+ }, Z = (e) => {
99
+ let t = H.current;
95
100
  t.timer && clearTimeout(t.timer), t.text += e, t.timer = setTimeout(() => {
96
101
  t.text = "", t.timer = null;
97
102
  }, 500);
98
- let n = J(t.text, F ? L : -1);
99
- n < 0 || (F ? R(n) : G(n));
100
- }, X = (e) => {
101
- if (!y) switch (e.key) {
103
+ let n = X(t.text, I ? R : -1);
104
+ n < 0 || (I ? z(n) : K(n));
105
+ }, Q = (e) => {
106
+ if (!b) switch (e.key) {
102
107
  case "ArrowDown":
103
108
  case "ArrowUp":
104
- if (e.preventDefault(), !F) G();
109
+ if (e.preventDefault(), !I) K();
105
110
  else {
106
111
  let t = e.key === "ArrowDown" ? 1 : -1;
107
- R((e) => (e + t + m.length) % m.length);
112
+ z((e) => (e + t + h.length) % h.length);
108
113
  }
109
114
  break;
110
115
  case "Home":
111
116
  case "End":
112
- e.preventDefault(), F ? R(e.key === "Home" ? 0 : W) : G(e.key === "Home" ? 0 : W);
117
+ e.preventDefault(), I ? z(e.key === "Home" ? 0 : G) : K(e.key === "Home" ? 0 : G);
113
118
  break;
114
119
  case "Enter":
115
120
  case " ":
116
- e.preventDefault(), e.key === " " && V.current.text !== "" ? Y(" ") : F ? K(L) : G();
121
+ e.preventDefault(), e.key === " " && H.current.text !== "" ? Z(" ") : I ? q(R) : K();
117
122
  break;
118
123
  case "Escape":
119
- F && (e.preventDefault(), I(!1));
124
+ I && (e.preventDefault(), L(!1));
120
125
  break;
121
126
  case "Tab":
122
- I(!1);
127
+ L(!1);
123
128
  break;
124
- default: e.key.length === 1 && !e.ctrlKey && !e.metaKey && !e.altKey && (e.preventDefault(), Y(e.key));
129
+ default: e.key.length === 1 && !e.ctrlKey && !e.metaKey && !e.altKey && (e.preventDefault(), Z(e.key));
125
130
  }
126
131
  };
127
- return s(() => {
128
- let e = V.current;
132
+ return c(() => {
133
+ let e = H.current;
129
134
  return () => {
130
135
  e.timer && clearTimeout(e.timer);
131
136
  };
132
- }, []), s(() => {
133
- F && L >= 0 && (B.current?.querySelectorAll("[role=\"option\"]")?.[L])?.scrollIntoView?.({ block: "nearest" });
134
- }, [L, F]), /* @__PURE__ */ f(i, {
135
- label: S,
136
- labelId: k,
137
- htmlFor: O,
138
- required: x,
139
- error: b,
140
- errorId: P,
141
- layout: C,
142
- className: w,
143
- children: /* @__PURE__ */ p("div", {
144
- ref: z,
145
- className: d("wim-phone-input", a.root, T && a.fullWidth, y && a.disabled, b && a.danger),
137
+ }, []), c(() => {
138
+ I && R >= 0 && (V.current?.querySelectorAll("[role=\"option\"]")?.[R])?.scrollIntoView?.({ block: "nearest" });
139
+ }, [R, I]), /* @__PURE__ */ p(a, {
140
+ label: C,
141
+ labelId: A,
142
+ htmlFor: k,
143
+ required: S,
144
+ error: x,
145
+ errorId: F,
146
+ layout: w,
147
+ className: T,
148
+ children: /* @__PURE__ */ m("div", {
149
+ ref: B,
150
+ className: f("wim-phone-input", o.root, E && o.fullWidth, b && o.disabled, x && o.danger),
146
151
  "data-testid": "phone-input-root",
147
- ...E,
152
+ ...D,
148
153
  children: [
149
- /* @__PURE__ */ p("div", {
150
- className: a.countryWrapper,
151
- children: [/* @__PURE__ */ p("button", {
154
+ /* @__PURE__ */ m("div", {
155
+ className: o.countryWrapper,
156
+ children: [/* @__PURE__ */ m("button", {
152
157
  type: "button",
153
158
  role: "combobox",
154
- className: a.countryTrigger,
159
+ className: o.countryTrigger,
155
160
  onClick: () => {
156
- y || (F ? I(!1) : G());
161
+ b || (I ? L(!1) : K());
157
162
  },
158
- onKeyDown: X,
163
+ onKeyDown: Q,
159
164
  onKeyUp: (e) => {
160
165
  e.key === " " && e.preventDefault();
161
166
  },
162
- disabled: y,
167
+ disabled: b,
163
168
  "aria-haspopup": "listbox",
164
- "aria-expanded": F,
165
- "aria-controls": F ? M : void 0,
166
- "aria-activedescendant": F && L >= 0 ? N(L) : void 0,
167
- "aria-label": j,
169
+ "aria-expanded": I,
170
+ "aria-controls": I ? N : void 0,
171
+ "aria-activedescendant": I && R >= 0 ? P(R) : void 0,
172
+ "aria-label": M,
168
173
  children: [
169
- /* @__PURE__ */ f("span", {
174
+ /* @__PURE__ */ p("span", {
170
175
  "aria-hidden": "true",
171
176
  style: { fontSize: "1.2em" },
172
- children: H.flag
177
+ children: U.flag
173
178
  }),
174
- /* @__PURE__ */ p("span", { children: ["+", H.dialCode] }),
175
- /* @__PURE__ */ f(r, {
176
- component: n,
179
+ /* @__PURE__ */ m("span", { children: ["+", U.dialCode] }),
180
+ /* @__PURE__ */ p(i, {
181
+ component: r,
177
182
  size: "sm",
178
- className: d(a.chevron, F && a.chevronOpen)
183
+ className: f(o.chevron, I && o.chevronOpen)
179
184
  })
180
185
  ]
181
- }), /* @__PURE__ */ f(t, {
182
- show: F,
186
+ }), /* @__PURE__ */ p(n, {
187
+ show: I,
183
188
  preset: "fade",
184
- className: a.dropdown,
185
- children: /* @__PURE__ */ f("ul", {
186
- ref: B,
187
- id: M,
188
- className: a.countryList,
189
+ className: o.dropdown,
190
+ children: /* @__PURE__ */ p("ul", {
191
+ ref: V,
192
+ id: N,
193
+ className: o.countryList,
189
194
  role: "listbox",
190
- "aria-label": j,
195
+ "aria-label": M,
191
196
  tabIndex: -1,
192
197
  onMouseDown: (e) => e.preventDefault(),
193
- children: m.map((e, t) => /* @__PURE__ */ p("li", {
194
- id: N(t),
195
- className: d(a.countryOption, t === L && a.active, H.code === e.code && a.selected),
196
- onMouseEnter: () => R(t),
197
- onClick: () => K(t),
198
+ children: h.map((e, t) => /* @__PURE__ */ m("li", {
199
+ id: P(t),
200
+ className: f(o.countryOption, t === R && o.active, U.code === e.code && o.selected),
201
+ onMouseEnter: () => z(t),
202
+ onClick: () => q(t),
198
203
  role: "option",
199
- "aria-selected": H.code === e.code,
204
+ "aria-selected": U.code === e.code,
200
205
  children: [
201
- /* @__PURE__ */ f("span", {
206
+ /* @__PURE__ */ p("span", {
202
207
  "aria-hidden": "true",
203
208
  children: e.flag
204
209
  }),
205
- /* @__PURE__ */ f("span", {
206
- className: a.countryName,
207
- children: q(e)
208
- }),
209
210
  /* @__PURE__ */ p("span", {
210
- className: a.countryCode,
211
+ className: o.countryName,
212
+ children: J(e)
213
+ }),
214
+ " ",
215
+ /* @__PURE__ */ m("span", {
216
+ className: o.countryCode,
211
217
  children: ["+", e.dialCode]
212
218
  })
213
219
  ]
@@ -215,26 +221,26 @@ var m = [
215
221
  })
216
222
  })]
217
223
  }),
218
- /* @__PURE__ */ f("div", {
219
- className: a.divider,
224
+ /* @__PURE__ */ p("div", {
225
+ className: o.divider,
220
226
  "aria-hidden": "true"
221
227
  }),
222
- /* @__PURE__ */ f("input", {
223
- id: O,
224
- ref: D,
228
+ /* @__PURE__ */ p("input", {
229
+ id: k,
230
+ ref: O,
225
231
  type: "tel",
226
- value: o,
227
- onChange: U,
228
- placeholder: v,
229
- disabled: y,
230
- className: a.number,
231
- "aria-invalid": !!b,
232
- "aria-describedby": P
232
+ value: s,
233
+ onChange: W,
234
+ placeholder: y,
235
+ disabled: b,
236
+ className: o.number,
237
+ "aria-invalid": !!x,
238
+ "aria-describedby": F
233
239
  })
234
240
  ]
235
241
  })
236
242
  });
237
243
  });
238
- h.displayName = "PhoneInput";
244
+ g.displayName = "PhoneInput";
239
245
  //#endregion
240
- export { m as PHONE_COUNTRIES, h as PhoneInput };
246
+ export { h as PHONE_COUNTRIES, g as PhoneInput };
@@ -1,2 +1,2 @@
1
1
  "use client";
2
- const e=require("../../../_virtual/_rolldown/runtime.cjs"),t=require("../../../node_modules/@radix-ui/react-slot/dist/index.cjs"),n=require("../../layout/Transition/Transition.cjs"),r=require("../../_internal/BaseListItem/BaseListItem.cjs"),i=require("../../_internal/mergeRefs.cjs"),a=require("./dropdown.module.cjs");let o=require("react");o=e.__toESM(o,1);let s=require("classnames");s=e.__toESM(s,1);let c=require("react/jsx-runtime"),l=require("@floating-ui/react");var u=o.default.createContext({isOpen:!1,toggle:()=>{},close:()=>{},menuId:``,triggerId:``,focusedIndex:-1,setFocusedIndex:()=>{},registerItem:()=>0,containerRef:{current:null},setReference:()=>{},setFloating:()=>{},floatingStyles:{},floatingRef:{current:null},setAlign:()=>{}}),d=(0,o.forwardRef)(({children:e,className:n,asChild:r=!1,defaultOpen:d=!1,open:f,onOpenChange:p,...m},h)=>{let[g,_]=(0,o.useState)(d),v=f??g,y=(0,o.useCallback)(e=>{f===void 0&&_(e),p?.(e)},[f,p]),[b,x]=(0,o.useState)(-1),S=(0,o.useRef)(null),C=(0,o.useRef)(0),[w,T]=(0,o.useState)(`left`),{refs:E,floatingStyles:D}=(0,l.useFloating)({open:v,placement:w===`right`?`bottom-end`:`bottom-start`,whileElementsMounted:l.autoUpdate,middleware:[(0,l.offset)(4),(0,l.flip)(),(0,l.shift)({padding:8})]}),O=i.mergeRefs(S,h);(0,o.useEffect)(()=>{C.current=0});let k=()=>{let e=C.current;return C.current+=1,e},A=(0,o.useId)(),j=`wim-dropdown-menu-${A}`,M=`wim-dropdown-trigger-${A}`,N=()=>{let e=!v;y(e),x(e?0:-1)},P=(0,o.useCallback)(()=>{y(!1),x(-1)},[y]);(0,o.useEffect)(()=>{let e=e=>{let t=e.target,n=E.floating.current?.contains(t)??!1;S.current&&!S.current.contains(t)&&!n&&P()},t=e=>{e.key===`Escape`&&P()};return v&&(document.addEventListener(`mousedown`,e),document.addEventListener(`keydown`,t)),()=>{document.removeEventListener(`mousedown`,e),document.removeEventListener(`keydown`,t)}},[v,E.floating,P]);let F=e=>{if(!v)return;let t=Array.from((E.floating.current??S.current)?.querySelectorAll(`[role="menuitem"]:not([aria-disabled="true"])`)||[]);switch(e.key){case`ArrowDown`:e.preventDefault(),x(e=>e<t.length-1?e+1:0);break;case`ArrowUp`:e.preventDefault(),x(e=>e>0?e-1:t.length-1);break;case`Home`:e.preventDefault(),x(0);break;case`End`:e.preventDefault(),x(t.length-1);break;case`Tab`:P()}};(0,o.useEffect)(()=>{v&&b>=0&&Array.from((E.floating.current??S.current)?.querySelectorAll(`[role="menuitem"]:not([aria-disabled="true"])`)||[])[b]?.focus({preventScroll:!0})},[b,v,E.floating]);let I=r?t.Root:`div`;return(0,c.jsx)(u.Provider,{value:{isOpen:v,toggle:N,close:P,menuId:j,triggerId:M,focusedIndex:b,setFocusedIndex:x,registerItem:k,containerRef:S,setReference:E.setReference,setFloating:E.setFloating,floatingStyles:D,floatingRef:E.floating,setAlign:T},children:(0,c.jsx)(I,{...m,role:`none`,className:(0,s.default)(`wim-dropdown`,a.default.root,n),ref:O,onKeyDown:F,children:(0,c.jsx)(t.Slottable,{children:e})})})});d.displayName=`Dropdown`;var f=(0,o.forwardRef)(({children:e,className:n,asChild:r=!1,...l},d)=>{let{toggle:f,isOpen:p,menuId:m,triggerId:h,setReference:g}=o.default.useContext(u),_=r?t.Root:`div`,v=i.mergeRefs(g,d);return(0,c.jsx)(_,{...l,ref:v,id:h,className:(0,s.default)(a.default.trigger,n),onClick:f,"aria-haspopup":`menu`,"aria-expanded":p,"aria-controls":p?m:void 0,role:`button`,tabIndex:0,onKeyDown:e=>{(e.key===`Enter`||e.key===` `)&&(e.preventDefault(),f())},children:(0,c.jsx)(t.Slottable,{children:e})})});f.displayName=`Dropdown.Trigger`;var p=(0,o.forwardRef)(({children:e,className:t,align:r=`left`,show:d,style:f,...p},m)=>{let{isOpen:h,menuId:g,triggerId:_,setFloating:v,floatingStyles:y,setAlign:b}=o.default.useContext(u);(0,o.useEffect)(()=>{b(r)},[r,b]);let x=i.mergeRefs(v,m);return(0,c.jsx)(l.FloatingPortal,{children:(0,c.jsx)(n.Transition,{...p,ref:x,show:d===void 0?h:d,preset:`fade`,id:g,style:{...y,...f},className:(0,s.default)(a.default.menu,t),role:`menu`,"aria-labelledby":_,children:e})})});p.displayName=`Dropdown.Menu`;var m=(0,o.forwardRef)(({children:e,onClick:t,disabled:n=!1,className:i,...l},d)=>{let{close:f,focusedIndex:p,setFocusedIndex:m,registerItem:h}=o.default.useContext(u),[g]=(0,o.useState)(()=>h()),_=p===g,v=e=>{n||(e.stopPropagation(),t&&t(),f())};return(0,c.jsx)(r.BaseListItem,{...l,ref:d,className:(0,s.default)(a.default.item,i),onClick:v,onFocus:()=>m(g),disabled:n,role:`menuitem`,tabIndex:_?0:-1,onKeyDown:e=>{!n&&(e.key===`Enter`||e.key===` `)&&(e.preventDefault(),v(e))},children:e})});m.displayName=`Dropdown.Item`;var h=(0,o.forwardRef)((e,t)=>(0,c.jsx)(d,{...e,ref:t}));h.displayName=`Dropdown`,h.Trigger=f,h.Menu=p,h.Item=m,exports.Dropdown=h,exports.default=h,exports.DropdownItem=m,exports.DropdownMenu=p,exports.DropdownTrigger=f;
2
+ const e=require("../../../_virtual/_rolldown/runtime.cjs"),t=require("../../../node_modules/@radix-ui/react-slot/dist/index.cjs"),n=require("../../layout/Transition/Transition.cjs"),r=require("../../_internal/BaseListItem/BaseListItem.cjs"),i=require("../../_internal/mergeRefs.cjs"),a=require("./dropdown.module.cjs");let o=require("react");o=e.__toESM(o,1);let s=require("classnames");s=e.__toESM(s,1);let c=require("react/jsx-runtime"),l=require("@floating-ui/react");var u=o.default.createContext({isOpen:!1,toggle:()=>{},close:()=>{},menuId:``,triggerId:``,focusedIndex:-1,setFocusedIndex:()=>{},registerItem:()=>0,containerRef:{current:null},setReference:()=>{},setFloating:()=>{},floatingStyles:{},floatingRef:{current:null},setAlign:()=>{}}),d=(0,o.forwardRef)(({children:e,className:n,asChild:r=!1,defaultOpen:d=!1,open:f,onOpenChange:p,...m},h)=>{let[g,_]=(0,o.useState)(d),v=f??g,y=(0,o.useCallback)(e=>{f===void 0&&_(e),p?.(e)},[f,p]),[b,x]=(0,o.useState)(-1),S=(0,o.useRef)(null),C=(0,o.useRef)(0),[w,T]=(0,o.useState)(`left`),{refs:E,floatingStyles:D}=(0,l.useFloating)({open:v,placement:w===`right`?`bottom-end`:`bottom-start`,whileElementsMounted:l.autoUpdate,middleware:[(0,l.offset)(4),(0,l.flip)(),(0,l.shift)({padding:8})]}),O=i.mergeRefs(S,h);(0,o.useEffect)(()=>{C.current=0});let k=()=>{let e=C.current;return C.current+=1,e},A=(0,o.useId)(),j=`wim-dropdown-menu-${A}`,M=`wim-dropdown-trigger-${A}`,N=()=>{let e=!v;y(e),x(e?0:-1)},P=(0,o.useCallback)(()=>{let e=E.floating.current,t=!!e&&e.contains(document.activeElement);y(!1),x(-1),t&&E.reference.current?.focus?.({preventScroll:!0})},[y,E.floating,E.reference]);(0,o.useEffect)(()=>{let e=e=>{let t=e.target,n=E.floating.current?.contains(t)??!1;S.current&&!S.current.contains(t)&&!n&&P()},t=e=>{e.key===`Escape`&&P()};return v&&(document.addEventListener(`mousedown`,e),document.addEventListener(`keydown`,t)),()=>{document.removeEventListener(`mousedown`,e),document.removeEventListener(`keydown`,t)}},[v,E.floating,P]);let F=e=>{if(!v)return;let t=Array.from((E.floating.current??S.current)?.querySelectorAll(`[role="menuitem"]:not([aria-disabled="true"])`)||[]);switch(e.key){case`ArrowDown`:e.preventDefault(),x(e=>e<t.length-1?e+1:0);break;case`ArrowUp`:e.preventDefault(),x(e=>e>0?e-1:t.length-1);break;case`Home`:e.preventDefault(),x(0);break;case`End`:e.preventDefault(),x(t.length-1);break;case`Tab`:P()}};(0,o.useEffect)(()=>{v&&b>=0&&Array.from((E.floating.current??S.current)?.querySelectorAll(`[role="menuitem"]:not([aria-disabled="true"])`)||[])[b]?.focus({preventScroll:!0})},[b,v,E.floating]);let I=r?t.Root:`div`;return(0,c.jsx)(u.Provider,{value:{isOpen:v,toggle:N,close:P,menuId:j,triggerId:M,focusedIndex:b,setFocusedIndex:x,registerItem:k,containerRef:S,setReference:E.setReference,setFloating:E.setFloating,floatingStyles:D,floatingRef:E.floating,setAlign:T},children:(0,c.jsx)(I,{...m,role:`none`,className:(0,s.default)(`wim-dropdown`,a.default.root,n),ref:O,onKeyDown:F,children:(0,c.jsx)(t.Slottable,{children:e})})})});d.displayName=`Dropdown`;var f=(0,o.forwardRef)(({children:e,className:n,asChild:r=!1,...l},d)=>{let{toggle:f,isOpen:p,menuId:m,triggerId:h,setReference:g}=o.default.useContext(u),_=r?t.Root:`div`,v=i.mergeRefs(g,d);return(0,c.jsx)(_,{...l,ref:v,id:h,className:(0,s.default)(a.default.trigger,n),onClick:f,"aria-haspopup":`menu`,"aria-expanded":p,"aria-controls":p?m:void 0,role:`button`,tabIndex:0,onKeyDown:e=>{(e.key===`Enter`||e.key===` `||e.key===`ArrowDown`&&!p)&&(e.preventDefault(),f())},children:(0,c.jsx)(t.Slottable,{children:e})})});f.displayName=`Dropdown.Trigger`;var p=(0,o.forwardRef)(({children:e,className:t,align:r=`left`,show:d,style:f,...p},m)=>{let{isOpen:h,menuId:g,triggerId:_,setFloating:v,floatingStyles:y,setAlign:b}=o.default.useContext(u);(0,o.useEffect)(()=>{b(r)},[r,b]);let x=i.mergeRefs(v,m);return(0,c.jsx)(l.FloatingPortal,{children:(0,c.jsx)(n.Transition,{...p,ref:x,show:d===void 0?h:d,preset:`fade`,id:g,style:{...y,...f},className:(0,s.default)(a.default.menu,t),role:`menu`,"aria-labelledby":_,children:e})})});p.displayName=`Dropdown.Menu`;var m=(0,o.forwardRef)(({children:e,onClick:t,disabled:n=!1,className:i,...l},d)=>{let{close:f,focusedIndex:p,setFocusedIndex:m,registerItem:h}=o.default.useContext(u),[g]=(0,o.useState)(()=>h()),_=p===g,v=e=>{n||(e.stopPropagation(),t&&t(),f())};return(0,c.jsx)(r.BaseListItem,{...l,ref:d,className:(0,s.default)(a.default.item,i),onClick:v,onFocus:()=>m(g),disabled:n,role:`menuitem`,tabIndex:_?0:-1,onKeyDown:e=>{!n&&(e.key===`Enter`||e.key===` `)&&(e.preventDefault(),v(e))},children:e})});m.displayName=`Dropdown.Item`;var h=(0,o.forwardRef)((e,t)=>(0,c.jsx)(d,{...e,ref:t}));h.displayName=`Dropdown`,h.Trigger=f,h.Menu=p,h.Item=m,exports.Dropdown=h,exports.default=h,exports.DropdownItem=m,exports.DropdownMenu=p,exports.DropdownTrigger=f;
@@ -47,8 +47,13 @@ var x = o.createContext({
47
47
  let e = !D;
48
48
  O(e), A(e ? 0 : -1);
49
49
  }, U = c(() => {
50
- O(!1), A(-1);
51
- }, [O]);
50
+ let e = F.floating.current, t = !!e && e.contains(document.activeElement);
51
+ O(!1), A(-1), t && F.reference.current?.focus?.({ preventScroll: !0 });
52
+ }, [
53
+ O,
54
+ F.floating,
55
+ F.reference
56
+ ]);
52
57
  l(() => {
53
58
  let e = (e) => {
54
59
  let t = e.target, n = F.floating.current?.contains(t) ?? !1;
@@ -133,7 +138,7 @@ var C = s(({ children: n, className: r, asChild: s = !1, ...c }, l) => {
133
138
  role: "button",
134
139
  tabIndex: 0,
135
140
  onKeyDown: (e) => {
136
- (e.key === "Enter" || e.key === " ") && (e.preventDefault(), u());
141
+ (e.key === "Enter" || e.key === " " || e.key === "ArrowDown" && !d) && (e.preventDefault(), u());
137
142
  },
138
143
  children: /* @__PURE__ */ m(t, { children: n })
139
144
  });