@dxc-technology/halstack-react 0.0.0-74c93cf → 0.0.0-74dd241

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 (322) 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 +71 -0
  6. package/accordion/Accordion.js +9 -10
  7. package/accordion/Accordion.stories.tsx +4 -15
  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 +82 -0
  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 +63 -0
  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 +95 -0
  23. package/alert/Alert.js +21 -72
  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 +129 -0
  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 +33 -0
  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 +119 -0
  53. package/bulleted-list/BulletedList.js +7 -4
  54. package/bulleted-list/BulletedList.stories.tsx +1 -1
  55. package/button/Button.accessibility.test.d.ts +1 -0
  56. package/button/Button.accessibility.test.js +127 -0
  57. package/button/Button.js +1 -1
  58. package/button/Button.stories.tsx +3 -4
  59. package/button/Button.test.d.ts +1 -0
  60. package/button/Button.test.js +1 -1
  61. package/card/Card.accessibility.test.d.ts +1 -0
  62. package/card/Card.accessibility.test.js +36 -0
  63. package/card/Card.js +3 -2
  64. package/card/Card.stories.tsx +1 -1
  65. package/card/Card.test.d.ts +1 -0
  66. package/card/Card.test.js +1 -1
  67. package/checkbox/Checkbox.accessibility.test.d.ts +1 -0
  68. package/checkbox/Checkbox.accessibility.test.js +87 -0
  69. package/checkbox/Checkbox.js +10 -13
  70. package/checkbox/Checkbox.test.d.ts +1 -0
  71. package/checkbox/Checkbox.test.js +1 -1
  72. package/chip/Chip.accessibility.test.d.ts +1 -0
  73. package/chip/Chip.accessibility.test.js +67 -0
  74. package/chip/Chip.js +11 -6
  75. package/chip/Chip.stories.tsx +6 -25
  76. package/chip/Chip.test.d.ts +1 -0
  77. package/chip/Chip.test.js +5 -5
  78. package/common/coreTokens.js +3 -3
  79. package/common/variables.d.ts +2 -5
  80. package/common/variables.js +68 -71
  81. package/container/Container.stories.tsx +3 -3
  82. package/contextual-menu/ContextualMenu.accessibility.test.d.ts +1 -0
  83. package/contextual-menu/ContextualMenu.accessibility.test.js +98 -0
  84. package/contextual-menu/ContextualMenu.d.ts +3 -5
  85. package/contextual-menu/ContextualMenu.js +89 -52
  86. package/contextual-menu/ContextualMenu.stories.tsx +115 -74
  87. package/contextual-menu/ContextualMenu.test.d.ts +1 -0
  88. package/contextual-menu/ContextualMenu.test.js +200 -24
  89. package/contextual-menu/GroupItem.d.ts +4 -0
  90. package/contextual-menu/GroupItem.js +67 -0
  91. package/contextual-menu/ItemAction.d.ts +4 -0
  92. package/contextual-menu/ItemAction.js +50 -0
  93. package/contextual-menu/MenuItem.d.ts +4 -0
  94. package/contextual-menu/MenuItem.js +29 -0
  95. package/contextual-menu/SingleItem.d.ts +4 -0
  96. package/contextual-menu/SingleItem.js +38 -0
  97. package/contextual-menu/types.d.ts +50 -11
  98. package/date-input/Calendar.js +47 -31
  99. package/date-input/DateInput.accessibility.test.d.ts +1 -0
  100. package/date-input/DateInput.accessibility.test.js +229 -0
  101. package/date-input/DateInput.js +28 -23
  102. package/date-input/DateInput.stories.tsx +18 -12
  103. package/date-input/DateInput.test.d.ts +1 -0
  104. package/date-input/DateInput.test.js +39 -39
  105. package/date-input/DatePicker.js +13 -7
  106. package/date-input/YearPicker.js +10 -5
  107. package/dialog/Dialog.accessibility.test.d.ts +1 -0
  108. package/dialog/Dialog.accessibility.test.js +69 -0
  109. package/dialog/Dialog.js +9 -20
  110. package/dialog/Dialog.stories.tsx +8 -4
  111. package/dialog/Dialog.test.d.ts +1 -0
  112. package/dialog/Dialog.test.js +112 -49
  113. package/divider/Divider.accessibility.test.d.ts +1 -0
  114. package/divider/Divider.accessibility.test.js +33 -0
  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 +183 -0
  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 +167 -0
  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 +125 -0
  133. package/footer/Footer.js +8 -6
  134. package/footer/Footer.stories.tsx +40 -3
  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 +94 -0
  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 +33 -0
  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 +30 -0
  154. package/icon/Icon.js +1 -1
  155. package/image/Image.accessibility.test.d.ts +1 -0
  156. package/image/Image.accessibility.test.js +56 -0
  157. package/image/Image.js +1 -1
  158. package/layout/ApplicationLayout.js +9 -6
  159. package/layout/Icons.d.ts +0 -1
  160. package/layout/Icons.js +1 -11
  161. package/link/Link.accessibility.test.d.ts +1 -0
  162. package/link/Link.accessibility.test.js +108 -0
  163. package/link/Link.js +8 -6
  164. package/link/Link.stories.tsx +4 -4
  165. package/link/Link.test.d.ts +1 -0
  166. package/link/Link.test.js +1 -1
  167. package/link/types.d.ts +1 -1
  168. package/main.d.ts +2 -1
  169. package/main.js +8 -1
  170. package/nav-tabs/NavTabs.accessibility.test.d.ts +1 -0
  171. package/nav-tabs/NavTabs.accessibility.test.js +44 -0
  172. package/nav-tabs/NavTabs.js +19 -4
  173. package/nav-tabs/NavTabs.stories.tsx +41 -23
  174. package/nav-tabs/NavTabs.test.d.ts +1 -0
  175. package/nav-tabs/NavTabs.test.js +10 -9
  176. package/nav-tabs/Tab.js +17 -18
  177. package/nav-tabs/types.d.ts +1 -1
  178. package/number-input/NumberInput.accessibility.test.d.ts +1 -0
  179. package/number-input/NumberInput.accessibility.test.js +227 -0
  180. package/number-input/NumberInput.js +1 -1
  181. package/number-input/NumberInput.stories.tsx +2 -16
  182. package/number-input/NumberInput.test.d.ts +1 -0
  183. package/number-input/NumberInput.test.js +6 -7
  184. package/package.json +31 -27
  185. package/paginator/Paginator.accessibility.test.d.ts +1 -0
  186. package/paginator/Paginator.accessibility.test.js +78 -0
  187. package/paginator/Paginator.js +13 -10
  188. package/paginator/Paginator.test.d.ts +1 -0
  189. package/paginator/Paginator.test.js +2 -3
  190. package/paragraph/Paragraph.accessibility.test.d.ts +1 -0
  191. package/paragraph/Paragraph.accessibility.test.js +28 -0
  192. package/password-input/PasswordInput.accessibility.test.d.ts +1 -0
  193. package/password-input/PasswordInput.accessibility.test.js +152 -0
  194. package/password-input/PasswordInput.js +7 -7
  195. package/password-input/PasswordInput.stories.tsx +1 -1
  196. package/password-input/PasswordInput.test.d.ts +1 -0
  197. package/password-input/PasswordInput.test.js +6 -7
  198. package/progress-bar/ProgressBar.accessibility.test.d.ts +1 -0
  199. package/progress-bar/ProgressBar.accessibility.test.js +35 -0
  200. package/progress-bar/ProgressBar.js +6 -4
  201. package/progress-bar/ProgressBar.test.d.ts +1 -0
  202. package/progress-bar/ProgressBar.test.js +1 -1
  203. package/quick-nav/QuickNav.accessibility.test.d.ts +1 -0
  204. package/quick-nav/QuickNav.accessibility.test.js +57 -0
  205. package/quick-nav/QuickNav.js +1 -1
  206. package/radio-group/Radio.js +6 -9
  207. package/radio-group/RadioGroup.accessibility.test.d.ts +1 -0
  208. package/radio-group/RadioGroup.accessibility.test.js +97 -0
  209. package/radio-group/RadioGroup.js +14 -16
  210. package/radio-group/RadioGroup.test.d.ts +1 -0
  211. package/radio-group/RadioGroup.test.js +3 -5
  212. package/resultset-table/ResultsetTable.accessibility.test.d.ts +1 -0
  213. package/resultset-table/ResultsetTable.accessibility.test.js +284 -0
  214. package/resultset-table/ResultsetTable.js +3 -2
  215. package/resultset-table/ResultsetTable.stories.tsx +13 -1
  216. package/resultset-table/ResultsetTable.test.d.ts +1 -0
  217. package/resultset-table/ResultsetTable.test.js +2 -4
  218. package/select/Listbox.js +24 -16
  219. package/select/Option.js +12 -10
  220. package/select/Select.accessibility.test.d.ts +1 -0
  221. package/select/Select.accessibility.test.js +227 -0
  222. package/select/Select.js +38 -28
  223. package/select/Select.stories.tsx +60 -112
  224. package/select/Select.test.d.ts +1 -0
  225. package/select/Select.test.js +371 -474
  226. package/select/types.d.ts +1 -1
  227. package/sidenav/Sidenav.accessibility.test.d.ts +1 -0
  228. package/sidenav/Sidenav.accessibility.test.js +59 -0
  229. package/sidenav/Sidenav.js +16 -12
  230. package/sidenav/Sidenav.stories.tsx +5 -10
  231. package/sidenav/Sidenav.test.d.ts +1 -0
  232. package/sidenav/Sidenav.test.js +1 -1
  233. package/sidenav/types.d.ts +2 -2
  234. package/slider/Slider.accessibility.test.d.ts +1 -0
  235. package/slider/Slider.accessibility.test.js +103 -0
  236. package/slider/Slider.js +11 -13
  237. package/slider/Slider.stories.tsx +180 -0
  238. package/slider/Slider.test.d.ts +1 -0
  239. package/slider/Slider.test.js +13 -11
  240. package/spinner/Spinner.accessibility.test.d.ts +1 -0
  241. package/spinner/Spinner.accessibility.test.js +96 -0
  242. package/spinner/Spinner.js +6 -2
  243. package/spinner/Spinner.test.d.ts +1 -0
  244. package/spinner/Spinner.test.js +1 -1
  245. package/status-light/StatusLight.accessibility.test.d.ts +1 -0
  246. package/status-light/StatusLight.accessibility.test.js +157 -0
  247. package/status-light/StatusLight.test.d.ts +1 -0
  248. package/status-light/StatusLight.test.js +1 -1
  249. package/switch/Switch.accessibility.test.d.ts +1 -0
  250. package/switch/Switch.accessibility.test.js +98 -0
  251. package/switch/Switch.js +6 -9
  252. package/switch/Switch.stories.tsx +12 -0
  253. package/switch/Switch.test.d.ts +1 -0
  254. package/switch/Switch.test.js +1 -1
  255. package/table/Table.accessibility.test.d.ts +1 -0
  256. package/table/Table.accessibility.test.js +92 -0
  257. package/table/Table.js +1 -1
  258. package/table/Table.stories.tsx +13 -1
  259. package/table/Table.test.d.ts +1 -0
  260. package/table/Table.test.js +2 -4
  261. package/tabs/Tab.js +6 -5
  262. package/tabs/Tabs.accessibility.test.d.ts +1 -0
  263. package/tabs/Tabs.accessibility.test.js +56 -0
  264. package/tabs/Tabs.js +9 -20
  265. package/tabs/Tabs.stories.tsx +7 -3
  266. package/tabs/Tabs.test.d.ts +1 -0
  267. package/tabs/Tabs.test.js +20 -38
  268. package/tabs/types.d.ts +2 -2
  269. package/tag/Tag.accessibility.test.d.ts +1 -0
  270. package/tag/Tag.accessibility.test.js +69 -0
  271. package/tag/Tag.js +7 -7
  272. package/tag/Tag.stories.tsx +5 -8
  273. package/tag/Tag.test.d.ts +1 -0
  274. package/tag/Tag.test.js +5 -13
  275. package/tag/types.d.ts +2 -2
  276. package/text-input/Suggestion.js +1 -1
  277. package/text-input/Suggestions.js +17 -7
  278. package/text-input/TextInput.accessibility.test.d.ts +1 -0
  279. package/text-input/TextInput.accessibility.test.js +320 -0
  280. package/text-input/TextInput.js +34 -30
  281. package/text-input/TextInput.stories.tsx +10 -7
  282. package/text-input/TextInput.test.d.ts +1 -0
  283. package/text-input/TextInput.test.js +2 -3
  284. package/textarea/Textarea.accessibility.test.d.ts +1 -0
  285. package/textarea/Textarea.accessibility.test.js +155 -0
  286. package/textarea/Textarea.js +14 -13
  287. package/textarea/Textarea.test.d.ts +1 -0
  288. package/textarea/Textarea.test.js +1 -1
  289. package/toggle-group/ToggleGroup.accessibility.test.d.ts +1 -0
  290. package/toggle-group/ToggleGroup.accessibility.test.js +107 -0
  291. package/toggle-group/ToggleGroup.js +10 -12
  292. package/toggle-group/ToggleGroup.stories.tsx +4 -4
  293. package/toggle-group/ToggleGroup.test.d.ts +1 -0
  294. package/toggle-group/ToggleGroup.test.js +1 -1
  295. package/toggle-group/types.d.ts +2 -2
  296. package/typography/Typography.accessibility.test.d.ts +1 -0
  297. package/typography/Typography.accessibility.test.js +339 -0
  298. package/typography/Typography.stories.tsx +1 -3
  299. package/useTheme.d.ts +2 -5
  300. package/utils/BaseTypography.js +1 -1
  301. package/utils/FocusLock.js +3 -2
  302. package/wizard/Wizard.accessibility.test.d.ts +1 -0
  303. package/wizard/Wizard.accessibility.test.js +55 -0
  304. package/wizard/Wizard.js +14 -25
  305. package/wizard/Wizard.stories.tsx +20 -1
  306. package/wizard/Wizard.test.d.ts +1 -0
  307. package/wizard/Wizard.test.js +1 -1
  308. package/wizard/types.d.ts +1 -1
  309. package/contextual-menu/MenuItemAction.d.ts +0 -4
  310. package/contextual-menu/MenuItemAction.js +0 -46
  311. package/date-input/Icons.d.ts +0 -6
  312. package/date-input/Icons.js +0 -58
  313. package/paginator/Icons.d.ts +0 -5
  314. package/paginator/Icons.js +0 -40
  315. package/password-input/Icons.d.ts +0 -6
  316. package/password-input/Icons.js +0 -35
  317. package/select/Icons.d.ts +0 -10
  318. package/select/Icons.js +0 -89
  319. package/sidenav/Icons.d.ts +0 -7
  320. package/sidenav/Icons.js +0 -47
  321. package/text-input/Icons.d.ts +0 -8
  322. package/text-input/Icons.js +0 -56
@@ -0,0 +1,227 @@
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 _Select = _interopRequireDefault(require("./Select"));
12
+ var _Flex = _interopRequireDefault(require("../flex/Flex"));
13
+ var _disabledRules = require("../../test/accessibility/rules/specific/select/disabledRules.js");
14
+ // TODO: REMOVE
15
+
16
+ var disabledRules = {
17
+ rules: _disabledRules.disabledRules.reduce(function (rulesObj, rule) {
18
+ rulesObj[rule] = {
19
+ enabled: false
20
+ };
21
+ return rulesObj;
22
+ }, {})
23
+ };
24
+ var iconSVG = /*#__PURE__*/_react["default"].createElement("svg", {
25
+ xmlns: "http://www.w3.org/2000/svg",
26
+ height: "24px",
27
+ viewBox: "0 0 24 24",
28
+ width: "24px",
29
+ fill: "currentColor"
30
+ }, /*#__PURE__*/_react["default"].createElement("g", null, /*#__PURE__*/_react["default"].createElement("path", {
31
+ d: "M0,0h24v24H0V0z",
32
+ fill: "none"
33
+ })), /*#__PURE__*/_react["default"].createElement("g", null, /*#__PURE__*/_react["default"].createElement("g", null, /*#__PURE__*/_react["default"].createElement("path", {
34
+ d: "M3,7v2h5v2H4v2h4v2H3v2h5c1.1,0,2-0.9,2-2v-1.5c0-0.83-0.67-1.5-1.5-1.5c0.83,0,1.5-0.67,1.5-1.5V9c0-1.1-0.9-2-2-2H3z M21,11v4c0,1.1-0.9,2-2,2h-5c-1.1,0-2-0.9-2-2V9c0-1.1,0.9-2,2-2h5c1.1,0,2,0.9,2,2h-7v6h5v-2h-2.5v-2H21z"
35
+ }))));
36
+ var group_options = [{
37
+ label: "Group 001",
38
+ options: [{
39
+ label: "Option 001",
40
+ value: "1"
41
+ }, {
42
+ label: "Option 002",
43
+ value: "2"
44
+ }, {
45
+ label: "Option 003",
46
+ value: "3"
47
+ }]
48
+ }, {
49
+ label: "Group 002",
50
+ options: [{
51
+ label: "Option 004",
52
+ value: "4"
53
+ }, {
54
+ label: "Option 005",
55
+ value: "5"
56
+ }, {
57
+ label: "Option 006",
58
+ value: "6"
59
+ }]
60
+ }, {
61
+ label: "Group 003",
62
+ options: [{
63
+ label: "Option 007",
64
+ value: "7"
65
+ }, {
66
+ label: "Option 008",
67
+ value: "8"
68
+ }, {
69
+ label: "Option 009",
70
+ value: "9"
71
+ }]
72
+ }, {
73
+ label: "Group 004",
74
+ options: [{
75
+ label: "Option 010",
76
+ value: "10"
77
+ }, {
78
+ label: "Option 011",
79
+ value: "11"
80
+ }, {
81
+ label: "Option 012",
82
+ value: "12"
83
+ }]
84
+ }, {
85
+ label: "Group 005",
86
+ options: [{
87
+ label: "Option 013",
88
+ value: "13"
89
+ }, {
90
+ label: "Option 014",
91
+ value: "14"
92
+ }, {
93
+ label: "Option 015",
94
+ value: "15"
95
+ }]
96
+ }];
97
+ var single_options = [{
98
+ label: "Option 01",
99
+ value: "1",
100
+ icon: iconSVG
101
+ }, {
102
+ label: "Option 02",
103
+ value: "2",
104
+ icon: iconSVG
105
+ }, {
106
+ label: "Option 03",
107
+ value: "3",
108
+ icon: iconSVG
109
+ }, {
110
+ label: "Option 04",
111
+ value: "4",
112
+ icon: iconSVG
113
+ }];
114
+
115
+ // Mocking DOMRect for Radix Primitive Popover
116
+ global.globalThis = global;
117
+ global.DOMRect = {
118
+ fromRect: function fromRect() {
119
+ return {
120
+ top: 0,
121
+ left: 0,
122
+ bottom: 0,
123
+ right: 0,
124
+ width: 0,
125
+ height: 0
126
+ };
127
+ }
128
+ };
129
+ global.ResizeObserver = /*#__PURE__*/function () {
130
+ function ResizeObserver() {
131
+ (0, _classCallCheck2["default"])(this, ResizeObserver);
132
+ }
133
+ return (0, _createClass2["default"])(ResizeObserver, [{
134
+ key: "observe",
135
+ value: function observe() {}
136
+ }, {
137
+ key: "unobserve",
138
+ value: function unobserve() {}
139
+ }, {
140
+ key: "disconnect",
141
+ value: function disconnect() {}
142
+ }]);
143
+ }();
144
+ describe("Select component accessibility tests", function () {
145
+ it("Should not have basic accessibility issues", /*#__PURE__*/(0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee() {
146
+ var _render, baseElement, results;
147
+ return _regenerator["default"].wrap(function _callee$(_context) {
148
+ while (1) switch (_context.prev = _context.next) {
149
+ case 0:
150
+ // baseElement is needed when using React Portals
151
+ _render = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_Flex["default"], null, /*#__PURE__*/_react["default"].createElement(_Select["default"], {
152
+ label: "test-select-label",
153
+ helperText: "test-select-helper-text",
154
+ placeholder: "Example text",
155
+ options: single_options,
156
+ defaultValue: "1",
157
+ margin: "medium",
158
+ name: "Name",
159
+ size: "medium",
160
+ searchable: true
161
+ }), /*#__PURE__*/_react["default"].createElement(_Select["default"], {
162
+ label: "test-select-label",
163
+ helperText: "test-select-helper-text",
164
+ placeholder: "Example text",
165
+ options: single_options,
166
+ defaultValue: ["4", "2", "6"],
167
+ margin: "medium",
168
+ name: "Name",
169
+ size: "medium",
170
+ searchable: true,
171
+ multiple: true,
172
+ optional: true
173
+ }))), baseElement = _render.baseElement;
174
+ _context.next = 3;
175
+ return (0, _axeHelper.axe)(baseElement, disabledRules);
176
+ case 3:
177
+ results = _context.sent;
178
+ expect(results).toHaveNoViolations();
179
+ case 5:
180
+ case "end":
181
+ return _context.stop();
182
+ }
183
+ }, _callee);
184
+ })));
185
+ it("Should not have basic accessibility issues for group mode", /*#__PURE__*/(0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee2() {
186
+ var _render2, baseElement, results;
187
+ return _regenerator["default"].wrap(function _callee2$(_context2) {
188
+ while (1) switch (_context2.prev = _context2.next) {
189
+ case 0:
190
+ // baseElement is needed when using React Portals
191
+ _render2 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_Flex["default"], null, /*#__PURE__*/_react["default"].createElement(_Select["default"], {
192
+ label: "test-select-label",
193
+ helperText: "test-select-helper-text",
194
+ placeholder: "Example text",
195
+ options: group_options,
196
+ defaultValue: ["4", "2", "6"],
197
+ error: "Error",
198
+ margin: "medium",
199
+ name: "Name",
200
+ size: "medium",
201
+ searchable: true,
202
+ multiple: true
203
+ }), /*#__PURE__*/_react["default"].createElement(_Select["default"], {
204
+ label: "test-select-label",
205
+ helperText: "test-select-helper-text",
206
+ placeholder: "Example text",
207
+ options: group_options,
208
+ defaultValue: ["4", "2", "6"],
209
+ margin: "medium",
210
+ name: "Name",
211
+ size: "medium",
212
+ searchable: true,
213
+ multiple: true,
214
+ disabled: true
215
+ }))), baseElement = _render2.baseElement;
216
+ _context2.next = 3;
217
+ return (0, _axeHelper.axe)(baseElement, disabledRules);
218
+ case 3:
219
+ results = _context2.sent;
220
+ expect(results).toHaveNoViolations();
221
+ case 5:
222
+ case "end":
223
+ return _context2.stop();
224
+ }
225
+ }, _callee2);
226
+ })));
227
+ });
package/select/Select.js CHANGED
@@ -15,14 +15,13 @@ var _styledComponents = _interopRequireWildcard(require("styled-components"));
15
15
  var _useTheme = _interopRequireDefault(require("../useTheme"));
16
16
  var _useTranslatedLabels = _interopRequireDefault(require("../useTranslatedLabels"));
17
17
  var _variables = require("../common/variables");
18
- var _uuid = require("uuid");
19
18
  var _utils = require("../common/utils");
20
- var _Icons = _interopRequireDefault(require("./Icons"));
21
19
  var _Listbox = _interopRequireDefault(require("./Listbox"));
22
20
  var Popover = _interopRequireWildcard(require("@radix-ui/react-popover"));
21
+ var _Icon = _interopRequireDefault(require("../icon/Icon"));
23
22
  var _templateObject, _templateObject2, _templateObject3, _templateObject4, _templateObject5, _templateObject6, _templateObject7, _templateObject8, _templateObject9, _templateObject10, _templateObject11, _templateObject12, _templateObject13, _templateObject14, _templateObject15, _templateObject16, _templateObject17;
24
23
  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); }
25
- 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; }
24
+ 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; }
26
25
  var isOptionGroup = function isOptionGroup(option) {
27
26
  return "options" in option && option.options != null;
28
27
  };
@@ -158,28 +157,27 @@ var DxcSelect = /*#__PURE__*/_react["default"].forwardRef(function (_ref, ref) {
158
157
  size = _ref$size === void 0 ? "medium" : _ref$size,
159
158
  _ref$tabIndex = _ref.tabIndex,
160
159
  tabIndex = _ref$tabIndex === void 0 ? 0 : _ref$tabIndex;
161
- var _useState3 = (0, _react.useState)("select-".concat((0, _uuid.v4)())),
162
- _useState4 = (0, _slicedToArray2["default"])(_useState3, 1),
163
- selectId = _useState4[0];
160
+ var selectId = "select-".concat((0, _react.useId)());
164
161
  var selectLabelId = "label-".concat(selectId);
162
+ var searchableInputId = "searchable-input-".concat(selectId);
165
163
  var errorId = "error-".concat(selectId);
166
164
  var optionsListId = "".concat(selectId, "-listbox");
167
- var _useState5 = (0, _react.useState)(defaultValue !== null && defaultValue !== void 0 ? defaultValue : multiple ? [] : ""),
165
+ var _useState3 = (0, _react.useState)(defaultValue !== null && defaultValue !== void 0 ? defaultValue : multiple ? [] : ""),
166
+ _useState4 = (0, _slicedToArray2["default"])(_useState3, 2),
167
+ innerValue = _useState4[0],
168
+ setInnerValue = _useState4[1];
169
+ var _useState5 = (0, _react.useState)(""),
168
170
  _useState6 = (0, _slicedToArray2["default"])(_useState5, 2),
169
- innerValue = _useState6[0],
170
- setInnerValue = _useState6[1];
171
- var _useState7 = (0, _react.useState)(""),
171
+ searchValue = _useState6[0],
172
+ setSearchValue = _useState6[1];
173
+ var _useState7 = (0, _react.useState)(-1),
172
174
  _useState8 = (0, _slicedToArray2["default"])(_useState7, 2),
173
- searchValue = _useState8[0],
174
- setSearchValue = _useState8[1];
175
- var _useState9 = (0, _react.useState)(-1),
175
+ visualFocusIndex = _useState8[0],
176
+ changeVisualFocusIndex = _useState8[1];
177
+ var _useState9 = (0, _react.useState)(false),
176
178
  _useState10 = (0, _slicedToArray2["default"])(_useState9, 2),
177
- visualFocusIndex = _useState10[0],
178
- changeVisualFocusIndex = _useState10[1];
179
- var _useState11 = (0, _react.useState)(false),
180
- _useState12 = (0, _slicedToArray2["default"])(_useState11, 2),
181
- isOpen = _useState12[0],
182
- changeIsOpen = _useState12[1];
179
+ isOpen = _useState10[0],
180
+ changeIsOpen = _useState10[1];
183
181
  var selectRef = (0, _react.useRef)(null);
184
182
  var selectSearchInputRef = (0, _react.useRef)(null);
185
183
  var selectedOptionLabelRef = (0, _react.useRef)(null);
@@ -271,6 +269,7 @@ var DxcSelect = /*#__PURE__*/_react["default"].forwardRef(function (_ref, ref) {
271
269
  case "Esc":
272
270
  case "Escape":
273
271
  event.preventDefault();
272
+ isOpen && event.stopPropagation();
274
273
  closeOptions();
275
274
  setSearchValue("");
276
275
  break;
@@ -341,7 +340,8 @@ var DxcSelect = /*#__PURE__*/_react["default"].forwardRef(function (_ref, ref) {
341
340
  onClick: function onClick() {
342
341
  selectRef.current.focus();
343
342
  },
344
- helperText: helperText
343
+ helperText: helperText,
344
+ htmlFor: searchable ? searchableInputId : undefined
345
345
  }, label, " ", optional && /*#__PURE__*/_react["default"].createElement(OptionalLabel, null, translatedLabels.formFields.optionalLabel)), helperText && /*#__PURE__*/_react["default"].createElement(HelperText, {
346
346
  disabled: disabled
347
347
  }, helperText), /*#__PURE__*/_react["default"].createElement(Popover.Root, {
@@ -381,13 +381,16 @@ var DxcSelect = /*#__PURE__*/_react["default"].forwardRef(function (_ref, ref) {
381
381
  tabIndex: -1,
382
382
  title: translatedLabels.select.actionClearSelectionTitle,
383
383
  "aria-label": translatedLabels.select.actionClearSelectionTitle
384
- }, _Icons["default"].clear)), /*#__PURE__*/_react["default"].createElement(SearchableValueContainer, null, /*#__PURE__*/_react["default"].createElement(ValueInput, {
384
+ }, /*#__PURE__*/_react["default"].createElement(_Icon["default"], {
385
+ icon: "clear"
386
+ }))), /*#__PURE__*/_react["default"].createElement(SearchableValueContainer, null, /*#__PURE__*/_react["default"].createElement(ValueInput, {
385
387
  name: name,
386
388
  disabled: disabled,
387
389
  value: multiple ? ((_ref4 = value && Array.isArray(value) && value) !== null && _ref4 !== void 0 ? _ref4 : innerValue && Array.isArray(innerValue) && innerValue).join(",") : value !== null && value !== void 0 ? value : innerValue,
388
390
  readOnly: true,
389
391
  "aria-hidden": "true"
390
392
  }), searchable && /*#__PURE__*/_react["default"].createElement(SearchInput, {
393
+ id: searchableInputId,
391
394
  value: searchValue,
392
395
  disabled: disabled,
393
396
  onChange: handleSearchIOnChange,
@@ -400,7 +403,9 @@ var DxcSelect = /*#__PURE__*/_react["default"].forwardRef(function (_ref, ref) {
400
403
  atBackground: (multiple ? (value !== null && value !== void 0 ? value : innerValue).length === 0 : !(value !== null && value !== void 0 ? value : innerValue)) || searchable && isOpen
401
404
  }, /*#__PURE__*/_react["default"].createElement(SelectedOptionLabel, {
402
405
  ref: selectedOptionLabelRef
403
- }, getSelectedOptionLabel(placeholder, selectedOption)))), !disabled && error && /*#__PURE__*/_react["default"].createElement(ErrorIcon, null, _Icons["default"].error), searchable && searchValue.length > 0 && /*#__PURE__*/_react["default"].createElement(ClearSearchAction, {
406
+ }, getSelectedOptionLabel(placeholder, selectedOption)))), !disabled && error && /*#__PURE__*/_react["default"].createElement(ErrorIcon, null, /*#__PURE__*/_react["default"].createElement(_Icon["default"], {
407
+ icon: "filled_error"
408
+ })), searchable && searchValue.length > 0 && /*#__PURE__*/_react["default"].createElement(ClearSearchAction, {
404
409
  onMouseDown: function onMouseDown(event) {
405
410
  // Avoid input to lose focus
406
411
  event.preventDefault();
@@ -409,9 +414,13 @@ var DxcSelect = /*#__PURE__*/_react["default"].forwardRef(function (_ref, ref) {
409
414
  tabIndex: -1,
410
415
  title: translatedLabels.select.actionClearSearchTitle,
411
416
  "aria-label": translatedLabels.select.actionClearSearchTitle
412
- }, _Icons["default"].clear), /*#__PURE__*/_react["default"].createElement(CollapseIndicator, {
417
+ }, /*#__PURE__*/_react["default"].createElement(_Icon["default"], {
418
+ icon: "clear"
419
+ })), /*#__PURE__*/_react["default"].createElement(CollapseIndicator, {
413
420
  disabled: disabled
414
- }, isOpen ? _Icons["default"].arrowUp : _Icons["default"].arrowDown))), /*#__PURE__*/_react["default"].createElement(Popover.Portal, null, /*#__PURE__*/_react["default"].createElement(Popover.Content, {
421
+ }, /*#__PURE__*/_react["default"].createElement(_Icon["default"], {
422
+ icon: isOpen ? "keyboard_arrow_up" : "keyboard_arrow_down"
423
+ })))), /*#__PURE__*/_react["default"].createElement(Popover.Portal, null, /*#__PURE__*/_react["default"].createElement(Popover.Content, {
415
424
  sideOffset: 4,
416
425
  style: {
417
426
  zIndex: "2147483647"
@@ -440,6 +449,7 @@ var DxcSelect = /*#__PURE__*/_react["default"].forwardRef(function (_ref, ref) {
440
449
  }
441
450
  })))), !disabled && typeof error === "string" && /*#__PURE__*/_react["default"].createElement(Error, {
442
451
  id: errorId,
452
+ role: "alert",
443
453
  "aria-live": error ? "assertive" : "off"
444
454
  }, error)));
445
455
  });
@@ -465,7 +475,7 @@ var SelectContainer = _styledComponents["default"].div(_templateObject || (_temp
465
475
  }, function (props) {
466
476
  return props.margin && (0, _typeof2["default"])(props.margin) === "object" && props.margin.left ? _variables.spaces[props.margin.left] : "";
467
477
  });
468
- var Label = _styledComponents["default"].span(_templateObject2 || (_templateObject2 = (0, _taggedTemplateLiteral2["default"])(["\n color: ", ";\n font-family: ", ";\n font-size: ", ";\n font-style: ", ";\n font-weight: ", ";\n line-height: ", ";\n cursor: default;\n ", "\n"])), function (props) {
478
+ var Label = _styledComponents["default"].label(_templateObject2 || (_templateObject2 = (0, _taggedTemplateLiteral2["default"])(["\n color: ", ";\n font-family: ", ";\n font-size: ", ";\n font-style: ", ";\n font-weight: ", ";\n line-height: ", ";\n cursor: default;\n ", "\n"])), function (props) {
469
479
  return props.disabled ? props.theme.disabledColor : props.theme.labelFontColor;
470
480
  }, function (props) {
471
481
  return props.theme.fontFamily;
@@ -527,7 +537,7 @@ var SelectionNumber = _styledComponents["default"].span(_templateObject7 || (_te
527
537
  }, function (props) {
528
538
  return props.disabled ? "cursor: not-allowed;" : "cursor: default;";
529
539
  });
530
- var ClearOptionsAction = _styledComponents["default"].button(_templateObject8 || (_templateObject8 = (0, _taggedTemplateLiteral2["default"])(["\n display: flex;\n flex-wrap: wrap;\n align-content: center;\n width: 23px;\n height: 22px;\n border: none;\n padding: 0.25rem;\n ", "\n background-color: ", ";\n color: ", ";\n\n :focus-visible {\n outline: none;\n }\n ", "\n\n svg {\n line-height: 18px;\n }\n"])), function (props) {
540
+ var ClearOptionsAction = _styledComponents["default"].button(_templateObject8 || (_templateObject8 = (0, _taggedTemplateLiteral2["default"])(["\n display: flex;\n flex-wrap: wrap;\n align-content: center;\n width: 23px;\n height: 22px;\n border: none;\n padding: 0.25rem;\n ", "\n background-color: ", ";\n color: ", ";\n\n :focus-visible {\n outline: none;\n }\n ", "\n\n font-size:16px;\n"])), function (props) {
531
541
  return props.disabled ? "cursor: not-allowed;" : "cursor: pointer;";
532
542
  }, function (props) {
533
543
  return props.disabled ? "transparent" : props.theme.enabledSelectionIndicatorActionBackgroundColor;
@@ -561,7 +571,7 @@ var SearchInput = _styledComponents["default"].input(_templateObject13 || (_temp
561
571
  }, function (props) {
562
572
  return props.theme.valueFontWeight;
563
573
  });
564
- var ErrorIcon = _styledComponents["default"].span(_templateObject14 || (_templateObject14 = (0, _taggedTemplateLiteral2["default"])(["\n display: flex;\n flex-wrap: wrap;\n align-content: center;\n padding: 3px;\n height: 18px;\n width: 18px;\n margin-left: 0.25rem;\n pointer-events: none;\n color: ", ";\n\n svg {\n line-height: 18px;\n font-size: 1.25rem;\n }\n"])), function (props) {
574
+ var ErrorIcon = _styledComponents["default"].span(_templateObject14 || (_templateObject14 = (0, _taggedTemplateLiteral2["default"])(["\n display: flex;\n flex-wrap: wrap;\n align-content: center;\n padding: 3px;\n height: 18px;\n width: 18px;\n margin-left: 0.25rem;\n pointer-events: none;\n color: ", ";\n\n font-size: 1.25rem;\n"])), function (props) {
565
575
  return props.theme.errorIconColor;
566
576
  });
567
577
  var Error = _styledComponents["default"].span(_templateObject15 || (_templateObject15 = (0, _taggedTemplateLiteral2["default"])(["\n min-height: 1.5em;\n color: ", ";\n font-family: ", ";\n font-size: 0.75rem;\n font-weight: 400;\n line-height: 1.5em;\n margin-top: 0.25rem;\n"])), function (props) {
@@ -572,7 +582,7 @@ var Error = _styledComponents["default"].span(_templateObject15 || (_templateObj
572
582
  var CollapseIndicator = _styledComponents["default"].span(_templateObject16 || (_templateObject16 = (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-left: 0.25rem;\n color: ", ";\n"])), function (props) {
573
583
  return props.disabled ? props.theme.disabledColor : props.theme.collapseIndicatorColor;
574
584
  });
575
- var ClearSearchAction = _styledComponents["default"].button(_templateObject17 || (_templateObject17 = (0, _taggedTemplateLiteral2["default"])(["\n display: flex;\n flex-wrap: wrap;\n align-content: center;\n height: 24px;\n width: 24px;\n font-size: 1rem;\n font-family: ", ";\n border: 1px solid transparent;\n border-radius: 2px;\n padding: 3px;\n margin-left: 0.25rem;\n background-color: ", ";\n color: ", ";\n\n cursor: pointer;\n &:hover {\n background-color: ", ";\n color: ", ";\n }\n &:active {\n background-color: ", ";\n color: ", ";\n }\n svg {\n line-height: 18px;\n }\n"])), function (props) {
585
+ var ClearSearchAction = _styledComponents["default"].button(_templateObject17 || (_templateObject17 = (0, _taggedTemplateLiteral2["default"])(["\n display: flex;\n flex-wrap: wrap;\n align-content: center;\n height: 24px;\n width: 24px;\n font-size: 1rem;\n font-family: ", ";\n border: 1px solid transparent;\n border-radius: 2px;\n padding: 3px;\n margin-left: 0.25rem;\n background-color: ", ";\n color: ", ";\n\n cursor: pointer;\n &:hover {\n background-color: ", ";\n color: ", ";\n }\n &:active {\n background-color: ", ";\n color: ", ";\n }\n font-size: 16px;\n"])), function (props) {
576
586
  return props.theme.fontFamily;
577
587
  }, function (props) {
578
588
  return props.theme.actionBackgroundColor;