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