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

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 (267) hide show
  1. package/BackgroundColorContext.d.ts +2 -2
  2. package/BackgroundColorContext.js +1 -1
  3. package/HalstackContext.d.ts +1336 -0
  4. package/HalstackContext.js +335 -0
  5. package/accordion/Accordion.d.ts +1 -1
  6. package/accordion/Accordion.js +118 -126
  7. package/accordion/Accordion.stories.tsx +115 -27
  8. package/accordion/Accordion.test.js +26 -12
  9. package/accordion/types.d.ts +9 -4
  10. package/accordion-group/AccordionGroup.d.ts +1 -1
  11. package/accordion-group/AccordionGroup.js +17 -38
  12. package/accordion-group/AccordionGroup.stories.tsx +28 -2
  13. package/accordion-group/AccordionGroup.test.js +31 -38
  14. package/accordion-group/types.d.ts +14 -3
  15. package/alert/Alert.js +7 -4
  16. package/alert/Alert.stories.tsx +28 -0
  17. package/alert/Alert.test.js +1 -1
  18. package/badge/Badge.d.ts +1 -1
  19. package/badge/Badge.js +5 -3
  20. package/badge/types.d.ts +1 -0
  21. package/bleed/Bleed.js +1 -34
  22. package/bleed/Bleed.stories.tsx +94 -95
  23. package/bleed/types.d.ts +25 -1
  24. package/box/Box.js +25 -37
  25. package/box/Box.stories.tsx +15 -0
  26. package/box/Box.test.js +1 -1
  27. package/box/types.d.ts +1 -0
  28. package/bulleted-list/BulletedList.d.ts +7 -0
  29. package/bulleted-list/BulletedList.js +123 -0
  30. package/bulleted-list/BulletedList.stories.tsx +200 -0
  31. package/bulleted-list/types.d.ts +11 -0
  32. package/button/Button.js +52 -69
  33. package/button/Button.stories.tsx +159 -8
  34. package/button/Button.test.js +1 -1
  35. package/button/types.d.ts +7 -7
  36. package/card/Card.js +25 -28
  37. package/card/Card.test.js +1 -1
  38. package/card/types.d.ts +1 -0
  39. package/checkbox/Checkbox.d.ts +2 -2
  40. package/checkbox/Checkbox.js +107 -110
  41. package/checkbox/Checkbox.stories.tsx +198 -130
  42. package/checkbox/Checkbox.test.js +101 -11
  43. package/checkbox/types.d.ts +13 -5
  44. package/chip/Chip.js +18 -24
  45. package/chip/Chip.stories.tsx +96 -9
  46. package/chip/Chip.test.js +3 -5
  47. package/chip/types.d.ts +1 -1
  48. package/common/utils.d.ts +1 -0
  49. package/common/utils.js +4 -4
  50. package/common/variables.d.ts +1625 -0
  51. package/common/variables.js +483 -352
  52. package/date-input/Calendar.d.ts +4 -0
  53. package/date-input/Calendar.js +258 -0
  54. package/date-input/DateInput.js +169 -258
  55. package/date-input/DateInput.stories.tsx +199 -33
  56. package/date-input/DateInput.test.js +521 -155
  57. package/date-input/DatePicker.d.ts +4 -0
  58. package/date-input/DatePicker.js +146 -0
  59. package/date-input/Icons.d.ts +6 -0
  60. package/date-input/Icons.js +75 -0
  61. package/date-input/YearPicker.d.ts +4 -0
  62. package/date-input/YearPicker.js +126 -0
  63. package/date-input/types.d.ts +67 -9
  64. package/dialog/Dialog.js +76 -93
  65. package/dialog/Dialog.stories.tsx +230 -123
  66. package/dialog/Dialog.test.js +334 -5
  67. package/dialog/types.d.ts +3 -2
  68. package/dropdown/Dropdown.d.ts +1 -1
  69. package/dropdown/Dropdown.js +246 -253
  70. package/dropdown/Dropdown.stories.tsx +245 -56
  71. package/dropdown/Dropdown.test.js +507 -110
  72. package/dropdown/DropdownMenu.d.ts +4 -0
  73. package/dropdown/DropdownMenu.js +70 -0
  74. package/dropdown/DropdownMenuItem.d.ts +4 -0
  75. package/dropdown/DropdownMenuItem.js +81 -0
  76. package/dropdown/types.d.ts +25 -5
  77. package/file-input/FileInput.d.ts +2 -2
  78. package/file-input/FileInput.js +181 -223
  79. package/file-input/FileInput.stories.tsx +122 -11
  80. package/file-input/FileInput.test.js +14 -14
  81. package/file-input/FileItem.d.ts +4 -14
  82. package/file-input/FileItem.js +44 -66
  83. package/file-input/types.d.ts +17 -0
  84. package/flex/Flex.d.ts +4 -0
  85. package/flex/Flex.js +69 -0
  86. package/flex/Flex.stories.tsx +103 -0
  87. package/flex/types.d.ts +32 -0
  88. package/footer/Footer.js +16 -89
  89. package/footer/Footer.stories.tsx +99 -1
  90. package/footer/Footer.test.js +14 -26
  91. package/footer/Icons.js +1 -1
  92. package/footer/types.d.ts +2 -1
  93. package/header/Header.js +108 -129
  94. package/header/Header.stories.tsx +189 -36
  95. package/header/Header.test.js +20 -4
  96. package/header/Icons.js +2 -2
  97. package/header/types.d.ts +3 -2
  98. package/heading/Heading.js +1 -1
  99. package/heading/Heading.test.js +1 -1
  100. package/inset/Inset.js +1 -34
  101. package/inset/Inset.stories.tsx +36 -36
  102. package/inset/types.d.ts +25 -1
  103. package/layout/ApplicationLayout.d.ts +16 -6
  104. package/layout/ApplicationLayout.js +72 -132
  105. package/layout/ApplicationLayout.stories.tsx +84 -93
  106. package/layout/Icons.d.ts +5 -0
  107. package/layout/Icons.js +13 -2
  108. package/layout/SidenavContext.d.ts +5 -0
  109. package/layout/SidenavContext.js +19 -0
  110. package/layout/types.d.ts +18 -33
  111. package/link/Link.d.ts +3 -2
  112. package/link/Link.js +59 -76
  113. package/link/Link.stories.tsx +155 -53
  114. package/link/Link.test.js +9 -19
  115. package/link/types.d.ts +7 -23
  116. package/main.d.ts +8 -10
  117. package/main.js +46 -56
  118. package/nav-tabs/NavTabs.d.ts +8 -0
  119. package/nav-tabs/NavTabs.js +125 -0
  120. package/nav-tabs/NavTabs.stories.tsx +260 -0
  121. package/nav-tabs/NavTabs.test.js +82 -0
  122. package/nav-tabs/Tab.d.ts +4 -0
  123. package/nav-tabs/Tab.js +150 -0
  124. package/nav-tabs/types.d.ts +53 -0
  125. package/number-input/NumberInput.js +11 -18
  126. package/number-input/NumberInput.stories.tsx +5 -5
  127. package/number-input/NumberInput.test.js +46 -12
  128. package/number-input/types.d.ts +17 -10
  129. package/package.json +20 -23
  130. package/paginator/Icons.d.ts +5 -0
  131. package/paginator/Icons.js +16 -28
  132. package/paginator/Paginator.js +19 -46
  133. package/paginator/Paginator.stories.tsx +24 -0
  134. package/paginator/Paginator.test.js +78 -39
  135. package/paragraph/Paragraph.d.ts +6 -0
  136. package/paragraph/Paragraph.js +38 -0
  137. package/paragraph/Paragraph.stories.tsx +44 -0
  138. package/password-input/PasswordInput.js +7 -4
  139. package/password-input/PasswordInput.test.js +17 -19
  140. package/password-input/types.d.ts +14 -11
  141. package/progress-bar/ProgressBar.d.ts +2 -2
  142. package/progress-bar/ProgressBar.js +61 -55
  143. package/progress-bar/ProgressBar.stories.jsx +47 -12
  144. package/progress-bar/ProgressBar.test.js +68 -23
  145. package/progress-bar/types.d.ts +3 -4
  146. package/quick-nav/QuickNav.d.ts +4 -0
  147. package/quick-nav/QuickNav.js +117 -0
  148. package/quick-nav/QuickNav.stories.tsx +356 -0
  149. package/quick-nav/types.d.ts +21 -0
  150. package/radio-group/Radio.d.ts +1 -1
  151. package/radio-group/Radio.js +43 -28
  152. package/radio-group/RadioGroup.js +32 -28
  153. package/radio-group/RadioGroup.stories.tsx +135 -17
  154. package/radio-group/RadioGroup.test.js +145 -117
  155. package/radio-group/types.d.ts +79 -2
  156. package/resultsetTable/Icons.d.ts +7 -0
  157. package/resultsetTable/Icons.js +51 -0
  158. package/resultsetTable/ResultsetTable.js +49 -108
  159. package/resultsetTable/ResultsetTable.stories.tsx +50 -25
  160. package/resultsetTable/ResultsetTable.test.js +61 -42
  161. package/resultsetTable/types.d.ts +2 -2
  162. package/select/Icons.d.ts +10 -0
  163. package/select/Icons.js +93 -0
  164. package/select/Listbox.d.ts +4 -0
  165. package/select/Listbox.js +169 -0
  166. package/select/Option.d.ts +4 -0
  167. package/select/Option.js +97 -0
  168. package/select/Select.js +179 -384
  169. package/select/Select.stories.tsx +531 -142
  170. package/select/Select.test.js +652 -324
  171. package/select/types.d.ts +53 -13
  172. package/sidenav/Sidenav.d.ts +6 -5
  173. package/sidenav/Sidenav.js +183 -53
  174. package/sidenav/Sidenav.stories.tsx +249 -149
  175. package/sidenav/Sidenav.test.js +25 -37
  176. package/sidenav/types.d.ts +50 -27
  177. package/slider/Slider.d.ts +2 -2
  178. package/slider/Slider.js +124 -98
  179. package/slider/Slider.stories.tsx +72 -9
  180. package/slider/Slider.test.js +143 -22
  181. package/slider/types.d.ts +10 -2
  182. package/spinner/Spinner.js +4 -4
  183. package/spinner/Spinner.stories.jsx +27 -1
  184. package/spinner/Spinner.test.js +1 -1
  185. package/switch/Switch.d.ts +2 -2
  186. package/switch/Switch.js +152 -69
  187. package/switch/Switch.stories.tsx +53 -42
  188. package/switch/Switch.test.js +156 -4
  189. package/switch/types.d.ts +12 -4
  190. package/table/Table.js +3 -3
  191. package/table/Table.stories.jsx +80 -1
  192. package/table/Table.test.js +2 -2
  193. package/tabs/Tab.d.ts +4 -0
  194. package/tabs/Tab.js +133 -0
  195. package/tabs/Tabs.d.ts +1 -1
  196. package/tabs/Tabs.js +363 -109
  197. package/tabs/Tabs.stories.tsx +119 -13
  198. package/tabs/Tabs.test.js +241 -14
  199. package/tabs/types.d.ts +19 -5
  200. package/tag/Tag.js +17 -22
  201. package/tag/Tag.stories.tsx +25 -8
  202. package/tag/Tag.test.js +1 -1
  203. package/tag/types.d.ts +1 -1
  204. package/text-input/Icons.d.ts +8 -0
  205. package/text-input/Icons.js +60 -0
  206. package/text-input/Suggestion.d.ts +4 -0
  207. package/text-input/Suggestion.js +84 -0
  208. package/text-input/Suggestions.d.ts +4 -0
  209. package/text-input/Suggestions.js +134 -0
  210. package/text-input/TextInput.js +221 -344
  211. package/text-input/TextInput.stories.tsx +290 -195
  212. package/text-input/TextInput.test.js +763 -731
  213. package/text-input/types.d.ts +50 -12
  214. package/textarea/Textarea.js +17 -26
  215. package/textarea/Textarea.stories.jsx +65 -6
  216. package/textarea/Textarea.test.js +38 -37
  217. package/textarea/types.d.ts +18 -11
  218. package/toggle-group/ToggleGroup.d.ts +1 -1
  219. package/toggle-group/ToggleGroup.js +6 -5
  220. package/toggle-group/ToggleGroup.stories.tsx +46 -4
  221. package/toggle-group/ToggleGroup.test.js +36 -5
  222. package/toggle-group/types.d.ts +9 -1
  223. package/typography/Typography.d.ts +4 -0
  224. package/typography/Typography.js +32 -0
  225. package/typography/Typography.stories.tsx +198 -0
  226. package/typography/types.d.ts +18 -0
  227. package/typography/types.js +5 -0
  228. package/useTheme.d.ts +1234 -1
  229. package/useTheme.js +3 -3
  230. package/useTranslatedLabels.d.ts +85 -0
  231. package/useTranslatedLabels.js +20 -0
  232. package/utils/BaseTypography.d.ts +21 -0
  233. package/utils/BaseTypography.js +108 -0
  234. package/utils/FocusLock.d.ts +13 -0
  235. package/utils/FocusLock.js +139 -0
  236. package/wizard/Wizard.d.ts +1 -1
  237. package/wizard/Wizard.js +59 -55
  238. package/wizard/Wizard.stories.tsx +48 -19
  239. package/wizard/Wizard.test.js +37 -24
  240. package/wizard/types.d.ts +10 -5
  241. package/ThemeContext.d.ts +0 -10
  242. package/ThemeContext.js +0 -243
  243. package/common/RequiredComponent.js +0 -32
  244. package/list/List.d.ts +0 -4
  245. package/list/List.js +0 -47
  246. package/list/List.stories.tsx +0 -95
  247. package/list/types.d.ts +0 -7
  248. package/radio/Radio.d.ts +0 -4
  249. package/radio/Radio.js +0 -174
  250. package/radio/Radio.stories.tsx +0 -192
  251. package/radio/Radio.test.js +0 -71
  252. package/radio/types.d.ts +0 -54
  253. package/row/Row.d.ts +0 -3
  254. package/row/Row.js +0 -127
  255. package/row/Row.stories.tsx +0 -237
  256. package/row/types.d.ts +0 -10
  257. package/stack/Stack.d.ts +0 -3
  258. package/stack/Stack.js +0 -97
  259. package/stack/Stack.stories.tsx +0 -164
  260. package/stack/types.d.ts +0 -9
  261. package/text/Text.d.ts +0 -7
  262. package/text/Text.js +0 -30
  263. package/text/Text.stories.tsx +0 -19
  264. /package/{list → bulleted-list}/types.js +0 -0
  265. /package/{radio → flex}/types.js +0 -0
  266. /package/{row → nav-tabs}/types.js +0 -0
  267. /package/{stack → quick-nav}/types.js +0 -0
@@ -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"], {
@@ -37,7 +85,7 @@ describe("DateInput component tests", function () {
37
85
 
38
86
  expect(input.value).toBe("");
39
87
  });
40
- test("Renders with personalized error", function () {
88
+ test("Renders with custom error", function () {
41
89
  var _render2 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_DateInput["default"], {
42
90
  error: "Personalized error."
43
91
  })),
@@ -45,120 +93,184 @@ describe("DateInput component tests", function () {
45
93
 
46
94
  expect(getByText("Personalized error.")).toBeTruthy();
47
95
  });
48
- test("Renders with correct format: user typed date but it's invalid, onBlur error", function () {
49
- var onBlur = jest.fn(function (_ref) {
50
- var value = _ref.value,
51
- error = _ref.error;
52
- expect(value).toBe("10/90/2010");
53
- expect(error).toBe("Invalid date.");
54
- });
55
-
96
+ test("Renders with an initial value when it is uncontrolled", function () {
56
97
  var _render3 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_DateInput["default"], {
57
- label: "With format MM/dd/yyyy",
58
- format: "MM/dd/yyyy",
59
- onBlur: onBlur
98
+ label: "Default label",
99
+ placeholder: "Placeholder",
100
+ defaultValue: "21-10-2015"
60
101
  })),
102
+ getByText = _render3.getByText,
61
103
  getByRole = _render3.getByRole;
62
104
 
63
105
  var input = getByRole("textbox");
106
+ var calendarAction = getByRole("combobox");
107
+ expect(input.value).toBe("21-10-2015");
64
108
 
65
- _userEvent["default"].type(input, "10/90/2010");
66
-
67
- _react2.fireEvent.blur(input);
68
- });
69
- test("Renders with correct format: user typed date but it's invalid, onChange error", function () {
70
- var onChange = jest.fn();
71
-
72
- var _render4 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_DateInput["default"], {
73
- label: "With format MM/dd/yyyy",
74
- format: "MM/dd/yyyy",
75
- onChange: onChange
76
- })),
77
- getByRole = _render4.getByRole;
78
-
79
- var input = getByRole("textbox");
80
-
81
- _userEvent["default"].type(input, "10/90/2010");
109
+ _userEvent["default"].click(calendarAction);
82
110
 
83
- expect(onChange).toHaveBeenCalledTimes(10);
84
- expect(onChange).toHaveBeenCalledWith({
85
- value: "10/90/2010",
86
- error: "Invalid date.",
87
- date: null
88
- });
111
+ expect(getByText("21").getAttribute("aria-selected")).toBe("true");
112
+ expect(getByText("October 2015")).toBeTruthy();
89
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
+ })));
90
215
  test("Calendar renders with correct date: today's date", function () {
91
- var _render5 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_DateInput["default"], null)),
92
- getByText = _render5.getByText,
93
- getByRole = _render5.getByRole;
216
+ var _render6 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_DateInput["default"], null)),
217
+ getByText = _render6.getByText,
218
+ getByRole = _render6.getByRole,
219
+ getAllByText = _render6.getAllByText;
94
220
 
95
- var calendarAction = getByRole("button");
96
- var d = new Date();
97
- var options = {
98
- weekday: "short",
99
- month: "short",
100
- day: "numeric"
101
- };
221
+ var calendarAction = getByRole("combobox");
222
+ var d = (0, _dayjs["default"])();
102
223
 
103
224
  _userEvent["default"].click(calendarAction);
104
225
 
105
- expect(getByText(d.toLocaleString("en-US", options))).toBeTruthy();
226
+ expect(document.activeElement === getAllByText(d.get("date")).length === 2 && +d.get("date") > 20 ? getAllByText(d.get("date"))[1] : getAllByText(d.get("date"))[0]).toBeTruthy();
227
+ expect(getByText(d.format("MMMM YYYY"))).toBeTruthy();
106
228
  });
107
229
  test("Calendar renders with correct date: value prop", function () {
108
- var _render6 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_DateInput["default"], {
230
+ var _render7 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_DateInput["default"], {
109
231
  value: "20-10-2019"
110
232
  })),
111
- getByText = _render6.getByText,
112
- getByRole = _render6.getByRole;
233
+ getByText = _render7.getByText,
234
+ getByRole = _render7.getByRole,
235
+ getAllByText = _render7.getAllByText;
113
236
 
114
- var calendarAction = getByRole("button");
115
- var d = new Date(2019, 9, 20);
116
- var options = {
117
- weekday: "short",
118
- month: "short",
119
- day: "numeric"
120
- };
237
+ var calendarAction = getByRole("combobox");
238
+ var d = (0, _dayjs["default"])("2019-10-20");
121
239
 
122
240
  _userEvent["default"].click(calendarAction);
123
241
 
124
- expect(getByText(d.toLocaleString("en-US", options))).toBeTruthy();
242
+ expect(getAllByText(d.get("date"))[0].getAttribute("aria-selected")).toBe("true");
243
+ expect(getByText(d.format("MMMM YYYY"))).toBeTruthy();
125
244
  });
126
245
  test("Calendar renders with correct date: user typed value", function () {
127
- var _render7 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_DateInput["default"], null)),
128
- getByText = _render7.getByText,
129
- getByRole = _render7.getByRole;
246
+ var _render8 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_DateInput["default"], null)),
247
+ getByText = _render8.getByText,
248
+ getByRole = _render8.getByRole,
249
+ getAllByText = _render8.getAllByText;
130
250
 
131
- var calendarAction = getByRole("button");
132
- var d = new Date(2010, 0, 1);
133
- var options = {
134
- weekday: "short",
135
- month: "short",
136
- day: "numeric"
137
- };
251
+ var calendarAction = getByRole("combobox");
252
+ var d = (0, _dayjs["default"])("2010-1-1");
138
253
  var input = getByRole("textbox");
139
254
 
140
255
  _userEvent["default"].type(input, "01-01-2010");
141
256
 
142
257
  _userEvent["default"].click(calendarAction);
143
258
 
144
- expect(getByText(d.toLocaleString("en-US", options))).toBeTruthy();
259
+ expect(getAllByText(d.get("date"))[0].getAttribute("aria-selected")).toBe("true");
260
+ expect(getByText(d.format("MMMM YYYY"))).toBeTruthy();
145
261
  });
146
262
  test("Calendar renders with correct date: invalid date, renders with today's date", function () {
147
263
  var onBlur = jest.fn();
148
264
 
149
- var _render8 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_DateInput["default"], {
265
+ var _render9 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_DateInput["default"], {
150
266
  onBlur: onBlur
151
267
  })),
152
- getByText = _render8.getByText,
153
- getByRole = _render8.getByRole;
268
+ getByText = _render9.getByText,
269
+ getByRole = _render9.getByRole,
270
+ getAllByText = _render9.getAllByText;
154
271
 
155
- var calendarAction = getByRole("button");
156
- var d = new Date();
157
- var options = {
158
- weekday: "short",
159
- month: "short",
160
- day: "numeric"
161
- };
272
+ var calendarAction = getByRole("combobox");
273
+ var d = (0, _dayjs["default"])();
162
274
  var input = getByRole("textbox");
163
275
 
164
276
  _userEvent["default"].type(input, "01-01-xxxx");
@@ -168,106 +280,300 @@ describe("DateInput component tests", function () {
168
280
  expect(onBlur).toHaveBeenCalled();
169
281
  expect(onBlur).toHaveBeenCalledWith({
170
282
  value: "01-01-xxxx",
171
- error: "Invalid date.",
172
- date: null
283
+ error: "Invalid date."
173
284
  });
174
285
 
175
286
  _userEvent["default"].click(calendarAction);
176
287
 
177
- expect(getByText(d.toLocaleString("en-US", options))).toBeTruthy();
288
+ expect(document.activeElement === getAllByText(d.get("date")).length === 2 && +d.get("date") > 20 ? getAllByText(d.get("date"))[1] : getAllByText(d.get("date"))[0]).toBeTruthy();
289
+ expect(getByText(d.format("MMMM YYYY"))).toBeTruthy();
178
290
  });
179
291
  test("Selecting a date from the calendar with an specific format", function () {
180
- var _render9 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_DateInput["default"], {
292
+ var _render10 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_DateInput["default"], {
181
293
  label: "With format M-dd-yyyy",
182
294
  format: "M-dd-yyyy"
183
295
  })),
184
- getByText = _render9.getByText,
185
- getByRole = _render9.getByRole;
296
+ getAllByText = _render10.getAllByText,
297
+ getByText = _render10.getByText,
298
+ getByRole = _render10.getByRole;
186
299
 
187
300
  var input = getByRole("textbox");
188
- var calendarAction = getByRole("button");
301
+ var calendarAction = getByRole("combobox");
189
302
 
190
303
  _userEvent["default"].click(calendarAction);
191
304
 
192
- var dayButton = getByText("10").closest("button");
305
+ var dayButton = getAllByText("10")[0].closest("button");
193
306
 
194
307
  _react2.fireEvent.click(dayButton);
195
308
 
196
- var d = new Date();
197
- d.setDate(10);
198
- var options = {
199
- weekday: "short",
200
- month: "short",
201
- day: "numeric"
202
- };
203
- 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")).toBe("true");
312
+ expect(getByText(d.format("MMMM YYYY"))).toBeTruthy();
313
+
314
+ _react2.fireEvent.keyDown(document, {
315
+ key: "Escape",
316
+ code: "Escape",
317
+ keyCode: 27,
318
+ charCode: 27
319
+ });
320
+
321
+ expect(input.value).toBe(d.format("M-DD-YYYY"));
322
+ });
323
+ test("Changing months using the arrows", function () {
324
+ var _render11 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_DateInput["default"], {
325
+ label: "label",
326
+ format: "dd-mm-yyyy",
327
+ defaultValue: "10-10-2000"
328
+ })),
329
+ getByText = _render11.getByText,
330
+ getByRole = _render11.getByRole,
331
+ getByTitle = _render11.getByTitle;
332
+
333
+ var calendarAction = getByRole("combobox");
334
+
335
+ _userEvent["default"].click(calendarAction);
336
+
337
+ var d = (0, _dayjs["default"])("10-10-2000", "DD-MM-YYYY", true);
338
+ d = d.set("date", 10);
339
+ expect(getByText(d.format("MMMM YYYY"))).toBeTruthy();
340
+ var previousMonth = getByTitle("Previous month");
341
+
342
+ _userEvent["default"].click(previousMonth);
343
+
344
+ expect(getByText(d.set("month", d.get("month") - 1).format("MMMM YYYY"))).toBeTruthy();
345
+ var nextMonth = getByTitle("Next month");
346
+
347
+ _userEvent["default"].click(nextMonth);
348
+
349
+ expect(getByText(d.format("MMMM YYYY"))).toBeTruthy();
350
+ });
351
+ test("Selecting a date from the calendar from another month", function () {
352
+ var _render12 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_DateInput["default"], {
353
+ format: "dd-mm-yyyy",
354
+ defaultValue: "10-08-2021"
355
+ })),
356
+ getAllByText = _render12.getAllByText,
357
+ getByText = _render12.getByText,
358
+ getByRole = _render12.getByRole;
359
+
360
+ var input = getByRole("textbox");
361
+ var calendarAction = getByRole("combobox");
362
+
363
+ _userEvent["default"].click(calendarAction);
364
+
365
+ var dayButton = getAllByText("31")[0].closest("button");
366
+
367
+ _react2.fireEvent.click(dayButton);
368
+
369
+ var d = (0, _dayjs["default"])("10-08-2021", "DD-MM-YYYY", true);
370
+ d = d.set("date", 31).set("month", 6);
371
+ expect(getAllByText(d.get("date"))[0].getAttribute("aria-selected")).toBe("true");
372
+ expect(getByText(d.format("MMMM YYYY"))).toBeTruthy();
373
+
374
+ _react2.fireEvent.keyDown(document, {
375
+ key: "Escape",
376
+ code: "Escape",
377
+ keyCode: 27,
378
+ charCode: 27
379
+ });
380
+
381
+ expect(input.value).toBe(d.format("DD-MM-YYYY"));
382
+ });
383
+ test("Selecting a year from the calendar year picker", function () {
384
+ var _render13 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_DateInput["default"], {
385
+ format: "dd-mm-yyyy",
386
+ defaultValue: "10-08-2021"
387
+ })),
388
+ getByText = _render13.getByText,
389
+ getByRole = _render13.getByRole;
390
+
391
+ var input = getByRole("textbox");
392
+ var calendarAction = getByRole("combobox");
393
+
394
+ _userEvent["default"].click(calendarAction);
395
+
396
+ var d = (0, _dayjs["default"])("10-08-2021", "DD-MM-YYYY", true);
397
+
398
+ _userEvent["default"].click(getByText(d.format("MMMM YYYY")));
399
+
400
+ expect(getByText("2024")).toBeTruthy();
401
+
402
+ _userEvent["default"].click(getByText("2024"));
403
+
404
+ _userEvent["default"].click(getByText(d.set("year", 2024).format("MMMM YYYY")));
204
405
 
205
406
  _react2.fireEvent.keyDown(document, {
206
- key: "Esc",
207
- code: "Esc",
407
+ key: "Escape",
408
+ code: "Escape",
208
409
  keyCode: 27,
209
410
  charCode: 27
210
411
  });
211
412
 
212
- expect(input.value).toBe("".concat(d.getMonth() + 1, "-10-").concat(d.getFullYear()));
413
+ expect(input.value).toBe(d.format("DD-MM-YYYY"));
213
414
  });
214
415
  test("Selecting a date from the calendar (using keyboard presses)", function () {
215
- var _render10 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_DateInput["default"], null)),
216
- getByRole = _render10.getByRole;
416
+ var _render14 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_DateInput["default"], null)),
417
+ getByRole = _render14.getByRole,
418
+ getAllByText = _render14.getAllByText,
419
+ getByText = _render14.getByText;
217
420
 
218
- var calendarAction = getByRole("button");
421
+ var calendarAction = getByRole("combobox");
219
422
  var input = getByRole("textbox");
220
423
 
221
424
  _userEvent["default"].type(input, "01-01-2010");
222
425
 
426
+ expect(input.value).toBe("01-01-2010");
427
+
223
428
  _userEvent["default"].click(calendarAction);
224
429
 
225
- _react2.fireEvent.keyDown(document, {
430
+ expect(document.activeElement === getAllByText("1")[0].closest("button")).toBeTruthy();
431
+
432
+ _react2.fireEvent.keyDown(getAllByText("1")[0].closest("button"), {
226
433
  key: "ArrowRight",
227
434
  code: "ArrowRight",
228
435
  keyCode: 39,
229
436
  charCode: 39
230
437
  });
231
438
 
232
- _react2.fireEvent.keyDown(document, {
233
- key: "ArrowRight",
234
- code: "ArrowRight",
235
- keyCode: 39,
236
- charCode: 39
439
+ expect(document.activeElement === getAllByText("2")[0].closest("button")).toBeTruthy();
440
+
441
+ _react2.fireEvent.keyDown(getAllByText("2")[0].closest("button"), {
442
+ key: "PageUp",
443
+ code: "PageUp",
444
+ keyCode: 33,
445
+ charCode: 33
237
446
  });
238
447
 
239
- _react2.fireEvent.keyDown(document, {
240
- key: "ArrowRight",
241
- code: "ArrowRight",
242
- keyCode: 39,
243
- charCode: 39
448
+ expect(document.activeElement === getAllByText("2")[0].closest("button")).toBeTruthy();
449
+ expect(getByText("December 2009")).toBeTruthy();
450
+
451
+ _react2.fireEvent.keyDown(getAllByText("2")[0].closest("button"), {
452
+ key: "PageDown",
453
+ code: "PageDown",
454
+ keyCode: 34,
455
+ charCode: 34
244
456
  });
245
457
 
246
- _react2.fireEvent.keyDown(document, {
247
- key: "ArrowLeft",
248
- code: "ArrowLeft",
249
- keyCode: 37,
250
- charCode: 37
458
+ expect(document.activeElement === getAllByText("2")[0].closest("button")).toBeTruthy();
459
+ expect(getByText("January 2010")).toBeTruthy();
460
+
461
+ _react2.fireEvent.keyDown(getAllByText("2")[0].closest("button"), {
462
+ key: "PageDown",
463
+ code: "PageDown",
464
+ keyCode: 34,
465
+ charCode: 34,
466
+ shiftKey: true
467
+ });
468
+
469
+ expect(getByText("January 2011")).toBeTruthy();
470
+
471
+ _react2.fireEvent.keyDown(getAllByText("2")[0].closest("button"), {
472
+ key: "PageUp",
473
+ code: "PageUp",
474
+ keyCode: 33,
475
+ charCode: 33,
476
+ shiftKey: true
477
+ });
478
+
479
+ expect(getByText("January 2010")).toBeTruthy();
480
+ expect(document.activeElement === getAllByText("2")[0].closest("button")).toBeTruthy();
481
+
482
+ _react2.fireEvent.click(getAllByText("2")[0].closest("button"), {
483
+ key: " ",
484
+ code: "Space",
485
+ keyCode: 32,
486
+ charCode: 32
251
487
  });
252
488
 
489
+ expect(getAllByText("2")[0].closest("button").getAttribute("aria-selected")).toBe("true");
490
+
253
491
  _react2.fireEvent.keyDown(document, {
254
- key: "Esc",
255
- code: "Esc",
492
+ key: "Escape",
493
+ code: "Escape",
256
494
  keyCode: 27,
257
495
  charCode: 27
258
496
  });
259
497
 
260
- expect(input.value).toBe("03-01-2010");
498
+ expect(input.value).toBe("02-01-2010");
499
+ });
500
+ test("Selecting a date from the calendar (using keyboard presses) part II", function () {
501
+ var _render15 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_DateInput["default"], null)),
502
+ getByRole = _render15.getByRole,
503
+ getAllByText = _render15.getAllByText;
504
+
505
+ var calendarAction = getByRole("combobox");
506
+ var input = getByRole("textbox");
507
+
508
+ _userEvent["default"].type(input, "01-01-2010");
509
+
510
+ expect(input.value).toBe("01-01-2010");
511
+
512
+ _userEvent["default"].click(calendarAction);
513
+
514
+ expect(document.activeElement === getAllByText("1")[0].closest("button")).toBeTruthy();
515
+
516
+ _react2.fireEvent.keyDown(getAllByText("1")[0].closest("button"), {
517
+ key: "ArrowDown",
518
+ code: "ArrowDown",
519
+ keyCode: 40,
520
+ charCode: 40
521
+ });
522
+
523
+ expect(document.activeElement === getAllByText("8")[0].closest("button")).toBeTruthy();
524
+
525
+ _react2.fireEvent.keyDown(getAllByText("8")[0].closest("button"), {
526
+ key: "ArrowDown",
527
+ code: "ArrowDown",
528
+ keyCode: 40,
529
+ charCode: 40
530
+ });
531
+
532
+ expect(document.activeElement === getAllByText("15")[0].closest("button")).toBeTruthy();
533
+
534
+ _react2.fireEvent.keyDown(getAllByText("15")[0].closest("button"), {
535
+ key: "ArrowUp",
536
+ code: "ArrowUp",
537
+ keyCode: 38,
538
+ charCode: 38
539
+ });
540
+
541
+ expect(document.activeElement === getAllByText("8")[0].closest("button")).toBeTruthy();
542
+
543
+ _react2.fireEvent.keyDown(getAllByText("8")[0].closest("button"), {
544
+ key: "End",
545
+ code: "End",
546
+ keyCode: 35,
547
+ charCode: 35
548
+ });
549
+
550
+ expect(document.activeElement === getAllByText("10")[0].closest("button")).toBeTruthy();
551
+
552
+ _react2.fireEvent.keyDown(getAllByText("10")[0].closest("button"), {
553
+ key: "Home",
554
+ code: "Home",
555
+ keyCode: 36,
556
+ charCode: 36
557
+ });
558
+
559
+ _react2.fireEvent.keyDown(getAllByText("10")[0].closest("button"), {
560
+ key: " ",
561
+ code: "Space",
562
+ keyCode: 32,
563
+ charCode: 32
564
+ });
565
+
566
+ expect(input.value).toBe("10-01-2010");
261
567
  });
262
568
  test("onChange & onBlur functions are called correctly", function () {
263
569
  var onBlur = jest.fn();
264
570
  var onChange = jest.fn();
265
571
 
266
- var _render11 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_DateInput["default"], {
572
+ var _render16 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_DateInput["default"], {
267
573
  onChange: onChange,
268
574
  onBlur: onBlur
269
575
  })),
270
- getByRole = _render11.getByRole;
576
+ getByRole = _render16.getByRole;
271
577
 
272
578
  var input = getByRole("textbox");
273
579
  var d = new Date(2011, 9, 10);
@@ -278,7 +584,6 @@ describe("DateInput component tests", function () {
278
584
  expect(onChange).toHaveBeenCalledTimes(10);
279
585
  expect(onChange).toHaveBeenCalledWith({
280
586
  value: "10-10-2011",
281
- error: null,
282
587
  date: d
283
588
  });
284
589
 
@@ -287,7 +592,6 @@ describe("DateInput component tests", function () {
287
592
  expect(onBlur).toHaveBeenCalled();
288
593
  expect(onBlur).toHaveBeenCalledWith({
289
594
  value: "10-10-2011",
290
- error: null,
291
595
  date: d
292
596
  });
293
597
  });
@@ -295,11 +599,11 @@ describe("DateInput component tests", function () {
295
599
  var onBlur = jest.fn();
296
600
  var onChange = jest.fn();
297
601
 
298
- var _render12 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_DateInput["default"], {
602
+ var _render17 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_DateInput["default"], {
299
603
  onChange: onChange,
300
604
  onBlur: onBlur
301
605
  })),
302
- getByRole = _render12.getByRole;
606
+ getByRole = _render17.getByRole;
303
607
 
304
608
  var input = getByRole("textbox");
305
609
 
@@ -309,8 +613,7 @@ describe("DateInput component tests", function () {
309
613
  expect(onChange).toHaveBeenCalledTimes(6);
310
614
  expect(onChange).toHaveBeenCalledWith({
311
615
  value: "10-10-",
312
- error: "Invalid date.",
313
- date: null
616
+ error: "Invalid date."
314
617
  });
315
618
 
316
619
  _react2.fireEvent.blur(input);
@@ -318,17 +621,16 @@ describe("DateInput component tests", function () {
318
621
  expect(onBlur).toHaveBeenCalled();
319
622
  expect(onBlur).toHaveBeenCalledWith({
320
623
  value: "10-10-",
321
- error: "Invalid date.",
322
- date: null
624
+ error: "Invalid date."
323
625
  });
324
626
  });
325
627
  test("onBlur function removes the error when it is fixed", function () {
326
628
  var onBlur = jest.fn();
327
629
 
328
- var _render13 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_DateInput["default"], {
630
+ var _render18 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_DateInput["default"], {
329
631
  onBlur: onBlur
330
632
  })),
331
- getByRole = _render13.getByRole;
633
+ getByRole = _render18.getByRole;
332
634
 
333
635
  var input = getByRole("textbox");
334
636
  var d = new Date(2002, 1, 20);
@@ -342,8 +644,7 @@ describe("DateInput component tests", function () {
342
644
  expect(onBlur).toHaveBeenCalled();
343
645
  expect(onBlur).toHaveBeenCalledWith({
344
646
  value: "test",
345
- error: "Invalid date.",
346
- date: null
647
+ error: "Invalid date."
347
648
  });
348
649
 
349
650
  _userEvent["default"].clear(input);
@@ -357,18 +658,17 @@ describe("DateInput component tests", function () {
357
658
  expect(onBlur).toHaveBeenCalled();
358
659
  expect(onBlur).toHaveBeenCalledWith({
359
660
  value: "20-02-2002",
360
- error: null,
361
661
  date: d
362
662
  });
363
663
  });
364
664
  test("onBlur function removes the error when the input is empty", function () {
365
665
  var onBlur = jest.fn();
366
666
 
367
- var _render14 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_DateInput["default"], {
667
+ var _render19 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_DateInput["default"], {
368
668
  onBlur: onBlur,
369
669
  optional: true
370
670
  })),
371
- getByRole = _render14.getByRole;
671
+ getByRole = _render19.getByRole;
372
672
 
373
673
  var input = getByRole("textbox");
374
674
 
@@ -381,8 +681,7 @@ describe("DateInput component tests", function () {
381
681
  expect(onBlur).toHaveBeenCalled();
382
682
  expect(onBlur).toHaveBeenCalledWith({
383
683
  value: "test",
384
- error: "Invalid date.",
385
- date: null
684
+ error: "Invalid date."
386
685
  });
387
686
 
388
687
  _userEvent["default"].clear(input);
@@ -391,20 +690,18 @@ describe("DateInput component tests", function () {
391
690
 
392
691
  expect(onBlur).toHaveBeenCalled();
393
692
  expect(onBlur).toHaveBeenCalledWith({
394
- value: "",
395
- error: null,
396
- date: null
693
+ value: ""
397
694
  });
398
695
  });
399
696
  test("onBlur & onChange functions error: required field (not optional)", function () {
400
697
  var onBlur = jest.fn();
401
698
  var onChange = jest.fn();
402
699
 
403
- var _render15 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_DateInput["default"], {
700
+ var _render20 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_DateInput["default"], {
404
701
  onBlur: onBlur,
405
702
  onChange: onChange
406
703
  })),
407
- getByRole = _render15.getByRole;
704
+ getByRole = _render20.getByRole;
408
705
 
409
706
  var date = getByRole("textbox");
410
707
 
@@ -419,22 +716,20 @@ describe("DateInput component tests", function () {
419
716
  expect(onBlur).toHaveBeenCalled();
420
717
  expect(onBlur).toHaveBeenCalledWith({
421
718
  value: "",
422
- error: "This field is required. Please, enter a value.",
423
- date: null
719
+ error: "This field is required. Please, enter a value."
424
720
  });
425
721
  expect(onChange).toHaveBeenCalled();
426
722
  expect(onChange).toHaveBeenCalledWith({
427
723
  value: "",
428
- error: "This field is required. Please, enter a value.",
429
- date: null
724
+ error: "This field is required. Please, enter a value."
430
725
  });
431
726
  });
432
727
  test("Disabled date input (calendar action must be shown but not clickable)", function () {
433
- var _render16 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_DateInput["default"], {
728
+ var _render21 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_DateInput["default"], {
434
729
  disabled: true
435
730
  })),
436
- getByRole = _render16.getByRole,
437
- queryByText = _render16.queryByText;
731
+ getByRole = _render21.getByRole,
732
+ queryByText = _render21.queryByText;
438
733
 
439
734
  var calendarAction = getByRole("button");
440
735
  var d = new Date();
@@ -450,20 +745,91 @@ describe("DateInput component tests", function () {
450
745
  expect(queryByText(d.toLocaleString("en-US", options))).toBeFalsy();
451
746
  });
452
747
  test("Input has correct accesibility attributes", function () {
453
- var _render17 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_DateInput["default"], {
748
+ var _render22 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_DateInput["default"], {
454
749
  label: "Date input label"
455
750
  })),
456
- getByRole = _render17.getByRole;
751
+ getByRole = _render22.getByRole;
457
752
 
458
753
  var input = getByRole("textbox");
459
754
  expect(input.getAttribute("aria-autocomplete")).toBeNull();
460
755
  expect(input.getAttribute("aria-controls")).toBeNull();
461
756
  expect(input.getAttribute("aria-expanded")).toBeNull();
462
- var calendarAction = getByRole("button");
757
+ var calendarAction = getByRole("combobox");
758
+ expect(calendarAction.getAttribute("aria-autocomplete")).toBeNull();
759
+ expect(calendarAction.getAttribute("aria-controls")).toBeTruthy();
760
+ expect(calendarAction.getAttribute("aria-describedby")).toBeTruthy();
761
+ expect(calendarAction.getAttribute("aria-describedby") === calendarAction.getAttribute("aria-controls")).toBeTruthy();
762
+ expect(calendarAction.getAttribute("aria-expanded")).toBe("false");
463
763
 
464
764
  _userEvent["default"].click(calendarAction);
465
765
 
466
766
  var datePicker = getByRole("dialog");
467
767
  expect(datePicker.getAttribute("aria-modal")).toBe("true");
768
+ expect(calendarAction.getAttribute("aria-expanded")).toBe("true");
769
+ expect(document.getElementById(calendarAction.getAttribute("aria-describedby"))).toBeTruthy();
770
+
771
+ _react2.fireEvent.keyDown(document, {
772
+ key: "Escape",
773
+ code: "Escape",
774
+ keyCode: 27,
775
+ charCode: 27
776
+ });
777
+
778
+ expect(calendarAction.getAttribute("aria-expanded")).toBe("false");
779
+ });
780
+ test("Chooses the correct year when two digit format", function () {
781
+ var _render23 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_DateInput["default"], {
782
+ label: "Default label",
783
+ placeholder: "Placeholder",
784
+ format: "dd-mm-yy",
785
+ defaultValue: "21-10-80"
786
+ })),
787
+ getByText = _render23.getByText,
788
+ getByRole = _render23.getByRole,
789
+ getAllByText = _render23.getAllByText;
790
+
791
+ var input = getByRole("textbox");
792
+ var calendarAction = getByRole("combobox");
793
+ expect(input.value).toBe("21-10-80");
794
+
795
+ _userEvent["default"].click(calendarAction);
796
+
797
+ expect(getByText("21").getAttribute("aria-selected")).toBe("true");
798
+ expect(getByText("October 1980")).toBeTruthy();
799
+
800
+ _react2.fireEvent.keyDown(document, {
801
+ key: "Escape",
802
+ code: "Escape",
803
+ keyCode: 27,
804
+ charCode: 27
805
+ });
806
+
807
+ _react2.fireEvent.change(input, {
808
+ target: {
809
+ value: "21-10-10"
810
+ }
811
+ });
812
+
813
+ _userEvent["default"].click(calendarAction);
814
+
815
+ expect(getByText("October 1910")).toBeTruthy();
816
+
817
+ _userEvent["default"].click(getByText("October 1910"));
818
+
819
+ _userEvent["default"].click(getByText("2010"));
820
+
821
+ _userEvent["default"].click(getAllByText("1")[0]);
822
+
823
+ expect(input.value).toBe("01-10-10");
824
+
825
+ _react2.fireEvent.change(input, {
826
+ target: {
827
+ value: "21-10-80"
828
+ }
829
+ });
830
+
831
+ _userEvent["default"].click(calendarAction);
832
+
833
+ expect(getByText("October 2080")).toBeTruthy();
468
834
  });
469
835
  });