@dxc-technology/halstack-react 0.0.0-c293b72 → 0.0.0-c2b6ec9

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 (308) hide show
  1. package/BackgroundColorContext.js +1 -1
  2. package/HalstackContext.d.ts +2 -5
  3. package/HalstackContext.js +6 -6
  4. package/accordion/Accordion.accessibility.test.d.ts +1 -0
  5. package/accordion/Accordion.accessibility.test.js +4 -4
  6. package/accordion/Accordion.js +9 -10
  7. package/accordion/Accordion.stories.tsx +4 -14
  8. package/accordion/Accordion.test.d.ts +1 -0
  9. package/accordion/Accordion.test.js +3 -3
  10. package/accordion-group/AccordionGroup.accessibility.test.d.ts +1 -0
  11. package/accordion-group/AccordionGroup.accessibility.test.js +11 -17
  12. package/accordion-group/AccordionGroup.js +1 -1
  13. package/accordion-group/AccordionGroup.stories.tsx +23 -23
  14. package/accordion-group/AccordionGroup.test.d.ts +1 -0
  15. package/accordion-group/AccordionGroup.test.js +5 -9
  16. package/accordion-group/AccordionGroupAccordion.js +1 -1
  17. package/action-icon/ActionIcon.accessibility.test.d.ts +1 -0
  18. package/action-icon/ActionIcon.accessibility.test.js +4 -4
  19. package/action-icon/ActionIcon.test.d.ts +1 -0
  20. package/action-icon/ActionIcon.test.js +1 -1
  21. package/alert/Alert.accessibility.test.d.ts +1 -0
  22. package/alert/Alert.accessibility.test.js +6 -6
  23. package/alert/Alert.js +6 -3
  24. package/alert/Alert.test.d.ts +1 -0
  25. package/alert/Alert.test.js +1 -1
  26. package/badge/Badge.accessibility.test.d.ts +1 -0
  27. package/badge/Badge.accessibility.test.js +5 -5
  28. package/badge/Badge.test.d.ts +1 -0
  29. package/badge/Badge.test.js +2 -2
  30. package/box/Box.accessibility.test.d.ts +1 -0
  31. package/box/Box.accessibility.test.js +3 -3
  32. package/box/Box.js +1 -1
  33. package/box/Box.test.d.ts +1 -0
  34. package/box/Box.test.js +1 -1
  35. package/breadcrumbs/Breadcrumbs.accessibility.test.d.ts +1 -0
  36. package/breadcrumbs/Breadcrumbs.accessibility.test.js +96 -0
  37. package/breadcrumbs/Breadcrumbs.d.ts +4 -0
  38. package/breadcrumbs/Breadcrumbs.js +79 -0
  39. package/breadcrumbs/Breadcrumbs.stories.tsx +194 -0
  40. package/breadcrumbs/Breadcrumbs.test.d.ts +1 -0
  41. package/breadcrumbs/Breadcrumbs.test.js +168 -0
  42. package/breadcrumbs/Item.d.ts +4 -0
  43. package/breadcrumbs/Item.js +52 -0
  44. package/breadcrumbs/dropdownTheme.d.ts +53 -0
  45. package/breadcrumbs/dropdownTheme.js +62 -0
  46. package/breadcrumbs/types.d.ts +16 -0
  47. package/breadcrumbs/types.js +5 -0
  48. package/bulleted-list/BulletedList.accessibility.test.d.ts +1 -0
  49. package/bulleted-list/BulletedList.accessibility.test.js +18 -6
  50. package/bulleted-list/BulletedList.js +2 -2
  51. package/button/Button.accessibility.test.d.ts +1 -0
  52. package/button/Button.accessibility.test.js +6 -6
  53. package/button/Button.js +1 -1
  54. package/button/Button.stories.tsx +3 -3
  55. package/button/Button.test.d.ts +1 -0
  56. package/button/Button.test.js +1 -1
  57. package/card/Card.accessibility.test.d.ts +1 -0
  58. package/card/Card.accessibility.test.js +3 -3
  59. package/card/Card.js +3 -2
  60. package/card/Card.stories.tsx +1 -1
  61. package/card/Card.test.d.ts +1 -0
  62. package/card/Card.test.js +1 -1
  63. package/checkbox/Checkbox.accessibility.test.d.ts +1 -0
  64. package/checkbox/Checkbox.accessibility.test.js +5 -5
  65. package/checkbox/Checkbox.js +10 -13
  66. package/checkbox/Checkbox.test.d.ts +1 -0
  67. package/checkbox/Checkbox.test.js +1 -1
  68. package/chip/Chip.accessibility.test.d.ts +1 -0
  69. package/chip/Chip.accessibility.test.js +4 -4
  70. package/chip/Chip.js +3 -1
  71. package/chip/Chip.stories.tsx +1 -1
  72. package/chip/Chip.test.d.ts +1 -0
  73. package/chip/Chip.test.js +1 -1
  74. package/common/coreTokens.js +3 -3
  75. package/common/variables.d.ts +2 -5
  76. package/common/variables.js +68 -71
  77. package/container/Container.stories.tsx +3 -3
  78. package/contextual-menu/ContextualMenu.accessibility.test.d.ts +1 -0
  79. package/contextual-menu/ContextualMenu.accessibility.test.js +15 -3
  80. package/contextual-menu/ContextualMenu.d.ts +3 -5
  81. package/contextual-menu/ContextualMenu.js +89 -52
  82. package/contextual-menu/ContextualMenu.stories.tsx +115 -74
  83. package/contextual-menu/ContextualMenu.test.d.ts +1 -0
  84. package/contextual-menu/ContextualMenu.test.js +200 -24
  85. package/contextual-menu/GroupItem.d.ts +4 -0
  86. package/contextual-menu/GroupItem.js +67 -0
  87. package/contextual-menu/ItemAction.d.ts +4 -0
  88. package/contextual-menu/ItemAction.js +50 -0
  89. package/contextual-menu/MenuItem.d.ts +4 -0
  90. package/contextual-menu/MenuItem.js +29 -0
  91. package/contextual-menu/SingleItem.d.ts +4 -0
  92. package/contextual-menu/SingleItem.js +38 -0
  93. package/contextual-menu/types.d.ts +50 -11
  94. package/date-input/Calendar.js +47 -31
  95. package/date-input/DateInput.accessibility.test.d.ts +1 -0
  96. package/date-input/DateInput.accessibility.test.js +24 -11
  97. package/date-input/DateInput.js +27 -21
  98. package/date-input/DateInput.stories.tsx +18 -12
  99. package/date-input/DateInput.test.d.ts +1 -0
  100. package/date-input/DateInput.test.js +39 -39
  101. package/date-input/DatePicker.js +1 -1
  102. package/date-input/YearPicker.js +10 -5
  103. package/dialog/Dialog.accessibility.test.d.ts +1 -0
  104. package/dialog/Dialog.accessibility.test.js +5 -5
  105. package/dialog/Dialog.js +9 -20
  106. package/dialog/Dialog.stories.tsx +8 -4
  107. package/dialog/Dialog.test.d.ts +1 -0
  108. package/dialog/Dialog.test.js +111 -48
  109. package/divider/Divider.accessibility.test.d.ts +1 -0
  110. package/divider/Divider.accessibility.test.js +2 -2
  111. package/divider/Divider.test.d.ts +1 -0
  112. package/dropdown/Dropdown.accessibility.test.d.ts +1 -0
  113. package/dropdown/Dropdown.accessibility.test.js +12 -9
  114. package/dropdown/Dropdown.js +16 -15
  115. package/dropdown/Dropdown.stories.tsx +11 -11
  116. package/dropdown/Dropdown.test.d.ts +1 -0
  117. package/dropdown/Dropdown.test.js +101 -72
  118. package/dropdown/DropdownMenu.js +4 -4
  119. package/dropdown/DropdownMenuItem.js +2 -1
  120. package/file-input/FileInput.accessibility.test.d.ts +1 -0
  121. package/file-input/FileInput.accessibility.test.js +30 -23
  122. package/file-input/FileInput.js +3 -8
  123. package/file-input/FileInput.test.d.ts +1 -0
  124. package/file-input/FileInput.test.js +44 -22
  125. package/file-input/FileItem.js +6 -2
  126. package/file-input/types.d.ts +0 -4
  127. package/footer/Footer.accessibility.test.d.ts +1 -0
  128. package/footer/Footer.accessibility.test.js +13 -5
  129. package/footer/Footer.js +1 -1
  130. package/footer/Footer.stories.tsx +12 -0
  131. package/footer/Footer.test.d.ts +1 -0
  132. package/footer/Footer.test.js +1 -1
  133. package/footer/Icons.js +2 -30
  134. package/grid/Grid.stories.tsx +3 -1
  135. package/header/Header.accessibility.test.d.ts +1 -0
  136. package/header/Header.accessibility.test.js +16 -6
  137. package/header/Header.js +3 -2
  138. package/header/Header.stories.tsx +17 -1
  139. package/header/Header.test.d.ts +1 -0
  140. package/header/Header.test.js +1 -1
  141. package/header/Icons.js +1 -6
  142. package/heading/Heading.accessibility.test.d.ts +1 -0
  143. package/heading/Heading.accessibility.test.js +3 -3
  144. package/heading/Heading.js +1 -1
  145. package/heading/Heading.test.d.ts +1 -0
  146. package/heading/Heading.test.js +1 -14
  147. package/icon/Icon.accessibility.test.d.ts +1 -0
  148. package/icon/Icon.accessibility.test.js +2 -2
  149. package/icon/Icon.js +1 -1
  150. package/image/Image.accessibility.test.d.ts +1 -0
  151. package/image/Image.accessibility.test.js +3 -3
  152. package/image/Image.js +1 -1
  153. package/layout/ApplicationLayout.js +9 -6
  154. package/layout/Icons.d.ts +0 -1
  155. package/layout/Icons.js +1 -9
  156. package/link/Link.accessibility.test.d.ts +1 -0
  157. package/link/Link.accessibility.test.js +8 -12
  158. package/link/Link.js +1 -1
  159. package/link/Link.stories.tsx +2 -2
  160. package/link/Link.test.d.ts +1 -0
  161. package/link/Link.test.js +1 -1
  162. package/main.d.ts +2 -1
  163. package/main.js +8 -1
  164. package/nav-tabs/NavTabs.accessibility.test.d.ts +1 -0
  165. package/nav-tabs/NavTabs.accessibility.test.js +3 -3
  166. package/nav-tabs/NavTabs.js +19 -4
  167. package/nav-tabs/NavTabs.stories.tsx +18 -3
  168. package/nav-tabs/NavTabs.test.d.ts +1 -0
  169. package/nav-tabs/NavTabs.test.js +9 -7
  170. package/nav-tabs/Tab.js +7 -7
  171. package/number-input/NumberInput.accessibility.test.d.ts +1 -0
  172. package/number-input/NumberInput.accessibility.test.js +9 -10
  173. package/number-input/NumberInput.js +6 -3
  174. package/number-input/NumberInput.stories.tsx +11 -16
  175. package/number-input/NumberInput.test.d.ts +1 -0
  176. package/number-input/NumberInput.test.js +6 -7
  177. package/package.json +25 -20
  178. package/paginator/Paginator.accessibility.test.d.ts +1 -0
  179. package/paginator/Paginator.accessibility.test.js +4 -5
  180. package/paginator/Paginator.js +13 -10
  181. package/paginator/Paginator.test.d.ts +1 -0
  182. package/paginator/Paginator.test.js +2 -3
  183. package/paragraph/Paragraph.accessibility.test.d.ts +1 -0
  184. package/paragraph/Paragraph.accessibility.test.js +2 -2
  185. package/password-input/PasswordInput.accessibility.test.d.ts +1 -0
  186. package/password-input/PasswordInput.accessibility.test.js +7 -8
  187. package/password-input/PasswordInput.js +11 -7
  188. package/password-input/PasswordInput.stories.tsx +10 -1
  189. package/password-input/PasswordInput.test.d.ts +1 -0
  190. package/password-input/PasswordInput.test.js +6 -7
  191. package/progress-bar/ProgressBar.accessibility.test.d.ts +1 -0
  192. package/progress-bar/ProgressBar.accessibility.test.js +3 -3
  193. package/progress-bar/ProgressBar.js +6 -4
  194. package/progress-bar/ProgressBar.test.d.ts +1 -0
  195. package/progress-bar/ProgressBar.test.js +1 -1
  196. package/quick-nav/QuickNav.accessibility.test.d.ts +1 -0
  197. package/quick-nav/QuickNav.accessibility.test.js +2 -2
  198. package/quick-nav/QuickNav.js +1 -1
  199. package/radio-group/Radio.js +6 -9
  200. package/radio-group/RadioGroup.accessibility.test.d.ts +1 -0
  201. package/radio-group/RadioGroup.accessibility.test.js +4 -4
  202. package/radio-group/RadioGroup.js +14 -16
  203. package/radio-group/RadioGroup.test.d.ts +1 -0
  204. package/radio-group/RadioGroup.test.js +3 -5
  205. package/resultset-table/ResultsetTable.accessibility.test.d.ts +1 -0
  206. package/resultset-table/ResultsetTable.accessibility.test.js +16 -6
  207. package/resultset-table/ResultsetTable.js +3 -2
  208. package/resultset-table/ResultsetTable.stories.tsx +13 -1
  209. package/resultset-table/ResultsetTable.test.d.ts +1 -0
  210. package/resultset-table/ResultsetTable.test.js +2 -4
  211. package/select/Listbox.js +19 -13
  212. package/select/Option.js +2 -1
  213. package/select/Select.accessibility.test.d.ts +1 -0
  214. package/select/Select.accessibility.test.js +18 -8
  215. package/select/Select.js +25 -21
  216. package/select/Select.stories.tsx +36 -15
  217. package/select/Select.test.d.ts +1 -0
  218. package/select/Select.test.js +42 -51
  219. package/sidenav/Sidenav.accessibility.test.d.ts +1 -0
  220. package/sidenav/Sidenav.accessibility.test.js +3 -3
  221. package/sidenav/Sidenav.js +1 -1
  222. package/sidenav/Sidenav.stories.tsx +1 -1
  223. package/sidenav/Sidenav.test.d.ts +1 -0
  224. package/sidenav/Sidenav.test.js +1 -1
  225. package/slider/Slider.accessibility.test.d.ts +1 -0
  226. package/slider/Slider.accessibility.test.js +5 -6
  227. package/slider/Slider.js +11 -13
  228. package/slider/Slider.stories.tsx +180 -0
  229. package/slider/Slider.test.d.ts +1 -0
  230. package/slider/Slider.test.js +13 -11
  231. package/spinner/Spinner.accessibility.test.d.ts +1 -0
  232. package/spinner/Spinner.accessibility.test.js +6 -6
  233. package/spinner/Spinner.js +6 -2
  234. package/spinner/Spinner.test.d.ts +1 -0
  235. package/spinner/Spinner.test.js +1 -1
  236. package/status-light/StatusLight.accessibility.test.d.ts +1 -0
  237. package/status-light/StatusLight.accessibility.test.js +8 -8
  238. package/status-light/StatusLight.test.d.ts +1 -0
  239. package/status-light/StatusLight.test.js +1 -1
  240. package/switch/Switch.accessibility.test.d.ts +1 -0
  241. package/switch/Switch.accessibility.test.js +14 -5
  242. package/switch/Switch.js +6 -9
  243. package/switch/Switch.stories.tsx +12 -0
  244. package/switch/Switch.test.d.ts +1 -0
  245. package/switch/Switch.test.js +1 -1
  246. package/table/Table.accessibility.test.d.ts +1 -0
  247. package/table/Table.accessibility.test.js +16 -6
  248. package/table/Table.js +1 -1
  249. package/table/Table.stories.tsx +13 -1
  250. package/table/Table.test.d.ts +1 -0
  251. package/table/Table.test.js +2 -4
  252. package/tabs/Tab.js +1 -1
  253. package/tabs/Tabs.accessibility.test.d.ts +1 -0
  254. package/tabs/Tabs.accessibility.test.js +3 -3
  255. package/tabs/Tabs.js +1 -1
  256. package/tabs/Tabs.stories.tsx +7 -1
  257. package/tabs/Tabs.test.d.ts +1 -0
  258. package/tabs/Tabs.test.js +1 -1
  259. package/tag/Tag.accessibility.test.d.ts +1 -0
  260. package/tag/Tag.accessibility.test.js +4 -4
  261. package/tag/Tag.js +1 -1
  262. package/tag/Tag.stories.tsx +1 -1
  263. package/tag/Tag.test.d.ts +1 -0
  264. package/tag/Tag.test.js +1 -1
  265. package/text-input/Suggestion.js +1 -1
  266. package/text-input/Suggestions.js +14 -6
  267. package/text-input/TextInput.accessibility.test.d.ts +1 -0
  268. package/text-input/TextInput.accessibility.test.js +11 -12
  269. package/text-input/TextInput.js +29 -25
  270. package/text-input/TextInput.stories.tsx +19 -7
  271. package/text-input/TextInput.test.d.ts +1 -0
  272. package/text-input/TextInput.test.js +2 -3
  273. package/textarea/Textarea.accessibility.test.d.ts +1 -0
  274. package/textarea/Textarea.accessibility.test.js +7 -7
  275. package/textarea/Textarea.js +14 -13
  276. package/textarea/Textarea.test.d.ts +1 -0
  277. package/textarea/Textarea.test.js +1 -1
  278. package/toggle-group/ToggleGroup.accessibility.test.d.ts +1 -0
  279. package/toggle-group/ToggleGroup.accessibility.test.js +5 -5
  280. package/toggle-group/ToggleGroup.js +6 -9
  281. package/toggle-group/ToggleGroup.stories.tsx +1 -1
  282. package/toggle-group/ToggleGroup.test.d.ts +1 -0
  283. package/toggle-group/ToggleGroup.test.js +1 -1
  284. package/tooltip/Tooltip.accessibility.test.d.ts +1 -0
  285. package/tooltip/Tooltip.accessibility.test.js +144 -0
  286. package/tooltip/Tooltip.d.ts +4 -0
  287. package/tooltip/Tooltip.js +50 -0
  288. package/tooltip/Tooltip.stories.tsx +111 -0
  289. package/tooltip/Tooltip.test.d.ts +1 -0
  290. package/tooltip/Tooltip.test.js +112 -0
  291. package/tooltip/types.d.ts +16 -0
  292. package/tooltip/types.js +5 -0
  293. package/typography/Typography.accessibility.test.d.ts +1 -0
  294. package/typography/Typography.accessibility.test.js +12 -12
  295. package/typography/Typography.stories.tsx +1 -3
  296. package/useTheme.d.ts +2 -5
  297. package/utils/BaseTypography.js +1 -1
  298. package/utils/FocusLock.js +3 -2
  299. package/wizard/Wizard.accessibility.test.d.ts +1 -0
  300. package/wizard/Wizard.accessibility.test.js +3 -3
  301. package/wizard/Wizard.js +1 -9
  302. package/wizard/Wizard.stories.tsx +1 -1
  303. package/wizard/Wizard.test.d.ts +1 -0
  304. package/wizard/Wizard.test.js +1 -1
  305. package/contextual-menu/MenuItemAction.d.ts +0 -4
  306. package/contextual-menu/MenuItemAction.js +0 -46
  307. package/paginator/Icons.d.ts +0 -5
  308. package/paginator/Icons.js +0 -40
@@ -1,7 +1,5 @@
1
1
  import React from "react";
2
- import MenuPropsType, { BadgeProps as BadgePropsType } from "./types";
3
- declare const DxcContextualMenu: {
4
- ({ items, defaultSelectedItemIndex }: MenuPropsType): React.JSX.Element;
5
- Badge(props: BadgePropsType): React.JSX.Element;
6
- };
2
+ import ContextualMenuPropsType, { ContextualMenuContextProps } from "./types";
3
+ export declare const ContextualMenuContext: React.Context<ContextualMenuContextProps>;
4
+ declare const DxcContextualMenu: ({ items }: ContextualMenuPropsType) => React.JSX.Element;
7
5
  export default DxcContextualMenu;
@@ -5,67 +5,104 @@ var _typeof = require("@babel/runtime/helpers/typeof");
5
5
  Object.defineProperty(exports, "__esModule", {
6
6
  value: true
7
7
  });
8
- exports["default"] = void 0;
8
+ exports["default"] = exports.ContextualMenuContext = void 0;
9
9
  var _taggedTemplateLiteral2 = _interopRequireDefault(require("@babel/runtime/helpers/taggedTemplateLiteral"));
10
- var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
11
10
  var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
11
+ var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
12
12
  var _react = _interopRequireWildcard(require("react"));
13
13
  var _styledComponents = _interopRequireDefault(require("styled-components"));
14
14
  var _coreTokens = _interopRequireDefault(require("../common/coreTokens"));
15
- var _Badge = _interopRequireDefault(require("../badge/Badge"));
16
- var _MenuItemAction = _interopRequireDefault(require("./MenuItemAction"));
17
- var _templateObject, _templateObject2, _templateObject3, _templateObject4, _templateObject5;
15
+ var _Divider = _interopRequireDefault(require("../divider/Divider"));
16
+ var _Inset = _interopRequireDefault(require("../inset/Inset"));
17
+ var _MenuItem = _interopRequireDefault(require("./MenuItem"));
18
+ var _templateObject, _templateObject2, _templateObject3;
18
19
  function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(e) { return e ? t : r; })(e); }
19
- 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 && Object.prototype.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; }
20
+ 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; }
21
+ function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
22
+ function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { (0, _defineProperty2["default"])(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
23
+ var ContextualMenuContext = exports.ContextualMenuContext = /*#__PURE__*/(0, _react.createContext)(null);
24
+ var isGroupItem = function isGroupItem(item) {
25
+ return "items" in item;
26
+ };
27
+ var isSection = function isSection(item) {
28
+ return "items" in item && !("label" in item);
29
+ };
30
+ var addIdToItems = function addIdToItems(items) {
31
+ var accId = 0;
32
+ var innerAddIdToItems = function innerAddIdToItems(items) {
33
+ return items.map(function (item) {
34
+ return isSection(item) ? _objectSpread(_objectSpread({}, item), {}, {
35
+ items: innerAddIdToItems(item.items)
36
+ }) : isGroupItem(item) ? _objectSpread(_objectSpread({}, item), {}, {
37
+ items: innerAddIdToItems(item.items)
38
+ }) : _objectSpread(_objectSpread({}, item), {}, {
39
+ id: accId++
40
+ });
41
+ });
42
+ };
43
+ return innerAddIdToItems(items);
44
+ };
20
45
  var DxcContextualMenu = function DxcContextualMenu(_ref) {
21
- var items = _ref.items,
22
- _ref$defaultSelectedI = _ref.defaultSelectedItemIndex,
23
- defaultSelectedItemIndex = _ref$defaultSelectedI === void 0 ? -1 : _ref$defaultSelectedI;
24
- var _useState = (0, _react.useState)(defaultSelectedItemIndex),
46
+ var items = _ref.items;
47
+ var _useState = (0, _react.useState)(-1),
25
48
  _useState2 = (0, _slicedToArray2["default"])(_useState, 2),
26
- selectedItemIndex = _useState2[0],
27
- setSelectedItemIndex = _useState2[1];
28
- var renderSingleItem = function renderSingleItem(item, index) {
29
- return /*#__PURE__*/_react["default"].createElement(Li, {
30
- key: "option-".concat(index),
31
- role: "menuitem"
32
- }, /*#__PURE__*/_react["default"].createElement(_MenuItemAction["default"], (0, _extends2["default"])({}, item, {
33
- selected: selectedItemIndex === index,
34
- onSelect: function onSelect() {
35
- var _item$onSelect;
36
- setSelectedItemIndex(index);
37
- (_item$onSelect = item.onSelect) === null || _item$onSelect === void 0 ? void 0 : _item$onSelect.call(item);
38
- }
39
- })));
40
- };
41
- var accLength = 0;
42
- var renderSection = function renderSection(section, currentSectionIndex, items) {
43
- var startingIndex = accLength;
44
- accLength += section.items.length;
49
+ selectedItemId = _useState2[0],
50
+ setSelectedItemId = _useState2[1];
51
+ var contextualMenuRef = (0, _react.useRef)(null);
52
+ var itemsWithId = (0, _react.useMemo)(function () {
53
+ return addIdToItems(items);
54
+ }, [items]);
55
+ var renderSection = function renderSection(section, currentSectionIndex, length) {
45
56
  return /*#__PURE__*/_react["default"].createElement(_react.Fragment, {
46
- key: "separator-".concat(currentSectionIndex)
47
- }, /*#__PURE__*/_react["default"].createElement(Li, {
48
- role: "group"
49
- }, section.title != null && /*#__PURE__*/_react["default"].createElement(Title, null, section.title), /*#__PURE__*/_react["default"].createElement(Section, null, section.items.map(function (item, index) {
50
- return renderSingleItem(item, startingIndex + index);
51
- }))), currentSectionIndex !== items.length - 1 && /*#__PURE__*/_react["default"].createElement(Divider, {
52
- "aria-hidden": true
53
- }));
57
+ key: "section-".concat(currentSectionIndex)
58
+ }, /*#__PURE__*/_react["default"].createElement("li", {
59
+ role: "group",
60
+ "aria-labelledby": section.title
61
+ }, section.title != null && /*#__PURE__*/_react["default"].createElement(Title, {
62
+ id: section.title
63
+ }, section.title), /*#__PURE__*/_react["default"].createElement(SectionList, null, section.items.map(function (item, index) {
64
+ return /*#__PURE__*/_react["default"].createElement(_MenuItem["default"], {
65
+ item: item,
66
+ key: "".concat(item.label, "-").concat(index)
67
+ });
68
+ }))), currentSectionIndex !== length - 1 && /*#__PURE__*/_react["default"].createElement(_Inset["default"], {
69
+ top: "0.25rem",
70
+ bottom: "0.25rem"
71
+ }, /*#__PURE__*/_react["default"].createElement(_Divider["default"], {
72
+ color: "lightGrey"
73
+ })));
54
74
  };
55
- return /*#__PURE__*/_react["default"].createElement(Menu, {
56
- role: "menu"
57
- }, items.map(function (item, index, items) {
58
- return "items" in item ? renderSection(item, index, items) : renderSingleItem(item, index);
59
- }));
60
- };
61
- var Menu = _styledComponents["default"].ul(_templateObject || (_templateObject = (0, _taggedTemplateLiteral2["default"])(["\n box-sizing: border-box;\n margin: 0;\n border: 1px solid ", ";\n border-radius: 0.25rem;\n padding: ", " ", ";\n\n display: grid;\n gap: ", ";\n min-width: 248px;\n max-height: 100%;\n background-color: ", ";\n\n overflow-y: auto;\n &::-webkit-scrollbar {\n width: 8px;\n height: 8px;\n }\n &::-webkit-scrollbar-thumb {\n background-color: ", ";\n border-radius: 0.25rem;\n }\n &::-webkit-scrollbar-track {\n background-color: ", ";\n border-radius: 0.25rem;\n }\n"])), _coreTokens["default"].color_grey_200, _coreTokens["default"].spacing_16, _coreTokens["default"].spacing_8, _coreTokens["default"].spacing_4, _coreTokens["default"].color_white, _coreTokens["default"].color_grey_700, _coreTokens["default"].color_grey_300);
62
- var Li = _styledComponents["default"].li(_templateObject2 || (_templateObject2 = (0, _taggedTemplateLiteral2["default"])(["\n display: grid;\n"])));
63
- var Section = _styledComponents["default"].ul(_templateObject3 || (_templateObject3 = (0, _taggedTemplateLiteral2["default"])(["\n list-style: none;\n margin: 0;\n padding: 0;\n display: grid;\n gap: ", ";\n"])), _coreTokens["default"].spacing_4);
64
- var Title = _styledComponents["default"].h2(_templateObject4 || (_templateObject4 = (0, _taggedTemplateLiteral2["default"])(["\n margin: 0 0 ", " 0;\n padding: ", ";\n color: ", ";\n font-family: ", ";\n font-size: ", ";\n font-weight: ", ";\n line-height: 24px;\n\n & + ul > li > button {\n padding-left: ", " !important;\n }\n"])), _coreTokens["default"].spacing_4, _coreTokens["default"].spacing_4, _coreTokens["default"].color_grey_900, _coreTokens["default"].type_sans, _coreTokens["default"].type_scale_03, _coreTokens["default"].type_semibold, _coreTokens["default"].spacing_12);
65
- var Divider = _styledComponents["default"].hr(_templateObject5 || (_templateObject5 = (0, _taggedTemplateLiteral2["default"])(["\n margin: ", " 0;\n border: none;\n height: 1px;\n background: ", ";\n"])), _coreTokens["default"].spacing_4, _coreTokens["default"].color_grey_200);
66
- DxcContextualMenu.Badge = function (props) {
67
- return /*#__PURE__*/_react["default"].createElement(_Badge["default"], (0, _extends2["default"])({}, props, {
68
- size: "small"
69
- }));
75
+ var _useState3 = (0, _react.useState)(true),
76
+ _useState4 = (0, _slicedToArray2["default"])(_useState3, 2),
77
+ firstUpdate = _useState4[0],
78
+ setFirstUpdate = _useState4[1];
79
+ (0, _react.useLayoutEffect)(function () {
80
+ if (selectedItemId !== -1 && firstUpdate) {
81
+ var _contextualMenuEl$scr;
82
+ var contextualMenuEl = contextualMenuRef === null || contextualMenuRef === void 0 ? void 0 : contextualMenuRef.current;
83
+ var selectedItemEl = contextualMenuEl === null || contextualMenuEl === void 0 ? void 0 : contextualMenuEl.querySelector("[aria-selected='true']");
84
+ contextualMenuEl === null || contextualMenuEl === void 0 ? void 0 : (_contextualMenuEl$scr = contextualMenuEl.scrollTo) === null || _contextualMenuEl$scr === void 0 ? void 0 : _contextualMenuEl$scr.call(contextualMenuEl, {
85
+ top: (selectedItemEl === null || selectedItemEl === void 0 ? void 0 : selectedItemEl.offsetTop) - (contextualMenuEl === null || contextualMenuEl === void 0 ? void 0 : contextualMenuEl.clientHeight) / 2
86
+ });
87
+ setFirstUpdate(false);
88
+ }
89
+ }, [firstUpdate, selectedItemId]);
90
+ return /*#__PURE__*/_react["default"].createElement(ContextualMenu, {
91
+ role: "menu",
92
+ ref: contextualMenuRef
93
+ }, /*#__PURE__*/_react["default"].createElement(ContextualMenuContext.Provider, {
94
+ value: {
95
+ selectedItemId: selectedItemId,
96
+ setSelectedItemId: setSelectedItemId
97
+ }
98
+ }, itemsWithId.map(function (item, index) {
99
+ return "items" in item && !("label" in item) ? renderSection(item, index, itemsWithId.length) : /*#__PURE__*/_react["default"].createElement(_MenuItem["default"], {
100
+ item: item,
101
+ key: "".concat(item.label, "-").concat(index)
102
+ });
103
+ })));
70
104
  };
105
+ var ContextualMenu = _styledComponents["default"].ul(_templateObject || (_templateObject = (0, _taggedTemplateLiteral2["default"])(["\n box-sizing: border-box;\n margin: 0;\n border: 1px solid ", ";\n border-radius: 0.25rem;\n padding: ", " ", ";\n display: grid;\n gap: ", ";\n min-width: 248px;\n max-height: 100%;\n background-color: ", ";\n overflow-y: auto;\n &::-webkit-scrollbar {\n width: 8px;\n height: 8px;\n }\n &::-webkit-scrollbar-thumb {\n background-color: ", ";\n border-radius: 0.25rem;\n }\n &::-webkit-scrollbar-track {\n background-color: ", ";\n border-radius: 0.25rem;\n }\n"])), _coreTokens["default"].color_grey_200, _coreTokens["default"].spacing_16, _coreTokens["default"].spacing_8, _coreTokens["default"].spacing_4, _coreTokens["default"].color_white, _coreTokens["default"].color_grey_700, _coreTokens["default"].color_grey_300);
106
+ var SectionList = _styledComponents["default"].ul(_templateObject2 || (_templateObject2 = (0, _taggedTemplateLiteral2["default"])(["\n list-style: none;\n margin: 0;\n padding: 0;\n display: grid;\n gap: ", ";\n"])), _coreTokens["default"].spacing_4);
107
+ var Title = _styledComponents["default"].h2(_templateObject3 || (_templateObject3 = (0, _taggedTemplateLiteral2["default"])(["\n margin: 0 0 ", " 0;\n padding: ", ";\n color: ", ";\n font-family: ", ";\n font-size: ", ";\n font-weight: ", ";\n line-height: 24px;\n"])), _coreTokens["default"].spacing_4, _coreTokens["default"].spacing_4, _coreTokens["default"].color_grey_900, _coreTokens["default"].type_sans, _coreTokens["default"].type_scale_03, _coreTokens["default"].type_semibold);
71
108
  var _default = exports["default"] = DxcContextualMenu;
@@ -1,32 +1,34 @@
1
1
  import React from "react";
2
2
  import Title from "../../.storybook/components/Title";
3
- import DxcContextualMenu from "./ContextualMenu";
3
+ import DxcContextualMenu, { ContextualMenuContext } from "./ContextualMenu";
4
4
  import DxcContainer from "../container/Container";
5
- import MenuItemAction from "./MenuItemAction";
5
+ import SingleItem from "./SingleItem";
6
6
  import ExampleContainer from "../../.storybook/components/ExampleContainer";
7
+ import DxcBadge from "../badge/Badge";
8
+ import { disabledRules } from "../../test/accessibility/rules/specific/contextual-menu/disabledRules";
9
+ import preview from "../../.storybook/preview";
7
10
 
8
11
  export default {
9
12
  title: "Contextual Menu",
10
13
  component: DxcContextualMenu,
14
+ parameters: {
15
+ // TODO: REMOVE
16
+ a11y: {
17
+ config: {
18
+ rules: [
19
+ ...disabledRules.map((ruleId) => ({ id: ruleId, reviewOnFail: true })),
20
+ ...preview?.parameters?.a11y?.config?.rules,
21
+ ],
22
+ },
23
+ },
24
+ },
11
25
  };
12
26
 
13
- const key_icon = (
14
- <svg xmlns="http://www.w3.org/2000/svg" height="24" viewBox="0 -960 960 960" width="24" fill="currentColor">
15
- <path d="M280-400q-33 0-56.5-23.5T200-480q0-33 23.5-56.5T280-560q33 0 56.5 23.5T360-480q0 33-23.5 56.5T280-400Zm0 160q-100 0-170-70T40-480q0-100 70-170t170-70q67 0 121.5 33t86.5 87h352l120 120-180 180-80-60-80 60-85-60h-47q-32 54-86.5 87T280-240Zm0-80q56 0 98.5-34t56.5-86h125l58 41 82-61 71 55 75-75-40-40H435q-14-52-56.5-86T280-640q-66 0-113 47t-47 113q0 66 47 113t113 47Z" />
16
- </svg>
17
- );
18
-
19
- const fav_icon = (
20
- <svg xmlns="http://www.w3.org/2000/svg" height="24" viewBox="0 -960 960 960" width="24" fill="currentColor">
21
- <path d="m480-120-58-52q-101-91-167-157T150-447.5Q111-500 95.5-544T80-634q0-94 63-157t157-63q52 0 99 22t81 62q34-40 81-62t99-22q94 0 157 63t63 157q0 46-15.5 90T810-447.5Q771-395 705-329T538-172l-58 52Zm0-108q96-86 158-147.5t98-107q36-45.5 50-81t14-70.5q0-60-40-100t-100-40q-47 0-87 26.5T518-680h-76q-15-41-55-67.5T300-774q-60 0-100 40t-40 100q0 35 14 70.5t50 81q36 45.5 98 107T480-228Zm0-273Z" />
22
- </svg>
23
- );
24
-
25
27
  const items = [{ label: "Item 1" }, { label: "Item 2" }, { label: "Item 3" }, { label: "Item 4" }];
26
28
 
27
29
  const sections = [
28
30
  {
29
- title: "Team repositories",
31
+ title: "Section title",
30
32
  items: [{ label: "Approved locations" }, { label: "Approved locations" }, { label: "Approved locations" }],
31
33
  },
32
34
  {
@@ -34,32 +36,65 @@ const sections = [
34
36
  },
35
37
  ];
36
38
 
39
+ const groupItems = [
40
+ {
41
+ title: "Section 1",
42
+ items: [
43
+ {
44
+ label: "Grouped Item 1",
45
+ icon: "favorite",
46
+ items: [
47
+ { label: "Item 1" },
48
+ {
49
+ label: "Grouped Item 2",
50
+ items: [
51
+ {
52
+ label: "Item 2",
53
+ icon: "bookmark",
54
+ badge: <DxcBadge color="purple" label="Experimental" />,
55
+ },
56
+ { label: "Selected Item 3", selectedByDefault: true },
57
+ ],
58
+ },
59
+ ],
60
+ badge: <DxcBadge color="green" label="New" />,
61
+ },
62
+ { label: "Item 4", icon: "key" },
63
+ ],
64
+ },
65
+ {
66
+ title: "Section 2",
67
+ items: [
68
+ { label: "Item 5" },
69
+ { label: "Grouped Item 6", items: [{ label: "Item 7" }, { label: "Item 8" }] },
70
+ { label: "Item 9" },
71
+ ],
72
+ },
73
+ ];
74
+
37
75
  const itemsWithIcon = [
38
76
  {
39
77
  label: "Item 1",
40
- icon: key_icon,
78
+ icon: (
79
+ <svg xmlns="http://www.w3.org/2000/svg" height="24" viewBox="0 -960 960 960" width="24">
80
+ <path d="M200-120v-640q0-33 23.5-56.5T280-840h400q33 0 56.5 23.5T760-760v640L480-240 200-120Zm80-122 200-86 200 86v-518H280v518Zm0-518h400-400Z" />
81
+ </svg>
82
+ ),
41
83
  },
42
84
  {
43
85
  label: "Item 2",
44
- icon: fav_icon,
86
+ icon: "star",
45
87
  },
46
88
  ];
47
89
 
48
- const itemsWithSlot = [
90
+ const itemsWithBadge = [
49
91
  {
50
92
  label: "Item 1",
51
- slot: <DxcContextualMenu.Badge color="green" label="New" />,
93
+ badge: <DxcBadge color="green" label="New" />,
52
94
  },
53
95
  {
54
96
  label: "Item 2",
55
- slot: (
56
- <svg width="12" height="12" viewBox="0 0 12 12" fill="currentColor" xmlns="http://www.w3.org/2000/svg">
57
- <path
58
- d="M10.6667 10.6667H1.33333V1.33333H6V0H1.33333C0.593333 0 0 0.6 0 1.33333V10.6667C0 11.4 0.593333 12 1.33333 12H10.6667C11.4 12 12 11.4 12 10.6667V6H10.6667V10.6667ZM7.33333 0V1.33333H9.72667L3.17333 7.88667L4.11333 8.82667L10.6667 2.27333V4.66667H12V0H7.33333Z"
59
- fill="#323232"
60
- />
61
- </svg>
62
- ),
97
+ badge: <DxcBadge color="purple" label="Experimental" />,
63
98
  },
64
99
  ];
65
100
 
@@ -78,7 +113,7 @@ const sectionsWithScroll = [
78
113
  { label: "Approved locations" },
79
114
  { label: "Approved locations" },
80
115
  { label: "Approved locations" },
81
- { label: "Approved locations" },
116
+ { label: "Approved locations", selectedByDefault: true },
82
117
  ],
83
118
  },
84
119
  ];
@@ -86,20 +121,16 @@ const sectionsWithScroll = [
86
121
  const itemsWithTruncatedText = [
87
122
  {
88
123
  label: "Item with a very long label that should be truncated",
89
- slot: <DxcContextualMenu.Badge color="green" label="New" />,
90
- icon: key_icon,
124
+ badge: <DxcBadge color="green" label="New" />,
125
+ icon: (
126
+ <svg xmlns="http://www.w3.org/2000/svg" height="24" viewBox="0 -960 960 960" width="24">
127
+ <path d="M200-120v-640q0-33 23.5-56.5T280-840h400q33 0 56.5 23.5T760-760v640L480-240 200-120Zm80-122 200-86 200 86v-518H280v518Zm0-518h400-400Z" />
128
+ </svg>
129
+ ),
91
130
  },
92
131
  {
93
132
  label: "Item 2",
94
- slot: (
95
- <svg width="12" height="12" viewBox="0 0 12 12" fill="currentColor" xmlns="http://www.w3.org/2000/svg">
96
- <path
97
- d="M10.6667 10.6667H1.33333V1.33333H6V0H1.33333C0.593333 0 0 0.6 0 1.33333V10.6667C0 11.4 0.593333 12 1.33333 12H10.6667C11.4 12 12 11.4 12 10.6667V6H10.6667V10.6667ZM7.33333 0V1.33333H9.72667L3.17333 7.88667L4.11333 8.82667L10.6667 2.27333V4.66667H12V0H7.33333Z"
98
- fill="#323232"
99
- />
100
- </svg>
101
- ),
102
- icon: fav_icon,
133
+ icon: "favorite",
103
134
  },
104
135
  ];
105
136
 
@@ -115,16 +146,22 @@ export const Chromatic = () => (
115
146
  <DxcContextualMenu items={sections} />
116
147
  </DxcContainer>
117
148
  </ExampleContainer>
149
+ <Title title="With group items" theme="light" level={3} />
150
+ <ExampleContainer>
151
+ <DxcContainer width="300px">
152
+ <DxcContextualMenu items={groupItems} />
153
+ </DxcContainer>
154
+ </ExampleContainer>
118
155
  <Title title="With icons" theme="light" level={3} />
119
156
  <ExampleContainer>
120
157
  <DxcContainer width="300px">
121
- <DxcContextualMenu items={itemsWithIcon} defaultSelectedItemIndex={0} />
158
+ <DxcContextualMenu items={itemsWithIcon} />
122
159
  </DxcContainer>
123
160
  </ExampleContainer>
124
- <Title title="With slot" theme="light" level={3} />
161
+ <Title title="With badge" theme="light" level={3} />
125
162
  <ExampleContainer>
126
163
  <DxcContainer width="300px">
127
- <DxcContextualMenu items={itemsWithSlot} />
164
+ <DxcContextualMenu items={itemsWithBadge} />
128
165
  </DxcContainer>
129
166
  </ExampleContainer>
130
167
  <Title title="With label truncated" theme="light" level={3} />
@@ -133,7 +170,7 @@ export const Chromatic = () => (
133
170
  <DxcContextualMenu items={itemsWithTruncatedText} />
134
171
  </DxcContainer>
135
172
  </ExampleContainer>
136
- <Title title="With scroll" theme="light" level={3} />
173
+ <Title title="With auto-scroll" theme="light" level={3} />
137
174
  <ExampleContainer>
138
175
  <DxcContainer height="300px" width="300px">
139
176
  <DxcContextualMenu items={sectionsWithScroll} />
@@ -148,35 +185,39 @@ export const Chromatic = () => (
148
185
  </>
149
186
  );
150
187
 
151
- export const MenuItemStates = () => (
152
- <>
153
- <Title title="Default" theme="light" level={3} />
154
- <ExampleContainer>
155
- <MenuItemAction {...items[0]} selected={false} />
156
- </ExampleContainer>
157
- <Title title="Focus" theme="light" level={3} />
158
- <ExampleContainer pseudoState="pseudo-focus">
159
- <MenuItemAction {...items[0]} selected={false} />
160
- </ExampleContainer>
161
- <Title title="Hover" theme="light" level={3} />
162
- <ExampleContainer pseudoState="pseudo-hover">
163
- <MenuItemAction {...items[0]} selected={false} />
164
- </ExampleContainer>
165
- <Title title="Active" theme="light" level={3} />
166
- <ExampleContainer pseudoState="pseudo-active">
167
- <MenuItemAction {...items[0]} selected={false} />
168
- </ExampleContainer>
169
- <Title title="Selected" theme="light" level={3} />
170
- <ExampleContainer>
171
- <MenuItemAction {...items[0]} selected />
172
- </ExampleContainer>
173
- <Title title="Selected hover" theme="light" level={3} />
174
- <ExampleContainer pseudoState="pseudo-hover">
175
- <MenuItemAction {...items[0]} selected />
176
- </ExampleContainer>
177
- <Title title="Selected active" theme="light" level={3} />
178
- <ExampleContainer pseudoState="pseudo-active">
179
- <MenuItemAction {...items[0]} selected />
180
- </ExampleContainer>
181
- </>
188
+ export const SingleItemStates = () => (
189
+ <DxcContainer width="300px">
190
+ <ContextualMenuContext.Provider value={{ selectedItemId: -1, setSelectedItemId: () => {} }}>
191
+ <Title title="Default" theme="light" level={3} />
192
+ <ExampleContainer>
193
+ <SingleItem {...items[0]} id={0} depthLevel={0} />
194
+ </ExampleContainer>
195
+ <Title title="Focus" theme="light" level={3} />
196
+ <ExampleContainer pseudoState="pseudo-focus">
197
+ <SingleItem {...items[0]} id={0} depthLevel={0} />
198
+ </ExampleContainer>
199
+ <Title title="Hover" theme="light" level={3} />
200
+ <ExampleContainer pseudoState="pseudo-hover">
201
+ <SingleItem {...items[0]} id={0} depthLevel={0} />
202
+ </ExampleContainer>
203
+ <Title title="Active" theme="light" level={3} />
204
+ <ExampleContainer pseudoState="pseudo-active">
205
+ <SingleItem {...items[0]} id={0} depthLevel={0} />
206
+ </ExampleContainer>
207
+ </ContextualMenuContext.Provider>
208
+ <ContextualMenuContext.Provider value={{ selectedItemId: 0, setSelectedItemId: () => {} }}>
209
+ <Title title="Selected" theme="light" level={3} />
210
+ <ExampleContainer>
211
+ <SingleItem {...items[0]} id={0} depthLevel={0} />
212
+ </ExampleContainer>
213
+ <Title title="Selected hover" theme="light" level={3} />
214
+ <ExampleContainer pseudoState="pseudo-hover">
215
+ <SingleItem {...items[0]} id={0} depthLevel={0} />
216
+ </ExampleContainer>
217
+ <Title title="Selected active" theme="light" level={3} />
218
+ <ExampleContainer pseudoState="pseudo-active">
219
+ <SingleItem {...items[0]} id={0} depthLevel={0} />
220
+ </ExampleContainer>
221
+ </ContextualMenuContext.Provider>
222
+ </DxcContainer>
182
223
  );
@@ -0,0 +1 @@
1
+ export {};