@dxc-technology/halstack-react 7.0.0 → 8.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.
Files changed (44) hide show
  1. package/HalstackContext.js +7 -8
  2. package/checkbox/Checkbox.d.ts +2 -2
  3. package/checkbox/Checkbox.js +16 -15
  4. package/checkbox/Checkbox.stories.tsx +79 -59
  5. package/checkbox/types.d.ts +4 -0
  6. package/common/variables.js +14 -10
  7. package/date-input/Calendar.d.ts +4 -0
  8. package/date-input/Calendar.js +258 -0
  9. package/date-input/DateInput.js +77 -222
  10. package/date-input/DateInput.stories.tsx +30 -17
  11. package/date-input/DateInput.test.js +411 -138
  12. package/date-input/DatePicker.d.ts +4 -0
  13. package/date-input/DatePicker.js +160 -0
  14. package/date-input/YearPicker.d.ts +4 -0
  15. package/date-input/YearPicker.js +115 -0
  16. package/date-input/types.d.ts +53 -0
  17. package/dropdown/Dropdown.js +32 -29
  18. package/dropdown/Dropdown.test.js +17 -22
  19. package/file-input/FileInput.d.ts +2 -2
  20. package/file-input/FileInput.js +166 -216
  21. package/file-input/FileInput.stories.tsx +38 -10
  22. package/file-input/FileInput.test.js +12 -12
  23. package/file-input/FileItem.d.ts +4 -14
  24. package/file-input/FileItem.js +38 -63
  25. package/file-input/types.d.ts +17 -0
  26. package/link/Link.js +1 -1
  27. package/number-input/NumberInput.test.js +5 -6
  28. package/package.json +7 -12
  29. package/resultsetTable/Icons.d.ts +7 -0
  30. package/resultsetTable/Icons.js +51 -0
  31. package/resultsetTable/ResultsetTable.js +48 -105
  32. package/resultsetTable/ResultsetTable.stories.tsx +50 -25
  33. package/resultsetTable/ResultsetTable.test.js +23 -41
  34. package/resultsetTable/types.d.ts +2 -2
  35. package/select/Select.stories.tsx +2 -5
  36. package/slider/Slider.d.ts +2 -2
  37. package/slider/Slider.js +5 -4
  38. package/slider/types.d.ts +4 -0
  39. package/switch/Switch.d.ts +3 -3
  40. package/switch/Switch.js +4 -3
  41. package/switch/types.d.ts +6 -1
  42. package/table/Table.test.js +1 -1
  43. package/text-input/TextInput.test.js +469 -616
  44. package/common/RequiredComponent.js +0 -32
@@ -2,14 +2,62 @@
2
2
 
3
3
  var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
4
 
5
+ var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
6
+
7
+ var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
8
+
9
+ var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
10
+
11
+ var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
12
+
5
13
  var _react = _interopRequireDefault(require("react"));
6
14
 
7
15
  var _react2 = require("@testing-library/react");
8
16
 
9
17
  var _userEvent = _interopRequireDefault(require("@testing-library/user-event"));
10
18
 
11
- var _DateInput = _interopRequireDefault(require("./DateInput"));
12
-
19
+ var _dayjs = _interopRequireDefault(require("dayjs"));
20
+
21
+ var _DateInput = _interopRequireDefault(require("./DateInput.tsx"));
22
+
23
+ // Mocking DOMRect for Radix Primitive Popover
24
+ global.globalThis = global;
25
+
26
+ global.ResizeObserver = /*#__PURE__*/function () {
27
+ function ResizeObserver(cb) {
28
+ (0, _classCallCheck2["default"])(this, ResizeObserver);
29
+ this.cb = cb;
30
+ }
31
+
32
+ (0, _createClass2["default"])(ResizeObserver, [{
33
+ key: "observe",
34
+ value: function observe() {
35
+ this.cb([{
36
+ borderBoxSize: {
37
+ inlineSize: 0,
38
+ blockSize: 0
39
+ }
40
+ }]);
41
+ }
42
+ }, {
43
+ key: "unobserve",
44
+ value: function unobserve() {}
45
+ }]);
46
+ return ResizeObserver;
47
+ }();
48
+
49
+ global.DOMRect = {
50
+ fromRect: function fromRect() {
51
+ return {
52
+ top: 0,
53
+ left: 0,
54
+ bottom: 0,
55
+ right: 0,
56
+ width: 0,
57
+ height: 0
58
+ };
59
+ }
60
+ };
13
61
  describe("DateInput component tests", function () {
14
62
  test("Renders with correct label, helper text, optional, placeholder and clearable action", function () {
15
63
  var _render = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_DateInput["default"], {
@@ -55,115 +103,161 @@ describe("DateInput component tests", function () {
55
103
  getByRole = _render3.getByRole;
56
104
 
57
105
  var input = getByRole("textbox");
58
- var calendarAction = getByRole("button");
59
- var d = new Date(2015, 9, 21);
60
- var options = {
61
- weekday: "short",
62
- month: "short",
63
- day: "numeric"
64
- };
106
+ var calendarAction = getByRole("combobox");
65
107
  expect(input.value).toBe("21-10-2015");
66
108
 
67
109
  _userEvent["default"].click(calendarAction);
68
110
 
69
- expect(getByText(d.toLocaleString("en-US", options))).toBeTruthy();
70
- });
71
- test("Renders with correct format: user typed date but it's invalid, onBlur error", function () {
72
- var onBlur = jest.fn(function (_ref) {
73
- var value = _ref.value,
74
- error = _ref.error;
75
- expect(value).toBe("10/90/2010");
76
- expect(error).toBe("Invalid date.");
77
- });
78
-
79
- var _render4 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_DateInput["default"], {
80
- label: "With format MM/dd/yyyy",
81
- format: "MM/dd/yyyy",
82
- onBlur: onBlur
83
- })),
84
- getByRole = _render4.getByRole;
85
-
86
- var input = getByRole("textbox");
87
-
88
- _userEvent["default"].type(input, "10/90/2010");
89
-
90
- _react2.fireEvent.blur(input);
91
- });
92
- test("Renders with correct format: user typed date but it's invalid, onChange error", function () {
93
- var onChange = jest.fn();
94
-
95
- var _render5 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_DateInput["default"], {
96
- label: "With format MM/dd/yyyy",
97
- format: "MM/dd/yyyy",
98
- onChange: onChange
99
- })),
100
- getByRole = _render5.getByRole;
101
-
102
- var input = getByRole("textbox");
103
-
104
- _userEvent["default"].type(input, "10/90/2010");
105
-
106
- expect(onChange).toHaveBeenCalledTimes(10);
107
- expect(onChange).toHaveBeenCalledWith({
108
- value: "10/90/2010",
109
- error: "Invalid date."
110
- });
111
+ expect(getByText("21").getAttribute("aria-selected")).toBeTruthy();
112
+ expect(getByText("October 2015")).toBeTruthy();
111
113
  });
114
+ test("Renders with correct format: user typed date but it's invalid, onBlur error", /*#__PURE__*/(0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee() {
115
+ var onBlur, _render4, getByRole, input;
116
+
117
+ return _regenerator["default"].wrap(function _callee$(_context) {
118
+ while (1) {
119
+ switch (_context.prev = _context.next) {
120
+ case 0:
121
+ onBlur = jest.fn(function (_ref2) {
122
+ var value = _ref2.value,
123
+ error = _ref2.error;
124
+ expect(value).toBe("10/90/2010");
125
+ expect(error).toBe("Invalid date.");
126
+ });
127
+ _render4 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_DateInput["default"], {
128
+ label: "With format MM/dd/yyyy",
129
+ format: "MM/dd/yyyy",
130
+ onBlur: onBlur
131
+ })), getByRole = _render4.getByRole;
132
+ input = getByRole("textbox");
133
+
134
+ _userEvent["default"].click(input);
135
+
136
+ _context.next = 6;
137
+ return _userEvent["default"].keyboard("10");
138
+
139
+ case 6:
140
+ _context.next = 8;
141
+ return _userEvent["default"].keyboard("/");
142
+
143
+ case 8:
144
+ _context.next = 10;
145
+ return _userEvent["default"].keyboard("90");
146
+
147
+ case 10:
148
+ _context.next = 12;
149
+ return _userEvent["default"].keyboard("/");
150
+
151
+ case 12:
152
+ _context.next = 14;
153
+ return _userEvent["default"].keyboard("2010");
154
+
155
+ case 14:
156
+ _react2.fireEvent.blur(input);
157
+
158
+ case 15:
159
+ case "end":
160
+ return _context.stop();
161
+ }
162
+ }
163
+ }, _callee);
164
+ })));
165
+ test("Renders with correct format: user typed date but it's invalid, onChange error", /*#__PURE__*/(0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee2() {
166
+ var onChange, _render5, getByRole, input;
167
+
168
+ return _regenerator["default"].wrap(function _callee2$(_context2) {
169
+ while (1) {
170
+ switch (_context2.prev = _context2.next) {
171
+ case 0:
172
+ onChange = jest.fn();
173
+ _render5 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_DateInput["default"], {
174
+ label: "With format MM/dd/yyyy",
175
+ format: "MM/dd/yyyy",
176
+ onChange: onChange
177
+ })), getByRole = _render5.getByRole;
178
+ input = getByRole("textbox");
179
+
180
+ _userEvent["default"].click(input);
181
+
182
+ _context2.next = 6;
183
+ return _userEvent["default"].keyboard("10");
184
+
185
+ case 6:
186
+ _context2.next = 8;
187
+ return _userEvent["default"].keyboard("/");
188
+
189
+ case 8:
190
+ _context2.next = 10;
191
+ return _userEvent["default"].keyboard("90");
192
+
193
+ case 10:
194
+ _context2.next = 12;
195
+ return _userEvent["default"].keyboard("/");
196
+
197
+ case 12:
198
+ _context2.next = 14;
199
+ return _userEvent["default"].keyboard("2010");
200
+
201
+ case 14:
202
+ expect(onChange).toHaveBeenCalledTimes(10);
203
+ expect(onChange).toHaveBeenCalledWith({
204
+ value: "10/90/2010",
205
+ error: "Invalid date."
206
+ });
207
+
208
+ case 16:
209
+ case "end":
210
+ return _context2.stop();
211
+ }
212
+ }
213
+ }, _callee2);
214
+ })));
112
215
  test("Calendar renders with correct date: today's date", function () {
113
216
  var _render6 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_DateInput["default"], null)),
114
217
  getByText = _render6.getByText,
115
- getByRole = _render6.getByRole;
218
+ getByRole = _render6.getByRole,
219
+ getAllByText = _render6.getAllByText;
116
220
 
117
- var calendarAction = getByRole("button");
118
- var d = new Date();
119
- var options = {
120
- weekday: "short",
121
- month: "short",
122
- day: "numeric"
123
- };
221
+ var calendarAction = getByRole("combobox");
222
+ var d = (0, _dayjs["default"])();
124
223
 
125
224
  _userEvent["default"].click(calendarAction);
126
225
 
127
- expect(getByText(d.toLocaleString("en-US", options))).toBeTruthy();
226
+ expect(getAllByText(d.get("date"))[0].getAttribute("aria-selected")).toBeTruthy();
227
+ expect(getByText(d.format("MMMM YYYY"))).toBeTruthy();
128
228
  });
129
229
  test("Calendar renders with correct date: value prop", function () {
130
230
  var _render7 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_DateInput["default"], {
131
231
  value: "20-10-2019"
132
232
  })),
133
233
  getByText = _render7.getByText,
134
- getByRole = _render7.getByRole;
234
+ getByRole = _render7.getByRole,
235
+ getAllByText = _render7.getAllByText;
135
236
 
136
- var calendarAction = getByRole("button");
137
- var d = new Date(2019, 9, 20);
138
- var options = {
139
- weekday: "short",
140
- month: "short",
141
- day: "numeric"
142
- };
237
+ var calendarAction = getByRole("combobox");
238
+ var d = (0, _dayjs["default"])("2019-10-20");
143
239
 
144
240
  _userEvent["default"].click(calendarAction);
145
241
 
146
- expect(getByText(d.toLocaleString("en-US", options))).toBeTruthy();
242
+ expect(getAllByText(d.get("date"))[0].getAttribute("aria-selected")).toBeTruthy();
243
+ expect(getByText(d.format("MMMM YYYY"))).toBeTruthy();
147
244
  });
148
245
  test("Calendar renders with correct date: user typed value", function () {
149
246
  var _render8 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_DateInput["default"], null)),
150
247
  getByText = _render8.getByText,
151
- getByRole = _render8.getByRole;
248
+ getByRole = _render8.getByRole,
249
+ getAllByText = _render8.getAllByText;
152
250
 
153
- var calendarAction = getByRole("button");
154
- var d = new Date(2010, 0, 1);
155
- var options = {
156
- weekday: "short",
157
- month: "short",
158
- day: "numeric"
159
- };
251
+ var calendarAction = getByRole("combobox");
252
+ var d = (0, _dayjs["default"])("2010-1-1");
160
253
  var input = getByRole("textbox");
161
254
 
162
255
  _userEvent["default"].type(input, "01-01-2010");
163
256
 
164
257
  _userEvent["default"].click(calendarAction);
165
258
 
166
- expect(getByText(d.toLocaleString("en-US", options))).toBeTruthy();
259
+ expect(getAllByText(d.get("date"))[0].getAttribute("aria-selected")).toBeTruthy();
260
+ expect(getByText(d.format("MMMM YYYY"))).toBeTruthy();
167
261
  });
168
262
  test("Calendar renders with correct date: invalid date, renders with today's date", function () {
169
263
  var onBlur = jest.fn();
@@ -172,15 +266,11 @@ describe("DateInput component tests", function () {
172
266
  onBlur: onBlur
173
267
  })),
174
268
  getByText = _render9.getByText,
175
- getByRole = _render9.getByRole;
269
+ getByRole = _render9.getByRole,
270
+ getAllByText = _render9.getAllByText;
176
271
 
177
- var calendarAction = getByRole("button");
178
- var d = new Date();
179
- var options = {
180
- weekday: "short",
181
- month: "short",
182
- day: "numeric"
183
- };
272
+ var calendarAction = getByRole("combobox");
273
+ var d = (0, _dayjs["default"])();
184
274
  var input = getByRole("textbox");
185
275
 
186
276
  _userEvent["default"].type(input, "01-01-xxxx");
@@ -195,100 +285,267 @@ describe("DateInput component tests", function () {
195
285
 
196
286
  _userEvent["default"].click(calendarAction);
197
287
 
198
- expect(getByText(d.toLocaleString("en-US", options))).toBeTruthy();
288
+ expect(getAllByText(d.get("date"))[0].getAttribute("aria-selected")).toBeTruthy();
289
+ expect(getByText(d.format("MMMM YYYY"))).toBeTruthy();
199
290
  });
200
291
  test("Selecting a date from the calendar with an specific format", function () {
201
292
  var _render10 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_DateInput["default"], {
202
293
  label: "With format M-dd-yyyy",
203
294
  format: "M-dd-yyyy"
204
295
  })),
296
+ getAllByText = _render10.getAllByText,
205
297
  getByText = _render10.getByText,
206
298
  getByRole = _render10.getByRole;
207
299
 
208
300
  var input = getByRole("textbox");
209
- var calendarAction = getByRole("button");
301
+ var calendarAction = getByRole("combobox");
210
302
 
211
303
  _userEvent["default"].click(calendarAction);
212
304
 
213
- var dayButton = getByText("10").closest("button");
305
+ var dayButton = getAllByText("10")[0].closest("button");
214
306
 
215
307
  _react2.fireEvent.click(dayButton);
216
308
 
217
- var d = new Date();
218
- d.setDate(10);
219
- var options = {
220
- weekday: "short",
221
- month: "short",
222
- day: "numeric"
223
- };
224
- expect(getByText(d.toLocaleString("en-US", options))).toBeTruthy();
309
+ var d = (0, _dayjs["default"])();
310
+ d = d.set("date", 10);
311
+ expect(getAllByText(d.get("date"))[0].getAttribute("aria-selected")).toBeTruthy();
312
+ expect(getByText(d.format("MMMM YYYY"))).toBeTruthy();
225
313
 
226
314
  _react2.fireEvent.keyDown(document, {
227
- key: "Esc",
228
- code: "Esc",
315
+ key: "Escape",
316
+ code: "Escape",
229
317
  keyCode: 27,
230
318
  charCode: 27
231
319
  });
232
320
 
233
- expect(input.value).toBe("".concat(d.getMonth() + 1, "-10-").concat(d.getFullYear()));
321
+ expect(input.value).toBe(d.format("M-DD-YYYY"));
234
322
  });
235
- test("Selecting a date from the calendar (using keyboard presses)", function () {
236
- var _render11 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_DateInput["default"], null)),
323
+ test("Selecting a date from the calendar from another month", function () {
324
+ var _render11 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_DateInput["default"], {
325
+ format: "dd-mm-yyyy",
326
+ defaultValue: "10-08-2021"
327
+ })),
328
+ getAllByText = _render11.getAllByText,
329
+ getByText = _render11.getByText,
237
330
  getByRole = _render11.getByRole;
238
331
 
239
- var calendarAction = getByRole("button");
240
332
  var input = getByRole("textbox");
241
-
242
- _userEvent["default"].type(input, "01-01-2010");
333
+ var calendarAction = getByRole("combobox");
243
334
 
244
335
  _userEvent["default"].click(calendarAction);
245
336
 
337
+ var dayButton = getAllByText("31")[0].closest("button");
338
+
339
+ _react2.fireEvent.click(dayButton);
340
+
341
+ var d = (0, _dayjs["default"])("10-08-2021", "DD-MM-YYYY", true);
342
+ d = d.set("date", 31).set("month", 6);
343
+ expect(getAllByText(d.get("date"))[0].getAttribute("aria-selected")).toBeTruthy();
344
+ expect(getByText(d.format("MMMM YYYY"))).toBeTruthy();
345
+
246
346
  _react2.fireEvent.keyDown(document, {
247
- key: "ArrowRight",
248
- code: "ArrowRight",
249
- keyCode: 39,
250
- charCode: 39
347
+ key: "Escape",
348
+ code: "Escape",
349
+ keyCode: 27,
350
+ charCode: 27
251
351
  });
252
352
 
353
+ expect(input.value).toBe(d.format("DD-MM-YYYY"));
354
+ });
355
+ test("Selecting a year from the calendar year picker", function () {
356
+ var _render12 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_DateInput["default"], {
357
+ format: "dd-mm-yyyy",
358
+ defaultValue: "10-08-2021"
359
+ })),
360
+ getByText = _render12.getByText,
361
+ getByRole = _render12.getByRole;
362
+
363
+ var input = getByRole("textbox");
364
+ var calendarAction = getByRole("combobox");
365
+
366
+ _userEvent["default"].click(calendarAction);
367
+
368
+ var d = (0, _dayjs["default"])("10-08-2021", "DD-MM-YYYY", true);
369
+
370
+ _userEvent["default"].click(getByText(d.format("MMMM YYYY")));
371
+
372
+ expect(getByText("2024")).toBeTruthy();
373
+
374
+ _userEvent["default"].click(getByText("2024"));
375
+
376
+ _userEvent["default"].click(getByText(d.set("year", 2024).format("MMMM YYYY")));
377
+
253
378
  _react2.fireEvent.keyDown(document, {
254
- key: "ArrowRight",
255
- code: "ArrowRight",
256
- keyCode: 39,
257
- charCode: 39
379
+ key: "Escape",
380
+ code: "Escape",
381
+ keyCode: 27,
382
+ charCode: 27
258
383
  });
259
384
 
260
- _react2.fireEvent.keyDown(document, {
385
+ expect(input.value).toBe(d.format("DD-MM-YYYY"));
386
+ });
387
+ test("Selecting a date from the calendar (using keyboard presses)", function () {
388
+ var _render13 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_DateInput["default"], null)),
389
+ getByRole = _render13.getByRole,
390
+ getAllByText = _render13.getAllByText,
391
+ getByText = _render13.getByText;
392
+
393
+ var calendarAction = getByRole("combobox");
394
+ var input = getByRole("textbox");
395
+
396
+ _userEvent["default"].type(input, "01-01-2010");
397
+
398
+ expect(input.value).toBe("01-01-2010");
399
+
400
+ _userEvent["default"].click(calendarAction);
401
+
402
+ expect(document.activeElement === getAllByText("1")[0].closest("button")).toBeTruthy();
403
+
404
+ _react2.fireEvent.keyDown(getAllByText("1")[0].closest("button"), {
261
405
  key: "ArrowRight",
262
406
  code: "ArrowRight",
263
407
  keyCode: 39,
264
408
  charCode: 39
265
409
  });
266
410
 
267
- _react2.fireEvent.keyDown(document, {
268
- key: "ArrowLeft",
269
- code: "ArrowLeft",
270
- keyCode: 37,
271
- charCode: 37
411
+ expect(document.activeElement === getAllByText("2")[0].closest("button")).toBeTruthy();
412
+
413
+ _react2.fireEvent.keyDown(getAllByText("2")[0].closest("button"), {
414
+ key: "PageUp",
415
+ code: "PageUp",
416
+ keyCode: 33,
417
+ charCode: 33
418
+ });
419
+
420
+ expect(document.activeElement === getAllByText("2")[0].closest("button")).toBeTruthy();
421
+ expect(getByText("December 2009")).toBeTruthy();
422
+
423
+ _react2.fireEvent.keyDown(getAllByText("2")[0].closest("button"), {
424
+ key: "PageDown",
425
+ code: "PageDown",
426
+ keyCode: 34,
427
+ charCode: 34
428
+ });
429
+
430
+ expect(document.activeElement === getAllByText("2")[0].closest("button")).toBeTruthy();
431
+ expect(getByText("January 2010")).toBeTruthy();
432
+
433
+ _react2.fireEvent.keyDown(getAllByText("2")[0].closest("button"), {
434
+ key: "PageDown",
435
+ code: "PageDown",
436
+ keyCode: 34,
437
+ charCode: 34,
438
+ shiftKey: true
439
+ });
440
+
441
+ expect(getByText("January 2011")).toBeTruthy();
442
+
443
+ _react2.fireEvent.keyDown(getAllByText("2")[0].closest("button"), {
444
+ key: "PageUp",
445
+ code: "PageUp",
446
+ keyCode: 33,
447
+ charCode: 33,
448
+ shiftKey: true
449
+ });
450
+
451
+ expect(getByText("January 2010")).toBeTruthy();
452
+ expect(document.activeElement === getAllByText("2")[0].closest("button")).toBeTruthy();
453
+
454
+ _react2.fireEvent.click(getAllByText("2")[0].closest("button"), {
455
+ key: " ",
456
+ code: "Space",
457
+ keyCode: 32,
458
+ charCode: 32
272
459
  });
273
460
 
461
+ expect(getAllByText("2")[0].closest("button").getAttribute("aria-selected")).toBeTruthy();
462
+
274
463
  _react2.fireEvent.keyDown(document, {
275
- key: "Esc",
276
- code: "Esc",
464
+ key: "Escape",
465
+ code: "Escape",
277
466
  keyCode: 27,
278
467
  charCode: 27
279
468
  });
280
469
 
281
- expect(input.value).toBe("03-01-2010");
470
+ expect(input.value).toBe("02-01-2010");
471
+ });
472
+ test("Selecting a date from the calendar (using keyboard presses) part II", function () {
473
+ var _render14 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_DateInput["default"], null)),
474
+ getByRole = _render14.getByRole,
475
+ getAllByText = _render14.getAllByText;
476
+
477
+ var calendarAction = getByRole("combobox");
478
+ var input = getByRole("textbox");
479
+
480
+ _userEvent["default"].type(input, "01-01-2010");
481
+
482
+ expect(input.value).toBe("01-01-2010");
483
+
484
+ _userEvent["default"].click(calendarAction);
485
+
486
+ expect(document.activeElement === getAllByText("1")[0].closest("button")).toBeTruthy();
487
+
488
+ _react2.fireEvent.keyDown(getAllByText("1")[0].closest("button"), {
489
+ key: "ArrowDown",
490
+ code: "ArrowDown",
491
+ keyCode: 40,
492
+ charCode: 40
493
+ });
494
+
495
+ expect(document.activeElement === getAllByText("8")[0].closest("button")).toBeTruthy();
496
+
497
+ _react2.fireEvent.keyDown(getAllByText("8")[0].closest("button"), {
498
+ key: "ArrowDown",
499
+ code: "ArrowDown",
500
+ keyCode: 40,
501
+ charCode: 40
502
+ });
503
+
504
+ expect(document.activeElement === getAllByText("15")[0].closest("button")).toBeTruthy();
505
+
506
+ _react2.fireEvent.keyDown(getAllByText("15")[0].closest("button"), {
507
+ key: "ArrowUp",
508
+ code: "ArrowUp",
509
+ keyCode: 38,
510
+ charCode: 38
511
+ });
512
+
513
+ expect(document.activeElement === getAllByText("8")[0].closest("button")).toBeTruthy();
514
+
515
+ _react2.fireEvent.keyDown(getAllByText("8")[0].closest("button"), {
516
+ key: "End",
517
+ code: "End",
518
+ keyCode: 35,
519
+ charCode: 35
520
+ });
521
+
522
+ expect(document.activeElement === getAllByText("10")[0].closest("button")).toBeTruthy();
523
+
524
+ _react2.fireEvent.keyDown(getAllByText("10")[0].closest("button"), {
525
+ key: "Home",
526
+ code: "Home",
527
+ keyCode: 36,
528
+ charCode: 36
529
+ });
530
+
531
+ _react2.fireEvent.keyDown(getAllByText("10")[0].closest("button"), {
532
+ key: " ",
533
+ code: "Space",
534
+ keyCode: 32,
535
+ charCode: 32
536
+ });
537
+
538
+ expect(input.value).toBe("10-01-2010");
282
539
  });
283
540
  test("onChange & onBlur functions are called correctly", function () {
284
541
  var onBlur = jest.fn();
285
542
  var onChange = jest.fn();
286
543
 
287
- var _render12 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_DateInput["default"], {
544
+ var _render15 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_DateInput["default"], {
288
545
  onChange: onChange,
289
546
  onBlur: onBlur
290
547
  })),
291
- getByRole = _render12.getByRole;
548
+ getByRole = _render15.getByRole;
292
549
 
293
550
  var input = getByRole("textbox");
294
551
  var d = new Date(2011, 9, 10);
@@ -314,11 +571,11 @@ describe("DateInput component tests", function () {
314
571
  var onBlur = jest.fn();
315
572
  var onChange = jest.fn();
316
573
 
317
- var _render13 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_DateInput["default"], {
574
+ var _render16 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_DateInput["default"], {
318
575
  onChange: onChange,
319
576
  onBlur: onBlur
320
577
  })),
321
- getByRole = _render13.getByRole;
578
+ getByRole = _render16.getByRole;
322
579
 
323
580
  var input = getByRole("textbox");
324
581
 
@@ -342,10 +599,10 @@ describe("DateInput component tests", function () {
342
599
  test("onBlur function removes the error when it is fixed", function () {
343
600
  var onBlur = jest.fn();
344
601
 
345
- var _render14 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_DateInput["default"], {
602
+ var _render17 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_DateInput["default"], {
346
603
  onBlur: onBlur
347
604
  })),
348
- getByRole = _render14.getByRole;
605
+ getByRole = _render17.getByRole;
349
606
 
350
607
  var input = getByRole("textbox");
351
608
  var d = new Date(2002, 1, 20);
@@ -379,11 +636,11 @@ describe("DateInput component tests", function () {
379
636
  test("onBlur function removes the error when the input is empty", function () {
380
637
  var onBlur = jest.fn();
381
638
 
382
- var _render15 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_DateInput["default"], {
639
+ var _render18 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_DateInput["default"], {
383
640
  onBlur: onBlur,
384
641
  optional: true
385
642
  })),
386
- getByRole = _render15.getByRole;
643
+ getByRole = _render18.getByRole;
387
644
 
388
645
  var input = getByRole("textbox");
389
646
 
@@ -412,11 +669,11 @@ describe("DateInput component tests", function () {
412
669
  var onBlur = jest.fn();
413
670
  var onChange = jest.fn();
414
671
 
415
- var _render16 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_DateInput["default"], {
672
+ var _render19 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_DateInput["default"], {
416
673
  onBlur: onBlur,
417
674
  onChange: onChange
418
675
  })),
419
- getByRole = _render16.getByRole;
676
+ getByRole = _render19.getByRole;
420
677
 
421
678
  var date = getByRole("textbox");
422
679
 
@@ -440,11 +697,11 @@ describe("DateInput component tests", function () {
440
697
  });
441
698
  });
442
699
  test("Disabled date input (calendar action must be shown but not clickable)", function () {
443
- var _render17 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_DateInput["default"], {
700
+ var _render20 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_DateInput["default"], {
444
701
  disabled: true
445
702
  })),
446
- getByRole = _render17.getByRole,
447
- queryByText = _render17.queryByText;
703
+ getByRole = _render20.getByRole,
704
+ queryByText = _render20.queryByText;
448
705
 
449
706
  var calendarAction = getByRole("button");
450
707
  var d = new Date();
@@ -460,20 +717,36 @@ describe("DateInput component tests", function () {
460
717
  expect(queryByText(d.toLocaleString("en-US", options))).toBeFalsy();
461
718
  });
462
719
  test("Input has correct accesibility attributes", function () {
463
- var _render18 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_DateInput["default"], {
720
+ var _render21 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_DateInput["default"], {
464
721
  label: "Date input label"
465
722
  })),
466
- getByRole = _render18.getByRole;
723
+ getByRole = _render21.getByRole;
467
724
 
468
725
  var input = getByRole("textbox");
469
726
  expect(input.getAttribute("aria-autocomplete")).toBeNull();
470
727
  expect(input.getAttribute("aria-controls")).toBeNull();
471
728
  expect(input.getAttribute("aria-expanded")).toBeNull();
472
- var calendarAction = getByRole("button");
729
+ var calendarAction = getByRole("combobox");
730
+ expect(calendarAction.getAttribute("aria-autocomplete")).toBeNull();
731
+ expect(calendarAction.getAttribute("aria-controls")).toBeTruthy();
732
+ expect(calendarAction.getAttribute("aria-describedby")).toBeTruthy();
733
+ expect(calendarAction.getAttribute("aria-describedby") === calendarAction.getAttribute("aria-controls")).toBeTruthy();
734
+ expect(calendarAction.getAttribute("aria-expanded")).toBe("false");
473
735
 
474
736
  _userEvent["default"].click(calendarAction);
475
737
 
476
738
  var datePicker = getByRole("dialog");
477
739
  expect(datePicker.getAttribute("aria-modal")).toBe("true");
740
+ expect(calendarAction.getAttribute("aria-expanded")).toBe("true");
741
+ expect(document.getElementById(calendarAction.getAttribute("aria-describedby"))).toBeTruthy();
742
+
743
+ _react2.fireEvent.keyDown(document, {
744
+ key: "Escape",
745
+ code: "Escape",
746
+ keyCode: 27,
747
+ charCode: 27
748
+ });
749
+
750
+ expect(calendarAction.getAttribute("aria-expanded")).toBe("false");
478
751
  });
479
752
  });