wimui 0.50.2 → 0.50.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/components/navigation/Menubar/Menubar.cjs +1 -1
- package/dist/components/navigation/Menubar/Menubar.js +31 -26
- package/dist/components/navigation/SpeedDial/SpeedDial.cjs +1 -1
- package/dist/components/navigation/SpeedDial/SpeedDial.d.ts +2 -2
- package/dist/components/navigation/SpeedDial/SpeedDial.js +53 -39
- package/dist/components/overlay/Dropdown/Dropdown.cjs +1 -1
- package/dist/components/overlay/Dropdown/Dropdown.js +8 -3
- package/dist/components/overlay/FocusTrap/FocusTrap.cjs +1 -1
- package/dist/components/overlay/FocusTrap/FocusTrap.js +5 -4
- package/dist/llms-full.txt +2 -2
- package/dist/llms.txt +1 -1
- package/dist/wimui.umd.js +1 -1
- package/package.json +1 -1
|
@@ -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(),
|
|
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(),
|
|
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
|
-
},
|
|
92
|
-
|
|
93
|
-
}, S =
|
|
91
|
+
}, x = () => {
|
|
92
|
+
l(e), c(null);
|
|
93
|
+
}, S = () => {
|
|
94
|
+
t || c(y ? null : e);
|
|
95
|
+
}, C = d(() => ({
|
|
94
96
|
menuId: e,
|
|
95
|
-
triggerId:
|
|
96
|
-
contentId:
|
|
97
|
-
isOpen:
|
|
98
|
-
open:
|
|
99
|
-
close:
|
|
100
|
-
toggle:
|
|
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:
|
|
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(), [
|
|
153
|
-
d !==
|
|
154
|
-
let
|
|
155
|
-
|
|
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 ||
|
|
159
|
-
}, [
|
|
160
|
-
let
|
|
161
|
-
let t = Array.from(
|
|
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(),
|
|
166
|
+
e.preventDefault(), v((e) => e < t.length - 1 ? e + 1 : 0);
|
|
165
167
|
break;
|
|
166
168
|
case "ArrowUp":
|
|
167
|
-
e.preventDefault(),
|
|
169
|
+
e.preventDefault(), v((e) => e > 0 ? e - 1 : t.length - 1);
|
|
168
170
|
break;
|
|
169
171
|
case "Home":
|
|
170
|
-
e.preventDefault(),
|
|
172
|
+
e.preventDefault(), v(0);
|
|
173
|
+
break;
|
|
174
|
+
case "End":
|
|
175
|
+
e.preventDefault(), v(t.length - 1);
|
|
171
176
|
break;
|
|
172
|
-
case "
|
|
177
|
+
case "Tab": g();
|
|
173
178
|
}
|
|
174
179
|
};
|
|
175
180
|
return /* @__PURE__ */ h(n, {
|
|
176
181
|
...a,
|
|
177
|
-
ref:
|
|
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:
|
|
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"),
|
|
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
|
-
*
|
|
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
|
-
*
|
|
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 {
|
|
3
|
-
import t from "
|
|
4
|
-
import n
|
|
5
|
-
import i from "
|
|
6
|
-
import
|
|
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
|
|
9
|
-
let [
|
|
10
|
-
|
|
11
|
-
},
|
|
12
|
-
|
|
13
|
-
},
|
|
14
|
-
|
|
15
|
-
},
|
|
16
|
-
|
|
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
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
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:
|
|
34
|
-
className:
|
|
46
|
+
intent: e.intent,
|
|
47
|
+
className: e.className,
|
|
35
48
|
onClick: () => {
|
|
36
|
-
|
|
49
|
+
e.onClick?.(), p === "click" && E(!1);
|
|
37
50
|
},
|
|
38
51
|
position: "inline"
|
|
39
52
|
})
|
|
40
53
|
}, r))
|
|
41
|
-
}), /* @__PURE__ */
|
|
42
|
-
iconName:
|
|
43
|
-
onClick:
|
|
44
|
-
className:
|
|
54
|
+
}), /* @__PURE__ */ c(t, {
|
|
55
|
+
iconName: C ? d : u,
|
|
56
|
+
onClick: k,
|
|
57
|
+
className: n.trigger,
|
|
45
58
|
position: "inline",
|
|
46
|
-
"aria-expanded":
|
|
59
|
+
"aria-expanded": C,
|
|
47
60
|
"aria-haspopup": "true",
|
|
48
|
-
"aria-label":
|
|
61
|
+
"aria-label": _ ?? b(C ? "a11y.close_menu" : "a11y.open_menu"),
|
|
62
|
+
onKeyDown: A
|
|
49
63
|
})]
|
|
50
64
|
});
|
|
51
65
|
});
|
|
52
|
-
|
|
66
|
+
u.displayName = "SpeedDial";
|
|
53
67
|
//#endregion
|
|
54
|
-
export {
|
|
68
|
+
export { u as SpeedDial };
|
|
@@ -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===`
|
|
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
|
-
|
|
51
|
-
|
|
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
|
});
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
"use client";
|
|
2
|
-
const e=require("../../../_virtual/_rolldown/runtime.cjs"),t=require("./focus-trap.module.cjs");let n=require("react");n=e.__toESM(n,1);let r=require("classnames");r=e.__toESM(r,1);let i=require("react/jsx-runtime");var a=({children:e,active:a=!0,initialFocus:o=!0,className:s})=>{let c=(0,n.useRef)(null),l=(0,n.useRef)(null);return(0,n.useEffect)(()=>{if(!a)return;
|
|
2
|
+
const e=require("../../../_virtual/_rolldown/runtime.cjs"),t=require("./focus-trap.module.cjs");let n=require("react");n=e.__toESM(n,1);let r=require("classnames");r=e.__toESM(r,1);let i=require("react/jsx-runtime");var a=({children:e,active:a=!0,initialFocus:o=!0,className:s})=>{let c=(0,n.useRef)(null),l=(0,n.useRef)(null),u=(0,n.useRef)(!1);return a&&!u.current&&typeof document<`u`?(l.current=document.activeElement,u.current=!0):!a&&u.current&&(u.current=!1),(0,n.useEffect)(()=>{if(!a)return;let e=c.current;if(!e)return;let t=()=>Array.from(e.querySelectorAll(`button, [href], input, select, textarea, [tabindex]:not([tabindex="-1"])`)).filter(e=>{let t=window.getComputedStyle(e);return e.tabIndex>=0&&t.display!==`none`&&t.visibility!==`hidden`&&!e.disabled});if(o){let e=t();e.length>0&&e[0].focus()}let n=n=>{if(n.key!==`Tab`)return;let r=t();if(r.length===0){n.preventDefault();return}let i=r[0],a=r[r.length-1],o=document.activeElement;if(!o||!e.contains(o))return;let s=r.indexOf(o);n.shiftKey?(s>=0?s>0:r.some(e=>e.compareDocumentPosition(o)&Node.DOCUMENT_POSITION_FOLLOWING))||(n.preventDefault(),a.focus()):(s>=0?s<r.length-1:r.some(e=>o.compareDocumentPosition(e)&Node.DOCUMENT_POSITION_FOLLOWING))||(n.preventDefault(),i.focus())};return document.addEventListener(`keydown`,n),()=>{document.removeEventListener(`keydown`,n);let e=l.current;e&&e.isConnected&&e.focus()}},[a,o]),(0,i.jsx)(`div`,{ref:c,className:(0,r.default)(`wim-focus-trap`,t.default.root,s),children:e})};exports.FocusTrap=a;
|
|
@@ -5,10 +5,9 @@ import r from "classnames";
|
|
|
5
5
|
import { jsx as i } from "react/jsx-runtime";
|
|
6
6
|
//#region src/components/overlay/FocusTrap/FocusTrap.tsx
|
|
7
7
|
var a = ({ children: a, active: o = !0, initialFocus: s = !0, className: c }) => {
|
|
8
|
-
let l = n(null), u = n(null);
|
|
9
|
-
return t(() => {
|
|
8
|
+
let l = n(null), u = n(null), d = n(!1);
|
|
9
|
+
return o && !d.current && typeof document < "u" ? (u.current = document.activeElement, d.current = !0) : !o && d.current && (d.current = !1), t(() => {
|
|
10
10
|
if (!o) return;
|
|
11
|
-
u.current = document.activeElement;
|
|
12
11
|
let e = l.current;
|
|
13
12
|
if (!e) return;
|
|
14
13
|
let t = () => Array.from(e.querySelectorAll("button, [href], input, select, textarea, [tabindex]:not([tabindex=\"-1\"])")).filter((e) => {
|
|
@@ -32,7 +31,9 @@ var a = ({ children: a, active: o = !0, initialFocus: s = !0, className: c }) =>
|
|
|
32
31
|
n.shiftKey ? (s >= 0 ? s > 0 : r.some((e) => e.compareDocumentPosition(o) & Node.DOCUMENT_POSITION_FOLLOWING)) || (n.preventDefault(), a.focus()) : (s >= 0 ? s < r.length - 1 : r.some((e) => o.compareDocumentPosition(e) & Node.DOCUMENT_POSITION_FOLLOWING)) || (n.preventDefault(), i.focus());
|
|
33
32
|
};
|
|
34
33
|
return document.addEventListener("keydown", n), () => {
|
|
35
|
-
document.removeEventListener("keydown", n)
|
|
34
|
+
document.removeEventListener("keydown", n);
|
|
35
|
+
let e = u.current;
|
|
36
|
+
e && e.isConnected && e.focus();
|
|
36
37
|
};
|
|
37
38
|
}, [o, s]), /* @__PURE__ */ i("div", {
|
|
38
39
|
ref: l,
|
package/dist/llms-full.txt
CHANGED
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
|
|
5
5
|
## What this is
|
|
6
6
|
|
|
7
|
-
**wimui** v0.50.
|
|
7
|
+
**wimui** v0.50.4 — a React 19 component library: 228 documented components across 10 categories, with design tokens, dark mode, i18n (en/ja/pt-BR) and WAI-ARIA compliant a11y. Peer deps: react ^19, react-dom ^19 (plus optional peers for specific components — see package.json).
|
|
8
8
|
|
|
9
9
|
## Install & required setup
|
|
10
10
|
|
|
@@ -2160,7 +2160,7 @@ near the right edge pushes the page into a horizontal scroll. Anchor a
|
|
|
2160
2160
|
- `onOpenChange: (open: boolean) => void` — Callback when open state changes
|
|
2161
2161
|
- `aria-label: string` — Accessible name for the trigger button.
|
|
2162
2162
|
Lands on the inner `FloatButton`, not on the wrapper `div`.
|
|
2163
|
-
|
|
2163
|
+
Defaults to a translated "Open menu" / "Close menu" (en / ja / pt), following the open state.
|
|
2164
2164
|
- **Stepper** — Visual sequence steps
|
|
2165
2165
|
- ⚠️ Not the same as elsewhere: In Apple HIG and macOS, a "Stepper" is the control that increments a number — that is `NumberInput` here. WIM's `Stepper` shows progress through a sequence of steps, which is what Material calls a Stepper.
|
|
2166
2166
|
- `steps: Step[]` = [] — Array of step configurations
|
package/dist/llms.txt
CHANGED
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
|
|
5
5
|
## What this is
|
|
6
6
|
|
|
7
|
-
**wimui** v0.50.
|
|
7
|
+
**wimui** v0.50.4 — a React 19 component library: 228 documented components across 10 categories, with design tokens, dark mode, i18n (en/ja/pt-BR) and WAI-ARIA compliant a11y. Peer deps: react ^19, react-dom ^19 (plus optional peers for specific components — see package.json).
|
|
8
8
|
|
|
9
9
|
## Install & required setup
|
|
10
10
|
|