@expcat/tigercat-react 1.3.3 → 1.4.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.
- package/dist/{chunk-3SV6J7I5.mjs → chunk-2L7QEOFD.mjs} +34 -25
- package/dist/{chunk-FNJDBFKM.mjs → chunk-2LYV6NBJ.mjs} +6 -1
- package/dist/{chunk-EEWHWEYO.js → chunk-2RBHQBSG.js} +2 -2
- package/dist/{chunk-Y5RQN5BO.mjs → chunk-376X7SDZ.mjs} +2 -2
- package/dist/{chunk-UXUYCWQC.js → chunk-3EDASNTG.js} +5 -5
- package/dist/{chunk-NPTXXUXF.mjs → chunk-3RBRWBUG.mjs} +9 -7
- package/dist/{chunk-PUZDW7NR.js → chunk-4AMSYFYC.js} +134 -20
- package/dist/{chunk-IG75YSX3.mjs → chunk-4MONGWU5.mjs} +4 -6
- package/dist/{chunk-3CJFNG54.mjs → chunk-56CTXEJS.mjs} +1 -1
- package/dist/{chunk-TMON4MPO.js → chunk-5ALMTE35.js} +9 -7
- package/dist/{chunk-MSHCPJIJ.mjs → chunk-6BOSSZM3.mjs} +8 -9
- package/dist/{chunk-SIY6FDKJ.js → chunk-7CHTTM6D.js} +339 -314
- package/dist/{chunk-RF2BA2N6.js → chunk-7PXALKLM.js} +4 -4
- package/dist/{chunk-DLKUDB2R.js → chunk-AF2AEZKM.js} +15 -3
- package/dist/{chunk-FB34UWF7.mjs → chunk-AVLIUHOS.mjs} +101 -40
- package/dist/{chunk-TSJYAEFZ.js → chunk-B63GEB2Y.js} +358 -305
- package/dist/{chunk-CFPKK5WW.js → chunk-BA6TJQZL.js} +12 -12
- package/dist/{chunk-LMTUM3J3.js → chunk-BEM7XG2L.js} +2 -4
- package/dist/{chunk-MB6U72CI.js → chunk-BEZO5IE4.js} +2 -2
- package/dist/{chunk-5OHVTGHS.mjs → chunk-BN4ZKCAI.mjs} +368 -315
- package/dist/{chunk-UHFHOTNI.js → chunk-BRA3PO53.js} +6 -7
- package/dist/{chunk-M7HBWFQO.js → chunk-BROIZ266.js} +11 -1
- package/dist/{chunk-SDZOVRVR.mjs → chunk-CAQPYJFA.mjs} +350 -325
- package/dist/{chunk-BFAZZUD6.js → chunk-CC5GFX6F.js} +5 -22
- package/dist/{chunk-LQT6ZGME.mjs → chunk-CME2IFUT.mjs} +15 -3
- package/dist/{chunk-KQ5I7PRM.js → chunk-CNNEUJR2.js} +28 -14
- package/dist/{chunk-EF5ZTNHX.js → chunk-D5MQBUP2.js} +16 -4
- package/dist/{chunk-RQXY2MGX.mjs → chunk-D7UR526A.mjs} +231 -184
- package/dist/{chunk-CBYJXDW4.js → chunk-DBMC6FPU.js} +16 -4
- package/dist/{chunk-WQ4FOHOU.mjs → chunk-DEIVWO2D.mjs} +3 -5
- package/dist/{chunk-7QZ4XT2P.mjs → chunk-DVEK5SO6.mjs} +3 -8
- package/dist/{chunk-TC6JLEGZ.js → chunk-EJKOUI26.js} +24 -7
- package/dist/{chunk-4GITZKAH.mjs → chunk-EPJ6W4VI.mjs} +14 -2
- package/dist/{chunk-KYP7U6FK.js → chunk-FZHBVHQ6.js} +34 -25
- package/dist/{chunk-WVVXZKNI.js → chunk-GDPU5MYA.js} +3 -8
- package/dist/{chunk-2GQCFTD7.mjs → chunk-H4MPPCTB.mjs} +23 -4
- package/dist/{chunk-YOAYDEWW.mjs → chunk-HHMYERHY.mjs} +3 -20
- package/dist/{chunk-LRPPXU74.mjs → chunk-I7FEGKX2.mjs} +19 -5
- package/dist/{chunk-F6IXIH6B.mjs → chunk-IZGXDHPB.mjs} +24 -5
- package/dist/{chunk-GQFVVAEF.js → chunk-J6OZWT3P.js} +5 -5
- package/dist/{chunk-IGAMV6ML.mjs → chunk-KDXKF6B2.mjs} +1 -1
- package/dist/{chunk-A42OLED6.mjs → chunk-KED5S2WG.mjs} +13 -2
- package/dist/{chunk-BJQIYELW.mjs → chunk-KGMVRIYC.mjs} +5 -5
- package/dist/{chunk-6GYT3EZD.mjs → chunk-KXT2TP6A.mjs} +3 -4
- package/dist/{chunk-BBLVRLXT.js → chunk-KYNWNTGO.js} +230 -146
- package/dist/{chunk-M73NMNZX.js → chunk-L24PPXLV.js} +17 -5
- package/dist/chunk-L3WPA2RP.js +25 -0
- package/dist/{chunk-V4JIZN3E.mjs → chunk-L6KSO66F.mjs} +4 -12
- package/dist/{chunk-4LX5UGPQ.js → chunk-LJRCEB7F.js} +168 -121
- package/dist/{chunk-F7H4ALKN.js → chunk-LZG24TDB.js} +8 -9
- package/dist/{chunk-ZYJTHGQW.js → chunk-M3FVPPMM.js} +9 -13
- package/dist/{chunk-GN3TSQWW.mjs → chunk-M6YXUNOU.mjs} +2 -2
- package/dist/{chunk-I373B74W.js → chunk-MC26ORSN.js} +102 -41
- package/dist/{chunk-5HFHHFQS.mjs → chunk-MTIGGMHG.mjs} +17 -5
- package/dist/{chunk-DKT2EYVM.mjs → chunk-MV2JQ6XQ.mjs} +3 -6
- package/dist/{chunk-HR5GBE3P.js → chunk-NDGA3N6H.js} +19 -7
- package/dist/{chunk-BO6QGXMN.mjs → chunk-NEZ445D4.mjs} +9 -9
- package/dist/{chunk-4U5HSR2H.js → chunk-NVI2P7VH.js} +3 -4
- package/dist/{chunk-NVEIVIAW.mjs → chunk-OFRKYQOZ.mjs} +133 -19
- package/dist/{chunk-AW5M3EL4.js → chunk-OS6M3IZF.js} +62 -12
- package/dist/{chunk-3ZNZLGQO.mjs → chunk-OXQOKKTP.mjs} +6 -7
- package/dist/{chunk-NMEVQPOD.js → chunk-PHAJXRGE.js} +2 -4
- package/dist/{chunk-WG3YS2QV.js → chunk-PT5T5F4H.js} +13 -2
- package/dist/{chunk-WNLUUD5N.mjs → chunk-QIL24WZD.mjs} +8 -12
- package/dist/{chunk-ZFMMAYSX.js → chunk-QLATA4UB.js} +4 -6
- package/dist/{chunk-KIYNHQGW.mjs → chunk-RVLV63SI.mjs} +41 -20
- package/dist/{chunk-3QPCQH62.mjs → chunk-RYNLPRUM.mjs} +1 -1
- package/dist/{chunk-6GIJ7NFV.mjs → chunk-SDZKL3IB.mjs} +3 -5
- package/dist/{chunk-G5USITWF.js → chunk-SH4BZYXO.js} +27 -8
- package/dist/{chunk-L5AMVEQL.mjs → chunk-SLEXEH7R.mjs} +60 -10
- package/dist/{chunk-JLRRXRZO.js → chunk-SQONS5PH.js} +4 -7
- package/dist/chunk-SQTOVSDU.mjs +692 -0
- package/dist/{chunk-3ZQMHXRY.js → chunk-TEYL5X56.js} +39 -18
- package/dist/{chunk-KGSDDVRC.mjs → chunk-TNTOSFGN.mjs} +4 -4
- package/dist/{chunk-CY5GRTAX.js → chunk-UAM3RQY4.js} +24 -5
- package/dist/{chunk-XRNKHQTL.js → chunk-UEAXYZSE.js} +3 -2
- package/dist/{chunk-7ISEWLA3.js → chunk-UKQMF3JV.js} +21 -6
- package/dist/{chunk-ITVLIR7T.mjs → chunk-ULWT6W6M.mjs} +13 -20
- package/dist/{chunk-M5GSLKUX.mjs → chunk-VAIWWELW.mjs} +15 -3
- package/dist/{chunk-4SO4LANY.js → chunk-VC26SAXB.js} +340 -274
- package/dist/{chunk-SKMZTW3K.js → chunk-WCTNQYXO.js} +16 -23
- package/dist/{chunk-KXNWY2Q7.mjs → chunk-WFWEMXO7.mjs} +241 -157
- package/dist/chunk-WHYHLUXG.mjs +25 -0
- package/dist/{chunk-ONTRGV5T.js → chunk-WZUADPYB.js} +6 -14
- package/dist/{chunk-N4PP3ENO.js → chunk-XTQUPDRI.js} +2 -2
- package/dist/{chunk-XATXFVKR.mjs → chunk-Y7K27DVV.mjs} +4 -3
- package/dist/{chunk-WI4N5DD3.mjs → chunk-YH57D4AV.mjs} +16 -4
- package/dist/{chunk-3MRP3XYI.js → chunk-YRVAF2ID.js} +7 -2
- package/dist/{chunk-5XE5VBDS.mjs → chunk-YSGM22AH.mjs} +11 -1
- package/dist/{chunk-6TR7JB6C.js → chunk-ZDNQGS4O.js} +4 -4
- package/dist/{chunk-CHBUNQIJ.mjs → chunk-ZQSMJS2Q.mjs} +23 -6
- package/dist/{chunk-QQFLRNI3.mjs → chunk-ZRZB3C5J.mjs} +18 -3
- package/dist/components/ActivityFeed.js +4 -3
- package/dist/components/ActivityFeed.mjs +3 -2
- package/dist/components/Cascader.d.mts +3 -1
- package/dist/components/Cascader.d.ts +3 -1
- package/dist/components/Cascader.js +3 -2
- package/dist/components/Cascader.mjs +2 -1
- package/dist/components/ChatWindow.js +5 -5
- package/dist/components/ChatWindow.mjs +4 -4
- package/dist/components/Checkbox.js +4 -4
- package/dist/components/Checkbox.mjs +3 -3
- package/dist/components/CheckboxGroup.js +3 -3
- package/dist/components/CheckboxGroup.mjs +2 -2
- package/dist/components/CommentThread.js +4 -4
- package/dist/components/CommentThread.mjs +3 -3
- package/dist/components/CropUpload.js +4 -4
- package/dist/components/CropUpload.mjs +3 -3
- package/dist/components/DataTableWithToolbar.d.mts +2 -2
- package/dist/components/DataTableWithToolbar.d.ts +2 -2
- package/dist/components/DataTableWithToolbar.js +11 -11
- package/dist/components/DataTableWithToolbar.mjs +10 -10
- package/dist/components/DatePicker.d.mts +1 -0
- package/dist/components/DatePicker.d.ts +1 -0
- package/dist/components/DatePicker.js +3 -2
- package/dist/components/DatePicker.mjs +2 -1
- package/dist/components/Drawer.js +3 -3
- package/dist/components/Drawer.mjs +2 -2
- package/dist/components/FileManager.d.mts +2 -1
- package/dist/components/FileManager.d.ts +2 -1
- package/dist/components/FileManager.js +3 -2
- package/dist/components/FileManager.mjs +2 -1
- package/dist/components/Form.js +3 -2
- package/dist/components/Form.mjs +2 -1
- package/dist/components/FormItem.js +4 -3
- package/dist/components/FormItem.mjs +3 -2
- package/dist/components/FormWizard.js +4 -4
- package/dist/components/FormWizard.mjs +3 -3
- package/dist/components/Image.js +4 -4
- package/dist/components/Image.mjs +3 -3
- package/dist/components/ImageGroup.js +3 -3
- package/dist/components/ImageGroup.mjs +2 -2
- package/dist/components/ImagePreview.js +2 -2
- package/dist/components/ImagePreview.mjs +1 -1
- package/dist/components/ImageViewer.d.mts +1 -1
- package/dist/components/ImageViewer.d.ts +1 -1
- package/dist/components/ImageViewer.js +2 -2
- package/dist/components/ImageViewer.mjs +1 -1
- package/dist/components/InfiniteScroll.d.mts +2 -0
- package/dist/components/InfiniteScroll.d.ts +2 -0
- package/dist/components/InfiniteScroll.js +3 -2
- package/dist/components/InfiniteScroll.mjs +2 -1
- package/dist/components/Input.js +3 -2
- package/dist/components/Input.mjs +2 -1
- package/dist/components/InputNumber.js +3 -2
- package/dist/components/InputNumber.mjs +2 -1
- package/dist/components/List.d.mts +6 -2
- package/dist/components/List.d.ts +6 -2
- package/dist/components/List.js +3 -2
- package/dist/components/List.mjs +2 -1
- package/dist/components/Loading.js +3 -2
- package/dist/components/Loading.mjs +2 -1
- package/dist/components/MarkdownEditor.js +3 -3
- package/dist/components/MarkdownEditor.mjs +2 -2
- package/dist/components/Mentions.js +2 -2
- package/dist/components/Mentions.mjs +1 -1
- package/dist/components/Menu.d.mts +8 -80
- package/dist/components/Menu.d.ts +8 -80
- package/dist/components/Menu.js +2 -2
- package/dist/components/Menu.mjs +1 -1
- package/dist/components/MenuItem.d.mts +6 -2
- package/dist/components/MenuItem.d.ts +6 -2
- package/dist/components/MenuItem.js +2 -2
- package/dist/components/MenuItem.mjs +1 -1
- package/dist/components/MenuItemGroup.d.mts +6 -2
- package/dist/components/MenuItemGroup.d.ts +6 -2
- package/dist/components/MenuItemGroup.js +2 -2
- package/dist/components/MenuItemGroup.mjs +1 -1
- package/dist/components/Message.js +2 -2
- package/dist/components/Message.mjs +1 -1
- package/dist/components/Modal.js +3 -3
- package/dist/components/Modal.mjs +2 -2
- package/dist/components/Notification.js +2 -2
- package/dist/components/Notification.mjs +1 -1
- package/dist/components/NotificationCenter.js +5 -4
- package/dist/components/NotificationCenter.mjs +4 -3
- package/dist/components/NumberKeyboard.js +3 -2
- package/dist/components/NumberKeyboard.mjs +2 -1
- package/dist/components/Radio.js +4 -4
- package/dist/components/Radio.mjs +3 -3
- package/dist/components/RadioGroup.js +3 -3
- package/dist/components/RadioGroup.mjs +2 -2
- package/dist/components/RichTextEditor.js +3 -3
- package/dist/components/RichTextEditor.mjs +2 -2
- package/dist/components/Select.d.mts +3 -1
- package/dist/components/Select.d.ts +3 -1
- package/dist/components/Select.js +3 -2
- package/dist/components/Select.mjs +2 -1
- package/dist/components/Signature.d.mts +1 -0
- package/dist/components/Signature.d.ts +1 -0
- package/dist/components/Signature.js +3 -2
- package/dist/components/Signature.mjs +2 -1
- package/dist/components/Spotlight.js +4 -2
- package/dist/components/Spotlight.mjs +3 -1
- package/dist/components/Steps.js +2 -2
- package/dist/components/Steps.mjs +1 -1
- package/dist/components/StepsItem.js +2 -2
- package/dist/components/StepsItem.mjs +1 -1
- package/dist/components/SubMenu.d.mts +6 -2
- package/dist/components/SubMenu.d.ts +6 -2
- package/dist/components/SubMenu.js +2 -2
- package/dist/components/SubMenu.mjs +1 -1
- package/dist/components/Table.d.mts +2 -2
- package/dist/components/Table.d.ts +2 -2
- package/dist/components/Table.js +9 -9
- package/dist/components/Table.mjs +8 -8
- package/dist/components/Textarea.js +3 -3
- package/dist/components/Textarea.mjs +2 -2
- package/dist/components/TimePicker.d.mts +1 -0
- package/dist/components/TimePicker.d.ts +1 -0
- package/dist/components/TimePicker.js +4 -2
- package/dist/components/TimePicker.mjs +3 -1
- package/dist/components/Tour.js +3 -2
- package/dist/components/Tour.mjs +2 -1
- package/dist/components/Transfer.d.mts +3 -1
- package/dist/components/Transfer.d.ts +3 -1
- package/dist/components/Transfer.js +3 -2
- package/dist/components/Transfer.mjs +2 -1
- package/dist/components/Tree.d.mts +3 -1
- package/dist/components/Tree.d.ts +3 -1
- package/dist/components/Tree.js +3 -2
- package/dist/components/Tree.mjs +2 -1
- package/dist/components/TreeSelect.d.mts +3 -1
- package/dist/components/TreeSelect.d.ts +3 -1
- package/dist/components/TreeSelect.js +3 -2
- package/dist/components/TreeSelect.mjs +2 -1
- package/dist/components/Upload.js +3 -2
- package/dist/components/Upload.mjs +2 -1
- package/dist/components/VirtualTable.d.mts +3 -2
- package/dist/components/VirtualTable.d.ts +3 -2
- package/dist/components/VirtualTable.js +3 -2
- package/dist/components/VirtualTable.mjs +2 -1
- package/dist/index.d.mts +33 -7
- package/dist/index.d.ts +33 -7
- package/dist/index.js +54 -54
- package/dist/index.mjs +53 -53
- package/dist/{types-CHmCMNEM.d.ts → types-0oVwMXtR.d.mts} +1 -1
- package/dist/{types-CHmCMNEM.d.mts → types-0oVwMXtR.d.ts} +1 -1
- package/dist/types-DaC4a0Ny.d.mts +80 -0
- package/dist/types-DaC4a0Ny.d.ts +80 -0
- package/package.json +2 -2
- package/dist/chunk-UKGQ7256.js +0 -12
- package/dist/chunk-UQMPEMY7.mjs +0 -12
- package/dist/chunk-VNVGSPBI.mjs +0 -626
- package/dist/{chunk-OZD75CLT.js → chunk-ANBNSUSR.js} +3 -3
- package/dist/{chunk-I2AUOICV.mjs → chunk-M3MOSUZO.mjs} +3 -3
- package/dist/{chunk-UMZ3PMUJ.js → chunk-SXHCMZ6U.js} +2 -2
- package/dist/{chunk-BWDQZSAB.mjs → chunk-WTSG7QXK.mjs} +3 -3
|
@@ -4,78 +4,55 @@ import {
|
|
|
4
4
|
} from "./chunk-SEWNVIHH.mjs";
|
|
5
5
|
|
|
6
6
|
// src/components/Menu.tsx
|
|
7
|
-
import
|
|
8
|
-
createContext,
|
|
9
|
-
useContext,
|
|
10
|
-
useState,
|
|
11
|
-
useMemo,
|
|
12
|
-
useCallback,
|
|
13
|
-
useEffect,
|
|
14
|
-
useLayoutEffect,
|
|
15
|
-
useRef
|
|
16
|
-
} from "react";
|
|
7
|
+
import React5 from "react";
|
|
17
8
|
import {
|
|
18
|
-
classNames,
|
|
19
|
-
getMenuClasses,
|
|
20
|
-
getMenuItemClasses,
|
|
21
|
-
getMenuItemIndent,
|
|
22
|
-
getSubMenuTitleClasses,
|
|
23
|
-
getSubMenuExpandIconClasses,
|
|
24
|
-
getSubmenuPopupZIndex,
|
|
25
|
-
getTransformOrigin,
|
|
26
|
-
filterMenuItems,
|
|
27
|
-
isKeySelected,
|
|
28
|
-
isKeyOpen,
|
|
29
|
-
menuItemIconClasses,
|
|
30
|
-
menuCollapsedIconClasses,
|
|
31
|
-
menuItemGroupTitleClasses,
|
|
32
9
|
menuSearchFieldClasses,
|
|
33
|
-
menuSearchEmptyClasses,
|
|
34
10
|
menuSearchInputClasses,
|
|
35
|
-
|
|
36
|
-
submenuContentHorizontalNestedClasses,
|
|
37
|
-
submenuContentPopupClasses,
|
|
38
|
-
submenuContentVerticalClasses,
|
|
39
|
-
submenuContentInlineClasses,
|
|
40
|
-
submenuHeightTransitionClasses,
|
|
41
|
-
getInitialSubmenuHeightTransitionStyle,
|
|
42
|
-
createSubmenuHeightTransitionController,
|
|
43
|
-
moveFocusInMenu,
|
|
44
|
-
focusMenuEdge,
|
|
45
|
-
focusFirstChildItem,
|
|
46
|
-
replaceKeys,
|
|
47
|
-
toggleKey,
|
|
48
|
-
initRovingTabIndex
|
|
11
|
+
menuSearchEmptyClasses
|
|
49
12
|
} from "@expcat/tigercat-core";
|
|
50
|
-
|
|
13
|
+
|
|
14
|
+
// src/components/Menu/context.ts
|
|
15
|
+
import { createContext, useContext } from "react";
|
|
51
16
|
var MenuContext = createContext(null);
|
|
52
17
|
function useMenuContext() {
|
|
53
18
|
return useContext(MenuContext);
|
|
54
19
|
}
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
20
|
+
|
|
21
|
+
// src/components/Menu/state.ts
|
|
22
|
+
import { useState, useMemo, useCallback, useEffect, useRef } from "react";
|
|
23
|
+
import {
|
|
24
|
+
classNames,
|
|
25
|
+
getMenuClasses,
|
|
26
|
+
filterMenuItems,
|
|
27
|
+
replaceKeys,
|
|
28
|
+
toggleKey,
|
|
29
|
+
initRovingTabIndex
|
|
30
|
+
} from "@expcat/tigercat-core";
|
|
31
|
+
function useMenuRootState(props) {
|
|
32
|
+
const {
|
|
33
|
+
items,
|
|
34
|
+
mode = "vertical",
|
|
35
|
+
theme = "light",
|
|
36
|
+
selectedKeys: controlledSelectedKeys,
|
|
37
|
+
defaultSelectedKeys = [],
|
|
38
|
+
openKeys: controlledOpenKeys,
|
|
39
|
+
defaultOpenKeys = [],
|
|
40
|
+
collapsed = false,
|
|
41
|
+
multiple = true,
|
|
42
|
+
inlineIndent = 24,
|
|
43
|
+
popupPortal = false,
|
|
44
|
+
className,
|
|
45
|
+
style,
|
|
46
|
+
onSelect,
|
|
47
|
+
onOpenChange,
|
|
48
|
+
onSearch,
|
|
49
|
+
searchable = false,
|
|
50
|
+
searchValue: controlledSearchValue,
|
|
51
|
+
defaultSearchValue = "",
|
|
52
|
+
searchPlaceholder = "Search menu",
|
|
53
|
+
emptyText = "No menu items found"
|
|
54
|
+
} = props;
|
|
55
|
+
const children = props.children;
|
|
79
56
|
const menuRef = useRef(null);
|
|
80
57
|
const resolvedMode = collapsed && mode === "inline" ? "vertical" : mode;
|
|
81
58
|
const [internalSelectedKeys, setInternalSelectedKeys] = useState(defaultSelectedKeys);
|
|
@@ -146,57 +123,41 @@ var Menu = ({
|
|
|
146
123
|
() => filterMenuItems(items ?? [], searchValue),
|
|
147
124
|
[items, searchValue]
|
|
148
125
|
);
|
|
149
|
-
function renderDataItem(item) {
|
|
150
|
-
if (item.children && item.children.length > 0) {
|
|
151
|
-
return /* @__PURE__ */ jsx(
|
|
152
|
-
SubMenu,
|
|
153
|
-
{
|
|
154
|
-
itemKey: item.key,
|
|
155
|
-
title: item.label,
|
|
156
|
-
icon: item.icon,
|
|
157
|
-
disabled: item.disabled,
|
|
158
|
-
children: item.children.map(renderDataItem)
|
|
159
|
-
},
|
|
160
|
-
item.key
|
|
161
|
-
);
|
|
162
|
-
}
|
|
163
|
-
return /* @__PURE__ */ jsx(MenuItem, { itemKey: item.key, icon: item.icon, disabled: item.disabled, children: item.label }, item.key);
|
|
164
|
-
}
|
|
165
|
-
const dataChildren = filteredItems.map(renderDataItem);
|
|
166
|
-
const hasSlotChildren = React.Children.count(children) > 0;
|
|
167
|
-
const emptyChild = items && items.length > 0 && dataChildren.length === 0 && !hasSlotChildren ? /* @__PURE__ */ jsx("li", { role: "none", children: /* @__PURE__ */ jsx("div", { className: menuSearchEmptyClasses, children: emptyText }) }) : null;
|
|
168
126
|
useEffect(() => {
|
|
169
127
|
if (menuRef.current) initRovingTabIndex(menuRef.current);
|
|
170
128
|
}, [resolvedMode, collapsed, selectedKeys, openKeys, filteredItems]);
|
|
171
|
-
return
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
129
|
+
return {
|
|
130
|
+
menuRef,
|
|
131
|
+
menuClasses,
|
|
132
|
+
style,
|
|
133
|
+
resolvedMode,
|
|
134
|
+
mode,
|
|
135
|
+
contextValue,
|
|
136
|
+
searchable,
|
|
137
|
+
searchValue,
|
|
138
|
+
searchPlaceholder,
|
|
139
|
+
emptyText,
|
|
140
|
+
handleSearchInput,
|
|
141
|
+
filteredItems,
|
|
142
|
+
items,
|
|
143
|
+
children
|
|
144
|
+
};
|
|
145
|
+
}
|
|
146
|
+
|
|
147
|
+
// src/components/Menu/menu-item.tsx
|
|
148
|
+
import { useCallback as useCallback2 } from "react";
|
|
149
|
+
import {
|
|
150
|
+
classNames as classNames2,
|
|
151
|
+
getMenuItemClasses,
|
|
152
|
+
getMenuItemIndent,
|
|
153
|
+
isKeySelected,
|
|
154
|
+
menuItemIconClasses,
|
|
155
|
+
menuCollapsedIconClasses,
|
|
156
|
+
moveFocusInMenu,
|
|
157
|
+
focusMenuEdge,
|
|
158
|
+
getMenuNavigationKeys
|
|
159
|
+
} from "@expcat/tigercat-core";
|
|
160
|
+
import { Fragment, jsx, jsxs } from "react/jsx-runtime";
|
|
200
161
|
var MenuItem = ({
|
|
201
162
|
itemKey,
|
|
202
163
|
disabled = false,
|
|
@@ -212,25 +173,23 @@ var MenuItem = ({
|
|
|
212
173
|
}
|
|
213
174
|
const isSelected = !!menuContext && isKeySelected(itemKey, menuContext.selectedKeys);
|
|
214
175
|
const effectiveCollapsed = collapsedOverride ?? (menuContext ? menuContext.collapsed : false);
|
|
215
|
-
const itemClasses =
|
|
176
|
+
const itemClasses = classNames2(
|
|
216
177
|
menuContext ? getMenuItemClasses(isSelected, disabled, menuContext.theme, effectiveCollapsed) : "flex items-center px-4 py-2 cursor-pointer transition-colors duration-200",
|
|
217
178
|
className
|
|
218
179
|
);
|
|
219
180
|
const indentStyle = menuContext && menuContext.mode === "inline" && level > 0 ? getMenuItemIndent(level, menuContext.inlineIndent) : {};
|
|
220
|
-
const handleClick =
|
|
181
|
+
const handleClick = useCallback2(() => {
|
|
221
182
|
if (!disabled && menuContext) {
|
|
222
183
|
menuContext.handleSelect(itemKey);
|
|
223
184
|
}
|
|
224
185
|
}, [disabled, menuContext, itemKey]);
|
|
225
|
-
const handleKeyDown =
|
|
186
|
+
const handleKeyDown = useCallback2(
|
|
226
187
|
(event) => {
|
|
227
188
|
if (!menuContext) return;
|
|
228
189
|
const current = event.currentTarget;
|
|
229
190
|
const rootMenu = current.closest('ul[role="menu"]');
|
|
230
191
|
const isRoot = rootMenu?.dataset.tigerMenuRoot === "true";
|
|
231
|
-
const
|
|
232
|
-
const nextKey = isHorizontalRoot ? "ArrowRight" : "ArrowDown";
|
|
233
|
-
const prevKey = isHorizontalRoot ? "ArrowLeft" : "ArrowUp";
|
|
192
|
+
const { nextKey, prevKey } = getMenuNavigationKeys(menuContext.mode, isRoot);
|
|
234
193
|
if (event.key === nextKey) {
|
|
235
194
|
event.preventDefault();
|
|
236
195
|
moveFocusInMenu(current, 1);
|
|
@@ -299,6 +258,51 @@ var MenuItem = ({
|
|
|
299
258
|
}
|
|
300
259
|
) });
|
|
301
260
|
};
|
|
261
|
+
|
|
262
|
+
// src/components/Menu/submenu.tsx
|
|
263
|
+
import React4, { useState as useState2, useMemo as useMemo2, useCallback as useCallback3, useEffect as useEffect2, useLayoutEffect, useRef as useRef2 } from "react";
|
|
264
|
+
import {
|
|
265
|
+
classNames as classNames3,
|
|
266
|
+
getSubMenuTitleClasses,
|
|
267
|
+
getSubmenuPopupZIndex,
|
|
268
|
+
getTransformOrigin,
|
|
269
|
+
getMenuItemIndent as getMenuItemIndent2,
|
|
270
|
+
isKeyOpen,
|
|
271
|
+
menuItemIconClasses as menuItemIconClasses2,
|
|
272
|
+
menuCollapsedIconClasses as menuCollapsedIconClasses2,
|
|
273
|
+
submenuContentHorizontalClasses,
|
|
274
|
+
submenuContentHorizontalNestedClasses,
|
|
275
|
+
submenuContentPopupClasses,
|
|
276
|
+
submenuContentVerticalClasses,
|
|
277
|
+
submenuContentInlineClasses,
|
|
278
|
+
submenuHeightTransitionClasses,
|
|
279
|
+
getInitialSubmenuHeightTransitionStyle,
|
|
280
|
+
createSubmenuHeightTransitionController,
|
|
281
|
+
moveFocusInMenu as moveFocusInMenu2,
|
|
282
|
+
focusMenuEdge as focusMenuEdge2,
|
|
283
|
+
focusFirstChildItem,
|
|
284
|
+
getMenuNavigationKeys as getMenuNavigationKeys2
|
|
285
|
+
} from "@expcat/tigercat-core";
|
|
286
|
+
|
|
287
|
+
// src/components/Menu/icons.tsx
|
|
288
|
+
import { getSubMenuExpandIconClasses } from "@expcat/tigercat-core";
|
|
289
|
+
import { jsx as jsx2 } from "react/jsx-runtime";
|
|
290
|
+
var ExpandIcon = ({ expanded }) => /* @__PURE__ */ jsx2(
|
|
291
|
+
"svg",
|
|
292
|
+
{
|
|
293
|
+
className: getSubMenuExpandIconClasses(expanded),
|
|
294
|
+
width: "12",
|
|
295
|
+
height: "12",
|
|
296
|
+
viewBox: "0 0 12 12",
|
|
297
|
+
fill: "currentColor",
|
|
298
|
+
children: /* @__PURE__ */ jsx2("path", { d: "M6 9L1.5 4.5L2.205 3.795L6 7.59L9.795 3.795L10.5 4.5L6 9Z" })
|
|
299
|
+
}
|
|
300
|
+
);
|
|
301
|
+
|
|
302
|
+
// src/components/Menu/menu-item-group.tsx
|
|
303
|
+
import React3 from "react";
|
|
304
|
+
import { menuItemGroupTitleClasses } from "@expcat/tigercat-core";
|
|
305
|
+
import { jsx as jsx3, jsxs as jsxs2 } from "react/jsx-runtime";
|
|
302
306
|
function isComponentNamed(elementType, name) {
|
|
303
307
|
if (typeof elementType !== "function" && typeof elementType !== "object") return false;
|
|
304
308
|
const maybeFn = elementType;
|
|
@@ -311,10 +315,10 @@ var MenuItemGroup = ({
|
|
|
311
315
|
level = 0,
|
|
312
316
|
collapsed
|
|
313
317
|
}) => {
|
|
314
|
-
const enhancedChildren =
|
|
315
|
-
if (!
|
|
318
|
+
const enhancedChildren = React3.Children.map(children, (child) => {
|
|
319
|
+
if (!React3.isValidElement(child)) return child;
|
|
316
320
|
if (child.type === MenuItem || isComponentNamed(child.type, "SubMenu")) {
|
|
317
|
-
return
|
|
321
|
+
return React3.cloneElement(
|
|
318
322
|
child,
|
|
319
323
|
{
|
|
320
324
|
level,
|
|
@@ -324,22 +328,14 @@ var MenuItemGroup = ({
|
|
|
324
328
|
}
|
|
325
329
|
return child;
|
|
326
330
|
});
|
|
327
|
-
return /* @__PURE__ */
|
|
328
|
-
title && /* @__PURE__ */
|
|
329
|
-
/* @__PURE__ */
|
|
331
|
+
return /* @__PURE__ */ jsxs2("li", { className: "list-none", children: [
|
|
332
|
+
title && /* @__PURE__ */ jsx3("div", { className: menuItemGroupTitleClasses, children: title }),
|
|
333
|
+
/* @__PURE__ */ jsx3("ul", { role: "group", className, children: enhancedChildren })
|
|
330
334
|
] });
|
|
331
335
|
};
|
|
332
|
-
|
|
333
|
-
|
|
334
|
-
|
|
335
|
-
className: getSubMenuExpandIconClasses(expanded),
|
|
336
|
-
width: "12",
|
|
337
|
-
height: "12",
|
|
338
|
-
viewBox: "0 0 12 12",
|
|
339
|
-
fill: "currentColor",
|
|
340
|
-
children: /* @__PURE__ */ jsx("path", { d: "M6 9L1.5 4.5L2.205 3.795L6 7.59L9.795 3.795L10.5 4.5L6 9Z" })
|
|
341
|
-
}
|
|
342
|
-
);
|
|
336
|
+
|
|
337
|
+
// src/components/Menu/submenu.tsx
|
|
338
|
+
import { Fragment as Fragment2, jsx as jsx4, jsxs as jsxs3 } from "react/jsx-runtime";
|
|
343
339
|
var SubMenu = ({
|
|
344
340
|
itemKey,
|
|
345
341
|
title = "",
|
|
@@ -354,13 +350,13 @@ var SubMenu = ({
|
|
|
354
350
|
if (!menuContext) {
|
|
355
351
|
console.warn("SubMenu must be used within Menu component");
|
|
356
352
|
}
|
|
357
|
-
const [isHovered, setIsHovered] =
|
|
358
|
-
const [isOpenByKeyboard, setIsOpenByKeyboard] =
|
|
359
|
-
const popupCloseTimerRef =
|
|
360
|
-
const titleRef =
|
|
361
|
-
const popupRef =
|
|
362
|
-
const submenuContentRef =
|
|
363
|
-
const heightTransitionRef =
|
|
353
|
+
const [isHovered, setIsHovered] = useState2(false);
|
|
354
|
+
const [isOpenByKeyboard, setIsOpenByKeyboard] = useState2(false);
|
|
355
|
+
const popupCloseTimerRef = useRef2(null);
|
|
356
|
+
const titleRef = useRef2(null);
|
|
357
|
+
const popupRef = useRef2(null);
|
|
358
|
+
const submenuContentRef = useRef2(null);
|
|
359
|
+
const heightTransitionRef = useRef2(null);
|
|
364
360
|
const effectiveCollapsed = collapsedOverride ?? (menuContext ? menuContext.collapsed : false);
|
|
365
361
|
const isPopup = !!menuContext && (menuContext.mode === "horizontal" || menuContext.mode === "vertical" && effectiveCollapsed);
|
|
366
362
|
const isOpen = !!menuContext && isKeyOpen(itemKey, menuContext.openKeys);
|
|
@@ -379,18 +375,18 @@ var SubMenu = ({
|
|
|
379
375
|
offset: 4
|
|
380
376
|
});
|
|
381
377
|
const isInlineOrVertical = menuContext?.mode !== "horizontal" && !isPopup;
|
|
382
|
-
const [hasRenderedInline, setHasRenderedInline] =
|
|
378
|
+
const [hasRenderedInline, setHasRenderedInline] = useState2(
|
|
383
379
|
() => isInlineOrVertical ? isExpanded : false
|
|
384
380
|
);
|
|
385
|
-
|
|
381
|
+
useEffect2(() => {
|
|
386
382
|
if (!isInlineOrVertical || !isExpanded || hasRenderedInline) return;
|
|
387
383
|
setHasRenderedInline(true);
|
|
388
384
|
}, [hasRenderedInline, isExpanded, isInlineOrVertical]);
|
|
389
|
-
const disposeHeightTransition =
|
|
385
|
+
const disposeHeightTransition = useCallback3(() => {
|
|
390
386
|
heightTransitionRef.current?.dispose();
|
|
391
387
|
heightTransitionRef.current = null;
|
|
392
388
|
}, []);
|
|
393
|
-
|
|
389
|
+
useEffect2(() => {
|
|
394
390
|
return () => {
|
|
395
391
|
disposeHeightTransition();
|
|
396
392
|
if (popupCloseTimerRef.current) {
|
|
@@ -412,11 +408,11 @@ var SubMenu = ({
|
|
|
412
408
|
}
|
|
413
409
|
heightTransitionRef.current.update(isExpanded);
|
|
414
410
|
}, [disposeHeightTransition, hasRenderedInline, isExpanded, isInlineOrVertical]);
|
|
415
|
-
const titleClasses =
|
|
411
|
+
const titleClasses = useMemo2(() => {
|
|
416
412
|
if (!menuContext) return "";
|
|
417
|
-
return
|
|
413
|
+
return classNames3(getSubMenuTitleClasses(menuContext.theme, disabled), className);
|
|
418
414
|
}, [menuContext, disabled, className]);
|
|
419
|
-
const contentClasses =
|
|
415
|
+
const contentClasses = useMemo2(() => {
|
|
420
416
|
if (!menuContext) return "";
|
|
421
417
|
if (menuContext.mode === "horizontal") {
|
|
422
418
|
return level === 0 ? submenuContentHorizontalClasses : submenuContentHorizontalNestedClasses;
|
|
@@ -425,7 +421,7 @@ var SubMenu = ({
|
|
|
425
421
|
if (menuContext.mode === "inline") return submenuContentInlineClasses;
|
|
426
422
|
return submenuContentVerticalClasses;
|
|
427
423
|
}, [menuContext, isPopup, level]);
|
|
428
|
-
const handleTitleClick =
|
|
424
|
+
const handleTitleClick = useCallback3(() => {
|
|
429
425
|
if (!menuContext || disabled) return;
|
|
430
426
|
if (menuContext.mode === "horizontal") return;
|
|
431
427
|
if (isPopup) {
|
|
@@ -436,14 +432,14 @@ var SubMenu = ({
|
|
|
436
432
|
setHasRenderedInline(true);
|
|
437
433
|
menuContext.handleOpenChange(itemKey);
|
|
438
434
|
}, [disabled, menuContext, itemKey, isPopup]);
|
|
439
|
-
const handleMouseEnter =
|
|
435
|
+
const handleMouseEnter = useCallback3(() => {
|
|
440
436
|
if (popupCloseTimerRef.current) {
|
|
441
437
|
clearTimeout(popupCloseTimerRef.current);
|
|
442
438
|
popupCloseTimerRef.current = null;
|
|
443
439
|
}
|
|
444
440
|
if (menuContext?.mode === "horizontal" || isPopup) setIsHovered(true);
|
|
445
441
|
}, [menuContext, isPopup]);
|
|
446
|
-
const handleMouseLeave =
|
|
442
|
+
const handleMouseLeave = useCallback3(() => {
|
|
447
443
|
if (menuContext?.mode === "horizontal" || isPopup) {
|
|
448
444
|
const close = () => {
|
|
449
445
|
setIsHovered(false);
|
|
@@ -456,7 +452,7 @@ var SubMenu = ({
|
|
|
456
452
|
close();
|
|
457
453
|
}
|
|
458
454
|
}, [menuContext, isPopup, popupPortal]);
|
|
459
|
-
const openInline =
|
|
455
|
+
const openInline = useCallback3(
|
|
460
456
|
(titleEl) => {
|
|
461
457
|
if (!menuContext) return;
|
|
462
458
|
setHasRenderedInline(true);
|
|
@@ -465,33 +461,31 @@ var SubMenu = ({
|
|
|
465
461
|
},
|
|
466
462
|
[menuContext, itemKey]
|
|
467
463
|
);
|
|
468
|
-
const handleTitleKeyDown =
|
|
464
|
+
const handleTitleKeyDown = useCallback3(
|
|
469
465
|
(event) => {
|
|
470
466
|
if (!menuContext || disabled) return;
|
|
471
467
|
const current = event.currentTarget;
|
|
472
468
|
const rootMenu = current.closest('ul[role="menu"]');
|
|
473
469
|
const isRoot = rootMenu?.dataset.tigerMenuRoot === "true";
|
|
474
|
-
const
|
|
475
|
-
const nextKey = isHorizontalRoot ? "ArrowRight" : "ArrowDown";
|
|
476
|
-
const prevKey = isHorizontalRoot ? "ArrowLeft" : "ArrowUp";
|
|
470
|
+
const { nextKey, prevKey } = getMenuNavigationKeys2(menuContext.mode, isRoot);
|
|
477
471
|
if (event.key === nextKey) {
|
|
478
472
|
event.preventDefault();
|
|
479
|
-
|
|
473
|
+
moveFocusInMenu2(current, 1);
|
|
480
474
|
return;
|
|
481
475
|
}
|
|
482
476
|
if (event.key === prevKey) {
|
|
483
477
|
event.preventDefault();
|
|
484
|
-
|
|
478
|
+
moveFocusInMenu2(current, -1);
|
|
485
479
|
return;
|
|
486
480
|
}
|
|
487
481
|
if (event.key === "Home") {
|
|
488
482
|
event.preventDefault();
|
|
489
|
-
|
|
483
|
+
focusMenuEdge2(current, "start");
|
|
490
484
|
return;
|
|
491
485
|
}
|
|
492
486
|
if (event.key === "End") {
|
|
493
487
|
event.preventDefault();
|
|
494
|
-
|
|
488
|
+
focusMenuEdge2(current, "end");
|
|
495
489
|
return;
|
|
496
490
|
}
|
|
497
491
|
if (event.key === "Escape" || event.key === "ArrowLeft") {
|
|
@@ -530,41 +524,41 @@ var SubMenu = ({
|
|
|
530
524
|
},
|
|
531
525
|
[menuContext, disabled, isOpen, isPopup, itemKey, openInline]
|
|
532
526
|
);
|
|
533
|
-
const indentStyle = !menuContext || menuContext.mode === "horizontal" || level === 0 ? {} :
|
|
527
|
+
const indentStyle = !menuContext || menuContext.mode === "horizontal" || level === 0 ? {} : getMenuItemIndent2(level, menuContext.inlineIndent);
|
|
534
528
|
if (!menuContext) return null;
|
|
535
529
|
const renderIcon = () => {
|
|
536
530
|
if (!icon) return null;
|
|
537
|
-
const iconClasses = effectiveCollapsed ?
|
|
531
|
+
const iconClasses = effectiveCollapsed ? menuCollapsedIconClasses2 : menuItemIconClasses2;
|
|
538
532
|
if (typeof icon === "string") {
|
|
539
|
-
return /* @__PURE__ */
|
|
533
|
+
return /* @__PURE__ */ jsx4("span", { className: iconClasses, dangerouslySetInnerHTML: { __html: icon } });
|
|
540
534
|
}
|
|
541
|
-
return /* @__PURE__ */
|
|
535
|
+
return /* @__PURE__ */ jsx4("span", { className: iconClasses, children: icon });
|
|
542
536
|
};
|
|
543
537
|
const renderTitle = () => {
|
|
544
538
|
if (!effectiveCollapsed) {
|
|
545
|
-
return /* @__PURE__ */
|
|
539
|
+
return /* @__PURE__ */ jsxs3(Fragment2, { children: [
|
|
546
540
|
renderIcon(),
|
|
547
|
-
/* @__PURE__ */
|
|
548
|
-
menuContext.mode !== "horizontal" && !isPopup && /* @__PURE__ */
|
|
541
|
+
/* @__PURE__ */ jsx4("span", { className: "flex-1", children: title }),
|
|
542
|
+
menuContext.mode !== "horizontal" && !isPopup && /* @__PURE__ */ jsx4(ExpandIcon, { expanded: isExpanded })
|
|
549
543
|
] });
|
|
550
544
|
} else if (!icon) {
|
|
551
|
-
return /* @__PURE__ */
|
|
552
|
-
/* @__PURE__ */
|
|
553
|
-
/* @__PURE__ */
|
|
545
|
+
return /* @__PURE__ */ jsxs3(Fragment2, { children: [
|
|
546
|
+
/* @__PURE__ */ jsx4("span", { className: "flex-1 text-center", "aria-hidden": "true", children: title.charAt(0).toUpperCase() }),
|
|
547
|
+
/* @__PURE__ */ jsx4("span", { className: "sr-only", children: title })
|
|
554
548
|
] });
|
|
555
549
|
} else {
|
|
556
|
-
return /* @__PURE__ */
|
|
550
|
+
return /* @__PURE__ */ jsxs3(Fragment2, { children: [
|
|
557
551
|
renderIcon(),
|
|
558
|
-
/* @__PURE__ */
|
|
552
|
+
/* @__PURE__ */ jsx4("span", { className: "sr-only", children: title })
|
|
559
553
|
] });
|
|
560
554
|
}
|
|
561
555
|
};
|
|
562
556
|
const renderContent = () => {
|
|
563
557
|
const nextLevel = level + 1;
|
|
564
|
-
const enhancedChildren =
|
|
565
|
-
if (!
|
|
558
|
+
const enhancedChildren = React4.Children.map(children, (child) => {
|
|
559
|
+
if (!React4.isValidElement(child)) return child;
|
|
566
560
|
if (child.type === MenuItem || child.type === SubMenu || child.type === MenuItemGroup) {
|
|
567
|
-
return
|
|
561
|
+
return React4.cloneElement(
|
|
568
562
|
child,
|
|
569
563
|
{
|
|
570
564
|
level: nextLevel,
|
|
@@ -584,7 +578,7 @@ var SubMenu = ({
|
|
|
584
578
|
transformOrigin: getTransformOrigin(currentPopupPlacement),
|
|
585
579
|
...popupZIndex
|
|
586
580
|
} : { display: isExpanded ? "block" : "none", ...popupZIndex };
|
|
587
|
-
const popup = /* @__PURE__ */
|
|
581
|
+
const popup = /* @__PURE__ */ jsx4(
|
|
588
582
|
"ul",
|
|
589
583
|
{
|
|
590
584
|
ref: popupPortal ? popupRef : void 0,
|
|
@@ -601,7 +595,7 @@ var SubMenu = ({
|
|
|
601
595
|
if (popupPortal) {
|
|
602
596
|
return renderBodyPortal(popup);
|
|
603
597
|
}
|
|
604
|
-
return /* @__PURE__ */
|
|
598
|
+
return /* @__PURE__ */ jsx4(
|
|
605
599
|
"ul",
|
|
606
600
|
{
|
|
607
601
|
className: contentClasses,
|
|
@@ -615,7 +609,7 @@ var SubMenu = ({
|
|
|
615
609
|
}
|
|
616
610
|
if (!hasRenderedInline) return null;
|
|
617
611
|
const isHidden = !isExpanded;
|
|
618
|
-
return /* @__PURE__ */
|
|
612
|
+
return /* @__PURE__ */ jsx4(
|
|
619
613
|
"div",
|
|
620
614
|
{
|
|
621
615
|
ref: submenuContentRef,
|
|
@@ -624,11 +618,11 @@ var SubMenu = ({
|
|
|
624
618
|
"aria-hidden": isHidden ? "true" : void 0,
|
|
625
619
|
"data-tiger-menu-hidden": isHidden ? "true" : void 0,
|
|
626
620
|
"data-tiger-submenu-motion": "height",
|
|
627
|
-
children: /* @__PURE__ */
|
|
621
|
+
children: /* @__PURE__ */ jsx4("ul", { className: contentClasses, role: "menu", children: enhancedChildren })
|
|
628
622
|
}
|
|
629
623
|
);
|
|
630
624
|
};
|
|
631
|
-
return /* @__PURE__ */
|
|
625
|
+
return /* @__PURE__ */ jsxs3(
|
|
632
626
|
"li",
|
|
633
627
|
{
|
|
634
628
|
className: isPopup && !popupPortal ? "relative" : "",
|
|
@@ -636,7 +630,7 @@ var SubMenu = ({
|
|
|
636
630
|
onMouseLeave: handleMouseLeave,
|
|
637
631
|
role: "none",
|
|
638
632
|
children: [
|
|
639
|
-
/* @__PURE__ */
|
|
633
|
+
/* @__PURE__ */ jsx4(
|
|
640
634
|
"button",
|
|
641
635
|
{
|
|
642
636
|
ref: titleRef,
|
|
@@ -662,10 +656,63 @@ var SubMenu = ({
|
|
|
662
656
|
);
|
|
663
657
|
};
|
|
664
658
|
|
|
659
|
+
// src/components/Menu.tsx
|
|
660
|
+
import { jsx as jsx5, jsxs as jsxs4 } from "react/jsx-runtime";
|
|
661
|
+
var Menu = (props) => {
|
|
662
|
+
const ctx = useMenuRootState(props);
|
|
663
|
+
function renderDataItem(item) {
|
|
664
|
+
if (item.children && item.children.length > 0) {
|
|
665
|
+
return /* @__PURE__ */ jsx5(
|
|
666
|
+
SubMenu,
|
|
667
|
+
{
|
|
668
|
+
itemKey: item.key,
|
|
669
|
+
title: item.label,
|
|
670
|
+
icon: item.icon,
|
|
671
|
+
disabled: item.disabled,
|
|
672
|
+
children: item.children.map(renderDataItem)
|
|
673
|
+
},
|
|
674
|
+
item.key
|
|
675
|
+
);
|
|
676
|
+
}
|
|
677
|
+
return /* @__PURE__ */ jsx5(MenuItem, { itemKey: item.key, icon: item.icon, disabled: item.disabled, children: item.label }, item.key);
|
|
678
|
+
}
|
|
679
|
+
const dataChildren = ctx.filteredItems.map(renderDataItem);
|
|
680
|
+
const hasSlotChildren = React5.Children.count(ctx.children) > 0;
|
|
681
|
+
const emptyChild = ctx.items && ctx.items.length > 0 && dataChildren.length === 0 && !hasSlotChildren ? /* @__PURE__ */ jsx5("li", { role: "none", children: /* @__PURE__ */ jsx5("div", { className: menuSearchEmptyClasses, children: ctx.emptyText }) }) : null;
|
|
682
|
+
return /* @__PURE__ */ jsx5(MenuContext.Provider, { value: ctx.contextValue, children: /* @__PURE__ */ jsxs4(
|
|
683
|
+
"ul",
|
|
684
|
+
{
|
|
685
|
+
ref: ctx.menuRef,
|
|
686
|
+
className: ctx.menuClasses,
|
|
687
|
+
style: ctx.style,
|
|
688
|
+
role: "menu",
|
|
689
|
+
"data-tiger-menu-root": "true",
|
|
690
|
+
"data-tiger-menu-mode": ctx.resolvedMode,
|
|
691
|
+
"data-tiger-menu-requested-mode": ctx.mode,
|
|
692
|
+
children: [
|
|
693
|
+
ctx.searchable && /* @__PURE__ */ jsx5("li", { role: "none", className: menuSearchFieldClasses, children: /* @__PURE__ */ jsx5(
|
|
694
|
+
"input",
|
|
695
|
+
{
|
|
696
|
+
type: "search",
|
|
697
|
+
value: ctx.searchValue,
|
|
698
|
+
placeholder: ctx.searchPlaceholder,
|
|
699
|
+
"aria-label": ctx.searchPlaceholder,
|
|
700
|
+
className: menuSearchInputClasses,
|
|
701
|
+
onChange: ctx.handleSearchInput
|
|
702
|
+
}
|
|
703
|
+
) }),
|
|
704
|
+
dataChildren,
|
|
705
|
+
ctx.children,
|
|
706
|
+
emptyChild
|
|
707
|
+
]
|
|
708
|
+
}
|
|
709
|
+
) });
|
|
710
|
+
};
|
|
711
|
+
|
|
665
712
|
export {
|
|
666
713
|
useMenuContext,
|
|
667
|
-
Menu,
|
|
668
714
|
MenuItem,
|
|
669
715
|
MenuItemGroup,
|
|
670
|
-
SubMenu
|
|
716
|
+
SubMenu,
|
|
717
|
+
Menu
|
|
671
718
|
};
|