wimui 0.50.3 → 0.51.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.
Files changed (33) hide show
  1. package/dist/components/data-display/Calendar/Calendar.cjs +1 -1
  2. package/dist/components/data-display/Calendar/Calendar.js +116 -71
  3. package/dist/components/data-display/TreeView/TreeView.cjs +1 -1
  4. package/dist/components/data-display/TreeView/TreeView.js +194 -179
  5. package/dist/components/form/Combobox/Combobox.cjs +1 -1
  6. package/dist/components/form/Combobox/Combobox.js +2 -1
  7. package/dist/components/form/DatePicker/DatePicker.cjs +1 -1
  8. package/dist/components/form/DatePicker/DatePicker.js +3 -2
  9. package/dist/components/form/Input/Input.cjs +1 -1
  10. package/dist/components/form/Input/Input.d.ts +7 -0
  11. package/dist/components/form/Input/Input.js +51 -50
  12. package/dist/components/form/InputBase/InputBase.cjs +1 -1
  13. package/dist/components/form/InputBase/InputBase.d.ts +7 -0
  14. package/dist/components/form/InputBase/InputBase.js +5 -1
  15. package/dist/components/form/InputBase/input-base.module.cjs +1 -1
  16. package/dist/components/form/InputBase/input-base.module.js +1 -1
  17. package/dist/components/form/TimePicker/TimePicker.cjs +1 -1
  18. package/dist/components/form/TimePicker/TimePicker.js +1 -0
  19. package/dist/components/form/TreeSelect/TreeSelect.cjs +1 -1
  20. package/dist/components/form/TreeSelect/TreeSelect.js +5 -1
  21. package/dist/components/navigation/Menubar/Menubar.cjs +1 -1
  22. package/dist/components/navigation/Menubar/Menubar.js +31 -26
  23. package/dist/components/navigation/SpeedDial/SpeedDial.cjs +1 -1
  24. package/dist/components/navigation/SpeedDial/SpeedDial.d.ts +2 -2
  25. package/dist/components/navigation/SpeedDial/SpeedDial.js +53 -39
  26. package/dist/components/overlay/FocusTrap/FocusTrap.cjs +1 -1
  27. package/dist/components/overlay/FocusTrap/FocusTrap.js +5 -4
  28. package/dist/llms-full.txt +34 -2
  29. package/dist/llms.txt +1 -1
  30. package/dist/styles.css +1 -1
  31. package/dist/wimui.umd.css +1 -1
  32. package/dist/wimui.umd.js +5 -5
  33. package/package.json +1 -1
@@ -40,7 +40,7 @@ var g = c(({ intent: c = "default", variant: g = "outline", fullWidth: _ = !1, c
40
40
  return l(() => {
41
41
  if (I) {
42
42
  let e = setTimeout(() => {
43
- let e = B.current?.querySelector("[data-calendar-day][data-selected]:not(:disabled), [data-calendar-day]:focus");
43
+ let e = B.current?.querySelector("[data-calendar-day][tabindex=\"0\"]:not(:disabled), [data-calendar-day][data-selected]:not(:disabled), [data-calendar-day]:focus");
44
44
  e ? e.focus() : B.current?.querySelector("[data-calendar-day]:not([data-other-month]):not(:disabled)")?.focus();
45
45
  }, 50);
46
46
  return () => clearTimeout(e);
@@ -69,7 +69,8 @@ var g = c(({ intent: c = "default", variant: g = "outline", fullWidth: _ = !1, c
69
69
  rightIcons: [{
70
70
  name: "ChevronDownIcon",
71
71
  rotated: I,
72
- onClick: $
72
+ onClick: $,
73
+ decorative: !0
73
74
  }],
74
75
  children: /* @__PURE__ */ m("input", {
75
76
  id: G,
@@ -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("../../../i18n/useWimTranslation.cjs"),ee=require("../../../hooks/useMergedRef.cjs"),te=require("../InputBase/InputBase.cjs"),ne=require("../FieldTemplate/FieldTemplate.cjs"),r=require("./input.module.cjs");let i=require("react");i=e.__toESM(i,1);let a=require("classnames");a=e.__toESM(a,1);let o=require("react/jsx-runtime");var s=(0,i.forwardRef)(({intent:e=`default`,variant:s=`outline`,fullWidth:c=!1,className:re,disabled:ie,leftIcon:ae,rightIcon:l,leftIconColor:oe,rightIconColor:se,onLeftIconClick:u,onRightIconClick:d,allowClear:f=!1,showPasswordToggle:p=!0,rightIconClassName:m,rightIconRotated:ce,width:h,value:g,defaultValue:le,onChange:_,type:v,label:y,error:b,required:x,layout:S,id:C,inputClassName:w,showPasswordAriaLabel:T,hidePasswordAriaLabel:E,rightIconAriaLabel:D,suffix:O,styles:k,asChild:A=!1,children:j,...M},N)=>{let{t:P}=n.useWimTranslation(`common`),F=T??P(`a11y.show_password`),I=E??P(`a11y.hide_password`),L=D??P(`a11y.right_icon_action`),[R,z]=(0,i.useState)(le??``),[B,V]=(0,i.useState)(!1),H=(0,i.useRef)(null),U=ee.useMergedRef(N,H),W=g!==void 0,G=W?g:R,K=ie,ue=e=>{W||z(e.target.value),_?.(e)},de=()=>{let e=H.current;if(!e)return;let t=Object.getOwnPropertyDescriptor(window.HTMLInputElement.prototype,`value`)?.set;t?(t.call(e,``),e.dispatchEvent(new Event(`input`,{bubbles:!0}))):(W||z(``),_&&(e.value=``,_({target:e,currentTarget:e}))),W||z(``)},q=()=>{V(e=>!e)},fe=v===`password`&&p,J=[];fe&&J.push({name:B?`EyeOffIcon`:`EyeIcon`,onClick:e=>q(),ariaLabel:B?I:F}),l&&(J.some(e=>e.name===l)||J.push({name:l,onClick:d,color:se,ariaLabel:L,className:m,rotated:ce}));let pe=v===`password`&&B?`text`:v,Y=b?`danger`:e,me=(0,i.useId)(),X=C||`wim-input-${me}`,Z=b?`${X}-error`:void 0,Q=O!=null&&O!==``?`${X}-suffix`:void 0,he=[Z,Q].filter(Boolean).join(` `)||void 0,$=y?`${X}-label`:void 0;return(0,o.jsx)(ne.FieldTemplate,{label:y,error:b,required:x,layout:S,labelId:$,htmlFor:X,errorId:Z,className:re,children:(0,o.jsx)(te.InputBase,{intent:Y,variant:s,fullWidth:c,width:h,disabled:K,leftIcon:ae,leftIconColor:oe,onLeftIconClick:u,rightIcons:J,suffix:O,suffixId:Q,allowClear:f,hasValue:!!G,onClear:de,styles:k,children:(0,o.jsx)(A?t.Root:`input`,{id:X,ref:U,className:(0,a.default)(`wim-input`,r.default.root,r.default[Y],K&&r.default.disabled,r.default[s],w),disabled:K,value:G,onChange:ue,type:pe,"aria-invalid":Y===`danger`,"aria-describedby":he,"aria-labelledby":y?$:void 0,"aria-required":x,...M,children:A?(0,o.jsx)(t.Slottable,{children:j}):null})})})});s.displayName=`Input`,exports.Input=s,exports.default=s;
2
+ const e=require("../../../_virtual/_rolldown/runtime.cjs"),t=require("../../../node_modules/@radix-ui/react-slot/dist/index.cjs"),ee=require("../../../i18n/useWimTranslation.cjs"),n=require("../../../hooks/useMergedRef.cjs"),te=require("../InputBase/InputBase.cjs"),ne=require("../FieldTemplate/FieldTemplate.cjs"),r=require("./input.module.cjs");let i=require("react");i=e.__toESM(i,1);let a=require("classnames");a=e.__toESM(a,1);let o=require("react/jsx-runtime");var s=(0,i.forwardRef)(({intent:e=`default`,variant:s=`outline`,fullWidth:re=!1,className:c,disabled:l,leftIcon:u,rightIcon:d,leftIconColor:f,rightIconColor:ie,onLeftIconClick:p,onRightIconClick:m,allowClear:ae=!1,showPasswordToggle:oe=!0,rightIconClassName:se,rightIconRotated:ce,width:le,value:h,defaultValue:ue,onChange:g,type:_,label:v,error:y,required:b,layout:x,id:S,inputClassName:C,showPasswordAriaLabel:w,hidePasswordAriaLabel:T,rightIconAriaLabel:E,rightIconDecorative:D=!1,suffix:O,styles:k,asChild:A=!1,children:j,...M},N)=>{let{t:P}=ee.useWimTranslation(`common`),F=w??P(`a11y.show_password`),I=T??P(`a11y.hide_password`),L=E??P(`a11y.right_icon_action`),[R,z]=(0,i.useState)(ue??``),[B,V]=(0,i.useState)(!1),H=(0,i.useRef)(null),U=n.useMergedRef(N,H),W=h!==void 0,G=W?h:R,K=l,de=e=>{W||z(e.target.value),g?.(e)},fe=()=>{let e=H.current;if(!e)return;let t=Object.getOwnPropertyDescriptor(window.HTMLInputElement.prototype,`value`)?.set;t?(t.call(e,``),e.dispatchEvent(new Event(`input`,{bubbles:!0}))):(W||z(``),g&&(e.value=``,g({target:e,currentTarget:e}))),W||z(``)},pe=()=>{V(e=>!e)},me=_===`password`&&oe,q=[];me&&q.push({name:B?`EyeOffIcon`:`EyeIcon`,onClick:e=>pe(),ariaLabel:B?I:F}),d&&(q.some(e=>e.name===d)||q.push({name:d,onClick:m,color:ie,ariaLabel:L,decorative:D,className:se,rotated:ce}));let J=_===`password`&&B?`text`:_,Y=y?`danger`:e,he=(0,i.useId)(),X=S||`wim-input-${he}`,Z=y?`${X}-error`:void 0,Q=O!=null&&O!==``?`${X}-suffix`:void 0,ge=[Z,Q].filter(Boolean).join(` `)||void 0,$=v?`${X}-label`:void 0;return(0,o.jsx)(ne.FieldTemplate,{label:v,error:y,required:b,layout:x,labelId:$,htmlFor:X,errorId:Z,className:c,children:(0,o.jsx)(te.InputBase,{intent:Y,variant:s,fullWidth:re,width:le,disabled:K,leftIcon:u,leftIconColor:f,onLeftIconClick:p,rightIcons:q,suffix:O,suffixId:Q,allowClear:ae,hasValue:!!G,onClear:fe,styles:k,children:(0,o.jsx)(A?t.Root:`input`,{id:X,ref:U,className:(0,a.default)(`wim-input`,r.default.root,r.default[Y],K&&r.default.disabled,r.default[s],C),disabled:K,value:G,onChange:de,type:J,"aria-invalid":Y===`danger`,"aria-describedby":ge,"aria-labelledby":v?$:void 0,"aria-required":b,...M,children:A?(0,o.jsx)(t.Slottable,{children:j}):null})})})});s.displayName=`Input`,exports.Input=s,exports.default=s;
@@ -47,6 +47,13 @@ export interface InputProps extends Omit<React.ComponentPropsWithoutRef<"input">
47
47
  hidePasswordAriaLabel?: string;
48
48
  /** Aria label for the right icon button */
49
49
  rightIconAriaLabel?: string;
50
+ /**
51
+ * Treats the clickable right icon as a pointer-only affordance: it stays
52
+ * clickable but leaves the tab order and is hidden from assistive technology.
53
+ * Use it when the field already does the same thing from the keyboard.
54
+ * @default false
55
+ */
56
+ rightIconDecorative?: boolean;
50
57
  /**
51
58
  * Static text shown after the field, inside the same shell — a unit such as
52
59
  * `kg`, `%` or `円`. It is announced with the field via `aria-describedby`,
@@ -1,42 +1,43 @@
1
1
  "use client";
2
2
  import { Root as e, Slottable as t } from "../../../node_modules/@radix-ui/react-slot/dist/index.js";
3
- import { useWimTranslation as n } from "../../../i18n/useWimTranslation.js";
4
- import { useMergedRef as r } from "../../../hooks/useMergedRef.js";
5
- import { InputBase as i } from "../InputBase/InputBase.js";
6
- import { FieldTemplate as a } from "../FieldTemplate/FieldTemplate.js";
7
- import o from "./input.module.js";
8
- import { forwardRef as s, useId as ee, useRef as c, useState as l } from "react";
9
- import u from "classnames";
10
- import { jsx as d } from "react/jsx-runtime";
3
+ import { useWimTranslation as ee } from "../../../i18n/useWimTranslation.js";
4
+ import { useMergedRef as te } from "../../../hooks/useMergedRef.js";
5
+ import { InputBase as n } from "../InputBase/InputBase.js";
6
+ import { FieldTemplate as r } from "../FieldTemplate/FieldTemplate.js";
7
+ import i from "./input.module.js";
8
+ import { forwardRef as a, useId as o, useRef as s, useState as c } from "react";
9
+ import l from "classnames";
10
+ import { jsx as u } from "react/jsx-runtime";
11
11
  //#region src/components/form/Input/Input.tsx
12
- var f = s(({ intent: s = "default", variant: f = "outline", fullWidth: p = !1, className: m, disabled: h, leftIcon: g, rightIcon: _, leftIconColor: te, rightIconColor: ne, onLeftIconClick: re, onRightIconClick: ie, allowClear: ae = !1, showPasswordToggle: oe = !0, rightIconClassName: se, rightIconRotated: ce, width: le, value: v, defaultValue: ue, onChange: y, type: b, label: x, error: S, required: C, layout: w, id: T, inputClassName: E, showPasswordAriaLabel: D, hidePasswordAriaLabel: O, rightIconAriaLabel: k, suffix: A, styles: j, asChild: M = !1, children: N, ...P }, F) => {
13
- let { t: I } = n("common"), L = D ?? I("a11y.show_password"), R = O ?? I("a11y.hide_password"), de = k ?? I("a11y.right_icon_action"), [z, B] = l(ue ?? ""), [V, H] = l(!1), U = c(null), fe = r(F, U), W = v !== void 0, G = W ? v : z, K = h, pe = (e) => {
14
- W || B(e.target.value), y?.(e);
15
- }, me = () => {
12
+ var d = a(({ intent: a = "default", variant: d = "outline", fullWidth: f = !1, className: ne, disabled: re, leftIcon: ie, rightIcon: p, leftIconColor: ae, rightIconColor: oe, onLeftIconClick: m, onRightIconClick: se, allowClear: h = !1, showPasswordToggle: g = !0, rightIconClassName: _, rightIconRotated: ce, width: le, value: v, defaultValue: ue, onChange: y, type: b, label: x, error: S, required: C, layout: w, id: T, inputClassName: E, showPasswordAriaLabel: D, hidePasswordAriaLabel: O, rightIconAriaLabel: k, rightIconDecorative: A = !1, suffix: j, styles: M, asChild: N = !1, children: P, ...F }, I) => {
13
+ let { t: L } = ee("common"), R = D ?? L("a11y.show_password"), de = O ?? L("a11y.hide_password"), z = k ?? L("a11y.right_icon_action"), [B, V] = c(ue ?? ""), [H, fe] = c(!1), U = s(null), pe = te(I, U), W = v !== void 0, G = W ? v : B, K = re, me = (e) => {
14
+ W || V(e.target.value), y?.(e);
15
+ }, q = () => {
16
16
  let e = U.current;
17
17
  if (!e) return;
18
18
  let t = Object.getOwnPropertyDescriptor(window.HTMLInputElement.prototype, "value")?.set;
19
- t ? (t.call(e, ""), e.dispatchEvent(new Event("input", { bubbles: !0 }))) : (W || B(""), y && (e.value = "", y({
19
+ t ? (t.call(e, ""), e.dispatchEvent(new Event("input", { bubbles: !0 }))) : (W || V(""), y && (e.value = "", y({
20
20
  target: e,
21
21
  currentTarget: e
22
- }))), W || B("");
22
+ }))), W || V("");
23
23
  }, he = () => {
24
- H((e) => !e);
25
- }, ge = b === "password" && oe, q = [];
26
- ge && q.push({
27
- name: V ? "EyeOffIcon" : "EyeIcon",
24
+ fe((e) => !e);
25
+ }, ge = b === "password" && g, J = [];
26
+ ge && J.push({
27
+ name: H ? "EyeOffIcon" : "EyeIcon",
28
28
  onClick: (e) => he(),
29
- ariaLabel: V ? R : L
30
- }), _ && (q.some((e) => e.name === _) || q.push({
31
- name: _,
32
- onClick: ie,
33
- color: ne,
34
- ariaLabel: de,
35
- className: se,
29
+ ariaLabel: H ? de : R
30
+ }), p && (J.some((e) => e.name === p) || J.push({
31
+ name: p,
32
+ onClick: se,
33
+ color: oe,
34
+ ariaLabel: z,
35
+ decorative: A,
36
+ className: _,
36
37
  rotated: ce
37
38
  }));
38
- let _e = b === "password" && V ? "text" : b, J = S ? "danger" : s, Y = ee(), X = T || `wim-input-${Y}`, Z = S ? `${X}-error` : void 0, Q = A != null && A !== "" ? `${X}-suffix` : void 0, ve = [Z, Q].filter(Boolean).join(" ") || void 0, $ = x ? `${X}-label` : void 0;
39
- return /* @__PURE__ */ d(a, {
39
+ let _e = b === "password" && H ? "text" : b, Y = S ? "danger" : a, ve = o(), X = T || `wim-input-${ve}`, Z = S ? `${X}-error` : void 0, Q = j != null && j !== "" ? `${X}-suffix` : void 0, ye = [Z, Q].filter(Boolean).join(" ") || void 0, $ = x ? `${X}-label` : void 0;
40
+ return /* @__PURE__ */ u(r, {
40
41
  label: x,
41
42
  error: S,
42
43
  required: C,
@@ -44,41 +45,41 @@ var f = s(({ intent: s = "default", variant: f = "outline", fullWidth: p = !1, c
44
45
  labelId: $,
45
46
  htmlFor: X,
46
47
  errorId: Z,
47
- className: m,
48
- children: /* @__PURE__ */ d(i, {
49
- intent: J,
50
- variant: f,
51
- fullWidth: p,
48
+ className: ne,
49
+ children: /* @__PURE__ */ u(n, {
50
+ intent: Y,
51
+ variant: d,
52
+ fullWidth: f,
52
53
  width: le,
53
54
  disabled: K,
54
- leftIcon: g,
55
- leftIconColor: te,
56
- onLeftIconClick: re,
57
- rightIcons: q,
58
- suffix: A,
55
+ leftIcon: ie,
56
+ leftIconColor: ae,
57
+ onLeftIconClick: m,
58
+ rightIcons: J,
59
+ suffix: j,
59
60
  suffixId: Q,
60
- allowClear: ae,
61
+ allowClear: h,
61
62
  hasValue: !!G,
62
- onClear: me,
63
- styles: j,
64
- children: /* @__PURE__ */ d(M ? e : "input", {
63
+ onClear: q,
64
+ styles: M,
65
+ children: /* @__PURE__ */ u(N ? e : "input", {
65
66
  id: X,
66
- ref: fe,
67
- className: u("wim-input", o.root, o[J], K && o.disabled, o[f], E),
67
+ ref: pe,
68
+ className: l("wim-input", i.root, i[Y], K && i.disabled, i[d], E),
68
69
  disabled: K,
69
70
  value: G,
70
- onChange: pe,
71
+ onChange: me,
71
72
  type: _e,
72
- "aria-invalid": J === "danger",
73
- "aria-describedby": ve,
73
+ "aria-invalid": Y === "danger",
74
+ "aria-describedby": ye,
74
75
  "aria-labelledby": x ? $ : void 0,
75
76
  "aria-required": C,
76
- ...P,
77
- children: M ? /* @__PURE__ */ d(t, { children: N }) : null
77
+ ...F,
78
+ children: N ? /* @__PURE__ */ u(t, { children: P }) : null
78
79
  })
79
80
  })
80
81
  });
81
82
  });
82
- f.displayName = "Input";
83
+ d.displayName = "Input";
83
84
  //#endregion
84
- export { f as Input, f as default };
85
+ export { d as Input, d as default };
@@ -1,2 +1,2 @@
1
1
  "use client";
2
- const e=require("../../../_virtual/_rolldown/runtime.cjs"),t=require("../../../i18n/useWimTranslation.cjs"),n=require("../../media/Icon/Icon.cjs"),r=require("./input-base.module.cjs");let i=require("react");i=e.__toESM(i,1);let a=require("classnames");a=e.__toESM(a,1);let o=require("react/jsx-runtime");var s=({children:e,intent:s=`default`,variant:c=`outline`,fullWidth:l=!1,width:u,className:d,disabled:f,leftIcon:p,leftIconColor:m,onLeftIconClick:h,leftIconAriaLabel:g,rightIcons:_=[],suffix:v,suffixId:y,allowClear:b,hasValue:x,onClear:S,clearAriaLabel:C,styles:w})=>{let{t:T}=t.useWimTranslation(`common`),E=g??T(`a11y.left_icon_action`),D=C??T(`a11y.clear_input`),O=typeof u==`string`&&[`xs`,`sm`,`md`,`lg`,`xl`].includes(u),k=i.default.Children.map(e,e=>i.default.isValidElement(e)?i.default.cloneElement(e,{disabled:f?!0:e.props.disabled,className:(0,a.default)(e.props.className,r.default.inner,w?.inner)}):e),A=u!==void 0&&!O&&!l,j=O&&!l?u:void 0,M=e=>f?`disabled`:e||(s===`danger`?`danger`:s===`warning`?`warning`:s===`success`?`success`:`secondary`),N=[..._];b&&x&&!f&&N.push({name:`CloseIcon`,onClick:e=>{e.stopPropagation(),S?.()},ariaLabel:D});let P=j?r.default[`width${j.charAt(0).toUpperCase()}${j.slice(1)}`]:void 0;return(0,o.jsxs)(`div`,{className:(0,a.default)(`wim-input-base`,r.default.root,s&&r.default[s],f&&r.default.disabled,r.default[c],l&&r.default.fullWidth,A&&r.default.hasCustomWidth,P,p&&r.default.hasLeftIcon,(N.length>0||b)&&r.default.hasRightIcon,(N.length>=2||_.length>=1&&b)&&r.default.hasMultipleRightIcons,d,w?.root),style:A?{"--wim-input-width":typeof u==`number`?`${u}px`:u}:void 0,children:[p&&(0,o.jsx)(`div`,{className:(0,a.default)(r.default.icon,r.default.left,h&&r.default.clickable,w?.icon),children:h?(0,o.jsx)(`button`,{type:`button`,onClick:h,className:(0,a.default)(r.default.iconButton,w?.iconButton),"aria-label":E,children:(0,o.jsx)(n.Icon,{name:p,size:`md`,color:M(m)})}):(0,o.jsx)(n.Icon,{name:p,size:`md`,color:M(m)})}),k,v!=null&&v!==``&&(0,o.jsx)(`span`,{id:y,className:(0,a.default)(r.default.suffix,N.length>0&&r.default.suffixClearsIcons),"data-testid":`input-suffix`,children:v}),N.length>0&&(0,o.jsx)(`div`,{className:(0,a.default)(r.default.icons,r.default.right,w?.icons),children:N.map((e,t)=>(0,o.jsx)(`div`,{className:(0,a.default)(r.default.iconItem,e.onClick&&r.default.clickable,e.rotated&&r.default.rotated,e.className,w?.iconItem),children:e.onClick?(0,o.jsx)(`button`,{type:`button`,onClick:e.onClick,className:(0,a.default)(r.default.iconButton,w?.iconButton),"aria-label":e.ariaLabel??T(`a11y.right_icon_action`),children:(0,o.jsx)(n.Icon,{name:e.name,size:`md`,color:M(e.color)})}):(0,o.jsx)(n.Icon,{name:e.name,size:`md`,color:M(e.color)})},`${e.name}-${t}`))})]})};exports.InputBase=s;
2
+ const e=require("../../../_virtual/_rolldown/runtime.cjs"),t=require("../../../i18n/useWimTranslation.cjs"),n=require("../../media/Icon/Icon.cjs"),r=require("./input-base.module.cjs");let i=require("react");i=e.__toESM(i,1);let a=require("classnames");a=e.__toESM(a,1);let o=require("react/jsx-runtime");var s=({children:e,intent:s=`default`,variant:c=`outline`,fullWidth:l=!1,width:u,className:d,disabled:f,leftIcon:p,leftIconColor:m,onLeftIconClick:h,leftIconAriaLabel:g,rightIcons:_=[],suffix:v,suffixId:y,allowClear:b,hasValue:x,onClear:S,clearAriaLabel:C,styles:w})=>{let{t:T}=t.useWimTranslation(`common`),E=g??T(`a11y.left_icon_action`),D=C??T(`a11y.clear_input`),O=typeof u==`string`&&[`xs`,`sm`,`md`,`lg`,`xl`].includes(u),k=i.default.Children.map(e,e=>i.default.isValidElement(e)?i.default.cloneElement(e,{disabled:f?!0:e.props.disabled,className:(0,a.default)(e.props.className,r.default.inner,w?.inner)}):e),A=u!==void 0&&!O&&!l,j=O&&!l?u:void 0,M=e=>f?`disabled`:e||(s===`danger`?`danger`:s===`warning`?`warning`:s===`success`?`success`:`secondary`),N=[..._];b&&x&&!f&&N.push({name:`CloseIcon`,onClick:e=>{e.stopPropagation(),S?.()},ariaLabel:D});let P=j?r.default[`width${j.charAt(0).toUpperCase()}${j.slice(1)}`]:void 0;return(0,o.jsxs)(`div`,{className:(0,a.default)(`wim-input-base`,r.default.root,s&&r.default[s],f&&r.default.disabled,r.default[c],l&&r.default.fullWidth,A&&r.default.hasCustomWidth,P,p&&r.default.hasLeftIcon,(N.length>0||b)&&r.default.hasRightIcon,(N.length>=2||_.length>=1&&b)&&r.default.hasMultipleRightIcons,d,w?.root),style:A?{"--wim-input-width":typeof u==`number`?`${u}px`:u}:void 0,children:[p&&(0,o.jsx)(`div`,{className:(0,a.default)(r.default.icon,r.default.left,h&&r.default.clickable,w?.icon),children:h?(0,o.jsx)(`button`,{type:`button`,onClick:h,className:(0,a.default)(r.default.iconButton,w?.iconButton),"aria-label":E,disabled:f,children:(0,o.jsx)(n.Icon,{name:p,size:`md`,color:M(m)})}):(0,o.jsx)(n.Icon,{name:p,size:`md`,color:M(m)})}),k,v!=null&&v!==``&&(0,o.jsx)(`span`,{id:y,className:(0,a.default)(r.default.suffix,N.length>0&&r.default.suffixClearsIcons),"data-testid":`input-suffix`,children:v}),N.length>0&&(0,o.jsx)(`div`,{className:(0,a.default)(r.default.icons,r.default.right,w?.icons),children:N.map((e,t)=>(0,o.jsx)(`div`,{className:(0,a.default)(r.default.iconItem,e.onClick&&r.default.clickable,e.rotated&&r.default.rotated,e.className,w?.iconItem),children:e.onClick?(0,o.jsx)(`button`,{type:`button`,onClick:e.onClick,className:(0,a.default)(r.default.iconButton,w?.iconButton),disabled:f,tabIndex:e.decorative?-1:void 0,"aria-hidden":e.decorative||void 0,"aria-label":e.decorative?void 0:e.ariaLabel??T(`a11y.right_icon_action`),children:(0,o.jsx)(n.Icon,{name:e.name,size:`md`,color:M(e.color)})}):(0,o.jsx)(n.Icon,{name:e.name,size:`md`,color:M(e.color)})},`${e.name}-${t}`))})]})};exports.InputBase=s;
@@ -9,6 +9,13 @@ export type InputBaseIcon = {
9
9
  className?: string;
10
10
  /** Whether the icon should be rotated 180deg */
11
11
  rotated?: boolean;
12
+ /**
13
+ * Marks a clickable icon as a pointer-only affordance that repeats what the
14
+ * control already does from the keyboard (the chevron of a combobox, the
15
+ * clock of a time field). It stays clickable but is taken out of the tab
16
+ * order and hidden from assistive technology, so it needs no name.
17
+ */
18
+ decorative?: boolean;
12
19
  };
13
20
  export type InputBaseProps = {
14
21
  /** Inner form control element(s) wrapped by the shell */
@@ -36,6 +36,7 @@ var s = ({ children: s, intent: c = "default", variant: l = "outline", fullWidth
36
36
  onClick: g,
37
37
  className: i(n.iconButton, T?.iconButton),
38
38
  "aria-label": D,
39
+ disabled: p,
39
40
  children: /* @__PURE__ */ a(t, {
40
41
  name: m,
41
42
  size: "md",
@@ -62,7 +63,10 @@ var s = ({ children: s, intent: c = "default", variant: l = "outline", fullWidth
62
63
  type: "button",
63
64
  onClick: e.onClick,
64
65
  className: i(n.iconButton, T?.iconButton),
65
- "aria-label": e.ariaLabel ?? E("a11y.right_icon_action"),
66
+ disabled: p,
67
+ tabIndex: e.decorative ? -1 : void 0,
68
+ "aria-hidden": e.decorative || void 0,
69
+ "aria-label": e.decorative ? void 0 : e.ariaLabel ?? E("a11y.right_icon_action"),
66
70
  children: /* @__PURE__ */ a(t, {
67
71
  name: e.name,
68
72
  size: "md",
@@ -1,2 +1,2 @@
1
1
  "use client";
2
- var e=`_root_10lt5_36`,t=`_ghost_10lt5_81`,n=`_disabled_10lt5_85`,r=`_icon_10lt5_94`,i=`_iconItem_10lt5_94`,a=`_danger_10lt5_7`,o=`_warning_10lt5_110`,s=`_success_10lt5_113`,c=`_hasLeftIcon_10lt5_146`,l=`_hasRightIcon_10lt5_149`,u=`_hasMultipleRightIcons_10lt5_152`,d=`_widthXs_10lt5_155`,f=`_widthSm_10lt5_158`,p=`_widthMd_10lt5_161`,m=`_widthLg_10lt5_164`,h=`_widthXl_10lt5_167`,g=`_hasCustomWidth_10lt5_170`,_=`_fullWidth_10lt5_175`,v=`_clickable_10lt5_197`,y=`_left_10lt5_200`,b=`_suffix_10lt5_203`,x=`_suffixClearsIcons_10lt5_211`,S=`_icons_10lt5_214`,C=`_right_10lt5_229`,w=`_rotated_10lt5_241`,T=`_iconButton_10lt5_244`,E=`_inner_10lt5_266`,D={root:e,ghost:t,disabled:n,icon:r,iconItem:i,danger:a,warning:o,success:s,hasLeftIcon:c,hasRightIcon:l,hasMultipleRightIcons:u,widthXs:d,widthSm:f,widthMd:p,widthLg:m,widthXl:h,hasCustomWidth:g,fullWidth:_,clickable:v,left:y,suffix:b,suffixClearsIcons:x,icons:S,right:C,rotated:w,iconButton:T,inner:E};exports.clickable=v,exports.danger=a,exports.default=D,exports.disabled=n,exports.fullWidth=_,exports.ghost=t,exports.hasCustomWidth=g,exports.hasLeftIcon=c,exports.hasMultipleRightIcons=u,exports.hasRightIcon=l,exports.icon=r,exports.iconButton=T,exports.iconItem=i,exports.icons=S,exports.inner=E,exports.left=y,exports.right=C,exports.root=e,exports.rotated=w,exports.success=s,exports.suffix=b,exports.suffixClearsIcons=x,exports.warning=o,exports.widthLg=m,exports.widthMd=p,exports.widthSm=f,exports.widthXl=h,exports.widthXs=d;
2
+ var e=`_root_43cv5_36`,t=`_ghost_43cv5_81`,n=`_disabled_43cv5_85`,r=`_icon_43cv5_94`,i=`_iconItem_43cv5_94`,a=`_danger_43cv5_7`,o=`_warning_43cv5_110`,s=`_success_43cv5_113`,c=`_hasLeftIcon_43cv5_146`,l=`_hasRightIcon_43cv5_149`,u=`_hasMultipleRightIcons_43cv5_152`,d=`_widthXs_43cv5_155`,f=`_widthSm_43cv5_158`,p=`_widthMd_43cv5_161`,m=`_widthLg_43cv5_164`,h=`_widthXl_43cv5_167`,g=`_hasCustomWidth_43cv5_170`,_=`_fullWidth_43cv5_175`,v=`_clickable_43cv5_197`,y=`_left_43cv5_200`,b=`_suffix_43cv5_203`,x=`_suffixClearsIcons_43cv5_211`,S=`_icons_43cv5_214`,C=`_right_43cv5_229`,w=`_rotated_43cv5_241`,T=`_iconButton_43cv5_244`,E=`_inner_43cv5_270`,D={root:e,ghost:t,disabled:n,icon:r,iconItem:i,danger:a,warning:o,success:s,hasLeftIcon:c,hasRightIcon:l,hasMultipleRightIcons:u,widthXs:d,widthSm:f,widthMd:p,widthLg:m,widthXl:h,hasCustomWidth:g,fullWidth:_,clickable:v,left:y,suffix:b,suffixClearsIcons:x,icons:S,right:C,rotated:w,iconButton:T,inner:E};exports.clickable=v,exports.danger=a,exports.default=D,exports.disabled=n,exports.fullWidth=_,exports.ghost=t,exports.hasCustomWidth=g,exports.hasLeftIcon=c,exports.hasMultipleRightIcons=u,exports.hasRightIcon=l,exports.icon=r,exports.iconButton=T,exports.iconItem=i,exports.icons=S,exports.inner=E,exports.left=y,exports.right=C,exports.root=e,exports.rotated=w,exports.success=s,exports.suffix=b,exports.suffixClearsIcons=x,exports.warning=o,exports.widthLg=m,exports.widthMd=p,exports.widthSm=f,exports.widthXl=h,exports.widthXs=d;
@@ -1,6 +1,6 @@
1
1
  "use client";
2
2
  //#region src/components/form/InputBase/input-base.module.scss
3
- var e = "_root_10lt5_36", t = "_ghost_10lt5_81", n = "_disabled_10lt5_85", r = "_icon_10lt5_94", i = "_iconItem_10lt5_94", a = "_danger_10lt5_7", o = "_warning_10lt5_110", s = "_success_10lt5_113", c = "_hasLeftIcon_10lt5_146", l = "_hasRightIcon_10lt5_149", u = "_hasMultipleRightIcons_10lt5_152", d = "_widthXs_10lt5_155", f = "_widthSm_10lt5_158", p = "_widthMd_10lt5_161", m = "_widthLg_10lt5_164", h = "_widthXl_10lt5_167", g = "_hasCustomWidth_10lt5_170", _ = "_fullWidth_10lt5_175", v = "_clickable_10lt5_197", y = "_left_10lt5_200", b = "_suffix_10lt5_203", x = "_suffixClearsIcons_10lt5_211", S = "_icons_10lt5_214", C = "_right_10lt5_229", w = "_rotated_10lt5_241", T = "_iconButton_10lt5_244", E = "_inner_10lt5_266", D = {
3
+ var e = "_root_43cv5_36", t = "_ghost_43cv5_81", n = "_disabled_43cv5_85", r = "_icon_43cv5_94", i = "_iconItem_43cv5_94", a = "_danger_43cv5_7", o = "_warning_43cv5_110", s = "_success_43cv5_113", c = "_hasLeftIcon_43cv5_146", l = "_hasRightIcon_43cv5_149", u = "_hasMultipleRightIcons_43cv5_152", d = "_widthXs_43cv5_155", f = "_widthSm_43cv5_158", p = "_widthMd_43cv5_161", m = "_widthLg_43cv5_164", h = "_widthXl_43cv5_167", g = "_hasCustomWidth_43cv5_170", _ = "_fullWidth_43cv5_175", v = "_clickable_43cv5_197", y = "_left_43cv5_200", b = "_suffix_43cv5_203", x = "_suffixClearsIcons_43cv5_211", S = "_icons_43cv5_214", C = "_right_43cv5_229", w = "_rotated_43cv5_241", T = "_iconButton_43cv5_244", E = "_inner_43cv5_270", D = {
4
4
  root: e,
5
5
  ghost: t,
6
6
  disabled: n,
@@ -1,2 +1,2 @@
1
1
  "use client";
2
- const e=require("../../../_virtual/_rolldown/runtime.cjs"),t=require("../../../hooks/useMergedRef.cjs"),n=require("../Input/input.module.cjs"),r=require("../Input/Input.cjs"),i=require("./time-picker.module.cjs");let a=require("react");a=e.__toESM(a,1);let o=require("classnames");o=e.__toESM(o,1);let s=require("react/jsx-runtime");var c=(0,a.forwardRef)(({intent:e=`default`,variant:c=`outline`,fullWidth:l=!1,className:u,disabled:d,allowClear:f=!0,value:p,defaultValue:m,onChange:h,...g},_)=>{let v=p!==void 0,[y,b]=(0,a.useState)(m??``),x=v?p:y,S=(0,a.useRef)(null),C=t.useMergedRef(_,S),w=f&&!!x&&!d,T=w?void 0:`ClockIcon`;return(0,s.jsx)(r.Input,{ref:C,type:`time`,allowClear:w,intent:e,variant:c,fullWidth:l,className:(0,o.default)(`wim-time-picker`,u),inputClassName:(0,o.default)(n.default.root,i.default.input),disabled:d,value:p,defaultValue:m,onChange:e=>{v||b(e.target.value),h?.(e)},rightIcon:T,rightIconColor:d||w?void 0:`primary`,onRightIconClick:w?void 0:()=>{S.current?.showPicker?.()},...g})});c.displayName=`TimePicker`,exports.TimePicker=c;
2
+ const e=require("../../../_virtual/_rolldown/runtime.cjs"),t=require("../../../hooks/useMergedRef.cjs"),n=require("../Input/input.module.cjs"),r=require("../Input/Input.cjs"),i=require("./time-picker.module.cjs");let a=require("react");a=e.__toESM(a,1);let o=require("classnames");o=e.__toESM(o,1);let s=require("react/jsx-runtime");var c=(0,a.forwardRef)(({intent:e=`default`,variant:c=`outline`,fullWidth:l=!1,className:u,disabled:d,allowClear:f=!0,value:p,defaultValue:m,onChange:h,...g},_)=>{let v=p!==void 0,[y,b]=(0,a.useState)(m??``),x=v?p:y,S=(0,a.useRef)(null),C=t.useMergedRef(_,S),w=f&&!!x&&!d,T=w?void 0:`ClockIcon`;return(0,s.jsx)(r.Input,{ref:C,type:`time`,allowClear:w,intent:e,variant:c,fullWidth:l,className:(0,o.default)(`wim-time-picker`,u),inputClassName:(0,o.default)(n.default.root,i.default.input),disabled:d,value:p,defaultValue:m,onChange:e=>{v||b(e.target.value),h?.(e)},rightIcon:T,rightIconColor:d||w?void 0:`primary`,onRightIconClick:w?void 0:()=>{S.current?.showPicker?.()},rightIconDecorative:!0,...g})});c.displayName=`TimePicker`,exports.TimePicker=c;
@@ -29,6 +29,7 @@ var l = i(({ intent: i = "default", variant: l = "outline", fullWidth: u = !1, c
29
29
  onRightIconClick: T ? void 0 : () => {
30
30
  C.current?.showPicker?.();
31
31
  },
32
+ rightIconDecorative: !0,
32
33
  ..._
33
34
  });
34
35
  });
@@ -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"),ee=require("../../overlay/FocusTrap/FocusTrap.cjs"),r=require("../../../hooks/useMergedRef.cjs"),i=require("../InputBase/InputBase.cjs"),a=require("../FieldTemplate/FieldTemplate.cjs"),te=require("../../data-display/TreeView/TreeView.cjs"),o=require("./tree-select.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");function u(e){return e.map(e=>({value:e.value,label:e.label,disabled:e.disabled,icon:e.icon,children:e.children?u(e.children):void 0}))}var d=(0,s.forwardRef)(({treeData:e=[],value:d,onChange:f,placeholder:p,label:m,error:h,required:g,layout:_,className:v,disabled:y=!1,multiple:b=!1,searchable:x=!1,defaultExpandedKeys:S=[],allowClear:C=!1,checkStrategy:w=`cascade`,id:T,width:E,fullWidth:D=!1,asChild:O=!1,children:ne,...re},ie)=>{let ae=(0,s.useId)(),k=T||`wim-tree-select-${ae}`,A=m?`${k}-label`:void 0,j=h?`${k}-error`:void 0,M=`${k}-trigger`,N=`${k}-dropdown`,[P,F]=(0,s.useState)(!1),[I,L]=(0,s.useState)(b?[]:``),R=(0,s.useRef)(null),z=(0,s.useRef)(null),B=d!==void 0,V=B?d:I;(0,s.useEffect)(()=>{let e=e=>{R.current&&!R.current.contains(e.target)&&F(!1)};return document.addEventListener(`mousedown`,e),()=>document.removeEventListener(`mousedown`,e)},[]),(0,s.useEffect)(()=>{if(P){let e=setTimeout(()=>{let e=R.current?.querySelector(`[data-testid="tree-view-search-input"]`);e?e.focus():(R.current?.querySelector(`[data-testid="tree-view-root"]`))?.focus()},100);return()=>clearTimeout(e)}},[P]);let H=()=>{if(!y){let e=!P;F(e),e||z.current?.focus()}},U=e=>{if(!y){if(!P){(e.key===`Enter`||e.key===` `||e.key===`ArrowDown`)&&(e.preventDefault(),F(!0));return}e.key===`Escape`&&(e.preventDefault(),F(!1),z.current?.focus())}},W=(0,s.useMemo)(()=>{let t={},n=e=>{e.forEach(e=>{t[e.value]=e,e.children&&n(e.children)})};return n(e),t},[e]),G=()=>{if(b){let e=Array.isArray(V)?V:[];return e.length===0?null:e.map(e=>W[e]?W[e].label:e).reduce((e,t)=>[e,`, `,t])}{let e=V;return e?W[e]?W[e].label:e:null}},K=e=>{let t;b?t=e:(t=e[0]||``,F(!1),z.current?.focus()),B||L(t),f&&f(t)},q=()=>{if(y)return;let e=b?[]:``;B||L(e),f&&f(e)},oe=(0,s.useMemo)(()=>u(e),[e]),J=(0,s.useMemo)(()=>b?Array.isArray(V)?V:[]:V?[V]:[],[V,b]),Y=G(),{"aria-label":X,"aria-labelledby":Z,"aria-describedby":se,...ce}=re,Q=typeof p==`string`?p:`Select`,le=O?t.Root:`div`,$=r.useMergedRef(R,ie);return(0,l.jsx)(a.FieldTemplate,{label:m,error:h,required:g,layout:_,labelId:A,errorId:j,className:(0,c.default)(o.default.container,v),children:(0,l.jsxs)(le,{className:(0,c.default)(`wim-tree-select`,o.default.root,D&&o.default.fullWidth),ref:$,...ce,children:[(0,l.jsx)(t.Slottable,{children:ne}),(0,l.jsx)(i.InputBase,{disabled:y,allowClear:C,hasValue:!!Y,onClear:q,intent:h?`danger`:`default`,width:E,fullWidth:D,rightIcons:[{name:`ChevronDownIcon`,rotated:P,onClick:H}],className:(0,c.default)(P&&o.default.open),children:(0,l.jsx)(`div`,{id:M,className:(0,c.default)(o.default.trigger,y&&o.default.disabled),onClick:H,onKeyDown:U,tabIndex:y?-1:0,role:`combobox`,"aria-expanded":P,"aria-haspopup":`tree`,"aria-controls":P?N:void 0,"aria-disabled":y,"aria-labelledby":A||Z,"aria-label":m?void 0:X||Q,"aria-describedby":j||se,"aria-required":g,"aria-invalid":!!h,ref:z,children:(0,l.jsx)(`div`,{className:(0,c.default)(o.default.value,!Y&&o.default.placeholder),children:Y||p})})}),(0,l.jsx)(n.Transition,{show:P&&!y,preset:`fade`,className:o.default.dropdown,children:(0,l.jsx)(`div`,{id:N,children:(0,l.jsx)(ee.FocusTrap,{active:P,initialFocus:!1,children:(0,l.jsx)(`div`,{role:`dialog`,"aria-modal":`true`,"aria-labelledby":A||Z,"aria-label":m?void 0:X||Q,children:(0,l.jsx)(te.TreeView,{multiSelect:b,defaultSelectedValues:J,defaultCheckedValues:b?J:[],nodes:oe,onCheckedChange:K,onSelectedChange:K,checkable:b,checkStrategy:w,searchable:x,defaultExpandedValues:S,styles:{root:o.default.treeView,item:o.default.treeViewItem,search:o.default.treeViewSearch}})})})})})]})})});d.displayName=`TreeSelect`,exports.TreeSelect=d;
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"),ee=require("../../overlay/FocusTrap/FocusTrap.cjs"),r=require("../../../hooks/useMergedRef.cjs"),i=require("../InputBase/InputBase.cjs"),a=require("../FieldTemplate/FieldTemplate.cjs"),te=require("../../data-display/TreeView/TreeView.cjs"),o=require("./tree-select.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");function u(e){return e.map(e=>({value:e.value,label:e.label,disabled:e.disabled,icon:e.icon,children:e.children?u(e.children):void 0}))}var d=(0,s.forwardRef)(({treeData:e=[],value:d,onChange:f,placeholder:p,label:m,error:h,required:g,layout:_,className:v,disabled:y=!1,multiple:b=!1,searchable:x=!1,defaultExpandedKeys:S=[],allowClear:C=!1,checkStrategy:w=`cascade`,id:T,width:E,fullWidth:D=!1,asChild:O=!1,children:ne,...re},ie)=>{let ae=(0,s.useId)(),k=T||`wim-tree-select-${ae}`,A=m?`${k}-label`:void 0,j=h?`${k}-error`:void 0,M=`${k}-trigger`,N=`${k}-dropdown`,[P,F]=(0,s.useState)(!1),[I,L]=(0,s.useState)(b?[]:``),R=(0,s.useRef)(null),z=(0,s.useRef)(null),B=d!==void 0,V=B?d:I;(0,s.useEffect)(()=>{let e=e=>{R.current&&!R.current.contains(e.target)&&F(!1)};return document.addEventListener(`mousedown`,e),()=>document.removeEventListener(`mousedown`,e)},[]),(0,s.useEffect)(()=>{if(P){let e=setTimeout(()=>{let e=R.current?.querySelector(`[data-testid="tree-view-search-input"]`);e?e.focus():(R.current?.querySelector(`[data-testid="tree-view-root"]`))?.focus()},100);return()=>clearTimeout(e)}},[P]);let H=()=>{if(!y){let e=!P;F(e),e||z.current?.focus()}},U=e=>{if(!y){if(!P){(e.key===`Enter`||e.key===` `||e.key===`ArrowDown`)&&(e.preventDefault(),F(!0));return}e.key===`Escape`&&(e.preventDefault(),F(!1),z.current?.focus())}},W=(0,s.useMemo)(()=>{let t={},n=e=>{e.forEach(e=>{t[e.value]=e,e.children&&n(e.children)})};return n(e),t},[e]),G=()=>{if(b){let e=Array.isArray(V)?V:[];return e.length===0?null:e.map(e=>W[e]?W[e].label:e).reduce((e,t)=>[e,`, `,t])}{let e=V;return e?W[e]?W[e].label:e:null}},K=e=>{let t;b?t=e:(t=e[0]||``,F(!1),z.current?.focus()),B||L(t),f&&f(t)},q=()=>{if(y)return;let e=b?[]:``;B||L(e),f&&f(e)},oe=(0,s.useMemo)(()=>u(e),[e]),J=(0,s.useMemo)(()=>b?Array.isArray(V)?V:[]:V?[V]:[],[V,b]),Y=G(),{"aria-label":X,"aria-labelledby":Z,"aria-describedby":se,...ce}=re,Q=typeof p==`string`?p:`Select`,le=O?t.Root:`div`,$=r.useMergedRef(R,ie);return(0,l.jsx)(a.FieldTemplate,{label:m,error:h,required:g,layout:_,labelId:A,errorId:j,className:(0,c.default)(o.default.container,v),children:(0,l.jsxs)(le,{className:(0,c.default)(`wim-tree-select`,o.default.root,D&&o.default.fullWidth),ref:$,...ce,children:[(0,l.jsx)(t.Slottable,{children:ne}),(0,l.jsx)(i.InputBase,{disabled:y,allowClear:C,hasValue:!!Y,onClear:q,intent:h?`danger`:`default`,width:E,fullWidth:D,rightIcons:[{name:`ChevronDownIcon`,rotated:P,onClick:H,decorative:!0}],className:(0,c.default)(P&&o.default.open),children:(0,l.jsx)(`div`,{id:M,className:(0,c.default)(o.default.trigger,y&&o.default.disabled),onClick:H,onKeyDown:U,tabIndex:y?-1:0,role:`combobox`,"aria-expanded":P,"aria-haspopup":`tree`,"aria-controls":P?N:void 0,"aria-disabled":y,"aria-labelledby":A||Z,"aria-label":m?void 0:X||Q,"aria-describedby":j||se,"aria-required":g,"aria-invalid":!!h,ref:z,children:(0,l.jsx)(`div`,{className:(0,c.default)(o.default.value,!Y&&o.default.placeholder),children:Y||p})})}),(0,l.jsx)(n.Transition,{show:P&&!y,preset:`fade`,className:o.default.dropdown,children:(0,l.jsx)(`div`,{id:N,children:(0,l.jsx)(ee.FocusTrap,{active:P,initialFocus:!1,children:(0,l.jsx)(`div`,{role:`dialog`,"aria-modal":`true`,"aria-labelledby":A||Z,"aria-label":m?void 0:X||Q,onKeyDown:e=>{e.key===`Escape`&&(e.preventDefault(),e.stopPropagation(),F(!1),z.current?.focus())},children:(0,l.jsx)(te.TreeView,{multiSelect:b,defaultSelectedValues:J,defaultCheckedValues:b?J:[],nodes:oe,onCheckedChange:K,onSelectedChange:K,checkable:b,checkStrategy:w,searchable:x,defaultExpandedValues:S,styles:{root:o.default.treeView,item:o.default.treeViewItem,search:o.default.treeViewSearch}})})})})})]})})});d.displayName=`TreeSelect`,exports.TreeSelect=d;
@@ -102,7 +102,8 @@ var _ = s(({ treeData: s = [], value: _, onChange: v, placeholder: y, label: b,
102
102
  rightIcons: [{
103
103
  name: "ChevronDownIcon",
104
104
  rotated: R,
105
- onClick: K
105
+ onClick: K,
106
+ decorative: !0
106
107
  }],
107
108
  className: p(R && o.open),
108
109
  children: /* @__PURE__ */ m("div", {
@@ -142,6 +143,9 @@ var _ = s(({ treeData: s = [], value: _, onChange: v, placeholder: y, label: b,
142
143
  "aria-modal": "true",
143
144
  "aria-labelledby": P || Q,
144
145
  "aria-label": b ? void 0 : Z || $,
146
+ onKeyDown: (e) => {
147
+ e.key === "Escape" && (e.preventDefault(), e.stopPropagation(), z(!1), U.current?.focus());
148
+ },
145
149
  children: /* @__PURE__ */ m(te, {
146
150
  multiSelect: E,
147
151
  defaultSelectedValues: Y,
@@ -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("./menubar.module.cjs");let a=require("react");a=e.__toESM(a,1);let o=require("classnames");o=e.__toESM(o,1);let s=require("react/jsx-runtime");var c=(0,a.createContext)(null),l=(0,a.createContext)(null),u=()=>{let e=(0,a.useContext)(c);if(!e)throw Error(`Menubar compound parts must be used within <Menubar>`);return e},d=()=>{let e=(0,a.useContext)(l);if(!e)throw Error(`Menubar.Trigger/Content/Item must be used within <Menubar.Menu>`);return e},f=a.default.forwardRef(({asChild:e=!1,className:n,children:r,onKeyDown:l,...u},d)=>{let[f,p]=(0,a.useState)(null),m=(0,a.useRef)(new Map),h=(0,a.useRef)(null),g=(0,a.useCallback)(e=>{h.current=e,typeof d==`function`?d(e):d&&(d.current=e)},[d]),_=(0,a.useCallback)((e,t)=>{t?m.current.set(e,t):m.current.delete(e)},[]),v=(0,a.useCallback)(()=>Array.from(m.current.keys()),[]),y=(0,a.useCallback)(e=>{m.current.get(e)?.focus()},[]);(0,a.useEffect)(()=>{if(!f)return;let e=e=>{h.current&&!h.current.contains(e.target)&&p(null)},t=e=>{e.key===`Escape`&&(p(null),f&&y(f))};return document.addEventListener(`mousedown`,e),document.addEventListener(`keydown`,t),()=>{document.removeEventListener(`mousedown`,e),document.removeEventListener(`keydown`,t)}},[f,y]);let b=e=>{if(l?.(e),e.defaultPrevented)return;let t=v();if(t.length===0)return;let n=f??t.find(e=>m.current.get(e)===document.activeElement)??null;if(!n)return;let r=t.indexOf(n);if(!(r<0)){if(e.key===`ArrowRight`){e.preventDefault();let n=t[(r+1)%t.length];f&&p(n),y(n)}else if(e.key===`ArrowLeft`){e.preventDefault();let n=t[(r-1+t.length)%t.length];f&&p(n),y(n)}else if(e.key===`Home`){e.preventDefault();let n=t[0];f&&p(n),y(n)}else if(e.key===`End`){e.preventDefault();let n=t[t.length-1];f&&p(n),y(n)}}},x=(0,a.useMemo)(()=>({openMenuId:f,setOpenMenuId:p,registerTrigger:_,getTriggerIds:v,focusTrigger:y}),[f,_,v,y]),S=e?t.Root:`div`;return(0,s.jsx)(c.Provider,{value:x,children:(0,s.jsx)(S,{ref:g,role:`menubar`,className:(0,o.default)(`wim-menubar`,i.default.root,n),onKeyDown:b,...u,children:(0,s.jsx)(t.Slottable,{children:r})})})});f.displayName=`Menubar`;var p=a.default.forwardRef(({value:e,disabled:t=!1,className:n,children:r,...c},d)=>{let{openMenuId:f,setOpenMenuId:p}=u(),m=(0,a.useId)(),h=`wim-menubar-trigger-${e}-${m}`,g=`wim-menubar-content-${e}-${m}`,_=f===e,v=()=>{t||p(e)},y=()=>p(null),b=()=>{t||p(_?null:e)},x=(0,a.useMemo)(()=>({menuId:e,triggerId:h,contentId:g,isOpen:_,open:v,close:y,toggle:b}),[e,h,g,_,t]);return(0,s.jsx)(l.Provider,{value:x,children:(0,s.jsx)(`div`,{ref:d,role:`none`,"data-disabled":t||void 0,className:(0,o.default)(i.default.menu,n),...c,children:r})})});p.displayName=`Menubar.Menu`;var m=a.default.forwardRef(({asChild:e=!1,className:n,children:r,onKeyDown:c,onMouseEnter:l,...f},p)=>{let{openMenuId:m,registerTrigger:h}=u(),{triggerId:g,contentId:_,isOpen:v,open:y,toggle:b,menuId:x}=d(),S=!!f.disabled,C=(0,a.useCallback)(e=>{h(x,e),typeof p==`function`?p(e):p&&(p.current=e)},[h,x,p]),w=e=>{c?.(e),!(e.defaultPrevented||S)&&(e.key===`ArrowDown`||e.key===`Enter`||e.key===` `)&&(e.preventDefault(),y())},T=e=>{l?.(e),m&&!S&&y()};return(0,s.jsx)(e?t.Root:`button`,{...f,ref:C,type:e?void 0:`button`,id:g,role:`menuitem`,"aria-haspopup":`menu`,"aria-expanded":v,"aria-controls":v?_:void 0,disabled:S,className:(0,o.default)(i.default.trigger,v&&i.default.triggerOpen,n),onClick:b,onKeyDown:w,onMouseEnter:T,children:(0,s.jsx)(t.Slottable,{children:r})})});m.displayName=`Menubar.Trigger`;var h=a.default.forwardRef(({align:e=`start`,className:t,children:r,...c},l)=>{let{contentId:u,triggerId:f,isOpen:p}=d(),[m,h]=(0,a.useState)(-1),[g,_]=(0,a.useState)(p),v=(0,a.useRef)(null);p!==g&&(_(p),h(p?0:-1));let y=(0,a.useCallback)(e=>{v.current=e,typeof l==`function`?l(e):l&&(l.current=e)},[l]);(0,a.useEffect)(()=>{!p||m<0||Array.from(v.current?.querySelectorAll(`[role="menuitem"]:not([aria-disabled="true"])`)??[])[m]?.focus()},[m,p]);let b=e=>{let t=Array.from(v.current?.querySelectorAll(`[role="menuitem"]:not([aria-disabled="true"])`)??[]);if(t.length!==0)switch(e.key){case`ArrowDown`:e.preventDefault(),h(e=>e<t.length-1?e+1:0);break;case`ArrowUp`:e.preventDefault(),h(e=>e>0?e-1:t.length-1);break;case`Home`:e.preventDefault(),h(0);break;case`End`:e.preventDefault(),h(t.length-1)}};return(0,s.jsx)(n.Transition,{...c,ref:y,show:p,preset:`fade`,id:u,role:`menu`,"aria-labelledby":f,className:(0,o.default)(i.default.content,e===`end`?i.default.alignEnd:i.default.alignStart,t),onKeyDown:b,children:r})});h.displayName=`Menubar.Content`;var g=a.default.forwardRef(({children:e,onSelect:t,onClick:n,disabled:a=!1,className:c,...l},u)=>{let{close:f}=d(),p=e=>{a||(e.stopPropagation(),t?.(),n?.(e),f())};return(0,s.jsx)(r.BaseListItem,{...l,ref:u,className:(0,o.default)(i.default.item,c),disabled:a,role:`menuitem`,tabIndex:-1,onClick:p,onKeyDown:e=>{!a&&(e.key===`Enter`||e.key===` `)&&(e.preventDefault(),p(e))},children:e})});g.displayName=`Menubar.Item`;var _=a.default.forwardRef(({className:e,...t},n)=>(0,s.jsx)(`div`,{ref:n,role:`separator`,className:(0,o.default)(i.default.separator,e),...t}));_.displayName=`Menubar.Separator`;var v=f;v.Menu=p,v.Trigger=m,v.Content=h,v.Item=g,v.Separator=_,exports.Menubar=v,exports.default=v;
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("./menubar.module.cjs");let a=require("react");a=e.__toESM(a,1);let o=require("classnames");o=e.__toESM(o,1);let s=require("react/jsx-runtime");var c=(0,a.createContext)(null),l=(0,a.createContext)(null),u=()=>{let e=(0,a.useContext)(c);if(!e)throw Error(`Menubar compound parts must be used within <Menubar>`);return e},d=()=>{let e=(0,a.useContext)(l);if(!e)throw Error(`Menubar.Trigger/Content/Item must be used within <Menubar.Menu>`);return e},f=a.default.forwardRef(({asChild:e=!1,className:n,children:r,onKeyDown:l,...u},d)=>{let[f,p]=(0,a.useState)(null),m=(0,a.useRef)(new Map),h=(0,a.useRef)(null),g=(0,a.useCallback)(e=>{h.current=e,typeof d==`function`?d(e):d&&(d.current=e)},[d]),_=(0,a.useCallback)((e,t)=>{t?m.current.set(e,t):m.current.delete(e)},[]),v=(0,a.useCallback)(()=>Array.from(m.current.keys()),[]),y=(0,a.useCallback)(e=>{m.current.get(e)?.focus()},[]);(0,a.useEffect)(()=>{if(!f)return;let e=e=>{h.current&&!h.current.contains(e.target)&&p(null)},t=e=>{e.key===`Escape`&&(p(null),f&&y(f))};return document.addEventListener(`mousedown`,e),document.addEventListener(`keydown`,t),()=>{document.removeEventListener(`mousedown`,e),document.removeEventListener(`keydown`,t)}},[f,y]);let b=e=>{if(l?.(e),e.defaultPrevented)return;let t=v();if(t.length===0)return;let n=f??t.find(e=>m.current.get(e)===document.activeElement)??null;if(!n)return;let r=t.indexOf(n);if(!(r<0)){if(e.key===`ArrowRight`){e.preventDefault();let n=t[(r+1)%t.length];f&&p(n),y(n)}else if(e.key===`ArrowLeft`){e.preventDefault();let n=t[(r-1+t.length)%t.length];f&&p(n),y(n)}else if(e.key===`Home`){e.preventDefault();let n=t[0];f&&p(n),y(n)}else if(e.key===`End`){e.preventDefault();let n=t[t.length-1];f&&p(n),y(n)}}},x=(0,a.useMemo)(()=>({openMenuId:f,setOpenMenuId:p,registerTrigger:_,getTriggerIds:v,focusTrigger:y}),[f,_,v,y]),S=e?t.Root:`div`;return(0,s.jsx)(c.Provider,{value:x,children:(0,s.jsx)(S,{ref:g,role:`menubar`,className:(0,o.default)(`wim-menubar`,i.default.root,n),onKeyDown:b,...u,children:(0,s.jsx)(t.Slottable,{children:r})})})});f.displayName=`Menubar`;var p=a.default.forwardRef(({value:e,disabled:t=!1,className:n,children:r,...c},d)=>{let{openMenuId:f,setOpenMenuId:p,focusTrigger:m}=u(),h=(0,a.useId)(),g=`wim-menubar-trigger-${e}-${h}`,_=`wim-menubar-content-${e}-${h}`,v=f===e,y=()=>{t||p(e)},b=()=>{m(e),p(null)},x=()=>{t||p(v?null:e)},S=(0,a.useMemo)(()=>({menuId:e,triggerId:g,contentId:_,isOpen:v,open:y,close:b,toggle:x}),[e,g,_,v,t]);return(0,s.jsx)(l.Provider,{value:S,children:(0,s.jsx)(`div`,{ref:d,role:`none`,"data-disabled":t||void 0,className:(0,o.default)(i.default.menu,n),...c,children:r})})});p.displayName=`Menubar.Menu`;var m=a.default.forwardRef(({asChild:e=!1,className:n,children:r,onKeyDown:c,onMouseEnter:l,...f},p)=>{let{openMenuId:m,registerTrigger:h}=u(),{triggerId:g,contentId:_,isOpen:v,open:y,toggle:b,menuId:x}=d(),S=!!f.disabled,C=(0,a.useCallback)(e=>{h(x,e),typeof p==`function`?p(e):p&&(p.current=e)},[h,x,p]),w=e=>{c?.(e),!(e.defaultPrevented||S)&&(e.key===`ArrowDown`||e.key===`Enter`||e.key===` `)&&(e.preventDefault(),y())},T=e=>{l?.(e),m&&!S&&y()};return(0,s.jsx)(e?t.Root:`button`,{...f,ref:C,type:e?void 0:`button`,id:g,role:`menuitem`,"aria-haspopup":`menu`,"aria-expanded":v,"aria-controls":v?_:void 0,disabled:S,className:(0,o.default)(i.default.trigger,v&&i.default.triggerOpen,n),onClick:b,onKeyDown:w,onMouseEnter:T,children:(0,s.jsx)(t.Slottable,{children:r})})});m.displayName=`Menubar.Trigger`;var h=a.default.forwardRef(({align:e=`start`,className:t,children:r,...c},l)=>{let{contentId:u,triggerId:f,isOpen:p,close:m}=d(),[h,g]=(0,a.useState)(-1),[_,v]=(0,a.useState)(p),y=(0,a.useRef)(null);p!==_&&(v(p),g(p?0:-1));let b=(0,a.useCallback)(e=>{y.current=e,typeof l==`function`?l(e):l&&(l.current=e)},[l]);(0,a.useEffect)(()=>{!p||h<0||Array.from(y.current?.querySelectorAll(`[role="menuitem"]:not([aria-disabled="true"])`)??[])[h]?.focus()},[h,p]);let x=e=>{let t=Array.from(y.current?.querySelectorAll(`[role="menuitem"]:not([aria-disabled="true"])`)??[]);if(t.length!==0)switch(e.key){case`ArrowDown`:e.preventDefault(),g(e=>e<t.length-1?e+1:0);break;case`ArrowUp`:e.preventDefault(),g(e=>e>0?e-1:t.length-1);break;case`Home`:e.preventDefault(),g(0);break;case`End`:e.preventDefault(),g(t.length-1);break;case`Tab`:m()}};return(0,s.jsx)(n.Transition,{...c,ref:b,show:p,preset:`fade`,id:u,role:`menu`,"aria-labelledby":f,className:(0,o.default)(i.default.content,e===`end`?i.default.alignEnd:i.default.alignStart,t),onKeyDown:x,children:r})});h.displayName=`Menubar.Content`;var g=a.default.forwardRef(({children:e,onSelect:t,onClick:n,disabled:a=!1,className:c,...l},u)=>{let{close:f}=d(),p=e=>{a||(e.stopPropagation(),t?.(),n?.(e),f())};return(0,s.jsx)(r.BaseListItem,{...l,ref:u,className:(0,o.default)(i.default.item,c),disabled:a,role:`menuitem`,tabIndex:-1,onClick:p,onKeyDown:e=>{!a&&(e.key===`Enter`||e.key===` `)&&(e.preventDefault(),p(e))},children:e})});g.displayName=`Menubar.Item`;var _=a.default.forwardRef(({className:e,...t},n)=>(0,s.jsx)(`div`,{ref:n,role:`separator`,className:(0,o.default)(i.default.separator,e),...t}));_.displayName=`Menubar.Separator`;var v=f;v.Menu=p,v.Trigger=m,v.Content=h,v.Item=g,v.Separator=_,exports.Menubar=v,exports.default=v;
@@ -86,27 +86,29 @@ var g = o(null), _ = o(null), v = () => {
86
86
  });
87
87
  b.displayName = "Menubar";
88
88
  var x = a.forwardRef(({ value: e, disabled: t = !1, className: n, children: r, ...a }, o) => {
89
- let { openMenuId: s, setOpenMenuId: c } = v(), l = u(), f = `wim-menubar-trigger-${e}-${l}`, p = `wim-menubar-content-${e}-${l}`, g = s === e, y = () => {
89
+ let { openMenuId: s, setOpenMenuId: c, focusTrigger: l } = v(), f = u(), p = `wim-menubar-trigger-${e}-${f}`, g = `wim-menubar-content-${e}-${f}`, y = s === e, b = () => {
90
90
  t || c(e);
91
- }, b = () => c(null), x = () => {
92
- t || c(g ? null : e);
93
- }, S = d(() => ({
91
+ }, x = () => {
92
+ l(e), c(null);
93
+ }, S = () => {
94
+ t || c(y ? null : e);
95
+ }, C = d(() => ({
94
96
  menuId: e,
95
- triggerId: f,
96
- contentId: p,
97
- isOpen: g,
98
- open: y,
99
- close: b,
100
- toggle: x
97
+ triggerId: p,
98
+ contentId: g,
99
+ isOpen: y,
100
+ open: b,
101
+ close: x,
102
+ toggle: S
101
103
  }), [
102
104
  e,
103
- f,
104
105
  p,
105
106
  g,
107
+ y,
106
108
  t
107
109
  ]);
108
110
  return /* @__PURE__ */ h(_.Provider, {
109
- value: S,
111
+ value: C,
110
112
  children: /* @__PURE__ */ h("div", {
111
113
  ref: o,
112
114
  role: "none",
@@ -149,39 +151,42 @@ var S = a.forwardRef(({ asChild: n = !1, className: r, children: a, onKeyDown: o
149
151
  });
150
152
  S.displayName = "Menubar.Trigger";
151
153
  var C = a.forwardRef(({ align: e = "start", className: t, children: r, ...a }, o) => {
152
- let { contentId: c, triggerId: u, isOpen: d } = y(), [g, _] = p(-1), [v, b] = p(d), x = f(null);
153
- d !== v && (b(d), _(d ? 0 : -1));
154
- let S = s((e) => {
155
- x.current = e, typeof o == "function" ? o(e) : o && (o.current = e);
154
+ let { contentId: c, triggerId: u, isOpen: d, close: g } = y(), [_, v] = p(-1), [b, x] = p(d), S = f(null);
155
+ d !== b && (x(d), v(d ? 0 : -1));
156
+ let C = s((e) => {
157
+ S.current = e, typeof o == "function" ? o(e) : o && (o.current = e);
156
158
  }, [o]);
157
159
  l(() => {
158
- !d || g < 0 || Array.from(x.current?.querySelectorAll("[role=\"menuitem\"]:not([aria-disabled=\"true\"])") ?? [])[g]?.focus();
159
- }, [g, d]);
160
- let C = (e) => {
161
- let t = Array.from(x.current?.querySelectorAll("[role=\"menuitem\"]:not([aria-disabled=\"true\"])") ?? []);
160
+ !d || _ < 0 || Array.from(S.current?.querySelectorAll("[role=\"menuitem\"]:not([aria-disabled=\"true\"])") ?? [])[_]?.focus();
161
+ }, [_, d]);
162
+ let w = (e) => {
163
+ let t = Array.from(S.current?.querySelectorAll("[role=\"menuitem\"]:not([aria-disabled=\"true\"])") ?? []);
162
164
  if (t.length !== 0) switch (e.key) {
163
165
  case "ArrowDown":
164
- e.preventDefault(), _((e) => e < t.length - 1 ? e + 1 : 0);
166
+ e.preventDefault(), v((e) => e < t.length - 1 ? e + 1 : 0);
165
167
  break;
166
168
  case "ArrowUp":
167
- e.preventDefault(), _((e) => e > 0 ? e - 1 : t.length - 1);
169
+ e.preventDefault(), v((e) => e > 0 ? e - 1 : t.length - 1);
168
170
  break;
169
171
  case "Home":
170
- e.preventDefault(), _(0);
172
+ e.preventDefault(), v(0);
173
+ break;
174
+ case "End":
175
+ e.preventDefault(), v(t.length - 1);
171
176
  break;
172
- case "End": e.preventDefault(), _(t.length - 1);
177
+ case "Tab": g();
173
178
  }
174
179
  };
175
180
  return /* @__PURE__ */ h(n, {
176
181
  ...a,
177
- ref: S,
182
+ ref: C,
178
183
  show: d,
179
184
  preset: "fade",
180
185
  id: c,
181
186
  role: "menu",
182
187
  "aria-labelledby": u,
183
188
  className: m(i.content, e === "end" ? i.alignEnd : i.alignStart, t),
184
- onKeyDown: C,
189
+ onKeyDown: w,
185
190
  children: r
186
191
  });
187
192
  });
@@ -1,2 +1,2 @@
1
1
  "use client";
2
- const e=require("../../../_virtual/_rolldown/runtime.cjs"),t=require("../../form/FloatButton/FloatButton.cjs"),n=require("./speed-dial.module.cjs");let r=require("react");r=e.__toESM(r,1);let i=require("classnames");i=e.__toESM(i,1);let a=require("react/jsx-runtime");var o=r.default.forwardRef(({actions:e,icon:o=`PlusIcon`,activeIcon:s=`CloseIcon`,direction:c=`up`,trigger:l=`hover`,open:u,onOpenChange:d,className:f,"aria-label":p,...m},h)=>{let[g,_]=(0,r.useState)(!1),v=u??g,y=e=>{_(e),d?.(e)},b=()=>{l===`hover`&&y(!0)},x=()=>{l===`hover`&&y(!1)},S=()=>{l===`click`&&y(!v)};return(0,a.jsxs)(`div`,{ref:h,className:(0,i.default)(`wim-speed-dial`,n.default.root,n.default[c],v&&n.default.open,f),onMouseEnter:b,onMouseLeave:x,...m,children:[(0,a.jsx)(`div`,{className:n.default.actions,children:e.map((e,r)=>(0,a.jsx)(`div`,{className:n.default.actionWrapper,style:{transitionDelay:v?`${r*50}ms`:`0ms`},children:(0,a.jsx)(t.FloatButton,{iconName:e.icon,label:e.label,size:`sm`,intent:e.intent,className:e.className,onClick:()=>{e.onClick?.(),l===`click`&&y(!1)},position:`inline`})},r))}),(0,a.jsx)(t.FloatButton,{iconName:v?s:o,onClick:S,className:n.default.trigger,position:`inline`,"aria-expanded":v,"aria-haspopup":`true`,"aria-label":p})]})});o.displayName=`SpeedDial`,exports.SpeedDial=o;
2
+ const e=require("../../../_virtual/_rolldown/runtime.cjs"),t=require("../../../i18n/useWimTranslation.cjs"),n=require("../../form/FloatButton/FloatButton.cjs"),r=require("./speed-dial.module.cjs");let i=require("react");i=e.__toESM(i,1);let a=require("classnames");a=e.__toESM(a,1);let o=require("react/jsx-runtime");var s=i.default.forwardRef(({actions:e,icon:s=`PlusIcon`,activeIcon:c=`CloseIcon`,direction:l=`up`,trigger:u=`hover`,open:d,onOpenChange:f,className:p,"aria-label":m,...h},g)=>{let{t:_}=t.useWimTranslation(`common`),[v,y]=(0,i.useState)(!1),b=d??v,x=(0,i.useRef)(null),S=(0,i.useRef)(!1),C=e=>{y(e),f?.(e)},w=()=>{u===`hover`&&C(!0)},T=()=>{u===`hover`&&C(!1)},E=()=>{u===`click`&&C(!b)},D=e=>{(e.key===`Enter`||e.key===` `)&&(e.preventDefault(),S.current=!b,C(!b))};return(0,i.useEffect)(()=>{b&&S.current&&x.current?.querySelector(`button`)?.focus()},[b]),(0,o.jsxs)(`div`,{ref:g,className:(0,a.default)(`wim-speed-dial`,r.default.root,r.default[l],b&&r.default.open,p),onMouseEnter:w,onMouseLeave:T,onKeyDown:e=>{e.key===`Escape`&&b&&(e.preventDefault(),S.current=!1,C(!1),e.currentTarget.querySelector(`[aria-haspopup]`)?.focus())},onBlur:e=>{S.current&&(e.currentTarget.contains(e.relatedTarget)||(S.current=!1,C(!1)))},...h,children:[(0,o.jsx)(`div`,{ref:x,className:r.default.actions,inert:!b,children:e.map((e,t)=>(0,o.jsx)(`div`,{className:r.default.actionWrapper,style:{transitionDelay:b?`${t*50}ms`:`0ms`},children:(0,o.jsx)(n.FloatButton,{iconName:e.icon,label:e.label,size:`sm`,intent:e.intent,className:e.className,onClick:()=>{e.onClick?.(),u===`click`&&C(!1)},position:`inline`})},t))}),(0,o.jsx)(n.FloatButton,{iconName:b?c:s,onClick:E,className:r.default.trigger,position:`inline`,"aria-expanded":b,"aria-haspopup":`true`,"aria-label":m??_(b?`a11y.close_menu`:`a11y.open_menu`),onKeyDown:D})]})});s.displayName=`SpeedDial`,exports.SpeedDial=s;
@@ -36,7 +36,7 @@ export type SpeedDialProps = React.ComponentPropsWithoutRef<"div"> & {
36
36
  /**
37
37
  * Accessible name for the trigger button.
38
38
  * Lands on the inner `FloatButton`, not on the wrapper `div`.
39
- * Omit to keep the icon-name fallback (`PlusIcon` / `CloseIcon`).
39
+ * Defaults to a translated "Open menu" / "Close menu" (en / ja / pt), following the open state.
40
40
  */
41
41
  "aria-label"?: string;
42
42
  };
@@ -76,7 +76,7 @@ export declare const SpeedDial: React.ForwardRefExoticComponent<Omit<React.Detai
76
76
  /**
77
77
  * Accessible name for the trigger button.
78
78
  * Lands on the inner `FloatButton`, not on the wrapper `div`.
79
- * Omit to keep the icon-name fallback (`PlusIcon` / `CloseIcon`).
79
+ * Defaults to a translated "Open menu" / "Close menu" (en / ja / pt), following the open state.
80
80
  */
81
81
  "aria-label"?: string;
82
82
  } & React.RefAttributes<HTMLDivElement>>;
@@ -1,54 +1,68 @@
1
1
  "use client";
2
- import { FloatButton as e } from "../../form/FloatButton/FloatButton.js";
3
- import t from "./speed-dial.module.js";
4
- import n, { useState as r } from "react";
5
- import i from "classnames";
6
- import { jsx as a, jsxs as o } from "react/jsx-runtime";
2
+ import { useWimTranslation as e } from "../../../i18n/useWimTranslation.js";
3
+ import { FloatButton as t } from "../../form/FloatButton/FloatButton.js";
4
+ import n from "./speed-dial.module.js";
5
+ import r, { useEffect as i, useRef as a, useState as o } from "react";
6
+ import s from "classnames";
7
+ import { jsx as c, jsxs as l } from "react/jsx-runtime";
7
8
  //#region src/components/navigation/SpeedDial/SpeedDial.tsx
8
- var s = n.forwardRef(({ actions: n, icon: s = "PlusIcon", activeIcon: c = "CloseIcon", direction: l = "up", trigger: u = "hover", open: d, onOpenChange: f, className: p, "aria-label": m, ...h }, g) => {
9
- let [_, v] = r(!1), y = d ?? _, b = (e) => {
10
- v(e), f?.(e);
11
- }, x = () => {
12
- u === "hover" && b(!0);
13
- }, S = () => {
14
- u === "hover" && b(!1);
15
- }, C = () => {
16
- u === "click" && b(!y);
9
+ var u = r.forwardRef(({ actions: r, icon: u = "PlusIcon", activeIcon: d = "CloseIcon", direction: f = "up", trigger: p = "hover", open: m, onOpenChange: h, className: g, "aria-label": _, ...v }, y) => {
10
+ let { t: b } = e("common"), [x, S] = o(!1), C = m ?? x, w = a(null), T = a(!1), E = (e) => {
11
+ S(e), h?.(e);
12
+ }, D = () => {
13
+ p === "hover" && E(!0);
14
+ }, O = () => {
15
+ p === "hover" && E(!1);
16
+ }, k = () => {
17
+ p === "click" && E(!C);
18
+ }, A = (e) => {
19
+ (e.key === "Enter" || e.key === " ") && (e.preventDefault(), T.current = !C, E(!C));
17
20
  };
18
- return /* @__PURE__ */ o("div", {
19
- ref: g,
20
- className: i("wim-speed-dial", t.root, t[l], y && t.open, p),
21
- onMouseEnter: x,
22
- onMouseLeave: S,
23
- ...h,
24
- children: [/* @__PURE__ */ a("div", {
25
- className: t.actions,
26
- children: n.map((n, r) => /* @__PURE__ */ a("div", {
27
- className: t.actionWrapper,
28
- style: { transitionDelay: y ? `${r * 50}ms` : "0ms" },
29
- children: /* @__PURE__ */ a(e, {
30
- iconName: n.icon,
31
- label: n.label,
21
+ return i(() => {
22
+ C && T.current && w.current?.querySelector("button")?.focus();
23
+ }, [C]), /* @__PURE__ */ l("div", {
24
+ ref: y,
25
+ className: s("wim-speed-dial", n.root, n[f], C && n.open, g),
26
+ onMouseEnter: D,
27
+ onMouseLeave: O,
28
+ onKeyDown: (e) => {
29
+ e.key === "Escape" && C && (e.preventDefault(), T.current = !1, E(!1), e.currentTarget.querySelector("[aria-haspopup]")?.focus());
30
+ },
31
+ onBlur: (e) => {
32
+ T.current && (e.currentTarget.contains(e.relatedTarget) || (T.current = !1, E(!1)));
33
+ },
34
+ ...v,
35
+ children: [/* @__PURE__ */ c("div", {
36
+ ref: w,
37
+ className: n.actions,
38
+ inert: !C,
39
+ children: r.map((e, r) => /* @__PURE__ */ c("div", {
40
+ className: n.actionWrapper,
41
+ style: { transitionDelay: C ? `${r * 50}ms` : "0ms" },
42
+ children: /* @__PURE__ */ c(t, {
43
+ iconName: e.icon,
44
+ label: e.label,
32
45
  size: "sm",
33
- intent: n.intent,
34
- className: n.className,
46
+ intent: e.intent,
47
+ className: e.className,
35
48
  onClick: () => {
36
- n.onClick?.(), u === "click" && b(!1);
49
+ e.onClick?.(), p === "click" && E(!1);
37
50
  },
38
51
  position: "inline"
39
52
  })
40
53
  }, r))
41
- }), /* @__PURE__ */ a(e, {
42
- iconName: y ? c : s,
43
- onClick: C,
44
- className: t.trigger,
54
+ }), /* @__PURE__ */ c(t, {
55
+ iconName: C ? d : u,
56
+ onClick: k,
57
+ className: n.trigger,
45
58
  position: "inline",
46
- "aria-expanded": y,
59
+ "aria-expanded": C,
47
60
  "aria-haspopup": "true",
48
- "aria-label": m
61
+ "aria-label": _ ?? b(C ? "a11y.close_menu" : "a11y.open_menu"),
62
+ onKeyDown: A
49
63
  })]
50
64
  });
51
65
  });
52
- s.displayName = "SpeedDial";
66
+ u.displayName = "SpeedDial";
53
67
  //#endregion
54
- export { s as SpeedDial };
68
+ export { u as SpeedDial };