@dxc-technology/halstack-react 0.0.0-4e1277a → 0.0.0-4e3dbad

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 (363) hide show
  1. package/BackgroundColorContext.js +1 -1
  2. package/HalstackContext.d.ts +42 -5
  3. package/HalstackContext.js +28 -18
  4. package/accordion/Accordion.accessibility.test.d.ts +1 -0
  5. package/accordion/Accordion.accessibility.test.js +71 -0
  6. package/accordion/Accordion.js +16 -30
  7. package/accordion/Accordion.stories.tsx +7 -49
  8. package/accordion/Accordion.test.d.ts +1 -0
  9. package/accordion/Accordion.test.js +3 -3
  10. package/accordion/types.d.ts +1 -1
  11. package/accordion-group/AccordionGroup.accessibility.test.d.ts +1 -0
  12. package/accordion-group/AccordionGroup.accessibility.test.js +82 -0
  13. package/accordion-group/AccordionGroup.js +1 -1
  14. package/accordion-group/AccordionGroup.stories.tsx +23 -23
  15. package/accordion-group/AccordionGroup.test.d.ts +1 -0
  16. package/accordion-group/AccordionGroup.test.js +5 -9
  17. package/accordion-group/AccordionGroupAccordion.js +1 -1
  18. package/accordion-group/types.d.ts +1 -1
  19. package/action-icon/ActionIcon.accessibility.test.d.ts +1 -0
  20. package/action-icon/ActionIcon.accessibility.test.js +63 -0
  21. package/action-icon/ActionIcon.js +4 -3
  22. package/action-icon/ActionIcon.stories.tsx +3 -3
  23. package/action-icon/ActionIcon.test.d.ts +1 -0
  24. package/action-icon/ActionIcon.test.js +1 -1
  25. package/action-icon/types.d.ts +1 -1
  26. package/alert/Alert.accessibility.test.d.ts +1 -0
  27. package/alert/Alert.accessibility.test.js +95 -0
  28. package/alert/Alert.js +21 -72
  29. package/alert/Alert.test.d.ts +1 -0
  30. package/alert/Alert.test.js +1 -1
  31. package/badge/Badge.accessibility.test.d.ts +1 -0
  32. package/badge/Badge.accessibility.test.js +129 -0
  33. package/badge/Badge.js +6 -4
  34. package/badge/Badge.stories.tsx +11 -11
  35. package/badge/Badge.test.d.ts +1 -0
  36. package/badge/Badge.test.js +2 -2
  37. package/badge/types.d.ts +1 -1
  38. package/bar-chart/BarChart.d.ts +4 -0
  39. package/bar-chart/BarChart.js +152 -0
  40. package/bar-chart/BarChart.stories.tsx +281 -0
  41. package/bar-chart/BarChart.test.d.ts +1 -0
  42. package/bar-chart/BarChart.test.js +194 -0
  43. package/bar-chart/theme.d.ts +3 -0
  44. package/bar-chart/theme.js +31 -0
  45. package/bar-chart/types.d.ts +118 -0
  46. package/bar-chart/types.js +5 -0
  47. package/bleed/Bleed.stories.tsx +0 -1
  48. package/box/Box.accessibility.test.d.ts +1 -0
  49. package/box/Box.accessibility.test.js +33 -0
  50. package/box/Box.js +1 -1
  51. package/box/Box.test.d.ts +1 -0
  52. package/box/Box.test.js +1 -1
  53. package/breadcrumbs/Breadcrumbs.accessibility.test.d.ts +1 -0
  54. package/breadcrumbs/Breadcrumbs.accessibility.test.js +96 -0
  55. package/breadcrumbs/Breadcrumbs.d.ts +4 -0
  56. package/breadcrumbs/Breadcrumbs.js +79 -0
  57. package/breadcrumbs/Breadcrumbs.stories.tsx +194 -0
  58. package/breadcrumbs/Breadcrumbs.test.d.ts +1 -0
  59. package/breadcrumbs/Breadcrumbs.test.js +168 -0
  60. package/breadcrumbs/Item.d.ts +4 -0
  61. package/breadcrumbs/Item.js +52 -0
  62. package/breadcrumbs/dropdownTheme.d.ts +53 -0
  63. package/breadcrumbs/dropdownTheme.js +62 -0
  64. package/breadcrumbs/types.d.ts +40 -0
  65. package/breadcrumbs/types.js +5 -0
  66. package/bulleted-list/BulletedList.accessibility.test.d.ts +1 -0
  67. package/bulleted-list/BulletedList.accessibility.test.js +119 -0
  68. package/bulleted-list/BulletedList.js +7 -4
  69. package/bulleted-list/BulletedList.stories.tsx +1 -1
  70. package/button/Button.accessibility.test.d.ts +1 -0
  71. package/button/Button.accessibility.test.js +127 -0
  72. package/button/Button.js +2 -2
  73. package/button/Button.stories.tsx +3 -4
  74. package/button/Button.test.d.ts +1 -0
  75. package/button/Button.test.js +1 -1
  76. package/card/Card.accessibility.test.d.ts +1 -0
  77. package/card/Card.accessibility.test.js +36 -0
  78. package/card/Card.js +3 -2
  79. package/card/Card.stories.tsx +1 -1
  80. package/card/Card.test.d.ts +1 -0
  81. package/card/Card.test.js +1 -1
  82. package/checkbox/Checkbox.accessibility.test.d.ts +1 -0
  83. package/checkbox/Checkbox.accessibility.test.js +87 -0
  84. package/checkbox/Checkbox.js +10 -13
  85. package/checkbox/Checkbox.test.d.ts +1 -0
  86. package/checkbox/Checkbox.test.js +1 -1
  87. package/chip/Chip.accessibility.test.d.ts +1 -0
  88. package/chip/Chip.accessibility.test.js +67 -0
  89. package/chip/Chip.js +11 -6
  90. package/chip/Chip.stories.tsx +6 -25
  91. package/chip/Chip.test.d.ts +1 -0
  92. package/chip/Chip.test.js +5 -5
  93. package/common/coreTokens.d.ts +0 -1
  94. package/common/coreTokens.js +3 -4
  95. package/common/variables.d.ts +48 -5
  96. package/common/variables.js +110 -73
  97. package/container/Container.stories.tsx +3 -3
  98. package/container/types.d.ts +113 -11
  99. package/contextual-menu/ContextualMenu.accessibility.test.d.ts +1 -0
  100. package/contextual-menu/ContextualMenu.accessibility.test.js +98 -0
  101. package/contextual-menu/ContextualMenu.d.ts +3 -5
  102. package/contextual-menu/ContextualMenu.js +118 -53
  103. package/contextual-menu/ContextualMenu.stories.tsx +124 -75
  104. package/contextual-menu/ContextualMenu.test.d.ts +1 -0
  105. package/contextual-menu/ContextualMenu.test.js +200 -24
  106. package/contextual-menu/GroupItem.d.ts +4 -0
  107. package/contextual-menu/GroupItem.js +67 -0
  108. package/contextual-menu/ItemAction.d.ts +4 -0
  109. package/contextual-menu/ItemAction.js +88 -0
  110. package/contextual-menu/MenuItem.d.ts +4 -0
  111. package/contextual-menu/MenuItem.js +29 -0
  112. package/contextual-menu/SingleItem.d.ts +4 -0
  113. package/contextual-menu/SingleItem.js +38 -0
  114. package/contextual-menu/types.d.ts +54 -11
  115. package/date-input/Calendar.js +47 -31
  116. package/date-input/DateInput.accessibility.test.d.ts +1 -0
  117. package/date-input/DateInput.accessibility.test.js +229 -0
  118. package/date-input/DateInput.js +28 -23
  119. package/date-input/DateInput.stories.tsx +18 -12
  120. package/date-input/DateInput.test.d.ts +1 -0
  121. package/date-input/DateInput.test.js +39 -39
  122. package/date-input/DatePicker.js +13 -7
  123. package/date-input/YearPicker.js +10 -5
  124. package/dialog/Dialog.accessibility.test.d.ts +1 -0
  125. package/dialog/Dialog.accessibility.test.js +69 -0
  126. package/dialog/Dialog.js +9 -20
  127. package/dialog/Dialog.stories.tsx +8 -4
  128. package/dialog/Dialog.test.d.ts +1 -0
  129. package/dialog/Dialog.test.js +112 -49
  130. package/divider/Divider.accessibility.test.d.ts +1 -0
  131. package/divider/Divider.accessibility.test.js +33 -0
  132. package/divider/Divider.stories.tsx +2 -1
  133. package/divider/Divider.test.d.ts +1 -0
  134. package/dropdown/Dropdown.accessibility.test.d.ts +1 -0
  135. package/dropdown/Dropdown.accessibility.test.js +183 -0
  136. package/dropdown/Dropdown.js +31 -66
  137. package/dropdown/Dropdown.stories.tsx +16 -27
  138. package/dropdown/Dropdown.test.d.ts +1 -0
  139. package/dropdown/Dropdown.test.js +101 -72
  140. package/dropdown/DropdownMenu.js +4 -4
  141. package/dropdown/DropdownMenuItem.js +8 -4
  142. package/dropdown/types.d.ts +2 -4
  143. package/file-input/FileInput.accessibility.test.d.ts +1 -0
  144. package/file-input/FileInput.accessibility.test.js +167 -0
  145. package/file-input/FileInput.js +6 -47
  146. package/file-input/FileInput.test.d.ts +1 -0
  147. package/file-input/FileInput.test.js +51 -106
  148. package/file-input/FileItem.js +18 -28
  149. package/file-input/types.d.ts +0 -4
  150. package/footer/Footer.accessibility.test.d.ts +1 -0
  151. package/footer/Footer.accessibility.test.js +125 -0
  152. package/footer/Footer.js +8 -6
  153. package/footer/Footer.stories.tsx +40 -3
  154. package/footer/Footer.test.d.ts +1 -0
  155. package/footer/Footer.test.js +1 -1
  156. package/footer/Icons.js +2 -30
  157. package/footer/types.d.ts +1 -1
  158. package/grid/Grid.stories.tsx +3 -1
  159. package/header/Header.accessibility.test.d.ts +1 -0
  160. package/header/Header.accessibility.test.js +94 -0
  161. package/header/Header.js +12 -22
  162. package/header/Header.stories.tsx +17 -1
  163. package/header/Header.test.d.ts +1 -0
  164. package/header/Header.test.js +1 -1
  165. package/header/Icons.js +1 -6
  166. package/heading/Heading.accessibility.test.d.ts +1 -0
  167. package/heading/Heading.accessibility.test.js +33 -0
  168. package/heading/Heading.js +1 -1
  169. package/heading/Heading.test.d.ts +1 -0
  170. package/heading/Heading.test.js +1 -14
  171. package/icon/Icon.accessibility.test.d.ts +1 -0
  172. package/icon/Icon.accessibility.test.js +30 -0
  173. package/icon/Icon.js +1 -1
  174. package/icon/Icon.stories.tsx +6 -4
  175. package/image/Image.accessibility.test.d.ts +1 -0
  176. package/image/Image.accessibility.test.js +56 -0
  177. package/image/Image.js +1 -1
  178. package/layout/ApplicationLayout.js +9 -6
  179. package/layout/Icons.d.ts +0 -1
  180. package/layout/Icons.js +1 -11
  181. package/link/Link.accessibility.test.d.ts +1 -0
  182. package/link/Link.accessibility.test.js +108 -0
  183. package/link/Link.js +8 -6
  184. package/link/Link.stories.tsx +4 -4
  185. package/link/Link.test.d.ts +1 -0
  186. package/link/Link.test.js +1 -1
  187. package/link/types.d.ts +1 -1
  188. package/main.d.ts +3 -1
  189. package/main.js +15 -1
  190. package/nav-tabs/NavTabs.accessibility.test.d.ts +1 -0
  191. package/nav-tabs/NavTabs.accessibility.test.js +44 -0
  192. package/nav-tabs/NavTabs.js +19 -4
  193. package/nav-tabs/NavTabs.stories.tsx +41 -23
  194. package/nav-tabs/NavTabs.test.d.ts +1 -0
  195. package/nav-tabs/NavTabs.test.js +10 -9
  196. package/nav-tabs/Tab.js +17 -18
  197. package/nav-tabs/types.d.ts +1 -1
  198. package/number-input/NumberInput.accessibility.test.d.ts +1 -0
  199. package/number-input/NumberInput.accessibility.test.js +227 -0
  200. package/number-input/NumberInput.js +6 -3
  201. package/number-input/NumberInput.stories.tsx +11 -16
  202. package/number-input/NumberInput.test.d.ts +1 -0
  203. package/number-input/NumberInput.test.js +6 -7
  204. package/package.json +34 -28
  205. package/paginator/Paginator.accessibility.test.d.ts +1 -0
  206. package/paginator/Paginator.accessibility.test.js +78 -0
  207. package/paginator/Paginator.js +13 -10
  208. package/paginator/Paginator.test.d.ts +1 -0
  209. package/paginator/Paginator.test.js +2 -3
  210. package/paragraph/Paragraph.accessibility.test.d.ts +1 -0
  211. package/paragraph/Paragraph.accessibility.test.js +28 -0
  212. package/password-input/PasswordInput.accessibility.test.d.ts +1 -0
  213. package/password-input/PasswordInput.accessibility.test.js +152 -0
  214. package/password-input/PasswordInput.js +11 -8
  215. package/password-input/PasswordInput.stories.tsx +10 -1
  216. package/password-input/PasswordInput.test.d.ts +1 -0
  217. package/password-input/PasswordInput.test.js +6 -7
  218. package/progress-bar/ProgressBar.accessibility.test.d.ts +1 -0
  219. package/progress-bar/ProgressBar.accessibility.test.js +35 -0
  220. package/progress-bar/ProgressBar.js +6 -4
  221. package/progress-bar/ProgressBar.test.d.ts +1 -0
  222. package/progress-bar/ProgressBar.test.js +1 -1
  223. package/quick-nav/QuickNav.accessibility.test.d.ts +1 -0
  224. package/quick-nav/QuickNav.accessibility.test.js +57 -0
  225. package/quick-nav/QuickNav.js +1 -1
  226. package/radio-group/Radio.js +6 -9
  227. package/radio-group/RadioGroup.accessibility.test.d.ts +1 -0
  228. package/radio-group/RadioGroup.accessibility.test.js +97 -0
  229. package/radio-group/RadioGroup.js +14 -16
  230. package/radio-group/RadioGroup.test.d.ts +1 -0
  231. package/radio-group/RadioGroup.test.js +3 -5
  232. package/resultset-table/ResultsetTable.accessibility.test.d.ts +1 -0
  233. package/resultset-table/ResultsetTable.accessibility.test.js +284 -0
  234. package/resultset-table/ResultsetTable.d.ts +1 -1
  235. package/resultset-table/ResultsetTable.js +47 -15
  236. package/resultset-table/ResultsetTable.stories.tsx +19 -3
  237. package/resultset-table/ResultsetTable.test.d.ts +1 -0
  238. package/resultset-table/ResultsetTable.test.js +111 -32
  239. package/resultset-table/types.d.ts +41 -13
  240. package/select/Listbox.d.ts +3 -3
  241. package/select/Listbox.js +33 -29
  242. package/select/Option.d.ts +3 -3
  243. package/select/Option.js +21 -15
  244. package/select/Select.accessibility.test.d.ts +1 -0
  245. package/select/Select.accessibility.test.js +227 -0
  246. package/select/Select.js +85 -192
  247. package/select/Select.stories.tsx +74 -117
  248. package/select/Select.test.d.ts +1 -0
  249. package/select/Select.test.js +348 -550
  250. package/select/selectUtils.d.ts +41 -0
  251. package/select/selectUtils.js +129 -0
  252. package/select/types.d.ts +1 -1
  253. package/sidenav/Sidenav.accessibility.test.d.ts +1 -0
  254. package/sidenav/Sidenav.accessibility.test.js +59 -0
  255. package/sidenav/Sidenav.js +16 -12
  256. package/sidenav/Sidenav.stories.tsx +5 -10
  257. package/sidenav/Sidenav.test.d.ts +1 -0
  258. package/sidenav/Sidenav.test.js +1 -1
  259. package/sidenav/types.d.ts +2 -2
  260. package/slider/Slider.accessibility.test.d.ts +1 -0
  261. package/slider/Slider.accessibility.test.js +103 -0
  262. package/slider/Slider.js +11 -13
  263. package/slider/Slider.stories.tsx +180 -0
  264. package/slider/Slider.test.d.ts +1 -0
  265. package/slider/Slider.test.js +13 -11
  266. package/spinner/Spinner.accessibility.test.d.ts +1 -0
  267. package/spinner/Spinner.accessibility.test.js +96 -0
  268. package/spinner/Spinner.d.ts +1 -1
  269. package/spinner/Spinner.js +32 -47
  270. package/spinner/Spinner.test.d.ts +1 -0
  271. package/spinner/Spinner.test.js +1 -1
  272. package/status-light/StatusLight.accessibility.test.d.ts +1 -0
  273. package/status-light/StatusLight.accessibility.test.js +157 -0
  274. package/status-light/StatusLight.test.d.ts +1 -0
  275. package/status-light/StatusLight.test.js +1 -1
  276. package/switch/Switch.accessibility.test.d.ts +1 -0
  277. package/switch/Switch.accessibility.test.js +98 -0
  278. package/switch/Switch.js +6 -9
  279. package/switch/Switch.stories.tsx +12 -0
  280. package/switch/Switch.test.d.ts +1 -0
  281. package/switch/Switch.test.js +1 -1
  282. package/table/Table.accessibility.test.d.ts +1 -0
  283. package/table/Table.accessibility.test.js +92 -0
  284. package/table/Table.js +2 -11
  285. package/table/Table.stories.tsx +15 -10
  286. package/table/Table.test.d.ts +1 -0
  287. package/table/Table.test.js +2 -4
  288. package/table/types.d.ts +1 -15
  289. package/tabs/Tab.js +6 -5
  290. package/tabs/Tabs.accessibility.test.d.ts +1 -0
  291. package/tabs/Tabs.accessibility.test.js +56 -0
  292. package/tabs/Tabs.js +9 -20
  293. package/tabs/Tabs.stories.tsx +7 -3
  294. package/tabs/Tabs.test.d.ts +1 -0
  295. package/tabs/Tabs.test.js +20 -38
  296. package/tabs/types.d.ts +2 -2
  297. package/tag/Tag.accessibility.test.d.ts +1 -0
  298. package/tag/Tag.accessibility.test.js +69 -0
  299. package/tag/Tag.js +7 -7
  300. package/tag/Tag.stories.tsx +5 -8
  301. package/tag/Tag.test.d.ts +1 -0
  302. package/tag/Tag.test.js +5 -13
  303. package/tag/types.d.ts +2 -2
  304. package/text-input/Suggestion.js +1 -1
  305. package/text-input/Suggestions.js +17 -7
  306. package/text-input/TextInput.accessibility.test.d.ts +1 -0
  307. package/text-input/TextInput.accessibility.test.js +320 -0
  308. package/text-input/TextInput.js +56 -73
  309. package/text-input/TextInput.stories.tsx +20 -8
  310. package/text-input/TextInput.test.d.ts +1 -0
  311. package/text-input/TextInput.test.js +2 -3
  312. package/textarea/Textarea.accessibility.test.d.ts +1 -0
  313. package/textarea/Textarea.accessibility.test.js +155 -0
  314. package/textarea/Textarea.js +14 -13
  315. package/textarea/Textarea.test.d.ts +1 -0
  316. package/textarea/Textarea.test.js +1 -1
  317. package/toggle-group/ToggleGroup.accessibility.test.d.ts +1 -0
  318. package/toggle-group/ToggleGroup.accessibility.test.js +107 -0
  319. package/toggle-group/ToggleGroup.js +10 -12
  320. package/toggle-group/ToggleGroup.stories.tsx +4 -4
  321. package/toggle-group/ToggleGroup.test.d.ts +1 -0
  322. package/toggle-group/ToggleGroup.test.js +1 -1
  323. package/toggle-group/types.d.ts +2 -2
  324. package/tooltip/Tooltip.accessibility.test.d.ts +1 -0
  325. package/tooltip/Tooltip.accessibility.test.js +144 -0
  326. package/tooltip/Tooltip.d.ts +4 -0
  327. package/tooltip/Tooltip.js +50 -0
  328. package/tooltip/Tooltip.stories.tsx +111 -0
  329. package/tooltip/Tooltip.test.d.ts +1 -0
  330. package/tooltip/Tooltip.test.js +112 -0
  331. package/tooltip/types.d.ts +16 -0
  332. package/tooltip/types.js +5 -0
  333. package/typography/Typography.accessibility.test.d.ts +1 -0
  334. package/typography/Typography.accessibility.test.js +339 -0
  335. package/typography/Typography.stories.tsx +1 -3
  336. package/typography/Typography.test.js +23 -0
  337. package/useTheme.d.ts +31 -5
  338. package/useTranslatedLabels.d.ts +11 -0
  339. package/utils/BaseTypography.js +45 -41
  340. package/utils/FocusLock.js +3 -2
  341. package/utils/useWidth.d.ts +2 -0
  342. package/utils/useWidth.js +30 -0
  343. package/wizard/Wizard.accessibility.test.d.ts +1 -0
  344. package/wizard/Wizard.accessibility.test.js +55 -0
  345. package/wizard/Wizard.js +14 -25
  346. package/wizard/Wizard.stories.tsx +20 -1
  347. package/wizard/Wizard.test.d.ts +1 -0
  348. package/wizard/Wizard.test.js +1 -1
  349. package/wizard/types.d.ts +1 -1
  350. package/contextual-menu/MenuItemAction.d.ts +0 -4
  351. package/contextual-menu/MenuItemAction.js +0 -46
  352. package/date-input/Icons.d.ts +0 -6
  353. package/date-input/Icons.js +0 -58
  354. package/paginator/Icons.d.ts +0 -5
  355. package/paginator/Icons.js +0 -40
  356. package/password-input/Icons.d.ts +0 -6
  357. package/password-input/Icons.js +0 -35
  358. package/select/Icons.d.ts +0 -10
  359. package/select/Icons.js +0 -89
  360. package/sidenav/Icons.d.ts +0 -7
  361. package/sidenav/Icons.js +0 -47
  362. package/text-input/Icons.d.ts +0 -8
  363. package/text-input/Icons.js +0 -56
@@ -0,0 +1,183 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+ var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
5
+ var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
6
+ var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
7
+ var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
8
+ var _react = _interopRequireDefault(require("react"));
9
+ var _react2 = require("@testing-library/react");
10
+ var _axeHelper = require("../../test/accessibility/axe-helper.js");
11
+ var _Dropdown = _interopRequireDefault(require("./Dropdown"));
12
+ var iconSVG = /*#__PURE__*/_react["default"].createElement("svg", {
13
+ viewBox: "0 0 24 24",
14
+ height: "24",
15
+ width: "24",
16
+ fill: "currentColor"
17
+ }, /*#__PURE__*/_react["default"].createElement("path", {
18
+ d: "M0 0h24v24H0z",
19
+ fill: "none"
20
+ }), /*#__PURE__*/_react["default"].createElement("path", {
21
+ d: "M12 21.35l-1.45-1.32C5.4 15.36 2 12.28 2 8.5 2 5.42 4.42 3 7.5 3c1.74 0 3.41.81 4.5 2.09C13.09 3.81 14.76 3 16.5 3 19.58 3 22 5.42 22 8.5c0 3.78-3.4 6.86-8.55 11.54L12 21.35z"
22
+ }));
23
+ var iconUrl = "https://iconape.com/wp-content/files/yd/367773/svg/logo-linkedin-logo-icon-png-svg.png";
24
+
25
+ // Mocking DOMRect for Radix Primitive Popover
26
+ global.globalThis = global;
27
+ global.DOMRect = {
28
+ fromRect: function fromRect() {
29
+ return {
30
+ top: 0,
31
+ left: 0,
32
+ bottom: 0,
33
+ right: 0,
34
+ width: 0,
35
+ height: 0
36
+ };
37
+ }
38
+ };
39
+ global.ResizeObserver = /*#__PURE__*/function () {
40
+ function ResizeObserver() {
41
+ (0, _classCallCheck2["default"])(this, ResizeObserver);
42
+ }
43
+ return (0, _createClass2["default"])(ResizeObserver, [{
44
+ key: "observe",
45
+ value: function observe() {}
46
+ }, {
47
+ key: "unobserve",
48
+ value: function unobserve() {}
49
+ }, {
50
+ key: "disconnect",
51
+ value: function disconnect() {}
52
+ }]);
53
+ }();
54
+ var options = [{
55
+ value: "1",
56
+ label: "Amazon",
57
+ icon: iconUrl
58
+ }, {
59
+ value: "2",
60
+ label: "Ebay",
61
+ icon: iconUrl
62
+ }, {
63
+ value: "3",
64
+ label: "Wallapop",
65
+ icon: iconSVG
66
+ }, {
67
+ value: "4",
68
+ label: "Aliexpress",
69
+ icon: iconSVG
70
+ }];
71
+ describe("Dropdown component accessibility tests", function () {
72
+ it("Should not have basic accessibility issues", /*#__PURE__*/(0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee() {
73
+ var _render, baseElement, results;
74
+ return _regenerator["default"].wrap(function _callee$(_context) {
75
+ while (1) switch (_context.prev = _context.next) {
76
+ case 0:
77
+ // baseElement is needed when using React Portals
78
+ _render = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_Dropdown["default"], {
79
+ options: options,
80
+ label: "dropdown-test",
81
+ icon: iconSVG,
82
+ iconPosition: "before",
83
+ margin: "medium",
84
+ size: "medium",
85
+ optionsIconPosition: "before",
86
+ onSelectOption: function onSelectOption() {}
87
+ })), baseElement = _render.baseElement;
88
+ _context.next = 3;
89
+ return (0, _axeHelper.axe)(baseElement);
90
+ case 3:
91
+ results = _context.sent;
92
+ expect(results).toHaveNoViolations();
93
+ case 5:
94
+ case "end":
95
+ return _context.stop();
96
+ }
97
+ }, _callee);
98
+ })));
99
+ it("Should not have basic accessibility issues for disabled mode", /*#__PURE__*/(0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee2() {
100
+ var _render2, baseElement, results;
101
+ return _regenerator["default"].wrap(function _callee2$(_context2) {
102
+ while (1) switch (_context2.prev = _context2.next) {
103
+ case 0:
104
+ // baseElement is needed when using React Portals
105
+ _render2 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_Dropdown["default"], {
106
+ options: options,
107
+ label: "dropdown-test",
108
+ icon: iconSVG,
109
+ iconPosition: "before",
110
+ margin: "medium",
111
+ size: "medium",
112
+ optionsIconPosition: "before",
113
+ onSelectOption: function onSelectOption() {},
114
+ disabled: true
115
+ })), baseElement = _render2.baseElement;
116
+ _context2.next = 3;
117
+ return (0, _axeHelper.axe)(baseElement);
118
+ case 3:
119
+ results = _context2.sent;
120
+ expect(results).toHaveNoViolations();
121
+ case 5:
122
+ case "end":
123
+ return _context2.stop();
124
+ }
125
+ }, _callee2);
126
+ })));
127
+ it("Should not have basic accessibility issues for caret-hidden mode", /*#__PURE__*/(0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee3() {
128
+ var _render3, baseElement, results;
129
+ return _regenerator["default"].wrap(function _callee3$(_context3) {
130
+ while (1) switch (_context3.prev = _context3.next) {
131
+ case 0:
132
+ // baseElement is needed when using React Portals
133
+ _render3 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_Dropdown["default"], {
134
+ options: options,
135
+ label: "dropdown-test",
136
+ icon: iconSVG,
137
+ iconPosition: "after",
138
+ margin: "medium",
139
+ size: "medium",
140
+ optionsIconPosition: "after",
141
+ onSelectOption: function onSelectOption() {},
142
+ caretHidden: true
143
+ })), baseElement = _render3.baseElement;
144
+ _context3.next = 3;
145
+ return (0, _axeHelper.axe)(baseElement);
146
+ case 3:
147
+ results = _context3.sent;
148
+ expect(results).toHaveNoViolations();
149
+ case 5:
150
+ case "end":
151
+ return _context3.stop();
152
+ }
153
+ }, _callee3);
154
+ })));
155
+ it("Should not have basic accessibility issues for expand-on-hover mode", /*#__PURE__*/(0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee4() {
156
+ var _render4, baseElement, results;
157
+ return _regenerator["default"].wrap(function _callee4$(_context4) {
158
+ while (1) switch (_context4.prev = _context4.next) {
159
+ case 0:
160
+ // baseElement is needed when using React Portals
161
+ _render4 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_Dropdown["default"], {
162
+ options: options,
163
+ label: "dropdown-test",
164
+ icon: iconSVG,
165
+ iconPosition: "after",
166
+ margin: "medium",
167
+ size: "medium",
168
+ optionsIconPosition: "after",
169
+ onSelectOption: function onSelectOption() {},
170
+ expandOnHover: true
171
+ })), baseElement = _render4.baseElement;
172
+ _context4.next = 3;
173
+ return (0, _axeHelper.axe)(baseElement);
174
+ case 3:
175
+ results = _context4.sent;
176
+ expect(results).toHaveNoViolations();
177
+ case 5:
178
+ case "end":
179
+ return _context4.stop();
180
+ }
181
+ }, _callee4);
182
+ })));
183
+ });
@@ -14,56 +14,13 @@ var _styledComponents = _interopRequireWildcard(require("styled-components"));
14
14
  var _variables = require("../common/variables");
15
15
  var _utils = require("../common/utils");
16
16
  var _useTheme = _interopRequireDefault(require("../useTheme"));
17
- var _uuid = require("uuid");
18
17
  var Popover = _interopRequireWildcard(require("@radix-ui/react-popover"));
19
18
  var _DropdownMenu = _interopRequireDefault(require("./DropdownMenu"));
19
+ var _Icon = _interopRequireDefault(require("../icon/Icon"));
20
+ var _useWidth = _interopRequireDefault(require("../utils/useWidth"));
20
21
  var _templateObject, _templateObject2, _templateObject3, _templateObject4, _templateObject5, _templateObject6;
21
22
  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); }
22
- function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != _typeof3(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; }
23
- var upArrowIcon = /*#__PURE__*/_react["default"].createElement("svg", {
24
- xmlns: "http://www.w3.org/2000/svg",
25
- width: "24",
26
- height: "24",
27
- viewBox: "0 0 24 24",
28
- fill: "currentColor"
29
- }, /*#__PURE__*/_react["default"].createElement("path", {
30
- d: "M7 14l5-5 5 5z"
31
- }), /*#__PURE__*/_react["default"].createElement("path", {
32
- d: "M0 0h24v24H0z",
33
- fill: "none"
34
- }));
35
- var downArrowIcon = /*#__PURE__*/_react["default"].createElement("svg", {
36
- xmlns: "http://www.w3.org/2000/svg",
37
- width: "24",
38
- height: "24",
39
- viewBox: "0 0 24 24",
40
- fill: "currentColor"
41
- }, /*#__PURE__*/_react["default"].createElement("path", {
42
- d: "M7 10l5 5 5-5z"
43
- }), /*#__PURE__*/_react["default"].createElement("path", {
44
- d: "M0 0h24v24H0z",
45
- fill: "none"
46
- }));
47
- var useWidth = function useWidth(target) {
48
- var _useState = (0, _react.useState)(0),
49
- _useState2 = (0, _slicedToArray2["default"])(_useState, 2),
50
- width = _useState2[0],
51
- setWidth = _useState2[1];
52
- (0, _react.useEffect)(function () {
53
- if (target != null) {
54
- setWidth(target.getBoundingClientRect().width);
55
- var triggerObserver = new ResizeObserver(function (entries) {
56
- var rect = entries[0].target.getBoundingClientRect();
57
- setWidth(rect === null || rect === void 0 ? void 0 : rect.width);
58
- });
59
- triggerObserver.observe(target);
60
- return function () {
61
- triggerObserver.unobserve(target);
62
- };
63
- }
64
- }, [target]);
65
- return width;
66
- };
23
+ function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != _typeof3(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; }
67
24
  var DxcDropdown = function DxcDropdown(_ref) {
68
25
  var options = _ref.options,
69
26
  _ref$optionsIconPosit = _ref.optionsIconPosition,
@@ -85,22 +42,21 @@ var DxcDropdown = function DxcDropdown(_ref) {
85
42
  size = _ref$size === void 0 ? "fitContent" : _ref$size,
86
43
  _ref$tabIndex = _ref.tabIndex,
87
44
  tabIndex = _ref$tabIndex === void 0 ? 0 : _ref$tabIndex;
88
- var _useState3 = (0, _react.useState)("trigger-".concat((0, _uuid.v4)())),
89
- _useState4 = (0, _slicedToArray2["default"])(_useState3, 1),
90
- triggerId = _useState4[0];
91
- var menuId = "menu-".concat(triggerId);
92
- var _useState5 = (0, _react.useState)(false),
93
- _useState6 = (0, _slicedToArray2["default"])(_useState5, 2),
94
- isOpen = _useState6[0],
95
- changeIsOpen = _useState6[1];
96
- var _useState7 = (0, _react.useState)(0),
97
- _useState8 = (0, _slicedToArray2["default"])(_useState7, 2),
98
- visualFocusIndex = _useState8[0],
99
- setVisualFocusIndex = _useState8[1];
45
+ var id = (0, _react.useId)();
46
+ var triggerId = "trigger-".concat(id);
47
+ var menuId = "menu-".concat(id);
48
+ var _useState = (0, _react.useState)(false),
49
+ _useState2 = (0, _slicedToArray2["default"])(_useState, 2),
50
+ isOpen = _useState2[0],
51
+ changeIsOpen = _useState2[1];
52
+ var _useState3 = (0, _react.useState)(0),
53
+ _useState4 = (0, _slicedToArray2["default"])(_useState3, 2),
54
+ visualFocusIndex = _useState4[0],
55
+ setVisualFocusIndex = _useState4[1];
100
56
  var colorsTheme = (0, _useTheme["default"])();
101
57
  var triggerRef = (0, _react.useRef)(null);
102
58
  var menuRef = (0, _react.useRef)(null);
103
- var width = useWidth(triggerRef.current);
59
+ var width = (0, _useWidth["default"])(triggerRef.current);
104
60
  var handleOnOpenMenu = function handleOnOpenMenu() {
105
61
  changeIsOpen(true);
106
62
  };
@@ -172,6 +128,7 @@ var DxcDropdown = function DxcDropdown(_ref) {
172
128
  case "Esc":
173
129
  case "Escape":
174
130
  event.preventDefault();
131
+ isOpen && event.stopPropagation();
175
132
  handleOnCloseMenu();
176
133
  (_triggerRef$current2 = triggerRef.current) === null || _triggerRef$current2 === void 0 ? void 0 : _triggerRef$current2.focus();
177
134
  break;
@@ -224,18 +181,22 @@ var DxcDropdown = function DxcDropdown(_ref) {
224
181
  size: size,
225
182
  id: triggerId,
226
183
  "aria-haspopup": "true",
227
- "aria-controls": menuId,
184
+ "aria-controls": isOpen ? menuId : undefined,
228
185
  "aria-expanded": isOpen ? true : undefined,
186
+ "aria-label": "Show options",
229
187
  tabIndex: tabIndex,
230
188
  ref: triggerRef
231
189
  }, /*#__PURE__*/_react["default"].createElement(DropdownTriggerContent, null, label && iconPosition === "after" && /*#__PURE__*/_react["default"].createElement(DropdownTriggerLabel, null, label), icon && /*#__PURE__*/_react["default"].createElement(DropdownTriggerIcon, {
232
190
  disabled: disabled,
233
- role: typeof icon === "string" ? undefined : "img"
234
- }, typeof icon === "string" ? /*#__PURE__*/_react["default"].createElement("img", {
235
- src: icon
191
+ role: typeof icon === "string" ? undefined : "img",
192
+ "aria-hidden": true
193
+ }, typeof icon === "string" ? /*#__PURE__*/_react["default"].createElement(_Icon["default"], {
194
+ icon: icon
236
195
  }) : icon), label && iconPosition === "before" && /*#__PURE__*/_react["default"].createElement(DropdownTriggerLabel, null, label)), !caretHidden && /*#__PURE__*/_react["default"].createElement(CaretIcon, {
237
196
  disabled: disabled
238
- }, isOpen ? upArrowIcon : downArrowIcon))), /*#__PURE__*/_react["default"].createElement(Popover.Portal, null, /*#__PURE__*/_react["default"].createElement(Popover.Content, {
197
+ }, /*#__PURE__*/_react["default"].createElement(_Icon["default"], {
198
+ icon: isOpen ? "arrow_drop_up" : "arrow_drop_down"
199
+ }), " "))), /*#__PURE__*/_react["default"].createElement(Popover.Portal, null, /*#__PURE__*/_react["default"].createElement(Popover.Content, {
239
200
  asChild: true,
240
201
  sideOffset: 1
241
202
  }, /*#__PURE__*/_react["default"].createElement(_DropdownMenu["default"], {
@@ -319,18 +280,22 @@ var DropdownTriggerLabel = _styledComponents["default"].span(_templateObject4 ||
319
280
  }, function (props) {
320
281
  return props.theme.buttonFontWeight;
321
282
  });
322
- var DropdownTriggerIcon = _styledComponents["default"].span(_templateObject5 || (_templateObject5 = (0, _taggedTemplateLiteral2["default"])(["\n display: flex;\n color: ", ";\n\n img,\n svg {\n width: ", ";\n height: ", ";\n }\n"])), function (props) {
283
+ var DropdownTriggerIcon = _styledComponents["default"].span(_templateObject5 || (_templateObject5 = (0, _taggedTemplateLiteral2["default"])(["\n display: flex;\n color: ", ";\n font-size: ", ";\n\n svg {\n width: ", ";\n height: ", ";\n }\n"])), function (props) {
323
284
  return props.disabled ? props.theme.disabledColor : props.theme.buttonIconColor;
324
285
  }, function (props) {
325
286
  return props.theme.buttonIconSize;
326
287
  }, function (props) {
327
288
  return props.theme.buttonIconSize;
289
+ }, function (props) {
290
+ return props.theme.buttonIconSize;
328
291
  });
329
- var CaretIcon = _styledComponents["default"].span(_templateObject6 || (_templateObject6 = (0, _taggedTemplateLiteral2["default"])(["\n display: flex;\n color: ", ";\n\n svg {\n width: ", ";\n height: ", ";\n }\n"])), function (props) {
292
+ var CaretIcon = _styledComponents["default"].span(_templateObject6 || (_templateObject6 = (0, _taggedTemplateLiteral2["default"])(["\n display: flex;\n color: ", ";\n font-size: ", ";\n\n svg {\n width: ", ";\n height: ", ";\n }\n"])), function (props) {
330
293
  return props.disabled ? props.theme.disabledColor : props.theme.caretIconColor;
331
294
  }, function (props) {
332
295
  return props.theme.caretIconSize;
333
296
  }, function (props) {
334
297
  return props.theme.caretIconSize;
298
+ }, function (props) {
299
+ return props.theme.caretIconSize;
335
300
  });
336
301
  var _default = exports["default"] = DxcDropdown;
@@ -1,5 +1,5 @@
1
1
  import React from "react";
2
- import { userEvent, within } from "@storybook/testing-library";
2
+ import { userEvent, within } from "@storybook/test";
3
3
  import DxcDropdown from "./Dropdown";
4
4
  import Title from "../../.storybook/components/Title";
5
5
  import ExampleContainer from "../../.storybook/components/ExampleContainer";
@@ -15,11 +15,6 @@ export default {
15
15
  component: DxcDropdown,
16
16
  };
17
17
 
18
- const hamburguerIcon = (
19
- <svg xmlns="http://www.w3.org/2000/svg" height="20" width="20">
20
- <path d="M3 14.5V13h14v1.5Zm0-3.75v-1.5h14v1.5ZM3 7V5.5h14V7Z" />
21
- </svg>
22
- );
23
18
  const iconSVG = (
24
19
  <svg viewBox="0 0 24 24" height="24" width="24" fill="currentColor">
25
20
  <path d="M0 0h24v24H0z" fill="none" />
@@ -31,8 +26,7 @@ const iconSVGLarge = (
31
26
  <path d="M11 44q-1.2 0-2.1-.9Q8 42.2 8 41V15q0-1.2.9-2.1.9-.9 2.1-.9h5.5v-.5q0-3.15 2.175-5.325Q20.85 4 24 4q3.15 0 5.325 2.175Q31.5 8.35 31.5 11.5v.5H37q1.2 0 2.1.9.9.9.9 2.1v26q0 1.2-.9 2.1-.9.9-2.1.9Zm0-3h26V15h-5.5v4.5q0 .65-.425 1.075Q30.65 21 30 21q-.65 0-1.075-.425-.425-.425-.425-1.075V15h-9v4.5q0 .65-.425 1.075Q18.65 21 18 21q-.65 0-1.075-.425-.425-.425-.425-1.075V15H11v26Zm8.5-29h9v-.5q0-1.9-1.3-3.2Q25.9 7 24 7q-1.9 0-3.2 1.3-1.3 1.3-1.3 3.2ZM11 41V15v26Z" />
32
27
  </svg>
33
28
  );
34
- const iconUrl = "https://iconape.com/wp-content/files/yd/367773/svg/logo-linkedin-logo-icon-png-svg.png";
35
- const icons = [iconSVG, iconSVGLarge, iconUrl];
29
+ const icons = [iconSVG, iconSVGLarge, "nutrition"];
36
30
 
37
31
  const defaultOptions: Option[] = [
38
32
  {
@@ -86,7 +80,7 @@ const optionWithIcon: Option[] = [
86
80
  {
87
81
  value: "1",
88
82
  label: "Ebay",
89
- icon: iconUrl,
83
+ icon: "shopping_cart",
90
84
  },
91
85
  ];
92
86
 
@@ -136,7 +130,7 @@ const Dropdown = () => (
136
130
  label="Icon after"
137
131
  options={options}
138
132
  onSelectOption={(value) => {}}
139
- icon="https://iconape.com/wp-content/files/yd/367773/svg/logo-linkedin-logo-icon-png-svg.png"
133
+ icon="shopping_cart"
140
134
  iconPosition="after"
141
135
  />
142
136
  </ExampleContainer>
@@ -146,7 +140,7 @@ const Dropdown = () => (
146
140
  </ExampleContainer>
147
141
  <ExampleContainer>
148
142
  <Title title="Only icon without caret" theme="light" level={4} />
149
- <DxcDropdown options={options} onSelectOption={(value) => {}} icon={hamburguerIcon} caretHidden />
143
+ <DxcDropdown options={options} onSelectOption={(value) => {}} icon="menu" caretHidden />
150
144
  </ExampleContainer>
151
145
  <ExampleContainer>
152
146
  <Title title="Large icon (SVG)" theme="light" level={4} />
@@ -154,12 +148,7 @@ const Dropdown = () => (
154
148
  </ExampleContainer>
155
149
  <ExampleContainer>
156
150
  <Title title="Large icon (image)" theme="light" level={4} />
157
- <DxcDropdown
158
- label="Large icon"
159
- options={options}
160
- onSelectOption={(value) => {}}
161
- icon="https://upload.wikimedia.org/wikipedia/commons/thumb/b/b2/Hamburger_icon.svg/2048px-Hamburger_icon.svg.png"
162
- />
151
+ <DxcDropdown label="Large icon" options={options} onSelectOption={(value) => {}} icon="menu" />
163
152
  </ExampleContainer>
164
153
  <ExampleContainer>
165
154
  <Title title="Disabled with icon" theme="light" level={4} />
@@ -292,8 +281,8 @@ const DropdownListStates = () => {
292
281
  <ExampleContainer pseudoState="pseudo-hover">
293
282
  <Title title="Hovered option" theme="light" level={4} />
294
283
  <DropdownMenu
295
- id="x"
296
- dropdownTriggerId="dtx"
284
+ id="x1"
285
+ dropdownTriggerId="dtx1"
297
286
  iconsPosition="before"
298
287
  visualFocusIndex={-1}
299
288
  menuItemOnClick={(value) => {}}
@@ -305,8 +294,8 @@ const DropdownListStates = () => {
305
294
  <ExampleContainer pseudoState="pseudo-active">
306
295
  <Title title="Active option" theme="light" level={4} />
307
296
  <DropdownMenu
308
- id="x"
309
- dropdownTriggerId="dtx"
297
+ id="x2"
298
+ dropdownTriggerId="dtx2"
310
299
  iconsPosition="before"
311
300
  visualFocusIndex={-1}
312
301
  menuItemOnClick={(value) => {}}
@@ -318,8 +307,8 @@ const DropdownListStates = () => {
318
307
  <ExampleContainer>
319
308
  <Title title="Focused option" theme="light" level={4} />
320
309
  <DropdownMenu
321
- id="x"
322
- dropdownTriggerId="dtx"
310
+ id="x3"
311
+ dropdownTriggerId="dtx3"
323
312
  iconsPosition="before"
324
313
  visualFocusIndex={0}
325
314
  menuItemOnClick={(value) => {}}
@@ -332,8 +321,8 @@ const DropdownListStates = () => {
332
321
  <ExampleContainer>
333
322
  <Title title="Before" theme="light" level={4} />
334
323
  <DropdownMenu
335
- id="x"
336
- dropdownTriggerId="dtx"
324
+ id="x4"
325
+ dropdownTriggerId="dtx4"
337
326
  iconsPosition="before"
338
327
  visualFocusIndex={-1}
339
328
  menuItemOnClick={(value) => {}}
@@ -343,8 +332,8 @@ const DropdownListStates = () => {
343
332
  />
344
333
  <Title title="After" theme="light" level={4} />
345
334
  <DropdownMenu
346
- id="x"
347
- dropdownTriggerId="dtx"
335
+ id="x5"
336
+ dropdownTriggerId="dtx5"
348
337
  iconsPosition="after"
349
338
  visualFocusIndex={-1}
350
339
  menuItemOnClick={(value) => {}}
@@ -0,0 +1 @@
1
+ export {};