@dhis2-ui/menu 9.11.0 → 9.11.1-beta.2
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/build/cjs/flyout-menu/__tests__/flyout-menu.test.js +1 -15
- package/build/cjs/flyout-menu/features/accepts_children/index.js +0 -1
- package/build/cjs/flyout-menu/features/position/index.js +4 -4
- package/build/cjs/flyout-menu/features/toggles_submenus/index.js +0 -1
- package/build/cjs/flyout-menu/{flyout-menu.stories.e2e.js → flyout-menu.e2e.stories.js} +2 -20
- package/build/cjs/flyout-menu/flyout-menu.js +5 -23
- package/build/cjs/flyout-menu/{flyout-menu.stories.js → flyout-menu.prod.stories.js} +25 -37
- package/build/cjs/flyout-menu/index.js +0 -1
- package/build/cjs/index.js +0 -5
- package/build/cjs/menu/__tests__/menu.test.js +11 -50
- package/build/cjs/menu/features/accepts_children/index.js +0 -1
- package/build/cjs/menu/helpers.js +2 -10
- package/build/cjs/menu/index.js +0 -1
- package/build/cjs/menu/menu.e2e.stories.js +14 -0
- package/build/cjs/menu/menu.js +12 -20
- package/build/cjs/menu/{menu.stories.js → menu.prod.stories.js} +18 -17
- package/build/cjs/menu/use-menu.js +12 -20
- package/build/cjs/menu-divider/index.js +0 -1
- package/build/cjs/menu-divider/menu-divider.js +3 -11
- package/build/cjs/menu-divider/{menu-divider.stories.js → menu-divider.prod.stories.js} +11 -15
- package/build/cjs/menu-item/__tests__/menu-item.test.js +1 -5
- package/build/cjs/menu-item/features/accepts_href/index.js +1 -2
- package/build/cjs/menu-item/features/accepts_icon/index.js +0 -1
- package/build/cjs/menu-item/features/accepts_label/index.js +1 -2
- package/build/cjs/menu-item/features/accepts_suffix/index.js +0 -1
- package/build/cjs/menu-item/features/accepts_target/index.js +1 -2
- package/build/cjs/menu-item/features/is_clickable/index.js +0 -1
- package/build/cjs/menu-item/index.js +0 -1
- package/build/cjs/menu-item/{menu-item.stories.e2e.js → menu-item.e2e.stories.js} +2 -20
- package/build/cjs/menu-item/menu-item.js +11 -46
- package/build/cjs/menu-item/{menu-item.stories.js → menu-item.prod.stories.js} +22 -46
- package/build/cjs/menu-item/menu-item.styles.js +2 -5
- package/build/cjs/menu-section-header/features/accepts_label/index.js +1 -2
- package/build/cjs/menu-section-header/index.js +0 -1
- package/build/cjs/menu-section-header/{menu-section-header.stories.e2e.js → menu-section-header.e2e.stories.js} +2 -10
- package/build/cjs/menu-section-header/menu-section-header.js +3 -12
- package/build/cjs/menu-section-header/{menu-section-header.stories.js → menu-section-header.prod.stories.js} +11 -19
- package/build/es/flyout-menu/features/position/index.js +4 -3
- package/build/es/flyout-menu/{flyout-menu.stories.e2e.js → flyout-menu.e2e.stories.js} +0 -2
- package/build/es/flyout-menu/flyout-menu.js +2 -12
- package/build/es/flyout-menu/{flyout-menu.stories.js → flyout-menu.prod.stories.js} +25 -12
- package/build/es/menu/__tests__/menu.test.js +10 -8
- package/build/es/menu/helpers.js +2 -6
- package/build/es/menu/menu.e2e.stories.js +6 -0
- package/build/es/menu/menu.js +9 -9
- package/build/es/menu/{menu.stories.js → menu.prod.stories.js} +18 -1
- package/build/es/menu/use-menu.js +12 -16
- package/build/es/menu-divider/menu-divider.js +2 -4
- package/build/es/menu-divider/{menu-divider.stories.js → menu-divider.prod.stories.js} +7 -3
- package/build/es/menu-item/features/accepts_href/index.js +1 -1
- package/build/es/menu-item/features/accepts_label/index.js +1 -1
- package/build/es/menu-item/features/accepts_target/index.js +1 -1
- package/build/es/menu-item/menu-item.js +8 -31
- package/build/es/menu-item/{menu-item.stories.js → menu-item.prod.stories.js} +14 -9
- package/build/es/menu-item/menu-item.styles.js +1 -1
- package/build/es/menu-section-header/features/accepts_label/index.js +1 -1
- package/build/es/menu-section-header/menu-section-header.js +2 -4
- package/build/es/menu-section-header/{menu-section-header.stories.js → menu-section-header.prod.stories.js} +7 -3
- package/package.json +11 -11
- package/build/cjs/menu/menu.stories.e2e.js +0 -11
- package/build/es/menu/menu.stories.e2e.js +0 -4
- /package/build/es/menu-item/{menu-item.stories.e2e.js → menu-item.e2e.stories.js} +0 -0
- /package/build/es/menu-section-header/{menu-section-header.stories.e2e.js → menu-section-header.e2e.stories.js} +0 -0
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.default = exports.WithChildren = void 0;
|
|
7
|
+
var _react = _interopRequireDefault(require("react"));
|
|
8
|
+
var _index = require("./index.js");
|
|
9
|
+
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
|
|
10
|
+
var _default = exports.default = {
|
|
11
|
+
title: 'Menu'
|
|
12
|
+
};
|
|
13
|
+
const WithChildren = () => /*#__PURE__*/_react.default.createElement(_index.Menu, null, "I am a child");
|
|
14
|
+
exports.WithChildren = WithChildren;
|
package/build/cjs/menu/menu.js
CHANGED
|
@@ -4,23 +4,14 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
6
|
exports.Menu = void 0;
|
|
7
|
-
|
|
8
7
|
var _style = _interopRequireDefault(require("styled-jsx/style"));
|
|
9
|
-
|
|
10
8
|
var _propTypes = _interopRequireDefault(require("prop-types"));
|
|
11
|
-
|
|
12
9
|
var _react = _interopRequireWildcard(require("react"));
|
|
13
|
-
|
|
14
10
|
var _helpers = require("./helpers.js");
|
|
15
|
-
|
|
16
11
|
var _useMenu = require("./use-menu.js");
|
|
17
|
-
|
|
18
|
-
function
|
|
19
|
-
|
|
20
|
-
function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
|
|
21
|
-
|
|
22
|
-
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
23
|
-
|
|
12
|
+
function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function (e) { return e ? t : r; })(e); }
|
|
13
|
+
function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
|
|
14
|
+
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
|
|
24
15
|
const Menu = _ref => {
|
|
25
16
|
let {
|
|
26
17
|
children,
|
|
@@ -36,18 +27,20 @@ const Menu = _ref => {
|
|
|
36
27
|
if (! /*#__PURE__*/(0, _react.isValidElement)(child)) {
|
|
37
28
|
return child;
|
|
38
29
|
}
|
|
39
|
-
|
|
40
30
|
const tabIndex = index === focusedIndex ? 0 : -1;
|
|
41
|
-
const childProps = {
|
|
42
|
-
|
|
31
|
+
const childProps = {
|
|
32
|
+
...child.props
|
|
33
|
+
};
|
|
34
|
+
|
|
35
|
+
// this check is based on the type of child.
|
|
43
36
|
// if it is a native HTML element, like li, a, span, only apply its child props
|
|
44
37
|
// if it is a functional (React) component, it applies custom props, like dense, hideDivider, etc
|
|
45
|
-
|
|
46
38
|
if (typeof child.type === 'string') {
|
|
47
39
|
// if the native HTML element child is not li, then wrap it in an li tag
|
|
48
40
|
// apply the tabindex prop if a child has the menuitem role to make it focusable
|
|
49
41
|
if (child.type === 'li') {
|
|
50
|
-
return (0, _helpers.hasMenuItemRole)(child.props.children[0]) ? /*#__PURE__*/(0, _react.cloneElement)(child, {
|
|
42
|
+
return (0, _helpers.hasMenuItemRole)(child.props.children[0]) ? /*#__PURE__*/(0, _react.cloneElement)(child, {
|
|
43
|
+
...childProps,
|
|
51
44
|
tabIndex
|
|
52
45
|
}) : /*#__PURE__*/(0, _react.cloneElement)(child, childProps);
|
|
53
46
|
} else {
|
|
@@ -58,7 +51,8 @@ const Menu = _ref => {
|
|
|
58
51
|
} else {
|
|
59
52
|
childProps.dense = typeof child.props.dense === 'boolean' ? child.props.dense : dense;
|
|
60
53
|
childProps.hideDivider = typeof child.props.hideDivider !== 'boolean' && index === 0 ? true : child.props.hideDivider;
|
|
61
|
-
return /*#__PURE__*/(0, _react.cloneElement)(child, {
|
|
54
|
+
return /*#__PURE__*/(0, _react.cloneElement)(child, {
|
|
55
|
+
...childProps,
|
|
62
56
|
tabIndex
|
|
63
57
|
});
|
|
64
58
|
}
|
|
@@ -73,7 +67,6 @@ const Menu = _ref => {
|
|
|
73
67
|
id: "1636612837"
|
|
74
68
|
}, ["ul.jsx-1636612837{display:block;position:relative;width:100%;margin:0;padding:0;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;}"]));
|
|
75
69
|
};
|
|
76
|
-
|
|
77
70
|
exports.Menu = Menu;
|
|
78
71
|
Menu.defaultProps = {
|
|
79
72
|
dataTest: 'dhis2-uicore-menulist'
|
|
@@ -83,7 +76,6 @@ Menu.propTypes = {
|
|
|
83
76
|
children: _propTypes.default.node,
|
|
84
77
|
className: _propTypes.default.string,
|
|
85
78
|
dataTest: _propTypes.default.string,
|
|
86
|
-
|
|
87
79
|
/** Applies `dense` property to all child components unless already specified */
|
|
88
80
|
dense: _propTypes.default.bool
|
|
89
81
|
};
|
|
@@ -4,17 +4,29 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
6
|
exports.default = exports.SideBarMenuRTL = exports.SideBarMenu = exports.Dense = exports.Default = exports.AutoHideFirstSectionHeaderDivider = void 0;
|
|
7
|
-
|
|
8
7
|
var _react = _interopRequireDefault(require("react"));
|
|
9
|
-
|
|
10
8
|
var _index = require("../index.js");
|
|
11
|
-
|
|
12
9
|
var _index2 = require("./index.js");
|
|
10
|
+
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
|
|
11
|
+
const description = `
|
|
12
|
+
Use menus to provide access to options and actions where space is limited and displaying all the options would be impractical. For example, providing access to a range of actions for every dashboard item displayed. Containing all those actions in menus keeps the page manageable.
|
|
13
|
+
|
|
14
|
+
The menu component is flexible in where it can be used and its contents can be flexible too. However, the most common use case is a menu containing menu items.
|
|
13
15
|
|
|
14
|
-
|
|
16
|
+
Make sure the menu item labels are short and easy to understand. One word is often enough to describe an action or option. Do not use sentences as labels. Some examples of good menu item labels:
|
|
15
17
|
|
|
16
|
-
|
|
17
|
-
|
|
18
|
+
- "Save"
|
|
19
|
+
- "Open as map"
|
|
20
|
+
- "Export PDF"
|
|
21
|
+
- "Duplicate"
|
|
22
|
+
|
|
23
|
+
Typical children are Menu Items, Menu Dividers, and Menu Section Headers.
|
|
24
|
+
|
|
25
|
+
\`\`\`js
|
|
26
|
+
import { Menu } from '@dhis2/ui'
|
|
27
|
+
\`\`\`
|
|
28
|
+
`;
|
|
29
|
+
var _default = exports.default = {
|
|
18
30
|
title: 'Menu',
|
|
19
31
|
component: _index2.Menu,
|
|
20
32
|
parameters: {
|
|
@@ -25,22 +37,17 @@ var _default = {
|
|
|
25
37
|
}
|
|
26
38
|
}
|
|
27
39
|
};
|
|
28
|
-
exports.default = _default;
|
|
29
|
-
|
|
30
40
|
const Default = args => /*#__PURE__*/_react.default.createElement(_index2.Menu, args, /*#__PURE__*/_react.default.createElement(_index.MenuItem, {
|
|
31
41
|
label: "Menu item"
|
|
32
42
|
}), /*#__PURE__*/_react.default.createElement(_index.MenuItem, {
|
|
33
43
|
label: "Menu item"
|
|
34
44
|
}));
|
|
35
|
-
|
|
36
45
|
exports.Default = Default;
|
|
37
|
-
|
|
38
46
|
const Dense = args => /*#__PURE__*/_react.default.createElement(_index2.Menu, args, /*#__PURE__*/_react.default.createElement(_index.MenuItem, {
|
|
39
47
|
label: "Menu item"
|
|
40
48
|
}), /*#__PURE__*/_react.default.createElement(_index.MenuItem, {
|
|
41
49
|
label: "Menu item"
|
|
42
50
|
}));
|
|
43
|
-
|
|
44
51
|
exports.Dense = Dense;
|
|
45
52
|
Dense.args = {
|
|
46
53
|
dense: true
|
|
@@ -52,15 +59,12 @@ Dense.parameters = {
|
|
|
52
59
|
}
|
|
53
60
|
}
|
|
54
61
|
};
|
|
55
|
-
|
|
56
62
|
const AutoHideFirstSectionHeaderDivider = args => /*#__PURE__*/_react.default.createElement(_index2.Menu, args, /*#__PURE__*/_react.default.createElement(_index.MenuSectionHeader, {
|
|
57
63
|
label: "First - no divider above"
|
|
58
64
|
}), /*#__PURE__*/_react.default.createElement(_index.MenuSectionHeader, {
|
|
59
65
|
label: "Second - with divider above"
|
|
60
66
|
}));
|
|
61
|
-
|
|
62
67
|
exports.AutoHideFirstSectionHeaderDivider = AutoHideFirstSectionHeaderDivider;
|
|
63
|
-
|
|
64
68
|
const SideBarMenu = args => /*#__PURE__*/_react.default.createElement("main", {
|
|
65
69
|
style: {
|
|
66
70
|
display: 'flex',
|
|
@@ -85,14 +89,11 @@ const SideBarMenu = args => /*#__PURE__*/_react.default.createElement("main", {
|
|
|
85
89
|
borderInlineStart: '1px solid grey'
|
|
86
90
|
}
|
|
87
91
|
}, "Main content"));
|
|
88
|
-
|
|
89
92
|
exports.SideBarMenu = SideBarMenu;
|
|
90
|
-
|
|
91
93
|
const SideBarMenuRTL = args => /*#__PURE__*/_react.default.createElement("div", {
|
|
92
94
|
dir: "rtl",
|
|
93
95
|
style: {
|
|
94
96
|
height: '100%'
|
|
95
97
|
}
|
|
96
98
|
}, /*#__PURE__*/_react.default.createElement(SideBarMenu, args));
|
|
97
|
-
|
|
98
99
|
exports.SideBarMenuRTL = SideBarMenuRTL;
|
|
@@ -4,25 +4,24 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
6
|
exports.useMenuNavigation = void 0;
|
|
7
|
-
|
|
8
7
|
var _react = require("react");
|
|
9
|
-
|
|
10
8
|
var _helpers = require("./helpers.js");
|
|
11
|
-
|
|
12
9
|
const useMenuNavigation = children => {
|
|
13
10
|
const menuRef = (0, _react.useRef)(null);
|
|
14
11
|
const [focusableItemsIndices, setFocusableItemsIndices] = (0, _react.useState)(null);
|
|
15
|
-
const [activeItemIndex, setActiveItemIndex] = (0, _react.useState)(-1);
|
|
16
|
-
// focusable items have the role of menuitem || menuitemcheckbox || menuitemradio
|
|
12
|
+
const [activeItemIndex, setActiveItemIndex] = (0, _react.useState)(-1);
|
|
17
13
|
|
|
14
|
+
// Initializes the indices for focusable items
|
|
15
|
+
// focusable items have the role of menuitem || menuitemcheckbox || menuitemradio
|
|
18
16
|
(0, _react.useEffect)(() => {
|
|
19
17
|
if (menuRef) {
|
|
20
18
|
const menuItems = Array.from(menuRef.current.children);
|
|
21
19
|
const itemsIndices = (0, _helpers.getFocusableItemsIndices)(menuItems);
|
|
22
20
|
setFocusableItemsIndices(itemsIndices);
|
|
23
21
|
}
|
|
24
|
-
}, [children]);
|
|
22
|
+
}, [children]);
|
|
25
23
|
|
|
24
|
+
// Focus the active menu child
|
|
26
25
|
(0, _react.useEffect)(() => {
|
|
27
26
|
if (menuRef) {
|
|
28
27
|
if (focusableItemsIndices !== null && focusableItemsIndices !== void 0 && focusableItemsIndices.length && activeItemIndex > -1) {
|
|
@@ -30,50 +29,45 @@ const useMenuNavigation = children => {
|
|
|
30
29
|
menuRef.current.children[currentIndex].focus();
|
|
31
30
|
}
|
|
32
31
|
}
|
|
33
|
-
}, [activeItemIndex, focusableItemsIndices]);
|
|
34
|
-
// Trigger actionable items
|
|
32
|
+
}, [activeItemIndex, focusableItemsIndices]);
|
|
35
33
|
|
|
34
|
+
// Navigate through focusable children using arrow keys
|
|
35
|
+
// Trigger actionable items
|
|
36
36
|
const handleKeyDown = (0, _react.useCallback)(event => {
|
|
37
37
|
const totalFocusablePositions = focusableItemsIndices === null || focusableItemsIndices === void 0 ? void 0 : focusableItemsIndices.length;
|
|
38
|
-
|
|
39
38
|
if (totalFocusablePositions) {
|
|
40
39
|
const lastIndex = totalFocusablePositions - 1;
|
|
41
|
-
|
|
42
40
|
switch (event.key) {
|
|
43
41
|
case 'ArrowUp':
|
|
44
42
|
event.preventDefault();
|
|
45
43
|
setActiveItemIndex(activeItemIndex > 0 ? activeItemIndex - 1 : lastIndex);
|
|
46
44
|
break;
|
|
47
|
-
|
|
48
45
|
case 'ArrowDown':
|
|
49
46
|
event.preventDefault();
|
|
50
47
|
setActiveItemIndex(activeItemIndex >= lastIndex ? 0 : activeItemIndex + 1);
|
|
51
48
|
break;
|
|
52
|
-
|
|
53
49
|
case 'Enter':
|
|
54
50
|
case ' ':
|
|
55
51
|
if (event.target.nodeName === 'LI') {
|
|
56
52
|
var _event$target$childre, _event$target$childre2;
|
|
57
|
-
|
|
58
53
|
event.preventDefault();
|
|
59
54
|
(_event$target$childre = event.target.children) === null || _event$target$childre === void 0 ? void 0 : (_event$target$childre2 = _event$target$childre[0]) === null || _event$target$childre2 === void 0 ? void 0 : _event$target$childre2.click();
|
|
60
55
|
}
|
|
61
|
-
|
|
62
56
|
break;
|
|
63
|
-
|
|
64
57
|
default:
|
|
65
58
|
break;
|
|
66
59
|
}
|
|
67
60
|
}
|
|
68
|
-
}, [activeItemIndex, focusableItemsIndices === null || focusableItemsIndices === void 0 ? void 0 : focusableItemsIndices.length]);
|
|
61
|
+
}, [activeItemIndex, focusableItemsIndices === null || focusableItemsIndices === void 0 ? void 0 : focusableItemsIndices.length]);
|
|
69
62
|
|
|
63
|
+
// Event listeners for menu focus and key handling
|
|
70
64
|
(0, _react.useEffect)(() => {
|
|
71
65
|
if (!menuRef) {
|
|
72
66
|
return;
|
|
73
67
|
}
|
|
68
|
+
const menu = menuRef.current;
|
|
74
69
|
|
|
75
|
-
|
|
76
|
-
|
|
70
|
+
// Focus the first menu item when the menu receives focus
|
|
77
71
|
const handleFocus = event => {
|
|
78
72
|
if (event.target === menuRef.current) {
|
|
79
73
|
const firstItemIndex = focusableItemsIndices === null || focusableItemsIndices === void 0 ? void 0 : focusableItemsIndices[0];
|
|
@@ -81,7 +75,6 @@ const useMenuNavigation = children => {
|
|
|
81
75
|
setActiveItemIndex(0);
|
|
82
76
|
}
|
|
83
77
|
};
|
|
84
|
-
|
|
85
78
|
menu.addEventListener('focus', handleFocus);
|
|
86
79
|
menu.addEventListener('keydown', handleKeyDown);
|
|
87
80
|
return () => {
|
|
@@ -94,5 +87,4 @@ const useMenuNavigation = children => {
|
|
|
94
87
|
focusedIndex: focusableItemsIndices === null || focusableItemsIndices === void 0 ? void 0 : focusableItemsIndices[activeItemIndex]
|
|
95
88
|
};
|
|
96
89
|
};
|
|
97
|
-
|
|
98
90
|
exports.useMenuNavigation = useMenuNavigation;
|
|
@@ -4,19 +4,12 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
6
|
exports.MenuDivider = void 0;
|
|
7
|
-
|
|
8
7
|
var _style = _interopRequireDefault(require("styled-jsx/style"));
|
|
9
|
-
|
|
10
|
-
var _divider = require("@dhis2-ui/divider");
|
|
11
|
-
|
|
12
8
|
var _uiConstants = require("@dhis2/ui-constants");
|
|
13
|
-
|
|
9
|
+
var _divider = require("@dhis2-ui/divider");
|
|
14
10
|
var _propTypes = _interopRequireDefault(require("prop-types"));
|
|
15
|
-
|
|
16
11
|
var _react = _interopRequireDefault(require("react"));
|
|
17
|
-
|
|
18
|
-
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
19
|
-
|
|
12
|
+
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
|
|
20
13
|
const MenuDivider = _ref => {
|
|
21
14
|
let {
|
|
22
15
|
className,
|
|
@@ -31,9 +24,8 @@ const MenuDivider = _ref => {
|
|
|
31
24
|
}), /*#__PURE__*/_react.default.createElement(_style.default, {
|
|
32
25
|
id: "591815244",
|
|
33
26
|
dynamic: [_uiConstants.colors.white]
|
|
34
|
-
}, [
|
|
27
|
+
}, [`li.__jsx-style-dynamic-selector{list-style:none;background-color:${_uiConstants.colors.white};-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;padding:0;line-height:0;}`]));
|
|
35
28
|
};
|
|
36
|
-
|
|
37
29
|
exports.MenuDivider = MenuDivider;
|
|
38
30
|
MenuDivider.defaultProps = {
|
|
39
31
|
dataTest: 'dhis2-uicore-menudivider'
|
|
@@ -4,17 +4,18 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
6
|
exports.default = exports.Dense = exports.Default = void 0;
|
|
7
|
-
|
|
8
7
|
var _react = _interopRequireDefault(require("react"));
|
|
9
|
-
|
|
10
8
|
var _index = require("../index.js");
|
|
11
|
-
|
|
12
9
|
var _menuDivider = require("./menu-divider.js");
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
10
|
+
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
|
|
11
|
+
const description = `
|
|
12
|
+
Items in a menu can be split into separate sections by using dividers. Group relevant menu items together to help the user understand the options quickly. A divider can be used alone. If using a MenuSectionHeader, a divider will be automatically included. Try not to group single menu items together. An exception to this is a critical destructive menu item, like 'Delete', which can be separated from other menu items.
|
|
13
|
+
|
|
14
|
+
\`\`\`js
|
|
15
|
+
import { MenuDivider } from '@dhis2/ui'
|
|
16
|
+
\`\`\`
|
|
17
|
+
`;
|
|
18
|
+
var _default = exports.default = {
|
|
18
19
|
title: 'Menu Divider',
|
|
19
20
|
component: _menuDivider.MenuDivider,
|
|
20
21
|
parameters: {
|
|
@@ -25,18 +26,13 @@ var _default = {
|
|
|
25
26
|
}
|
|
26
27
|
}
|
|
27
28
|
};
|
|
28
|
-
exports.default = _default;
|
|
29
|
-
|
|
30
29
|
const Template = args => /*#__PURE__*/_react.default.createElement(_index.Menu, null, /*#__PURE__*/_react.default.createElement(_index.MenuItem, {
|
|
31
30
|
label: "Item above divider"
|
|
32
31
|
}), /*#__PURE__*/_react.default.createElement(_menuDivider.MenuDivider, args), /*#__PURE__*/_react.default.createElement(_index.MenuItem, {
|
|
33
32
|
label: "Item below divider"
|
|
34
33
|
}));
|
|
35
|
-
|
|
36
|
-
const
|
|
37
|
-
exports.Default = Default;
|
|
38
|
-
const Dense = Template.bind({});
|
|
39
|
-
exports.Dense = Dense;
|
|
34
|
+
const Default = exports.Default = Template.bind({});
|
|
35
|
+
const Dense = exports.Dense = Template.bind({});
|
|
40
36
|
Dense.args = {
|
|
41
37
|
dense: true
|
|
42
38
|
};
|
|
@@ -1,13 +1,9 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
3
|
var _enzyme = require("enzyme");
|
|
4
|
-
|
|
5
4
|
var _react = _interopRequireDefault(require("react"));
|
|
6
|
-
|
|
7
5
|
var _menuItem = require("../menu-item.js");
|
|
8
|
-
|
|
9
|
-
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
10
|
-
|
|
6
|
+
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
|
|
11
7
|
describe('Menu Component', () => {
|
|
12
8
|
it('Default menu item has role', () => {
|
|
13
9
|
const menuItemDataTest = 'data-test-menu-item';
|
|
@@ -1,10 +1,9 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
3
|
var _cypressCucumberPreprocessor = require("@badeball/cypress-cucumber-preprocessor");
|
|
4
|
-
|
|
5
4
|
(0, _cypressCucumberPreprocessor.Given)('a MenuItem with href is rendered', () => {
|
|
6
5
|
cy.visitStory('MenuItem', 'With Href');
|
|
7
6
|
});
|
|
8
7
|
(0, _cypressCucumberPreprocessor.Then)('a link is rendered with the href', () => {
|
|
9
|
-
cy.get('a').should('have.attr', 'href').and('include', 'url.test');
|
|
8
|
+
cy.get('#storybook-root a').should('have.attr', 'href').and('include', 'url.test');
|
|
10
9
|
});
|
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
3
|
var _cypressCucumberPreprocessor = require("@badeball/cypress-cucumber-preprocessor");
|
|
4
|
-
|
|
5
4
|
(0, _cypressCucumberPreprocessor.Given)('a MenuItem supplied with an icon is rendered', () => {
|
|
6
5
|
cy.visitStory('MenuItem', 'With Icon');
|
|
7
6
|
cy.get('[data-test="dhis2-uicore-menuitem"]').should('be.visible');
|
|
@@ -1,11 +1,10 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
3
|
var _cypressCucumberPreprocessor = require("@badeball/cypress-cucumber-preprocessor");
|
|
4
|
-
|
|
5
4
|
(0, _cypressCucumberPreprocessor.Given)('a MenuItem supplied with a label is rendered', () => {
|
|
6
5
|
cy.visitStory('MenuItem', 'With Label');
|
|
7
6
|
cy.get('[data-test="dhis2-uicore-menuitem"]').should('be.visible');
|
|
8
7
|
});
|
|
9
8
|
(0, _cypressCucumberPreprocessor.Then)('the label is visible', () => {
|
|
10
|
-
cy.contains(
|
|
9
|
+
cy.get(':contains("label")').should('be.visible');
|
|
11
10
|
});
|
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
3
|
var _cypressCucumberPreprocessor = require("@badeball/cypress-cucumber-preprocessor");
|
|
4
|
-
|
|
5
4
|
(0, _cypressCucumberPreprocessor.Given)('a MenuItem supplied with a suffix is rendered', () => {
|
|
6
5
|
cy.visitStory('MenuItem', 'With Suffix');
|
|
7
6
|
cy.get('[data-test="dhis2-uicore-menuitem"]').should('be.visible');
|
|
@@ -1,10 +1,9 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
3
|
var _cypressCucumberPreprocessor = require("@badeball/cypress-cucumber-preprocessor");
|
|
4
|
-
|
|
5
4
|
(0, _cypressCucumberPreprocessor.Given)('a MenuItem with target is rendered', () => {
|
|
6
5
|
cy.visitStory('MenuItem', 'With Target');
|
|
7
6
|
});
|
|
8
7
|
(0, _cypressCucumberPreprocessor.Then)('a link is rendered with the target', () => {
|
|
9
|
-
cy.get('a').should('have.attr', 'target').and('include', '_blank');
|
|
8
|
+
cy.get('#storybook-root a').should('have.attr', 'target').and('include', '_blank');
|
|
10
9
|
});
|
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
3
|
var _cypressCucumberPreprocessor = require("@badeball/cypress-cucumber-preprocessor");
|
|
4
|
-
|
|
5
4
|
(0, _cypressCucumberPreprocessor.Given)('a MenuItem with onClick handler and value is rendered', () => {
|
|
6
5
|
cy.visitStory('MenuItem', 'With On Click And Value');
|
|
7
6
|
});
|
|
@@ -4,62 +4,44 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
6
|
exports.default = exports.WithTarget = exports.WithSuffix = exports.WithOnClickAndValue = exports.WithLabel = exports.WithIcon = exports.WithHref = void 0;
|
|
7
|
-
|
|
8
7
|
var _react = _interopRequireDefault(require("react"));
|
|
9
|
-
|
|
10
8
|
var _index = require("../index.js");
|
|
11
|
-
|
|
12
9
|
var _menuItem = require("./menu-item.js");
|
|
13
|
-
|
|
14
|
-
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
15
|
-
|
|
10
|
+
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
|
|
16
11
|
window.onClick = window.Cypress && window.Cypress.cy.stub();
|
|
17
|
-
var _default = {
|
|
12
|
+
var _default = exports.default = {
|
|
18
13
|
title: 'MenuItem',
|
|
19
14
|
component: _menuItem.MenuItem,
|
|
20
15
|
decorators: [story => /*#__PURE__*/_react.default.createElement(_index.Menu, null, story())]
|
|
21
16
|
};
|
|
22
|
-
exports.default = _default;
|
|
23
|
-
|
|
24
17
|
const WithLabel = () => /*#__PURE__*/_react.default.createElement(_menuItem.MenuItem, {
|
|
25
18
|
label: "label"
|
|
26
19
|
});
|
|
27
|
-
|
|
28
20
|
exports.WithLabel = WithLabel;
|
|
29
|
-
|
|
30
21
|
const WithOnClickAndValue = () => /*#__PURE__*/_react.default.createElement(_menuItem.MenuItem, {
|
|
31
22
|
value: "Value",
|
|
32
23
|
onClick: window.onClick,
|
|
33
24
|
label: "Menu item"
|
|
34
25
|
});
|
|
35
|
-
|
|
36
26
|
exports.WithOnClickAndValue = WithOnClickAndValue;
|
|
37
|
-
|
|
38
27
|
const WithHref = () => /*#__PURE__*/_react.default.createElement(_menuItem.MenuItem, {
|
|
39
28
|
href: "url.test",
|
|
40
29
|
label: "Menu item"
|
|
41
30
|
});
|
|
42
|
-
|
|
43
31
|
exports.WithHref = WithHref;
|
|
44
|
-
|
|
45
32
|
const WithTarget = () => /*#__PURE__*/_react.default.createElement(_menuItem.MenuItem, {
|
|
46
33
|
href: "url.test",
|
|
47
34
|
target: "_blank",
|
|
48
35
|
label: "Menu item"
|
|
49
36
|
});
|
|
50
|
-
|
|
51
37
|
exports.WithTarget = WithTarget;
|
|
52
|
-
|
|
53
38
|
const WithIcon = () => /*#__PURE__*/_react.default.createElement(_menuItem.MenuItem, {
|
|
54
39
|
icon: /*#__PURE__*/_react.default.createElement("div", null, "Icon"),
|
|
55
40
|
label: "Menu item"
|
|
56
41
|
});
|
|
57
|
-
|
|
58
42
|
exports.WithIcon = WithIcon;
|
|
59
|
-
|
|
60
43
|
const WithSuffix = () => /*#__PURE__*/_react.default.createElement(_menuItem.MenuItem, {
|
|
61
44
|
suffix: "Suffix",
|
|
62
45
|
label: "Menu item"
|
|
63
46
|
});
|
|
64
|
-
|
|
65
47
|
exports.WithSuffix = WithSuffix;
|