@dxc-technology/halstack-react 0.0.0-d30020b → 0.0.0-d3554d7
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/ThemeContext.d.ts +4 -9
- package/ThemeContext.js +32 -32
- package/accordion/Accordion.test.js +57 -0
- package/accordion-group/AccordionGroup.test.js +133 -0
- package/alert/Alert.test.js +92 -0
- package/badge/Badge.d.ts +4 -0
- package/badge/types.d.ts +4 -0
- package/badge/types.js +5 -0
- package/box/Box.test.js +18 -0
- package/button/Button.test.js +35 -0
- package/card/Card.test.js +50 -0
- package/checkbox/Checkbox.test.js +65 -0
- package/chip/Chip.test.js +56 -0
- package/common/variables.js +0 -238
- package/date-input/DateInput.test.js +469 -0
- package/dialog/Dialog.test.js +40 -0
- package/dropdown/Dropdown.test.js +189 -0
- package/file-input/FileInput.test.js +457 -0
- package/footer/Footer.test.js +109 -0
- package/header/Header.test.js +63 -0
- package/heading/Heading.test.js +186 -0
- package/link/Link.test.js +91 -0
- package/main.d.ts +3 -6
- package/main.js +12 -36
- package/number-input/NumberInput.test.js +508 -0
- package/package.json +1 -1
- package/paginator/Paginator.test.js +266 -0
- package/password-input/PasswordInput.test.js +183 -0
- package/progress-bar/ProgressBar.test.js +65 -0
- package/radio/Radio.test.js +71 -0
- package/radio-group/Radio.d.ts +1 -1
- package/radio-group/Radio.js +24 -23
- package/radio-group/RadioGroup.js +38 -32
- package/radio-group/RadioGroup.stories.tsx +57 -40
- package/radio-group/RadioGroup.test.js +518 -72
- package/radio-group/types.d.ts +3 -2
- package/resultsetTable/ResultsetTable.test.js +306 -0
- package/select/Select.js +7 -1
- package/select/Select.stories.tsx +72 -62
- package/select/Select.test.js +1900 -0
- package/sidenav/Sidenav.test.js +56 -0
- package/slider/Slider.test.js +129 -0
- package/spinner/Spinner.test.js +64 -0
- package/switch/Switch.test.js +73 -0
- package/table/Table.test.js +26 -0
- package/tabs/Tabs.test.js +123 -0
- package/tag/Tag.test.js +60 -0
- package/text-input/TextInput.js +5 -3
- package/text-input/TextInput.stories.tsx +20 -2
- package/text-input/TextInput.test.js +1691 -0
- package/textarea/Textarea.js +5 -3
- package/textarea/Textarea.stories.jsx +30 -9
- package/textarea/Textarea.test.js +436 -0
- package/toggle-group/ToggleGroup.test.js +125 -0
- package/wizard/Wizard.test.js +128 -0
- package/V3Select/V3Select.js +0 -455
- package/V3Select/index.d.ts +0 -27
- package/V3Textarea/V3Textarea.js +0 -260
- package/V3Textarea/index.d.ts +0 -27
- package/date/Date.js +0 -373
- package/date/index.d.ts +0 -27
- package/input-text/Icons.js +0 -22
- package/input-text/InputText.js +0 -611
- package/input-text/index.d.ts +0 -36
- package/toggle/Toggle.js +0 -186
- package/toggle/index.d.ts +0 -21
- package/upload/Upload.js +0 -201
- package/upload/buttons-upload/ButtonsUpload.js +0 -111
- package/upload/buttons-upload/Icons.js +0 -40
- package/upload/dragAndDropArea/DragAndDropArea.js +0 -225
- package/upload/dragAndDropArea/Icons.js +0 -39
- package/upload/file-upload/FileToUpload.js +0 -115
- package/upload/file-upload/Icons.js +0 -66
- package/upload/files-upload/FilesToUpload.js +0 -109
- package/upload/index.d.ts +0 -15
- package/upload/transaction/Icons.js +0 -160
- package/upload/transaction/Transaction.js +0 -104
- package/upload/transactions/Transactions.js +0 -94
|
@@ -10,7 +10,7 @@ var _react2 = require("@testing-library/react");
|
|
|
10
10
|
|
|
11
11
|
var _userEvent = _interopRequireDefault(require("@testing-library/user-event"));
|
|
12
12
|
|
|
13
|
-
var
|
|
13
|
+
var options = [{
|
|
14
14
|
label: "Option 01",
|
|
15
15
|
value: "1"
|
|
16
16
|
}, {
|
|
@@ -37,29 +37,149 @@ var single_options = [{
|
|
|
37
37
|
}, {
|
|
38
38
|
label: "Option 09",
|
|
39
39
|
value: "9"
|
|
40
|
+
}];
|
|
41
|
+
var single_disabled_options = [{
|
|
42
|
+
label: "Option 01",
|
|
43
|
+
value: "1"
|
|
40
44
|
}, {
|
|
41
|
-
label: "Option
|
|
42
|
-
value: "
|
|
45
|
+
label: "Option 02",
|
|
46
|
+
value: "2"
|
|
47
|
+
}, {
|
|
48
|
+
label: "Option 03",
|
|
49
|
+
value: "3",
|
|
50
|
+
disabled: true
|
|
43
51
|
}];
|
|
44
52
|
describe("Radio Group component tests", function () {
|
|
45
|
-
test("
|
|
53
|
+
test("Initial render has correct aria attributes and tabIndex", function () {
|
|
54
|
+
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
|
+
|
|
62
|
+
var radioGroup = getByRole("radiogroup");
|
|
63
|
+
var radios = getAllByRole("radio");
|
|
64
|
+
expect(radioGroup.getAttribute("aria-disabled")).toBe("false");
|
|
65
|
+
expect(radioGroup.getAttribute("aria-labelledby")).toBe(getByText("test-radioGroup-label").id);
|
|
66
|
+
expect(radioGroup.getAttribute("aria-invalid")).toBe("false");
|
|
67
|
+
expect(radioGroup.getAttribute("aria-required")).toBe("true");
|
|
68
|
+
radios.forEach(function (radio, index) {
|
|
69
|
+
// 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);
|
|
71
|
+
expect(radio.getAttribute("aria-checked")).toBe("false");
|
|
72
|
+
expect(radio.getAttribute("aria-disabled")).toBe("false");
|
|
73
|
+
expect(radio.getAttribute("aria-labelledby")).toBe(getByText("Option 0".concat(index + 1)).id);
|
|
74
|
+
});
|
|
75
|
+
});
|
|
76
|
+
test("Disabled state renders with correct aria attribute, correct tabIndex values and it is not focusable by keyboard", function () {
|
|
77
|
+
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
|
+
|
|
85
|
+
var radioGroup = getByRole("radiogroup");
|
|
86
|
+
var radios = getAllByRole("radio");
|
|
87
|
+
expect(radioGroup.getAttribute("aria-disabled")).toBe("true");
|
|
88
|
+
radios.forEach(function (radio) {
|
|
89
|
+
expect(radio.tabIndex).toBe(-1);
|
|
90
|
+
});
|
|
91
|
+
|
|
92
|
+
_react2.fireEvent.keyDown(radioGroup, {
|
|
93
|
+
key: "Enter",
|
|
94
|
+
code: "Enter",
|
|
95
|
+
keyCode: 13,
|
|
96
|
+
charCode: 13
|
|
97
|
+
});
|
|
98
|
+
|
|
99
|
+
_react2.fireEvent.keyDown(radioGroup, {
|
|
100
|
+
key: "ArrowLeft",
|
|
101
|
+
code: "ArrowLeft",
|
|
102
|
+
keyCode: 37,
|
|
103
|
+
charCode: 37
|
|
104
|
+
});
|
|
105
|
+
|
|
106
|
+
_react2.fireEvent.keyDown(radioGroup, {
|
|
107
|
+
key: "ArrowDown",
|
|
108
|
+
code: "ArrowDown",
|
|
109
|
+
keyCode: 40,
|
|
110
|
+
charCode: 40
|
|
111
|
+
});
|
|
112
|
+
|
|
113
|
+
radios.forEach(function (radio) {
|
|
114
|
+
expect(radio.tabIndex).toBe(-1);
|
|
115
|
+
});
|
|
116
|
+
});
|
|
117
|
+
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
|
+
|
|
127
|
+
var radioGroup = getByRole("radiogroup");
|
|
128
|
+
var radios = getAllByRole("radio");
|
|
129
|
+
expect(radios[2].getAttribute("aria-disabled")).toBe("true");
|
|
130
|
+
expect(radios[0].tabIndex).toBe(0);
|
|
131
|
+
expect(radios[1].tabIndex).toBe(-1);
|
|
132
|
+
expect(radios[2].tabIndex).toBe(-1);
|
|
133
|
+
|
|
134
|
+
_react2.fireEvent.keyDown(radioGroup, {
|
|
135
|
+
key: "ArrowDown",
|
|
136
|
+
code: "ArrowDown",
|
|
137
|
+
keyCode: 40,
|
|
138
|
+
charCode: 40
|
|
139
|
+
});
|
|
140
|
+
|
|
141
|
+
_react2.fireEvent.keyDown(radioGroup, {
|
|
142
|
+
key: "ArrowDown",
|
|
143
|
+
code: "ArrowDown",
|
|
144
|
+
keyCode: 40,
|
|
145
|
+
charCode: 40
|
|
146
|
+
});
|
|
147
|
+
|
|
148
|
+
expect(radios[0].tabIndex).toBe(0);
|
|
149
|
+
expect(radios[1].tabIndex).toBe(-1);
|
|
150
|
+
expect(radios[2].tabIndex).toBe(-1);
|
|
151
|
+
});
|
|
152
|
+
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
|
+
|
|
161
|
+
var radioGroup = getByRole("radiogroup");
|
|
162
|
+
var errorMessage = getByText("Error message");
|
|
163
|
+
expect(radioGroup.getAttribute("aria-errormessage")).toBe(errorMessage.id);
|
|
164
|
+
expect(radioGroup.getAttribute("aria-invalid")).toBe("true");
|
|
165
|
+
expect(errorMessage.getAttribute("aria-live")).toBe("assertive");
|
|
166
|
+
});
|
|
167
|
+
test("Radio group with required constraint and 'undefined' as value, sends an error", function () {
|
|
46
168
|
var onChange = jest.fn();
|
|
47
169
|
var onBlur = jest.fn();
|
|
48
170
|
|
|
49
|
-
var
|
|
50
|
-
label: "test-
|
|
51
|
-
options:
|
|
171
|
+
var _render5 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_RadioGroup["default"], {
|
|
172
|
+
label: "test-radioGroup-label",
|
|
173
|
+
options: options,
|
|
52
174
|
onChange: onChange,
|
|
53
175
|
onBlur: onBlur
|
|
54
176
|
})),
|
|
55
|
-
getByRole =
|
|
56
|
-
getAllByRole =
|
|
177
|
+
getByRole = _render5.getByRole,
|
|
178
|
+
getAllByRole = _render5.getAllByRole;
|
|
57
179
|
|
|
58
180
|
var radioGroup = getByRole("radiogroup");
|
|
59
181
|
expect(radioGroup.getAttribute("aria-required")).toBe("true");
|
|
60
182
|
|
|
61
|
-
_react2.fireEvent.focus(radioGroup);
|
|
62
|
-
|
|
63
183
|
_react2.fireEvent.blur(radioGroup);
|
|
64
184
|
|
|
65
185
|
expect(onBlur).toHaveBeenCalled();
|
|
@@ -74,8 +194,6 @@ describe("Radio Group component tests", function () {
|
|
|
74
194
|
expect(onChange).toHaveBeenCalled();
|
|
75
195
|
expect(onChange).toHaveBeenCalledWith("1");
|
|
76
196
|
|
|
77
|
-
_react2.fireEvent.focus(radioGroup);
|
|
78
|
-
|
|
79
197
|
_react2.fireEvent.blur(radioGroup);
|
|
80
198
|
|
|
81
199
|
expect(onBlur).toHaveBeenCalled();
|
|
@@ -83,25 +201,23 @@ describe("Radio Group component tests", function () {
|
|
|
83
201
|
value: "1"
|
|
84
202
|
});
|
|
85
203
|
});
|
|
86
|
-
test("
|
|
204
|
+
test("Radio group with required constraint and empty string as value, sends an error", function () {
|
|
87
205
|
var onChange = jest.fn();
|
|
88
206
|
var onBlur = jest.fn();
|
|
89
207
|
|
|
90
|
-
var
|
|
91
|
-
label: "test-
|
|
208
|
+
var _render6 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_RadioGroup["default"], {
|
|
209
|
+
label: "test-radioGroup-label",
|
|
92
210
|
value: "",
|
|
93
|
-
options:
|
|
211
|
+
options: options,
|
|
94
212
|
onChange: onChange,
|
|
95
213
|
onBlur: onBlur
|
|
96
214
|
})),
|
|
97
|
-
getByRole =
|
|
98
|
-
getAllByRole =
|
|
215
|
+
getByRole = _render6.getByRole,
|
|
216
|
+
getAllByRole = _render6.getAllByRole;
|
|
99
217
|
|
|
100
218
|
var radioGroup = getByRole("radiogroup");
|
|
101
219
|
expect(radioGroup.getAttribute("aria-required")).toBe("true");
|
|
102
220
|
|
|
103
|
-
_react2.fireEvent.focus(radioGroup);
|
|
104
|
-
|
|
105
221
|
_react2.fireEvent.blur(radioGroup);
|
|
106
222
|
|
|
107
223
|
expect(onBlur).toHaveBeenCalled();
|
|
@@ -115,91 +231,190 @@ describe("Radio Group component tests", function () {
|
|
|
115
231
|
expect(onChange).toHaveBeenCalled();
|
|
116
232
|
expect(onChange).toHaveBeenCalledWith("1");
|
|
117
233
|
});
|
|
118
|
-
test("
|
|
234
|
+
test("The 'defaultValue' gives the radio group an initial value when it is uncontrolled", function () {
|
|
235
|
+
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
|
+
|
|
248
|
+
var radio = getAllByRole("radio")[1];
|
|
249
|
+
var submitInput = container.querySelector("input[name=\"test\"]");
|
|
250
|
+
expect(radio.tabIndex).toBe(0);
|
|
251
|
+
expect(radio.getAttribute("aria-checked")).toBe("true");
|
|
252
|
+
expect(submitInput.value).toBe("2");
|
|
253
|
+
});
|
|
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 () {
|
|
119
255
|
var onChange = jest.fn();
|
|
120
256
|
var onBlur = jest.fn();
|
|
121
257
|
|
|
122
|
-
var
|
|
258
|
+
var _render8 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_RadioGroup["default"], {
|
|
259
|
+
name: "test",
|
|
123
260
|
label: "test-radio-group-label",
|
|
124
261
|
helperText: "test-radio-group-helper-text",
|
|
125
|
-
options:
|
|
262
|
+
options: options,
|
|
126
263
|
onChange: onChange,
|
|
127
264
|
onBlur: onBlur,
|
|
128
|
-
optional: true
|
|
265
|
+
optional: true,
|
|
266
|
+
optionalItemLabel: "No selection"
|
|
129
267
|
})),
|
|
130
|
-
getByRole =
|
|
268
|
+
getByRole = _render8.getByRole,
|
|
269
|
+
getByText = _render8.getByText,
|
|
270
|
+
container = _render8.container;
|
|
131
271
|
|
|
132
272
|
var radioGroup = getByRole("radiogroup");
|
|
133
273
|
expect(radioGroup.getAttribute("aria-required")).toBe("false");
|
|
134
274
|
|
|
135
|
-
_react2.fireEvent.focus(radioGroup);
|
|
136
|
-
|
|
137
275
|
_react2.fireEvent.blur(radioGroup);
|
|
138
276
|
|
|
139
277
|
expect(onBlur).toHaveBeenCalled();
|
|
140
278
|
expect(onBlur).toHaveBeenCalledWith({});
|
|
141
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("");
|
|
142
288
|
});
|
|
143
|
-
test("
|
|
289
|
+
test("Controlled radio group", function () {
|
|
144
290
|
var onChange = jest.fn();
|
|
291
|
+
var onBlur = jest.fn();
|
|
145
292
|
|
|
146
|
-
var
|
|
293
|
+
var _render9 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_RadioGroup["default"], {
|
|
294
|
+
name: "test",
|
|
295
|
+
value: "2",
|
|
147
296
|
label: "test-radio-group-label",
|
|
148
297
|
helperText: "test-radio-group-helper-text",
|
|
149
|
-
options:
|
|
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,
|
|
150
333
|
onChange: onChange
|
|
151
334
|
})),
|
|
152
|
-
getByText =
|
|
153
|
-
getAllByRole =
|
|
335
|
+
getByText = _render10.getByText,
|
|
336
|
+
getAllByRole = _render10.getAllByRole,
|
|
337
|
+
container = _render10.container;
|
|
154
338
|
|
|
155
|
-
var
|
|
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);
|
|
156
343
|
|
|
157
|
-
_userEvent["default"].click(
|
|
344
|
+
_userEvent["default"].click(radioLabel);
|
|
158
345
|
|
|
159
346
|
expect(onChange).toHaveBeenCalled();
|
|
160
|
-
expect(onChange).toHaveBeenCalledWith("
|
|
161
|
-
expect(
|
|
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");
|
|
162
352
|
});
|
|
163
|
-
test("Select an option
|
|
353
|
+
test("Select an option by clicking on its radio input", function () {
|
|
164
354
|
var onChange = jest.fn();
|
|
165
355
|
|
|
166
|
-
var
|
|
356
|
+
var _render11 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_RadioGroup["default"], {
|
|
357
|
+
name: "test",
|
|
167
358
|
label: "test-radio-group-label",
|
|
168
359
|
helperText: "test-radio-group-helper-text",
|
|
169
|
-
options:
|
|
360
|
+
options: options,
|
|
170
361
|
onChange: onChange
|
|
171
362
|
})),
|
|
172
|
-
getAllByRole =
|
|
363
|
+
getAllByRole = _render11.getAllByRole,
|
|
364
|
+
container = _render11.container;
|
|
173
365
|
|
|
174
|
-
var
|
|
366
|
+
var checkedRadio = getAllByRole("radio")[6];
|
|
367
|
+
var submitInput = container.querySelector("input[name=\"test\"]");
|
|
368
|
+
expect(checkedRadio.tabIndex).toBe(-1);
|
|
175
369
|
|
|
176
|
-
_userEvent["default"].click(
|
|
370
|
+
_userEvent["default"].click(checkedRadio);
|
|
177
371
|
|
|
178
372
|
expect(onChange).toHaveBeenCalled();
|
|
179
373
|
expect(onChange).toHaveBeenCalledWith("7");
|
|
180
|
-
expect(
|
|
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");
|
|
181
378
|
});
|
|
182
|
-
test("Select an option
|
|
379
|
+
test("Select an option that is already checked does not call onChange event but gives the focus", function () {
|
|
183
380
|
var onChange = jest.fn();
|
|
184
381
|
|
|
185
|
-
var
|
|
382
|
+
var _render12 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_RadioGroup["default"], {
|
|
383
|
+
defaultValue: "2",
|
|
384
|
+
name: "test",
|
|
186
385
|
label: "test-radio-group-label",
|
|
187
386
|
helperText: "test-radio-group-helper-text",
|
|
188
|
-
options:
|
|
387
|
+
options: options,
|
|
189
388
|
onChange: onChange
|
|
190
389
|
})),
|
|
191
|
-
|
|
192
|
-
getAllByRole = _render6.getAllByRole;
|
|
390
|
+
getAllByRole = _render12.getAllByRole;
|
|
193
391
|
|
|
194
|
-
var
|
|
195
|
-
|
|
392
|
+
var checkedRadio = getAllByRole("radio")[1];
|
|
393
|
+
expect(checkedRadio.tabIndex).toBe(0);
|
|
394
|
+
expect(checkedRadio.getAttribute("aria-checked")).toBe("true");
|
|
196
395
|
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
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\"]");
|
|
203
418
|
|
|
204
419
|
_react2.fireEvent.keyDown(radioGroup, {
|
|
205
420
|
key: "Enter",
|
|
@@ -210,29 +425,27 @@ describe("Radio Group component tests", function () {
|
|
|
210
425
|
|
|
211
426
|
expect(onChange).toHaveBeenCalled();
|
|
212
427
|
expect(onChange).toHaveBeenCalledWith("1");
|
|
213
|
-
expect(
|
|
428
|
+
expect(checkedRadio.getAttribute("aria-checked")).toBe("true");
|
|
429
|
+
expect(checkedRadio.tabIndex).toBe(0);
|
|
430
|
+
expect(submitInput.value).toBe("1");
|
|
214
431
|
});
|
|
215
|
-
test("
|
|
432
|
+
test("The 'space' key checks the current focused option if anyone is checked", function () {
|
|
216
433
|
var onChange = jest.fn();
|
|
217
434
|
|
|
218
|
-
var
|
|
435
|
+
var _render14 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_RadioGroup["default"], {
|
|
436
|
+
name: "test",
|
|
219
437
|
label: "test-radio-group-label",
|
|
220
438
|
helperText: "test-radio-group-helper-text",
|
|
221
|
-
options:
|
|
439
|
+
options: options,
|
|
222
440
|
onChange: onChange
|
|
223
441
|
})),
|
|
224
|
-
getByRole =
|
|
225
|
-
getAllByRole =
|
|
442
|
+
getByRole = _render14.getByRole,
|
|
443
|
+
getAllByRole = _render14.getAllByRole,
|
|
444
|
+
container = _render14.container;
|
|
226
445
|
|
|
227
446
|
var radioGroup = getByRole("radiogroup");
|
|
228
|
-
var
|
|
229
|
-
|
|
230
|
-
_react2.fireEvent.keyDown(radioGroup, {
|
|
231
|
-
key: "Tab",
|
|
232
|
-
code: "Tab",
|
|
233
|
-
keyCode: 9,
|
|
234
|
-
charCode: 9
|
|
235
|
-
});
|
|
447
|
+
var checkedRadio = getAllByRole("radio")[0];
|
|
448
|
+
var submitInput = container.querySelector("input[name=\"test\"]");
|
|
236
449
|
|
|
237
450
|
_react2.fireEvent.keyDown(radioGroup, {
|
|
238
451
|
key: "Space",
|
|
@@ -243,6 +456,239 @@ describe("Radio Group component tests", function () {
|
|
|
243
456
|
|
|
244
457
|
expect(onChange).toHaveBeenCalled();
|
|
245
458
|
expect(onChange).toHaveBeenCalledWith("1");
|
|
246
|
-
expect(
|
|
459
|
+
expect(checkedRadio.getAttribute("aria-checked")).toBe("true");
|
|
460
|
+
expect(checkedRadio.tabIndex).toBe(0);
|
|
461
|
+
expect(submitInput.value).toBe("1");
|
|
462
|
+
});
|
|
463
|
+
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
|
+
var onChange = jest.fn();
|
|
465
|
+
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
|
+
|
|
479
|
+
var radioGroup = getByRole("radiogroup");
|
|
480
|
+
var radios = getAllByRole("radio");
|
|
481
|
+
var submitInput = container.querySelector("input[name=\"test\"]");
|
|
482
|
+
var checkedRadio = getAllByRole("radio")[0];
|
|
483
|
+
|
|
484
|
+
_userEvent["default"].tab();
|
|
485
|
+
|
|
486
|
+
expect(onChange).not.toHaveBeenCalled();
|
|
487
|
+
expect(submitInput.value).toBe("");
|
|
488
|
+
expect(checkedRadio.tabIndex).toBe(0);
|
|
489
|
+
expect(checkedRadio.getAttribute("aria-checked")).toBe("false");
|
|
490
|
+
expect(document.activeElement).toEqual(checkedRadio);
|
|
491
|
+
|
|
492
|
+
_react2.fireEvent.keyDown(radioGroup, {
|
|
493
|
+
key: "ArrowRight",
|
|
494
|
+
code: "ArrowRight",
|
|
495
|
+
keyCode: 39,
|
|
496
|
+
charCode: 39
|
|
497
|
+
});
|
|
498
|
+
|
|
499
|
+
expect(onBlur).not.toHaveBeenCalled();
|
|
500
|
+
expect(onChange).toHaveBeenCalledTimes(1);
|
|
501
|
+
expect(radios[1].getAttribute("aria-checked")).toBe("true");
|
|
502
|
+
expect(document.activeElement).toEqual(radios[1]);
|
|
503
|
+
expect(radios[1].tabIndex).toBe(0);
|
|
504
|
+
expect(submitInput.value).toBe("2");
|
|
505
|
+
});
|
|
506
|
+
test("The 'arrowDown' and 'arrowRight' keys move the selection to the next radio", function () {
|
|
507
|
+
var onChange = jest.fn();
|
|
508
|
+
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
|
+
|
|
523
|
+
var radioGroup = getByRole("radiogroup");
|
|
524
|
+
var radios = getAllByRole("radio");
|
|
525
|
+
var submitInput = container.querySelector("input[name=\"test\"]");
|
|
526
|
+
|
|
527
|
+
_react2.fireEvent.keyDown(radioGroup, {
|
|
528
|
+
key: "ArrowDown",
|
|
529
|
+
code: "ArrowDown",
|
|
530
|
+
keyCode: 40,
|
|
531
|
+
charCode: 40
|
|
532
|
+
});
|
|
533
|
+
|
|
534
|
+
expect(onBlur).not.toHaveBeenCalled();
|
|
535
|
+
expect(onChange).toHaveBeenCalledTimes(1);
|
|
536
|
+
expect(radios[8].getAttribute("aria-checked")).toBe("true");
|
|
537
|
+
expect(document.activeElement).toEqual(radios[8]);
|
|
538
|
+
expect(radios[8].tabIndex).toBe(0);
|
|
539
|
+
expect(submitInput.value).toBe("9");
|
|
540
|
+
|
|
541
|
+
_react2.fireEvent.keyDown(radioGroup, {
|
|
542
|
+
key: "ArrowRight",
|
|
543
|
+
code: "ArrowRight",
|
|
544
|
+
keyCode: 39,
|
|
545
|
+
charCode: 39
|
|
546
|
+
});
|
|
547
|
+
|
|
548
|
+
expect(onBlur).not.toHaveBeenCalled();
|
|
549
|
+
expect(onChange).toHaveBeenCalledTimes(2);
|
|
550
|
+
expect(radios[0].getAttribute("aria-checked")).toBe("true");
|
|
551
|
+
expect(document.activeElement).toEqual(radios[0]);
|
|
552
|
+
expect(radios[0].tabIndex).toBe(0);
|
|
553
|
+
expect(submitInput.value).toBe("1");
|
|
554
|
+
});
|
|
555
|
+
test("The 'arrowUp' and 'arrowLeft' keys move the selection to the previous radio", function () {
|
|
556
|
+
var onChange = jest.fn();
|
|
557
|
+
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
|
+
|
|
572
|
+
var radioGroup = getByRole("radiogroup");
|
|
573
|
+
var radios = getAllByRole("radio");
|
|
574
|
+
var submitInput = container.querySelector("input[name=\"test\"]");
|
|
575
|
+
|
|
576
|
+
_react2.fireEvent.keyDown(radioGroup, {
|
|
577
|
+
key: "ArrowUp",
|
|
578
|
+
code: "ArrowUp",
|
|
579
|
+
keyCode: 38,
|
|
580
|
+
charCode: 38
|
|
581
|
+
});
|
|
582
|
+
|
|
583
|
+
expect(onBlur).not.toHaveBeenCalled();
|
|
584
|
+
expect(onChange).toHaveBeenCalledTimes(1);
|
|
585
|
+
expect(radios[0].getAttribute("aria-checked")).toBe("true");
|
|
586
|
+
expect(document.activeElement).toEqual(radios[0]);
|
|
587
|
+
expect(radios[0].tabIndex).toBe(0);
|
|
588
|
+
expect(submitInput.value).toBe("1");
|
|
589
|
+
|
|
590
|
+
_react2.fireEvent.keyDown(radioGroup, {
|
|
591
|
+
key: "ArrowLeft",
|
|
592
|
+
code: "ArrowLeft",
|
|
593
|
+
keyCode: 37,
|
|
594
|
+
charCode: 37
|
|
595
|
+
});
|
|
596
|
+
|
|
597
|
+
expect(onBlur).not.toHaveBeenCalled();
|
|
598
|
+
expect(onChange).toHaveBeenCalledTimes(2);
|
|
599
|
+
expect(radios[8].getAttribute("aria-checked")).toBe("true");
|
|
600
|
+
expect(document.activeElement).toEqual(radios[8]);
|
|
601
|
+
expect(radios[8].tabIndex).toBe(0);
|
|
602
|
+
expect(submitInput.value).toBe("9");
|
|
603
|
+
});
|
|
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("");
|
|
247
693
|
});
|
|
248
694
|
});
|