@ltht-react/menu 2.0.201 → 2.0.202
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/lib/index.d.ts +5 -0
- package/lib/index.js +33 -0
- package/lib/index.js.map +1 -0
- package/lib/molecules/action-menu-option.d.ts +8 -0
- package/lib/molecules/action-menu-option.js +121 -0
- package/lib/molecules/action-menu-option.js.map +1 -0
- package/lib/molecules/action-menu.d.ts +32 -0
- package/lib/molecules/action-menu.js +45 -0
- package/lib/molecules/action-menu.js.map +1 -0
- package/lib/molecules/menu.d.ts +194 -0
- package/lib/molecules/menu.js +327 -0
- package/lib/molecules/menu.js.map +1 -0
- package/lib/molecules/menu.style.d.ts +27 -0
- package/lib/molecules/menu.style.js +26 -0
- package/lib/molecules/menu.style.js.map +1 -0
- package/package.json +7 -7
package/lib/index.d.ts
ADDED
package/lib/index.js
ADDED
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || function (mod) {
|
|
19
|
+
if (mod && mod.__esModule) return mod;
|
|
20
|
+
var result = {};
|
|
21
|
+
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
22
|
+
__setModuleDefault(result, mod);
|
|
23
|
+
return result;
|
|
24
|
+
};
|
|
25
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
26
|
+
exports.DefaultTrigger = exports.MenuItem = exports.Menu = void 0;
|
|
27
|
+
var action_menu_1 = __importStar(require("./molecules/action-menu"));
|
|
28
|
+
Object.defineProperty(exports, "DefaultTrigger", { enumerable: true, get: function () { return action_menu_1.DefaultTrigger; } });
|
|
29
|
+
var menu_1 = require("./molecules/menu");
|
|
30
|
+
Object.defineProperty(exports, "Menu", { enumerable: true, get: function () { return menu_1.Menu; } });
|
|
31
|
+
Object.defineProperty(exports, "MenuItem", { enumerable: true, get: function () { return menu_1.MenuItem; } });
|
|
32
|
+
exports.default = action_menu_1.default;
|
|
33
|
+
//# sourceMappingURL=index.js.map
|
package/lib/index.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.tsx"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,qEAAsF;AAK3D,+FALY,4BAAc,OAKZ;AAJzC,yCAAiD;AAGxC,qFAHA,WAAI,OAGA;AAAE,yFAHA,eAAQ,OAGA;AADvB,kBAAe,qBAAU,CAAA"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { FC } from 'react';
|
|
2
|
+
import { ActionMenuOption as IActionMenuOption } from './action-menu';
|
|
3
|
+
interface Props extends IActionMenuOption {
|
|
4
|
+
idPrefix: string;
|
|
5
|
+
index: number;
|
|
6
|
+
}
|
|
7
|
+
declare const ActionMenuOption: FC<Props>;
|
|
8
|
+
export default ActionMenuOption;
|
|
@@ -0,0 +1,121 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __assign = (this && this.__assign) || function () {
|
|
3
|
+
__assign = Object.assign || function(t) {
|
|
4
|
+
for (var s, i = 1, n = arguments.length; i < n; i++) {
|
|
5
|
+
s = arguments[i];
|
|
6
|
+
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
|
|
7
|
+
t[p] = s[p];
|
|
8
|
+
}
|
|
9
|
+
return t;
|
|
10
|
+
};
|
|
11
|
+
return __assign.apply(this, arguments);
|
|
12
|
+
};
|
|
13
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
14
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
15
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
16
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
17
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
18
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
19
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
20
|
+
});
|
|
21
|
+
};
|
|
22
|
+
var __generator = (this && this.__generator) || function (thisArg, body) {
|
|
23
|
+
var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
|
|
24
|
+
return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
|
|
25
|
+
function verb(n) { return function (v) { return step([n, v]); }; }
|
|
26
|
+
function step(op) {
|
|
27
|
+
if (f) throw new TypeError("Generator is already executing.");
|
|
28
|
+
while (g && (g = 0, op[0] && (_ = 0)), _) try {
|
|
29
|
+
if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
|
|
30
|
+
if (y = 0, t) op = [op[0] & 2, t.value];
|
|
31
|
+
switch (op[0]) {
|
|
32
|
+
case 0: case 1: t = op; break;
|
|
33
|
+
case 4: _.label++; return { value: op[1], done: false };
|
|
34
|
+
case 5: _.label++; y = op[1]; op = [0]; continue;
|
|
35
|
+
case 7: op = _.ops.pop(); _.trys.pop(); continue;
|
|
36
|
+
default:
|
|
37
|
+
if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
|
|
38
|
+
if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
|
|
39
|
+
if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
|
|
40
|
+
if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
|
|
41
|
+
if (t[2]) _.ops.pop();
|
|
42
|
+
_.trys.pop(); continue;
|
|
43
|
+
}
|
|
44
|
+
op = body.call(thisArg, _);
|
|
45
|
+
} catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
|
|
46
|
+
if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
|
|
47
|
+
}
|
|
48
|
+
};
|
|
49
|
+
var __rest = (this && this.__rest) || function (s, e) {
|
|
50
|
+
var t = {};
|
|
51
|
+
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
|
|
52
|
+
t[p] = s[p];
|
|
53
|
+
if (s != null && typeof Object.getOwnPropertySymbols === "function")
|
|
54
|
+
for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
|
|
55
|
+
if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
|
|
56
|
+
t[p[i]] = s[p[i]];
|
|
57
|
+
}
|
|
58
|
+
return t;
|
|
59
|
+
};
|
|
60
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
61
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
62
|
+
};
|
|
63
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
64
|
+
var jsx_runtime_1 = require("react/jsx-runtime");
|
|
65
|
+
var react_1 = require("react");
|
|
66
|
+
var icon_1 = __importDefault(require("@ltht-react/icon"));
|
|
67
|
+
var utils_1 = require("@ltht-react/utils");
|
|
68
|
+
var hooks_1 = require("@ltht-react/hooks");
|
|
69
|
+
var menu_1 = require("./menu");
|
|
70
|
+
// Utility function to generate consistent IDs
|
|
71
|
+
var generateActionId = function (idPrefix, text, index) {
|
|
72
|
+
var textId = (0, utils_1.stringToHtmlId)(text);
|
|
73
|
+
return "".concat(idPrefix, "action-menu-item-").concat(textId, "-").concat(index);
|
|
74
|
+
};
|
|
75
|
+
var ActionMenuOption = function (_a) {
|
|
76
|
+
var idPrefix = _a.idPrefix, index = _a.index, text = _a.text, leftIcon = _a.leftIcon, rightIcon = _a.rightIcon, actions = _a.actions, _b = _a.exitFullScreenOnClick, exitFullScreenOnClick = _b === void 0 ? false : _b, clickHandler = _a.clickHandler, onClick = _a.onClick, _c = _a.disabled, disabled = _c === void 0 ? false : _c, rest = __rest(_a, ["idPrefix", "index", "text", "leftIcon", "rightIcon", "actions", "exitFullScreenOnClick", "clickHandler", "onClick", "disabled"]);
|
|
77
|
+
var _d = (0, hooks_1.useFullScreen)(), isFullscreen = _d.isFullscreen, exitFullScreen = _d.exitFullScreen;
|
|
78
|
+
// Memoize the action ID to prevent recalculation on every render
|
|
79
|
+
var actionMenuItemId = (0, react_1.useMemo)(function () { return generateActionId(idPrefix, text, index); }, [idPrefix, text, index]);
|
|
80
|
+
// Memoize icons to prevent unnecessary re-renders
|
|
81
|
+
var leftIconElement = (0, react_1.useMemo)(function () { return leftIcon && (0, jsx_runtime_1.jsx)(icon_1.default, __assign({}, leftIcon)); }, [leftIcon]);
|
|
82
|
+
var rightIconElement = (0, react_1.useMemo)(function () { return rightIcon && (0, jsx_runtime_1.jsx)(icon_1.default, __assign({}, rightIcon)); }, [rightIcon]);
|
|
83
|
+
var handleOnClick = (0, react_1.useCallback)(function (e) { return __awaiter(void 0, void 0, void 0, function () {
|
|
84
|
+
return __generator(this, function (_a) {
|
|
85
|
+
switch (_a.label) {
|
|
86
|
+
case 0:
|
|
87
|
+
e.stopPropagation();
|
|
88
|
+
if (disabled) {
|
|
89
|
+
return [2 /*return*/];
|
|
90
|
+
}
|
|
91
|
+
if (!clickHandler && !onClick) {
|
|
92
|
+
return [2 /*return*/];
|
|
93
|
+
}
|
|
94
|
+
if (!(exitFullScreenOnClick && isFullscreen)) return [3 /*break*/, 2];
|
|
95
|
+
return [4 /*yield*/, exitFullScreen()];
|
|
96
|
+
case 1:
|
|
97
|
+
_a.sent();
|
|
98
|
+
_a.label = 2;
|
|
99
|
+
case 2:
|
|
100
|
+
// Execute the appropriate handler
|
|
101
|
+
if (clickHandler) {
|
|
102
|
+
clickHandler();
|
|
103
|
+
}
|
|
104
|
+
else if (onClick) {
|
|
105
|
+
onClick(e);
|
|
106
|
+
}
|
|
107
|
+
return [2 /*return*/];
|
|
108
|
+
}
|
|
109
|
+
});
|
|
110
|
+
}); }, [disabled, clickHandler, onClick, exitFullScreenOnClick, isFullscreen, exitFullScreen]);
|
|
111
|
+
// Determine if this is a submenu (has actions)
|
|
112
|
+
var isSubmenu = actions && actions.length > 0;
|
|
113
|
+
// Common props for both Menu and MenuItem
|
|
114
|
+
var commonProps = (0, react_1.useMemo)(function () { return (__assign({ id: actionMenuItemId, 'data-testid': actionMenuItemId, label: text, leftIcon: leftIconElement, rightIcon: rightIconElement, disabled: disabled }, rest)); }, [actionMenuItemId, text, leftIconElement, rightIconElement, disabled, rest]);
|
|
115
|
+
if (isSubmenu) {
|
|
116
|
+
return ((0, jsx_runtime_1.jsx)(menu_1.Menu, __assign({}, commonProps, { "aria-label": "".concat(text, " submenu"), "aria-expanded": "false", children: actions.map(function (action, actionIndex) { return ((0, jsx_runtime_1.jsx)(ActionMenuOption, __assign({ idPrefix: "".concat(actionMenuItemId, "_"), index: actionIndex }, action), "".concat(actionMenuItemId, "_menu_item_").concat(actionIndex))); }) })));
|
|
117
|
+
}
|
|
118
|
+
return (0, jsx_runtime_1.jsx)(menu_1.MenuItem, __assign({}, commonProps, { onClick: handleOnClick, "aria-label": text }));
|
|
119
|
+
};
|
|
120
|
+
exports.default = ActionMenuOption;
|
|
121
|
+
//# sourceMappingURL=action-menu-option.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"action-menu-option.js","sourceRoot":"","sources":["../../src/molecules/action-menu-option.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import { FC, HTMLAttributes } from 'react';
|
|
2
|
+
import { IconProps } from '@ltht-react/icon';
|
|
3
|
+
import { ButtonProps } from '@ltht-react/button';
|
|
4
|
+
interface IProps<T extends HTMLElement = HTMLElement> extends HTMLAttributes<HTMLButtonElement> {
|
|
5
|
+
actions: ActionMenuOption[];
|
|
6
|
+
menuButtonOptions?: IconButtonMenuProps | ButtonMenuProps;
|
|
7
|
+
disabled?: boolean;
|
|
8
|
+
root?: React.MutableRefObject<T | null>;
|
|
9
|
+
}
|
|
10
|
+
interface IconButtonMenuProps {
|
|
11
|
+
type: 'icon';
|
|
12
|
+
iconProps: IconProps;
|
|
13
|
+
text?: string;
|
|
14
|
+
disabled?: boolean;
|
|
15
|
+
}
|
|
16
|
+
interface ButtonMenuProps {
|
|
17
|
+
type: 'button';
|
|
18
|
+
buttonProps: ButtonProps;
|
|
19
|
+
text: string;
|
|
20
|
+
}
|
|
21
|
+
export interface ActionMenuOption extends HTMLAttributes<HTMLButtonElement> {
|
|
22
|
+
text: string;
|
|
23
|
+
clickHandler?: VoidFunction;
|
|
24
|
+
leftIcon?: IconProps;
|
|
25
|
+
rightIcon?: IconProps;
|
|
26
|
+
disabled?: boolean;
|
|
27
|
+
exitFullScreenOnClick?: boolean;
|
|
28
|
+
actions?: ActionMenuOption[];
|
|
29
|
+
}
|
|
30
|
+
export declare const DefaultTrigger: IconButtonMenuProps;
|
|
31
|
+
declare const ActionMenu: FC<IProps>;
|
|
32
|
+
export default ActionMenu;
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __assign = (this && this.__assign) || function () {
|
|
3
|
+
__assign = Object.assign || function(t) {
|
|
4
|
+
for (var s, i = 1, n = arguments.length; i < n; i++) {
|
|
5
|
+
s = arguments[i];
|
|
6
|
+
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
|
|
7
|
+
t[p] = s[p];
|
|
8
|
+
}
|
|
9
|
+
return t;
|
|
10
|
+
};
|
|
11
|
+
return __assign.apply(this, arguments);
|
|
12
|
+
};
|
|
13
|
+
var __rest = (this && this.__rest) || function (s, e) {
|
|
14
|
+
var t = {};
|
|
15
|
+
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
|
|
16
|
+
t[p] = s[p];
|
|
17
|
+
if (s != null && typeof Object.getOwnPropertySymbols === "function")
|
|
18
|
+
for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
|
|
19
|
+
if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
|
|
20
|
+
t[p[i]] = s[p[i]];
|
|
21
|
+
}
|
|
22
|
+
return t;
|
|
23
|
+
};
|
|
24
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
25
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
26
|
+
};
|
|
27
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
28
|
+
exports.DefaultTrigger = void 0;
|
|
29
|
+
var jsx_runtime_1 = require("react/jsx-runtime");
|
|
30
|
+
var menu_1 = require("./menu");
|
|
31
|
+
var action_menu_option_1 = __importDefault(require("./action-menu-option"));
|
|
32
|
+
exports.DefaultTrigger = {
|
|
33
|
+
type: 'icon',
|
|
34
|
+
iconProps: {
|
|
35
|
+
type: 'ellipsis-vertical',
|
|
36
|
+
size: 'large',
|
|
37
|
+
},
|
|
38
|
+
};
|
|
39
|
+
var ActionMenu = function (_a) {
|
|
40
|
+
var _b = _a.id, id = _b === void 0 ? 'action-menu-button' : _b, actions = _a.actions, disabled = _a.disabled, _c = _a.menuButtonOptions, menuButtonOptions = _c === void 0 ? __assign(__assign({}, exports.DefaultTrigger), { disabled: disabled }) : _c, rest = __rest(_a, ["id", "actions", "disabled", "menuButtonOptions"]);
|
|
41
|
+
var menuItemIdPrefix = id ? "".concat(id, "-") : '';
|
|
42
|
+
return ((0, jsx_runtime_1.jsx)(menu_1.Menu, __assign({ rootTrigger: menuButtonOptions, "data-testid": id }, rest, { children: actions.map(function (action, index) { return ((0, jsx_runtime_1.jsx)(action_menu_option_1.default, __assign({ idPrefix: menuItemIdPrefix, index: index }, action), "".concat(menuItemIdPrefix, "_menu_item_").concat(index))); }) })));
|
|
43
|
+
};
|
|
44
|
+
exports.default = ActionMenu;
|
|
45
|
+
//# sourceMappingURL=action-menu.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"action-menu.js","sourceRoot":"","sources":["../../src/molecules/action-menu.tsx"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAIA,+BAA6B;AAC7B,4EAA6C;AAgChC,QAAA,cAAc,GAAwB;IACjD,IAAI,EAAE,MAAM;IACZ,SAAS,EAAE;QACT,IAAI,EAAE,mBAAmB;QACzB,IAAI,EAAE,OAAO;KACd;CACF,CAAA;AAED,IAAM,UAAU,GAAe,UAAC,EAM/B;IALC,IAAA,UAAyB,EAAzB,EAAE,mBAAG,oBAAoB,KAAA,EACzB,OAAO,aAAA,EACP,QAAQ,cAAA,EACR,yBAAmD,EAAnD,iBAAiB,yCAAQ,sBAAc,KAAE,QAAQ,UAAA,QAAE,EAChD,IAAI,cALuB,kDAM/B,CADQ;IAEP,IAAM,gBAAgB,GAAG,EAAE,CAAC,CAAC,CAAC,UAAG,EAAE,MAAG,CAAC,CAAC,CAAC,EAAE,CAAA;IAE3C,OAAO,CACL,uBAAC,WAAI,aAAC,WAAW,EAAE,iBAAiB,iBAAe,EAAE,IAAM,IAAI,cAC5D,OAAO,CAAC,GAAG,CAAC,UAAC,MAAM,EAAE,KAAK,IAAK,OAAA,CAC9B,uBAAC,4BAAU,aAET,QAAQ,EAAE,gBAAgB,EAC1B,KAAK,EAAE,KAAK,IACR,MAAM,GAHL,UAAG,gBAAgB,wBAAc,KAAK,CAAE,CAI7C,CACH,EAP+B,CAO/B,CAAC,IACG,CACR,CAAA;AACH,CAAC,CAAA;AAED,kBAAe,UAAU,CAAA"}
|
|
@@ -0,0 +1,194 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @packageDocumentation
|
|
3
|
+
*
|
|
4
|
+
* @module Menu
|
|
5
|
+
*
|
|
6
|
+
* This module provides a fully accessible, composable Menu component system using React and Floating UI.
|
|
7
|
+
* It supports root menus, nested submenus, keyboard navigation, focus management, and customizable triggers.
|
|
8
|
+
*
|
|
9
|
+
* ## Usage
|
|
10
|
+
*
|
|
11
|
+
* ```tsx
|
|
12
|
+
* import { Menu, MenuItem } from './menu'
|
|
13
|
+
* import { Icon } from '@ltht-react/icon'
|
|
14
|
+
*
|
|
15
|
+
* <Menu
|
|
16
|
+
* label="Options"
|
|
17
|
+
* leftIcon={<Icon name="menu" />}
|
|
18
|
+
* >
|
|
19
|
+
* <MenuItem label="Profile" />
|
|
20
|
+
* <MenuItem label="Settings" />
|
|
21
|
+
* <Menu label="More" leftIcon={<Icon name="more" />}>
|
|
22
|
+
* <MenuItem label="Subitem 1" />
|
|
23
|
+
* <MenuItem label="Subitem 2" />
|
|
24
|
+
* </Menu>
|
|
25
|
+
* <MenuItem label="Logout" />
|
|
26
|
+
* </Menu>
|
|
27
|
+
* ```
|
|
28
|
+
*
|
|
29
|
+
* - Use `<Menu>` as the root or nested menu container.
|
|
30
|
+
* - Use `<MenuItem>` for selectable menu items.
|
|
31
|
+
* - Pass `label`, `leftIcon`, and `rightIcon` props for customization.
|
|
32
|
+
* - For root menus, you can use the `rootTrigger` prop to provide a custom button or icon trigger.
|
|
33
|
+
* - Supports keyboard navigation, focus management, and accessibility out of the box.
|
|
34
|
+
*/
|
|
35
|
+
import { ExtendedRefs } from '@floating-ui/react';
|
|
36
|
+
import * as React from 'react';
|
|
37
|
+
import { ReactNode } from 'react';
|
|
38
|
+
import { IconProps } from '@ltht-react/icon';
|
|
39
|
+
import { ButtonProps } from '@ltht-react/button';
|
|
40
|
+
/**
|
|
41
|
+
* Props for the MenuComponent, which renders a menu trigger and its associated menu.
|
|
42
|
+
* @property label - Optional label for the menu trigger.
|
|
43
|
+
* @property leftIcon - Optional icon to display on the left of the label.
|
|
44
|
+
* @property rightIcon - Optional icon to display on the right of the label.
|
|
45
|
+
* @property nested - If true, indicates this menu is a nested submenu.
|
|
46
|
+
* @property children - The menu items or submenus to render.
|
|
47
|
+
* @property rootTrigger - The trigger component for the root menu (icon or button).
|
|
48
|
+
* @property disabled - If true, disables the menu trigger.
|
|
49
|
+
*/
|
|
50
|
+
interface MenuProps<T extends HTMLElement = HTMLElement> {
|
|
51
|
+
label?: string;
|
|
52
|
+
leftIcon?: ReactNode;
|
|
53
|
+
rightIcon?: ReactNode;
|
|
54
|
+
nested?: boolean;
|
|
55
|
+
children?: ReactNode;
|
|
56
|
+
rootTrigger?: RootMenuTrigger;
|
|
57
|
+
disabled?: boolean;
|
|
58
|
+
root?: React.MutableRefObject<T | null>;
|
|
59
|
+
}
|
|
60
|
+
/**
|
|
61
|
+
* RootMenuTrigger defines the type of trigger for the root menu.
|
|
62
|
+
* Can be either IconButtonMenuProps or ButtonMenuProps.
|
|
63
|
+
*/
|
|
64
|
+
type RootMenuTrigger = IconButtonMenuProps | ButtonMenuProps;
|
|
65
|
+
/**
|
|
66
|
+
* Props for an icon button menu trigger.
|
|
67
|
+
* @property type - Must be 'icon'.
|
|
68
|
+
* @property iconProps - Props for the icon to display.
|
|
69
|
+
* @property text - Optional text to display alongside the icon.
|
|
70
|
+
* @property disabled - If true, disables the icon button.
|
|
71
|
+
*/
|
|
72
|
+
interface IconButtonMenuProps {
|
|
73
|
+
type: 'icon';
|
|
74
|
+
iconProps: IconProps;
|
|
75
|
+
text?: string;
|
|
76
|
+
disabled?: boolean;
|
|
77
|
+
}
|
|
78
|
+
/**
|
|
79
|
+
* Props for a button menu trigger.
|
|
80
|
+
* @property type - Must be 'button'.
|
|
81
|
+
* @property buttonProps - Props for the button component.
|
|
82
|
+
* @property text - Text to display on the button.
|
|
83
|
+
*/
|
|
84
|
+
interface ButtonMenuProps {
|
|
85
|
+
type: 'button';
|
|
86
|
+
buttonProps: ButtonProps;
|
|
87
|
+
text: string;
|
|
88
|
+
}
|
|
89
|
+
/**
|
|
90
|
+
* MenuComponent renders a menu trigger (button or icon) and its associated floating menu.
|
|
91
|
+
* Handles open/close state, keyboard navigation, focus management, and nested submenus.
|
|
92
|
+
* Integrates with Floating UI for positioning and accessibility.
|
|
93
|
+
* @param props - MenuProps and HTML button attributes.
|
|
94
|
+
* @param forwardedRef - Ref to the trigger element.
|
|
95
|
+
* @returns The menu trigger and its floating menu.
|
|
96
|
+
*/
|
|
97
|
+
export declare const MenuComponent: React.ForwardRefExoticComponent<MenuProps<HTMLElement> & React.HTMLAttributes<HTMLButtonElement> & React.RefAttributes<HTMLButtonElement>>;
|
|
98
|
+
interface MenuTriggerProps extends React.HTMLAttributes<HTMLElement> {
|
|
99
|
+
refs: ExtendedRefs<HTMLButtonElement>;
|
|
100
|
+
isNested: boolean;
|
|
101
|
+
leftIcon?: React.ReactNode;
|
|
102
|
+
rightIcon?: React.ReactNode;
|
|
103
|
+
label?: string;
|
|
104
|
+
rootTrigger?: RootMenuTrigger;
|
|
105
|
+
}
|
|
106
|
+
/**
|
|
107
|
+
* MenuTrigger renders the trigger element for a menu or submenu.
|
|
108
|
+
* It handles both root and nested menu triggers, supporting icon buttons, standard buttons, or custom triggers.
|
|
109
|
+
* For nested menus or when no rootTrigger is provided, it renders a styled menu trigger with optional icons and label.
|
|
110
|
+
* For root menus, it renders either an IconButton or Button based on the rootTrigger type.
|
|
111
|
+
*
|
|
112
|
+
* @param props - MenuTriggerProps including refs, trigger configuration, icons, label, and additional HTML attributes.
|
|
113
|
+
* @param props.refs - Floating UI and list item refs for positioning and focus management.
|
|
114
|
+
* @param props.isNested - Indicates if this trigger is for a nested submenu.
|
|
115
|
+
* @param props.leftIcon - Optional icon to display on the left of the label.
|
|
116
|
+
* @param props.rightIcon - Optional icon to display on the right of the label.
|
|
117
|
+
* @param props.label - Optional label text for the trigger.
|
|
118
|
+
* @param props.rootTrigger - Configuration for the root menu trigger (icon or button).
|
|
119
|
+
* @param forwardedRef - Ref to the trigger element.
|
|
120
|
+
* @returns The trigger element for the menu or submenu.
|
|
121
|
+
*/
|
|
122
|
+
export declare const MenuTrigger: React.ForwardRefExoticComponent<MenuTriggerProps & React.HTMLAttributes<HTMLButtonElement> & React.RefAttributes<HTMLButtonElement>>;
|
|
123
|
+
/**
|
|
124
|
+
* Props for a MenuItem component.
|
|
125
|
+
* @property label - Optional label for the menu item.
|
|
126
|
+
* @property leftIcon - Optional icon to display on the left.
|
|
127
|
+
* @property rightIcon - Optional icon to display on the right.
|
|
128
|
+
* @property disabled - If true, disables the menu item.
|
|
129
|
+
*/
|
|
130
|
+
interface MenuItemProps {
|
|
131
|
+
label?: string;
|
|
132
|
+
leftIcon?: ReactNode;
|
|
133
|
+
rightIcon?: ReactNode;
|
|
134
|
+
disabled?: boolean;
|
|
135
|
+
}
|
|
136
|
+
/**
|
|
137
|
+
* MenuItem renders a single item within a menu.
|
|
138
|
+
* Handles focus, keyboard navigation, and click events.
|
|
139
|
+
* Integrates with the menu context for accessibility and state management.
|
|
140
|
+
* @param props - MenuItemProps and HTML button attributes.
|
|
141
|
+
* @param forwardedRef - Ref to the menu item element.
|
|
142
|
+
* @returns The styled menu item.
|
|
143
|
+
*
|
|
144
|
+
*
|
|
145
|
+
* ## Usage
|
|
146
|
+
*
|
|
147
|
+
* ```tsx
|
|
148
|
+
* import { Menu, MenuItem } from './menu'
|
|
149
|
+
* import { Icon } from '@ltht-react/icon'
|
|
150
|
+
*
|
|
151
|
+
* <Menu
|
|
152
|
+
* label="Options"
|
|
153
|
+
* leftIcon={<Icon name="menu" />}
|
|
154
|
+
* >
|
|
155
|
+
* <MenuItem label="Profile" />
|
|
156
|
+
* <MenuItem label="Settings" />
|
|
157
|
+
* <Menu label="More" leftIcon={<Icon name="more" />}>
|
|
158
|
+
* <MenuItem label="Subitem 1" />
|
|
159
|
+
* <MenuItem label="Subitem 2" />
|
|
160
|
+
* </Menu>
|
|
161
|
+
* <MenuItem label="Logout" />
|
|
162
|
+
* </Menu>
|
|
163
|
+
* ```
|
|
164
|
+
*/
|
|
165
|
+
export declare const MenuItem: React.ForwardRefExoticComponent<MenuItemProps & React.HTMLAttributes<HTMLButtonElement> & React.RefAttributes<HTMLButtonElement>>;
|
|
166
|
+
/**
|
|
167
|
+
* Menu is the main entry point for rendering a menu or submenu.
|
|
168
|
+
* Automatically wraps the root menu in a FloatingTree for context management.
|
|
169
|
+
* @param props - MenuProps and HTML button attributes.
|
|
170
|
+
* @param ref - Ref to the menu trigger element.
|
|
171
|
+
* @returns The menu trigger and its floating menu.
|
|
172
|
+
*
|
|
173
|
+
* ## Usage
|
|
174
|
+
*
|
|
175
|
+
* ```tsx
|
|
176
|
+
* import { Menu, MenuItem } from './menu'
|
|
177
|
+
* import { Icon } from '@ltht-react/icon'
|
|
178
|
+
*
|
|
179
|
+
* <Menu
|
|
180
|
+
* label="Options"
|
|
181
|
+
* leftIcon={<Icon name="menu" />}
|
|
182
|
+
* >
|
|
183
|
+
* <MenuItem label="Profile" />
|
|
184
|
+
* <MenuItem label="Settings" />
|
|
185
|
+
* <Menu label="More" leftIcon={<Icon name="more" />}>
|
|
186
|
+
* <MenuItem label="Subitem 1" />
|
|
187
|
+
* <MenuItem label="Subitem 2" />
|
|
188
|
+
* </Menu>
|
|
189
|
+
* <MenuItem label="Logout" />
|
|
190
|
+
* </Menu>
|
|
191
|
+
* ```
|
|
192
|
+
*/
|
|
193
|
+
export declare const Menu: React.ForwardRefExoticComponent<MenuProps<HTMLElement> & React.HTMLAttributes<HTMLButtonElement> & React.RefAttributes<HTMLButtonElement>>;
|
|
194
|
+
export {};
|
|
@@ -0,0 +1,327 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __assign = (this && this.__assign) || function () {
|
|
3
|
+
__assign = Object.assign || function(t) {
|
|
4
|
+
for (var s, i = 1, n = arguments.length; i < n; i++) {
|
|
5
|
+
s = arguments[i];
|
|
6
|
+
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
|
|
7
|
+
t[p] = s[p];
|
|
8
|
+
}
|
|
9
|
+
return t;
|
|
10
|
+
};
|
|
11
|
+
return __assign.apply(this, arguments);
|
|
12
|
+
};
|
|
13
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
14
|
+
if (k2 === undefined) k2 = k;
|
|
15
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
16
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
17
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
18
|
+
}
|
|
19
|
+
Object.defineProperty(o, k2, desc);
|
|
20
|
+
}) : (function(o, m, k, k2) {
|
|
21
|
+
if (k2 === undefined) k2 = k;
|
|
22
|
+
o[k2] = m[k];
|
|
23
|
+
}));
|
|
24
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
25
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
26
|
+
}) : function(o, v) {
|
|
27
|
+
o["default"] = v;
|
|
28
|
+
});
|
|
29
|
+
var __importStar = (this && this.__importStar) || function (mod) {
|
|
30
|
+
if (mod && mod.__esModule) return mod;
|
|
31
|
+
var result = {};
|
|
32
|
+
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
33
|
+
__setModuleDefault(result, mod);
|
|
34
|
+
return result;
|
|
35
|
+
};
|
|
36
|
+
var __rest = (this && this.__rest) || function (s, e) {
|
|
37
|
+
var t = {};
|
|
38
|
+
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
|
|
39
|
+
t[p] = s[p];
|
|
40
|
+
if (s != null && typeof Object.getOwnPropertySymbols === "function")
|
|
41
|
+
for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
|
|
42
|
+
if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
|
|
43
|
+
t[p[i]] = s[p[i]];
|
|
44
|
+
}
|
|
45
|
+
return t;
|
|
46
|
+
};
|
|
47
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
48
|
+
exports.Menu = exports.MenuItem = exports.MenuTrigger = exports.MenuComponent = void 0;
|
|
49
|
+
var jsx_runtime_1 = require("react/jsx-runtime");
|
|
50
|
+
/**
|
|
51
|
+
* @packageDocumentation
|
|
52
|
+
*
|
|
53
|
+
* @module Menu
|
|
54
|
+
*
|
|
55
|
+
* This module provides a fully accessible, composable Menu component system using React and Floating UI.
|
|
56
|
+
* It supports root menus, nested submenus, keyboard navigation, focus management, and customizable triggers.
|
|
57
|
+
*
|
|
58
|
+
* ## Usage
|
|
59
|
+
*
|
|
60
|
+
* ```tsx
|
|
61
|
+
* import { Menu, MenuItem } from './menu'
|
|
62
|
+
* import { Icon } from '@ltht-react/icon'
|
|
63
|
+
*
|
|
64
|
+
* <Menu
|
|
65
|
+
* label="Options"
|
|
66
|
+
* leftIcon={<Icon name="menu" />}
|
|
67
|
+
* >
|
|
68
|
+
* <MenuItem label="Profile" />
|
|
69
|
+
* <MenuItem label="Settings" />
|
|
70
|
+
* <Menu label="More" leftIcon={<Icon name="more" />}>
|
|
71
|
+
* <MenuItem label="Subitem 1" />
|
|
72
|
+
* <MenuItem label="Subitem 2" />
|
|
73
|
+
* </Menu>
|
|
74
|
+
* <MenuItem label="Logout" />
|
|
75
|
+
* </Menu>
|
|
76
|
+
* ```
|
|
77
|
+
*
|
|
78
|
+
* - Use `<Menu>` as the root or nested menu container.
|
|
79
|
+
* - Use `<MenuItem>` for selectable menu items.
|
|
80
|
+
* - Pass `label`, `leftIcon`, and `rightIcon` props for customization.
|
|
81
|
+
* - For root menus, you can use the `rootTrigger` prop to provide a custom button or icon trigger.
|
|
82
|
+
* - Supports keyboard navigation, focus management, and accessibility out of the box.
|
|
83
|
+
*/
|
|
84
|
+
var react_1 = require("@floating-ui/react");
|
|
85
|
+
var React = __importStar(require("react"));
|
|
86
|
+
var react_2 = require("react");
|
|
87
|
+
var icon_1 = __importStar(require("@ltht-react/icon"));
|
|
88
|
+
var button_1 = require("@ltht-react/button");
|
|
89
|
+
var menu_style_1 = require("./menu.style");
|
|
90
|
+
var MenuContext = React.createContext({
|
|
91
|
+
/* eslint-disable @typescript-eslint/no-empty-function */
|
|
92
|
+
getItemProps: function () { return ({}); },
|
|
93
|
+
activeIndex: null,
|
|
94
|
+
/* eslint-disable @typescript-eslint/no-empty-function */
|
|
95
|
+
setActiveIndex: function () { },
|
|
96
|
+
/* eslint-disable @typescript-eslint/no-empty-function */
|
|
97
|
+
setHasFocusInside: function () { },
|
|
98
|
+
isOpen: false,
|
|
99
|
+
});
|
|
100
|
+
/**
|
|
101
|
+
* MenuComponent renders a menu trigger (button or icon) and its associated floating menu.
|
|
102
|
+
* Handles open/close state, keyboard navigation, focus management, and nested submenus.
|
|
103
|
+
* Integrates with Floating UI for positioning and accessibility.
|
|
104
|
+
* @param props - MenuProps and HTML button attributes.
|
|
105
|
+
* @param forwardedRef - Ref to the trigger element.
|
|
106
|
+
* @returns The menu trigger and its floating menu.
|
|
107
|
+
*/
|
|
108
|
+
exports.MenuComponent = (0, react_2.forwardRef)(function (_a, forwardedRef) {
|
|
109
|
+
var children = _a.children, label = _a.label, leftIcon = _a.leftIcon, rightIcon = _a.rightIcon, rootTrigger = _a.rootTrigger, root = _a.root, props = __rest(_a, ["children", "label", "leftIcon", "rightIcon", "rootTrigger", "root"]);
|
|
110
|
+
var _b = React.useState(false), isOpen = _b[0], setIsOpen = _b[1];
|
|
111
|
+
var _c = React.useState(false), hasFocusInside = _c[0], setHasFocusInside = _c[1];
|
|
112
|
+
var _d = React.useState(null), activeIndex = _d[0], setActiveIndex = _d[1];
|
|
113
|
+
var elementsRef = React.useRef([]);
|
|
114
|
+
var labelsRef = React.useRef([]);
|
|
115
|
+
var parent = React.useContext(MenuContext);
|
|
116
|
+
var tree = (0, react_1.useFloatingTree)();
|
|
117
|
+
var nodeId = (0, react_1.useFloatingNodeId)();
|
|
118
|
+
var parentId = (0, react_1.useFloatingParentNodeId)();
|
|
119
|
+
var item = (0, react_1.useListItem)();
|
|
120
|
+
var isNested = parentId != null;
|
|
121
|
+
var _e = (0, react_1.useFloating)({
|
|
122
|
+
nodeId: nodeId,
|
|
123
|
+
open: isOpen,
|
|
124
|
+
onOpenChange: setIsOpen,
|
|
125
|
+
placement: isNested ? 'right-start' : 'bottom-start',
|
|
126
|
+
middleware: [(0, react_1.offset)({ mainAxis: isNested ? 0 : 4, alignmentAxis: isNested ? -4 : 0 }), (0, react_1.flip)(), (0, react_1.shift)()],
|
|
127
|
+
whileElementsMounted: react_1.autoUpdate,
|
|
128
|
+
}), floatingStyles = _e.floatingStyles, refs = _e.refs, context = _e.context;
|
|
129
|
+
var hover = (0, react_1.useHover)(context, {
|
|
130
|
+
enabled: isNested,
|
|
131
|
+
delay: { open: 75 },
|
|
132
|
+
handleClose: (0, react_1.safePolygon)({ blockPointerEvents: true }),
|
|
133
|
+
});
|
|
134
|
+
var click = (0, react_1.useClick)(context, {
|
|
135
|
+
event: 'mousedown',
|
|
136
|
+
toggle: !isNested,
|
|
137
|
+
ignoreMouse: isNested,
|
|
138
|
+
});
|
|
139
|
+
var role = (0, react_1.useRole)(context, { role: 'menu' });
|
|
140
|
+
var dismiss = (0, react_1.useDismiss)(context, { bubbles: true });
|
|
141
|
+
var listNavigation = (0, react_1.useListNavigation)(context, {
|
|
142
|
+
listRef: elementsRef,
|
|
143
|
+
activeIndex: activeIndex,
|
|
144
|
+
nested: isNested,
|
|
145
|
+
onNavigate: setActiveIndex,
|
|
146
|
+
});
|
|
147
|
+
var typeahead = (0, react_1.useTypeahead)(context, {
|
|
148
|
+
listRef: labelsRef,
|
|
149
|
+
onMatch: isOpen ? setActiveIndex : undefined,
|
|
150
|
+
activeIndex: activeIndex,
|
|
151
|
+
});
|
|
152
|
+
var _f = (0, react_1.useInteractions)([
|
|
153
|
+
hover,
|
|
154
|
+
click,
|
|
155
|
+
role,
|
|
156
|
+
dismiss,
|
|
157
|
+
listNavigation,
|
|
158
|
+
typeahead,
|
|
159
|
+
]), getReferenceProps = _f.getReferenceProps, getFloatingProps = _f.getFloatingProps, getItemProps = _f.getItemProps;
|
|
160
|
+
// Event emitter allows you to communicate across tree components.
|
|
161
|
+
// This effect closes all menus when an item gets clicked anywhere
|
|
162
|
+
// in the tree.
|
|
163
|
+
(0, react_2.useEffect)(function () {
|
|
164
|
+
if (!tree)
|
|
165
|
+
return undefined;
|
|
166
|
+
var handleTreeClick = function () { return setIsOpen(false); };
|
|
167
|
+
var onSubMenuOpen = function (event) {
|
|
168
|
+
if (event.nodeId !== nodeId && event.parentId === parentId) {
|
|
169
|
+
setIsOpen(false);
|
|
170
|
+
}
|
|
171
|
+
};
|
|
172
|
+
tree.events.on('click', handleTreeClick);
|
|
173
|
+
tree.events.on('menuopen', onSubMenuOpen);
|
|
174
|
+
return function () {
|
|
175
|
+
tree.events.off('click', handleTreeClick);
|
|
176
|
+
tree.events.off('menuopen', onSubMenuOpen);
|
|
177
|
+
};
|
|
178
|
+
}, [tree, nodeId, parentId]);
|
|
179
|
+
(0, react_2.useEffect)(function () {
|
|
180
|
+
isOpen && tree && tree.events.emit('menuopen', { parentId: parentId, nodeId: nodeId });
|
|
181
|
+
}, [tree, isOpen, nodeId, parentId]);
|
|
182
|
+
var activeItem = parent.activeIndex === item.index ? 0 : -1;
|
|
183
|
+
return ((0, jsx_runtime_1.jsxs)(react_1.FloatingNode, { id: nodeId, children: [(0, jsx_runtime_1.jsx)(exports.MenuTrigger, __assign({ ref: forwardedRef, refs: refs, isNested: isNested, label: label, leftIcon: leftIcon, rightIcon: rightIcon, rootTrigger: rootTrigger, tabIndex: !isNested ? undefined : activeItem, role: isNested ? 'menuitem' : undefined, "data-open": isOpen ? '' : undefined, "data-nested": isNested ? '' : undefined, "data-focus-inside": hasFocusInside ? '' : undefined, style: isNested ? undefined : props.style }, props, getReferenceProps(__assign(__assign({}, parent.getItemProps(__assign(__assign({}, props), { onFocus: function (event) {
|
|
184
|
+
var _a;
|
|
185
|
+
(_a = props.onFocus) === null || _a === void 0 ? void 0 : _a.call(props, event);
|
|
186
|
+
setHasFocusInside(false);
|
|
187
|
+
parent.setHasFocusInside(true);
|
|
188
|
+
} }))), { onClick: function (e) {
|
|
189
|
+
e.stopPropagation();
|
|
190
|
+
} })))), (0, jsx_runtime_1.jsx)(MenuContext.Provider, { value: {
|
|
191
|
+
activeIndex: activeIndex,
|
|
192
|
+
setActiveIndex: setActiveIndex,
|
|
193
|
+
getItemProps: getItemProps,
|
|
194
|
+
setHasFocusInside: setHasFocusInside,
|
|
195
|
+
isOpen: isOpen,
|
|
196
|
+
}, children: (0, jsx_runtime_1.jsx)(react_1.FloatingList, { elementsRef: elementsRef, labelsRef: labelsRef, children: isOpen && ((0, jsx_runtime_1.jsx)(react_1.FloatingPortal, { root: root, children: (0, jsx_runtime_1.jsx)(react_1.FloatingFocusManager, { context: context, modal: false, initialFocus: isNested ? -1 : 0, returnFocus: !isNested, children: (0, jsx_runtime_1.jsx)(menu_style_1.StyledMenu, __assign({ ref: refs.setFloating, style: floatingStyles }, getFloatingProps(), { children: children })) }) })) }) })] }));
|
|
197
|
+
});
|
|
198
|
+
var DefaultTriggerIcon = function () { return (0, jsx_runtime_1.jsx)(icon_1.default, { type: "ellipsis-vertical", size: "medium" }); };
|
|
199
|
+
/**
|
|
200
|
+
* MenuTrigger renders the trigger element for a menu or submenu.
|
|
201
|
+
* It handles both root and nested menu triggers, supporting icon buttons, standard buttons, or custom triggers.
|
|
202
|
+
* For nested menus or when no rootTrigger is provided, it renders a styled menu trigger with optional icons and label.
|
|
203
|
+
* For root menus, it renders either an IconButton or Button based on the rootTrigger type.
|
|
204
|
+
*
|
|
205
|
+
* @param props - MenuTriggerProps including refs, trigger configuration, icons, label, and additional HTML attributes.
|
|
206
|
+
* @param props.refs - Floating UI and list item refs for positioning and focus management.
|
|
207
|
+
* @param props.isNested - Indicates if this trigger is for a nested submenu.
|
|
208
|
+
* @param props.leftIcon - Optional icon to display on the left of the label.
|
|
209
|
+
* @param props.rightIcon - Optional icon to display on the right of the label.
|
|
210
|
+
* @param props.label - Optional label text for the trigger.
|
|
211
|
+
* @param props.rootTrigger - Configuration for the root menu trigger (icon or button).
|
|
212
|
+
* @param forwardedRef - Ref to the trigger element.
|
|
213
|
+
* @returns The trigger element for the menu or submenu.
|
|
214
|
+
*/
|
|
215
|
+
exports.MenuTrigger = (0, react_2.forwardRef)(function (_a, forwardedRef) {
|
|
216
|
+
var refs = _a.refs, isNested = _a.isNested, leftIcon = _a.leftIcon, rightIcon = _a.rightIcon, label = _a.label, rootTrigger = _a.rootTrigger, props = __rest(_a, ["refs", "isNested", "leftIcon", "rightIcon", "label", "rootTrigger"]);
|
|
217
|
+
var item = (0, react_1.useListItem)();
|
|
218
|
+
var mergedRefs = (0, react_1.useMergeRefs)([refs.setReference, item.ref, forwardedRef]);
|
|
219
|
+
if (isNested || !rootTrigger) {
|
|
220
|
+
// check if no label or icons provided thus use default icon
|
|
221
|
+
var finalLeftIconValue = !label && !leftIcon && !rightIcon ? (0, jsx_runtime_1.jsx)(DefaultTriggerIcon, {}) : leftIcon;
|
|
222
|
+
return ((0, jsx_runtime_1.jsx)(menu_style_1.StyledRootMenu, __assign({ ref: mergedRefs }, props, { isNested: isNested, children: (0, jsx_runtime_1.jsx)(MenuLabel, { leftIcon: finalLeftIconValue, rightIcon: rightIcon, label: label, isNested: isNested }) })));
|
|
223
|
+
}
|
|
224
|
+
switch (rootTrigger.type) {
|
|
225
|
+
case 'icon':
|
|
226
|
+
return ((0, jsx_runtime_1.jsx)(icon_1.IconButton, __assign({ ref: mergedRefs, iconProps: rootTrigger.iconProps, disabled: rootTrigger.disabled, text: rootTrigger.text }, props)));
|
|
227
|
+
case 'button':
|
|
228
|
+
return ((0, jsx_runtime_1.jsx)(button_1.Button, __assign({ ref: mergedRefs }, props, rootTrigger.buttonProps, { children: rootTrigger.text })));
|
|
229
|
+
default:
|
|
230
|
+
return null;
|
|
231
|
+
}
|
|
232
|
+
});
|
|
233
|
+
/**
|
|
234
|
+
* MenuLabel renders the label and icons for a menu trigger.
|
|
235
|
+
* Displays a right arrow for nested submenus.
|
|
236
|
+
* @param props - MenuLabelProps.
|
|
237
|
+
* @returns The label and icons for the menu trigger.
|
|
238
|
+
*/
|
|
239
|
+
var MenuLabel = function (_a) {
|
|
240
|
+
var leftIcon = _a.leftIcon, rightIcon = _a.rightIcon, label = _a.label, isNested = _a.isNested;
|
|
241
|
+
if (isNested)
|
|
242
|
+
return ((0, jsx_runtime_1.jsxs)(jsx_runtime_1.Fragment, { children: [leftIcon && (0, jsx_runtime_1.jsx)(menu_style_1.LeftIconWrapper, { children: leftIcon }), (0, jsx_runtime_1.jsx)(menu_style_1.TextWrapper, { children: label }), isNested && (0, jsx_runtime_1.jsx)(menu_style_1.RightIconWrapper, { children: "\u25B6" })] }));
|
|
243
|
+
return ((0, jsx_runtime_1.jsxs)(jsx_runtime_1.Fragment, { children: [leftIcon, label, rightIcon] }));
|
|
244
|
+
};
|
|
245
|
+
/**
|
|
246
|
+
* MenuItem renders a single item within a menu.
|
|
247
|
+
* Handles focus, keyboard navigation, and click events.
|
|
248
|
+
* Integrates with the menu context for accessibility and state management.
|
|
249
|
+
* @param props - MenuItemProps and HTML button attributes.
|
|
250
|
+
* @param forwardedRef - Ref to the menu item element.
|
|
251
|
+
* @returns The styled menu item.
|
|
252
|
+
*
|
|
253
|
+
*
|
|
254
|
+
* ## Usage
|
|
255
|
+
*
|
|
256
|
+
* ```tsx
|
|
257
|
+
* import { Menu, MenuItem } from './menu'
|
|
258
|
+
* import { Icon } from '@ltht-react/icon'
|
|
259
|
+
*
|
|
260
|
+
* <Menu
|
|
261
|
+
* label="Options"
|
|
262
|
+
* leftIcon={<Icon name="menu" />}
|
|
263
|
+
* >
|
|
264
|
+
* <MenuItem label="Profile" />
|
|
265
|
+
* <MenuItem label="Settings" />
|
|
266
|
+
* <Menu label="More" leftIcon={<Icon name="more" />}>
|
|
267
|
+
* <MenuItem label="Subitem 1" />
|
|
268
|
+
* <MenuItem label="Subitem 2" />
|
|
269
|
+
* </Menu>
|
|
270
|
+
* <MenuItem label="Logout" />
|
|
271
|
+
* </Menu>
|
|
272
|
+
* ```
|
|
273
|
+
*/
|
|
274
|
+
exports.MenuItem = (0, react_2.forwardRef)(function (_a, forwardedRef) {
|
|
275
|
+
var label = _a.label, children = _a.children, leftIcon = _a.leftIcon, rightIcon = _a.rightIcon, disabled = _a.disabled, props = __rest(_a, ["label", "children", "leftIcon", "rightIcon", "disabled"]);
|
|
276
|
+
var menu = React.useContext(MenuContext);
|
|
277
|
+
var item = (0, react_1.useListItem)({ label: disabled ? null : label });
|
|
278
|
+
var tree = (0, react_1.useFloatingTree)();
|
|
279
|
+
var isActive = item.index === menu.activeIndex;
|
|
280
|
+
return ((0, jsx_runtime_1.jsxs)(menu_style_1.StyledMenuItem, __assign({}, props, { ref: (0, react_1.useMergeRefs)([item.ref, forwardedRef]), type: "button", role: "menuitem", tabIndex: isActive ? 0 : -1, disabled: disabled }, menu.getItemProps({
|
|
281
|
+
onClick: function (event) {
|
|
282
|
+
var _a;
|
|
283
|
+
(_a = props.onClick) === null || _a === void 0 ? void 0 : _a.call(props, event);
|
|
284
|
+
tree === null || tree === void 0 ? void 0 : tree.events.emit('click');
|
|
285
|
+
},
|
|
286
|
+
onFocus: function (event) {
|
|
287
|
+
var _a;
|
|
288
|
+
(_a = props.onFocus) === null || _a === void 0 ? void 0 : _a.call(props, event);
|
|
289
|
+
menu.setHasFocusInside(true);
|
|
290
|
+
},
|
|
291
|
+
}), { children: [leftIcon && (0, jsx_runtime_1.jsx)(menu_style_1.LeftIconWrapper, { children: leftIcon }), (0, jsx_runtime_1.jsx)(menu_style_1.TextWrapper, { children: label !== null && label !== void 0 ? label : children }), rightIcon && (0, jsx_runtime_1.jsx)(menu_style_1.RightIconWrapper, { children: rightIcon })] })));
|
|
292
|
+
});
|
|
293
|
+
/**
|
|
294
|
+
* Menu is the main entry point for rendering a menu or submenu.
|
|
295
|
+
* Automatically wraps the root menu in a FloatingTree for context management.
|
|
296
|
+
* @param props - MenuProps and HTML button attributes.
|
|
297
|
+
* @param ref - Ref to the menu trigger element.
|
|
298
|
+
* @returns The menu trigger and its floating menu.
|
|
299
|
+
*
|
|
300
|
+
* ## Usage
|
|
301
|
+
*
|
|
302
|
+
* ```tsx
|
|
303
|
+
* import { Menu, MenuItem } from './menu'
|
|
304
|
+
* import { Icon } from '@ltht-react/icon'
|
|
305
|
+
*
|
|
306
|
+
* <Menu
|
|
307
|
+
* label="Options"
|
|
308
|
+
* leftIcon={<Icon name="menu" />}
|
|
309
|
+
* >
|
|
310
|
+
* <MenuItem label="Profile" />
|
|
311
|
+
* <MenuItem label="Settings" />
|
|
312
|
+
* <Menu label="More" leftIcon={<Icon name="more" />}>
|
|
313
|
+
* <MenuItem label="Subitem 1" />
|
|
314
|
+
* <MenuItem label="Subitem 2" />
|
|
315
|
+
* </Menu>
|
|
316
|
+
* <MenuItem label="Logout" />
|
|
317
|
+
* </Menu>
|
|
318
|
+
* ```
|
|
319
|
+
*/
|
|
320
|
+
exports.Menu = React.forwardRef(function (props, ref) {
|
|
321
|
+
var parentId = (0, react_1.useFloatingParentNodeId)();
|
|
322
|
+
if (parentId === null) {
|
|
323
|
+
return ((0, jsx_runtime_1.jsx)(react_1.FloatingTree, { children: (0, jsx_runtime_1.jsx)(exports.MenuComponent, __assign({}, props, { ref: ref })) }));
|
|
324
|
+
}
|
|
325
|
+
return (0, jsx_runtime_1.jsx)(exports.MenuComponent, __assign({}, props, { rootTrigger: undefined, ref: ref }));
|
|
326
|
+
});
|
|
327
|
+
//# sourceMappingURL=menu.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"menu.js","sourceRoot":"","sources":["../../src/molecules/menu.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
/// <reference types="react" />
|
|
2
|
+
export declare const RightIconWrapper: import("@emotion/styled").StyledComponent<{
|
|
3
|
+
theme?: import("@emotion/react").Theme | undefined;
|
|
4
|
+
as?: import("react").ElementType<any> | undefined;
|
|
5
|
+
}, import("react").DetailedHTMLProps<import("react").HTMLAttributes<HTMLDivElement>, HTMLDivElement>, {}>;
|
|
6
|
+
export declare const LeftIconWrapper: import("@emotion/styled").StyledComponent<{
|
|
7
|
+
theme?: import("@emotion/react").Theme | undefined;
|
|
8
|
+
as?: import("react").ElementType<any> | undefined;
|
|
9
|
+
}, import("react").DetailedHTMLProps<import("react").HTMLAttributes<HTMLDivElement>, HTMLDivElement>, {}>;
|
|
10
|
+
export declare const TextWrapper: import("@emotion/styled").StyledComponent<{
|
|
11
|
+
theme?: import("@emotion/react").Theme | undefined;
|
|
12
|
+
as?: import("react").ElementType<any> | undefined;
|
|
13
|
+
}, import("react").DetailedHTMLProps<import("react").HTMLAttributes<HTMLSpanElement>, HTMLSpanElement>, {}>;
|
|
14
|
+
export declare const StyledRootMenu: import("@emotion/styled").StyledComponent<{
|
|
15
|
+
theme?: import("@emotion/react").Theme | undefined;
|
|
16
|
+
as?: import("react").ElementType<any> | undefined;
|
|
17
|
+
} & {
|
|
18
|
+
isNested?: boolean | undefined;
|
|
19
|
+
}, import("react").DetailedHTMLProps<import("react").ButtonHTMLAttributes<HTMLButtonElement>, HTMLButtonElement>, {}>;
|
|
20
|
+
export declare const StyledMenu: import("@emotion/styled").StyledComponent<{
|
|
21
|
+
theme?: import("@emotion/react").Theme | undefined;
|
|
22
|
+
as?: import("react").ElementType<any> | undefined;
|
|
23
|
+
}, import("react").DetailedHTMLProps<import("react").HTMLAttributes<HTMLDivElement>, HTMLDivElement>, {}>;
|
|
24
|
+
export declare const StyledMenuItem: import("@emotion/styled").StyledComponent<{
|
|
25
|
+
theme?: import("@emotion/react").Theme | undefined;
|
|
26
|
+
as?: import("react").ElementType<any> | undefined;
|
|
27
|
+
}, import("react").DetailedHTMLProps<import("react").ButtonHTMLAttributes<HTMLButtonElement>, HTMLButtonElement>, {}>;
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __makeTemplateObject = (this && this.__makeTemplateObject) || function (cooked, raw) {
|
|
3
|
+
if (Object.defineProperty) { Object.defineProperty(cooked, "raw", { value: raw }); } else { cooked.raw = raw; }
|
|
4
|
+
return cooked;
|
|
5
|
+
};
|
|
6
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
7
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
8
|
+
};
|
|
9
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
10
|
+
exports.StyledMenuItem = exports.StyledMenu = exports.StyledRootMenu = exports.TextWrapper = exports.LeftIconWrapper = exports.RightIconWrapper = void 0;
|
|
11
|
+
var react_1 = require("@emotion/react");
|
|
12
|
+
var styled_1 = __importDefault(require("@emotion/styled"));
|
|
13
|
+
var styles_1 = require("@ltht-react/styles");
|
|
14
|
+
var nestedStyles = (0, react_1.css)(templateObject_1 || (templateObject_1 = __makeTemplateObject(["\n display: flex;\n align-items: center;\n gap: 0.25rem;\n background: none;\n width: 100%;\n border: none;\n text-align: left;\n line-height: 1.8;\n min-width: 80px;\n margin: 0;\n outline: 0;\n\n &:focus {\n background: ", ";\n color: ", ";\n }\n\n &[data-nested][data-open]:not([data-focus-inside]) {\n background: ", ";\n color: ", ";\n }\n\n &[data-focus-inside][data-open] {\n background: ", ";\n color: ", ";\n }\n\n &:not(:last-child) {\n border-bottom: 1px solid #e0e6ef;\n }\n\n &:hover > div > svg {\n color: ", ";\n }\n\n &[data-focus-inside][data-open] > div > svg {\n color: ", ";\n }\n\n &[disabled] > div > svg {\n color: rgba(16, 16, 16, 0.3);\n }\n\n &[disabled]:hover {\n cursor: not-allowed;\n }\n\n &:hover {\n cursor: pointer;\n }\n"], ["\n display: flex;\n align-items: center;\n gap: 0.25rem;\n background: none;\n width: 100%;\n border: none;\n text-align: left;\n line-height: 1.8;\n min-width: 80px;\n margin: 0;\n outline: 0;\n\n &:focus {\n background: ", ";\n color: ", ";\n }\n\n &[data-nested][data-open]:not([data-focus-inside]) {\n background: ", ";\n color: ", ";\n }\n\n &[data-focus-inside][data-open] {\n background: ", ";\n color: ", ";\n }\n\n &:not(:last-child) {\n border-bottom: 1px solid #e0e6ef;\n }\n\n &:hover > div > svg {\n color: ", ";\n }\n\n &[data-focus-inside][data-open] > div > svg {\n color: ", ";\n }\n\n &[disabled] > div > svg {\n color: rgba(16, 16, 16, 0.3);\n }\n\n &[disabled]:hover {\n cursor: not-allowed;\n }\n\n &:hover {\n cursor: pointer;\n }\n"])), styles_1.BTN_COLOURS.PRIMARY.HOVER, styles_1.BTN_COLOURS.PRIMARY.TEXT, styles_1.BTN_COLOURS.PRIMARY.HOVER, styles_1.BTN_COLOURS.PRIMARY.TEXT, styles_1.BTN_COLOURS.PRIMARY.HOVER, styles_1.BTN_COLOURS.PRIMARY.TEXT, styles_1.BTN_COLOURS.PRIMARY.TEXT, styles_1.BTN_COLOURS.PRIMARY.TEXT);
|
|
15
|
+
exports.RightIconWrapper = styled_1.default.div(templateObject_2 || (templateObject_2 = __makeTemplateObject(["\n margin-left: auto;\n display: flex;\n align-items: center;\n"], ["\n margin-left: auto;\n display: flex;\n align-items: center;\n"])));
|
|
16
|
+
exports.LeftIconWrapper = styled_1.default.div(templateObject_3 || (templateObject_3 = __makeTemplateObject(["\n width: 20px;\n display: flex;\n justify-content: center;\n align-items: center;\n"], ["\n width: 20px;\n display: flex;\n justify-content: center;\n align-items: center;\n"])));
|
|
17
|
+
exports.TextWrapper = styled_1.default.span(templateObject_4 || (templateObject_4 = __makeTemplateObject(["\n flex: 1;\n padding: 0.2rem 0.3rem;\n"], ["\n flex: 1;\n padding: 0.2rem 0.3rem;\n"])));
|
|
18
|
+
var rootStyles = (0, react_1.css)(templateObject_5 || (templateObject_5 = __makeTemplateObject(["\n display: flex;\n align-items: center;\n align-content: center;\n gap: 0.25rem;\n padding: 6px 10px;\n border: 0;\n font-size: 0.9rem;\n background: none;\n border-radius: 6px;\n cursor: pointer;\n\n &[disabled]:hover {\n background: none;\n cursor: not-allowed;\n }\n\n &[disabled]:hover > div > svg {\n color: ", ";\n }\n\n &[data-open],\n &:hover {\n background: ", ";\n color: ", ";\n }\n\n &[data-open] > div > svg,\n &:focus > div > svg,\n &:hover > div > svg {\n color: ", ";\n }\n\n &[data-open] > svg,\n &:hover > svg {\n color: ", ";\n }\n"], ["\n display: flex;\n align-items: center;\n align-content: center;\n gap: 0.25rem;\n padding: 6px 10px;\n border: 0;\n font-size: 0.9rem;\n background: none;\n border-radius: 6px;\n cursor: pointer;\n\n &[disabled]:hover {\n background: none;\n cursor: not-allowed;\n }\n\n &[disabled]:hover > div > svg {\n color: ", ";\n }\n\n &[data-open],\n &:hover {\n background: ", ";\n color: ", ";\n }\n\n &[data-open] > div > svg,\n &:focus > div > svg,\n &:hover > div > svg {\n color: ", ";\n }\n\n &[data-open] > svg,\n &:hover > svg {\n color: ", ";\n }\n"])), styles_1.BTN_COLOURS.PRIMARY.DISABLED, styles_1.BTN_COLOURS.PRIMARY.HOVER, styles_1.BTN_COLOURS.PRIMARY.TEXT, styles_1.BTN_COLOURS.PRIMARY.TEXT, styles_1.BTN_COLOURS.PRIMARY.TEXT);
|
|
19
|
+
exports.StyledRootMenu = styled_1.default.button(templateObject_6 || (templateObject_6 = __makeTemplateObject(["\n ", "\n"], ["\n ", "\n"])), function (_a) {
|
|
20
|
+
var isNested = _a.isNested;
|
|
21
|
+
return (isNested ? nestedStyles : rootStyles);
|
|
22
|
+
});
|
|
23
|
+
exports.StyledMenu = styled_1.default.div(templateObject_7 || (templateObject_7 = __makeTemplateObject(["\n background: rgba(255, 255, 255, 0.8);\n -webkit-backdrop-filter: blur(10px);\n backdrop-filter: blur(10px);\n box-shadow: 2px 4px 12px rgba(0, 0, 0, 0.1), 0 0 0 1px rgba(0, 0, 0, 0.1);\n outline: 0;\n z-index: ", ";\n"], ["\n background: rgba(255, 255, 255, 0.8);\n -webkit-backdrop-filter: blur(10px);\n backdrop-filter: blur(10px);\n box-shadow: 2px 4px 12px rgba(0, 0, 0, 0.1), 0 0 0 1px rgba(0, 0, 0, 0.1);\n outline: 0;\n z-index: ", ";\n"])), (0, styles_1.getZIndex)(styles_1.PopUp));
|
|
24
|
+
exports.StyledMenuItem = styled_1.default.button(templateObject_8 || (templateObject_8 = __makeTemplateObject(["\n ", "\n"], ["\n ", "\n"])), nestedStyles);
|
|
25
|
+
var templateObject_1, templateObject_2, templateObject_3, templateObject_4, templateObject_5, templateObject_6, templateObject_7, templateObject_8;
|
|
26
|
+
//# sourceMappingURL=menu.style.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"menu.style.js","sourceRoot":"","sources":["../../src/molecules/menu.style.tsx"],"names":[],"mappings":";;;;;;;;;;AAAA,wCAAoC;AACpC,2DAAoC;AACpC,6CAAkE;AAElE,IAAM,YAAY,OAAG,WAAG,y3BAAA,+OAcN,EAAyB,gBAC9B,EAAwB,oFAInB,EAAyB,gBAC9B,EAAwB,iEAInB,EAAyB,gBAC9B,EAAwB,sHAQxB,EAAwB,wEAIxB,EAAwB,mLAcpC,KArCiB,oBAAW,CAAC,OAAO,CAAC,KAAK,EAC9B,oBAAW,CAAC,OAAO,CAAC,IAAI,EAInB,oBAAW,CAAC,OAAO,CAAC,KAAK,EAC9B,oBAAW,CAAC,OAAO,CAAC,IAAI,EAInB,oBAAW,CAAC,OAAO,CAAC,KAAK,EAC9B,oBAAW,CAAC,OAAO,CAAC,IAAI,EAQxB,oBAAW,CAAC,OAAO,CAAC,IAAI,EAIxB,oBAAW,CAAC,OAAO,CAAC,IAAI,CAcpC,CAAA;AAEY,QAAA,gBAAgB,GAAG,gBAAM,CAAC,GAAG,uIAAA,oEAIzC,KAAA;AAEY,QAAA,eAAe,GAAG,gBAAM,CAAC,GAAG,6JAAA,0FAKxC,KAAA;AAEY,QAAA,WAAW,GAAG,gBAAM,CAAC,IAAI,8GAAA,2CAGrC,KAAA;AAED,IAAM,UAAU,OAAG,WAAG,0pBAAA,kVAkBT,EAA4B,0DAKvB,EAAyB,gBAC9B,EAAwB,qGAMxB,EAAwB,iEAKxB,EAAwB,UAEpC,KAnBY,oBAAW,CAAC,OAAO,CAAC,QAAQ,EAKvB,oBAAW,CAAC,OAAO,CAAC,KAAK,EAC9B,oBAAW,CAAC,OAAO,CAAC,IAAI,EAMxB,oBAAW,CAAC,OAAO,CAAC,IAAI,EAKxB,oBAAW,CAAC,OAAO,CAAC,IAAI,CAEpC,CAAA;AAEY,QAAA,cAAc,GAAG,gBAAM,CAAC,MAAM,+EAAwB,MAC/D,EAAwD,IAC3D,KADG,UAAC,EAAY;QAAV,QAAQ,cAAA;IAAO,OAAA,CAAC,QAAQ,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,UAAU,CAAC;AAAtC,CAAsC,EAC3D;AAEY,QAAA,UAAU,GAAG,gBAAM,CAAC,GAAG,uSAAA,6NAMvB,EAAgB,KAC5B,KADY,IAAA,kBAAS,EAAC,cAAK,CAAC,EAC5B;AAEY,QAAA,cAAc,GAAG,gBAAM,CAAC,MAAM,+EAAA,MACvC,EAAY,IACf,KADG,YAAY,EACf"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@ltht-react/menu",
|
|
3
|
-
"version": "2.0.
|
|
3
|
+
"version": "2.0.202",
|
|
4
4
|
"description": "ltht-react styled Menu component.",
|
|
5
5
|
"author": "LTHT",
|
|
6
6
|
"homepage": "",
|
|
@@ -29,12 +29,12 @@
|
|
|
29
29
|
"@emotion/react": "^11.0.0",
|
|
30
30
|
"@emotion/styled": "^11.0.0",
|
|
31
31
|
"@floating-ui/react": "^0.27.15",
|
|
32
|
-
"@ltht-react/button": "^2.0.
|
|
33
|
-
"@ltht-react/hooks": "^2.0.
|
|
34
|
-
"@ltht-react/icon": "^2.0.
|
|
35
|
-
"@ltht-react/styles": "^2.0.
|
|
36
|
-
"@ltht-react/utils": "^2.0.
|
|
32
|
+
"@ltht-react/button": "^2.0.202",
|
|
33
|
+
"@ltht-react/hooks": "^2.0.202",
|
|
34
|
+
"@ltht-react/icon": "^2.0.202",
|
|
35
|
+
"@ltht-react/styles": "^2.0.202",
|
|
36
|
+
"@ltht-react/utils": "^2.0.202",
|
|
37
37
|
"react": "^18.2.0"
|
|
38
38
|
},
|
|
39
|
-
"gitHead": "
|
|
39
|
+
"gitHead": "fefbde68a30c94b8743e051c2c57dd27d082913c"
|
|
40
40
|
}
|