@ltht-react/menu 2.0.144 → 2.0.145

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 ADDED
@@ -0,0 +1,3 @@
1
+ import ActionMenu, { ActionMenuOption } from './molecules/action-menu';
2
+ export default ActionMenu;
3
+ export { ActionMenuOption };
package/lib/index.js ADDED
@@ -0,0 +1,8 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ var action_menu_1 = __importDefault(require("./molecules/action-menu"));
7
+ exports.default = action_menu_1.default;
8
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.tsx"],"names":[],"mappings":";;;;;AAAA,wEAAsE;AAEtE,kBAAe,qBAAU,CAAA"}
@@ -0,0 +1,27 @@
1
+ import { ButtonProps } from '@ltht-react/button/lib/atoms/button';
2
+ import { IconProps } from '@ltht-react/icon';
3
+ import { FC, HTMLAttributes } from 'react';
4
+ declare const ActionMenu: FC<IProps>;
5
+ interface IProps extends HTMLAttributes<HTMLButtonElement> {
6
+ actions: ActionMenuOption[];
7
+ menuButtonOptions?: IconButtonMenuProps | ButtonMenuProps;
8
+ popupStyle?: React.CSSProperties;
9
+ popupPlacement?: 'bottom-start' | 'right-start';
10
+ }
11
+ interface IconButtonMenuProps {
12
+ type: 'icon';
13
+ iconProps: IconProps;
14
+ text?: string;
15
+ }
16
+ interface ButtonMenuProps {
17
+ type: 'button';
18
+ buttonProps: ButtonProps;
19
+ text: string;
20
+ }
21
+ export interface ActionMenuOption {
22
+ text: string;
23
+ clickHandler: () => void;
24
+ leftIcon?: IconProps;
25
+ rightIcon?: IconProps;
26
+ }
27
+ export default ActionMenu;
@@ -0,0 +1,124 @@
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 __assign = (this && this.__assign) || function () {
7
+ __assign = Object.assign || function(t) {
8
+ for (var s, i = 1, n = arguments.length; i < n; i++) {
9
+ s = arguments[i];
10
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
11
+ t[p] = s[p];
12
+ }
13
+ return t;
14
+ };
15
+ return __assign.apply(this, arguments);
16
+ };
17
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
18
+ if (k2 === undefined) k2 = k;
19
+ var desc = Object.getOwnPropertyDescriptor(m, k);
20
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
21
+ desc = { enumerable: true, get: function() { return m[k]; } };
22
+ }
23
+ Object.defineProperty(o, k2, desc);
24
+ }) : (function(o, m, k, k2) {
25
+ if (k2 === undefined) k2 = k;
26
+ o[k2] = m[k];
27
+ }));
28
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
29
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
30
+ }) : function(o, v) {
31
+ o["default"] = v;
32
+ });
33
+ var __importStar = (this && this.__importStar) || function (mod) {
34
+ if (mod && mod.__esModule) return mod;
35
+ var result = {};
36
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
37
+ __setModuleDefault(result, mod);
38
+ return result;
39
+ };
40
+ var __rest = (this && this.__rest) || function (s, e) {
41
+ var t = {};
42
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
43
+ t[p] = s[p];
44
+ if (s != null && typeof Object.getOwnPropertySymbols === "function")
45
+ for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
46
+ if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
47
+ t[p[i]] = s[p[i]];
48
+ }
49
+ return t;
50
+ };
51
+ var __importDefault = (this && this.__importDefault) || function (mod) {
52
+ return (mod && mod.__esModule) ? mod : { "default": mod };
53
+ };
54
+ Object.defineProperty(exports, "__esModule", { value: true });
55
+ var jsx_runtime_1 = require("react/jsx-runtime");
56
+ var styled_1 = __importDefault(require("@emotion/styled"));
57
+ var button_1 = __importDefault(require("@ltht-react/button/lib/atoms/button"));
58
+ var icon_1 = __importStar(require("@ltht-react/icon"));
59
+ var styles_1 = require("@ltht-react/styles");
60
+ var focus_trap_react_1 = __importDefault(require("focus-trap-react"));
61
+ var react_1 = require("react");
62
+ var react_popper_1 = require("react-popper");
63
+ var defaultMenuButtonProps = {
64
+ type: 'icon',
65
+ iconProps: {
66
+ type: 'ellipsis-vertical',
67
+ size: 'large',
68
+ },
69
+ };
70
+ var StyledUnorderedList = styled_1.default.ul(templateObject_1 || (templateObject_1 = __makeTemplateObject(["\n ", "\n list-style-type: none;\n padding: 0;\n margin: 0;\n"], ["\n ", "\n list-style-type: none;\n padding: 0;\n margin: 0;\n"])), styles_1.CSS_RESET);
71
+ var StyledListItem = styled_1.default.li(templateObject_2 || (templateObject_2 = __makeTemplateObject(["\n ", "\n background-color: 'white';\n padding: 0.5rem;\n line-height: 1em;\n display: flex;\n border-radius: 4px;\n\n &:hover {\n background: ", ";\n cursor: pointer;\n color: white;\n }\n"], ["\n ", "\n background-color: 'white';\n padding: 0.5rem;\n line-height: 1em;\n display: flex;\n border-radius: 4px;\n\n &:hover {\n background: ", ";\n cursor: pointer;\n color: white;\n }\n"])), styles_1.CSS_RESET, styles_1.BTN_COLOURS.PRIMARY.VALUE);
72
+ var StyledListItemIcon = styled_1.default.div(templateObject_3 || (templateObject_3 = __makeTemplateObject(["\n flex-basis: 25%;\n"], ["\n flex-basis: 25%;\n"])));
73
+ var StyledListItemContent = styled_1.default.div(templateObject_4 || (templateObject_4 = __makeTemplateObject(["\n flex: 1;\n text-align: left;\n"], ["\n flex: 1;\n text-align: left;\n"])));
74
+ var StyledCard = styled_1.default.div(templateObject_5 || (templateObject_5 = __makeTemplateObject(["\n ", "\n display: inline-block;\n min-width: 10rem;\n z-index: 1;\n background: white;\n border-radius: 4px;\n box-shadow: 0px 1px 10px rgba(0, 0, 0, 0.04), 0px 4px 5px rgba(0, 0, 0, 0.06), 0px 2px 4px -1px rgba(0, 0, 0, 0.09);\n"], ["\n ", "\n display: inline-block;\n min-width: 10rem;\n z-index: 1;\n background: white;\n border-radius: 4px;\n box-shadow: 0px 1px 10px rgba(0, 0, 0, 0.04), 0px 4px 5px rgba(0, 0, 0, 0.06), 0px 2px 4px -1px rgba(0, 0, 0, 0.09);\n"])), styles_1.CSS_RESET);
75
+ var StyledRightIcon = (0, styled_1.default)(icon_1.default)(templateObject_6 || (templateObject_6 = __makeTemplateObject(["\n margin-right: 0.5rem;\n margin-left: 3rem;\n"], ["\n margin-right: 0.5rem;\n margin-left: 3rem;\n"])));
76
+ var StyledLeftIcon = (0, styled_1.default)(icon_1.default)(templateObject_7 || (templateObject_7 = __makeTemplateObject(["\n margin-right: 0.5rem;\n margin-left: 0.5rem;\n"], ["\n margin-right: 0.5rem;\n margin-left: 0.5rem;\n"])));
77
+ var StyledMenuButtonWrapper = styled_1.default.div(templateObject_8 || (templateObject_8 = __makeTemplateObject(["\n display: inline-block;\n"], ["\n display: inline-block;\n"])));
78
+ var ActionMenu = function (_a) {
79
+ var actions = _a.actions, _b = _a.menuButtonOptions, menuButtonOptions = _b === void 0 ? defaultMenuButtonProps : _b, _c = _a.id, id = _c === void 0 ? 'action-menu-button' : _c, _d = _a.popupStyle, popupStyle = _d === void 0 ? {} : _d, _e = _a.popupPlacement, popupPlacement = _e === void 0 ? 'bottom-start' : _e, rest = __rest(_a, ["actions", "menuButtonOptions", "id", "popupStyle", "popupPlacement"]);
80
+ var popperRef = (0, react_1.useRef)(null);
81
+ var _f = (0, react_1.useState)(null), popperElement = _f[0], setPopperElement = _f[1];
82
+ var _g = (0, react_1.useState)(null), containerElement = _g[0], setContainerElement = _g[1];
83
+ var popper = (0, react_popper_1.usePopper)(popperRef.current, popperElement, {
84
+ placement: popupPlacement,
85
+ strategy: 'fixed',
86
+ });
87
+ var closePopper = function () {
88
+ setShowMenu(false);
89
+ };
90
+ var _h = (0, react_1.useState)(false), showMenu = _h[0], setShowMenu = _h[1];
91
+ (0, react_1.useEffect)(function () {
92
+ var _a;
93
+ if ((_a = containerElement === null || containerElement === void 0 ? void 0 : containerElement.parentElement) === null || _a === void 0 ? void 0 : _a.style) {
94
+ containerElement.parentElement.style.zIndex = showMenu
95
+ ? "".concat((0, styles_1.getZIndex)(styles_1.PopUp))
96
+ : "".concat((0, styles_1.getZIndex)(styles_1.TableDataWithPopUp));
97
+ }
98
+ }, [containerElement, showMenu]);
99
+ var menuButtonClickHandler = function () {
100
+ setShowMenu(!showMenu);
101
+ };
102
+ return ((0, jsx_runtime_1.jsx)("div", { ref: setContainerElement, children: (0, jsx_runtime_1.jsx)(focus_trap_react_1.default, { active: showMenu, focusTrapOptions: {
103
+ tabbableOptions: {
104
+ displayCheck: 'none',
105
+ },
106
+ initialFocus: false,
107
+ allowOutsideClick: false,
108
+ clickOutsideDeactivates: true,
109
+ onDeactivate: closePopper,
110
+ }, children: (0, jsx_runtime_1.jsxs)(StyledMenuButtonWrapper, { ref: popperRef, children: [menuButtonOptions.type === 'icon' && ((0, jsx_runtime_1.jsx)(icon_1.IconButton, __assign({ iconProps: menuButtonOptions.iconProps, text: menuButtonOptions.text }, rest, { onClick: function (e) {
111
+ e.stopPropagation();
112
+ menuButtonClickHandler();
113
+ }, id: id, "data-testid": id }))), menuButtonOptions.type === 'button' && ((0, jsx_runtime_1.jsx)(button_1.default, __assign({}, menuButtonOptions.buttonProps, rest, { onClick: function (e) {
114
+ e.stopPropagation();
115
+ menuButtonClickHandler();
116
+ }, id: id, "data-testid": id, children: menuButtonOptions.text }))), showMenu && ((0, jsx_runtime_1.jsx)(StyledCard, __assign({ tabIndex: -1, ref: setPopperElement, style: __assign(__assign({}, popper.styles.popper), popupStyle) }, popper.attributes.popper, { children: (0, jsx_runtime_1.jsx)(StyledUnorderedList, { role: "menu", "aria-labelledby": id, children: actions.map(function (action, idx) { return ((0, jsx_runtime_1.jsxs)(StyledListItem, { role: "menuitem", onClick: function (e) {
117
+ e.stopPropagation();
118
+ menuButtonClickHandler();
119
+ action.clickHandler();
120
+ }, children: [(0, jsx_runtime_1.jsx)(StyledListItemIcon, { children: action.leftIcon && (0, jsx_runtime_1.jsx)(StyledLeftIcon, __assign({}, action.leftIcon)) }), (0, jsx_runtime_1.jsx)(StyledListItemContent, { children: action.text }), (0, jsx_runtime_1.jsx)(StyledListItemIcon, { children: action.rightIcon && (0, jsx_runtime_1.jsx)(StyledRightIcon, __assign({}, action.rightIcon)) })] }, "menu-action-".concat(idx))); }) }) })))] }) }) }));
121
+ };
122
+ exports.default = ActionMenu;
123
+ var templateObject_1, templateObject_2, templateObject_3, templateObject_4, templateObject_5, templateObject_6, templateObject_7, templateObject_8;
124
+ //# sourceMappingURL=action-menu.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"action-menu.js","sourceRoot":"","sources":["../../src/molecules/action-menu.tsx"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ltht-react/menu",
3
- "version": "2.0.144",
3
+ "version": "2.0.145",
4
4
  "description": "ltht-react styled Menu component.",
5
5
  "author": "LTHT",
6
6
  "homepage": "",
@@ -28,12 +28,12 @@
28
28
  "dependencies": {
29
29
  "@emotion/react": "^11.0.0",
30
30
  "@emotion/styled": "^11.0.0",
31
- "@ltht-react/button": "^2.0.144",
32
- "@ltht-react/icon": "^2.0.144",
33
- "@ltht-react/styles": "^2.0.144",
31
+ "@ltht-react/button": "^2.0.145",
32
+ "@ltht-react/icon": "^2.0.145",
33
+ "@ltht-react/styles": "^2.0.145",
34
34
  "focus-trap-react": "^10.0.0",
35
35
  "react": "^18.2.0",
36
36
  "react-popper": "^2.3.0"
37
37
  },
38
- "gitHead": "1697d516a201e1aa5d95bb7f112573fc14634486"
38
+ "gitHead": "5bda125de2960c7b452259706ee3aa6a5db7feb5"
39
39
  }