@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
@@ -6,7 +6,7 @@ var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/
6
6
  var _react = _interopRequireDefault(require("react"));
7
7
  var _react2 = require("@testing-library/react");
8
8
  var _userEvent = _interopRequireDefault(require("@testing-library/user-event"));
9
- var _RadioGroup = _interopRequireDefault(require("./RadioGroup.tsx"));
9
+ var _RadioGroup = _interopRequireDefault(require("./RadioGroup"));
10
10
  var options = [{
11
11
  label: "Option 01",
12
12
  value: "1"
@@ -55,12 +55,10 @@ describe("Radio Group component tests", function () {
55
55
  })),
56
56
  getByRole = _render.getByRole,
57
57
  getAllByRole = _render.getAllByRole,
58
- getByText = _render.getByText,
59
- container = _render.container;
58
+ getByText = _render.getByText;
60
59
  var radioGroup = getByRole("radiogroup");
61
60
  var radios = getAllByRole("radio");
62
- var errorId = "error-".concat(getByText("test-radioGroup-label").id.replace("label-", ""));
63
- var error = container.querySelector("#".concat(errorId));
61
+ var error = getByRole("alert");
64
62
  expect(radioGroup.getAttribute("aria-disabled")).toBe("false");
65
63
  expect(radioGroup.getAttribute("aria-labelledby")).toBe(getByText("test-radioGroup-label").id);
66
64
  expect(radioGroup.getAttribute("aria-invalid")).toBe("false");
@@ -7,8 +7,19 @@ var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/cl
7
7
  var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
8
8
  var _react = _interopRequireDefault(require("react"));
9
9
  var _react2 = require("@testing-library/react");
10
- var _jestAxe = require("jest-axe");
11
- var _ResultsetTable = _interopRequireDefault(require("./ResultsetTable.tsx"));
10
+ var _axeHelper = require("../../test/accessibility/axe-helper.js");
11
+ var _ResultsetTable = _interopRequireDefault(require("./ResultsetTable"));
12
+ var _disabledRules = require("../../test/accessibility/rules/specific/resultset-table/disabledRules.js");
13
+ // TODO: REMOVE
14
+
15
+ var disabledRules = {
16
+ rules: _disabledRules.disabledRules.reduce(function (rulesObj, rule) {
17
+ rulesObj[rule] = {
18
+ enabled: false
19
+ };
20
+ return rulesObj;
21
+ }, {})
22
+ };
12
23
  var deleteIcon = /*#__PURE__*/_react["default"].createElement("svg", {
13
24
  xmlns: "http://www.w3.org/2000/svg",
14
25
  height: "24",
@@ -40,7 +51,7 @@ global.ResizeObserver = /*#__PURE__*/function () {
40
51
  function ResizeObserver() {
41
52
  (0, _classCallCheck2["default"])(this, ResizeObserver);
42
53
  }
43
- (0, _createClass2["default"])(ResizeObserver, [{
54
+ return (0, _createClass2["default"])(ResizeObserver, [{
44
55
  key: "observe",
45
56
  value: function observe() {}
46
57
  }, {
@@ -50,7 +61,6 @@ global.ResizeObserver = /*#__PURE__*/function () {
50
61
  key: "disconnect",
51
62
  value: function disconnect() {}
52
63
  }]);
53
- return ResizeObserver;
54
64
  }();
55
65
  var actions = [{
56
66
  title: "icon",
@@ -236,7 +246,7 @@ describe("Resultset Table input component accessibility tests", function () {
236
246
  showGoToPage: true
237
247
  })), container = _render.container;
238
248
  _context.next = 3;
239
- return (0, _jestAxe.axe)(container);
249
+ return (0, _axeHelper.axe)(container, disabledRules);
240
250
  case 3:
241
251
  results = _context.sent;
242
252
  expect(results).toHaveNoViolations();
@@ -261,7 +271,7 @@ describe("Resultset Table input component accessibility tests", function () {
261
271
  showGoToPage: true
262
272
  })), container = _render2.container;
263
273
  _context2.next = 3;
264
- return (0, _jestAxe.axe)(container);
274
+ return (0, _axeHelper.axe)(container, disabledRules);
265
275
  case 3:
266
276
  results = _context2.sent;
267
277
  expect(results).toHaveNoViolations();
@@ -20,14 +20,14 @@ var _utils = require("../common/utils");
20
20
  var _coreTokens = _interopRequireDefault(require("../common/coreTokens"));
21
21
  var _templateObject, _templateObject2, _templateObject3;
22
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); }
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 && 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
+ 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; }
24
24
  var normalizeSortValue = function normalizeSortValue(sortValue) {
25
25
  return typeof sortValue === "string" ? sortValue.toUpperCase() : sortValue;
26
26
  };
27
27
  var sortArray = function sortArray(index, order, resultset) {
28
28
  return resultset.slice().sort(function (element1, element2) {
29
- var sortValueA = normalizeSortValue(element1[index].sortValue || element1[index].displayValue);
30
- var sortValueB = normalizeSortValue(element2[index].sortValue || element2[index].displayValue);
29
+ var sortValueA = normalizeSortValue(element1.cells[index].sortValue || element1[index].displayValue);
30
+ var sortValueB = normalizeSortValue(element2.cells[index].sortValue || element2[index].displayValue);
31
31
  var comparison = 0;
32
32
  if ((0, _typeof2["default"])(sortValueA) === "object") {
33
33
  comparison = -1;
@@ -47,6 +47,17 @@ var getMinItemsPerPageIndex = function getMinItemsPerPageIndex(currentPageIntern
47
47
  var getMaxItemsPerPageIndex = function getMaxItemsPerPageIndex(minItemsPerPageIndex, itemsPerPage, resultset, page) {
48
48
  return minItemsPerPageIndex + itemsPerPage > resultset.length ? resultset.length : itemsPerPage * page - 1;
49
49
  };
50
+ var assignIdsToRows = function assignIdsToRows(resultset) {
51
+ if (resultset.length > 0) {
52
+ return resultset.map(function (row, index) {
53
+ return {
54
+ cells: row,
55
+ id: "row_".concat(index)
56
+ };
57
+ });
58
+ }
59
+ return [];
60
+ };
50
61
  var DxcResultsetTable = function DxcResultsetTable(_ref) {
51
62
  var columns = _ref.columns,
52
63
  rows = _ref.rows,
@@ -76,6 +87,10 @@ var DxcResultsetTable = function DxcResultsetTable(_ref) {
76
87
  _useState6 = (0, _slicedToArray2["default"])(_useState5, 2),
77
88
  sortOrder = _useState6[0],
78
89
  changeSortOrder = _useState6[1];
90
+ var prevRowCountRef = (0, _react.useRef)(rows.length);
91
+ var rowsWithIds = (0, _react.useMemo)(function () {
92
+ return assignIdsToRows(rows);
93
+ }, [rows]);
79
94
  var minItemsPerPageIndex = (0, _react.useMemo)(function () {
80
95
  return getMinItemsPerPageIndex(page, itemsPerPage, page);
81
96
  }, [itemsPerPage, page]);
@@ -83,8 +98,8 @@ var DxcResultsetTable = function DxcResultsetTable(_ref) {
83
98
  return getMaxItemsPerPageIndex(minItemsPerPageIndex, itemsPerPage, rows, page);
84
99
  }, [itemsPerPage, minItemsPerPageIndex, page, rows]);
85
100
  var sortedResultset = (0, _react.useMemo)(function () {
86
- return sortColumnIndex !== -1 ? sortArray(sortColumnIndex, sortOrder, rows) : rows;
87
- }, [sortColumnIndex, sortOrder, rows]);
101
+ return sortColumnIndex !== -1 ? sortArray(sortColumnIndex, sortOrder, rowsWithIds) : rowsWithIds;
102
+ }, [sortColumnIndex, sortOrder, rowsWithIds]);
88
103
  var filteredResultset = (0, _react.useMemo)(function () {
89
104
  return sortedResultset && sortedResultset.slice(minItemsPerPageIndex, maxItemsPerPageIndex + 1);
90
105
  }, [sortedResultset, minItemsPerPageIndex, maxItemsPerPageIndex]);
@@ -98,9 +113,18 @@ var DxcResultsetTable = function DxcResultsetTable(_ref) {
98
113
  };
99
114
  (0, _react.useEffect)(function () {
100
115
  if (!hidePaginator) {
101
- rows.length > 0 ? changePage(1) : changePage(0);
116
+ if (rows.length === 0) {
117
+ changePage(0);
118
+ } else if (rows.length < prevRowCountRef.current) {
119
+ var lastPage = Math.ceil(rows.length / itemsPerPage);
120
+ var prevLastPage = Math.ceil(prevRowCountRef.current / itemsPerPage);
121
+ if (lastPage < prevLastPage) {
122
+ changePage(Math.min(lastPage, page));
123
+ }
124
+ }
125
+ prevRowCountRef.current = rows.length;
102
126
  }
103
- }, [rows]);
127
+ }, [rows.length]);
104
128
  return /*#__PURE__*/_react["default"].createElement(_styledComponents.ThemeProvider, {
105
129
  theme: colorsTheme.table
106
130
  }, /*#__PURE__*/_react["default"].createElement(DxcResultsetTableContainer, {
@@ -119,12 +143,13 @@ var DxcResultsetTable = function DxcResultsetTable(_ref) {
119
143
  },
120
144
  tabIndex: column.isSortable ? tabIndex : -1,
121
145
  isSortable: column.isSortable,
122
- mode: mode
146
+ mode: mode,
147
+ "aria-label": column.isSortable ? "Sort column" : undefined
123
148
  }, /*#__PURE__*/_react["default"].createElement("span", null, column.displayValue), column.isSortable && /*#__PURE__*/_react["default"].createElement(SortIcon, null, sortColumnIndex === index ? sortOrder === "ascending" ? _Icons["default"].arrowUp : _Icons["default"].arrowDown : _Icons["default"].bothArrows)));
124
- }))), /*#__PURE__*/_react["default"].createElement("tbody", null, filteredResultset.map(function (cells, rowIndex) {
149
+ }))), /*#__PURE__*/_react["default"].createElement("tbody", null, filteredResultset.map(function (row) {
125
150
  return /*#__PURE__*/_react["default"].createElement("tr", {
126
- key: "resultSetTableCell_".concat(page, "_").concat(rowIndex)
127
- }, cells.map(function (cellContent, cellIndex) {
151
+ key: "resultSetTableCell_".concat(row.id)
152
+ }, row.cells.map(function (cellContent, cellIndex) {
128
153
  return /*#__PURE__*/_react["default"].createElement("td", {
129
154
  key: "resultSetTableCellContent_".concat(cellIndex)
130
155
  }, cellContent.displayValue);
@@ -2,13 +2,25 @@ import React from "react";
2
2
  import DxcResultsetTable from "./ResultsetTable";
3
3
  import Title from "../../.storybook/components/Title";
4
4
  import ExampleContainer from "../../.storybook/components/ExampleContainer";
5
- import { userEvent, within } from "@storybook/testing-library";
5
+ import { userEvent, within } from "@storybook/test";
6
6
  import styled from "styled-components";
7
7
  import { HalstackProvider } from "../HalstackContext";
8
+ import { disabledRules } from "../../test/accessibility/rules/specific/resultset-table/disabledRules";
9
+ import preview from "../../.storybook/preview";
8
10
 
9
11
  export default {
10
12
  title: "Resultset Table",
11
13
  component: DxcResultsetTable,
14
+ parameters: {
15
+ a11y: {
16
+ config: {
17
+ rules: [
18
+ ...disabledRules.map((ruleId) => ({ id: ruleId, reviewOnFail: true })),
19
+ ...preview?.parameters?.a11y?.config?.rules,
20
+ ],
21
+ },
22
+ },
23
+ },
12
24
  };
13
25
 
14
26
  const deleteIcon = (
@@ -397,5 +409,5 @@ export const DropdownAction = ResultsetActionsCellDropdown.bind({});
397
409
  DropdownAction.play = async ({ canvasElement }) => {
398
410
  const canvas = within(canvasElement);
399
411
  const dropdown = canvas.getAllByRole("button")[5];
400
- await userEvent.click(dropdown);
412
+ userEvent.click(dropdown);
401
413
  };
@@ -0,0 +1 @@
1
+ export {};
@@ -8,7 +8,8 @@ var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/creat
8
8
  var _react = _interopRequireDefault(require("react"));
9
9
  var _react2 = require("@testing-library/react");
10
10
  var _userEvent = _interopRequireDefault(require("@testing-library/user-event"));
11
- var _ResultsetTable = _interopRequireDefault(require("./ResultsetTable.tsx"));
11
+ var _ResultsetTable = _interopRequireDefault(require("./ResultsetTable"));
12
+ var _Checkbox = _interopRequireDefault(require("../checkbox/Checkbox"));
12
13
  // Mocking DOMRect for Radix Primitive Popover
13
14
  global.globalThis = global;
14
15
  global.DOMRect = {
@@ -27,7 +28,7 @@ global.ResizeObserver = /*#__PURE__*/function () {
27
28
  function ResizeObserver() {
28
29
  (0, _classCallCheck2["default"])(this, ResizeObserver);
29
30
  }
30
- (0, _createClass2["default"])(ResizeObserver, [{
31
+ return (0, _createClass2["default"])(ResizeObserver, [{
31
32
  key: "observe",
32
33
  value: function observe() {}
33
34
  }, {
@@ -37,7 +38,6 @@ global.ResizeObserver = /*#__PURE__*/function () {
37
38
  key: "disconnect",
38
39
  value: function disconnect() {}
39
40
  }]);
40
- return ResizeObserver;
41
41
  }();
42
42
  var icon = /*#__PURE__*/_react["default"].createElement("svg", {
43
43
  xmlns: "http://www.w3.org/2000/svg",
@@ -152,36 +152,55 @@ var rows = [[{
152
152
  displayValue: "Barcelona",
153
153
  sortValue: "Barcelona"
154
154
  }]];
155
- var rows2 = [[{
156
- displayValue: "546",
157
- sortValue: "465"
155
+ var columnsWithCheckbox = [{
156
+ displayValue: "Id",
157
+ isSortable: true
158
+ }, {
159
+ displayValue: "Checkbox",
160
+ isSortable: false
161
+ }, {
162
+ displayValue: "Name",
163
+ isSortable: false
164
+ }, {
165
+ displayValue: "City",
166
+ isSortable: false
167
+ }];
168
+ var rowsWithCheckbox = [[{
169
+ displayValue: "001",
170
+ sortValue: "001"
171
+ }, {
172
+ displayValue: /*#__PURE__*/_react["default"].createElement(_Checkbox["default"], {
173
+ size: "fillParent",
174
+ defaultChecked: true
175
+ })
158
176
  }, {
159
- displayValue: "OtherValue",
160
- sortValue: "OtherValue"
177
+ displayValue: "Peter"
161
178
  }, {
162
- displayValue: "OtherValue",
163
- sortValue: "OtherValue"
179
+ displayValue: "Miami"
164
180
  }], [{
165
- displayValue: "978",
166
- sortValue: "465"
181
+ displayValue: "002",
182
+ sortValue: "002"
167
183
  }, {
168
- displayValue: "OtherValue",
169
- sortValue: "OtherValue"
184
+ displayValue: /*#__PURE__*/_react["default"].createElement(_Checkbox["default"], {
185
+ size: "fillParent"
186
+ })
170
187
  }, {
171
- displayValue: "OtherValue",
172
- sortValue: "OtherValue"
188
+ displayValue: "Louis"
173
189
  }, {
174
- displayValue: ""
190
+ displayValue: "London"
175
191
  }], [{
176
- displayValue: "678",
177
- sortValue: "344"
192
+ displayValue: "003",
193
+ sortValue: "003"
194
+ }, {
195
+ displayValue: /*#__PURE__*/_react["default"].createElement(_Checkbox["default"], {
196
+ size: "fillParent"
197
+ })
178
198
  }, {
179
- displayValue: "OtherValue",
180
- sortValue: "OtherValue"
199
+ displayValue: "Lana"
181
200
  }, {
182
- displayValue: "OtherValue",
183
- sortValue: "OtherValue"
201
+ displayValue: "Amsterdam"
184
202
  }]];
203
+ var rows2 = [].concat(rows).slice(0, -1);
185
204
  describe("Resultset table component tests", function () {
186
205
  test("Resultset table rendered correctly", function () {
187
206
  var _render = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_ResultsetTable["default"], {
@@ -285,42 +304,93 @@ describe("Resultset table component tests", function () {
285
304
  expect(component.queryByText("Tina")).toBeTruthy();
286
305
  expect(component.queryByText("Cosmin")).not.toBeTruthy();
287
306
  });
288
- test("Resultset table change rows should go to first page", function () {
307
+ test("Resultset table should go one page back when removing the last page data", function () {
289
308
  var _render6 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_ResultsetTable["default"], {
290
309
  columns: columns,
291
310
  rows: rows,
292
311
  itemsPerPage: 3
293
312
  })),
313
+ getAllByRole = _render6.getAllByRole,
294
314
  queryByText = _render6.queryByText,
295
315
  rerender = _render6.rerender;
316
+ expect(queryByText("1 to 3 of 10")).toBeTruthy();
317
+ var lastButton = getAllByRole("button")[4];
296
318
  expect(queryByText("Peter")).toBeTruthy();
319
+ _react2.fireEvent.click(lastButton);
320
+ expect(queryByText("10 to 10 of 10")).toBeTruthy();
297
321
  rerender( /*#__PURE__*/_react["default"].createElement(_ResultsetTable["default"], {
298
322
  columns: columns,
299
323
  rows: rows2,
300
324
  itemsPerPage: 3
301
325
  }));
302
- expect(queryByText("1 to 3 of 3")).toBeTruthy();
326
+ expect(queryByText("7 to 9 of 9")).toBeTruthy();
303
327
  });
304
- test("Resultset table change itemsPerPage should go to first page", function () {
328
+ test("Resultset table shouldn't go one page back when there is data left in the last page", function () {
305
329
  var _render7 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_ResultsetTable["default"], {
330
+ columns: columns,
331
+ rows: rows,
332
+ itemsPerPage: 2
333
+ })),
334
+ getAllByRole = _render7.getAllByRole,
335
+ queryByText = _render7.queryByText,
336
+ rerender = _render7.rerender;
337
+ expect(queryByText("1 to 2 of 10")).toBeTruthy();
338
+ var lastButton = getAllByRole("button")[4];
339
+ expect(queryByText("Peter")).toBeTruthy();
340
+ _react2.fireEvent.click(lastButton);
341
+ expect(queryByText("9 to 10 of 10")).toBeTruthy();
342
+ rerender( /*#__PURE__*/_react["default"].createElement(_ResultsetTable["default"], {
343
+ columns: columns,
344
+ rows: rows2,
345
+ itemsPerPage: 2
346
+ }));
347
+ expect(queryByText("9 to 9 of 9")).toBeTruthy();
348
+ });
349
+ test("Resultset table uncontrolled components maintain its value when sorting", /*#__PURE__*/(0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee2() {
350
+ var _render8, getAllByRole, columnHeader, sortButton;
351
+ return _regenerator["default"].wrap(function _callee2$(_context2) {
352
+ while (1) switch (_context2.prev = _context2.next) {
353
+ case 0:
354
+ _render8 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_ResultsetTable["default"], {
355
+ columns: columnsWithCheckbox,
356
+ rows: rowsWithCheckbox,
357
+ itemsPerPage: 3
358
+ })), getAllByRole = _render8.getAllByRole;
359
+ columnHeader = getAllByRole("columnheader")[0];
360
+ sortButton = getAllByRole("button")[0];
361
+ expect(getAllByRole("checkbox")[0].getAttribute("aria-checked")).toBe("true");
362
+ expect(columnHeader.getAttribute("aria-sort")).toBe("none");
363
+ _react2.fireEvent.click(sortButton);
364
+ expect(columnHeader.getAttribute("aria-sort")).toBe("ascending");
365
+ _react2.fireEvent.click(sortButton);
366
+ expect(columnHeader.getAttribute("aria-sort")).toBe("descending");
367
+ expect(getAllByRole("checkbox")[0].getAttribute("aria-checked")).toBe("false");
368
+ case 10:
369
+ case "end":
370
+ return _context2.stop();
371
+ }
372
+ }, _callee2);
373
+ })));
374
+ test("Resultset table change itemsPerPage should go to first page", function () {
375
+ var _render9 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_ResultsetTable["default"], {
306
376
  columns: columns,
307
377
  rows: rows,
308
378
  itemsPerPage: 3,
309
379
  itemsPerPageOptions: [2, 3]
310
380
  })),
311
- getAllByRole = _render7.getAllByRole;
381
+ getAllByRole = _render9.getAllByRole;
312
382
  var lastButton = getAllByRole("button")[4];
313
383
  expect(getAllByRole("row").length - 1).toEqual(3);
314
384
  _react2.fireEvent.click(lastButton);
315
385
  expect(getAllByRole("row").length - 1).toEqual(1);
316
386
  });
317
387
  test("Resultset table may not use the paginator", function () {
318
- var _render8 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_ResultsetTable["default"], {
388
+ var _render10 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_ResultsetTable["default"], {
319
389
  columns: columns,
320
390
  rows: rows,
321
391
  hidePaginator: true
322
392
  })),
323
- getAllByRole = _render8.getAllByRole;
393
+ getAllByRole = _render10.getAllByRole;
324
394
  var nextButton = getAllByRole("button")[3];
325
395
  expect(nextButton).not.toBeTruthy();
326
396
  });
@@ -328,7 +398,6 @@ describe("Resultset table component tests", function () {
328
398
  var onSelectOption = jest.fn();
329
399
  var onClick = jest.fn();
330
400
  var actions = [{
331
- icon: icon,
332
401
  title: "icon1",
333
402
  onClick: onSelectOption,
334
403
  options: [{
@@ -358,14 +427,14 @@ describe("Resultset table component tests", function () {
358
427
  }),
359
428
  sortValue: "Actions"
360
429
  }]];
361
- var _render9 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_ResultsetTable["default"], {
430
+ var _render11 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_ResultsetTable["default"], {
362
431
  columns: columns,
363
432
  rows: actionRows,
364
433
  itemsPerPage: 3
365
434
  })),
366
- getAllByRole = _render9.getAllByRole,
367
- getByRole = _render9.getByRole,
368
- getByText = _render9.getByText;
435
+ getAllByRole = _render11.getAllByRole,
436
+ getByRole = _render11.getByRole,
437
+ getByText = _render11.getByText;
369
438
  var dropdown = getAllByRole("button")[2];
370
439
  (0, _react2.act)(function () {
371
440
  _userEvent["default"].click(dropdown);
package/select/Listbox.js CHANGED
@@ -11,10 +11,10 @@ var _react = _interopRequireWildcard(require("react"));
11
11
  var _styledComponents = _interopRequireDefault(require("styled-components"));
12
12
  var _useTranslatedLabels = _interopRequireDefault(require("../useTranslatedLabels"));
13
13
  var _Option = _interopRequireDefault(require("./Option"));
14
- var _Icons = _interopRequireDefault(require("./Icons"));
14
+ var _Icon = _interopRequireDefault(require("../icon/Icon"));
15
15
  var _templateObject, _templateObject2, _templateObject3, _templateObject4, _templateObject5;
16
16
  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); }
17
- function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != _typeof(e) && "function" != typeof e) return { "default": e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && 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; }
17
+ function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != _typeof(e) && "function" != typeof e) return { "default": e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n["default"] = e, t && t.set(e, n), n; }
18
18
  var groupsHaveOptions = function groupsHaveOptions(options) {
19
19
  return options !== null && options !== void 0 && options[0].options ? options.some(function (groupOption) {
20
20
  var _groupOption$options;
@@ -35,14 +35,15 @@ var Listbox = function Listbox(_ref) {
35
35
  styles = _ref.styles;
36
36
  var translatedLabels = (0, _useTranslatedLabels["default"])();
37
37
  var listboxRef = (0, _react.useRef)(null);
38
+ var listboxId = "select-".concat((0, _react.useId)());
38
39
  var globalIndex = optional && !multiple ? 0 : -1;
39
40
  var mapOptionFunc = function mapOptionFunc(option, mapIndex) {
41
+ var groupId = "".concat(listboxId, "-group-").concat(mapIndex);
40
42
  if (option.options) {
41
- var groupId = "group-".concat(mapIndex);
42
43
  return option.options.length > 0 && /*#__PURE__*/_react["default"].createElement("li", {
43
- key: "group-".concat(mapIndex)
44
+ key: groupId
44
45
  }, /*#__PURE__*/_react["default"].createElement(GroupList, {
45
- role: "group",
46
+ role: "listbox",
46
47
  "aria-labelledby": groupId
47
48
  }, /*#__PURE__*/_react["default"].createElement(GroupLabel, {
48
49
  role: "presentation",
@@ -50,8 +51,8 @@ var Listbox = function Listbox(_ref) {
50
51
  }, option.label), option.options.map(function (singleOption) {
51
52
  globalIndex++;
52
53
  return /*#__PURE__*/_react["default"].createElement(_Option["default"], {
53
- key: "option-".concat(singleOption.value),
54
- id: "option-".concat(globalIndex),
54
+ key: "".concat(listboxId, "-option-").concat(singleOption.value),
55
+ id: "".concat(listboxId, "-option-").concat(globalIndex),
55
56
  option: singleOption,
56
57
  onClick: handleOptionOnClick,
57
58
  multiple: multiple,
@@ -64,8 +65,8 @@ var Listbox = function Listbox(_ref) {
64
65
  } else {
65
66
  globalIndex++;
66
67
  return /*#__PURE__*/_react["default"].createElement(_Option["default"], {
67
- key: "option-".concat(option.value),
68
- id: "option-".concat(globalIndex),
68
+ key: "".concat(listboxId, "-option-").concat(option.value),
69
+ id: "".concat(listboxId, "-option-").concat(globalIndex),
69
70
  option: option,
70
71
  onClick: handleOptionOnClick,
71
72
  multiple: multiple,
@@ -93,6 +94,10 @@ var Listbox = function Listbox(_ref) {
93
94
  inline: "start"
94
95
  });
95
96
  }, [visualFocusIndex]);
97
+ var hasOptionGroups = options.some(function (option) {
98
+ var _option$options;
99
+ return ((_option$options = option.options) === null || _option$options === void 0 ? void 0 : _option$options.length) > 0;
100
+ });
96
101
  return /*#__PURE__*/_react["default"].createElement(ListboxContainer, {
97
102
  id: id,
98
103
  onClick: function onClick(event) {
@@ -102,12 +107,15 @@ var Listbox = function Listbox(_ref) {
102
107
  event.preventDefault();
103
108
  },
104
109
  ref: listboxRef,
105
- role: "listbox",
106
- "aria-multiselectable": multiple,
107
- style: styles
108
- }, searchable && (options.length === 0 || !groupsHaveOptions(options)) ? /*#__PURE__*/_react["default"].createElement(OptionsSystemMessage, null, /*#__PURE__*/_react["default"].createElement(NoMatchesFoundIcon, null, _Icons["default"].searchOff), translatedLabels.select.noMatchesErrorMessage) : optional && !multiple && /*#__PURE__*/_react["default"].createElement(_Option["default"], {
109
- key: "option-".concat(optionalItem.value),
110
- id: "option-".concat(0),
110
+ "aria-multiselectable": !hasOptionGroups ? multiple : undefined,
111
+ style: styles,
112
+ role: hasOptionGroups ? "list" : "listbox",
113
+ "aria-label": "List of options"
114
+ }, searchable && (options.length === 0 || !groupsHaveOptions(options)) ? /*#__PURE__*/_react["default"].createElement(OptionsSystemMessage, null, /*#__PURE__*/_react["default"].createElement(NoMatchesFoundIcon, null, /*#__PURE__*/_react["default"].createElement(_Icon["default"], {
115
+ icon: "search_off"
116
+ })), translatedLabels.select.noMatchesErrorMessage) : optional && !multiple && /*#__PURE__*/_react["default"].createElement(_Option["default"], {
117
+ key: "".concat(id, "-option-").concat(optionalItem.value),
118
+ id: "".concat(id, "-option-", 0),
111
119
  option: optionalItem,
112
120
  onClick: handleOptionOnClick,
113
121
  multiple: multiple,
@@ -135,7 +143,7 @@ var ListboxContainer = _styledComponents["default"].ul(_templateObject || (_temp
135
143
  var OptionsSystemMessage = _styledComponents["default"].span(_templateObject2 || (_templateObject2 = (0, _taggedTemplateLiteral2["default"])(["\n display: flex;\n padding: 4px 16px;\n color: ", ";\n font-size: 0.875rem;\n line-height: 1.715em;\n"])), function (props) {
136
144
  return props.theme.systemMessageFontColor;
137
145
  });
138
- var NoMatchesFoundIcon = _styledComponents["default"].span(_templateObject3 || (_templateObject3 = (0, _taggedTemplateLiteral2["default"])(["\n display: flex;\n flex-wrap: wrap;\n align-content: center;\n height: 16px;\n width: 16px;\n padding: 4px;\n margin-right: 0.25rem;\n"])));
146
+ var NoMatchesFoundIcon = _styledComponents["default"].span(_templateObject3 || (_templateObject3 = (0, _taggedTemplateLiteral2["default"])(["\n display: flex;\n flex-wrap: wrap;\n align-content: center;\n height: 16px;\n width: 16px;\n padding: 4px;\n margin-right: 0.25rem;\n font-size: 16px;\n"])));
139
147
  var GroupList = _styledComponents["default"].ul(_templateObject4 || (_templateObject4 = (0, _taggedTemplateLiteral2["default"])(["\n padding: 0;\n"])));
140
148
  var GroupLabel = _styledComponents["default"].li(_templateObject5 || (_templateObject5 = (0, _taggedTemplateLiteral2["default"])(["\n padding: 4px 16px;\n font-weight: ", ";\n line-height: 1.715em;\n"])), function (props) {
141
149
  return props.theme.listGroupLabelFontWeight;
package/select/Option.js CHANGED
@@ -9,7 +9,7 @@ var _taggedTemplateLiteral2 = _interopRequireDefault(require("@babel/runtime/hel
9
9
  var _react = _interopRequireDefault(require("react"));
10
10
  var _styledComponents = _interopRequireDefault(require("styled-components"));
11
11
  var _Checkbox = _interopRequireDefault(require("../checkbox/Checkbox"));
12
- var _Icons = _interopRequireDefault(require("./Icons"));
12
+ var _Icon = _interopRequireDefault(require("../icon/Icon"));
13
13
  var _templateObject, _templateObject2, _templateObject3, _templateObject4, _templateObject5, _templateObject6;
14
14
  var Option = function Option(_ref) {
15
15
  var id = _ref.id,
@@ -34,7 +34,8 @@ var Option = function Option(_ref) {
34
34
  visualFocused: visualFocused,
35
35
  selected: isSelected,
36
36
  role: "option",
37
- "aria-selected": isSelected
37
+ "aria-selected": !multiple ? isSelected : undefined,
38
+ tabIndex: 0
38
39
  }, /*#__PURE__*/_react["default"].createElement(StyledOption, {
39
40
  visualFocused: visualFocused,
40
41
  selected: isSelected,
@@ -46,17 +47,18 @@ var Option = function Option(_ref) {
46
47
  tabIndex: -1
47
48
  }), option.icon && /*#__PURE__*/_react["default"].createElement(OptionIcon, {
48
49
  grouped: isGroupedOption,
49
- multiple: multiple,
50
- role: !(typeof option.icon === "string") ? "img" : undefined
51
- }, typeof option.icon === "string" ? /*#__PURE__*/_react["default"].createElement("img", {
52
- src: option.icon
50
+ multiple: multiple
51
+ }, typeof option.icon === "string" ? /*#__PURE__*/_react["default"].createElement(_Icon["default"], {
52
+ icon: option.icon
53
53
  }) : option.icon), /*#__PURE__*/_react["default"].createElement(OptionContent, {
54
54
  grouped: isGroupedOption,
55
55
  hasIcon: option.icon ? true : false,
56
56
  multiple: multiple
57
57
  }, /*#__PURE__*/_react["default"].createElement(OptionLabel, {
58
58
  onMouseEnter: handleOnMouseEnter
59
- }, option.label), !multiple && isSelected && /*#__PURE__*/_react["default"].createElement(OptionSelectedIndicator, null, _Icons["default"].selected))));
59
+ }, option.label), !multiple && isSelected && /*#__PURE__*/_react["default"].createElement(OptionSelectedIndicator, null, /*#__PURE__*/_react["default"].createElement(_Icon["default"], {
60
+ icon: "done"
61
+ })))));
60
62
  };
61
63
  var OptionItem = _styledComponents["default"].li(_templateObject || (_templateObject = (0, _taggedTemplateLiteral2["default"])(["\n padding: 0 0.5rem;\n box-shadow: inset 0 0 0 2px transparent;\n ", "\n ", ";\n line-height: 1.715em;\n cursor: pointer;\n\n &:hover {\n ", ";\n }\n &:active {\n ", ";\n }\n"])), function (props) {
62
64
  return props.visualFocused && "box-shadow: inset 0 0 0 2px ".concat(props.theme.focusListOptionBorderColor, ";");
@@ -67,12 +69,12 @@ var OptionItem = _styledComponents["default"].li(_templateObject || (_templateOb
67
69
  }, function (props) {
68
70
  return props.selected ? "background-color: ".concat(props.theme.selectedActiveListOptionBackgroundColor, ";") : "background-color: ".concat(props.theme.unselectedActiveListOptionBackgroundColor, ";");
69
71
  });
70
- var StyledOption = _styledComponents["default"].span(_templateObject2 || (_templateObject2 = (0, _taggedTemplateLiteral2["default"])(["\n display: flex;\n padding: 0.25rem 0.5rem 0.188rem 0;\n min-height: 24px;\n ", "\n ", ";\n"])), function (props) {
72
+ var StyledOption = _styledComponents["default"].span(_templateObject2 || (_templateObject2 = (0, _taggedTemplateLiteral2["default"])(["\n display: flex;\n padding: 0.25rem 0.5rem 0.188rem 0;\n min-height: 24px;\n align-items: center;\n ", "\n ", ";\n"])), function (props) {
71
73
  return props.grouped && props.multiple && "padding-left: 16px;";
72
74
  }, function (props) {
73
75
  return props.last || props.visualFocused || props.selected ? "border-bottom: 1px solid transparent" : "border-bottom: 1px solid ".concat(props.theme.listOptionDividerColor);
74
76
  });
75
- var OptionIcon = _styledComponents["default"].span(_templateObject3 || (_templateObject3 = (0, _taggedTemplateLiteral2["default"])(["\n display: flex;\n padding: 0.125rem;\n margin-left: ", ";\n color: ", ";\n\n svg,\n img {\n height: 20px;\n width: 20px;\n }\n"])), function (props) {
77
+ var OptionIcon = _styledComponents["default"].span(_templateObject3 || (_templateObject3 = (0, _taggedTemplateLiteral2["default"])(["\n display: flex;\n padding: 0.125rem;\n margin-left: ", ";\n color: ", ";\n\n svg {\n height: 24px;\n width: 24px;\n }\n font-size: 24px;\n"])), function (props) {
76
78
  return props.grouped && !props.multiple ? "16px" : "8px";
77
79
  }, function (props) {
78
80
  return props.theme.listOptionIconColor;
@@ -81,7 +83,7 @@ var OptionContent = _styledComponents["default"].span(_templateObject4 || (_temp
81
83
  return props.grouped && !props.multiple && !props.hasIcon ? "16px" : "8px";
82
84
  });
83
85
  var OptionLabel = _styledComponents["default"].span(_templateObject5 || (_templateObject5 = (0, _taggedTemplateLiteral2["default"])(["\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n"])));
84
- var OptionSelectedIndicator = _styledComponents["default"].span(_templateObject6 || (_templateObject6 = (0, _taggedTemplateLiteral2["default"])(["\n display: flex;\n align-items: center;\n color: ", ";\n\n svg {\n width: 16px;\n height: 16px;\n }\n"])), function (props) {
86
+ var OptionSelectedIndicator = _styledComponents["default"].span(_templateObject6 || (_templateObject6 = (0, _taggedTemplateLiteral2["default"])(["\n display: flex;\n align-items: center;\n color: ", ";\n font-size: 16px;\n"])), function (props) {
85
87
  return props.theme.selectedListOptionIconColor;
86
88
  });
87
89
  var _default = exports["default"] = /*#__PURE__*/_react["default"].memo(Option);
@@ -0,0 +1 @@
1
+ export {};