@dxc-technology/halstack-react 0.0.0-a7970fd → 0.0.0-a7fec42

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 (196) hide show
  1. package/HalstackContext.d.ts +4 -2
  2. package/HalstackContext.js +110 -58
  3. package/accordion/Accordion.js +122 -103
  4. package/accordion/Accordion.stories.tsx +2 -3
  5. package/accordion/Accordion.test.js +9 -10
  6. package/accordion/types.d.ts +5 -4
  7. package/accordion-group/AccordionGroup.js +2 -21
  8. package/accordion-group/AccordionGroup.stories.tsx +27 -1
  9. package/accordion-group/AccordionGroup.test.js +20 -45
  10. package/accordion-group/types.d.ts +10 -3
  11. package/alert/Alert.js +5 -2
  12. package/badge/Badge.d.ts +1 -1
  13. package/badge/Badge.js +5 -3
  14. package/badge/types.d.ts +1 -0
  15. package/bleed/Bleed.js +1 -34
  16. package/bleed/Bleed.stories.tsx +94 -95
  17. package/bleed/types.d.ts +1 -1
  18. package/box/Box.js +23 -33
  19. package/box/types.d.ts +1 -0
  20. package/bulleted-list/BulletedList.d.ts +7 -0
  21. package/bulleted-list/BulletedList.js +123 -0
  22. package/bulleted-list/BulletedList.stories.tsx +200 -0
  23. package/bulleted-list/types.d.ts +11 -0
  24. package/{list → bulleted-list}/types.js +0 -0
  25. package/button/Button.js +43 -61
  26. package/button/Button.stories.tsx +9 -0
  27. package/button/types.d.ts +7 -7
  28. package/card/Card.js +34 -36
  29. package/card/types.d.ts +1 -0
  30. package/checkbox/Checkbox.js +90 -95
  31. package/checkbox/Checkbox.test.js +93 -16
  32. package/checkbox/types.d.ts +2 -2
  33. package/chip/types.d.ts +1 -1
  34. package/common/variables.js +232 -96
  35. package/date-input/DateInput.js +8 -5
  36. package/dialog/Dialog.js +52 -28
  37. package/dialog/Dialog.stories.tsx +57 -2
  38. package/dialog/Dialog.test.js +34 -4
  39. package/dialog/types.d.ts +3 -2
  40. package/dropdown/Dropdown.d.ts +1 -1
  41. package/dropdown/Dropdown.js +244 -247
  42. package/dropdown/Dropdown.stories.tsx +126 -63
  43. package/dropdown/Dropdown.test.js +509 -108
  44. package/dropdown/DropdownMenu.d.ts +4 -0
  45. package/dropdown/DropdownMenu.js +80 -0
  46. package/dropdown/DropdownMenuItem.d.ts +4 -0
  47. package/dropdown/DropdownMenuItem.js +92 -0
  48. package/dropdown/types.d.ts +25 -5
  49. package/file-input/FileInput.js +9 -6
  50. package/file-input/FileItem.js +7 -5
  51. package/flex/Flex.d.ts +4 -0
  52. package/flex/Flex.js +69 -0
  53. package/flex/Flex.stories.tsx +103 -0
  54. package/flex/types.d.ts +32 -0
  55. package/{quick-nav-container → flex}/types.js +0 -0
  56. package/footer/Footer.js +7 -5
  57. package/footer/Footer.stories.tsx +8 -1
  58. package/footer/Icons.js +1 -1
  59. package/footer/types.d.ts +2 -1
  60. package/header/Header.js +80 -75
  61. package/header/Header.stories.tsx +4 -4
  62. package/header/Icons.js +2 -2
  63. package/header/types.d.ts +3 -2
  64. package/inset/Inset.js +1 -34
  65. package/inset/Inset.stories.tsx +36 -36
  66. package/inset/types.d.ts +1 -1
  67. package/layout/ApplicationLayout.d.ts +16 -6
  68. package/layout/ApplicationLayout.js +70 -117
  69. package/layout/ApplicationLayout.stories.tsx +84 -93
  70. package/layout/Icons.d.ts +5 -0
  71. package/layout/Icons.js +13 -2
  72. package/layout/SidenavContext.d.ts +5 -0
  73. package/layout/SidenavContext.js +19 -0
  74. package/layout/types.d.ts +18 -33
  75. package/link/Link.d.ts +3 -2
  76. package/link/Link.js +57 -70
  77. package/link/Link.stories.tsx +95 -53
  78. package/link/Link.test.js +7 -15
  79. package/link/types.d.ts +7 -23
  80. package/main.d.ts +8 -11
  81. package/main.js +40 -58
  82. package/number-input/NumberInput.test.js +1 -1
  83. package/number-input/types.d.ts +1 -1
  84. package/package.json +10 -9
  85. package/paginator/Paginator.js +17 -38
  86. package/paginator/Paginator.test.js +42 -0
  87. package/paragraph/Paragraph.d.ts +6 -0
  88. package/paragraph/Paragraph.js +38 -0
  89. package/paragraph/Paragraph.stories.tsx +44 -0
  90. package/password-input/PasswordInput.js +11 -6
  91. package/password-input/PasswordInput.test.js +14 -14
  92. package/password-input/types.d.ts +1 -1
  93. package/progress-bar/ProgressBar.d.ts +2 -2
  94. package/progress-bar/ProgressBar.js +57 -51
  95. package/progress-bar/ProgressBar.stories.jsx +13 -11
  96. package/progress-bar/ProgressBar.test.js +67 -22
  97. package/progress-bar/types.d.ts +3 -4
  98. package/quick-nav/QuickNav.js +75 -22
  99. package/quick-nav/QuickNav.stories.tsx +131 -26
  100. package/quick-nav/types.d.ts +1 -1
  101. package/radio-group/Radio.d.ts +1 -1
  102. package/radio-group/Radio.js +43 -28
  103. package/radio-group/RadioGroup.js +30 -27
  104. package/radio-group/RadioGroup.stories.tsx +1 -0
  105. package/radio-group/RadioGroup.test.js +123 -96
  106. package/radio-group/types.d.ts +2 -2
  107. package/resultsetTable/ResultsetTable.test.js +42 -0
  108. package/select/Listbox.d.ts +1 -1
  109. package/select/Listbox.js +58 -8
  110. package/select/Select.js +80 -90
  111. package/select/Select.stories.tsx +145 -100
  112. package/select/Select.test.js +425 -249
  113. package/select/types.d.ts +2 -5
  114. package/sidenav/Sidenav.d.ts +6 -5
  115. package/sidenav/Sidenav.js +184 -52
  116. package/sidenav/Sidenav.stories.tsx +154 -156
  117. package/sidenav/Sidenav.test.js +25 -37
  118. package/sidenav/types.d.ts +50 -27
  119. package/slider/Slider.js +116 -92
  120. package/slider/Slider.stories.tsx +7 -1
  121. package/slider/Slider.test.js +121 -21
  122. package/slider/types.d.ts +2 -2
  123. package/spinner/Spinner.js +1 -1
  124. package/switch/Switch.d.ts +1 -1
  125. package/switch/Switch.js +135 -66
  126. package/switch/Switch.stories.tsx +8 -30
  127. package/switch/Switch.test.js +144 -17
  128. package/switch/types.d.ts +3 -4
  129. package/table/Table.js +1 -1
  130. package/tabs/Tab.d.ts +4 -0
  131. package/tabs/Tab.js +135 -0
  132. package/tabs/Tabs.js +360 -104
  133. package/tabs/Tabs.stories.tsx +74 -0
  134. package/tabs/Tabs.test.js +217 -6
  135. package/tabs/types.d.ts +15 -5
  136. package/tabs-nav/NavTabs.d.ts +8 -0
  137. package/tabs-nav/NavTabs.js +125 -0
  138. package/tabs-nav/NavTabs.stories.tsx +170 -0
  139. package/tabs-nav/NavTabs.test.js +82 -0
  140. package/tabs-nav/Tab.d.ts +4 -0
  141. package/tabs-nav/Tab.js +130 -0
  142. package/tabs-nav/types.d.ts +53 -0
  143. package/{radio → tabs-nav}/types.js +0 -0
  144. package/tag/Tag.js +1 -1
  145. package/tag/types.d.ts +1 -1
  146. package/text-input/Icons.d.ts +8 -0
  147. package/text-input/Icons.js +60 -0
  148. package/text-input/Suggestion.d.ts +4 -0
  149. package/text-input/Suggestion.js +57 -0
  150. package/text-input/Suggestions.d.ts +4 -0
  151. package/text-input/Suggestions.js +134 -0
  152. package/text-input/TextInput.js +206 -329
  153. package/text-input/TextInput.stories.tsx +189 -182
  154. package/text-input/TextInput.test.js +166 -164
  155. package/text-input/types.d.ts +35 -4
  156. package/textarea/Textarea.js +10 -19
  157. package/textarea/types.d.ts +1 -1
  158. package/toggle-group/types.d.ts +1 -1
  159. package/typography/Typography.d.ts +4 -0
  160. package/typography/Typography.js +131 -0
  161. package/typography/Typography.stories.tsx +198 -0
  162. package/typography/types.d.ts +18 -0
  163. package/{row → typography}/types.js +0 -0
  164. package/useTranslatedLabels.d.ts +2 -0
  165. package/useTranslatedLabels.js +20 -0
  166. package/wizard/Wizard.js +36 -41
  167. package/wizard/Wizard.stories.tsx +20 -1
  168. package/wizard/types.d.ts +5 -4
  169. package/list/List.d.ts +0 -4
  170. package/list/List.js +0 -47
  171. package/list/List.stories.tsx +0 -95
  172. package/list/types.d.ts +0 -7
  173. package/quick-nav-container/HeadingLink.d.ts +0 -8
  174. package/quick-nav-container/HeadingLink.js +0 -58
  175. package/quick-nav-container/QuickNavContainer.d.ts +0 -4
  176. package/quick-nav-container/QuickNavContainer.js +0 -69
  177. package/quick-nav-container/Section.d.ts +0 -9
  178. package/quick-nav-container/Section.js +0 -37
  179. package/quick-nav-container/types.d.ts +0 -34
  180. package/radio/Radio.d.ts +0 -4
  181. package/radio/Radio.js +0 -173
  182. package/radio/Radio.stories.tsx +0 -192
  183. package/radio/Radio.test.js +0 -71
  184. package/radio/types.d.ts +0 -54
  185. package/row/Row.d.ts +0 -3
  186. package/row/Row.js +0 -127
  187. package/row/Row.stories.tsx +0 -237
  188. package/row/types.d.ts +0 -28
  189. package/stack/Stack.d.ts +0 -3
  190. package/stack/Stack.js +0 -97
  191. package/stack/Stack.stories.tsx +0 -164
  192. package/stack/types.d.ts +0 -24
  193. package/stack/types.js +0 -5
  194. package/text/Text.d.ts +0 -7
  195. package/text/Text.js +0 -30
  196. package/text/Text.stories.tsx +0 -19
@@ -23,6 +23,8 @@ var _uuid = require("uuid");
23
23
 
24
24
  var _useTheme = _interopRequireDefault(require("../useTheme"));
25
25
 
26
+ var _useTranslatedLabels = _interopRequireDefault(require("../useTranslatedLabels"));
27
+
26
28
  var _Radio = _interopRequireDefault(require("./Radio"));
27
29
 
28
30
  var _templateObject, _templateObject2, _templateObject3, _templateObject4, _templateObject5, _templateObject6, _templateObject7;
@@ -39,6 +41,8 @@ var getInitialFocusIndex = function getInitialFocusIndex(innerOptions, value) {
39
41
  };
40
42
 
41
43
  var DxcRadioGroup = /*#__PURE__*/_react["default"].forwardRef(function (_ref, ref) {
44
+ var _ref2;
45
+
42
46
  var label = _ref.label,
43
47
  name = _ref.name,
44
48
  helperText = _ref.helperText,
@@ -47,8 +51,7 @@ var DxcRadioGroup = /*#__PURE__*/_react["default"].forwardRef(function (_ref, re
47
51
  disabled = _ref$disabled === void 0 ? false : _ref$disabled,
48
52
  _ref$optional = _ref.optional,
49
53
  optional = _ref$optional === void 0 ? false : _ref$optional,
50
- _ref$optionalItemLabe = _ref.optionalItemLabel,
51
- optionalItemLabel = _ref$optionalItemLabe === void 0 ? "N/A" : _ref$optionalItemLabe,
54
+ optionalItemLabel = _ref.optionalItemLabel,
52
55
  _ref$readonly = _ref.readonly,
53
56
  readonly = _ref$readonly === void 0 ? false : _ref$readonly,
54
57
  _ref$stacking = _ref.stacking,
@@ -78,8 +81,10 @@ var DxcRadioGroup = /*#__PURE__*/_react["default"].forwardRef(function (_ref, re
78
81
  firstTimeFocus = _useState6[0],
79
82
  setFirstTimeFocus = _useState6[1];
80
83
 
84
+ var colorsTheme = (0, _useTheme["default"])();
85
+ var translatedLabels = (0, _useTranslatedLabels["default"])();
81
86
  var optionalItem = {
82
- label: optionalItemLabel,
87
+ label: optionalItemLabel || translatedLabels.radioGroup.optionalItemLabelDefault,
83
88
  value: "",
84
89
  disabled: disabled
85
90
  };
@@ -92,7 +97,6 @@ var DxcRadioGroup = /*#__PURE__*/_react["default"].forwardRef(function (_ref, re
92
97
  currentFocusIndex = _useState8[0],
93
98
  setCurrentFocusIndex = _useState8[1];
94
99
 
95
- var colorsTheme = (0, _useTheme["default"])();
96
100
  var handleOnChange = (0, _react.useCallback)(function (newValue) {
97
101
  var currentValue = value !== null && value !== void 0 ? value : innerValue;
98
102
 
@@ -100,16 +104,16 @@ var DxcRadioGroup = /*#__PURE__*/_react["default"].forwardRef(function (_ref, re
100
104
  value !== null && value !== void 0 ? value : setInnerValue(newValue);
101
105
  onChange === null || onChange === void 0 ? void 0 : onChange(newValue);
102
106
  }
103
- }, [value, innerValue, setInnerValue, onChange]);
107
+ }, [value, innerValue, onChange]);
104
108
 
105
- var handleOnBlur = function handleOnBlur(e) {
109
+ var handleOnBlur = function handleOnBlur(event) {
106
110
  // If the radio group loses the focus to an element not contained inside it...
107
- if (!e.currentTarget.contains(e.relatedTarget)) {
111
+ if (!event.currentTarget.contains(event.relatedTarget)) {
108
112
  setFirstTimeFocus(true);
109
113
  var currentValue = value !== null && value !== void 0 ? value : innerValue;
110
114
  !optional && !Boolean(currentValue) ? onBlur === null || onBlur === void 0 ? void 0 : onBlur({
111
115
  value: currentValue,
112
- error: "This field is required. Please, choose an option."
116
+ error: translatedLabels.formFields.requiredSelectionErrorMessage
113
117
  }) : onBlur === null || onBlur === void 0 ? void 0 : onBlur({
114
118
  value: currentValue
115
119
  });
@@ -147,27 +151,24 @@ var DxcRadioGroup = /*#__PURE__*/_react["default"].forwardRef(function (_ref, re
147
151
  };
148
152
 
149
153
  var handleOnKeyDown = function handleOnKeyDown(event) {
150
- switch (event.keyCode) {
151
- case 37: // arrow left
152
-
153
- case 38:
154
- // arrow up
154
+ switch (event.key) {
155
+ case "Left":
156
+ case "ArrowLeft":
157
+ case "Up":
158
+ case "ArrowUp":
155
159
  event.preventDefault();
156
160
  setPreviousRadioChecked();
157
161
  break;
158
162
 
159
- case 39: // arrow right
160
-
161
- case 40:
162
- // arrow down
163
+ case "Right":
164
+ case "ArrowRight":
165
+ case "Down":
166
+ case "ArrowDown":
163
167
  event.preventDefault();
164
168
  setNextRadioChecked();
165
169
  break;
166
170
 
167
- case 13: // enter
168
-
169
- case 32:
170
- // space
171
+ case " ":
171
172
  event.preventDefault();
172
173
  handleOnChange(innerOptions[currentFocusIndex].value);
173
174
  break;
@@ -182,7 +183,7 @@ var DxcRadioGroup = /*#__PURE__*/_react["default"].forwardRef(function (_ref, re
182
183
  id: radioGroupLabelId,
183
184
  helperText: helperText,
184
185
  disabled: disabled
185
- }, label, " ", optional && /*#__PURE__*/_react["default"].createElement(OptionalLabel, null, "(Optional)")), helperText && /*#__PURE__*/_react["default"].createElement(HelperText, {
186
+ }, label, optional && /*#__PURE__*/_react["default"].createElement(OptionalLabel, null, " ".concat(translatedLabels.formFields.optionalLabel))), helperText && /*#__PURE__*/_react["default"].createElement(HelperText, {
186
187
  disabled: disabled
187
188
  }, helperText), /*#__PURE__*/_react["default"].createElement(RadioGroup, {
188
189
  onBlur: handleOnBlur,
@@ -192,20 +193,22 @@ var DxcRadioGroup = /*#__PURE__*/_react["default"].forwardRef(function (_ref, re
192
193
  role: "radiogroup",
193
194
  "aria-disabled": disabled,
194
195
  "aria-labelledby": radioGroupLabelId,
195
- "aria-invalid": error ? "true" : "false",
196
+ "aria-invalid": error ? true : false,
196
197
  "aria-errormessage": error ? errorId : undefined,
197
198
  "aria-required": !disabled && !readonly && !optional,
198
199
  "aria-readonly": readonly,
199
200
  "aria-orientation": stacking === "column" ? "vertical" : "horizontal"
200
201
  }, /*#__PURE__*/_react["default"].createElement(ValueInput, {
201
202
  name: name,
202
- value: value !== null && value !== void 0 ? value : innerValue,
203
+ disabled: disabled,
204
+ value: (_ref2 = value !== null && value !== void 0 ? value : innerValue) !== null && _ref2 !== void 0 ? _ref2 : "",
203
205
  readOnly: true,
204
206
  "aria-hidden": "true"
205
207
  }), innerOptions.map(function (option, index) {
206
208
  return /*#__PURE__*/_react["default"].createElement(_Radio["default"], {
207
- option: option,
208
- currentValue: value !== null && value !== void 0 ? value : innerValue,
209
+ key: "radio-".concat(index),
210
+ label: option.label,
211
+ checked: (value !== null && value !== void 0 ? value : innerValue) === option.value,
209
212
  onClick: function onClick() {
210
213
  handleOnChange(option.value);
211
214
  setCurrentFocusIndex(index);
@@ -260,7 +263,7 @@ var HelperText = _styledComponents["default"].span(_templateObject4 || (_templat
260
263
  return props.theme.groupLabelMargin;
261
264
  });
262
265
 
263
- var RadioGroup = _styledComponents["default"].div(_templateObject5 || (_templateObject5 = (0, _taggedTemplateLiteral2["default"])(["\n display: flex;\n flex-wrap: wrap;\n flex-direction: ", ";\n\n row-gap: ", ";\n column-gap: ", ";\n"])), function (props) {
266
+ var RadioGroup = _styledComponents["default"].div(_templateObject5 || (_templateObject5 = (0, _taggedTemplateLiteral2["default"])(["\n display: flex;\n flex-wrap: wrap;\n flex-direction: ", ";\n row-gap: ", ";\n column-gap: ", ";\n"])), function (props) {
264
267
  return props.stacking;
265
268
  }, function (props) {
266
269
  return props.theme.groupVerticalGutter;
@@ -1,3 +1,4 @@
1
+ import React from "react";
1
2
  import ExampleContainer from "../../.storybook/components/ExampleContainer";
2
3
  import Title from "../../.storybook/components/Title";
3
4
  import DxcRadioGroup from "./RadioGroup";
@@ -4,12 +4,12 @@ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefau
4
4
 
5
5
  var _react = _interopRequireDefault(require("react"));
6
6
 
7
- var _RadioGroup = _interopRequireDefault(require("./RadioGroup"));
8
-
9
7
  var _react2 = require("@testing-library/react");
10
8
 
11
9
  var _userEvent = _interopRequireDefault(require("@testing-library/user-event"));
12
10
 
11
+ var _RadioGroup = _interopRequireDefault(require("./RadioGroup.tsx"));
12
+
13
13
  var options = [{
14
14
  label: "Option 01",
15
15
  value: "1"
@@ -38,7 +38,7 @@ var options = [{
38
38
  label: "Option 09",
39
39
  value: "9"
40
40
  }];
41
- var single_disabled_options = [{
41
+ var singleDisabledOptions = [{
42
42
  label: "Option 01",
43
43
  value: "1"
44
44
  }, {
@@ -90,14 +90,46 @@ describe("Radio Group component tests", function () {
90
90
  var radioGroup = getByRole("radiogroup");
91
91
  expect(radioGroup.getAttribute("aria-orientation")).toBe("horizontal");
92
92
  });
93
+ test("Sends its value when submitted", function () {
94
+ var handlerOnSubmit = jest.fn(function (e) {
95
+ e.preventDefault();
96
+ var formData = new FormData(e.target);
97
+ var formProps = Object.fromEntries(formData);
98
+ expect(formProps).toStrictEqual({
99
+ radiogroup: "5"
100
+ });
101
+ });
102
+
103
+ var _render3 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement("form", {
104
+ onSubmit: handlerOnSubmit
105
+ }, /*#__PURE__*/_react["default"].createElement(_RadioGroup["default"], {
106
+ name: "radiogroup",
107
+ label: "test-radio-group-label",
108
+ options: options
109
+ }), /*#__PURE__*/_react["default"].createElement("button", {
110
+ type: "submit"
111
+ }, "Submit"))),
112
+ getByText = _render3.getByText,
113
+ getByRole = _render3.getByRole,
114
+ getAllByRole = _render3.getAllByRole;
115
+
116
+ var radioGroup = getByRole("radiogroup");
117
+ var submit = getByText("Submit");
118
+
119
+ _userEvent["default"].click(radioGroup);
120
+
121
+ _userEvent["default"].click(getAllByRole("radio")[4]);
122
+
123
+ _userEvent["default"].click(submit);
124
+ });
93
125
  test("Disabled state renders with correct aria attribute, correct tabIndex values and it is not focusable by keyboard", function () {
94
- var _render3 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_RadioGroup["default"], {
126
+ var _render4 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_RadioGroup["default"], {
95
127
  label: "test-radioGroup-label",
96
128
  options: options,
97
129
  disabled: true
98
130
  })),
99
- getByRole = _render3.getByRole,
100
- getAllByRole = _render3.getAllByRole;
131
+ getByRole = _render4.getByRole,
132
+ getAllByRole = _render4.getAllByRole;
101
133
 
102
134
  var radioGroup = getByRole("radiogroup");
103
135
  var radios = getAllByRole("radio");
@@ -107,8 +139,8 @@ describe("Radio Group component tests", function () {
107
139
  });
108
140
 
109
141
  _react2.fireEvent.keyDown(radioGroup, {
110
- key: "Enter",
111
- code: "Enter",
142
+ key: " ",
143
+ code: "Space",
112
144
  keyCode: 13,
113
145
  charCode: 13
114
146
  });
@@ -132,13 +164,13 @@ describe("Radio Group component tests", function () {
132
164
  });
133
165
  });
134
166
  test("Disabled option renders with correct aria attribute, correct tabIndex value and it is not focusable by keyboard (focus 'jumps' the disabled option)", function () {
135
- var _render4 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_RadioGroup["default"], {
167
+ var _render5 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_RadioGroup["default"], {
136
168
  name: "test",
137
169
  label: "test-radioGroup-label",
138
- options: single_disabled_options
170
+ options: singleDisabledOptions
139
171
  })),
140
- getByRole = _render4.getByRole,
141
- getAllByRole = _render4.getAllByRole;
172
+ getByRole = _render5.getByRole,
173
+ getAllByRole = _render5.getAllByRole;
142
174
 
143
175
  var radioGroup = getByRole("radiogroup");
144
176
  var radios = getAllByRole("radio");
@@ -165,14 +197,39 @@ describe("Radio Group component tests", function () {
165
197
  expect(radios[1].tabIndex).toBe(-1);
166
198
  expect(radios[2].tabIndex).toBe(-1);
167
199
  });
200
+ test("Disabled radio group doesn't send its value when submitted", function () {
201
+ var handlerOnSubmit = jest.fn(function (e) {
202
+ e.preventDefault();
203
+ var formData = new FormData(e.target);
204
+ var formProps = Object.fromEntries(formData);
205
+ expect(formProps).toStrictEqual({});
206
+ });
207
+
208
+ var _render6 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement("form", {
209
+ onSubmit: handlerOnSubmit
210
+ }, /*#__PURE__*/_react["default"].createElement(_RadioGroup["default"], {
211
+ name: "radiogroup",
212
+ defaultValue: "1",
213
+ disabled: true,
214
+ label: "test-radio-group-label",
215
+ options: options
216
+ }), /*#__PURE__*/_react["default"].createElement("button", {
217
+ type: "submit"
218
+ }, "Submit"))),
219
+ getByText = _render6.getByText;
220
+
221
+ var submit = getByText("Submit");
222
+
223
+ _userEvent["default"].click(submit);
224
+ });
168
225
  test("Error state renders with correct aria attributes", function () {
169
- var _render5 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_RadioGroup["default"], {
226
+ var _render7 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_RadioGroup["default"], {
170
227
  label: "test-radioGroup-label",
171
228
  options: options,
172
229
  error: "Error message"
173
230
  })),
174
- getByRole = _render5.getByRole,
175
- getByText = _render5.getByText;
231
+ getByRole = _render7.getByRole,
232
+ getByText = _render7.getByText;
176
233
 
177
234
  var radioGroup = getByRole("radiogroup");
178
235
  var errorMessage = getByText("Error message");
@@ -184,14 +241,14 @@ describe("Radio Group component tests", function () {
184
241
  var onChange = jest.fn();
185
242
  var onBlur = jest.fn();
186
243
 
187
- var _render6 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_RadioGroup["default"], {
244
+ var _render8 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_RadioGroup["default"], {
188
245
  label: "test-radioGroup-label",
189
246
  options: options,
190
247
  onChange: onChange,
191
248
  onBlur: onBlur
192
249
  })),
193
- getByRole = _render6.getByRole,
194
- getAllByRole = _render6.getAllByRole;
250
+ getByRole = _render8.getByRole,
251
+ getAllByRole = _render8.getAllByRole;
195
252
 
196
253
  var radioGroup = getByRole("radiogroup");
197
254
  expect(radioGroup.getAttribute("aria-required")).toBe("true");
@@ -218,15 +275,15 @@ describe("Radio Group component tests", function () {
218
275
  var onChange = jest.fn();
219
276
  var onBlur = jest.fn();
220
277
 
221
- var _render7 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_RadioGroup["default"], {
278
+ var _render9 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_RadioGroup["default"], {
222
279
  label: "test-radioGroup-label",
223
280
  value: "",
224
281
  options: options,
225
282
  onChange: onChange,
226
283
  onBlur: onBlur
227
284
  })),
228
- getByRole = _render7.getByRole,
229
- getAllByRole = _render7.getAllByRole;
285
+ getByRole = _render9.getByRole,
286
+ getAllByRole = _render9.getAllByRole;
230
287
 
231
288
  var radioGroup = getByRole("radiogroup");
232
289
  expect(radioGroup.getAttribute("aria-required")).toBe("true");
@@ -245,7 +302,7 @@ describe("Radio Group component tests", function () {
245
302
  test("The 'defaultValue' gives the radio group an initial value when it is uncontrolled", function () {
246
303
  var onChange = jest.fn();
247
304
 
248
- var _render8 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_RadioGroup["default"], {
305
+ var _render10 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_RadioGroup["default"], {
249
306
  defaultValue: "2",
250
307
  name: "test",
251
308
  label: "test-radio-group-label",
@@ -253,8 +310,8 @@ describe("Radio Group component tests", function () {
253
310
  options: options,
254
311
  onChange: onChange
255
312
  })),
256
- getAllByRole = _render8.getAllByRole,
257
- container = _render8.container;
313
+ getAllByRole = _render10.getAllByRole,
314
+ container = _render10.container;
258
315
 
259
316
  var radio = getAllByRole("radio")[1];
260
317
  var submitInput = container.querySelector("input[name=\"test\"]");
@@ -266,7 +323,7 @@ describe("Radio Group component tests", function () {
266
323
  var onChange = jest.fn();
267
324
  var onBlur = jest.fn();
268
325
 
269
- var _render9 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_RadioGroup["default"], {
326
+ var _render11 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_RadioGroup["default"], {
270
327
  name: "test",
271
328
  label: "test-radio-group-label",
272
329
  helperText: "test-radio-group-helper-text",
@@ -276,9 +333,9 @@ describe("Radio Group component tests", function () {
276
333
  optional: true,
277
334
  optionalItemLabel: "No selection"
278
335
  })),
279
- getByRole = _render9.getByRole,
280
- getByText = _render9.getByText,
281
- container = _render9.container;
336
+ getByRole = _render11.getByRole,
337
+ getByText = _render11.getByText,
338
+ container = _render11.container;
282
339
 
283
340
  var radioGroup = getByRole("radiogroup");
284
341
  expect(radioGroup.getAttribute("aria-required")).toBe("false");
@@ -299,7 +356,7 @@ describe("Radio Group component tests", function () {
299
356
  var onChange = jest.fn();
300
357
  var onBlur = jest.fn();
301
358
 
302
- var _render10 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_RadioGroup["default"], {
359
+ var _render12 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_RadioGroup["default"], {
303
360
  name: "test",
304
361
  value: "2",
305
362
  label: "test-radio-group-label",
@@ -308,9 +365,9 @@ describe("Radio Group component tests", function () {
308
365
  onChange: onChange,
309
366
  onBlur: onBlur
310
367
  })),
311
- getByRole = _render10.getByRole,
312
- getAllByRole = _render10.getAllByRole,
313
- container = _render10.container;
368
+ getByRole = _render12.getByRole,
369
+ getAllByRole = _render12.getAllByRole,
370
+ container = _render12.container;
314
371
 
315
372
  var radioGroup = getByRole("radiogroup");
316
373
  var radios = getAllByRole("radio");
@@ -332,16 +389,16 @@ describe("Radio Group component tests", function () {
332
389
  test("Select an option by clicking on its label", function () {
333
390
  var onChange = jest.fn();
334
391
 
335
- var _render11 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_RadioGroup["default"], {
392
+ var _render13 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_RadioGroup["default"], {
336
393
  name: "test",
337
394
  label: "test-radio-group-label",
338
395
  helperText: "test-radio-group-helper-text",
339
396
  options: options,
340
397
  onChange: onChange
341
398
  })),
342
- getByText = _render11.getByText,
343
- getAllByRole = _render11.getAllByRole,
344
- container = _render11.container;
399
+ getByText = _render13.getByText,
400
+ getAllByRole = _render13.getAllByRole,
401
+ container = _render13.container;
345
402
 
346
403
  var radioLabel = getByText("Option 09");
347
404
  var checkedRadio = getAllByRole("radio")[8];
@@ -359,15 +416,15 @@ describe("Radio Group component tests", function () {
359
416
  test("Select an option by clicking on its radio input", function () {
360
417
  var onChange = jest.fn();
361
418
 
362
- var _render12 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_RadioGroup["default"], {
419
+ var _render14 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_RadioGroup["default"], {
363
420
  name: "test",
364
421
  label: "test-radio-group-label",
365
422
  helperText: "test-radio-group-helper-text",
366
423
  options: options,
367
424
  onChange: onChange
368
425
  })),
369
- getAllByRole = _render12.getAllByRole,
370
- container = _render12.container;
426
+ getAllByRole = _render14.getAllByRole,
427
+ container = _render14.container;
371
428
 
372
429
  var checkedRadio = getAllByRole("radio")[6];
373
430
  var submitInput = container.querySelector("input[name=\"test\"]");
@@ -384,7 +441,7 @@ describe("Radio Group component tests", function () {
384
441
  test("Select an option that is already checked does not call onChange event but gives the focus", function () {
385
442
  var onChange = jest.fn();
386
443
 
387
- var _render13 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_RadioGroup["default"], {
444
+ var _render15 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_RadioGroup["default"], {
388
445
  defaultValue: "2",
389
446
  name: "test",
390
447
  label: "test-radio-group-label",
@@ -392,7 +449,7 @@ describe("Radio Group component tests", function () {
392
449
  options: options,
393
450
  onChange: onChange
394
451
  })),
395
- getAllByRole = _render13.getAllByRole;
452
+ getAllByRole = _render15.getAllByRole;
396
453
 
397
454
  var checkedRadio = getAllByRole("radio")[1];
398
455
  expect(checkedRadio.tabIndex).toBe(0);
@@ -403,56 +460,26 @@ describe("Radio Group component tests", function () {
403
460
  expect(onChange).not.toHaveBeenCalled();
404
461
  expect(document.activeElement).toEqual(checkedRadio);
405
462
  });
406
- test("The 'enter' key checks the current focused option if anyone is checked", function () {
407
- var onChange = jest.fn();
408
-
409
- var _render14 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_RadioGroup["default"], {
410
- name: "test",
411
- label: "test-radio-group-label",
412
- helperText: "test-radio-group-helper-text",
413
- options: options,
414
- onChange: onChange
415
- })),
416
- getByRole = _render14.getByRole,
417
- getAllByRole = _render14.getAllByRole,
418
- container = _render14.container;
419
-
420
- var radioGroup = getByRole("radiogroup");
421
- var checkedRadio = getAllByRole("radio")[0];
422
- var submitInput = container.querySelector("input[name=\"test\"]");
423
-
424
- _react2.fireEvent.keyDown(radioGroup, {
425
- key: "Enter",
426
- code: "Enter",
427
- keyCode: 13,
428
- charCode: 13
429
- });
430
-
431
- expect(onChange).toHaveBeenCalledWith("1");
432
- expect(checkedRadio.getAttribute("aria-checked")).toBe("true");
433
- expect(checkedRadio.tabIndex).toBe(0);
434
- expect(submitInput.value).toBe("1");
435
- });
436
463
  test("The 'space' key checks the current focused option if anyone is checked", function () {
437
464
  var onChange = jest.fn();
438
465
 
439
- var _render15 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_RadioGroup["default"], {
466
+ var _render16 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_RadioGroup["default"], {
440
467
  name: "test",
441
468
  label: "test-radio-group-label",
442
469
  helperText: "test-radio-group-helper-text",
443
470
  options: options,
444
471
  onChange: onChange
445
472
  })),
446
- getByRole = _render15.getByRole,
447
- getAllByRole = _render15.getAllByRole,
448
- container = _render15.container;
473
+ getByRole = _render16.getByRole,
474
+ getAllByRole = _render16.getAllByRole,
475
+ container = _render16.container;
449
476
 
450
477
  var radioGroup = getByRole("radiogroup");
451
478
  var checkedRadio = getAllByRole("radio")[0];
452
479
  var submitInput = container.querySelector("input[name=\"test\"]");
453
480
 
454
481
  _react2.fireEvent.keyDown(radioGroup, {
455
- key: "Space",
482
+ key: " ",
456
483
  code: "Space",
457
484
  keyCode: 32,
458
485
  charCode: 32
@@ -467,7 +494,7 @@ describe("Radio Group component tests", function () {
467
494
  var onChange = jest.fn();
468
495
  var onBlur = jest.fn();
469
496
 
470
- var _render16 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_RadioGroup["default"], {
497
+ var _render17 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_RadioGroup["default"], {
471
498
  name: "test",
472
499
  label: "test-radio-group-label",
473
500
  helperText: "test-radio-group-helper-text",
@@ -475,9 +502,9 @@ describe("Radio Group component tests", function () {
475
502
  onChange: onChange,
476
503
  onBlur: onBlur
477
504
  })),
478
- getByRole = _render16.getByRole,
479
- getAllByRole = _render16.getAllByRole,
480
- container = _render16.container;
505
+ getByRole = _render17.getByRole,
506
+ getAllByRole = _render17.getAllByRole,
507
+ container = _render17.container;
481
508
 
482
509
  var radioGroup = getByRole("radiogroup");
483
510
  var radios = getAllByRole("radio");
@@ -510,7 +537,7 @@ describe("Radio Group component tests", function () {
510
537
  var onChange = jest.fn();
511
538
  var onBlur = jest.fn();
512
539
 
513
- var _render17 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_RadioGroup["default"], {
540
+ var _render18 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_RadioGroup["default"], {
514
541
  defaultValue: "8",
515
542
  name: "test",
516
543
  label: "test-radio-group-label",
@@ -519,9 +546,9 @@ describe("Radio Group component tests", function () {
519
546
  onChange: onChange,
520
547
  onBlur: onBlur
521
548
  })),
522
- getByRole = _render17.getByRole,
523
- getAllByRole = _render17.getAllByRole,
524
- container = _render17.container;
549
+ getByRole = _render18.getByRole,
550
+ getAllByRole = _render18.getAllByRole,
551
+ container = _render18.container;
525
552
 
526
553
  var radioGroup = getByRole("radiogroup");
527
554
  var radios = getAllByRole("radio");
@@ -559,7 +586,7 @@ describe("Radio Group component tests", function () {
559
586
  var onChange = jest.fn();
560
587
  var onBlur = jest.fn();
561
588
 
562
- var _render18 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_RadioGroup["default"], {
589
+ var _render19 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_RadioGroup["default"], {
563
590
  defaultValue: "2",
564
591
  name: "test",
565
592
  label: "test-radio-group-label",
@@ -568,9 +595,9 @@ describe("Radio Group component tests", function () {
568
595
  onChange: onChange,
569
596
  onBlur: onBlur
570
597
  })),
571
- getByRole = _render18.getByRole,
572
- getAllByRole = _render18.getAllByRole,
573
- container = _render18.container;
598
+ getByRole = _render19.getByRole,
599
+ getAllByRole = _render19.getAllByRole,
600
+ container = _render19.container;
574
601
 
575
602
  var radioGroup = getByRole("radiogroup");
576
603
  var radios = getAllByRole("radio");
@@ -607,16 +634,16 @@ describe("Radio Group component tests", function () {
607
634
  test("Keyboard focus movement continues from the last radio input clicked", function () {
608
635
  var onChange = jest.fn();
609
636
 
610
- var _render19 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_RadioGroup["default"], {
637
+ var _render20 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_RadioGroup["default"], {
611
638
  name: "test",
612
639
  label: "test-radio-group-label",
613
640
  helperText: "test-radio-group-helper-text",
614
641
  options: options,
615
642
  onChange: onChange
616
643
  })),
617
- getByRole = _render19.getByRole,
618
- getAllByRole = _render19.getAllByRole,
619
- container = _render19.container;
644
+ getByRole = _render20.getByRole,
645
+ getAllByRole = _render20.getAllByRole,
646
+ container = _render20.container;
620
647
 
621
648
  var radioGroup = getByRole("radiogroup");
622
649
  var radios = getAllByRole("radio");
@@ -655,7 +682,7 @@ describe("Radio Group component tests", function () {
655
682
  test("Readonly radio group lets the user move the focus, but neither click nor keyboard press changes the value", function () {
656
683
  var onChange = jest.fn();
657
684
 
658
- var _render20 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_RadioGroup["default"], {
685
+ var _render21 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_RadioGroup["default"], {
659
686
  name: "test",
660
687
  label: "test-radio-group-label",
661
688
  helperText: "test-radio-group-helper-text",
@@ -663,9 +690,9 @@ describe("Radio Group component tests", function () {
663
690
  onChange: onChange,
664
691
  readonly: true
665
692
  })),
666
- getByRole = _render20.getByRole,
667
- getAllByRole = _render20.getAllByRole,
668
- container = _render20.container;
693
+ getByRole = _render21.getByRole,
694
+ getAllByRole = _render21.getAllByRole,
695
+ container = _render21.container;
669
696
 
670
697
  var radioGroup = getByRole("radiogroup");
671
698
  var radios = getAllByRole("radio");
@@ -102,8 +102,8 @@ export declare type RefType = HTMLDivElement;
102
102
  * Single radio prop types.
103
103
  */
104
104
  export declare type RadioProps = {
105
- option: Option;
106
- currentValue?: string;
105
+ label: string;
106
+ checked: boolean;
107
107
  onClick: () => void;
108
108
  error?: string;
109
109
  disabled: boolean;