@expcat/tigercat-react 1.2.16 → 1.2.23
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/{chunk-G6MD6ZVN.mjs → chunk-D62GWQBX.mjs} +25 -7
- package/dist/{chunk-CFZJOGGH.js → chunk-OHSJ4KTU.js} +25 -7
- package/dist/{chunk-L2NMDYYQ.mjs → chunk-XJXEAXWY.mjs} +103 -16
- package/dist/{chunk-SY4P2AXW.js → chunk-ZDGBH4NA.js} +109 -22
- package/dist/components/Drawer.d.mts +2 -1
- package/dist/components/Drawer.d.ts +2 -1
- package/dist/components/Drawer.js +2 -2
- package/dist/components/Drawer.mjs +1 -1
- package/dist/components/Menu.d.mts +5 -0
- package/dist/components/Menu.d.ts +5 -0
- package/dist/components/Menu.js +3 -2
- package/dist/components/Menu.mjs +2 -1
- package/dist/components/MenuItem.js +3 -2
- package/dist/components/MenuItem.mjs +2 -1
- package/dist/components/MenuItemGroup.js +3 -2
- package/dist/components/MenuItemGroup.mjs +2 -1
- package/dist/components/SubMenu.js +3 -2
- package/dist/components/SubMenu.mjs +2 -1
- package/dist/index.js +3 -3
- package/dist/index.mjs +2 -2
- package/package.json +2 -2
|
@@ -66,6 +66,10 @@ var Drawer = ({
|
|
|
66
66
|
className,
|
|
67
67
|
bodyClassName,
|
|
68
68
|
destroyOnClose = false,
|
|
69
|
+
destroyOnCloseAfterLeave = false,
|
|
70
|
+
fullscreenOnMobile = true,
|
|
71
|
+
panelClassName,
|
|
72
|
+
panelStyle,
|
|
69
73
|
onClose,
|
|
70
74
|
onOpenChange,
|
|
71
75
|
onAfterEnter,
|
|
@@ -78,10 +82,18 @@ var Drawer = ({
|
|
|
78
82
|
...rest
|
|
79
83
|
}) => {
|
|
80
84
|
const [hasBeenOpened, setHasBeenOpened] = React.useState(open);
|
|
85
|
+
const [deferredRendered, setDeferredRendered] = React.useState(open);
|
|
81
86
|
useEffect(() => {
|
|
82
|
-
if (open)
|
|
83
|
-
|
|
84
|
-
|
|
87
|
+
if (open) {
|
|
88
|
+
setHasBeenOpened(true);
|
|
89
|
+
setDeferredRendered(true);
|
|
90
|
+
return;
|
|
91
|
+
}
|
|
92
|
+
if (destroyOnClose && !destroyOnCloseAfterLeave) {
|
|
93
|
+
setDeferredRendered(false);
|
|
94
|
+
}
|
|
95
|
+
}, [destroyOnClose, destroyOnCloseAfterLeave, open]);
|
|
96
|
+
const shouldRender = destroyOnClose ? destroyOnCloseAfterLeave ? deferredRendered : open : hasBeenOpened;
|
|
85
97
|
const handleClose = useCallback(() => {
|
|
86
98
|
onOpenChange?.(false);
|
|
87
99
|
onClose?.();
|
|
@@ -105,10 +117,13 @@ var Drawer = ({
|
|
|
105
117
|
onAfterEnter?.();
|
|
106
118
|
} else {
|
|
107
119
|
onAfterLeave?.();
|
|
120
|
+
if (destroyOnClose && destroyOnCloseAfterLeave) {
|
|
121
|
+
setDeferredRendered(false);
|
|
122
|
+
}
|
|
108
123
|
}
|
|
109
124
|
}, ANIMATION_DURATION_MS);
|
|
110
125
|
return () => window.clearTimeout(timer);
|
|
111
|
-
}, [open, onAfterEnter, onAfterLeave]);
|
|
126
|
+
}, [destroyOnClose, destroyOnCloseAfterLeave, open, onAfterEnter, onAfterLeave]);
|
|
112
127
|
const reactId = useId();
|
|
113
128
|
const drawerId = useMemo(() => `tiger-drawer-${reactId}`, [reactId]);
|
|
114
129
|
const titleId = `${drawerId}-title`;
|
|
@@ -191,9 +206,10 @@ var Drawer = ({
|
|
|
191
206
|
const containerClasses = classNames(getDrawerContainerClasses(), !open && "pointer-events-none");
|
|
192
207
|
const maskClasses = getDrawerMaskClasses(open);
|
|
193
208
|
const panelClasses = classNames(
|
|
194
|
-
getDrawerPanelClasses(placement, open, size),
|
|
209
|
+
getDrawerPanelClasses(placement, open, size, fullscreenOnMobile),
|
|
195
210
|
"flex flex-col",
|
|
196
|
-
className
|
|
211
|
+
className,
|
|
212
|
+
panelClassName
|
|
197
213
|
);
|
|
198
214
|
const headerClasses = getDrawerHeaderClasses();
|
|
199
215
|
const bodyClasses = getDrawerBodyClasses(bodyClassName);
|
|
@@ -203,12 +219,13 @@ var Drawer = ({
|
|
|
203
219
|
if (!shouldRender) {
|
|
204
220
|
return null;
|
|
205
221
|
}
|
|
222
|
+
const isLeavingBeforeDestroy = destroyOnClose && destroyOnCloseAfterLeave && !open;
|
|
206
223
|
const drawerContent = /* @__PURE__ */ jsxs(
|
|
207
224
|
"div",
|
|
208
225
|
{
|
|
209
226
|
className: containerClasses,
|
|
210
227
|
style: { zIndex },
|
|
211
|
-
hidden: !open,
|
|
228
|
+
hidden: !open && !isLeavingBeforeDestroy,
|
|
212
229
|
"aria-hidden": !open ? "true" : void 0,
|
|
213
230
|
"data-tiger-drawer-root": "",
|
|
214
231
|
children: [
|
|
@@ -226,6 +243,7 @@ var Drawer = ({
|
|
|
226
243
|
{
|
|
227
244
|
className: panelClasses,
|
|
228
245
|
style: {
|
|
246
|
+
...panelStyle,
|
|
229
247
|
...style,
|
|
230
248
|
...width ? {
|
|
231
249
|
[placement === "left" || placement === "right" ? "width" : "height"]: typeof width === "number" ? `${width}px` : width
|
|
@@ -66,6 +66,10 @@ var Drawer = ({
|
|
|
66
66
|
className,
|
|
67
67
|
bodyClassName,
|
|
68
68
|
destroyOnClose = false,
|
|
69
|
+
destroyOnCloseAfterLeave = false,
|
|
70
|
+
fullscreenOnMobile = true,
|
|
71
|
+
panelClassName,
|
|
72
|
+
panelStyle,
|
|
69
73
|
onClose,
|
|
70
74
|
onOpenChange,
|
|
71
75
|
onAfterEnter,
|
|
@@ -78,10 +82,18 @@ var Drawer = ({
|
|
|
78
82
|
...rest
|
|
79
83
|
}) => {
|
|
80
84
|
const [hasBeenOpened, setHasBeenOpened] = _react2.default.useState(open);
|
|
85
|
+
const [deferredRendered, setDeferredRendered] = _react2.default.useState(open);
|
|
81
86
|
_react.useEffect.call(void 0, () => {
|
|
82
|
-
if (open)
|
|
83
|
-
|
|
84
|
-
|
|
87
|
+
if (open) {
|
|
88
|
+
setHasBeenOpened(true);
|
|
89
|
+
setDeferredRendered(true);
|
|
90
|
+
return;
|
|
91
|
+
}
|
|
92
|
+
if (destroyOnClose && !destroyOnCloseAfterLeave) {
|
|
93
|
+
setDeferredRendered(false);
|
|
94
|
+
}
|
|
95
|
+
}, [destroyOnClose, destroyOnCloseAfterLeave, open]);
|
|
96
|
+
const shouldRender = destroyOnClose ? destroyOnCloseAfterLeave ? deferredRendered : open : hasBeenOpened;
|
|
85
97
|
const handleClose = _react.useCallback.call(void 0, () => {
|
|
86
98
|
_optionalChain([onOpenChange, 'optionalCall', _ => _(false)]);
|
|
87
99
|
_optionalChain([onClose, 'optionalCall', _2 => _2()]);
|
|
@@ -105,10 +117,13 @@ var Drawer = ({
|
|
|
105
117
|
_optionalChain([onAfterEnter, 'optionalCall', _3 => _3()]);
|
|
106
118
|
} else {
|
|
107
119
|
_optionalChain([onAfterLeave, 'optionalCall', _4 => _4()]);
|
|
120
|
+
if (destroyOnClose && destroyOnCloseAfterLeave) {
|
|
121
|
+
setDeferredRendered(false);
|
|
122
|
+
}
|
|
108
123
|
}
|
|
109
124
|
}, _tigercatcore.ANIMATION_DURATION_MS);
|
|
110
125
|
return () => window.clearTimeout(timer);
|
|
111
|
-
}, [open, onAfterEnter, onAfterLeave]);
|
|
126
|
+
}, [destroyOnClose, destroyOnCloseAfterLeave, open, onAfterEnter, onAfterLeave]);
|
|
112
127
|
const reactId = _react.useId.call(void 0, );
|
|
113
128
|
const drawerId = _react.useMemo.call(void 0, () => `tiger-drawer-${reactId}`, [reactId]);
|
|
114
129
|
const titleId = `${drawerId}-title`;
|
|
@@ -191,9 +206,10 @@ var Drawer = ({
|
|
|
191
206
|
const containerClasses = _tigercatcore.classNames.call(void 0, _tigercatcore.getDrawerContainerClasses.call(void 0, ), !open && "pointer-events-none");
|
|
192
207
|
const maskClasses = _tigercatcore.getDrawerMaskClasses.call(void 0, open);
|
|
193
208
|
const panelClasses = _tigercatcore.classNames.call(void 0,
|
|
194
|
-
_tigercatcore.getDrawerPanelClasses.call(void 0, placement, open, size),
|
|
209
|
+
_tigercatcore.getDrawerPanelClasses.call(void 0, placement, open, size, fullscreenOnMobile),
|
|
195
210
|
"flex flex-col",
|
|
196
|
-
className
|
|
211
|
+
className,
|
|
212
|
+
panelClassName
|
|
197
213
|
);
|
|
198
214
|
const headerClasses = _tigercatcore.getDrawerHeaderClasses.call(void 0, );
|
|
199
215
|
const bodyClasses = _tigercatcore.getDrawerBodyClasses.call(void 0, bodyClassName);
|
|
@@ -203,12 +219,13 @@ var Drawer = ({
|
|
|
203
219
|
if (!shouldRender) {
|
|
204
220
|
return null;
|
|
205
221
|
}
|
|
222
|
+
const isLeavingBeforeDestroy = destroyOnClose && destroyOnCloseAfterLeave && !open;
|
|
206
223
|
const drawerContent = /* @__PURE__ */ _jsxruntime.jsxs.call(void 0,
|
|
207
224
|
"div",
|
|
208
225
|
{
|
|
209
226
|
className: containerClasses,
|
|
210
227
|
style: { zIndex },
|
|
211
|
-
hidden: !open,
|
|
228
|
+
hidden: !open && !isLeavingBeforeDestroy,
|
|
212
229
|
"aria-hidden": !open ? "true" : void 0,
|
|
213
230
|
"data-tiger-drawer-root": "",
|
|
214
231
|
children: [
|
|
@@ -226,6 +243,7 @@ var Drawer = ({
|
|
|
226
243
|
{
|
|
227
244
|
className: panelClasses,
|
|
228
245
|
style: {
|
|
246
|
+
...panelStyle,
|
|
229
247
|
...style,
|
|
230
248
|
...width ? {
|
|
231
249
|
[placement === "left" || placement === "right" ? "width" : "height"]: typeof width === "number" ? `${width}px` : width
|
|
@@ -1,3 +1,8 @@
|
|
|
1
|
+
import {
|
|
2
|
+
renderBodyPortal,
|
|
3
|
+
useFloating
|
|
4
|
+
} from "./chunk-SEWNVIHH.mjs";
|
|
5
|
+
|
|
1
6
|
// src/components/Menu.tsx
|
|
2
7
|
import React, {
|
|
3
8
|
createContext,
|
|
@@ -17,6 +22,7 @@ import {
|
|
|
17
22
|
getSubMenuTitleClasses,
|
|
18
23
|
getSubMenuExpandIconClasses,
|
|
19
24
|
getSubmenuPopupZIndex,
|
|
25
|
+
getTransformOrigin,
|
|
20
26
|
filterMenuItems,
|
|
21
27
|
isKeySelected,
|
|
22
28
|
isKeyOpen,
|
|
@@ -56,6 +62,7 @@ var Menu = ({
|
|
|
56
62
|
collapsed = false,
|
|
57
63
|
multiple = true,
|
|
58
64
|
inlineIndent = 24,
|
|
65
|
+
popupPortal = false,
|
|
59
66
|
className,
|
|
60
67
|
style,
|
|
61
68
|
onSelect,
|
|
@@ -69,6 +76,7 @@ var Menu = ({
|
|
|
69
76
|
children
|
|
70
77
|
}) => {
|
|
71
78
|
const menuRef = useRef(null);
|
|
79
|
+
const resolvedMode = collapsed && mode === "inline" ? "vertical" : mode;
|
|
72
80
|
const [internalSelectedKeys, setInternalSelectedKeys] = useState(defaultSelectedKeys);
|
|
73
81
|
const [internalOpenKeys, setInternalOpenKeys] = useState(defaultOpenKeys);
|
|
74
82
|
const [internalSearchValue, setInternalSearchValue] = useState(defaultSearchValue);
|
|
@@ -107,20 +115,31 @@ var Menu = ({
|
|
|
107
115
|
[controlledSearchValue, onSearch]
|
|
108
116
|
);
|
|
109
117
|
const menuClasses = useMemo(() => {
|
|
110
|
-
return classNames(getMenuClasses(
|
|
111
|
-
}, [
|
|
118
|
+
return classNames(getMenuClasses(resolvedMode, theme, collapsed), className);
|
|
119
|
+
}, [resolvedMode, theme, collapsed, className]);
|
|
112
120
|
const contextValue = useMemo(
|
|
113
121
|
() => ({
|
|
114
|
-
mode,
|
|
122
|
+
mode: resolvedMode,
|
|
115
123
|
theme,
|
|
116
124
|
collapsed,
|
|
117
125
|
inlineIndent,
|
|
126
|
+
popupPortal,
|
|
118
127
|
selectedKeys,
|
|
119
128
|
openKeys,
|
|
120
129
|
handleSelect,
|
|
121
130
|
handleOpenChange
|
|
122
131
|
}),
|
|
123
|
-
[
|
|
132
|
+
[
|
|
133
|
+
resolvedMode,
|
|
134
|
+
theme,
|
|
135
|
+
collapsed,
|
|
136
|
+
inlineIndent,
|
|
137
|
+
popupPortal,
|
|
138
|
+
selectedKeys,
|
|
139
|
+
openKeys,
|
|
140
|
+
handleSelect,
|
|
141
|
+
handleOpenChange
|
|
142
|
+
]
|
|
124
143
|
);
|
|
125
144
|
const filteredItems = useMemo(
|
|
126
145
|
() => filterMenuItems(items ?? [], searchValue),
|
|
@@ -147,7 +166,7 @@ var Menu = ({
|
|
|
147
166
|
const emptyChild = items && items.length > 0 && dataChildren.length === 0 && !hasSlotChildren ? /* @__PURE__ */ jsx("li", { role: "none", children: /* @__PURE__ */ jsx("div", { className: menuSearchEmptyClasses, children: emptyText }) }) : null;
|
|
148
167
|
useEffect(() => {
|
|
149
168
|
if (menuRef.current) initRovingTabIndex(menuRef.current);
|
|
150
|
-
}, [
|
|
169
|
+
}, [resolvedMode, collapsed, selectedKeys, openKeys, filteredItems]);
|
|
151
170
|
return /* @__PURE__ */ jsx(MenuContext.Provider, { value: contextValue, children: /* @__PURE__ */ jsxs(
|
|
152
171
|
"ul",
|
|
153
172
|
{
|
|
@@ -156,7 +175,8 @@ var Menu = ({
|
|
|
156
175
|
style,
|
|
157
176
|
role: "menu",
|
|
158
177
|
"data-tiger-menu-root": "true",
|
|
159
|
-
"data-tiger-menu-mode":
|
|
178
|
+
"data-tiger-menu-mode": resolvedMode,
|
|
179
|
+
"data-tiger-menu-requested-mode": mode,
|
|
160
180
|
children: [
|
|
161
181
|
searchable && /* @__PURE__ */ jsx("li", { role: "none", className: menuSearchFieldClasses, children: /* @__PURE__ */ jsx(
|
|
162
182
|
"input",
|
|
@@ -283,14 +303,19 @@ var MenuItemGroup = ({
|
|
|
283
303
|
title,
|
|
284
304
|
className,
|
|
285
305
|
children,
|
|
286
|
-
level = 0
|
|
306
|
+
level = 0,
|
|
307
|
+
collapsed
|
|
287
308
|
}) => {
|
|
288
309
|
const enhancedChildren = React.Children.map(children, (child) => {
|
|
289
310
|
if (!React.isValidElement(child)) return child;
|
|
290
311
|
if (child.type === MenuItem || isComponentNamed(child.type, "SubMenu")) {
|
|
291
|
-
return React.cloneElement(
|
|
292
|
-
|
|
293
|
-
|
|
312
|
+
return React.cloneElement(
|
|
313
|
+
child,
|
|
314
|
+
{
|
|
315
|
+
level,
|
|
316
|
+
collapsed
|
|
317
|
+
}
|
|
318
|
+
);
|
|
294
319
|
}
|
|
295
320
|
return child;
|
|
296
321
|
});
|
|
@@ -326,12 +351,28 @@ var SubMenu = ({
|
|
|
326
351
|
}
|
|
327
352
|
const [isHovered, setIsHovered] = useState(false);
|
|
328
353
|
const [isOpenByKeyboard, setIsOpenByKeyboard] = useState(false);
|
|
354
|
+
const popupCloseTimerRef = useRef(null);
|
|
355
|
+
const titleRef = useRef(null);
|
|
356
|
+
const popupRef = useRef(null);
|
|
329
357
|
const submenuContentRef = useRef(null);
|
|
330
358
|
const heightTransitionRef = useRef(null);
|
|
331
359
|
const effectiveCollapsed = collapsedOverride ?? (menuContext ? menuContext.collapsed : false);
|
|
332
360
|
const isPopup = !!menuContext && (menuContext.mode === "horizontal" || menuContext.mode === "vertical" && effectiveCollapsed);
|
|
333
361
|
const isOpen = !!menuContext && isKeyOpen(itemKey, menuContext.openKeys);
|
|
334
362
|
const isExpanded = isPopup ? isHovered || isOpenByKeyboard : isOpen;
|
|
363
|
+
const popupPortal = Boolean(isPopup && menuContext?.popupPortal);
|
|
364
|
+
const popupPlacement = menuContext?.mode === "horizontal" && level === 0 ? "bottom-start" : "right-start";
|
|
365
|
+
const {
|
|
366
|
+
x: popupX,
|
|
367
|
+
y: popupY,
|
|
368
|
+
placement: currentPopupPlacement
|
|
369
|
+
} = useFloating({
|
|
370
|
+
referenceRef: titleRef,
|
|
371
|
+
floatingRef: popupRef,
|
|
372
|
+
enabled: popupPortal && isExpanded,
|
|
373
|
+
placement: popupPlacement,
|
|
374
|
+
offset: 4
|
|
375
|
+
});
|
|
335
376
|
const isInlineOrVertical = menuContext?.mode !== "horizontal" && !isPopup;
|
|
336
377
|
const [hasRenderedInline, setHasRenderedInline] = useState(
|
|
337
378
|
() => isInlineOrVertical ? isExpanded : false
|
|
@@ -344,7 +385,14 @@ var SubMenu = ({
|
|
|
344
385
|
heightTransitionRef.current?.dispose();
|
|
345
386
|
heightTransitionRef.current = null;
|
|
346
387
|
}, []);
|
|
347
|
-
useEffect(() =>
|
|
388
|
+
useEffect(() => {
|
|
389
|
+
return () => {
|
|
390
|
+
disposeHeightTransition();
|
|
391
|
+
if (popupCloseTimerRef.current) {
|
|
392
|
+
clearTimeout(popupCloseTimerRef.current);
|
|
393
|
+
}
|
|
394
|
+
};
|
|
395
|
+
}, [disposeHeightTransition]);
|
|
348
396
|
useLayoutEffect(() => {
|
|
349
397
|
if (!isInlineOrVertical || !hasRenderedInline || !submenuContentRef.current) {
|
|
350
398
|
disposeHeightTransition();
|
|
@@ -384,14 +432,25 @@ var SubMenu = ({
|
|
|
384
432
|
menuContext.handleOpenChange(itemKey);
|
|
385
433
|
}, [disabled, menuContext, itemKey, isPopup]);
|
|
386
434
|
const handleMouseEnter = useCallback(() => {
|
|
435
|
+
if (popupCloseTimerRef.current) {
|
|
436
|
+
clearTimeout(popupCloseTimerRef.current);
|
|
437
|
+
popupCloseTimerRef.current = null;
|
|
438
|
+
}
|
|
387
439
|
if (menuContext?.mode === "horizontal" || isPopup) setIsHovered(true);
|
|
388
440
|
}, [menuContext, isPopup]);
|
|
389
441
|
const handleMouseLeave = useCallback(() => {
|
|
390
442
|
if (menuContext?.mode === "horizontal" || isPopup) {
|
|
391
|
-
|
|
392
|
-
|
|
443
|
+
const close = () => {
|
|
444
|
+
setIsHovered(false);
|
|
445
|
+
setIsOpenByKeyboard(false);
|
|
446
|
+
};
|
|
447
|
+
if (popupPortal) {
|
|
448
|
+
popupCloseTimerRef.current = setTimeout(close, 120);
|
|
449
|
+
return;
|
|
450
|
+
}
|
|
451
|
+
close();
|
|
393
452
|
}
|
|
394
|
-
}, [menuContext, isPopup]);
|
|
453
|
+
}, [menuContext, isPopup, popupPortal]);
|
|
395
454
|
const openInline = useCallback(
|
|
396
455
|
(titleEl) => {
|
|
397
456
|
if (!menuContext) return;
|
|
@@ -496,7 +555,8 @@ var SubMenu = ({
|
|
|
496
555
|
return React.cloneElement(
|
|
497
556
|
child,
|
|
498
557
|
{
|
|
499
|
-
level: nextLevel
|
|
558
|
+
level: nextLevel,
|
|
559
|
+
collapsed: isPopup ? false : void 0
|
|
500
560
|
}
|
|
501
561
|
);
|
|
502
562
|
}
|
|
@@ -504,6 +564,31 @@ var SubMenu = ({
|
|
|
504
564
|
});
|
|
505
565
|
const popupZIndex = isPopup ? getSubmenuPopupZIndex(level) : {};
|
|
506
566
|
if (isPopup) {
|
|
567
|
+
const popupStyle = popupPortal ? {
|
|
568
|
+
display: isExpanded ? "block" : "none",
|
|
569
|
+
position: "absolute",
|
|
570
|
+
left: popupX,
|
|
571
|
+
top: popupY,
|
|
572
|
+
transformOrigin: getTransformOrigin(currentPopupPlacement),
|
|
573
|
+
...popupZIndex
|
|
574
|
+
} : { display: isExpanded ? "block" : "none", ...popupZIndex };
|
|
575
|
+
const popup = /* @__PURE__ */ jsx(
|
|
576
|
+
"ul",
|
|
577
|
+
{
|
|
578
|
+
ref: popupPortal ? popupRef : void 0,
|
|
579
|
+
className: contentClasses,
|
|
580
|
+
style: popupStyle,
|
|
581
|
+
role: "menu",
|
|
582
|
+
"aria-hidden": isExpanded ? void 0 : "true",
|
|
583
|
+
onMouseEnter: popupPortal ? handleMouseEnter : void 0,
|
|
584
|
+
onMouseLeave: popupPortal ? handleMouseLeave : void 0,
|
|
585
|
+
"data-tiger-submenu-popup": "",
|
|
586
|
+
children: enhancedChildren
|
|
587
|
+
}
|
|
588
|
+
);
|
|
589
|
+
if (popupPortal) {
|
|
590
|
+
return renderBodyPortal(popup);
|
|
591
|
+
}
|
|
507
592
|
return /* @__PURE__ */ jsx(
|
|
508
593
|
"ul",
|
|
509
594
|
{
|
|
@@ -511,6 +596,7 @@ var SubMenu = ({
|
|
|
511
596
|
style: { display: isExpanded ? "block" : "none", ...popupZIndex },
|
|
512
597
|
role: "menu",
|
|
513
598
|
"aria-hidden": isExpanded ? void 0 : "true",
|
|
599
|
+
"data-tiger-submenu-popup": "",
|
|
514
600
|
children: enhancedChildren
|
|
515
601
|
}
|
|
516
602
|
);
|
|
@@ -533,7 +619,7 @@ var SubMenu = ({
|
|
|
533
619
|
return /* @__PURE__ */ jsxs(
|
|
534
620
|
"li",
|
|
535
621
|
{
|
|
536
|
-
className: isPopup ? "relative" : "",
|
|
622
|
+
className: isPopup && !popupPortal ? "relative" : "",
|
|
537
623
|
onMouseEnter: handleMouseEnter,
|
|
538
624
|
onMouseLeave: handleMouseLeave,
|
|
539
625
|
role: "none",
|
|
@@ -541,6 +627,7 @@ var SubMenu = ({
|
|
|
541
627
|
/* @__PURE__ */ jsx(
|
|
542
628
|
"button",
|
|
543
629
|
{
|
|
630
|
+
ref: titleRef,
|
|
544
631
|
type: "button",
|
|
545
632
|
className: titleClasses,
|
|
546
633
|
style: indentStyle,
|
|
@@ -1,4 +1,9 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } function _nullishCoalesce(lhs, rhsFn) { if (lhs != null) { return lhs; } else { return rhsFn(); } } function _optionalChain(ops) { let lastAccessLHS = undefined; let value = ops[0]; let i = 1; while (i < ops.length) { const op = ops[i]; const fn = ops[i + 1]; i += 2; if ((op === 'optionalAccess' || op === 'optionalCall') && value == null) { return undefined; } if (op === 'access' || op === 'optionalAccess') { lastAccessLHS = value; value = fn(value); } else if (op === 'call' || op === 'optionalCall') { value = fn((...args) => value.call(lastAccessLHS, ...args)); lastAccessLHS = undefined; } } return value; }
|
|
1
|
+
"use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } function _nullishCoalesce(lhs, rhsFn) { if (lhs != null) { return lhs; } else { return rhsFn(); } } function _optionalChain(ops) { let lastAccessLHS = undefined; let value = ops[0]; let i = 1; while (i < ops.length) { const op = ops[i]; const fn = ops[i + 1]; i += 2; if ((op === 'optionalAccess' || op === 'optionalCall') && value == null) { return undefined; } if (op === 'access' || op === 'optionalAccess') { lastAccessLHS = value; value = fn(value); } else if (op === 'call' || op === 'optionalCall') { value = fn((...args) => value.call(lastAccessLHS, ...args)); lastAccessLHS = undefined; } } return value; }
|
|
2
|
+
|
|
3
|
+
|
|
4
|
+
var _chunkSTTQ5LXXjs = require('./chunk-STTQ5LXX.js');
|
|
5
|
+
|
|
6
|
+
// src/components/Menu.tsx
|
|
2
7
|
|
|
3
8
|
|
|
4
9
|
|
|
@@ -37,6 +42,7 @@ var _react = require('react'); var _react2 = _interopRequireDefault(_react);
|
|
|
37
42
|
|
|
38
43
|
|
|
39
44
|
|
|
45
|
+
|
|
40
46
|
|
|
41
47
|
|
|
42
48
|
var _tigercatcore = require('@expcat/tigercat-core');
|
|
@@ -56,6 +62,7 @@ var Menu = ({
|
|
|
56
62
|
collapsed = false,
|
|
57
63
|
multiple = true,
|
|
58
64
|
inlineIndent = 24,
|
|
65
|
+
popupPortal = false,
|
|
59
66
|
className,
|
|
60
67
|
style,
|
|
61
68
|
onSelect,
|
|
@@ -69,6 +76,7 @@ var Menu = ({
|
|
|
69
76
|
children
|
|
70
77
|
}) => {
|
|
71
78
|
const menuRef = _react.useRef.call(void 0, null);
|
|
79
|
+
const resolvedMode = collapsed && mode === "inline" ? "vertical" : mode;
|
|
72
80
|
const [internalSelectedKeys, setInternalSelectedKeys] = _react.useState.call(void 0, defaultSelectedKeys);
|
|
73
81
|
const [internalOpenKeys, setInternalOpenKeys] = _react.useState.call(void 0, defaultOpenKeys);
|
|
74
82
|
const [internalSearchValue, setInternalSearchValue] = _react.useState.call(void 0, defaultSearchValue);
|
|
@@ -107,20 +115,31 @@ var Menu = ({
|
|
|
107
115
|
[controlledSearchValue, onSearch]
|
|
108
116
|
);
|
|
109
117
|
const menuClasses = _react.useMemo.call(void 0, () => {
|
|
110
|
-
return _tigercatcore.classNames.call(void 0, _tigercatcore.getMenuClasses.call(void 0,
|
|
111
|
-
}, [
|
|
118
|
+
return _tigercatcore.classNames.call(void 0, _tigercatcore.getMenuClasses.call(void 0, resolvedMode, theme, collapsed), className);
|
|
119
|
+
}, [resolvedMode, theme, collapsed, className]);
|
|
112
120
|
const contextValue = _react.useMemo.call(void 0,
|
|
113
121
|
() => ({
|
|
114
|
-
mode,
|
|
122
|
+
mode: resolvedMode,
|
|
115
123
|
theme,
|
|
116
124
|
collapsed,
|
|
117
125
|
inlineIndent,
|
|
126
|
+
popupPortal,
|
|
118
127
|
selectedKeys,
|
|
119
128
|
openKeys,
|
|
120
129
|
handleSelect,
|
|
121
130
|
handleOpenChange
|
|
122
131
|
}),
|
|
123
|
-
[
|
|
132
|
+
[
|
|
133
|
+
resolvedMode,
|
|
134
|
+
theme,
|
|
135
|
+
collapsed,
|
|
136
|
+
inlineIndent,
|
|
137
|
+
popupPortal,
|
|
138
|
+
selectedKeys,
|
|
139
|
+
openKeys,
|
|
140
|
+
handleSelect,
|
|
141
|
+
handleOpenChange
|
|
142
|
+
]
|
|
124
143
|
);
|
|
125
144
|
const filteredItems = _react.useMemo.call(void 0,
|
|
126
145
|
() => _tigercatcore.filterMenuItems.call(void 0, _nullishCoalesce(items, () => ( [])), searchValue),
|
|
@@ -147,7 +166,7 @@ var Menu = ({
|
|
|
147
166
|
const emptyChild = items && items.length > 0 && dataChildren.length === 0 && !hasSlotChildren ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "li", { role: "none", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: _tigercatcore.menuSearchEmptyClasses, children: emptyText }) }) : null;
|
|
148
167
|
_react.useEffect.call(void 0, () => {
|
|
149
168
|
if (menuRef.current) _tigercatcore.initRovingTabIndex.call(void 0, menuRef.current);
|
|
150
|
-
}, [
|
|
169
|
+
}, [resolvedMode, collapsed, selectedKeys, openKeys, filteredItems]);
|
|
151
170
|
return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, MenuContext.Provider, { value: contextValue, children: /* @__PURE__ */ _jsxruntime.jsxs.call(void 0,
|
|
152
171
|
"ul",
|
|
153
172
|
{
|
|
@@ -156,7 +175,8 @@ var Menu = ({
|
|
|
156
175
|
style,
|
|
157
176
|
role: "menu",
|
|
158
177
|
"data-tiger-menu-root": "true",
|
|
159
|
-
"data-tiger-menu-mode":
|
|
178
|
+
"data-tiger-menu-mode": resolvedMode,
|
|
179
|
+
"data-tiger-menu-requested-mode": mode,
|
|
160
180
|
children: [
|
|
161
181
|
searchable && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "li", { role: "none", className: _tigercatcore.menuSearchFieldClasses, children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
162
182
|
"input",
|
|
@@ -283,14 +303,19 @@ var MenuItemGroup = ({
|
|
|
283
303
|
title,
|
|
284
304
|
className,
|
|
285
305
|
children,
|
|
286
|
-
level = 0
|
|
306
|
+
level = 0,
|
|
307
|
+
collapsed
|
|
287
308
|
}) => {
|
|
288
309
|
const enhancedChildren = _react2.default.Children.map(children, (child) => {
|
|
289
310
|
if (!_react2.default.isValidElement(child)) return child;
|
|
290
311
|
if (child.type === MenuItem || isComponentNamed(child.type, "SubMenu")) {
|
|
291
|
-
return _react2.default.cloneElement(
|
|
292
|
-
|
|
293
|
-
|
|
312
|
+
return _react2.default.cloneElement(
|
|
313
|
+
child,
|
|
314
|
+
{
|
|
315
|
+
level,
|
|
316
|
+
collapsed
|
|
317
|
+
}
|
|
318
|
+
);
|
|
294
319
|
}
|
|
295
320
|
return child;
|
|
296
321
|
});
|
|
@@ -326,13 +351,29 @@ var SubMenu = ({
|
|
|
326
351
|
}
|
|
327
352
|
const [isHovered, setIsHovered] = _react.useState.call(void 0, false);
|
|
328
353
|
const [isOpenByKeyboard, setIsOpenByKeyboard] = _react.useState.call(void 0, false);
|
|
354
|
+
const popupCloseTimerRef = _react.useRef.call(void 0, null);
|
|
355
|
+
const titleRef = _react.useRef.call(void 0, null);
|
|
356
|
+
const popupRef = _react.useRef.call(void 0, null);
|
|
329
357
|
const submenuContentRef = _react.useRef.call(void 0, null);
|
|
330
358
|
const heightTransitionRef = _react.useRef.call(void 0, null);
|
|
331
359
|
const effectiveCollapsed = _nullishCoalesce(collapsedOverride, () => ( (menuContext ? menuContext.collapsed : false)));
|
|
332
360
|
const isPopup = !!menuContext && (menuContext.mode === "horizontal" || menuContext.mode === "vertical" && effectiveCollapsed);
|
|
333
361
|
const isOpen = !!menuContext && _tigercatcore.isKeyOpen.call(void 0, itemKey, menuContext.openKeys);
|
|
334
362
|
const isExpanded = isPopup ? isHovered || isOpenByKeyboard : isOpen;
|
|
335
|
-
const
|
|
363
|
+
const popupPortal = Boolean(isPopup && _optionalChain([menuContext, 'optionalAccess', _6 => _6.popupPortal]));
|
|
364
|
+
const popupPlacement = _optionalChain([menuContext, 'optionalAccess', _7 => _7.mode]) === "horizontal" && level === 0 ? "bottom-start" : "right-start";
|
|
365
|
+
const {
|
|
366
|
+
x: popupX,
|
|
367
|
+
y: popupY,
|
|
368
|
+
placement: currentPopupPlacement
|
|
369
|
+
} = _chunkSTTQ5LXXjs.useFloating.call(void 0, {
|
|
370
|
+
referenceRef: titleRef,
|
|
371
|
+
floatingRef: popupRef,
|
|
372
|
+
enabled: popupPortal && isExpanded,
|
|
373
|
+
placement: popupPlacement,
|
|
374
|
+
offset: 4
|
|
375
|
+
});
|
|
376
|
+
const isInlineOrVertical = _optionalChain([menuContext, 'optionalAccess', _8 => _8.mode]) !== "horizontal" && !isPopup;
|
|
336
377
|
const [hasRenderedInline, setHasRenderedInline] = _react.useState.call(void 0,
|
|
337
378
|
() => isInlineOrVertical ? isExpanded : false
|
|
338
379
|
);
|
|
@@ -341,10 +382,17 @@ var SubMenu = ({
|
|
|
341
382
|
setHasRenderedInline(true);
|
|
342
383
|
}, [hasRenderedInline, isExpanded, isInlineOrVertical]);
|
|
343
384
|
const disposeHeightTransition = _react.useCallback.call(void 0, () => {
|
|
344
|
-
_optionalChain([heightTransitionRef, 'access',
|
|
385
|
+
_optionalChain([heightTransitionRef, 'access', _9 => _9.current, 'optionalAccess', _10 => _10.dispose, 'call', _11 => _11()]);
|
|
345
386
|
heightTransitionRef.current = null;
|
|
346
387
|
}, []);
|
|
347
|
-
_react.useEffect.call(void 0, () =>
|
|
388
|
+
_react.useEffect.call(void 0, () => {
|
|
389
|
+
return () => {
|
|
390
|
+
disposeHeightTransition();
|
|
391
|
+
if (popupCloseTimerRef.current) {
|
|
392
|
+
clearTimeout(popupCloseTimerRef.current);
|
|
393
|
+
}
|
|
394
|
+
};
|
|
395
|
+
}, [disposeHeightTransition]);
|
|
348
396
|
_react.useLayoutEffect.call(void 0, () => {
|
|
349
397
|
if (!isInlineOrVertical || !hasRenderedInline || !submenuContentRef.current) {
|
|
350
398
|
disposeHeightTransition();
|
|
@@ -384,14 +432,25 @@ var SubMenu = ({
|
|
|
384
432
|
menuContext.handleOpenChange(itemKey);
|
|
385
433
|
}, [disabled, menuContext, itemKey, isPopup]);
|
|
386
434
|
const handleMouseEnter = _react.useCallback.call(void 0, () => {
|
|
387
|
-
if (
|
|
435
|
+
if (popupCloseTimerRef.current) {
|
|
436
|
+
clearTimeout(popupCloseTimerRef.current);
|
|
437
|
+
popupCloseTimerRef.current = null;
|
|
438
|
+
}
|
|
439
|
+
if (_optionalChain([menuContext, 'optionalAccess', _12 => _12.mode]) === "horizontal" || isPopup) setIsHovered(true);
|
|
388
440
|
}, [menuContext, isPopup]);
|
|
389
441
|
const handleMouseLeave = _react.useCallback.call(void 0, () => {
|
|
390
|
-
if (_optionalChain([menuContext, 'optionalAccess',
|
|
391
|
-
|
|
392
|
-
|
|
442
|
+
if (_optionalChain([menuContext, 'optionalAccess', _13 => _13.mode]) === "horizontal" || isPopup) {
|
|
443
|
+
const close = () => {
|
|
444
|
+
setIsHovered(false);
|
|
445
|
+
setIsOpenByKeyboard(false);
|
|
446
|
+
};
|
|
447
|
+
if (popupPortal) {
|
|
448
|
+
popupCloseTimerRef.current = setTimeout(close, 120);
|
|
449
|
+
return;
|
|
450
|
+
}
|
|
451
|
+
close();
|
|
393
452
|
}
|
|
394
|
-
}, [menuContext, isPopup]);
|
|
453
|
+
}, [menuContext, isPopup, popupPortal]);
|
|
395
454
|
const openInline = _react.useCallback.call(void 0,
|
|
396
455
|
(titleEl) => {
|
|
397
456
|
if (!menuContext) return;
|
|
@@ -406,7 +465,7 @@ var SubMenu = ({
|
|
|
406
465
|
if (!menuContext || disabled) return;
|
|
407
466
|
const current = event.currentTarget;
|
|
408
467
|
const rootMenu = current.closest('ul[role="menu"]');
|
|
409
|
-
const isRoot = _optionalChain([rootMenu, 'optionalAccess',
|
|
468
|
+
const isRoot = _optionalChain([rootMenu, 'optionalAccess', _14 => _14.dataset, 'access', _15 => _15.tigerMenuRoot]) === "true";
|
|
410
469
|
const isHorizontalRoot = isRoot && menuContext.mode === "horizontal";
|
|
411
470
|
const nextKey = isHorizontalRoot ? "ArrowRight" : "ArrowDown";
|
|
412
471
|
const prevKey = isHorizontalRoot ? "ArrowLeft" : "ArrowUp";
|
|
@@ -496,7 +555,8 @@ var SubMenu = ({
|
|
|
496
555
|
return _react2.default.cloneElement(
|
|
497
556
|
child,
|
|
498
557
|
{
|
|
499
|
-
level: nextLevel
|
|
558
|
+
level: nextLevel,
|
|
559
|
+
collapsed: isPopup ? false : void 0
|
|
500
560
|
}
|
|
501
561
|
);
|
|
502
562
|
}
|
|
@@ -504,6 +564,31 @@ var SubMenu = ({
|
|
|
504
564
|
});
|
|
505
565
|
const popupZIndex = isPopup ? _tigercatcore.getSubmenuPopupZIndex.call(void 0, level) : {};
|
|
506
566
|
if (isPopup) {
|
|
567
|
+
const popupStyle = popupPortal ? {
|
|
568
|
+
display: isExpanded ? "block" : "none",
|
|
569
|
+
position: "absolute",
|
|
570
|
+
left: popupX,
|
|
571
|
+
top: popupY,
|
|
572
|
+
transformOrigin: _tigercatcore.getTransformOrigin.call(void 0, currentPopupPlacement),
|
|
573
|
+
...popupZIndex
|
|
574
|
+
} : { display: isExpanded ? "block" : "none", ...popupZIndex };
|
|
575
|
+
const popup = /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
576
|
+
"ul",
|
|
577
|
+
{
|
|
578
|
+
ref: popupPortal ? popupRef : void 0,
|
|
579
|
+
className: contentClasses,
|
|
580
|
+
style: popupStyle,
|
|
581
|
+
role: "menu",
|
|
582
|
+
"aria-hidden": isExpanded ? void 0 : "true",
|
|
583
|
+
onMouseEnter: popupPortal ? handleMouseEnter : void 0,
|
|
584
|
+
onMouseLeave: popupPortal ? handleMouseLeave : void 0,
|
|
585
|
+
"data-tiger-submenu-popup": "",
|
|
586
|
+
children: enhancedChildren
|
|
587
|
+
}
|
|
588
|
+
);
|
|
589
|
+
if (popupPortal) {
|
|
590
|
+
return _chunkSTTQ5LXXjs.renderBodyPortal.call(void 0, popup);
|
|
591
|
+
}
|
|
507
592
|
return /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
508
593
|
"ul",
|
|
509
594
|
{
|
|
@@ -511,6 +596,7 @@ var SubMenu = ({
|
|
|
511
596
|
style: { display: isExpanded ? "block" : "none", ...popupZIndex },
|
|
512
597
|
role: "menu",
|
|
513
598
|
"aria-hidden": isExpanded ? void 0 : "true",
|
|
599
|
+
"data-tiger-submenu-popup": "",
|
|
514
600
|
children: enhancedChildren
|
|
515
601
|
}
|
|
516
602
|
);
|
|
@@ -533,7 +619,7 @@ var SubMenu = ({
|
|
|
533
619
|
return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0,
|
|
534
620
|
"li",
|
|
535
621
|
{
|
|
536
|
-
className: isPopup ? "relative" : "",
|
|
622
|
+
className: isPopup && !popupPortal ? "relative" : "",
|
|
537
623
|
onMouseEnter: handleMouseEnter,
|
|
538
624
|
onMouseLeave: handleMouseLeave,
|
|
539
625
|
role: "none",
|
|
@@ -541,6 +627,7 @@ var SubMenu = ({
|
|
|
541
627
|
/* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
542
628
|
"button",
|
|
543
629
|
{
|
|
630
|
+
ref: titleRef,
|
|
544
631
|
type: "button",
|
|
545
632
|
className: titleClasses,
|
|
546
633
|
style: indentStyle,
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
2
|
import { DrawerProps as DrawerProps$1 } from '@expcat/tigercat-core';
|
|
3
3
|
|
|
4
|
-
interface DrawerProps extends DrawerProps$1, Omit<React.HTMLAttributes<HTMLDivElement>, 'title' | 'children'> {
|
|
4
|
+
interface DrawerProps extends Omit<DrawerProps$1, 'panelStyle'>, Omit<React.HTMLAttributes<HTMLDivElement>, 'title' | 'children'> {
|
|
5
5
|
onOpenChange?: (open: boolean) => void;
|
|
6
6
|
onClose?: () => void;
|
|
7
7
|
onAfterEnter?: () => void;
|
|
@@ -9,6 +9,7 @@ interface DrawerProps extends DrawerProps$1, Omit<React.HTMLAttributes<HTMLDivEl
|
|
|
9
9
|
header?: React.ReactNode;
|
|
10
10
|
children?: React.ReactNode;
|
|
11
11
|
footer?: React.ReactNode;
|
|
12
|
+
panelStyle?: React.CSSProperties;
|
|
12
13
|
/**
|
|
13
14
|
* Close button aria-label
|
|
14
15
|
* @default 'Close drawer'
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
2
|
import { DrawerProps as DrawerProps$1 } from '@expcat/tigercat-core';
|
|
3
3
|
|
|
4
|
-
interface DrawerProps extends DrawerProps$1, Omit<React.HTMLAttributes<HTMLDivElement>, 'title' | 'children'> {
|
|
4
|
+
interface DrawerProps extends Omit<DrawerProps$1, 'panelStyle'>, Omit<React.HTMLAttributes<HTMLDivElement>, 'title' | 'children'> {
|
|
5
5
|
onOpenChange?: (open: boolean) => void;
|
|
6
6
|
onClose?: () => void;
|
|
7
7
|
onAfterEnter?: () => void;
|
|
@@ -9,6 +9,7 @@ interface DrawerProps extends DrawerProps$1, Omit<React.HTMLAttributes<HTMLDivEl
|
|
|
9
9
|
header?: React.ReactNode;
|
|
10
10
|
children?: React.ReactNode;
|
|
11
11
|
footer?: React.ReactNode;
|
|
12
|
+
panelStyle?: React.CSSProperties;
|
|
12
13
|
/**
|
|
13
14
|
* Close button aria-label
|
|
14
15
|
* @default 'Close drawer'
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
"use strict";Object.defineProperty(exports, "__esModule", {value: true});
|
|
2
2
|
|
|
3
|
-
var
|
|
3
|
+
var _chunkOHSJ4KTUjs = require('../chunk-OHSJ4KTU.js');
|
|
4
4
|
require('../chunk-STTQ5LXX.js');
|
|
5
5
|
|
|
6
6
|
|
|
7
|
-
exports.Drawer =
|
|
7
|
+
exports.Drawer = _chunkOHSJ4KTUjs.Drawer;
|
|
@@ -6,6 +6,7 @@ interface MenuContextValue {
|
|
|
6
6
|
theme: MenuTheme;
|
|
7
7
|
collapsed: boolean;
|
|
8
8
|
inlineIndent: number;
|
|
9
|
+
popupPortal: boolean;
|
|
9
10
|
selectedKeys: (string | number)[];
|
|
10
11
|
openKeys: (string | number)[];
|
|
11
12
|
handleSelect: (key: string | number) => void;
|
|
@@ -59,6 +60,10 @@ interface MenuItemGroupProps extends MenuItemGroupProps$1 {
|
|
|
59
60
|
* Nesting level (internal use for indentation)
|
|
60
61
|
*/
|
|
61
62
|
level?: number;
|
|
63
|
+
/**
|
|
64
|
+
* Internal override for collapsed rendering (used by SubMenu popup)
|
|
65
|
+
*/
|
|
66
|
+
collapsed?: boolean;
|
|
62
67
|
}
|
|
63
68
|
declare const MenuItemGroup: React.FC<MenuItemGroupProps>;
|
|
64
69
|
interface SubMenuProps extends SubMenuProps$1 {
|
|
@@ -6,6 +6,7 @@ interface MenuContextValue {
|
|
|
6
6
|
theme: MenuTheme;
|
|
7
7
|
collapsed: boolean;
|
|
8
8
|
inlineIndent: number;
|
|
9
|
+
popupPortal: boolean;
|
|
9
10
|
selectedKeys: (string | number)[];
|
|
10
11
|
openKeys: (string | number)[];
|
|
11
12
|
handleSelect: (key: string | number) => void;
|
|
@@ -59,6 +60,10 @@ interface MenuItemGroupProps extends MenuItemGroupProps$1 {
|
|
|
59
60
|
* Nesting level (internal use for indentation)
|
|
60
61
|
*/
|
|
61
62
|
level?: number;
|
|
63
|
+
/**
|
|
64
|
+
* Internal override for collapsed rendering (used by SubMenu popup)
|
|
65
|
+
*/
|
|
66
|
+
collapsed?: boolean;
|
|
62
67
|
}
|
|
63
68
|
declare const MenuItemGroup: React.FC<MenuItemGroupProps>;
|
|
64
69
|
interface SubMenuProps extends SubMenuProps$1 {
|
package/dist/components/Menu.js
CHANGED
|
@@ -4,11 +4,12 @@
|
|
|
4
4
|
|
|
5
5
|
|
|
6
6
|
|
|
7
|
-
var
|
|
7
|
+
var _chunkZDGBH4NAjs = require('../chunk-ZDGBH4NA.js');
|
|
8
|
+
require('../chunk-STTQ5LXX.js');
|
|
8
9
|
|
|
9
10
|
|
|
10
11
|
|
|
11
12
|
|
|
12
13
|
|
|
13
14
|
|
|
14
|
-
exports.Menu =
|
|
15
|
+
exports.Menu = _chunkZDGBH4NAjs.Menu; exports.MenuItem = _chunkZDGBH4NAjs.MenuItem; exports.MenuItemGroup = _chunkZDGBH4NAjs.MenuItemGroup; exports.SubMenu = _chunkZDGBH4NAjs.SubMenu; exports.useMenuContext = _chunkZDGBH4NAjs.useMenuContext;
|
package/dist/components/Menu.mjs
CHANGED
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
"use strict";Object.defineProperty(exports, "__esModule", {value: true});
|
|
2
2
|
|
|
3
|
-
var
|
|
3
|
+
var _chunkZDGBH4NAjs = require('../chunk-ZDGBH4NA.js');
|
|
4
|
+
require('../chunk-STTQ5LXX.js');
|
|
4
5
|
|
|
5
6
|
|
|
6
7
|
|
|
7
|
-
exports.MenuItem =
|
|
8
|
+
exports.MenuItem = _chunkZDGBH4NAjs.MenuItem; exports.default = _chunkZDGBH4NAjs.MenuItem;
|
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
"use strict";Object.defineProperty(exports, "__esModule", {value: true});
|
|
2
2
|
|
|
3
|
-
var
|
|
3
|
+
var _chunkZDGBH4NAjs = require('../chunk-ZDGBH4NA.js');
|
|
4
|
+
require('../chunk-STTQ5LXX.js');
|
|
4
5
|
|
|
5
6
|
|
|
6
7
|
|
|
7
|
-
exports.MenuItemGroup =
|
|
8
|
+
exports.MenuItemGroup = _chunkZDGBH4NAjs.MenuItemGroup; exports.default = _chunkZDGBH4NAjs.MenuItemGroup;
|
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
"use strict";Object.defineProperty(exports, "__esModule", {value: true});
|
|
2
2
|
|
|
3
|
-
var
|
|
3
|
+
var _chunkZDGBH4NAjs = require('../chunk-ZDGBH4NA.js');
|
|
4
|
+
require('../chunk-STTQ5LXX.js');
|
|
4
5
|
|
|
5
6
|
|
|
6
7
|
|
|
7
|
-
exports.SubMenu =
|
|
8
|
+
exports.SubMenu = _chunkZDGBH4NAjs.SubMenu; exports.default = _chunkZDGBH4NAjs.SubMenu;
|
package/dist/index.js
CHANGED
|
@@ -144,7 +144,7 @@ var _chunkXRNKHQTLjs = require('./chunk-XRNKHQTL.js');
|
|
|
144
144
|
|
|
145
145
|
|
|
146
146
|
|
|
147
|
-
var
|
|
147
|
+
var _chunkZDGBH4NAjs = require('./chunk-ZDGBH4NA.js');
|
|
148
148
|
|
|
149
149
|
|
|
150
150
|
|
|
@@ -231,7 +231,7 @@ var _chunkK2TXT5HQjs = require('./chunk-K2TXT5HQ.js');
|
|
|
231
231
|
var _chunkBO45CU4Qjs = require('./chunk-BO45CU4Q.js');
|
|
232
232
|
|
|
233
233
|
|
|
234
|
-
var
|
|
234
|
+
var _chunkOHSJ4KTUjs = require('./chunk-OHSJ4KTU.js');
|
|
235
235
|
|
|
236
236
|
|
|
237
237
|
var _chunkC3NKZZQQjs = require('./chunk-C3NKZZQQ.js');
|
|
@@ -907,4 +907,4 @@ var version = "1.2.0";
|
|
|
907
907
|
|
|
908
908
|
|
|
909
909
|
|
|
910
|
-
exports.ActivityFeed = _chunkDXMSDLVJjs.ActivityFeed; exports.Affix = _chunkRYIYE2PYjs.Affix; exports.Alert = _chunkVNMWPJDNjs.Alert; exports.Anchor = _chunkSQGFNVYTjs.Anchor; exports.AnchorLink = _chunkSQGFNVYTjs.AnchorLink; exports.AreaChart = _chunkDCKBVRLIjs.AreaChart; exports.AutoComplete = _chunkU356F7GUjs.AutoComplete; exports.Avatar = _chunk4MQCUKICjs.Avatar; exports.AvatarGroup = _chunkTQOWIDQTjs.AvatarGroup; exports.BackTop = _chunk4LIDROT4js.BackTop; exports.Badge = _chunkPNAWOJ32js.Badge; exports.BarChart = _chunkNMKFR435js.BarChart; exports.Breadcrumb = _chunkVDF2BD2Ajs.Breadcrumb; exports.BreadcrumbItem = _chunkVDF2BD2Ajs.BreadcrumbItem; exports.Button = _chunk56ZV3VVYjs.Button; exports.ButtonGroup = _chunkYMKA4L3Zjs.ButtonGroup; exports.Calendar = _chunk5EVHVZG5js.Calendar; exports.Card = _chunkUIO6O4MIjs.Card; exports.Carousel = _chunkB5TUTAVXjs.Carousel; exports.Cascader = _chunkTC6JLEGZjs.Cascader; exports.ChartAxis = _chunkE5GD3H7Ljs.ChartAxis; exports.ChartCanvas = _chunkUKLVOR4Ejs.ChartCanvas; exports.ChartGrid = _chunk3QFHVAZTjs.ChartGrid; exports.ChartLegend = _chunkWV5XHYW6js.ChartLegend; exports.ChartSeries = _chunkAX5XRD2Qjs.ChartSeries; exports.ChartTooltip = _chunkUVMQJOTXjs.ChartTooltip; exports.ChatWindow = _chunk2DH6MGC6js.ChatWindow; exports.Checkbox = _chunkF7H4ALKNjs.Checkbox; exports.CheckboxGroup = _chunkJLRRXRZOjs.CheckboxGroup; exports.Code = _chunkRTHC4KWMjs.Code; exports.CodeEditor = _chunk3E76U2RGjs.CodeEditor; exports.Col = _chunkQQKP437Ljs.Col; exports.Collapse = _chunkQ2GPRAF4js.Collapse; exports.CollapsePanel = _chunkWN3ZI7FNjs.CollapsePanel; exports.ColorPicker = _chunkJB33A4S6js.ColorPicker; exports.ColorSwatch = _chunkJ4SNBXJMjs.ColorSwatch; exports.CommentThread = _chunkEX63M5IDjs.CommentThread; exports.ConfigProvider = _chunkTDODFBBOjs.ConfigProvider; exports.Container = _chunkW3VLCSJLjs.Container; exports.Content = _chunkOFCKGWTSjs.Content; exports.Countdown = _chunkU3M24RPHjs.Countdown; exports.CronEditor = _chunkNRLGZRK2js.CronEditor; exports.CropUpload = _chunkUE52NMPOjs.CropUpload; exports.DataTableWithToolbar = _chunk7YUD6VICjs.DataTableWithToolbar; exports.DatePicker = _chunkTSJYAEFZjs.DatePicker; exports.Descriptions = _chunk6CWZXS5Bjs.Descriptions; exports.Divider = _chunkIZXU7DF6js.Divider; exports.DonutChart = _chunkK2TXT5HQjs.DonutChart; exports.Drawer =
|
|
910
|
+
exports.ActivityFeed = _chunkDXMSDLVJjs.ActivityFeed; exports.Affix = _chunkRYIYE2PYjs.Affix; exports.Alert = _chunkVNMWPJDNjs.Alert; exports.Anchor = _chunkSQGFNVYTjs.Anchor; exports.AnchorLink = _chunkSQGFNVYTjs.AnchorLink; exports.AreaChart = _chunkDCKBVRLIjs.AreaChart; exports.AutoComplete = _chunkU356F7GUjs.AutoComplete; exports.Avatar = _chunk4MQCUKICjs.Avatar; exports.AvatarGroup = _chunkTQOWIDQTjs.AvatarGroup; exports.BackTop = _chunk4LIDROT4js.BackTop; exports.Badge = _chunkPNAWOJ32js.Badge; exports.BarChart = _chunkNMKFR435js.BarChart; exports.Breadcrumb = _chunkVDF2BD2Ajs.Breadcrumb; exports.BreadcrumbItem = _chunkVDF2BD2Ajs.BreadcrumbItem; exports.Button = _chunk56ZV3VVYjs.Button; exports.ButtonGroup = _chunkYMKA4L3Zjs.ButtonGroup; exports.Calendar = _chunk5EVHVZG5js.Calendar; exports.Card = _chunkUIO6O4MIjs.Card; exports.Carousel = _chunkB5TUTAVXjs.Carousel; exports.Cascader = _chunkTC6JLEGZjs.Cascader; exports.ChartAxis = _chunkE5GD3H7Ljs.ChartAxis; exports.ChartCanvas = _chunkUKLVOR4Ejs.ChartCanvas; exports.ChartGrid = _chunk3QFHVAZTjs.ChartGrid; exports.ChartLegend = _chunkWV5XHYW6js.ChartLegend; exports.ChartSeries = _chunkAX5XRD2Qjs.ChartSeries; exports.ChartTooltip = _chunkUVMQJOTXjs.ChartTooltip; exports.ChatWindow = _chunk2DH6MGC6js.ChatWindow; exports.Checkbox = _chunkF7H4ALKNjs.Checkbox; exports.CheckboxGroup = _chunkJLRRXRZOjs.CheckboxGroup; exports.Code = _chunkRTHC4KWMjs.Code; exports.CodeEditor = _chunk3E76U2RGjs.CodeEditor; exports.Col = _chunkQQKP437Ljs.Col; exports.Collapse = _chunkQ2GPRAF4js.Collapse; exports.CollapsePanel = _chunkWN3ZI7FNjs.CollapsePanel; exports.ColorPicker = _chunkJB33A4S6js.ColorPicker; exports.ColorSwatch = _chunkJ4SNBXJMjs.ColorSwatch; exports.CommentThread = _chunkEX63M5IDjs.CommentThread; exports.ConfigProvider = _chunkTDODFBBOjs.ConfigProvider; exports.Container = _chunkW3VLCSJLjs.Container; exports.Content = _chunkOFCKGWTSjs.Content; exports.Countdown = _chunkU3M24RPHjs.Countdown; exports.CronEditor = _chunkNRLGZRK2js.CronEditor; exports.CropUpload = _chunkUE52NMPOjs.CropUpload; exports.DataTableWithToolbar = _chunk7YUD6VICjs.DataTableWithToolbar; exports.DatePicker = _chunkTSJYAEFZjs.DatePicker; exports.Descriptions = _chunk6CWZXS5Bjs.Descriptions; exports.Divider = _chunkIZXU7DF6js.Divider; exports.DonutChart = _chunkK2TXT5HQjs.DonutChart; exports.Drawer = _chunkOHSJ4KTUjs.Drawer; exports.Dropdown = _chunkAKZY7QYAjs.Dropdown; exports.DropdownItem = _chunkC3NKZZQQjs.DropdownItem; exports.DropdownMenu = _chunkAKZY7QYAjs.DropdownMenu; exports.Empty = _chunkZRHDNGWOjs.Empty; exports.FileManager = _chunkHR5GBE3Pjs.FileManager; exports.FloatButton = _chunkXFPJYKBQjs.FloatButton; exports.FloatButtonGroup = _chunkXFPJYKBQjs.FloatButtonGroup; exports.Footer = _chunkTB2UHDOZjs.Footer; exports.Form = _chunkUPPHGL64js.Form; exports.FormItem = _chunkBCQQYERGjs.FormItem; exports.FormWizard = _chunkDTYDPMNRjs.FormWizard; exports.FunnelChart = _chunkQIKR5EFIjs.FunnelChart; exports.Gantt = _chunkQMK4OFC5js.Gantt; exports.GaugeChart = _chunkT7KO6EVKjs.GaugeChart; exports.Header = _chunkVJJ76I7Ujs.Header; exports.HeatmapChart = _chunkH6NC6SBXjs.HeatmapChart; exports.Icon = _chunkIHH2O7YKjs.Icon; exports.Image = _chunkCGIBGSNEjs.Image; exports.ImageAnnotation = _chunkEHIXCFD7js.ImageAnnotation; exports.ImageCropper = _chunkFI53LYZ6js.ImageCropper; exports.ImageGroup = _chunkMB6U72CIjs.ImageGroup; exports.ImageGroupContext = _chunkMB6U72CIjs.ImageGroupContext; exports.ImagePreview = _chunk4U5HSR2Hjs.ImagePreview; exports.ImageViewer = _chunkUXUYCWQCjs.ImageViewer; exports.InfiniteScroll = _chunkM73NMNZXjs.InfiniteScroll; exports.Input = _chunkZYJTHGQWjs.Input; exports.InputGroup = _chunkI3CDTF4Ujs.InputGroup; exports.InputGroupAddon = _chunkI3CDTF4Ujs.InputGroupAddon; exports.InputNumber = _chunkSKMZTW3Kjs.InputNumber; exports.Kanban = _chunkCSH2QOOHjs.Kanban; exports.Layout = _chunkD6TKXVEBjs.Layout; exports.LineChart = _chunkEQD2U4KMjs.LineChart; exports.Link = _chunkQYYAXM5Fjs.Link; exports.List = _chunkWG3YS2QVjs.List; exports.Loading = _chunk3MRP3XYIjs.Loading; exports.MarkdownEditor = _chunkBFAZZUD6js.MarkdownEditor; exports.Mentions = _chunkXRNKHQTLjs.Mentions; exports.Menu = _chunkZDGBH4NAjs.Menu; exports.MenuItem = _chunkZDGBH4NAjs.MenuItem; exports.MenuItemGroup = _chunkZDGBH4NAjs.MenuItemGroup; exports.Message = _chunkLMTUM3J3js.Message; exports.MessageContainer = _chunkLMTUM3J3js.MessageContainer; exports.Modal = _chunkSXHP4Q7Ojs.Modal; exports.NotificationCenter = _chunkRUZQN7X3js.NotificationCenter; exports.NotificationContainer = _chunkNMEVQPODjs.NotificationContainer; exports.NumberKeyboard = _chunkG5USITWFjs.NumberKeyboard; exports.OrgChart = _chunk4DTMFQCYjs.OrgChart; exports.Pagination = _chunkKEF2PEP4js.Pagination; exports.PieChart = _chunkBO45CU4Qjs.PieChart; exports.Popconfirm = _chunkJNRUOQNTjs.Popconfirm; exports.Popover = _chunkIAONLOJNjs.Popover; exports.PrintLayout = _chunkQ4JMAQXJjs.PrintLayout; exports.PrintPageBreak = _chunkQ4JMAQXJjs.PrintPageBreak; exports.Progress = _chunkLODDAS62js.Progress; exports.QRCode = _chunkAUW7DCXLjs.QRCode; exports.RadarChart = _chunkEOU6WZTSjs.RadarChart; exports.Radio = _chunkTMON4MPOjs.Radio; exports.RadioGroup = _chunkZFMMAYSXjs.RadioGroup; exports.Rate = _chunkGG72T6JKjs.Rate; exports.Resizable = _chunkPFYK2V3Ejs.Resizable; exports.Result = _chunkYID7J6ZKjs.Result; exports.RichTextEditor = _chunkONTRGV5Tjs.RichTextEditor; exports.Row = _chunkVE3SYUMHjs.Row; exports.ScatterChart = _chunkW6AWN7BCjs.ScatterChart; exports.ScrollSpy = _chunkFBFCJCONjs.ScrollSpy; exports.Segmented = _chunkN2JYU4JIjs.Segmented; exports.Select = _chunk6Z4LLPZAjs.Select; exports.Sidebar = _chunkYWTZALG5js.Sidebar; exports.Signature = _chunk7ISEWLA3js.Signature; exports.Skeleton = _chunk4PPTEEDIjs.Skeleton; exports.Slider = _chunk7Z64GEMNjs.Slider; exports.Space = _chunkPTEDJ6MAjs.Space; exports.Splitter = _chunkH4AR4GXHjs.Splitter; exports.Spotlight = _chunkKYP7U6FKjs.Spotlight; exports.Statistic = _chunkZDXIP33Yjs.Statistic; exports.Stepper = _chunkMB3QU3USjs.Stepper; exports.Steps = _chunkXPA2YCQOjs.Steps; exports.StepsItem = _chunkXPA2YCQOjs.StepsItem; exports.SubMenu = _chunkZDGBH4NAjs.SubMenu; exports.SunburstChart = _chunkUIIOZEUPjs.SunburstChart; exports.Switch = _chunk4TEILQSNjs.Switch; exports.TabPane = _chunkRFHPG4KNjs.TabPane; exports.Table = _chunk5EZWYEGJjs.Table; exports.Tabs = _chunkRFHPG4KNjs.Tabs; exports.Tag = _chunkVCULFIZ5js.Tag; exports.TaskBoard = _chunkXHT2VIDRjs.TaskBoard; exports.Text = _chunkUF3DXKCIjs.Text; exports.Textarea = _chunkWVVXZKNIjs.Textarea; exports.TimePicker = _chunk4SO4LANYjs.TimePicker; exports.Timeline = _chunkPR3PQUKMjs.Timeline; exports.Tooltip = _chunkKRFD27WAjs.Tooltip; exports.Tour = _chunkKQ5I7PRMjs.Tour; exports.Transfer = _chunkEF5ZTNHXjs.Transfer; exports.Tree = _chunkSIY6FDKJjs.Tree; exports.TreeMapChart = _chunkX7JAYXPYjs.TreeMapChart; exports.TreeSelect = _chunkCBYJXDW4js.TreeSelect; exports.Upload = _chunkUHFHOTNIjs.Upload; exports.VirtualList = _chunkP36GX65Njs.VirtualList; exports.VirtualTable = _chunk77F5YT4Ejs.VirtualTable; exports.Watermark = _chunkCHPJPIW6js.Watermark; exports.notification = _chunkNMEVQPODjs.notification; exports.useAnchorContext = _chunkSQGFNVYTjs.useAnchorContext; exports.useBreadcrumbContext = _chunkVDF2BD2Ajs.useBreadcrumbContext; exports.useChartInteraction = _chunkXTV5JLLCjs.useChartInteraction; exports.useCollapseContext = _chunkQ2GPRAF4js.useCollapseContext; exports.useControlledState = _chunkUKGQ7256js.useControlledState; exports.useDrag = useDrag; exports.useFormContext = _chunkUPPHGL64js.useFormContext; exports.useFormController = useFormController; exports.useMenuContext = _chunkZDGBH4NAjs.useMenuContext; exports.useStepsContext = _chunkXPA2YCQOjs.useStepsContext; exports.useTabsContext = _chunkRFHPG4KNjs.useTabsContext; exports.useTigerConfig = _chunkTDODFBBOjs.useTigerConfig; exports.version = version;
|
package/dist/index.mjs
CHANGED
|
@@ -144,7 +144,7 @@ import {
|
|
|
144
144
|
MenuItemGroup,
|
|
145
145
|
SubMenu,
|
|
146
146
|
useMenuContext
|
|
147
|
-
} from "./chunk-
|
|
147
|
+
} from "./chunk-XJXEAXWY.mjs";
|
|
148
148
|
import {
|
|
149
149
|
Message,
|
|
150
150
|
MessageContainer
|
|
@@ -231,7 +231,7 @@ import {
|
|
|
231
231
|
} from "./chunk-XBM76P27.mjs";
|
|
232
232
|
import {
|
|
233
233
|
Drawer
|
|
234
|
-
} from "./chunk-
|
|
234
|
+
} from "./chunk-D62GWQBX.mjs";
|
|
235
235
|
import {
|
|
236
236
|
DropdownItem
|
|
237
237
|
} from "./chunk-73OAHAPC.mjs";
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@expcat/tigercat-react",
|
|
3
|
-
"version": "1.2.
|
|
3
|
+
"version": "1.2.23",
|
|
4
4
|
"description": "React components for Tigercat UI library",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"author": "Yizhe Wang",
|
|
@@ -47,7 +47,7 @@
|
|
|
47
47
|
"access": "public"
|
|
48
48
|
},
|
|
49
49
|
"dependencies": {
|
|
50
|
-
"@expcat/tigercat-core": "1.2.
|
|
50
|
+
"@expcat/tigercat-core": "1.2.23"
|
|
51
51
|
},
|
|
52
52
|
"devDependencies": {
|
|
53
53
|
"@types/node": "^25.6.0",
|