@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
@@ -4,33 +4,19 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports.MenuItem = void 0;
7
-
8
7
  var _style = _interopRequireDefault(require("styled-jsx/style"));
9
-
8
+ var _uiIcons = require("@dhis2/ui-icons");
10
9
  var _popper = require("@dhis2-ui/popper");
11
-
12
10
  var _portal = require("@dhis2-ui/portal");
13
-
14
- var _uiIcons = require("@dhis2/ui-icons");
15
-
16
11
  var _classnames = _interopRequireDefault(require("classnames"));
17
-
18
12
  var _propTypes = _interopRequireDefault(require("prop-types"));
19
-
20
13
  var _react = _interopRequireWildcard(require("react"));
21
-
22
- var _index = require("../index.js");
23
-
14
+ var _index = require("../flyout-menu/index.js");
24
15
  var _menuItemStyles = _interopRequireDefault(require("./menu-item.styles.js"));
25
-
26
- 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); }
27
-
28
- 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; }
29
-
30
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
31
-
16
+ 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); }
17
+ 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; }
18
+ function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
32
19
  const isModifiedEvent = evt => evt.metaKey || evt.altKey || evt.ctrlKey || evt.shiftKey;
33
-
34
20
  const createOnClickHandler = _ref => {
35
21
  let {
36
22
  onClick,
@@ -42,7 +28,6 @@ const createOnClickHandler = _ref => {
42
28
  if (isLink && isModifiedEvent(evt) || !(onClick || toggleSubMenu)) {
43
29
  return;
44
30
  }
45
-
46
31
  evt.preventDefault();
47
32
  evt.stopPropagation();
48
33
  onClick && onClick({
@@ -51,7 +36,6 @@ const createOnClickHandler = _ref => {
51
36
  toggleSubMenu && toggleSubMenu();
52
37
  };
53
38
  };
54
-
55
39
  const MenuItem = _ref2 => {
56
40
  let {
57
41
  href,
@@ -85,26 +69,19 @@ const MenuItem = _ref2 => {
85
69
  if (!menuItemRef.current) {
86
70
  return;
87
71
  }
88
-
89
72
  const menuItem = menuItemRef.current;
90
-
91
73
  const handleKeyDown = event => {
92
74
  var _openSubMenus, _openSubMenus2;
93
-
94
75
  const firstChild = event.target.children[0];
95
76
  const hasSubMenu = firstChild === null || firstChild === void 0 ? void 0 : firstChild.getAttribute('aria-haspopup');
96
-
97
77
  switch (event.key) {
98
78
  // for submenus
99
79
  case 'ArrowRight':
100
80
  event.preventDefault();
101
-
102
81
  if (hasSubMenu) {
103
82
  firstChild.click();
104
83
  }
105
-
106
84
  break;
107
-
108
85
  case 'ArrowLeft':
109
86
  case 'Escape':
110
87
  // close flyout menu
@@ -114,7 +91,6 @@ const MenuItem = _ref2 => {
114
91
  break;
115
92
  }
116
93
  };
117
-
118
94
  menuItem.addEventListener('keydown', handleKeyDown);
119
95
  return () => {
120
96
  menuItem.removeEventListener('keydown', handleKeyDown);
@@ -126,7 +102,7 @@ const MenuItem = _ref2 => {
126
102
  role: "presentation",
127
103
  tabIndex: tabIndex,
128
104
  "data-submenu-open": children && showSubMenu,
129
- className: "jsx-".concat(_menuItemStyles.default.__hash) + " " + ((0, _classnames.default)(className, {
105
+ className: `jsx-${_menuItemStyles.default.__hash}` + " " + ((0, _classnames.default)(className, {
130
106
  destructive,
131
107
  disabled,
132
108
  dense,
@@ -148,15 +124,15 @@ const MenuItem = _ref2 => {
148
124
  "aria-haspopup": children && 'menu',
149
125
  "aria-expanded": showSubMenu,
150
126
  "aria-label": label,
151
- className: "jsx-".concat(_menuItemStyles.default.__hash)
127
+ className: `jsx-${_menuItemStyles.default.__hash}`
152
128
  }, icon && /*#__PURE__*/_react.default.createElement("span", {
153
- className: "jsx-".concat(_menuItemStyles.default.__hash) + " " + "icon"
129
+ className: `jsx-${_menuItemStyles.default.__hash}` + " " + "icon"
154
130
  }, icon), /*#__PURE__*/_react.default.createElement("span", {
155
- className: "jsx-".concat(_menuItemStyles.default.__hash) + " " + "label"
131
+ className: `jsx-${_menuItemStyles.default.__hash}` + " " + "label"
156
132
  }, label), suffix && /*#__PURE__*/_react.default.createElement("span", {
157
- className: "jsx-".concat(_menuItemStyles.default.__hash) + " " + "suffix"
133
+ className: `jsx-${_menuItemStyles.default.__hash}` + " " + "suffix"
158
134
  }, suffix), (chevron || children) && /*#__PURE__*/_react.default.createElement("span", {
159
- className: "jsx-".concat(_menuItemStyles.default.__hash) + " " + "chevron"
135
+ className: `jsx-${_menuItemStyles.default.__hash}` + " " + "chevron"
160
136
  }, /*#__PURE__*/_react.default.createElement(_uiIcons.IconChevronRight24, null))), /*#__PURE__*/_react.default.createElement(_style.default, {
161
137
  id: _menuItemStyles.default.__hash
162
138
  }, _menuItemStyles.default)), children && showSubMenu && /*#__PURE__*/_react.default.createElement(_portal.Portal, null, /*#__PURE__*/_react.default.createElement(_popper.Popper, {
@@ -166,7 +142,6 @@ const MenuItem = _ref2 => {
166
142
  dense: dense
167
143
  }, children))));
168
144
  };
169
-
170
145
  exports.MenuItem = MenuItem;
171
146
  MenuItem.defaultProps = {
172
147
  dataTest: 'dhis2-uicore-menuitem'
@@ -176,7 +151,6 @@ MenuItem.propTypes = {
176
151
  checkbox: _propTypes.default.bool,
177
152
  checked: _propTypes.default.bool,
178
153
  chevron: _propTypes.default.bool,
179
-
180
154
  /**
181
155
  * Nested menu items can become submenus.
182
156
  * See `showSubMenu` and `toggleSubMenu` props, and 'Children' demo
@@ -187,32 +161,23 @@ MenuItem.propTypes = {
187
161
  dense: _propTypes.default.bool,
188
162
  destructive: _propTypes.default.bool,
189
163
  disabled: _propTypes.default.bool,
190
-
191
164
  /** For using menu item as a link */
192
165
  href: _propTypes.default.string,
193
-
194
166
  /** An icon for the left side of the menu item */
195
167
  icon: _propTypes.default.node,
196
-
197
168
  /** Text in the menu item */
198
169
  label: _propTypes.default.node,
199
-
200
170
  /** When true, nested menu items are shown in a Popper */
201
171
  showSubMenu: _propTypes.default.bool,
202
-
203
172
  /** A supporting element shown at the end of the menu item */
204
173
  suffix: _propTypes.default.node,
205
174
  tabIndex: _propTypes.default.number,
206
-
207
175
  /** For using menu item as a link */
208
176
  target: _propTypes.default.string,
209
-
210
177
  /** On click, this function is called (without args) */
211
178
  toggleSubMenu: _propTypes.default.func,
212
-
213
179
  /** Value associated with item. Passed as an argument to onClick handler. */
214
180
  value: _propTypes.default.string,
215
-
216
181
  /** Click handler called with signature `({ value: string }, event)` */
217
182
  onClick: _propTypes.default.func
218
183
  };
@@ -4,27 +4,29 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports.default = exports.ToggleMenuItem = exports.SuffixAndChevron = exports.Suffix = exports.SubMenus = exports.RTLSuffixAndChevron = exports.OnClick = exports.Link = exports.Icon = exports.Disabled = exports.Destructive = exports.Dense = exports.Default = exports.Chevron = exports.Active = void 0;
7
-
8
7
  var _ui = require("@dhis2/ui");
9
-
10
8
  var _uiConstants = require("@dhis2/ui-constants");
11
-
12
9
  var _uiIcons = require("@dhis2/ui-icons");
13
-
14
10
  var _react = _interopRequireWildcard(require("react"));
15
-
16
11
  var _index = require("../index.js");
17
-
18
12
  var _menuItem = require("./menu-item.js");
13
+ 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); }
14
+ 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; }
15
+ function _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }
16
+ const description = `
17
+ Menu Items are intended to be children of Menu and Flyout Menu components. They can be nested to create submenus.
19
18
 
20
- 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
+ Splitting menus into several levels with child menus makes sense when there are a lot of options that can be grouped together. An example may be an option in level 1 menu of 'Download' that has several different download formats as child menu items. Make sure that child menu items relate to their parent item, otherwise a user will struggle to discover them. A menu item with children is not selectable/actionable itself, it serves only as a container for the child elements. Try to keep menus to a maximum of 1, 2 or 3 levels, anything more than this can easily confuse the user.
21
20
 
22
- 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
+ There is no enforced ordering of menu items, they should be presented in order of relevance. Put the most commonly used items at the top of the menu for easy discovery and access.
23
22
 
24
- function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }
23
+ See the [design system](https://github.com/dhis2/design-system/blob/master/molecules/menu.md) for more information about menus.
25
24
 
26
- const description = "\nMenu Items are intended to be children of Menu and Flyout Menu components. They can be nested to create submenus.\n\nSplitting menus into several levels with child menus makes sense when there are a lot of options that can be grouped together. An example may be an option in level 1 menu of 'Download' that has several different download formats as child menu items. Make sure that child menu items relate to their parent item, otherwise a user will struggle to discover them. A menu item with children is not selectable/actionable itself, it serves only as a container for the child elements. Try to keep menus to a maximum of 1, 2 or 3 levels, anything more than this can easily confuse the user.\n\nThere is no enforced ordering of menu items, they should be presented in order of relevance. Put the most commonly used items at the top of the menu for easy discovery and access.\n\nSee the [design system](https://github.com/dhis2/design-system/blob/master/molecules/menu.md) for more information about menus.\n\n```js\nimport { MenuItem } from '@dhis2/ui'\n```\n";
27
- var _default = {
25
+ \`\`\`js
26
+ import { MenuItem } from '@dhis2/ui'
27
+ \`\`\`
28
+ `;
29
+ var _default = exports.default = {
28
30
  title: 'Menu Item',
29
31
  component: _menuItem.MenuItem,
30
32
  args: {
@@ -38,29 +40,21 @@ var _default = {
38
40
  }
39
41
  }
40
42
  };
41
- exports.default = _default;
42
-
43
43
  const Template = args => /*#__PURE__*/_react.default.createElement(_index.Menu, null, /*#__PURE__*/_react.default.createElement(_menuItem.MenuItem, args));
44
-
45
- const Default = Template.bind({});
46
- exports.Default = Default;
47
- const Active = Template.bind({});
48
- exports.Active = Active;
44
+ const Default = exports.Default = Template.bind({});
45
+ const Active = exports.Active = Template.bind({});
49
46
  Active.args = {
50
47
  active: true
51
48
  };
52
- const Chevron = Template.bind({});
53
- exports.Chevron = Chevron;
49
+ const Chevron = exports.Chevron = Template.bind({});
54
50
  Chevron.args = {
55
51
  chevron: true
56
52
  };
57
- const Dense = Template.bind({});
58
- exports.Dense = Dense;
53
+ const Dense = exports.Dense = Template.bind({});
59
54
  Dense.args = {
60
55
  dense: true
61
56
  };
62
- const Destructive = Template.bind({});
63
- exports.Destructive = Destructive;
57
+ const Destructive = exports.Destructive = Template.bind({});
64
58
  Destructive.args = {
65
59
  destructive: true
66
60
  };
@@ -71,8 +65,7 @@ Destructive.parameters = {
71
65
  }
72
66
  }
73
67
  };
74
- const Disabled = Template.bind({});
75
- exports.Disabled = Disabled;
68
+ const Disabled = exports.Disabled = Template.bind({});
76
69
  Disabled.args = {
77
70
  disabled: true
78
71
  };
@@ -83,13 +76,11 @@ Disabled.parameters = {
83
76
  }
84
77
  }
85
78
  };
86
- const Link = Template.bind({});
87
- exports.Link = Link;
79
+ const Link = exports.Link = Template.bind({});
88
80
  Link.args = {
89
81
  target: '_blank',
90
82
  href: 'http://dhis2.org'
91
83
  };
92
-
93
84
  const Icon = args => {
94
85
  // import { IconApps24 } from '@dhis2/ui'
95
86
  return /*#__PURE__*/_react.default.createElement(_index.Menu, null, /*#__PURE__*/_react.default.createElement(_menuItem.MenuItem, _extends({}, args, {
@@ -102,7 +93,6 @@ const Icon = args => {
102
93
  label: "Menu item - with custom icon fill"
103
94
  }));
104
95
  };
105
-
106
96
  exports.Icon = Icon;
107
97
  Icon.parameters = {
108
98
  docs: {
@@ -114,8 +104,7 @@ Icon.parameters = {
114
104
  }
115
105
  }
116
106
  };
117
- const Suffix = Template.bind({});
118
- exports.Suffix = Suffix;
107
+ const Suffix = exports.Suffix = Template.bind({});
119
108
  Suffix.args = {
120
109
  label: 'Open in Data Visualizer',
121
110
  icon: /*#__PURE__*/_react.default.createElement(_uiIcons.IconVisualizationColumn24, {
@@ -125,14 +114,12 @@ Suffix.args = {
125
114
  color: _uiConstants.colors.grey600
126
115
  })
127
116
  };
128
- const SuffixAndChevron = Template.bind({});
129
- exports.SuffixAndChevron = SuffixAndChevron;
117
+ const SuffixAndChevron = exports.SuffixAndChevron = Template.bind({});
130
118
  SuffixAndChevron.args = {
131
119
  label: 'Security notifications',
132
120
  chevron: true,
133
121
  suffix: /*#__PURE__*/_react.default.createElement(_ui.Tag, null, "3")
134
122
  };
135
-
136
123
  const OnClick = args => /*#__PURE__*/_react.default.createElement(_index.Menu, null, /*#__PURE__*/_react.default.createElement(_menuItem.MenuItem, _extends({
137
124
  onClick: (payload, event) => {
138
125
  console.log(payload.value, event.target);
@@ -140,7 +127,6 @@ const OnClick = args => /*#__PURE__*/_react.default.createElement(_index.Menu, n
140
127
  value: "myValue",
141
128
  label: "Menu item"
142
129
  }, args)));
143
-
144
130
  exports.OnClick = OnClick;
145
131
  OnClick.parameters = {
146
132
  docs: {
@@ -152,12 +138,9 @@ OnClick.parameters = {
152
138
  OnClick.args = {
153
139
  onClick: console.log
154
140
  };
155
-
156
141
  const ToggleMenuItem = args => {
157
142
  const [on, setOn] = (0, _react.useState)(false);
158
-
159
143
  const toggleOn = () => setOn(!on);
160
-
161
144
  const checkMarkStyle = {
162
145
  fontSize: '24px',
163
146
  lineHeight: '24px'
@@ -173,7 +156,6 @@ const ToggleMenuItem = args => {
173
156
  checked: on
174
157
  })));
175
158
  };
176
-
177
159
  exports.ToggleMenuItem = ToggleMenuItem;
178
160
  ToggleMenuItem.parameters = {
179
161
  docs: {
@@ -182,12 +164,9 @@ ToggleMenuItem.parameters = {
182
164
  }
183
165
  }
184
166
  };
185
-
186
167
  const SubMenus = args => {
187
168
  const [showSubMenu, setShowSubMenu] = _react.default.useState(false);
188
-
189
169
  const toggleSubMenu = () => setShowSubMenu(!showSubMenu);
190
-
191
170
  return /*#__PURE__*/_react.default.createElement(_index.Menu, null, /*#__PURE__*/_react.default.createElement(_menuItem.MenuItem, _extends({
192
171
  showSubMenu: showSubMenu,
193
172
  toggleSubMenu: toggleSubMenu
@@ -201,7 +180,6 @@ const SubMenus = args => {
201
180
  label: "Regular item"
202
181
  })));
203
182
  };
204
-
205
183
  exports.SubMenus = SubMenus;
206
184
  SubMenus.parameters = {
207
185
  docs: {
@@ -213,11 +191,9 @@ SubMenus.parameters = {
213
191
  }
214
192
  }
215
193
  };
216
-
217
194
  const RTLSuffixAndChevron = args => /*#__PURE__*/_react.default.createElement("div", {
218
195
  dir: "rtl"
219
196
  }, /*#__PURE__*/_react.default.createElement(Template, args));
220
-
221
197
  exports.RTLSuffixAndChevron = RTLSuffixAndChevron;
222
198
  RTLSuffixAndChevron.args = {
223
199
  label: 'Security notifications',
@@ -4,10 +4,7 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports.default = void 0;
7
-
8
7
  var _uiConstants = require("@dhis2/ui-constants");
9
-
10
- const _defaultExport = ["li.jsx-3192368000{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:stretch;-webkit-box-align:stretch;-ms-flex-align:stretch;align-items:stretch;padding:0;cursor:pointer;list-style:none;background-color:".concat(_uiConstants.colors.white, ";color:").concat(_uiConstants.colors.grey900, ";fill:").concat(_uiConstants.colors.grey900, ";font-size:14px;line-height:16px;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;}"), "li.jsx-3192368000:hover{background-color:".concat(_uiConstants.colors.grey200, ";}"), "li.jsx-3192368000:active,li.active.jsx-3192368000{background-color:".concat(_uiConstants.colors.grey300, ";}"), "li.destructive.jsx-3192368000{color:".concat(_uiConstants.colors.red700, ";fill:").concat(_uiConstants.colors.red600, ";}"), "li.destructive.jsx-3192368000:hover{background-color:".concat(_uiConstants.colors.red050, ";}"), "li.destructive.jsx-3192368000:active,li.destructive.active.jsx-3192368000{background-color:".concat(_uiConstants.colors.red100, ";}"), "li.disabled.jsx-3192368000{cursor:not-allowed;color:".concat(_uiConstants.colors.grey500, ";fill:").concat(_uiConstants.colors.grey500, ";}"), "li.disabled.jsx-3192368000:hover{background-color:".concat(_uiConstants.colors.white, ";}"), "a.jsx-3192368000{display:-webkit-inline-box;display:-webkit-inline-flex;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-flex:1;-webkit-flex-grow:1;-ms-flex-positive:1;flex-grow:1;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;padding:0 ".concat(_uiConstants.spacers.dp16, ";min-height:40px;-webkit-text-decoration:none;text-decoration:none;color:inherit;}"), "a.jsx-3192368000:focus{outline:3px solid ".concat(_uiConstants.theme.focus, ";outline-offset:-3px;}"), "a.jsx-3192368000:focus.jsx-3192368000:not(:focus-visible){outline:none;}", "li.with-chevron.jsx-3192368000 a.jsx-3192368000{padding-inline-end:".concat(_uiConstants.spacers.dp8, ";}"), "li.dense.jsx-3192368000 a.jsx-3192368000{padding:0 ".concat(_uiConstants.spacers.dp12, ";min-height:32px;}"), "li.with-chevron.dense.jsx-3192368000 a.jsx-3192368000{padding-inline-end:".concat(_uiConstants.spacers.dp4, ";}"), ".label.jsx-3192368000{-webkit-box-flex:1;-webkit-flex-grow:1;-ms-flex-positive:1;flex-grow:1;padding:".concat(_uiConstants.spacers.dp12, " 0;}"), "li.dense.jsx-3192368000 .label.jsx-3192368000{padding:".concat(_uiConstants.spacers.dp8, " 0;}"), ".icon.jsx-3192368000{-webkit-box-flex:0;-webkit-flex-grow:0;-ms-flex-positive:0;flex-grow:0;margin-inline-end:".concat(_uiConstants.spacers.dp12, ";width:24px;height:24px;}"), ".suffix.jsx-3192368000{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;margin-inline-start:".concat(_uiConstants.spacers.dp8, ";}"), ".chevron.jsx-3192368000{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-flex:0;-webkit-flex-grow:0;-ms-flex-positive:0;flex-grow:0;margin-inline-start:".concat(_uiConstants.spacers.dp24, ";}"), ".chevron.jsx-3192368000:dir(rtl){-webkit-transform:rotate(180deg);-ms-transform:rotate(180deg);transform:rotate(180deg);}", "li.dense.jsx-3192368000 .icon.jsx-3192368000{margin-inline-end:".concat(_uiConstants.spacers.dp8, ";width:16px;height:16px;}"), "li.jsx-3192368000 .icon.jsx-3192368000>svg{width:24px;height:24px;}", "li.dense.jsx-3192368000 .icon.jsx-3192368000>svg,li.jsx-3192368000 .chevron.jsx-3192368000>svg{width:16px;height:16px;}"];
8
+ const _defaultExport = [`li.jsx-3192368000{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:stretch;-webkit-box-align:stretch;-ms-flex-align:stretch;align-items:stretch;padding:0;cursor:pointer;list-style:none;background-color:${_uiConstants.colors.white};color:${_uiConstants.colors.grey900};fill:${_uiConstants.colors.grey900};font-size:14px;line-height:16px;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;}`, `li.jsx-3192368000:hover{background-color:${_uiConstants.colors.grey200};}`, `li.jsx-3192368000:active,li.active.jsx-3192368000{background-color:${_uiConstants.colors.grey300};}`, `li.destructive.jsx-3192368000{color:${_uiConstants.colors.red700};fill:${_uiConstants.colors.red600};}`, `li.destructive.jsx-3192368000:hover{background-color:${_uiConstants.colors.red050};}`, `li.destructive.jsx-3192368000:active,li.destructive.active.jsx-3192368000{background-color:${_uiConstants.colors.red100};}`, `li.disabled.jsx-3192368000{cursor:not-allowed;color:${_uiConstants.colors.grey500};fill:${_uiConstants.colors.grey500};}`, `li.disabled.jsx-3192368000:hover{background-color:${_uiConstants.colors.white};}`, `a.jsx-3192368000{display:-webkit-inline-box;display:-webkit-inline-flex;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-flex:1;-webkit-flex-grow:1;-ms-flex-positive:1;flex-grow:1;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;padding:0 ${_uiConstants.spacers.dp16};min-height:40px;-webkit-text-decoration:none;text-decoration:none;color:inherit;}`, `a.jsx-3192368000:focus{outline:3px solid ${_uiConstants.theme.focus};outline-offset:-3px;}`, "a.jsx-3192368000:focus.jsx-3192368000:not(:focus-visible){outline:none;}", `li.with-chevron.jsx-3192368000 a.jsx-3192368000{padding-inline-end:${_uiConstants.spacers.dp8};}`, `li.dense.jsx-3192368000 a.jsx-3192368000{padding:0 ${_uiConstants.spacers.dp12};min-height:32px;}`, `li.with-chevron.dense.jsx-3192368000 a.jsx-3192368000{padding-inline-end:${_uiConstants.spacers.dp4};}`, `.label.jsx-3192368000{-webkit-box-flex:1;-webkit-flex-grow:1;-ms-flex-positive:1;flex-grow:1;padding:${_uiConstants.spacers.dp12} 0;}`, `li.dense.jsx-3192368000 .label.jsx-3192368000{padding:${_uiConstants.spacers.dp8} 0;}`, `.icon.jsx-3192368000{-webkit-box-flex:0;-webkit-flex-grow:0;-ms-flex-positive:0;flex-grow:0;margin-inline-end:${_uiConstants.spacers.dp12};width:24px;height:24px;}`, `.suffix.jsx-3192368000{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;margin-inline-start:${_uiConstants.spacers.dp8};}`, `.chevron.jsx-3192368000{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-flex:0;-webkit-flex-grow:0;-ms-flex-positive:0;flex-grow:0;margin-inline-start:${_uiConstants.spacers.dp24};}`, ".chevron.jsx-3192368000:dir(rtl){-webkit-transform:rotate(180deg);-ms-transform:rotate(180deg);transform:rotate(180deg);}", `li.dense.jsx-3192368000 .icon.jsx-3192368000{margin-inline-end:${_uiConstants.spacers.dp8};width:16px;height:16px;}`, "li.jsx-3192368000 .icon.jsx-3192368000>svg{width:24px;height:24px;}", "li.dense.jsx-3192368000 .icon.jsx-3192368000>svg,li.jsx-3192368000 .chevron.jsx-3192368000>svg{width:16px;height:16px;}"];
11
9
  _defaultExport.__hash = "3192368000";
12
- var _default = _defaultExport;
13
- exports.default = _default;
10
+ var _default = exports.default = _defaultExport;
@@ -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 MenuSectionHeader supplied with a label is rendered', () => {
6
5
  cy.visitStory('MenuSectionHeader', 'With Label');
7
6
  cy.get('[data-test="dhis2-uicore-menusectionheader"]').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
  });
@@ -9,5 +9,4 @@ Object.defineProperty(exports, "MenuSectionHeader", {
9
9
  return _menuSectionHeader.MenuSectionHeader;
10
10
  }
11
11
  });
12
-
13
12
  var _menuSectionHeader = require("./menu-section-header.js");
@@ -4,24 +4,16 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports.default = exports.WithLabel = 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");
13
-
14
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
15
-
16
- var _default = {
10
+ function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
11
+ var _default = exports.default = {
17
12
  title: 'MenuSectionHeader',
18
13
  component: _index2.MenuSectionHeader,
19
14
  decorators: [story => /*#__PURE__*/_react.default.createElement(_index.Menu, null, story())]
20
15
  };
21
- exports.default = _default;
22
-
23
16
  const WithLabel = () => /*#__PURE__*/_react.default.createElement(_index2.MenuSectionHeader, {
24
17
  label: "label"
25
18
  });
26
-
27
19
  exports.WithLabel = WithLabel;
@@ -4,21 +4,13 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports.MenuSectionHeader = 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 _classnames = _interopRequireDefault(require("classnames"));
15
-
16
11
  var _propTypes = _interopRequireDefault(require("prop-types"));
17
-
18
12
  var _react = _interopRequireDefault(require("react"));
19
-
20
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
21
-
13
+ function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
22
14
  const MenuSectionHeader = _ref => {
23
15
  let {
24
16
  className,
@@ -39,9 +31,8 @@ const MenuSectionHeader = _ref => {
39
31
  }, label), /*#__PURE__*/_react.default.createElement(_style.default, {
40
32
  id: "1160864328",
41
33
  dynamic: [_uiConstants.colors.white, _uiConstants.spacers.dp8, _uiConstants.spacers.dp16, _uiConstants.spacers.dp8, _uiConstants.spacers.dp16, _uiConstants.colors.grey700, _uiConstants.spacers.dp8, _uiConstants.spacers.dp12, _uiConstants.spacers.dp4, _uiConstants.spacers.dp12]
42
- }, ["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;}"), "h6.__jsx-style-dynamic-selector{margin:0;padding:".concat(_uiConstants.spacers.dp8, " ").concat(_uiConstants.spacers.dp16, " ").concat(_uiConstants.spacers.dp8, " ").concat(_uiConstants.spacers.dp16, ";font-size:13px;line-height:16px;font-weight:500;color:").concat(_uiConstants.colors.grey700, ";}"), "li.dense.__jsx-style-dynamic-selector h6.__jsx-style-dynamic-selector{padding:".concat(_uiConstants.spacers.dp8, " ").concat(_uiConstants.spacers.dp12, " ").concat(_uiConstants.spacers.dp4, " ").concat(_uiConstants.spacers.dp12, ";}")]));
34
+ }, [`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;}`, `h6.__jsx-style-dynamic-selector{margin:0;padding:${_uiConstants.spacers.dp8} ${_uiConstants.spacers.dp16} ${_uiConstants.spacers.dp8} ${_uiConstants.spacers.dp16};font-size:13px;line-height:16px;font-weight:500;color:${_uiConstants.colors.grey700};}`, `li.dense.__jsx-style-dynamic-selector h6.__jsx-style-dynamic-selector{padding:${_uiConstants.spacers.dp8} ${_uiConstants.spacers.dp12} ${_uiConstants.spacers.dp4} ${_uiConstants.spacers.dp12};}`]));
43
35
  };
44
-
45
36
  exports.MenuSectionHeader = MenuSectionHeader;
46
37
  MenuSectionHeader.defaultProps = {
47
38
  dataTest: 'dhis2-uicore-menusectionheader'
@@ -4,19 +4,19 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports.default = exports.WithoutDivider = exports.TopOfList = exports.Dense = exports.Default = void 0;
7
-
8
7
  var _propTypes = _interopRequireDefault(require("prop-types"));
9
-
10
8
  var _react = _interopRequireDefault(require("react"));
11
-
12
9
  var _index = require("../index.js");
13
-
14
10
  var _menuSectionHeader = require("./menu-section-header.js");
11
+ function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
12
+ const description = `
13
+ 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 Menu Section Header, 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.
15
14
 
16
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
17
-
18
- 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 Menu Section Header, 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 { MenuSectionHeader } from '@dhis2/ui'\n```\n";
19
- var _default = {
15
+ \`\`\`js
16
+ import { MenuSectionHeader } from '@dhis2/ui'
17
+ \`\`\`
18
+ `;
19
+ var _default = exports.default = {
20
20
  title: 'Menu Section Header',
21
21
  component: _menuSectionHeader.MenuSectionHeader,
22
22
  args: {
@@ -30,8 +30,6 @@ var _default = {
30
30
  }
31
31
  }
32
32
  };
33
- exports.default = _default;
34
-
35
33
  const Template = _ref => {
36
34
  let {
37
35
  menuArgs,
@@ -43,32 +41,26 @@ const Template = _ref => {
43
41
  label: "Menu item below"
44
42
  }));
45
43
  };
46
-
47
44
  Template.propTypes = {
48
45
  menuArgs: _propTypes.default.shape()
49
46
  };
50
- const Default = Template.bind({});
51
- exports.Default = Default;
52
- const Dense = Template.bind({});
53
- exports.Dense = Dense;
47
+ const Default = exports.Default = Template.bind({});
48
+ const Dense = exports.Dense = Template.bind({});
54
49
  Dense.args = {
55
50
  menuArgs: {
56
51
  dense: true
57
52
  },
58
53
  dense: true
59
54
  };
60
- const WithoutDivider = Template.bind({});
61
- exports.WithoutDivider = WithoutDivider;
55
+ const WithoutDivider = exports.WithoutDivider = Template.bind({});
62
56
  WithoutDivider.args = {
63
57
  hideDivider: true
64
58
  };
65
-
66
59
  const TopOfList = args => /*#__PURE__*/_react.default.createElement(_index.Menu, null, /*#__PURE__*/_react.default.createElement(_menuSectionHeader.MenuSectionHeader, args), /*#__PURE__*/_react.default.createElement(_index.MenuItem, {
67
60
  label: "Item 1"
68
61
  }), /*#__PURE__*/_react.default.createElement(_index.MenuItem, {
69
62
  label: "Item 2"
70
63
  }));
71
-
72
64
  exports.TopOfList = TopOfList;
73
65
  TopOfList.args = {
74
66
  label: 'Top of list (so <Menu> hides divider)'
@@ -27,8 +27,10 @@ Then('the left of the MenuItem is aligned with the right of the SubMenu', () =>
27
27
  Then('the SubMenu is rendered on top of the MenuItem', () => {
28
28
  getMenuItemAndSubMenuRects().should(_ref3 => {
29
29
  let [menuItemRect, subMenuRect] = _ref3;
30
- expect(subMenuRect.left).to.be.at.most(menuItemRect.left);
31
- expect(subMenuRect.right).to.be.at.least(menuItemRect.right);
30
+ expect(subMenuRect.left).to.be.at.most(menuItemRect.right);
31
+ expect(subMenuRect.right).to.be.at.least(menuItemRect.left);
32
+ expect(subMenuRect.top).to.be.at.most(menuItemRect.bottom);
33
+ expect(subMenuRect.bottom).to.be.at.least(menuItemRect.top);
32
34
  });
33
35
  });
34
36
  Then('the top of the MenuItem is aligned with the top of the SubMenu wrapper', () => {
@@ -37,7 +39,6 @@ Then('the top of the MenuItem is aligned with the top of the SubMenu wrapper', (
37
39
  expect(menuItemRect.top).to.closeTo(popperRect.top, CLOSE_TO_DELTA);
38
40
  });
39
41
  });
40
-
41
42
  function getMenuItemAndSubMenuRects() {
42
43
  return cy.getPositionsBySelectors('[data-test="dhis2-uicore-menuitem"]', '[data-test="dhis2-uicore-popper"]');
43
44
  }
@@ -6,7 +6,6 @@ export default {
6
6
  title: 'FlyoutMenu',
7
7
  component: FlyoutMenu
8
8
  };
9
-
10
9
  const MenuItemSubMenuPositions = () => /*#__PURE__*/React.createElement(FlyoutMenu, null, /*#__PURE__*/React.createElement(MenuItem, {
11
10
  label: "Item 1"
12
11
  }, /*#__PURE__*/React.createElement("div", {
@@ -14,7 +13,6 @@ const MenuItemSubMenuPositions = () => /*#__PURE__*/React.createElement(FlyoutMe
14
13
  padding: 30
15
14
  }
16
15
  }, "SubMenu 1")));
17
-
18
16
  export const WithChildren = () => /*#__PURE__*/React.createElement(FlyoutMenu, null, "I am a child");
19
17
  export const TogglesSubMenus = () => /*#__PURE__*/React.createElement(FlyoutMenu, null, /*#__PURE__*/React.createElement(MenuItem, {
20
18
  label: "Item 1"