@dxc-technology/halstack-react 0.0.0-f2bad31 → 0.0.0-f319e71

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 (330) 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.js +6 -4
  29. package/badge/Badge.stories.tsx +11 -11
  30. package/badge/Badge.test.d.ts +1 -0
  31. package/badge/Badge.test.js +2 -2
  32. package/badge/types.d.ts +1 -1
  33. package/box/Box.accessibility.test.d.ts +1 -0
  34. package/box/Box.accessibility.test.js +3 -3
  35. package/box/Box.js +1 -1
  36. package/box/Box.test.d.ts +1 -0
  37. package/box/Box.test.js +1 -1
  38. package/breadcrumbs/Breadcrumbs.accessibility.test.d.ts +1 -0
  39. package/breadcrumbs/Breadcrumbs.accessibility.test.js +96 -0
  40. package/breadcrumbs/Breadcrumbs.d.ts +4 -0
  41. package/breadcrumbs/Breadcrumbs.js +79 -0
  42. package/breadcrumbs/Breadcrumbs.stories.tsx +194 -0
  43. package/breadcrumbs/Breadcrumbs.test.d.ts +1 -0
  44. package/breadcrumbs/Breadcrumbs.test.js +168 -0
  45. package/breadcrumbs/Item.d.ts +4 -0
  46. package/breadcrumbs/Item.js +52 -0
  47. package/breadcrumbs/dropdownTheme.d.ts +53 -0
  48. package/breadcrumbs/dropdownTheme.js +62 -0
  49. package/breadcrumbs/types.d.ts +16 -0
  50. package/breadcrumbs/types.js +5 -0
  51. package/bulleted-list/BulletedList.accessibility.test.d.ts +1 -0
  52. package/bulleted-list/BulletedList.accessibility.test.js +18 -6
  53. package/bulleted-list/BulletedList.js +2 -2
  54. package/button/Button.accessibility.test.d.ts +1 -0
  55. package/button/Button.accessibility.test.js +6 -6
  56. package/button/Button.js +1 -1
  57. package/button/Button.stories.tsx +3 -3
  58. package/button/Button.test.d.ts +1 -0
  59. package/button/Button.test.js +1 -1
  60. package/card/Card.accessibility.test.d.ts +1 -0
  61. package/card/Card.accessibility.test.js +3 -3
  62. package/card/Card.js +3 -2
  63. package/card/Card.stories.tsx +1 -1
  64. package/card/Card.test.d.ts +1 -0
  65. package/card/Card.test.js +1 -1
  66. package/checkbox/Checkbox.accessibility.test.d.ts +1 -0
  67. package/checkbox/Checkbox.accessibility.test.js +5 -5
  68. package/checkbox/Checkbox.js +10 -13
  69. package/checkbox/Checkbox.test.d.ts +1 -0
  70. package/checkbox/Checkbox.test.js +1 -1
  71. package/chip/Chip.accessibility.test.d.ts +1 -0
  72. package/chip/Chip.accessibility.test.js +4 -4
  73. package/chip/Chip.js +3 -1
  74. package/chip/Chip.stories.tsx +1 -1
  75. package/chip/Chip.test.d.ts +1 -0
  76. package/chip/Chip.test.js +1 -1
  77. package/common/coreTokens.js +3 -3
  78. package/common/variables.d.ts +2 -5
  79. package/common/variables.js +68 -71
  80. package/container/Container.stories.tsx +3 -3
  81. package/contextual-menu/ContextualMenu.accessibility.test.d.ts +1 -0
  82. package/contextual-menu/ContextualMenu.accessibility.test.js +15 -3
  83. package/contextual-menu/ContextualMenu.d.ts +3 -5
  84. package/contextual-menu/ContextualMenu.js +89 -52
  85. package/contextual-menu/ContextualMenu.stories.tsx +115 -74
  86. package/contextual-menu/ContextualMenu.test.d.ts +1 -0
  87. package/contextual-menu/ContextualMenu.test.js +200 -24
  88. package/contextual-menu/GroupItem.d.ts +4 -0
  89. package/contextual-menu/GroupItem.js +67 -0
  90. package/contextual-menu/ItemAction.d.ts +4 -0
  91. package/contextual-menu/ItemAction.js +50 -0
  92. package/contextual-menu/MenuItem.d.ts +4 -0
  93. package/contextual-menu/MenuItem.js +29 -0
  94. package/contextual-menu/SingleItem.d.ts +4 -0
  95. package/contextual-menu/SingleItem.js +38 -0
  96. package/contextual-menu/types.d.ts +50 -11
  97. package/date-input/Calendar.js +47 -31
  98. package/date-input/DateInput.accessibility.test.d.ts +1 -0
  99. package/date-input/DateInput.accessibility.test.js +24 -11
  100. package/date-input/DateInput.js +28 -23
  101. package/date-input/DateInput.stories.tsx +18 -12
  102. package/date-input/DateInput.test.d.ts +1 -0
  103. package/date-input/DateInput.test.js +39 -39
  104. package/date-input/DatePicker.js +13 -7
  105. package/date-input/YearPicker.js +10 -5
  106. package/dialog/Dialog.accessibility.test.d.ts +1 -0
  107. package/dialog/Dialog.accessibility.test.js +5 -5
  108. package/dialog/Dialog.js +9 -20
  109. package/dialog/Dialog.stories.tsx +8 -4
  110. package/dialog/Dialog.test.d.ts +1 -0
  111. package/dialog/Dialog.test.js +111 -48
  112. package/divider/Divider.accessibility.test.d.ts +1 -0
  113. package/divider/Divider.accessibility.test.js +2 -2
  114. package/divider/Divider.stories.tsx +2 -1
  115. package/divider/Divider.test.d.ts +1 -0
  116. package/dropdown/Dropdown.accessibility.test.d.ts +1 -0
  117. package/dropdown/Dropdown.accessibility.test.js +12 -9
  118. package/dropdown/Dropdown.js +16 -15
  119. package/dropdown/Dropdown.stories.tsx +11 -11
  120. package/dropdown/Dropdown.test.d.ts +1 -0
  121. package/dropdown/Dropdown.test.js +101 -72
  122. package/dropdown/DropdownMenu.js +4 -4
  123. package/dropdown/DropdownMenuItem.js +2 -1
  124. package/file-input/FileInput.accessibility.test.d.ts +1 -0
  125. package/file-input/FileInput.accessibility.test.js +30 -23
  126. package/file-input/FileInput.js +6 -47
  127. package/file-input/FileInput.test.d.ts +1 -0
  128. package/file-input/FileInput.test.js +51 -106
  129. package/file-input/FileItem.js +18 -28
  130. package/file-input/types.d.ts +0 -4
  131. package/footer/Footer.accessibility.test.d.ts +1 -0
  132. package/footer/Footer.accessibility.test.js +13 -5
  133. package/footer/Footer.js +8 -6
  134. package/footer/Footer.stories.tsx +39 -1
  135. package/footer/Footer.test.d.ts +1 -0
  136. package/footer/Footer.test.js +1 -1
  137. package/footer/Icons.js +2 -30
  138. package/footer/types.d.ts +1 -1
  139. package/grid/Grid.stories.tsx +3 -1
  140. package/header/Header.accessibility.test.d.ts +1 -0
  141. package/header/Header.accessibility.test.js +16 -6
  142. package/header/Header.js +12 -22
  143. package/header/Header.stories.tsx +17 -1
  144. package/header/Header.test.d.ts +1 -0
  145. package/header/Header.test.js +1 -1
  146. package/header/Icons.js +1 -6
  147. package/heading/Heading.accessibility.test.d.ts +1 -0
  148. package/heading/Heading.accessibility.test.js +3 -3
  149. package/heading/Heading.js +1 -1
  150. package/heading/Heading.test.d.ts +1 -0
  151. package/heading/Heading.test.js +1 -14
  152. package/icon/Icon.accessibility.test.d.ts +1 -0
  153. package/icon/Icon.accessibility.test.js +2 -2
  154. package/icon/Icon.js +1 -1
  155. package/icon/Icon.stories.tsx +1 -1
  156. package/image/Image.accessibility.test.d.ts +1 -0
  157. package/image/Image.accessibility.test.js +3 -3
  158. package/image/Image.js +1 -1
  159. package/layout/ApplicationLayout.js +9 -6
  160. package/layout/Icons.d.ts +0 -1
  161. package/layout/Icons.js +1 -9
  162. package/link/Link.accessibility.test.d.ts +1 -0
  163. package/link/Link.accessibility.test.js +8 -12
  164. package/link/Link.js +8 -6
  165. package/link/Link.stories.tsx +4 -4
  166. package/link/Link.test.d.ts +1 -0
  167. package/link/Link.test.js +1 -1
  168. package/link/types.d.ts +1 -1
  169. package/main.d.ts +2 -1
  170. package/main.js +8 -1
  171. package/nav-tabs/NavTabs.accessibility.test.d.ts +1 -0
  172. package/nav-tabs/NavTabs.accessibility.test.js +8 -16
  173. package/nav-tabs/NavTabs.js +19 -4
  174. package/nav-tabs/NavTabs.stories.tsx +41 -23
  175. package/nav-tabs/NavTabs.test.d.ts +1 -0
  176. package/nav-tabs/NavTabs.test.js +10 -9
  177. package/nav-tabs/Tab.js +17 -18
  178. package/nav-tabs/types.d.ts +1 -1
  179. package/number-input/NumberInput.accessibility.test.d.ts +1 -0
  180. package/number-input/NumberInput.accessibility.test.js +9 -10
  181. package/number-input/NumberInput.js +6 -3
  182. package/number-input/NumberInput.stories.tsx +11 -16
  183. package/number-input/NumberInput.test.d.ts +1 -0
  184. package/number-input/NumberInput.test.js +6 -7
  185. package/package.json +25 -20
  186. package/paginator/Paginator.accessibility.test.d.ts +1 -0
  187. package/paginator/Paginator.accessibility.test.js +4 -5
  188. package/paginator/Paginator.js +13 -10
  189. package/paginator/Paginator.test.d.ts +1 -0
  190. package/paginator/Paginator.test.js +2 -3
  191. package/paragraph/Paragraph.accessibility.test.d.ts +1 -0
  192. package/paragraph/Paragraph.accessibility.test.js +2 -2
  193. package/password-input/PasswordInput.accessibility.test.d.ts +1 -0
  194. package/password-input/PasswordInput.accessibility.test.js +7 -8
  195. package/password-input/PasswordInput.js +11 -8
  196. package/password-input/PasswordInput.stories.tsx +10 -1
  197. package/password-input/PasswordInput.test.d.ts +1 -0
  198. package/password-input/PasswordInput.test.js +6 -7
  199. package/progress-bar/ProgressBar.accessibility.test.d.ts +1 -0
  200. package/progress-bar/ProgressBar.accessibility.test.js +3 -3
  201. package/progress-bar/ProgressBar.js +6 -4
  202. package/progress-bar/ProgressBar.test.d.ts +1 -0
  203. package/progress-bar/ProgressBar.test.js +1 -1
  204. package/quick-nav/QuickNav.accessibility.test.d.ts +1 -0
  205. package/quick-nav/QuickNav.accessibility.test.js +2 -2
  206. package/quick-nav/QuickNav.js +1 -1
  207. package/radio-group/Radio.js +6 -9
  208. package/radio-group/RadioGroup.accessibility.test.d.ts +1 -0
  209. package/radio-group/RadioGroup.accessibility.test.js +4 -4
  210. package/radio-group/RadioGroup.js +14 -16
  211. package/radio-group/RadioGroup.test.d.ts +1 -0
  212. package/radio-group/RadioGroup.test.js +3 -5
  213. package/resultset-table/ResultsetTable.accessibility.test.d.ts +1 -0
  214. package/resultset-table/ResultsetTable.accessibility.test.js +16 -6
  215. package/resultset-table/ResultsetTable.js +36 -11
  216. package/resultset-table/ResultsetTable.stories.tsx +14 -2
  217. package/resultset-table/ResultsetTable.test.d.ts +1 -0
  218. package/resultset-table/ResultsetTable.test.js +103 -34
  219. package/select/Listbox.js +24 -16
  220. package/select/Option.js +12 -10
  221. package/select/Select.accessibility.test.d.ts +1 -0
  222. package/select/Select.accessibility.test.js +18 -8
  223. package/select/Select.js +41 -29
  224. package/select/Select.stories.tsx +69 -111
  225. package/select/Select.test.d.ts +1 -0
  226. package/select/Select.test.js +371 -474
  227. package/select/types.d.ts +1 -1
  228. package/sidenav/Sidenav.accessibility.test.d.ts +1 -0
  229. package/sidenav/Sidenav.accessibility.test.js +3 -3
  230. package/sidenav/Sidenav.js +16 -12
  231. package/sidenav/Sidenav.stories.tsx +5 -9
  232. package/sidenav/Sidenav.test.d.ts +1 -0
  233. package/sidenav/Sidenav.test.js +1 -1
  234. package/sidenav/types.d.ts +2 -2
  235. package/slider/Slider.accessibility.test.d.ts +1 -0
  236. package/slider/Slider.accessibility.test.js +5 -6
  237. package/slider/Slider.js +11 -13
  238. package/slider/Slider.stories.tsx +180 -0
  239. package/slider/Slider.test.d.ts +1 -0
  240. package/slider/Slider.test.js +13 -11
  241. package/spinner/Spinner.accessibility.test.d.ts +1 -0
  242. package/spinner/Spinner.accessibility.test.js +6 -6
  243. package/spinner/Spinner.js +6 -2
  244. package/spinner/Spinner.test.d.ts +1 -0
  245. package/spinner/Spinner.test.js +1 -1
  246. package/status-light/StatusLight.accessibility.test.d.ts +1 -0
  247. package/status-light/StatusLight.accessibility.test.js +8 -8
  248. package/status-light/StatusLight.test.d.ts +1 -0
  249. package/status-light/StatusLight.test.js +1 -1
  250. package/switch/Switch.accessibility.test.d.ts +1 -0
  251. package/switch/Switch.accessibility.test.js +14 -5
  252. package/switch/Switch.js +6 -9
  253. package/switch/Switch.stories.tsx +12 -0
  254. package/switch/Switch.test.d.ts +1 -0
  255. package/switch/Switch.test.js +1 -1
  256. package/table/Table.accessibility.test.d.ts +1 -0
  257. package/table/Table.accessibility.test.js +16 -6
  258. package/table/Table.js +1 -1
  259. package/table/Table.stories.tsx +13 -1
  260. package/table/Table.test.d.ts +1 -0
  261. package/table/Table.test.js +2 -4
  262. package/tabs/Tab.js +6 -5
  263. package/tabs/Tabs.accessibility.test.d.ts +1 -0
  264. package/tabs/Tabs.accessibility.test.js +3 -3
  265. package/tabs/Tabs.js +9 -20
  266. package/tabs/Tabs.stories.tsx +7 -3
  267. package/tabs/Tabs.test.d.ts +1 -0
  268. package/tabs/Tabs.test.js +20 -38
  269. package/tabs/types.d.ts +2 -2
  270. package/tag/Tag.accessibility.test.d.ts +1 -0
  271. package/tag/Tag.accessibility.test.js +4 -4
  272. package/tag/Tag.js +7 -7
  273. package/tag/Tag.stories.tsx +5 -8
  274. package/tag/Tag.test.d.ts +1 -0
  275. package/tag/Tag.test.js +5 -13
  276. package/tag/types.d.ts +2 -2
  277. package/text-input/Suggestion.js +1 -1
  278. package/text-input/Suggestions.js +14 -6
  279. package/text-input/TextInput.accessibility.test.d.ts +1 -0
  280. package/text-input/TextInput.accessibility.test.js +11 -12
  281. package/text-input/TextInput.js +29 -25
  282. package/text-input/TextInput.stories.tsx +19 -7
  283. package/text-input/TextInput.test.d.ts +1 -0
  284. package/text-input/TextInput.test.js +2 -3
  285. package/textarea/Textarea.accessibility.test.d.ts +1 -0
  286. package/textarea/Textarea.accessibility.test.js +7 -7
  287. package/textarea/Textarea.js +14 -13
  288. package/textarea/Textarea.test.d.ts +1 -0
  289. package/textarea/Textarea.test.js +1 -1
  290. package/toggle-group/ToggleGroup.accessibility.test.d.ts +1 -0
  291. package/toggle-group/ToggleGroup.accessibility.test.js +5 -5
  292. package/toggle-group/ToggleGroup.js +10 -12
  293. package/toggle-group/ToggleGroup.stories.tsx +4 -4
  294. package/toggle-group/ToggleGroup.test.d.ts +1 -0
  295. package/toggle-group/ToggleGroup.test.js +1 -1
  296. package/toggle-group/types.d.ts +2 -2
  297. package/tooltip/Tooltip.accessibility.test.d.ts +1 -0
  298. package/tooltip/Tooltip.accessibility.test.js +144 -0
  299. package/tooltip/Tooltip.d.ts +4 -0
  300. package/tooltip/Tooltip.js +50 -0
  301. package/tooltip/Tooltip.stories.tsx +111 -0
  302. package/tooltip/Tooltip.test.d.ts +1 -0
  303. package/tooltip/Tooltip.test.js +112 -0
  304. package/tooltip/types.d.ts +16 -0
  305. package/tooltip/types.js +5 -0
  306. package/typography/Typography.accessibility.test.d.ts +1 -0
  307. package/typography/Typography.accessibility.test.js +12 -12
  308. package/typography/Typography.stories.tsx +1 -3
  309. package/useTheme.d.ts +2 -5
  310. package/utils/BaseTypography.js +1 -1
  311. package/utils/FocusLock.js +3 -2
  312. package/wizard/Wizard.accessibility.test.d.ts +1 -0
  313. package/wizard/Wizard.accessibility.test.js +3 -3
  314. package/wizard/Wizard.js +14 -25
  315. package/wizard/Wizard.stories.tsx +20 -1
  316. package/wizard/Wizard.test.d.ts +1 -0
  317. package/wizard/Wizard.test.js +1 -1
  318. package/wizard/types.d.ts +1 -1
  319. package/contextual-menu/MenuItemAction.d.ts +0 -4
  320. package/contextual-menu/MenuItemAction.js +0 -46
  321. package/date-input/Icons.d.ts +0 -6
  322. package/date-input/Icons.js +0 -58
  323. package/paginator/Icons.d.ts +0 -5
  324. package/paginator/Icons.js +0 -40
  325. package/password-input/Icons.d.ts +0 -6
  326. package/password-input/Icons.js +0 -35
  327. package/select/Icons.d.ts +0 -10
  328. package/select/Icons.js +0 -89
  329. package/sidenav/Icons.d.ts +0 -7
  330. package/sidenav/Icons.js +0 -47
@@ -20,18 +20,18 @@ var componentTokens = exports.componentTokens = {
20
20
  assistiveTextFontColor: _coreTokens["default"].color_grey_700,
21
21
  disabledAssistiveTextFontColor: _coreTokens["default"].color_grey_500,
22
22
  assistiveTextMinWidth: "100px",
23
- assistiveTextPaddingRight: "24px",
24
- assistiveTextPaddingLeft: "0px",
23
+ assistiveTextPaddingRight: _coreTokens["default"].spacing_24,
24
+ assistiveTextPaddingLeft: _coreTokens["default"].spacing_0,
25
25
  titleLabelFontFamily: _coreTokens["default"].type_sans,
26
26
  titleLabelFontSize: _coreTokens["default"].type_scale_03,
27
27
  titleLabelFontWeight: _coreTokens["default"].type_regular,
28
28
  titleLabelFontStyle: _coreTokens["default"].type_normal,
29
29
  titleLabelFontColor: _coreTokens["default"].color_black,
30
30
  disabledTitleLabelFontColor: _coreTokens["default"].color_grey_500,
31
- titleLabelPaddingTop: "0px",
32
- titleLabelPaddingBottom: "0px",
33
- titleLabelPaddingLeft: "0px",
34
- titleLabelPaddingRight: "16px",
31
+ titleLabelPaddingTop: _coreTokens["default"].spacing_0,
32
+ titleLabelPaddingBottom: _coreTokens["default"].spacing_0,
33
+ titleLabelPaddingLeft: _coreTokens["default"].spacing_0,
34
+ titleLabelPaddingRight: _coreTokens["default"].spacing_16,
35
35
  focusBorderColor: _coreTokens["default"].color_blue_600,
36
36
  focusBorderStyle: _coreTokens["default"].border_solid,
37
37
  focusBorderThickness: "2px",
@@ -43,8 +43,8 @@ var componentTokens = exports.componentTokens = {
43
43
  iconColor: _coreTokens["default"].color_purple_700,
44
44
  disabledIconColor: _coreTokens["default"].color_grey_500,
45
45
  iconSize: "24px",
46
- iconMarginLeft: "0px",
47
- iconMarginRight: "12px",
46
+ iconMarginLeft: _coreTokens["default"].spacing_0,
47
+ iconMarginRight: _coreTokens["default"].spacing_12,
48
48
  accordionGroupSeparatorBorderColor: _coreTokens["default"].color_grey_200_a,
49
49
  accordionGroupSeparatorBorderThickness: "1px",
50
50
  accordionGroupSeparatorBorderRadius: "0px",
@@ -57,17 +57,17 @@ var componentTokens = exports.componentTokens = {
57
57
  titleFontStyle: _coreTokens["default"].type_normal,
58
58
  titleFontWeight: _coreTokens["default"].type_bold,
59
59
  titleTextTransform: _coreTokens["default"].type_uppercase,
60
- titlePaddingRight: "0px",
61
- titlePaddingLeft: "0px",
60
+ titlePaddingRight: _coreTokens["default"].spacing_0,
61
+ titlePaddingLeft: _coreTokens["default"].spacing_0,
62
62
  inlineTextFontFamily: _coreTokens["default"].type_sans,
63
63
  inlineTextFontColor: _coreTokens["default"].color_black,
64
64
  inlineTextFontSize: _coreTokens["default"].type_scale_01,
65
65
  inlineTextFontStyle: _coreTokens["default"].type_normal,
66
66
  inlineTextFontWeight: _coreTokens["default"].type_regular,
67
- inlineTextPaddingLeft: "0px",
68
- inlineTextPaddingRight: "0px",
69
- contentPaddingLeft: "0px",
70
- contentPaddingRight: "0px",
67
+ inlineTextPaddingLeft: _coreTokens["default"].spacing_0,
68
+ inlineTextPaddingRight: _coreTokens["default"].spacing_0,
69
+ contentPaddingLeft: _coreTokens["default"].spacing_0,
70
+ contentPaddingRight: _coreTokens["default"].spacing_0,
71
71
  contentPaddingTop: "20px",
72
72
  contentPaddingBottom: "30px",
73
73
  borderRadius: "4px",
@@ -78,8 +78,8 @@ var componentTokens = exports.componentTokens = {
78
78
  warningBorderColor: _coreTokens["default"].color_yellow_700,
79
79
  errorBorderColor: _coreTokens["default"].color_red_700,
80
80
  iconSize: "24px",
81
- iconPaddingLeft: "0px",
82
- iconPaddingRight: "0px",
81
+ iconPaddingLeft: _coreTokens["default"].spacing_0,
82
+ iconPaddingRight: _coreTokens["default"].spacing_0,
83
83
  infoIconColor: _coreTokens["default"].color_blue_800,
84
84
  successIconColor: _coreTokens["default"].color_green_700,
85
85
  warningIconColor: _coreTokens["default"].color_yellow_700,
@@ -121,7 +121,7 @@ var componentTokens = exports.componentTokens = {
121
121
  bulletIconWidth: "1.5rem",
122
122
  bulletHeight: "5px",
123
123
  bulletWidth: "5px",
124
- bulletMarginRight: "0.5rem"
124
+ bulletMarginRight: _coreTokens["default"].spacing_8
125
125
  },
126
126
  button: {
127
127
  labelFontLineHeight: _coreTokens["default"].type_leading_normal,
@@ -195,7 +195,7 @@ var componentTokens = exports.componentTokens = {
195
195
  fontColor: _coreTokens["default"].color_black,
196
196
  disabledFontColor: _coreTokens["default"].color_grey_500,
197
197
  focusColor: _coreTokens["default"].color_blue_600,
198
- checkLabelSpacing: "8px"
198
+ checkLabelSpacing: _coreTokens["default"].spacing_8
199
199
  },
200
200
  chip: {
201
201
  backgroundColor: _coreTokens["default"].color_grey_200,
@@ -210,12 +210,12 @@ var componentTokens = exports.componentTokens = {
210
210
  borderRadius: "80px",
211
211
  borderThickness: _coreTokens["default"].border_width_0,
212
212
  borderStyle: _coreTokens["default"].border_solid,
213
- contentPaddingLeft: "16px",
214
- contentPaddingRight: "16px",
215
- contentPaddingTop: "0px",
216
- contentPaddingBottom: "0px",
213
+ contentPaddingLeft: _coreTokens["default"].spacing_16,
214
+ contentPaddingRight: _coreTokens["default"].spacing_16,
215
+ contentPaddingTop: _coreTokens["default"].spacing_0,
216
+ contentPaddingBottom: _coreTokens["default"].spacing_0,
217
217
  iconSize: "24px",
218
- iconSpacing: "8px",
218
+ iconSpacing: _coreTokens["default"].spacing_8,
219
219
  iconColor: _coreTokens["default"].color_grey_800,
220
220
  hoverIconColor: _coreTokens["default"].color_grey_900,
221
221
  activeIconColor: _coreTokens["default"].color_black,
@@ -259,8 +259,7 @@ var componentTokens = exports.componentTokens = {
259
259
  dialog: {
260
260
  overlayColor: _coreTokens["default"].color_grey_800_a,
261
261
  backgroundColor: _coreTokens["default"].color_white,
262
- closeIconWidth: "24px",
263
- closeIconHeight: "24px",
262
+ closeIconSize: "24px",
264
263
  closeIconTopPosition: "20px",
265
264
  closeIconRightPosition: "20px",
266
265
  closeIconBackgroundColor: _coreTokens["default"].color_transparent,
@@ -286,10 +285,10 @@ var componentTokens = exports.componentTokens = {
286
285
  buttonIconSize: "20px",
287
286
  buttonIconSpacing: "10px",
288
287
  buttonIconColor: _coreTokens["default"].color_black,
289
- buttonPaddingTop: "0px",
290
- buttonPaddingBottom: "0px",
291
- buttonPaddingLeft: "16px",
292
- buttonPaddingRight: "16px",
288
+ buttonPaddingTop: _coreTokens["default"].spacing_0,
289
+ buttonPaddingBottom: _coreTokens["default"].spacing_0,
290
+ buttonPaddingLeft: _coreTokens["default"].spacing_16,
291
+ buttonPaddingRight: _coreTokens["default"].spacing_16,
293
292
  buttonHeight: "40px",
294
293
  buttonBorderRadius: "4px",
295
294
  buttonBorderStyle: _coreTokens["default"].border_none,
@@ -298,7 +297,6 @@ var componentTokens = exports.componentTokens = {
298
297
  disabledColor: _coreTokens["default"].color_grey_500,
299
298
  disabledButtonBackgroundColor: _coreTokens["default"].color_transparent,
300
299
  disabledButtonBorderColor: _coreTokens["default"].color_transparent,
301
- disabledBorderColor: _coreTokens["default"].color_transparent,
302
300
  optionBackgroundColor: _coreTokens["default"].color_white,
303
301
  hoverOptionBackgroundColor: _coreTokens["default"].color_grey_100,
304
302
  activeOptionBackgroundColor: _coreTokens["default"].color_grey_300,
@@ -312,11 +310,11 @@ var componentTokens = exports.componentTokens = {
312
310
  optionIconColor: _coreTokens["default"].color_black,
313
311
  optionPaddingTop: "6px",
314
312
  optionPaddingBottom: "6px",
315
- optionPaddingLeft: "16px",
316
- optionPaddingRight: "16px",
313
+ optionPaddingLeft: _coreTokens["default"].spacing_16,
314
+ optionPaddingRight: _coreTokens["default"].spacing_16,
317
315
  caretIconSize: "24px",
318
316
  caretIconColor: _coreTokens["default"].color_black,
319
- caretIconSpacing: "12px",
317
+ caretIconSpacing: _coreTokens["default"].spacing_12,
320
318
  borderRadius: "4px",
321
319
  borderStyle: _coreTokens["default"].border_none,
322
320
  borderThickness: _coreTokens["default"].border_width_0,
@@ -338,7 +336,6 @@ var componentTokens = exports.componentTokens = {
338
336
  focusDropBorderColor: _coreTokens["default"].color_blue_600,
339
337
  disabledDropBorderColor: _coreTokens["default"].color_grey_500,
340
338
  dragoverDropBackgroundColor: _coreTokens["default"].color_blue_50,
341
- activeFileItemIconBackgrounColor: _coreTokens["default"].color_grey_300,
342
339
  errorFileItemBorderColor: _coreTokens["default"].color_red_700,
343
340
  errorFileItemBackgroundColor: _coreTokens["default"].color_red_50,
344
341
  errorFilePreviewBackgroundColor: _coreTokens["default"].color_red_200,
@@ -384,7 +381,7 @@ var componentTokens = exports.componentTokens = {
384
381
  bottomLinksDividerColor: _coreTokens["default"].color_blue_600,
385
382
  bottomLinksDividerThickness: "1px",
386
383
  bottomLinksDividerStyle: _coreTokens["default"].border_solid,
387
- bottomLinksDividerSpacing: "8px",
384
+ bottomLinksDividerSpacing: _coreTokens["default"].spacing_8,
388
385
  bottomLinksFontFamily: _coreTokens["default"].type_sans,
389
386
  bottomLinksFontSize: _coreTokens["default"].type_scale_01,
390
387
  bottomLinksFontStyle: _coreTokens["default"].type_normal,
@@ -400,7 +397,7 @@ var componentTokens = exports.componentTokens = {
400
397
  logoHeight: "32px",
401
398
  logoWidth: "auto",
402
399
  socialLinksSize: "24px",
403
- socialLinksGutter: "16px",
400
+ socialLinksGutter: _coreTokens["default"].spacing_16,
404
401
  socialLinksColor: _coreTokens["default"].color_white
405
402
  },
406
403
  header: {
@@ -426,10 +423,10 @@ var componentTokens = exports.componentTokens = {
426
423
  overlayColor: _coreTokens["default"].color_grey_800_a,
427
424
  overlayOpacity: "0.7",
428
425
  overlayZindex: "1600",
429
- paddingTop: "0px",
430
- paddingBottom: "0px",
431
- paddingRight: "24px",
432
- paddingLeft: "24px",
426
+ paddingTop: _coreTokens["default"].spacing_0,
427
+ paddingBottom: _coreTokens["default"].spacing_0,
428
+ paddingRight: _coreTokens["default"].spacing_24,
429
+ paddingLeft: _coreTokens["default"].spacing_24,
433
430
  underlinedColor: _coreTokens["default"].color_black,
434
431
  underlinedThickness: "2px",
435
432
  underlinedStyle: _coreTokens["default"].border_solid,
@@ -487,8 +484,8 @@ var componentTokens = exports.componentTokens = {
487
484
  fontStyle: _coreTokens["default"].type_normal,
488
485
  fontWeight: _coreTokens["default"].type_regular,
489
486
  iconSize: "16px",
490
- iconSpacing: "4px",
491
- underlineSpacing: "0px",
487
+ iconSpacing: _coreTokens["default"].spacing_4,
488
+ underlineSpacing: _coreTokens["default"].spacing_0,
492
489
  underlineStyle: _coreTokens["default"].border_solid,
493
490
  underlineThickness: "1px",
494
491
  disabledFontColor: _coreTokens["default"].color_grey_500,
@@ -527,20 +524,20 @@ var componentTokens = exports.componentTokens = {
527
524
  fontStyle: _coreTokens["default"].type_normal,
528
525
  fontWeight: _coreTokens["default"].type_regular,
529
526
  fontTextTransform: "none",
530
- verticalPadding: "0.75rem",
531
- horizontalPadding: "2rem",
532
- marginRight: "40px",
527
+ verticalPadding: _coreTokens["default"].spacing_12,
528
+ horizontalPadding: _coreTokens["default"].spacing_32,
529
+ marginRight: _coreTokens["default"].spacing_40,
533
530
  marginLeft: "20px",
534
- itemsPerPageSelectorMarginLeft: "0px",
535
- itemsPerPageSelectorMarginRight: "0.5rem",
531
+ itemsPerPageSelectorMarginLeft: _coreTokens["default"].spacing_0,
532
+ itemsPerPageSelectorMarginRight: _coreTokens["default"].spacing_8,
536
533
  pageSelectorMarginRight: "30px",
537
- pageSelectorMarginLeft: "0px",
538
- totalItemsContainerMarginRight: "2.5rem",
539
- totalItemsContainerMarginLeft: "0px"
534
+ pageSelectorMarginLeft: _coreTokens["default"].spacing_0,
535
+ totalItemsContainerMarginRight: _coreTokens["default"].spacing_40,
536
+ totalItemsContainerMarginLeft: _coreTokens["default"].spacing_0
540
537
  },
541
538
  paragraph: {
542
- fontColor: _coreTokens["default"].color_black,
543
539
  display: "block",
540
+ fontColor: _coreTokens["default"].color_black,
544
541
  fontSize: _coreTokens["default"].type_scale_03,
545
542
  fontWeight: _coreTokens["default"].type_regular
546
543
  },
@@ -726,10 +723,10 @@ var componentTokens = exports.componentTokens = {
726
723
  linkFontTextTransform: "none",
727
724
  linkFontLetterSpacing: _coreTokens["default"].type_spacing_wide_01,
728
725
  linkTextDecoration: _coreTokens["default"].type_no_line,
729
- linkMarginTop: "4px",
730
- linkMarginBottom: "4px",
731
- linkMarginRight: "16px",
732
- linkMarginLeft: "16px",
726
+ linkMarginTop: _coreTokens["default"].spacing_4,
727
+ linkMarginBottom: _coreTokens["default"].spacing_4,
728
+ linkMarginRight: _coreTokens["default"].spacing_16,
729
+ linkMarginLeft: _coreTokens["default"].spacing_16,
733
730
  linkFocusColor: _coreTokens["default"].color_blue_600,
734
731
  scrollBarThumbColor: _coreTokens["default"].color_grey_200_a,
735
732
  scrollBarTrackColor: _coreTokens["default"].color_transparent
@@ -843,7 +840,7 @@ var componentTokens = exports.componentTokens = {
843
840
  thumbShift: "1.25rem",
844
841
  trackHeight: "12px",
845
842
  trackWidth: "36px",
846
- spaceBetweenLabelSwitch: "8px"
843
+ spaceBetweenLabelSwitch: _coreTokens["default"].spacing_8
847
844
  },
848
845
  table: {
849
846
  rowSeparatorThickness: "1px",
@@ -856,8 +853,8 @@ var componentTokens = exports.componentTokens = {
856
853
  dataFontWeight: _coreTokens["default"].type_regular,
857
854
  dataFontColor: _coreTokens["default"].color_black,
858
855
  dataFontTextTransform: "none",
859
- dataPaddingTop: "16px",
860
- dataPaddingBottom: "16px",
856
+ dataPaddingTop: _coreTokens["default"].spacing_16,
857
+ dataPaddingBottom: _coreTokens["default"].spacing_16,
861
858
  dataPaddingRight: "20px",
862
859
  dataPaddingLeft: "20px",
863
860
  dataPaddingTopReduced: _coreTokens["default"].spacing_8,
@@ -878,8 +875,8 @@ var componentTokens = exports.componentTokens = {
878
875
  headerFontWeight: _coreTokens["default"].type_regular,
879
876
  headerFontColor: _coreTokens["default"].color_white,
880
877
  headerFontTextTransform: "none",
881
- headerPaddingTop: "16px",
882
- headerPaddingBottom: "16px",
878
+ headerPaddingTop: _coreTokens["default"].spacing_16,
879
+ headerPaddingBottom: _coreTokens["default"].spacing_16,
883
880
  headerPaddingRight: "20px",
884
881
  headerPaddingLeft: "20px",
885
882
  headerPaddingTopReduced: _coreTokens["default"].spacing_8,
@@ -933,10 +930,10 @@ var componentTokens = exports.componentTokens = {
933
930
  fontSize: _coreTokens["default"].type_scale_02,
934
931
  fontStyle: _coreTokens["default"].type_normal,
935
932
  fontWeight: _coreTokens["default"].type_regular,
936
- labelPaddingTop: "0px",
937
- labelPaddingBottom: "0px",
938
- labelPaddingLeft: "16px",
939
- labelPaddingRight: "16px",
933
+ labelPaddingTop: _coreTokens["default"].spacing_0,
934
+ labelPaddingBottom: _coreTokens["default"].spacing_0,
935
+ labelPaddingLeft: _coreTokens["default"].spacing_16,
936
+ labelPaddingRight: _coreTokens["default"].spacing_16,
940
937
  height: "40px",
941
938
  iconColor: _coreTokens["default"].color_white,
942
939
  iconSectionWidth: "40px",
@@ -1154,13 +1151,13 @@ var componentTokens = exports.componentTokens = {
1154
1151
  }
1155
1152
  };
1156
1153
  var spaces = exports.spaces = {
1157
- xxsmall: "6px",
1158
- xsmall: "16px",
1159
- small: "24px",
1160
- medium: "36px",
1161
- large: "48px",
1162
- xlarge: "64px",
1163
- xxlarge: "100px"
1154
+ xxsmall: _coreTokens["default"].spacing_4,
1155
+ xsmall: _coreTokens["default"].spacing_8,
1156
+ small: _coreTokens["default"].spacing_12,
1157
+ medium: _coreTokens["default"].spacing_16,
1158
+ large: _coreTokens["default"].spacing_24,
1159
+ xlarge: _coreTokens["default"].spacing_32,
1160
+ xxlarge: _coreTokens["default"].spacing_48
1164
1161
  };
1165
1162
  var responsiveSizes = exports.responsiveSizes = {
1166
1163
  xsmall: "20",
@@ -108,7 +108,7 @@ export const Chromatic = () => (
108
108
  width="50px"
109
109
  height="50px"
110
110
  >
111
- <b>1</b>
111
+ <b tabIndex={0}>1</b>
112
112
  </DxcContainer>
113
113
  <DxcContainer
114
114
  border={{ width: "1px", style: "solid", color: "color_black" }}
@@ -116,7 +116,7 @@ export const Chromatic = () => (
116
116
  width="50px"
117
117
  height="50px"
118
118
  >
119
- <b>2</b>
119
+ <b tabIndex={0}>2</b>
120
120
  </DxcContainer>
121
121
  <DxcContainer
122
122
  border={{ width: "1px", style: "solid", color: "color_black" }}
@@ -124,7 +124,7 @@ export const Chromatic = () => (
124
124
  width="50px"
125
125
  height="50px"
126
126
  >
127
- <b>3</b>
127
+ <b tabIndex={0}>3</b>
128
128
  </DxcContainer>
129
129
  </DxcContainer>
130
130
  </ExampleContainer>
@@ -5,8 +5,20 @@ var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"))
5
5
  var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
6
6
  var _react = _interopRequireDefault(require("react"));
7
7
  var _react2 = require("@testing-library/react");
8
- var _jestAxe = require("jest-axe");
8
+ var _axeHelper = require("../../test/accessibility/axe-helper.js");
9
9
  var _ContextualMenu = _interopRequireDefault(require("./ContextualMenu"));
10
+ var _Badge = _interopRequireDefault(require("../badge/Badge"));
11
+ var _disabledRules = require("../../test/accessibility/rules/specific/contextual-menu/disabledRules.js");
12
+ // TODO: REMOVE
13
+
14
+ var disabledRules = {
15
+ rules: _disabledRules.disabledRules.reduce(function (rulesObj, rule) {
16
+ rulesObj[rule] = {
17
+ enabled: false
18
+ };
19
+ return rulesObj;
20
+ }, {})
21
+ };
10
22
  var badge_icon = /*#__PURE__*/_react["default"].createElement("svg", {
11
23
  width: "24",
12
24
  height: "24",
@@ -40,7 +52,7 @@ var fav_icon = /*#__PURE__*/_react["default"].createElement("svg", {
40
52
  }));
41
53
  var itemsWithTruncatedText = [{
42
54
  label: "Item with a very long label that should be truncated",
43
- slot: /*#__PURE__*/_react["default"].createElement(_ContextualMenu["default"].Badge, {
55
+ slot: /*#__PURE__*/_react["default"].createElement(_Badge["default"], {
44
56
  color: "blue",
45
57
  mode: "contextual",
46
58
  label: "Label",
@@ -73,7 +85,7 @@ describe("Context menu accessibility tests", function () {
73
85
  items: itemsWithTruncatedText
74
86
  })), container = _render.container;
75
87
  _context.next = 3;
76
- return (0, _jestAxe.axe)(container);
88
+ return (0, _axeHelper.axe)(container, disabledRules);
77
89
  case 3:
78
90
  results = _context.sent;
79
91
  expect(results).toHaveNoViolations();
@@ -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;