@dxc-technology/halstack-react 0.0.0-d3554d7 → 0.0.0-d3df47e

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 (331) hide show
  1. package/BackgroundColorContext.d.ts +1 -10
  2. package/BackgroundColorContext.js +5 -22
  3. package/HalstackContext.d.ts +1221 -0
  4. package/HalstackContext.js +310 -0
  5. package/README.md +47 -0
  6. package/accordion/Accordion.d.ts +1 -1
  7. package/accordion/Accordion.js +116 -181
  8. package/accordion/Accordion.stories.tsx +103 -127
  9. package/accordion/Accordion.test.js +32 -33
  10. package/accordion/types.d.ts +9 -16
  11. package/accordion-group/AccordionGroup.d.ts +5 -4
  12. package/accordion-group/AccordionGroup.js +38 -107
  13. package/accordion-group/AccordionGroup.stories.tsx +95 -68
  14. package/accordion-group/AccordionGroup.test.js +55 -90
  15. package/accordion-group/AccordionGroupAccordion.d.ts +4 -0
  16. package/accordion-group/AccordionGroupAccordion.js +31 -0
  17. package/accordion-group/types.d.ts +15 -16
  18. package/action-icon/ActionIcon.d.ts +4 -0
  19. package/action-icon/ActionIcon.js +47 -0
  20. package/action-icon/ActionIcon.stories.tsx +41 -0
  21. package/action-icon/ActionIcon.test.js +64 -0
  22. package/action-icon/types.d.ts +26 -0
  23. package/alert/Alert.js +23 -59
  24. package/alert/Alert.stories.tsx +28 -0
  25. package/alert/Alert.test.js +29 -46
  26. package/alert/types.d.ts +5 -5
  27. package/badge/Badge.d.ts +1 -1
  28. package/badge/Badge.js +142 -40
  29. package/badge/Badge.stories.tsx +210 -0
  30. package/badge/Badge.test.js +30 -0
  31. package/badge/types.d.ts +52 -2
  32. package/bleed/Bleed.js +14 -55
  33. package/bleed/Bleed.stories.tsx +95 -95
  34. package/bleed/types.d.ts +26 -2
  35. package/box/Box.d.ts +1 -1
  36. package/box/Box.js +30 -81
  37. package/box/Box.stories.tsx +38 -51
  38. package/box/Box.test.js +2 -7
  39. package/box/types.d.ts +3 -14
  40. package/bulleted-list/BulletedList.d.ts +7 -0
  41. package/bulleted-list/BulletedList.js +89 -0
  42. package/bulleted-list/BulletedList.stories.tsx +115 -0
  43. package/bulleted-list/types.d.ts +38 -0
  44. package/button/Button.d.ts +1 -1
  45. package/button/Button.js +62 -113
  46. package/button/Button.stories.tsx +160 -90
  47. package/button/Button.test.js +20 -17
  48. package/button/types.d.ts +12 -8
  49. package/card/Card.d.ts +1 -1
  50. package/card/Card.js +58 -102
  51. package/card/Card.stories.tsx +12 -42
  52. package/card/Card.test.js +11 -22
  53. package/card/types.d.ts +6 -11
  54. package/checkbox/Checkbox.d.ts +2 -2
  55. package/checkbox/Checkbox.js +144 -182
  56. package/checkbox/Checkbox.stories.tsx +166 -136
  57. package/checkbox/Checkbox.test.js +163 -29
  58. package/checkbox/types.d.ts +18 -6
  59. package/chip/Chip.js +39 -79
  60. package/chip/Chip.stories.tsx +121 -26
  61. package/chip/Chip.test.js +16 -31
  62. package/chip/types.d.ts +4 -4
  63. package/common/OpenSans.css +68 -80
  64. package/common/coreTokens.d.ts +237 -0
  65. package/common/coreTokens.js +184 -0
  66. package/common/utils.d.ts +1 -0
  67. package/common/utils.js +6 -12
  68. package/common/variables.d.ts +1367 -0
  69. package/common/variables.js +1002 -1136
  70. package/container/Container.d.ts +4 -0
  71. package/container/Container.js +194 -0
  72. package/container/Container.stories.tsx +214 -0
  73. package/container/types.d.ts +74 -0
  74. package/date-input/Calendar.d.ts +4 -0
  75. package/date-input/Calendar.js +214 -0
  76. package/date-input/DateInput.js +171 -306
  77. package/date-input/DateInput.stories.tsx +203 -56
  78. package/date-input/DateInput.test.js +708 -369
  79. package/date-input/DatePicker.d.ts +4 -0
  80. package/date-input/DatePicker.js +115 -0
  81. package/date-input/Icons.d.ts +6 -0
  82. package/date-input/Icons.js +58 -0
  83. package/date-input/YearPicker.d.ts +4 -0
  84. package/date-input/YearPicker.js +100 -0
  85. package/date-input/types.d.ts +86 -22
  86. package/dialog/Dialog.d.ts +1 -1
  87. package/dialog/Dialog.js +68 -130
  88. package/dialog/Dialog.stories.tsx +320 -167
  89. package/dialog/Dialog.test.js +287 -20
  90. package/dialog/types.d.ts +18 -25
  91. package/dropdown/Dropdown.d.ts +1 -1
  92. package/dropdown/Dropdown.js +243 -304
  93. package/dropdown/Dropdown.stories.tsx +245 -56
  94. package/dropdown/Dropdown.test.js +575 -165
  95. package/dropdown/DropdownMenu.d.ts +4 -0
  96. package/dropdown/DropdownMenu.js +63 -0
  97. package/dropdown/DropdownMenuItem.d.ts +4 -0
  98. package/dropdown/DropdownMenuItem.js +67 -0
  99. package/dropdown/types.d.ts +32 -14
  100. package/file-input/FileInput.d.ts +2 -2
  101. package/file-input/FileInput.js +246 -357
  102. package/file-input/FileInput.stories.tsx +123 -12
  103. package/file-input/FileInput.test.js +369 -367
  104. package/file-input/FileItem.d.ts +4 -14
  105. package/file-input/FileItem.js +50 -99
  106. package/file-input/types.d.ts +25 -8
  107. package/flex/Flex.d.ts +4 -0
  108. package/flex/Flex.js +57 -0
  109. package/flex/Flex.stories.tsx +112 -0
  110. package/flex/types.d.ts +97 -0
  111. package/footer/Footer.d.ts +1 -1
  112. package/footer/Footer.js +70 -190
  113. package/footer/Footer.stories.tsx +60 -19
  114. package/footer/Footer.test.js +33 -57
  115. package/footer/Icons.d.ts +3 -2
  116. package/footer/Icons.js +67 -8
  117. package/footer/types.d.ts +25 -26
  118. package/grid/Grid.d.ts +7 -0
  119. package/grid/Grid.js +76 -0
  120. package/grid/Grid.stories.tsx +219 -0
  121. package/grid/types.d.ts +115 -0
  122. package/header/Header.d.ts +4 -3
  123. package/header/Header.js +99 -203
  124. package/header/Header.stories.tsx +152 -63
  125. package/header/Header.test.js +31 -28
  126. package/header/Icons.d.ts +2 -2
  127. package/header/Icons.js +4 -9
  128. package/header/types.d.ts +5 -19
  129. package/heading/Heading.js +10 -32
  130. package/heading/Heading.test.js +71 -88
  131. package/heading/types.d.ts +7 -7
  132. package/image/Image.d.ts +4 -0
  133. package/image/Image.js +70 -0
  134. package/image/Image.stories.tsx +127 -0
  135. package/image/types.d.ts +72 -0
  136. package/inset/Inset.js +14 -55
  137. package/inset/Inset.stories.tsx +37 -36
  138. package/inset/types.d.ts +26 -2
  139. package/layout/ApplicationLayout.d.ts +16 -6
  140. package/layout/ApplicationLayout.js +84 -181
  141. package/layout/ApplicationLayout.stories.tsx +85 -94
  142. package/layout/Icons.d.ts +8 -0
  143. package/layout/Icons.js +51 -48
  144. package/layout/SidenavContext.d.ts +5 -0
  145. package/layout/SidenavContext.js +13 -0
  146. package/layout/types.d.ts +19 -35
  147. package/link/Link.d.ts +3 -2
  148. package/link/Link.js +61 -99
  149. package/link/Link.stories.tsx +155 -53
  150. package/link/Link.test.js +25 -53
  151. package/link/types.d.ts +15 -31
  152. package/main.d.ts +14 -13
  153. package/main.js +65 -101
  154. package/nav-tabs/NavTabs.d.ts +8 -0
  155. package/nav-tabs/NavTabs.js +93 -0
  156. package/nav-tabs/NavTabs.stories.tsx +276 -0
  157. package/nav-tabs/NavTabs.test.js +76 -0
  158. package/nav-tabs/Tab.d.ts +4 -0
  159. package/nav-tabs/Tab.js +118 -0
  160. package/nav-tabs/types.d.ts +52 -0
  161. package/nav-tabs/types.js +5 -0
  162. package/number-input/NumberInput.d.ts +7 -0
  163. package/number-input/NumberInput.js +27 -43
  164. package/number-input/NumberInput.stories.tsx +44 -28
  165. package/number-input/NumberInput.test.js +703 -381
  166. package/number-input/types.d.ts +28 -15
  167. package/package.json +46 -47
  168. package/paginator/Icons.d.ts +5 -0
  169. package/paginator/Icons.js +21 -47
  170. package/paginator/Paginator.js +34 -91
  171. package/paginator/Paginator.stories.tsx +24 -0
  172. package/paginator/Paginator.test.js +280 -211
  173. package/paginator/types.d.ts +3 -3
  174. package/paragraph/Paragraph.d.ts +5 -0
  175. package/paragraph/Paragraph.js +22 -0
  176. package/paragraph/Paragraph.stories.tsx +27 -0
  177. package/password-input/Icons.d.ts +6 -0
  178. package/password-input/Icons.js +35 -0
  179. package/password-input/PasswordInput.js +57 -123
  180. package/password-input/PasswordInput.stories.tsx +1 -33
  181. package/password-input/PasswordInput.test.js +162 -147
  182. package/password-input/types.d.ts +21 -17
  183. package/progress-bar/ProgressBar.js +65 -91
  184. package/progress-bar/ProgressBar.stories.tsx +93 -0
  185. package/progress-bar/ProgressBar.test.js +72 -44
  186. package/progress-bar/types.d.ts +3 -3
  187. package/quick-nav/QuickNav.d.ts +4 -0
  188. package/quick-nav/QuickNav.js +94 -0
  189. package/quick-nav/QuickNav.stories.tsx +356 -0
  190. package/quick-nav/types.d.ts +21 -0
  191. package/quick-nav/types.js +5 -0
  192. package/radio-group/Radio.d.ts +1 -1
  193. package/radio-group/Radio.js +59 -76
  194. package/radio-group/RadioGroup.js +72 -116
  195. package/radio-group/RadioGroup.stories.tsx +135 -17
  196. package/radio-group/RadioGroup.test.js +529 -467
  197. package/radio-group/types.d.ts +86 -9
  198. package/resultset-table/Icons.d.ts +7 -0
  199. package/resultset-table/Icons.js +47 -0
  200. package/{resultsetTable → resultset-table}/ResultsetTable.d.ts +1 -1
  201. package/resultset-table/ResultsetTable.js +165 -0
  202. package/{resultsetTable → resultset-table}/ResultsetTable.stories.tsx +69 -25
  203. package/{resultsetTable → resultset-table}/ResultsetTable.test.js +117 -118
  204. package/{resultsetTable → resultset-table}/types.d.ts +13 -7
  205. package/resultset-table/types.js +5 -0
  206. package/select/Icons.d.ts +10 -0
  207. package/select/Icons.js +89 -0
  208. package/select/Listbox.d.ts +4 -0
  209. package/select/Listbox.js +143 -0
  210. package/select/Option.d.ts +4 -0
  211. package/select/Option.js +87 -0
  212. package/select/Select.js +223 -502
  213. package/select/Select.stories.tsx +534 -145
  214. package/select/Select.test.js +2009 -1539
  215. package/select/types.d.ts +64 -25
  216. package/sidenav/Icons.d.ts +7 -0
  217. package/sidenav/Icons.js +47 -0
  218. package/sidenav/Sidenav.d.ts +6 -5
  219. package/sidenav/Sidenav.js +131 -71
  220. package/sidenav/Sidenav.stories.tsx +251 -151
  221. package/sidenav/Sidenav.test.js +26 -45
  222. package/sidenav/types.d.ts +52 -26
  223. package/slider/Slider.d.ts +2 -2
  224. package/slider/Slider.js +148 -180
  225. package/slider/Slider.test.js +198 -73
  226. package/slider/types.d.ts +11 -3
  227. package/spinner/Spinner.js +31 -75
  228. package/spinner/{Spinner.stories.jsx → Spinner.stories.tsx} +53 -27
  229. package/spinner/Spinner.test.js +26 -35
  230. package/spinner/types.d.ts +3 -3
  231. package/status-light/StatusLight.d.ts +4 -0
  232. package/status-light/StatusLight.js +51 -0
  233. package/status-light/StatusLight.stories.tsx +74 -0
  234. package/status-light/StatusLight.test.js +25 -0
  235. package/status-light/types.d.ts +17 -0
  236. package/status-light/types.js +5 -0
  237. package/switch/Switch.d.ts +2 -2
  238. package/switch/Switch.js +149 -114
  239. package/switch/Switch.stories.tsx +44 -67
  240. package/switch/Switch.test.js +146 -39
  241. package/switch/types.d.ts +13 -5
  242. package/table/Table.d.ts +1 -1
  243. package/table/Table.js +25 -32
  244. package/table/{Table.stories.jsx → Table.stories.tsx} +178 -1
  245. package/table/Table.test.js +3 -8
  246. package/table/types.d.ts +12 -6
  247. package/tabs/Tab.d.ts +4 -0
  248. package/tabs/Tab.js +116 -0
  249. package/tabs/Tabs.d.ts +1 -1
  250. package/tabs/Tabs.js +316 -145
  251. package/tabs/Tabs.stories.tsx +120 -14
  252. package/tabs/Tabs.test.js +238 -67
  253. package/tabs/types.d.ts +29 -15
  254. package/tag/Tag.js +41 -78
  255. package/tag/Tag.stories.tsx +25 -8
  256. package/tag/Tag.test.js +20 -31
  257. package/tag/types.d.ts +7 -7
  258. package/text-input/Icons.d.ts +8 -0
  259. package/text-input/Icons.js +56 -0
  260. package/text-input/Suggestion.d.ts +4 -0
  261. package/text-input/Suggestion.js +67 -0
  262. package/text-input/Suggestions.d.ts +4 -0
  263. package/text-input/Suggestions.js +84 -0
  264. package/text-input/TextInput.js +324 -548
  265. package/text-input/TextInput.stories.tsx +272 -281
  266. package/text-input/TextInput.test.js +1425 -1377
  267. package/text-input/types.d.ts +70 -24
  268. package/textarea/Textarea.js +82 -134
  269. package/textarea/Textarea.stories.tsx +174 -0
  270. package/textarea/Textarea.test.js +168 -198
  271. package/textarea/types.d.ts +27 -16
  272. package/toggle-group/ToggleGroup.d.ts +2 -2
  273. package/toggle-group/ToggleGroup.js +92 -105
  274. package/toggle-group/ToggleGroup.stories.tsx +53 -8
  275. package/toggle-group/ToggleGroup.test.js +78 -66
  276. package/toggle-group/types.d.ts +34 -17
  277. package/typography/Typography.d.ts +4 -0
  278. package/typography/Typography.js +23 -0
  279. package/typography/Typography.stories.tsx +198 -0
  280. package/typography/types.d.ts +18 -0
  281. package/typography/types.js +5 -0
  282. package/useTheme.d.ts +1119 -1
  283. package/useTheme.js +4 -11
  284. package/useTranslatedLabels.d.ts +85 -0
  285. package/useTranslatedLabels.js +14 -0
  286. package/utils/BaseTypography.d.ts +21 -0
  287. package/utils/BaseTypography.js +94 -0
  288. package/utils/FocusLock.d.ts +13 -0
  289. package/utils/FocusLock.js +124 -0
  290. package/wizard/Wizard.d.ts +1 -1
  291. package/wizard/Wizard.js +70 -101
  292. package/wizard/Wizard.stories.tsx +48 -19
  293. package/wizard/Wizard.test.js +73 -87
  294. package/wizard/types.d.ts +12 -8
  295. package/ThemeContext.d.ts +0 -10
  296. package/ThemeContext.js +0 -243
  297. package/card/ice-cream.jpg +0 -0
  298. package/common/RequiredComponent.js +0 -32
  299. package/list/List.d.ts +0 -4
  300. package/list/List.js +0 -47
  301. package/list/List.stories.tsx +0 -95
  302. package/list/types.d.ts +0 -7
  303. package/number-input/NumberInputContext.d.ts +0 -4
  304. package/number-input/NumberInputContext.js +0 -19
  305. package/number-input/numberInputContextTypes.d.ts +0 -19
  306. package/progress-bar/ProgressBar.stories.jsx +0 -58
  307. package/radio/Radio.d.ts +0 -4
  308. package/radio/Radio.js +0 -174
  309. package/radio/Radio.stories.tsx +0 -192
  310. package/radio/Radio.test.js +0 -71
  311. package/radio/types.d.ts +0 -54
  312. package/resultsetTable/ResultsetTable.js +0 -254
  313. package/row/Row.d.ts +0 -3
  314. package/row/Row.js +0 -127
  315. package/row/Row.stories.tsx +0 -237
  316. package/row/types.d.ts +0 -10
  317. package/slider/Slider.stories.tsx +0 -177
  318. package/stack/Stack.d.ts +0 -3
  319. package/stack/Stack.js +0 -97
  320. package/stack/Stack.stories.tsx +0 -164
  321. package/stack/types.d.ts +0 -9
  322. package/text/Text.d.ts +0 -7
  323. package/text/Text.js +0 -30
  324. package/text/Text.stories.tsx +0 -19
  325. package/textarea/Textarea.stories.jsx +0 -157
  326. /package/{list → action-icon}/types.js +0 -0
  327. /package/{radio → bulleted-list}/types.js +0 -0
  328. /package/{resultsetTable → container}/types.js +0 -0
  329. /package/{row → flex}/types.js +0 -0
  330. /package/{stack → grid}/types.js +0 -0
  331. /package/{number-input/numberInputContextTypes.js → image/types.js} +0 -0
@@ -1,15 +1,12 @@
1
1
  "use strict";
2
2
 
3
3
  var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
-
4
+ var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
5
+ var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
5
6
  var _react = _interopRequireDefault(require("react"));
6
-
7
- var _RadioGroup = _interopRequireDefault(require("./RadioGroup"));
8
-
9
7
  var _react2 = require("@testing-library/react");
10
-
11
8
  var _userEvent = _interopRequireDefault(require("@testing-library/user-event"));
12
-
9
+ var _RadioGroup = _interopRequireDefault(require("./RadioGroup.tsx"));
13
10
  var options = [{
14
11
  label: "Option 01",
15
12
  value: "1"
@@ -38,7 +35,7 @@ var options = [{
38
35
  label: "Option 09",
39
36
  value: "9"
40
37
  }];
41
- var single_disabled_options = [{
38
+ var singleDisabledOptions = [{
42
39
  label: "Option 01",
43
40
  value: "1"
44
41
  }, {
@@ -52,409 +49,457 @@ var single_disabled_options = [{
52
49
  describe("Radio Group component tests", function () {
53
50
  test("Initial render has correct aria attributes and tabIndex", function () {
54
51
  var _render = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_RadioGroup["default"], {
55
- label: "test-radioGroup-label",
56
- options: options
57
- })),
58
- getByRole = _render.getByRole,
59
- getAllByRole = _render.getAllByRole,
60
- getByText = _render.getByText;
61
-
52
+ label: "test-radioGroup-label",
53
+ options: options,
54
+ error: ""
55
+ })),
56
+ getByRole = _render.getByRole,
57
+ getAllByRole = _render.getAllByRole,
58
+ getByText = _render.getByText,
59
+ container = _render.container;
62
60
  var radioGroup = getByRole("radiogroup");
63
61
  var radios = getAllByRole("radio");
62
+ var errorId = "error-".concat(getByText("test-radioGroup-label").id.replace("label-", ""));
63
+ var error = container.querySelector("#".concat(errorId));
64
64
  expect(radioGroup.getAttribute("aria-disabled")).toBe("false");
65
65
  expect(radioGroup.getAttribute("aria-labelledby")).toBe(getByText("test-radioGroup-label").id);
66
66
  expect(radioGroup.getAttribute("aria-invalid")).toBe("false");
67
67
  expect(radioGroup.getAttribute("aria-required")).toBe("true");
68
+ expect(radioGroup.getAttribute("aria-orientation")).toBe("vertical");
69
+ expect(error.getAttribute("aria-live")).toBe("off");
68
70
  radios.forEach(function (radio, index) {
69
71
  // if no option was previously selected, first option is the focusable one
70
- index === 0 ? expect(radio.tabIndex).toBe(0) : expect(radio.tabIndex).toBe(-1);
72
+ if (index === 0) expect(radio.tabIndex).toBe(0);else expect(radio.tabIndex).toBe(-1);
71
73
  expect(radio.getAttribute("aria-checked")).toBe("false");
72
74
  expect(radio.getAttribute("aria-disabled")).toBe("false");
73
75
  expect(radio.getAttribute("aria-labelledby")).toBe(getByText("Option 0".concat(index + 1)).id);
74
76
  });
75
77
  });
76
- test("Disabled state renders with correct aria attribute, correct tabIndex values and it is not focusable by keyboard", function () {
78
+ test("aria-orientation attribute changes depending on stacking prop value", function () {
77
79
  var _render2 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_RadioGroup["default"], {
78
- label: "test-radioGroup-label",
79
- options: options,
80
- disabled: true
81
- })),
82
- getByRole = _render2.getByRole,
83
- getAllByRole = _render2.getAllByRole;
84
-
80
+ label: "test-radioGroup-label",
81
+ options: options,
82
+ stacking: "row"
83
+ })),
84
+ getByRole = _render2.getByRole;
85
+ var radioGroup = getByRole("radiogroup");
86
+ expect(radioGroup.getAttribute("aria-orientation")).toBe("horizontal");
87
+ });
88
+ test("Sends its value when submitted", /*#__PURE__*/(0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee() {
89
+ var handlerOnSubmit, _render3, getByText, getByRole, getAllByRole, radioGroup, submit;
90
+ return _regenerator["default"].wrap(function _callee$(_context) {
91
+ while (1) switch (_context.prev = _context.next) {
92
+ case 0:
93
+ handlerOnSubmit = jest.fn(function (e) {
94
+ e.preventDefault();
95
+ var formData = new FormData(e.target);
96
+ var formProps = Object.fromEntries(formData);
97
+ expect(formProps).toStrictEqual({
98
+ radiogroup: "5"
99
+ });
100
+ });
101
+ _render3 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement("form", {
102
+ onSubmit: handlerOnSubmit
103
+ }, /*#__PURE__*/_react["default"].createElement(_RadioGroup["default"], {
104
+ name: "radiogroup",
105
+ label: "test-radio-group-label",
106
+ options: options
107
+ }), /*#__PURE__*/_react["default"].createElement("button", {
108
+ type: "submit"
109
+ }, "Submit"))), getByText = _render3.getByText, getByRole = _render3.getByRole, getAllByRole = _render3.getAllByRole;
110
+ radioGroup = getByRole("radiogroup");
111
+ submit = getByText("Submit");
112
+ _context.next = 6;
113
+ return _userEvent["default"].click(radioGroup);
114
+ case 6:
115
+ _context.next = 8;
116
+ return _userEvent["default"].click(getAllByRole("radio")[4]);
117
+ case 8:
118
+ _context.next = 10;
119
+ return _userEvent["default"].click(submit);
120
+ case 10:
121
+ case "end":
122
+ return _context.stop();
123
+ }
124
+ }, _callee);
125
+ })));
126
+ test("Disabled state renders with correct aria attribute, correct tabIndex values and it is not focusable by keyboard", function () {
127
+ var _render4 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_RadioGroup["default"], {
128
+ label: "test-radioGroup-label",
129
+ options: options,
130
+ disabled: true
131
+ })),
132
+ getByRole = _render4.getByRole,
133
+ getAllByRole = _render4.getAllByRole;
85
134
  var radioGroup = getByRole("radiogroup");
86
135
  var radios = getAllByRole("radio");
87
136
  expect(radioGroup.getAttribute("aria-disabled")).toBe("true");
88
137
  radios.forEach(function (radio) {
89
138
  expect(radio.tabIndex).toBe(-1);
90
139
  });
91
-
92
140
  _react2.fireEvent.keyDown(radioGroup, {
93
- key: "Enter",
94
- code: "Enter",
141
+ key: " ",
142
+ code: "Space",
95
143
  keyCode: 13,
96
144
  charCode: 13
97
145
  });
98
-
99
146
  _react2.fireEvent.keyDown(radioGroup, {
100
147
  key: "ArrowLeft",
101
148
  code: "ArrowLeft",
102
149
  keyCode: 37,
103
150
  charCode: 37
104
151
  });
105
-
106
152
  _react2.fireEvent.keyDown(radioGroup, {
107
153
  key: "ArrowDown",
108
154
  code: "ArrowDown",
109
155
  keyCode: 40,
110
156
  charCode: 40
111
157
  });
112
-
113
158
  radios.forEach(function (radio) {
114
159
  expect(radio.tabIndex).toBe(-1);
115
160
  });
116
161
  });
117
162
  test("Disabled option renders with correct aria attribute, correct tabIndex value and it is not focusable by keyboard (focus 'jumps' the disabled option)", function () {
118
- var _render3 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_RadioGroup["default"], {
119
- name: "test",
120
- label: "test-radioGroup-label",
121
- options: single_disabled_options
122
- })),
123
- getByRole = _render3.getByRole,
124
- getAllByRole = _render3.getAllByRole,
125
- container = _render3.container;
126
-
163
+ var _render5 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_RadioGroup["default"], {
164
+ name: "test",
165
+ label: "test-radioGroup-label",
166
+ options: singleDisabledOptions
167
+ })),
168
+ getByRole = _render5.getByRole,
169
+ getAllByRole = _render5.getAllByRole;
127
170
  var radioGroup = getByRole("radiogroup");
128
171
  var radios = getAllByRole("radio");
129
172
  expect(radios[2].getAttribute("aria-disabled")).toBe("true");
130
173
  expect(radios[0].tabIndex).toBe(0);
131
174
  expect(radios[1].tabIndex).toBe(-1);
132
175
  expect(radios[2].tabIndex).toBe(-1);
133
-
134
176
  _react2.fireEvent.keyDown(radioGroup, {
135
177
  key: "ArrowDown",
136
178
  code: "ArrowDown",
137
179
  keyCode: 40,
138
180
  charCode: 40
139
181
  });
140
-
141
182
  _react2.fireEvent.keyDown(radioGroup, {
142
183
  key: "ArrowDown",
143
184
  code: "ArrowDown",
144
185
  keyCode: 40,
145
186
  charCode: 40
146
187
  });
147
-
148
188
  expect(radios[0].tabIndex).toBe(0);
149
189
  expect(radios[1].tabIndex).toBe(-1);
150
190
  expect(radios[2].tabIndex).toBe(-1);
151
191
  });
192
+ test("Disabled radio group doesn't send its value when submitted", /*#__PURE__*/(0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee2() {
193
+ var handlerOnSubmit, _render6, getByText, submit;
194
+ return _regenerator["default"].wrap(function _callee2$(_context2) {
195
+ while (1) switch (_context2.prev = _context2.next) {
196
+ case 0:
197
+ handlerOnSubmit = jest.fn(function (e) {
198
+ e.preventDefault();
199
+ var formData = new FormData(e.target);
200
+ var formProps = Object.fromEntries(formData);
201
+ expect(formProps).toStrictEqual({});
202
+ });
203
+ _render6 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement("form", {
204
+ onSubmit: handlerOnSubmit
205
+ }, /*#__PURE__*/_react["default"].createElement(_RadioGroup["default"], {
206
+ name: "radiogroup",
207
+ defaultValue: "1",
208
+ disabled: true,
209
+ label: "test-radio-group-label",
210
+ options: options
211
+ }), /*#__PURE__*/_react["default"].createElement("button", {
212
+ type: "submit"
213
+ }, "Submit"))), getByText = _render6.getByText;
214
+ submit = getByText("Submit");
215
+ _context2.next = 5;
216
+ return _userEvent["default"].click(submit);
217
+ case 5:
218
+ case "end":
219
+ return _context2.stop();
220
+ }
221
+ }, _callee2);
222
+ })));
152
223
  test("Error state renders with correct aria attributes", function () {
153
- var _render4 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_RadioGroup["default"], {
154
- label: "test-radioGroup-label",
155
- options: options,
156
- error: "Error message"
157
- })),
158
- getByRole = _render4.getByRole,
159
- getByText = _render4.getByText;
160
-
224
+ var _render7 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_RadioGroup["default"], {
225
+ label: "test-radioGroup-label",
226
+ options: options,
227
+ error: "Error message"
228
+ })),
229
+ getByRole = _render7.getByRole,
230
+ getByText = _render7.getByText;
161
231
  var radioGroup = getByRole("radiogroup");
162
232
  var errorMessage = getByText("Error message");
163
233
  expect(radioGroup.getAttribute("aria-errormessage")).toBe(errorMessage.id);
164
234
  expect(radioGroup.getAttribute("aria-invalid")).toBe("true");
165
235
  expect(errorMessage.getAttribute("aria-live")).toBe("assertive");
166
236
  });
167
- test("Radio group with required constraint and 'undefined' as value, sends an error", function () {
168
- var onChange = jest.fn();
169
- var onBlur = jest.fn();
170
-
171
- var _render5 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_RadioGroup["default"], {
172
- label: "test-radioGroup-label",
173
- options: options,
174
- onChange: onChange,
175
- onBlur: onBlur
176
- })),
177
- getByRole = _render5.getByRole,
178
- getAllByRole = _render5.getAllByRole;
179
-
180
- var radioGroup = getByRole("radiogroup");
181
- expect(radioGroup.getAttribute("aria-required")).toBe("true");
182
-
183
- _react2.fireEvent.blur(radioGroup);
184
-
185
- expect(onBlur).toHaveBeenCalled();
186
- expect(onBlur).toHaveBeenCalledWith({
187
- error: "This field is required. Please, choose an option."
188
- });
189
-
190
- _userEvent["default"].click(radioGroup);
191
-
192
- _userEvent["default"].click(getAllByRole("radio")[0]);
193
-
194
- expect(onChange).toHaveBeenCalled();
195
- expect(onChange).toHaveBeenCalledWith("1");
196
-
197
- _react2.fireEvent.blur(radioGroup);
198
-
199
- expect(onBlur).toHaveBeenCalled();
200
- expect(onBlur).toHaveBeenCalledWith({
201
- value: "1"
202
- });
203
- });
204
- test("Radio group with required constraint and empty string as value, sends an error", function () {
205
- var onChange = jest.fn();
206
- var onBlur = jest.fn();
207
-
208
- var _render6 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_RadioGroup["default"], {
209
- label: "test-radioGroup-label",
210
- value: "",
211
- options: options,
212
- onChange: onChange,
213
- onBlur: onBlur
214
- })),
215
- getByRole = _render6.getByRole,
216
- getAllByRole = _render6.getAllByRole;
217
-
218
- var radioGroup = getByRole("radiogroup");
219
- expect(radioGroup.getAttribute("aria-required")).toBe("true");
220
-
221
- _react2.fireEvent.blur(radioGroup);
222
-
223
- expect(onBlur).toHaveBeenCalled();
224
- expect(onBlur).toHaveBeenCalledWith({
225
- value: "",
226
- error: "This field is required. Please, choose an option."
227
- });
228
-
229
- _userEvent["default"].click(getAllByRole("radio")[0]);
230
-
231
- expect(onChange).toHaveBeenCalled();
232
- expect(onChange).toHaveBeenCalledWith("1");
233
- });
237
+ test("Radio group with required constraint and 'undefined' as value, sends an error", /*#__PURE__*/(0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee3() {
238
+ var onChange, onBlur, _render8, getByRole, getAllByRole, radioGroup;
239
+ return _regenerator["default"].wrap(function _callee3$(_context3) {
240
+ while (1) switch (_context3.prev = _context3.next) {
241
+ case 0:
242
+ onChange = jest.fn();
243
+ onBlur = jest.fn();
244
+ _render8 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_RadioGroup["default"], {
245
+ label: "test-radioGroup-label",
246
+ options: options,
247
+ onChange: onChange,
248
+ onBlur: onBlur
249
+ })), getByRole = _render8.getByRole, getAllByRole = _render8.getAllByRole;
250
+ radioGroup = getByRole("radiogroup");
251
+ expect(radioGroup.getAttribute("aria-required")).toBe("true");
252
+ _react2.fireEvent.blur(radioGroup);
253
+ expect(onBlur).toHaveBeenCalledWith({
254
+ error: "This field is required. Please, choose an option."
255
+ });
256
+ _context3.next = 9;
257
+ return _userEvent["default"].click(radioGroup);
258
+ case 9:
259
+ _context3.next = 11;
260
+ return _userEvent["default"].click(getAllByRole("radio")[0]);
261
+ case 11:
262
+ expect(onChange).toHaveBeenCalledWith("1");
263
+ _react2.fireEvent.blur(radioGroup);
264
+ expect(onBlur).toHaveBeenCalledWith({
265
+ value: "1"
266
+ });
267
+ case 14:
268
+ case "end":
269
+ return _context3.stop();
270
+ }
271
+ }, _callee3);
272
+ })));
273
+ test("Radio group with required constraint and empty string as value, sends an error", /*#__PURE__*/(0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee4() {
274
+ var onChange, onBlur, _render9, getByRole, getAllByRole, radioGroup;
275
+ return _regenerator["default"].wrap(function _callee4$(_context4) {
276
+ while (1) switch (_context4.prev = _context4.next) {
277
+ case 0:
278
+ onChange = jest.fn();
279
+ onBlur = jest.fn();
280
+ _render9 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_RadioGroup["default"], {
281
+ label: "test-radioGroup-label",
282
+ value: "",
283
+ options: options,
284
+ onChange: onChange,
285
+ onBlur: onBlur
286
+ })), getByRole = _render9.getByRole, getAllByRole = _render9.getAllByRole;
287
+ radioGroup = getByRole("radiogroup");
288
+ expect(radioGroup.getAttribute("aria-required")).toBe("true");
289
+ _react2.fireEvent.blur(radioGroup);
290
+ expect(onBlur).toHaveBeenCalledWith({
291
+ value: "",
292
+ error: "This field is required. Please, choose an option."
293
+ });
294
+ _context4.next = 9;
295
+ return _userEvent["default"].click(getAllByRole("radio")[0]);
296
+ case 9:
297
+ expect(onChange).toHaveBeenCalledWith("1");
298
+ case 10:
299
+ case "end":
300
+ return _context4.stop();
301
+ }
302
+ }, _callee4);
303
+ })));
234
304
  test("The 'defaultValue' gives the radio group an initial value when it is uncontrolled", function () {
235
305
  var onChange = jest.fn();
236
-
237
- var _render7 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_RadioGroup["default"], {
238
- defaultValue: "2",
239
- name: "test",
240
- label: "test-radio-group-label",
241
- helperText: "test-radio-group-helper-text",
242
- options: options,
243
- onChange: onChange
244
- })),
245
- getAllByRole = _render7.getAllByRole,
246
- container = _render7.container;
247
-
306
+ var _render10 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_RadioGroup["default"], {
307
+ defaultValue: "2",
308
+ name: "test",
309
+ label: "test-radio-group-label",
310
+ helperText: "test-radio-group-helper-text",
311
+ options: options,
312
+ onChange: onChange
313
+ })),
314
+ getAllByRole = _render10.getAllByRole,
315
+ container = _render10.container;
248
316
  var radio = getAllByRole("radio")[1];
249
317
  var submitInput = container.querySelector("input[name=\"test\"]");
250
318
  expect(radio.tabIndex).toBe(0);
251
319
  expect(radio.getAttribute("aria-checked")).toBe("true");
252
320
  expect(submitInput.value).toBe("2");
253
321
  });
254
- test("Optional radio group conditions: onBlur event doesn't send an error when no radio was checked, has correct aria attributes, custom label and its value is the empty string", function () {
255
- var onChange = jest.fn();
256
- var onBlur = jest.fn();
257
-
258
- var _render8 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_RadioGroup["default"], {
259
- name: "test",
260
- label: "test-radio-group-label",
261
- helperText: "test-radio-group-helper-text",
262
- options: options,
263
- onChange: onChange,
264
- onBlur: onBlur,
265
- optional: true,
266
- optionalItemLabel: "No selection"
267
- })),
268
- getByRole = _render8.getByRole,
269
- getByText = _render8.getByText,
270
- container = _render8.container;
271
-
272
- var radioGroup = getByRole("radiogroup");
273
- expect(radioGroup.getAttribute("aria-required")).toBe("false");
274
-
275
- _react2.fireEvent.blur(radioGroup);
276
-
277
- expect(onBlur).toHaveBeenCalled();
278
- expect(onBlur).toHaveBeenCalledWith({});
279
- expect(radioGroup.getAttribute("aria-invalid")).toBe("false");
280
- var optionalLabel = getByText("No selection");
281
- var submitInput = container.querySelector("input[name=\"test\"]");
282
-
283
- _userEvent["default"].click(optionalLabel);
284
-
285
- expect(onChange).toHaveBeenCalled();
286
- expect(onChange).toHaveBeenCalledWith("");
287
- expect(submitInput.value).toBe("");
288
- });
289
- test("Controlled radio group", function () {
290
- var onChange = jest.fn();
291
- var onBlur = jest.fn();
292
-
293
- var _render9 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_RadioGroup["default"], {
294
- name: "test",
295
- value: "2",
296
- label: "test-radio-group-label",
297
- helperText: "test-radio-group-helper-text",
298
- options: options,
299
- onChange: onChange,
300
- onBlur: onBlur
301
- })),
302
- getByRole = _render9.getByRole,
303
- getAllByRole = _render9.getAllByRole,
304
- container = _render9.container;
305
-
306
- var radioGroup = getByRole("radiogroup");
307
- var radios = getAllByRole("radio");
308
- var submitInput = container.querySelector("input[name=\"test\"]");
309
- expect(submitInput.value).toBe("2");
310
- expect(radios[1].tabIndex).toBe(0);
311
- expect(radios[1].getAttribute("aria-checked")).toBe("true");
312
-
313
- _userEvent["default"].click(radios[6]);
314
-
315
- expect(onChange).toHaveBeenCalled();
316
- expect(onChange).toHaveBeenCalledWith("7");
317
-
318
- _react2.fireEvent.blur(radioGroup);
319
-
320
- expect(onBlur).toHaveBeenCalled();
321
- expect(onBlur).toHaveBeenCalledWith({
322
- value: "2"
323
- });
324
- });
325
- test("Select an option by clicking on its label", function () {
326
- var onChange = jest.fn();
327
-
328
- var _render10 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_RadioGroup["default"], {
329
- name: "test",
330
- label: "test-radio-group-label",
331
- helperText: "test-radio-group-helper-text",
332
- options: options,
333
- onChange: onChange
334
- })),
335
- getByText = _render10.getByText,
336
- getAllByRole = _render10.getAllByRole,
337
- container = _render10.container;
338
-
339
- var radioLabel = getByText("Option 09");
340
- var checkedRadio = getAllByRole("radio")[8];
341
- var submitInput = container.querySelector("input[name=\"test\"]");
342
- expect(checkedRadio.tabIndex).toBe(-1);
343
-
344
- _userEvent["default"].click(radioLabel);
345
-
346
- expect(onChange).toHaveBeenCalled();
347
- expect(onChange).toHaveBeenCalledWith("9");
348
- expect(checkedRadio.getAttribute("aria-checked")).toBe("true");
349
- expect(checkedRadio.tabIndex).toBe(0);
350
- expect(document.activeElement).toEqual(checkedRadio);
351
- expect(submitInput.value).toBe("9");
352
- });
353
- test("Select an option by clicking on its radio input", function () {
354
- var onChange = jest.fn();
355
-
356
- var _render11 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_RadioGroup["default"], {
357
- name: "test",
358
- label: "test-radio-group-label",
359
- helperText: "test-radio-group-helper-text",
360
- options: options,
361
- onChange: onChange
362
- })),
363
- getAllByRole = _render11.getAllByRole,
364
- container = _render11.container;
365
-
366
- var checkedRadio = getAllByRole("radio")[6];
367
- var submitInput = container.querySelector("input[name=\"test\"]");
368
- expect(checkedRadio.tabIndex).toBe(-1);
369
-
370
- _userEvent["default"].click(checkedRadio);
371
-
372
- expect(onChange).toHaveBeenCalled();
373
- expect(onChange).toHaveBeenCalledWith("7");
374
- expect(checkedRadio.getAttribute("aria-checked")).toBe("true");
375
- expect(checkedRadio.tabIndex).toBe(0);
376
- expect(document.activeElement).toEqual(checkedRadio);
377
- expect(submitInput.value).toBe("7");
378
- });
379
- test("Select an option that is already checked does not call onChange event but gives the focus", function () {
380
- var onChange = jest.fn();
381
-
382
- var _render12 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_RadioGroup["default"], {
383
- defaultValue: "2",
384
- name: "test",
385
- label: "test-radio-group-label",
386
- helperText: "test-radio-group-helper-text",
387
- options: options,
388
- onChange: onChange
389
- })),
390
- getAllByRole = _render12.getAllByRole;
391
-
392
- var checkedRadio = getAllByRole("radio")[1];
393
- expect(checkedRadio.tabIndex).toBe(0);
394
- expect(checkedRadio.getAttribute("aria-checked")).toBe("true");
395
-
396
- _userEvent["default"].click(checkedRadio);
397
-
398
- expect(onChange).not.toHaveBeenCalled();
399
- expect(document.activeElement).toEqual(checkedRadio);
400
- });
401
- test("The 'enter' key checks the current focused option if anyone is checked", function () {
402
- var onChange = jest.fn();
403
-
404
- var _render13 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_RadioGroup["default"], {
405
- name: "test",
406
- label: "test-radio-group-label",
407
- helperText: "test-radio-group-helper-text",
408
- options: options,
409
- onChange: onChange
410
- })),
411
- getByRole = _render13.getByRole,
412
- getAllByRole = _render13.getAllByRole,
413
- container = _render13.container;
414
-
415
- var radioGroup = getByRole("radiogroup");
416
- var checkedRadio = getAllByRole("radio")[0];
417
- var submitInput = container.querySelector("input[name=\"test\"]");
418
-
419
- _react2.fireEvent.keyDown(radioGroup, {
420
- key: "Enter",
421
- code: "Enter",
422
- keyCode: 13,
423
- charCode: 13
424
- });
425
-
426
- expect(onChange).toHaveBeenCalled();
427
- expect(onChange).toHaveBeenCalledWith("1");
428
- expect(checkedRadio.getAttribute("aria-checked")).toBe("true");
429
- expect(checkedRadio.tabIndex).toBe(0);
430
- expect(submitInput.value).toBe("1");
431
- });
322
+ test("Optional radio group conditions: onBlur event doesn't send an error when no radio was checked, has correct aria attributes, custom label and its value is the empty string", /*#__PURE__*/(0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee5() {
323
+ var onChange, onBlur, _render11, getByRole, getByText, container, radioGroup, optionalLabel, submitInput;
324
+ return _regenerator["default"].wrap(function _callee5$(_context5) {
325
+ while (1) switch (_context5.prev = _context5.next) {
326
+ case 0:
327
+ onChange = jest.fn();
328
+ onBlur = jest.fn();
329
+ _render11 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_RadioGroup["default"], {
330
+ name: "test",
331
+ label: "test-radio-group-label",
332
+ helperText: "test-radio-group-helper-text",
333
+ options: options,
334
+ onChange: onChange,
335
+ onBlur: onBlur,
336
+ optional: true,
337
+ optionalItemLabel: "No selection"
338
+ })), getByRole = _render11.getByRole, getByText = _render11.getByText, container = _render11.container;
339
+ radioGroup = getByRole("radiogroup");
340
+ expect(radioGroup.getAttribute("aria-required")).toBe("false");
341
+ _react2.fireEvent.blur(radioGroup);
342
+ expect(onBlur).toHaveBeenCalledWith({});
343
+ expect(radioGroup.getAttribute("aria-invalid")).toBe("false");
344
+ optionalLabel = getByText("No selection");
345
+ submitInput = container.querySelector("input[name=\"test\"]");
346
+ _context5.next = 12;
347
+ return _userEvent["default"].click(optionalLabel);
348
+ case 12:
349
+ expect(onChange).toHaveBeenCalledWith("");
350
+ expect(submitInput.value).toBe("");
351
+ case 14:
352
+ case "end":
353
+ return _context5.stop();
354
+ }
355
+ }, _callee5);
356
+ })));
357
+ test("Controlled radio group", /*#__PURE__*/(0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee6() {
358
+ var onChange, onBlur, _render12, getByRole, getAllByRole, container, radioGroup, radios, submitInput;
359
+ return _regenerator["default"].wrap(function _callee6$(_context6) {
360
+ while (1) switch (_context6.prev = _context6.next) {
361
+ case 0:
362
+ onChange = jest.fn();
363
+ onBlur = jest.fn();
364
+ _render12 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_RadioGroup["default"], {
365
+ name: "test",
366
+ value: "2",
367
+ label: "test-radio-group-label",
368
+ helperText: "test-radio-group-helper-text",
369
+ options: options,
370
+ onChange: onChange,
371
+ onBlur: onBlur
372
+ })), getByRole = _render12.getByRole, getAllByRole = _render12.getAllByRole, container = _render12.container;
373
+ radioGroup = getByRole("radiogroup");
374
+ radios = getAllByRole("radio");
375
+ submitInput = container.querySelector("input[name=\"test\"]");
376
+ expect(submitInput.value).toBe("2");
377
+ expect(radios[1].tabIndex).toBe(0);
378
+ expect(radios[1].getAttribute("aria-checked")).toBe("true");
379
+ _context6.next = 11;
380
+ return _userEvent["default"].click(radios[6]);
381
+ case 11:
382
+ expect(onChange).toHaveBeenCalledWith("7");
383
+ _react2.fireEvent.blur(radioGroup);
384
+ expect(onBlur).toHaveBeenCalledWith({
385
+ value: "2"
386
+ });
387
+ case 14:
388
+ case "end":
389
+ return _context6.stop();
390
+ }
391
+ }, _callee6);
392
+ })));
393
+ test("Select an option by clicking on its label", /*#__PURE__*/(0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee7() {
394
+ var onChange, _render13, getByText, getAllByRole, container, radioLabel, checkedRadio, submitInput;
395
+ return _regenerator["default"].wrap(function _callee7$(_context7) {
396
+ while (1) switch (_context7.prev = _context7.next) {
397
+ case 0:
398
+ onChange = jest.fn();
399
+ _render13 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_RadioGroup["default"], {
400
+ name: "test",
401
+ label: "test-radio-group-label",
402
+ helperText: "test-radio-group-helper-text",
403
+ options: options,
404
+ onChange: onChange
405
+ })), getByText = _render13.getByText, getAllByRole = _render13.getAllByRole, container = _render13.container;
406
+ radioLabel = getByText("Option 09");
407
+ checkedRadio = getAllByRole("radio")[8];
408
+ submitInput = container.querySelector("input[name=\"test\"]");
409
+ expect(checkedRadio.tabIndex).toBe(-1);
410
+ _context7.next = 8;
411
+ return _userEvent["default"].click(radioLabel);
412
+ case 8:
413
+ expect(onChange).toHaveBeenCalledWith("9");
414
+ expect(checkedRadio.getAttribute("aria-checked")).toBe("true");
415
+ expect(checkedRadio.tabIndex).toBe(0);
416
+ expect(document.activeElement).toEqual(checkedRadio);
417
+ expect(submitInput.value).toBe("9");
418
+ case 13:
419
+ case "end":
420
+ return _context7.stop();
421
+ }
422
+ }, _callee7);
423
+ })));
424
+ test("Select an option by clicking on its radio input", /*#__PURE__*/(0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee8() {
425
+ var onChange, _render14, getAllByRole, container, checkedRadio, submitInput;
426
+ return _regenerator["default"].wrap(function _callee8$(_context8) {
427
+ while (1) switch (_context8.prev = _context8.next) {
428
+ case 0:
429
+ onChange = jest.fn();
430
+ _render14 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_RadioGroup["default"], {
431
+ name: "test",
432
+ label: "test-radio-group-label",
433
+ helperText: "test-radio-group-helper-text",
434
+ options: options,
435
+ onChange: onChange
436
+ })), getAllByRole = _render14.getAllByRole, container = _render14.container;
437
+ checkedRadio = getAllByRole("radio")[6];
438
+ submitInput = container.querySelector("input[name=\"test\"]");
439
+ expect(checkedRadio.tabIndex).toBe(-1);
440
+ _context8.next = 7;
441
+ return _userEvent["default"].click(checkedRadio);
442
+ case 7:
443
+ expect(onChange).toHaveBeenCalledWith("7");
444
+ expect(checkedRadio.getAttribute("aria-checked")).toBe("true");
445
+ expect(checkedRadio.tabIndex).toBe(0);
446
+ expect(document.activeElement).toEqual(checkedRadio);
447
+ expect(submitInput.value).toBe("7");
448
+ case 12:
449
+ case "end":
450
+ return _context8.stop();
451
+ }
452
+ }, _callee8);
453
+ })));
454
+ test("Select an option that is already checked does not call onChange event but gives the focus", /*#__PURE__*/(0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee9() {
455
+ var onChange, _render15, getAllByRole, checkedRadio;
456
+ return _regenerator["default"].wrap(function _callee9$(_context9) {
457
+ while (1) switch (_context9.prev = _context9.next) {
458
+ case 0:
459
+ onChange = jest.fn();
460
+ _render15 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_RadioGroup["default"], {
461
+ defaultValue: "2",
462
+ name: "test",
463
+ label: "test-radio-group-label",
464
+ helperText: "test-radio-group-helper-text",
465
+ options: options,
466
+ onChange: onChange
467
+ })), getAllByRole = _render15.getAllByRole;
468
+ checkedRadio = getAllByRole("radio")[1];
469
+ expect(checkedRadio.tabIndex).toBe(0);
470
+ expect(checkedRadio.getAttribute("aria-checked")).toBe("true");
471
+ _context9.next = 7;
472
+ return _userEvent["default"].click(checkedRadio);
473
+ case 7:
474
+ expect(onChange).not.toHaveBeenCalled();
475
+ expect(document.activeElement).toEqual(checkedRadio);
476
+ case 9:
477
+ case "end":
478
+ return _context9.stop();
479
+ }
480
+ }, _callee9);
481
+ })));
432
482
  test("The 'space' key checks the current focused option if anyone is checked", function () {
433
483
  var onChange = jest.fn();
434
-
435
- var _render14 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_RadioGroup["default"], {
436
- name: "test",
437
- label: "test-radio-group-label",
438
- helperText: "test-radio-group-helper-text",
439
- options: options,
440
- onChange: onChange
441
- })),
442
- getByRole = _render14.getByRole,
443
- getAllByRole = _render14.getAllByRole,
444
- container = _render14.container;
445
-
484
+ var _render16 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_RadioGroup["default"], {
485
+ name: "test",
486
+ label: "test-radio-group-label",
487
+ helperText: "test-radio-group-helper-text",
488
+ options: options,
489
+ onChange: onChange
490
+ })),
491
+ getByRole = _render16.getByRole,
492
+ getAllByRole = _render16.getAllByRole,
493
+ container = _render16.container;
446
494
  var radioGroup = getByRole("radiogroup");
447
495
  var checkedRadio = getAllByRole("radio")[0];
448
496
  var submitInput = container.querySelector("input[name=\"test\"]");
449
-
450
497
  _react2.fireEvent.keyDown(radioGroup, {
451
- key: "Space",
498
+ key: " ",
452
499
  code: "Space",
453
500
  keyCode: 32,
454
501
  charCode: 32
455
502
  });
456
-
457
- expect(onChange).toHaveBeenCalled();
458
503
  expect(onChange).toHaveBeenCalledWith("1");
459
504
  expect(checkedRadio.getAttribute("aria-checked")).toBe("true");
460
505
  expect(checkedRadio.tabIndex).toBe(0);
@@ -463,39 +508,33 @@ describe("Radio Group component tests", function () {
463
508
  test("When the radio group gains the focus by keyboard ('tab' key), it goes to the first option (if no one was previously selected), without selecting it", function () {
464
509
  var onChange = jest.fn();
465
510
  var onBlur = jest.fn();
466
-
467
- var _render15 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_RadioGroup["default"], {
468
- name: "test",
469
- label: "test-radio-group-label",
470
- helperText: "test-radio-group-helper-text",
471
- options: options,
472
- onChange: onChange,
473
- onBlur: onBlur
474
- })),
475
- getByRole = _render15.getByRole,
476
- getAllByRole = _render15.getAllByRole,
477
- container = _render15.container;
478
-
511
+ var _render17 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_RadioGroup["default"], {
512
+ name: "test",
513
+ label: "test-radio-group-label",
514
+ helperText: "test-radio-group-helper-text",
515
+ options: options,
516
+ onChange: onChange,
517
+ onBlur: onBlur
518
+ })),
519
+ getByRole = _render17.getByRole,
520
+ getAllByRole = _render17.getAllByRole,
521
+ container = _render17.container;
479
522
  var radioGroup = getByRole("radiogroup");
480
523
  var radios = getAllByRole("radio");
481
524
  var submitInput = container.querySelector("input[name=\"test\"]");
482
525
  var checkedRadio = getAllByRole("radio")[0];
483
-
484
526
  _userEvent["default"].tab();
485
-
486
527
  expect(onChange).not.toHaveBeenCalled();
487
528
  expect(submitInput.value).toBe("");
488
529
  expect(checkedRadio.tabIndex).toBe(0);
489
530
  expect(checkedRadio.getAttribute("aria-checked")).toBe("false");
490
531
  expect(document.activeElement).toEqual(checkedRadio);
491
-
492
532
  _react2.fireEvent.keyDown(radioGroup, {
493
533
  key: "ArrowRight",
494
534
  code: "ArrowRight",
495
535
  keyCode: 39,
496
536
  charCode: 39
497
537
  });
498
-
499
538
  expect(onBlur).not.toHaveBeenCalled();
500
539
  expect(onChange).toHaveBeenCalledTimes(1);
501
540
  expect(radios[1].getAttribute("aria-checked")).toBe("true");
@@ -503,48 +542,42 @@ describe("Radio Group component tests", function () {
503
542
  expect(radios[1].tabIndex).toBe(0);
504
543
  expect(submitInput.value).toBe("2");
505
544
  });
506
- test("The 'arrowDown' and 'arrowRight' keys move the selection to the next radio", function () {
545
+ test("The 'arrowDown' and 'arrowRight' keys move the selection to the next radio. When the last radio is reached, moves the selection to the first one", function () {
507
546
  var onChange = jest.fn();
508
547
  var onBlur = jest.fn();
509
-
510
- var _render16 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_RadioGroup["default"], {
511
- defaultValue: "8",
512
- name: "test",
513
- label: "test-radio-group-label",
514
- helperText: "test-radio-group-helper-text",
515
- options: options,
516
- onChange: onChange,
517
- onBlur: onBlur
518
- })),
519
- getByRole = _render16.getByRole,
520
- getAllByRole = _render16.getAllByRole,
521
- container = _render16.container;
522
-
548
+ var _render18 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_RadioGroup["default"], {
549
+ defaultValue: "8",
550
+ name: "test",
551
+ label: "test-radio-group-label",
552
+ helperText: "test-radio-group-helper-text",
553
+ options: options,
554
+ onChange: onChange,
555
+ onBlur: onBlur
556
+ })),
557
+ getByRole = _render18.getByRole,
558
+ getAllByRole = _render18.getAllByRole,
559
+ container = _render18.container;
523
560
  var radioGroup = getByRole("radiogroup");
524
561
  var radios = getAllByRole("radio");
525
562
  var submitInput = container.querySelector("input[name=\"test\"]");
526
-
527
563
  _react2.fireEvent.keyDown(radioGroup, {
528
564
  key: "ArrowDown",
529
565
  code: "ArrowDown",
530
566
  keyCode: 40,
531
567
  charCode: 40
532
568
  });
533
-
534
569
  expect(onBlur).not.toHaveBeenCalled();
535
570
  expect(onChange).toHaveBeenCalledTimes(1);
536
571
  expect(radios[8].getAttribute("aria-checked")).toBe("true");
537
572
  expect(document.activeElement).toEqual(radios[8]);
538
573
  expect(radios[8].tabIndex).toBe(0);
539
574
  expect(submitInput.value).toBe("9");
540
-
541
575
  _react2.fireEvent.keyDown(radioGroup, {
542
576
  key: "ArrowRight",
543
577
  code: "ArrowRight",
544
578
  keyCode: 39,
545
579
  charCode: 39
546
580
  });
547
-
548
581
  expect(onBlur).not.toHaveBeenCalled();
549
582
  expect(onChange).toHaveBeenCalledTimes(2);
550
583
  expect(radios[0].getAttribute("aria-checked")).toBe("true");
@@ -552,48 +585,42 @@ describe("Radio Group component tests", function () {
552
585
  expect(radios[0].tabIndex).toBe(0);
553
586
  expect(submitInput.value).toBe("1");
554
587
  });
555
- test("The 'arrowUp' and 'arrowLeft' keys move the selection to the previous radio", function () {
588
+ test("The 'arrowUp' and 'arrowLeft' keys move the selection to the previous radio. When the first radio is reached, moves the selection to the last one", function () {
556
589
  var onChange = jest.fn();
557
590
  var onBlur = jest.fn();
558
-
559
- var _render17 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_RadioGroup["default"], {
560
- defaultValue: "2",
561
- name: "test",
562
- label: "test-radio-group-label",
563
- helperText: "test-radio-group-helper-text",
564
- options: options,
565
- onChange: onChange,
566
- onBlur: onBlur
567
- })),
568
- getByRole = _render17.getByRole,
569
- getAllByRole = _render17.getAllByRole,
570
- container = _render17.container;
571
-
591
+ var _render19 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_RadioGroup["default"], {
592
+ defaultValue: "2",
593
+ name: "test",
594
+ label: "test-radio-group-label",
595
+ helperText: "test-radio-group-helper-text",
596
+ options: options,
597
+ onChange: onChange,
598
+ onBlur: onBlur
599
+ })),
600
+ getByRole = _render19.getByRole,
601
+ getAllByRole = _render19.getAllByRole,
602
+ container = _render19.container;
572
603
  var radioGroup = getByRole("radiogroup");
573
604
  var radios = getAllByRole("radio");
574
605
  var submitInput = container.querySelector("input[name=\"test\"]");
575
-
576
606
  _react2.fireEvent.keyDown(radioGroup, {
577
607
  key: "ArrowUp",
578
608
  code: "ArrowUp",
579
609
  keyCode: 38,
580
610
  charCode: 38
581
611
  });
582
-
583
612
  expect(onBlur).not.toHaveBeenCalled();
584
613
  expect(onChange).toHaveBeenCalledTimes(1);
585
614
  expect(radios[0].getAttribute("aria-checked")).toBe("true");
586
615
  expect(document.activeElement).toEqual(radios[0]);
587
616
  expect(radios[0].tabIndex).toBe(0);
588
617
  expect(submitInput.value).toBe("1");
589
-
590
618
  _react2.fireEvent.keyDown(radioGroup, {
591
619
  key: "ArrowLeft",
592
620
  code: "ArrowLeft",
593
621
  keyCode: 37,
594
622
  charCode: 37
595
623
  });
596
-
597
624
  expect(onBlur).not.toHaveBeenCalled();
598
625
  expect(onChange).toHaveBeenCalledTimes(2);
599
626
  expect(radios[8].getAttribute("aria-checked")).toBe("true");
@@ -601,94 +628,129 @@ describe("Radio Group component tests", function () {
601
628
  expect(radios[8].tabIndex).toBe(0);
602
629
  expect(submitInput.value).toBe("9");
603
630
  });
604
- test("Keyboard focus movement continues from the last radio input clicked", function () {
605
- var onChange = jest.fn();
606
-
607
- var _render18 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_RadioGroup["default"], {
608
- name: "test",
609
- label: "test-radio-group-label",
610
- helperText: "test-radio-group-helper-text",
611
- options: options,
612
- onChange: onChange
613
- })),
614
- getByRole = _render18.getByRole,
615
- getAllByRole = _render18.getAllByRole,
616
- container = _render18.container;
617
-
618
- var radioGroup = getByRole("radiogroup");
619
- var radios = getAllByRole("radio");
620
- var submitInput = container.querySelector("input[name=\"test\"]");
621
-
622
- _userEvent["default"].click(radios[3]);
623
-
624
- _react2.fireEvent.keyDown(radioGroup, {
625
- key: "ArrowDown",
626
- code: "ArrowDown",
627
- keyCode: 40,
628
- charCode: 40
629
- });
630
-
631
- expect(onChange).toHaveBeenCalled();
632
- expect(onChange).toHaveBeenCalledWith("5");
633
- expect(radios[4].getAttribute("aria-checked")).toBe("true");
634
- expect(document.activeElement).toEqual(radios[4]);
635
- expect(radios[4].tabIndex).toBe(0);
636
- expect(submitInput.value).toBe("5");
637
-
638
- _userEvent["default"].click(radios[8]);
639
-
640
- _react2.fireEvent.keyDown(radioGroup, {
641
- key: "ArrowLeft",
642
- code: "ArrowLeft",
643
- keyCode: 37,
644
- charCode: 37
645
- });
646
-
647
- expect(onChange).toHaveBeenCalled();
648
- expect(onChange).toHaveBeenCalledWith("8");
649
- expect(radios[7].getAttribute("aria-checked")).toBe("true");
650
- expect(document.activeElement).toEqual(radios[7]);
651
- expect(radios[7].tabIndex).toBe(0);
652
- expect(submitInput.value).toBe("8");
653
- });
654
- test("Readonly radio group lets the user move the focus, but neither click nor keyboard press changes the value", function () {
655
- var onChange = jest.fn();
656
-
657
- var _render19 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_RadioGroup["default"], {
658
- name: "test",
659
- label: "test-radio-group-label",
660
- helperText: "test-radio-group-helper-text",
661
- options: options,
662
- onChange: onChange,
663
- readonly: true
664
- })),
665
- getByRole = _render19.getByRole,
666
- getAllByRole = _render19.getAllByRole,
667
- container = _render19.container;
668
-
669
- var radioGroup = getByRole("radiogroup");
670
- var radios = getAllByRole("radio");
671
- var submitInput = container.querySelector("input[name=\"test\"]");
672
-
673
- _userEvent["default"].click(radios[5]);
674
-
675
- expect(onChange).not.toHaveBeenCalled();
676
- expect(radios[5].getAttribute("aria-checked")).toBe("false");
677
- expect(document.activeElement).toEqual(radios[5]);
678
- expect(radios[5].tabIndex).toBe(0);
679
- expect(submitInput.value).toBe("");
680
-
681
- _react2.fireEvent.keyDown(radioGroup, {
682
- key: "ArrowUp",
683
- code: "ArrowUp",
684
- keyCode: 38,
685
- charCode: 38
686
- });
687
-
688
- expect(onChange).not.toHaveBeenCalled();
689
- expect(radios[4].getAttribute("aria-checked")).toBe("false");
690
- expect(document.activeElement).toEqual(radios[4]);
691
- expect(radios[4].tabIndex).toBe(0);
692
- expect(submitInput.value).toBe("");
693
- });
631
+ test("Keyboard focus movement continues from the last radio input clicked", /*#__PURE__*/(0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee10() {
632
+ var onChange, _render20, getByRole, getAllByRole, container, radioGroup, radios, submitInput;
633
+ return _regenerator["default"].wrap(function _callee10$(_context10) {
634
+ while (1) switch (_context10.prev = _context10.next) {
635
+ case 0:
636
+ onChange = jest.fn();
637
+ _render20 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_RadioGroup["default"], {
638
+ name: "test",
639
+ label: "test-radio-group-label",
640
+ helperText: "test-radio-group-helper-text",
641
+ options: options,
642
+ onChange: onChange
643
+ })), getByRole = _render20.getByRole, getAllByRole = _render20.getAllByRole, container = _render20.container;
644
+ radioGroup = getByRole("radiogroup");
645
+ radios = getAllByRole("radio");
646
+ submitInput = container.querySelector("input[name=\"test\"]");
647
+ _context10.next = 7;
648
+ return _userEvent["default"].click(radios[3]);
649
+ case 7:
650
+ _react2.fireEvent.keyDown(radioGroup, {
651
+ key: "ArrowDown",
652
+ code: "ArrowDown",
653
+ keyCode: 40,
654
+ charCode: 40
655
+ });
656
+ expect(onChange).toHaveBeenCalledWith("5");
657
+ expect(radios[4].getAttribute("aria-checked")).toBe("true");
658
+ expect(document.activeElement).toEqual(radios[4]);
659
+ expect(radios[4].tabIndex).toBe(0);
660
+ expect(submitInput.value).toBe("5");
661
+ _context10.next = 15;
662
+ return _userEvent["default"].click(radios[8]);
663
+ case 15:
664
+ _react2.fireEvent.keyDown(radioGroup, {
665
+ key: "ArrowLeft",
666
+ code: "ArrowLeft",
667
+ keyCode: 37,
668
+ charCode: 37
669
+ });
670
+ expect(onChange).toHaveBeenCalledWith("8");
671
+ expect(radios[7].getAttribute("aria-checked")).toBe("true");
672
+ expect(document.activeElement).toEqual(radios[7]);
673
+ expect(radios[7].tabIndex).toBe(0);
674
+ expect(submitInput.value).toBe("8");
675
+ case 21:
676
+ case "end":
677
+ return _context10.stop();
678
+ }
679
+ }, _callee10);
680
+ })));
681
+ test("Read-only radio group lets the user move the focus, but neither click nor keyboard press changes the value", /*#__PURE__*/(0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee11() {
682
+ var onChange, _render21, getByRole, getAllByRole, container, radioGroup, radios, submitInput;
683
+ return _regenerator["default"].wrap(function _callee11$(_context11) {
684
+ while (1) switch (_context11.prev = _context11.next) {
685
+ case 0:
686
+ onChange = jest.fn();
687
+ _render21 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_RadioGroup["default"], {
688
+ name: "test",
689
+ label: "test-radio-group-label",
690
+ helperText: "test-radio-group-helper-text",
691
+ options: options,
692
+ onChange: onChange,
693
+ readOnly: true
694
+ })), getByRole = _render21.getByRole, getAllByRole = _render21.getAllByRole, container = _render21.container;
695
+ radioGroup = getByRole("radiogroup");
696
+ radios = getAllByRole("radio");
697
+ submitInput = container.querySelector("input[name=\"test\"]");
698
+ _context11.next = 7;
699
+ return _userEvent["default"].click(radios[5]);
700
+ case 7:
701
+ expect(onChange).not.toHaveBeenCalled();
702
+ expect(radios[5].getAttribute("aria-checked")).toBe("false");
703
+ expect(document.activeElement).toEqual(radios[5]);
704
+ expect(radios[5].tabIndex).toBe(0);
705
+ expect(submitInput.value).toBe("");
706
+ _react2.fireEvent.keyDown(radioGroup, {
707
+ key: "ArrowUp",
708
+ code: "ArrowUp",
709
+ keyCode: 38,
710
+ charCode: 38
711
+ });
712
+ expect(onChange).not.toHaveBeenCalled();
713
+ expect(radios[4].getAttribute("aria-checked")).toBe("false");
714
+ expect(document.activeElement).toEqual(radios[4]);
715
+ expect(radios[4].tabIndex).toBe(0);
716
+ expect(submitInput.value).toBe("");
717
+ case 18:
718
+ case "end":
719
+ return _context11.stop();
720
+ }
721
+ }, _callee11);
722
+ })));
723
+ test("Read-only radio group sends its value on submit", /*#__PURE__*/(0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee12() {
724
+ var handlerOnSubmit, _render22, getByText, submit;
725
+ return _regenerator["default"].wrap(function _callee12$(_context12) {
726
+ while (1) switch (_context12.prev = _context12.next) {
727
+ case 0:
728
+ handlerOnSubmit = jest.fn(function (e) {
729
+ e.preventDefault();
730
+ var formData = new FormData(e.target);
731
+ var formProps = Object.fromEntries(formData);
732
+ expect(formProps).toStrictEqual({
733
+ radiogroup: "data"
734
+ });
735
+ });
736
+ _render22 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement("form", {
737
+ onSubmit: handlerOnSubmit
738
+ }, /*#__PURE__*/_react["default"].createElement(_RadioGroup["default"], {
739
+ name: "radiogroup",
740
+ label: "test-radio-group-label",
741
+ value: "data",
742
+ options: options,
743
+ readOnly: true
744
+ }), /*#__PURE__*/_react["default"].createElement("button", {
745
+ type: "submit"
746
+ }, "Submit"))), getByText = _render22.getByText;
747
+ submit = getByText("Submit");
748
+ _context12.next = 5;
749
+ return _userEvent["default"].click(submit);
750
+ case 5:
751
+ case "end":
752
+ return _context12.stop();
753
+ }
754
+ }, _callee12);
755
+ })));
694
756
  });