@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.
Files changed (63) hide show
  1. package/build/cjs/flyout-menu/__tests__/flyout-menu.test.js +1 -15
  2. package/build/cjs/flyout-menu/features/accepts_children/index.js +0 -1
  3. package/build/cjs/flyout-menu/features/position/index.js +4 -4
  4. package/build/cjs/flyout-menu/features/toggles_submenus/index.js +0 -1
  5. package/build/cjs/flyout-menu/{flyout-menu.stories.e2e.js → flyout-menu.e2e.stories.js} +2 -20
  6. package/build/cjs/flyout-menu/flyout-menu.js +5 -23
  7. package/build/cjs/flyout-menu/{flyout-menu.stories.js → flyout-menu.prod.stories.js} +25 -37
  8. package/build/cjs/flyout-menu/index.js +0 -1
  9. package/build/cjs/index.js +0 -5
  10. package/build/cjs/menu/__tests__/menu.test.js +11 -50
  11. package/build/cjs/menu/features/accepts_children/index.js +0 -1
  12. package/build/cjs/menu/helpers.js +2 -10
  13. package/build/cjs/menu/index.js +0 -1
  14. package/build/cjs/menu/menu.e2e.stories.js +14 -0
  15. package/build/cjs/menu/menu.js +12 -20
  16. package/build/cjs/menu/{menu.stories.js → menu.prod.stories.js} +18 -17
  17. package/build/cjs/menu/use-menu.js +12 -20
  18. package/build/cjs/menu-divider/index.js +0 -1
  19. package/build/cjs/menu-divider/menu-divider.js +3 -11
  20. package/build/cjs/menu-divider/{menu-divider.stories.js → menu-divider.prod.stories.js} +11 -15
  21. package/build/cjs/menu-item/__tests__/menu-item.test.js +1 -5
  22. package/build/cjs/menu-item/features/accepts_href/index.js +1 -2
  23. package/build/cjs/menu-item/features/accepts_icon/index.js +0 -1
  24. package/build/cjs/menu-item/features/accepts_label/index.js +1 -2
  25. package/build/cjs/menu-item/features/accepts_suffix/index.js +0 -1
  26. package/build/cjs/menu-item/features/accepts_target/index.js +1 -2
  27. package/build/cjs/menu-item/features/is_clickable/index.js +0 -1
  28. package/build/cjs/menu-item/index.js +0 -1
  29. package/build/cjs/menu-item/{menu-item.stories.e2e.js → menu-item.e2e.stories.js} +2 -20
  30. package/build/cjs/menu-item/menu-item.js +11 -46
  31. package/build/cjs/menu-item/{menu-item.stories.js → menu-item.prod.stories.js} +22 -46
  32. package/build/cjs/menu-item/menu-item.styles.js +2 -5
  33. package/build/cjs/menu-section-header/features/accepts_label/index.js +1 -2
  34. package/build/cjs/menu-section-header/index.js +0 -1
  35. package/build/cjs/menu-section-header/{menu-section-header.stories.e2e.js → menu-section-header.e2e.stories.js} +2 -10
  36. package/build/cjs/menu-section-header/menu-section-header.js +3 -12
  37. package/build/cjs/menu-section-header/{menu-section-header.stories.js → menu-section-header.prod.stories.js} +11 -19
  38. package/build/es/flyout-menu/features/position/index.js +4 -3
  39. package/build/es/flyout-menu/{flyout-menu.stories.e2e.js → flyout-menu.e2e.stories.js} +0 -2
  40. package/build/es/flyout-menu/flyout-menu.js +2 -12
  41. package/build/es/flyout-menu/{flyout-menu.stories.js → flyout-menu.prod.stories.js} +25 -12
  42. package/build/es/menu/__tests__/menu.test.js +10 -8
  43. package/build/es/menu/helpers.js +2 -6
  44. package/build/es/menu/menu.e2e.stories.js +6 -0
  45. package/build/es/menu/menu.js +9 -9
  46. package/build/es/menu/{menu.stories.js → menu.prod.stories.js} +18 -1
  47. package/build/es/menu/use-menu.js +12 -16
  48. package/build/es/menu-divider/menu-divider.js +2 -4
  49. package/build/es/menu-divider/{menu-divider.stories.js → menu-divider.prod.stories.js} +7 -3
  50. package/build/es/menu-item/features/accepts_href/index.js +1 -1
  51. package/build/es/menu-item/features/accepts_label/index.js +1 -1
  52. package/build/es/menu-item/features/accepts_target/index.js +1 -1
  53. package/build/es/menu-item/menu-item.js +8 -31
  54. package/build/es/menu-item/{menu-item.stories.js → menu-item.prod.stories.js} +14 -9
  55. package/build/es/menu-item/menu-item.styles.js +1 -1
  56. package/build/es/menu-section-header/features/accepts_label/index.js +1 -1
  57. package/build/es/menu-section-header/menu-section-header.js +2 -4
  58. package/build/es/menu-section-header/{menu-section-header.stories.js → menu-section-header.prod.stories.js} +7 -3
  59. package/package.json +11 -11
  60. package/build/cjs/menu/menu.stories.e2e.js +0 -11
  61. package/build/es/menu/menu.stories.e2e.js +0 -4
  62. /package/build/es/menu-item/{menu-item.stories.e2e.js → menu-item.e2e.stories.js} +0 -0
  63. /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;
@@ -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 _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
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 = { ...child.props
42
- }; // this check is based on the type of child.
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, { ...childProps,
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, { ...childProps,
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
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
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
- const description = "\nUse 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.\n\nThe 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.\n\nMake 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:\n\n- \"Save\"\n- \"Open as map\"\n- \"Export PDF\"\n- \"Duplicate\"\n\nTypical children are Menu Items, Menu Dividers, and Menu Section Headers.\n\n```js\nimport { Menu } from '@dhis2/ui'\n```\n";
17
- var _default = {
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); // Initializes the indices for focusable items
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]); // Focus the active menu child
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]); // Navigate through focusable children using arrow keys
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]); // Event listeners for menu focus and key handling
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
- const menu = menuRef.current; // Focus the first menu item when the menu receives focus
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;
@@ -9,5 +9,4 @@ Object.defineProperty(exports, "MenuDivider", {
9
9
  return _menuDivider.MenuDivider;
10
10
  }
11
11
  });
12
-
13
12
  var _menuDivider = require("./menu-divider.js");
@@ -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
- }, ["li.__jsx-style-dynamic-selector{list-style:none;background-color:".concat(_uiConstants.colors.white, ";-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;padding:0;line-height:0;}")]));
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
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
15
-
16
- const description = "\nItems 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.\n\n```js\nimport { MenuDivider } from '@dhis2/ui'\n```\n";
17
- var _default = {
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 Default = Template.bind({});
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('label').should('be.visible');
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
  });
@@ -9,5 +9,4 @@ Object.defineProperty(exports, "MenuItem", {
9
9
  return _menuItem.MenuItem;
10
10
  }
11
11
  });
12
-
13
12
  var _menuItem = require("./menu-item.js");
@@ -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;