@dxc-technology/halstack-react 0.0.0-d30020b → 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 (290) 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 +71 -0
  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 +126 -0
  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 +92 -0
  18. package/badge/Badge.d.ts +4 -0
  19. package/badge/Badge.js +5 -3
  20. package/badge/types.d.ts +5 -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 +18 -0
  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 +35 -0
  35. package/button/types.d.ts +7 -7
  36. package/card/Card.js +25 -28
  37. package/card/Card.test.js +50 -0
  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 +155 -0
  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 +54 -0
  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 +476 -583
  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 +835 -0
  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 +369 -0
  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 +586 -0
  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 +457 -0
  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 +97 -0
  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 +79 -0
  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 +186 -0
  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 +81 -0
  115. package/link/types.d.ts +7 -23
  116. package/main.d.ts +10 -15
  117. package/main.js +48 -82
  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 +542 -0
  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 +305 -0
  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 +181 -0
  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 +110 -0
  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/quick-nav/types.js +5 -0
  151. package/radio-group/Radio.d.ts +1 -1
  152. package/radio-group/Radio.js +53 -37
  153. package/radio-group/RadioGroup.js +67 -57
  154. package/radio-group/RadioGroup.stories.tsx +171 -36
  155. package/radio-group/RadioGroup.test.js +563 -89
  156. package/radio-group/types.d.ts +82 -4
  157. package/resultsetTable/Icons.d.ts +7 -0
  158. package/resultsetTable/Icons.js +51 -0
  159. package/resultsetTable/ResultsetTable.js +49 -108
  160. package/resultsetTable/ResultsetTable.stories.tsx +50 -25
  161. package/resultsetTable/ResultsetTable.test.js +325 -0
  162. package/resultsetTable/types.d.ts +2 -2
  163. package/select/Icons.d.ts +10 -0
  164. package/select/Icons.js +93 -0
  165. package/select/Listbox.d.ts +4 -0
  166. package/select/Listbox.js +169 -0
  167. package/select/Option.d.ts +4 -0
  168. package/select/Option.js +97 -0
  169. package/select/Select.js +185 -384
  170. package/select/Select.stories.tsx +600 -201
  171. package/select/Select.test.js +2228 -0
  172. package/select/types.d.ts +53 -13
  173. package/sidenav/Sidenav.d.ts +6 -5
  174. package/sidenav/Sidenav.js +183 -53
  175. package/sidenav/Sidenav.stories.tsx +249 -149
  176. package/sidenav/Sidenav.test.js +44 -0
  177. package/sidenav/types.d.ts +50 -27
  178. package/slider/Slider.d.ts +2 -2
  179. package/slider/Slider.js +124 -98
  180. package/slider/Slider.stories.tsx +72 -9
  181. package/slider/Slider.test.js +250 -0
  182. package/slider/types.d.ts +10 -2
  183. package/spinner/Spinner.js +4 -4
  184. package/spinner/Spinner.stories.jsx +27 -1
  185. package/spinner/Spinner.test.js +64 -0
  186. package/switch/Switch.d.ts +2 -2
  187. package/switch/Switch.js +152 -69
  188. package/switch/Switch.stories.tsx +53 -42
  189. package/switch/Switch.test.js +225 -0
  190. package/switch/types.d.ts +12 -4
  191. package/table/Table.js +3 -3
  192. package/table/Table.stories.jsx +80 -1
  193. package/table/Table.test.js +26 -0
  194. package/tabs/Tab.d.ts +4 -0
  195. package/tabs/Tab.js +133 -0
  196. package/tabs/Tabs.d.ts +1 -1
  197. package/tabs/Tabs.js +363 -109
  198. package/tabs/Tabs.stories.tsx +119 -13
  199. package/tabs/Tabs.test.js +350 -0
  200. package/tabs/types.d.ts +19 -5
  201. package/tag/Tag.js +17 -22
  202. package/tag/Tag.stories.tsx +25 -8
  203. package/tag/Tag.test.js +60 -0
  204. package/tag/types.d.ts +1 -1
  205. package/text-input/Icons.d.ts +8 -0
  206. package/text-input/Icons.js +60 -0
  207. package/text-input/Suggestion.d.ts +4 -0
  208. package/text-input/Suggestion.js +84 -0
  209. package/text-input/Suggestions.d.ts +4 -0
  210. package/text-input/Suggestions.js +134 -0
  211. package/text-input/TextInput.js +224 -345
  212. package/text-input/TextInput.stories.tsx +310 -197
  213. package/text-input/TextInput.test.js +1723 -0
  214. package/text-input/types.d.ts +50 -12
  215. package/textarea/Textarea.js +22 -29
  216. package/textarea/Textarea.stories.jsx +93 -13
  217. package/textarea/Textarea.test.js +437 -0
  218. package/textarea/types.d.ts +18 -11
  219. package/toggle-group/ToggleGroup.d.ts +1 -1
  220. package/toggle-group/ToggleGroup.js +6 -5
  221. package/toggle-group/ToggleGroup.stories.tsx +46 -4
  222. package/toggle-group/ToggleGroup.test.js +156 -0
  223. package/toggle-group/types.d.ts +9 -1
  224. package/typography/Typography.d.ts +4 -0
  225. package/typography/Typography.js +32 -0
  226. package/typography/Typography.stories.tsx +198 -0
  227. package/typography/types.d.ts +18 -0
  228. package/typography/types.js +5 -0
  229. package/useTheme.d.ts +1234 -1
  230. package/useTheme.js +3 -3
  231. package/useTranslatedLabels.d.ts +85 -0
  232. package/useTranslatedLabels.js +20 -0
  233. package/utils/BaseTypography.d.ts +21 -0
  234. package/utils/BaseTypography.js +108 -0
  235. package/utils/FocusLock.d.ts +13 -0
  236. package/utils/FocusLock.js +139 -0
  237. package/wizard/Wizard.d.ts +1 -1
  238. package/wizard/Wizard.js +59 -55
  239. package/wizard/Wizard.stories.tsx +48 -19
  240. package/wizard/Wizard.test.js +141 -0
  241. package/wizard/types.d.ts +10 -5
  242. package/ThemeContext.d.ts +0 -15
  243. package/ThemeContext.js +0 -243
  244. package/V3Select/V3Select.js +0 -455
  245. package/V3Select/index.d.ts +0 -27
  246. package/V3Textarea/V3Textarea.js +0 -260
  247. package/V3Textarea/index.d.ts +0 -27
  248. package/common/RequiredComponent.js +0 -32
  249. package/date/Date.js +0 -373
  250. package/date/index.d.ts +0 -27
  251. package/input-text/Icons.js +0 -22
  252. package/input-text/InputText.js +0 -611
  253. package/input-text/index.d.ts +0 -36
  254. package/list/List.d.ts +0 -4
  255. package/list/List.js +0 -47
  256. package/list/List.stories.tsx +0 -95
  257. package/list/types.d.ts +0 -7
  258. package/radio/Radio.d.ts +0 -4
  259. package/radio/Radio.js +0 -174
  260. package/radio/Radio.stories.tsx +0 -192
  261. package/radio/types.d.ts +0 -54
  262. package/row/Row.d.ts +0 -3
  263. package/row/Row.js +0 -127
  264. package/row/Row.stories.tsx +0 -237
  265. package/row/types.d.ts +0 -10
  266. package/stack/Stack.d.ts +0 -3
  267. package/stack/Stack.js +0 -97
  268. package/stack/Stack.stories.tsx +0 -164
  269. package/stack/types.d.ts +0 -9
  270. package/text/Text.d.ts +0 -7
  271. package/text/Text.js +0 -30
  272. package/text/Text.stories.tsx +0 -19
  273. package/toggle/Toggle.js +0 -186
  274. package/toggle/index.d.ts +0 -21
  275. package/upload/Upload.js +0 -201
  276. package/upload/buttons-upload/ButtonsUpload.js +0 -111
  277. package/upload/buttons-upload/Icons.js +0 -40
  278. package/upload/dragAndDropArea/DragAndDropArea.js +0 -225
  279. package/upload/dragAndDropArea/Icons.js +0 -39
  280. package/upload/file-upload/FileToUpload.js +0 -115
  281. package/upload/file-upload/Icons.js +0 -66
  282. package/upload/files-upload/FilesToUpload.js +0 -109
  283. package/upload/index.d.ts +0 -15
  284. package/upload/transaction/Icons.js +0 -160
  285. package/upload/transaction/Transaction.js +0 -104
  286. package/upload/transactions/Transactions.js +0 -94
  287. /package/{list → badge}/types.js +0 -0
  288. /package/{radio → bulleted-list}/types.js +0 -0
  289. /package/{row → flex}/types.js +0 -0
  290. /package/{stack → nav-tabs}/types.js +0 -0
@@ -0,0 +1,835 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
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
+
13
+ var _react = _interopRequireDefault(require("react"));
14
+
15
+ var _react2 = require("@testing-library/react");
16
+
17
+ var _userEvent = _interopRequireDefault(require("@testing-library/user-event"));
18
+
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
+ };
61
+ describe("DateInput component tests", function () {
62
+ test("Renders with correct label, helper text, optional, placeholder and clearable action", function () {
63
+ var _render = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_DateInput["default"], {
64
+ label: "Example label",
65
+ helperText: "Example of helper text",
66
+ placeholder: true,
67
+ optional: true,
68
+ clearable: true
69
+ })),
70
+ getByText = _render.getByText,
71
+ getByRole = _render.getByRole,
72
+ getAllByRole = _render.getAllByRole;
73
+
74
+ var input = getByRole("textbox");
75
+ expect(getByText("Example label")).toBeTruthy();
76
+ expect(getByText("Example of helper text")).toBeTruthy();
77
+ expect(getByText("(Optional)")).toBeTruthy();
78
+ expect(input.getAttribute("placeholder")).toBe("DD-MM-YYYY");
79
+
80
+ _userEvent["default"].type(input, "10/10/2010");
81
+
82
+ var closeAction = getAllByRole("button")[0];
83
+
84
+ _userEvent["default"].click(closeAction);
85
+
86
+ expect(input.value).toBe("");
87
+ });
88
+ test("Renders with custom error", function () {
89
+ var _render2 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_DateInput["default"], {
90
+ error: "Personalized error."
91
+ })),
92
+ getByText = _render2.getByText;
93
+
94
+ expect(getByText("Personalized error.")).toBeTruthy();
95
+ });
96
+ test("Renders with an initial value when it is uncontrolled", function () {
97
+ var _render3 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_DateInput["default"], {
98
+ label: "Default label",
99
+ placeholder: "Placeholder",
100
+ defaultValue: "21-10-2015"
101
+ })),
102
+ getByText = _render3.getByText,
103
+ getByRole = _render3.getByRole;
104
+
105
+ var input = getByRole("textbox");
106
+ var calendarAction = getByRole("combobox");
107
+ expect(input.value).toBe("21-10-2015");
108
+
109
+ _userEvent["default"].click(calendarAction);
110
+
111
+ expect(getByText("21").getAttribute("aria-selected")).toBe("true");
112
+ expect(getByText("October 2015")).toBeTruthy();
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
+ })));
215
+ test("Calendar renders with correct date: today's date", function () {
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;
220
+
221
+ var calendarAction = getByRole("combobox");
222
+ var d = (0, _dayjs["default"])();
223
+
224
+ _userEvent["default"].click(calendarAction);
225
+
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();
228
+ });
229
+ test("Calendar renders with correct date: value prop", function () {
230
+ var _render7 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_DateInput["default"], {
231
+ value: "20-10-2019"
232
+ })),
233
+ getByText = _render7.getByText,
234
+ getByRole = _render7.getByRole,
235
+ getAllByText = _render7.getAllByText;
236
+
237
+ var calendarAction = getByRole("combobox");
238
+ var d = (0, _dayjs["default"])("2019-10-20");
239
+
240
+ _userEvent["default"].click(calendarAction);
241
+
242
+ expect(getAllByText(d.get("date"))[0].getAttribute("aria-selected")).toBe("true");
243
+ expect(getByText(d.format("MMMM YYYY"))).toBeTruthy();
244
+ });
245
+ test("Calendar renders with correct date: user typed value", function () {
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;
250
+
251
+ var calendarAction = getByRole("combobox");
252
+ var d = (0, _dayjs["default"])("2010-1-1");
253
+ var input = getByRole("textbox");
254
+
255
+ _userEvent["default"].type(input, "01-01-2010");
256
+
257
+ _userEvent["default"].click(calendarAction);
258
+
259
+ expect(getAllByText(d.get("date"))[0].getAttribute("aria-selected")).toBe("true");
260
+ expect(getByText(d.format("MMMM YYYY"))).toBeTruthy();
261
+ });
262
+ test("Calendar renders with correct date: invalid date, renders with today's date", function () {
263
+ var onBlur = jest.fn();
264
+
265
+ var _render9 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_DateInput["default"], {
266
+ onBlur: onBlur
267
+ })),
268
+ getByText = _render9.getByText,
269
+ getByRole = _render9.getByRole,
270
+ getAllByText = _render9.getAllByText;
271
+
272
+ var calendarAction = getByRole("combobox");
273
+ var d = (0, _dayjs["default"])();
274
+ var input = getByRole("textbox");
275
+
276
+ _userEvent["default"].type(input, "01-01-xxxx");
277
+
278
+ _react2.fireEvent.blur(input);
279
+
280
+ expect(onBlur).toHaveBeenCalled();
281
+ expect(onBlur).toHaveBeenCalledWith({
282
+ value: "01-01-xxxx",
283
+ error: "Invalid date."
284
+ });
285
+
286
+ _userEvent["default"].click(calendarAction);
287
+
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();
290
+ });
291
+ test("Selecting a date from the calendar with an specific format", function () {
292
+ var _render10 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_DateInput["default"], {
293
+ label: "With format M-dd-yyyy",
294
+ format: "M-dd-yyyy"
295
+ })),
296
+ getAllByText = _render10.getAllByText,
297
+ getByText = _render10.getByText,
298
+ getByRole = _render10.getByRole;
299
+
300
+ var input = getByRole("textbox");
301
+ var calendarAction = getByRole("combobox");
302
+
303
+ _userEvent["default"].click(calendarAction);
304
+
305
+ var dayButton = getAllByText("10")[0].closest("button");
306
+
307
+ _react2.fireEvent.click(dayButton);
308
+
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")));
405
+
406
+ _react2.fireEvent.keyDown(document, {
407
+ key: "Escape",
408
+ code: "Escape",
409
+ keyCode: 27,
410
+ charCode: 27
411
+ });
412
+
413
+ expect(input.value).toBe(d.format("DD-MM-YYYY"));
414
+ });
415
+ test("Selecting a date from the calendar (using keyboard presses)", function () {
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;
420
+
421
+ var calendarAction = getByRole("combobox");
422
+ var input = getByRole("textbox");
423
+
424
+ _userEvent["default"].type(input, "01-01-2010");
425
+
426
+ expect(input.value).toBe("01-01-2010");
427
+
428
+ _userEvent["default"].click(calendarAction);
429
+
430
+ expect(document.activeElement === getAllByText("1")[0].closest("button")).toBeTruthy();
431
+
432
+ _react2.fireEvent.keyDown(getAllByText("1")[0].closest("button"), {
433
+ key: "ArrowRight",
434
+ code: "ArrowRight",
435
+ keyCode: 39,
436
+ charCode: 39
437
+ });
438
+
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
446
+ });
447
+
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
456
+ });
457
+
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
487
+ });
488
+
489
+ expect(getAllByText("2")[0].closest("button").getAttribute("aria-selected")).toBe("true");
490
+
491
+ _react2.fireEvent.keyDown(document, {
492
+ key: "Escape",
493
+ code: "Escape",
494
+ keyCode: 27,
495
+ charCode: 27
496
+ });
497
+
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");
567
+ });
568
+ test("onChange & onBlur functions are called correctly", function () {
569
+ var onBlur = jest.fn();
570
+ var onChange = jest.fn();
571
+
572
+ var _render16 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_DateInput["default"], {
573
+ onChange: onChange,
574
+ onBlur: onBlur
575
+ })),
576
+ getByRole = _render16.getByRole;
577
+
578
+ var input = getByRole("textbox");
579
+ var d = new Date(2011, 9, 10);
580
+
581
+ _userEvent["default"].type(input, "10-10-2011");
582
+
583
+ expect(input.value).toBe("10-10-2011");
584
+ expect(onChange).toHaveBeenCalledTimes(10);
585
+ expect(onChange).toHaveBeenCalledWith({
586
+ value: "10-10-2011",
587
+ date: d
588
+ });
589
+
590
+ _react2.fireEvent.blur(input);
591
+
592
+ expect(onBlur).toHaveBeenCalled();
593
+ expect(onBlur).toHaveBeenCalledWith({
594
+ value: "10-10-2011",
595
+ date: d
596
+ });
597
+ });
598
+ test("onChange & onBlur functions are called correctly, also with errors", function () {
599
+ var onBlur = jest.fn();
600
+ var onChange = jest.fn();
601
+
602
+ var _render17 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_DateInput["default"], {
603
+ onChange: onChange,
604
+ onBlur: onBlur
605
+ })),
606
+ getByRole = _render17.getByRole;
607
+
608
+ var input = getByRole("textbox");
609
+
610
+ _userEvent["default"].type(input, "10-10-");
611
+
612
+ expect(input.value).toBe("10-10-");
613
+ expect(onChange).toHaveBeenCalledTimes(6);
614
+ expect(onChange).toHaveBeenCalledWith({
615
+ value: "10-10-",
616
+ error: "Invalid date."
617
+ });
618
+
619
+ _react2.fireEvent.blur(input);
620
+
621
+ expect(onBlur).toHaveBeenCalled();
622
+ expect(onBlur).toHaveBeenCalledWith({
623
+ value: "10-10-",
624
+ error: "Invalid date."
625
+ });
626
+ });
627
+ test("onBlur function removes the error when it is fixed", function () {
628
+ var onBlur = jest.fn();
629
+
630
+ var _render18 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_DateInput["default"], {
631
+ onBlur: onBlur
632
+ })),
633
+ getByRole = _render18.getByRole;
634
+
635
+ var input = getByRole("textbox");
636
+ var d = new Date(2002, 1, 20);
637
+
638
+ _userEvent["default"].type(input, "test");
639
+
640
+ expect(input.value).toBe("test");
641
+
642
+ _react2.fireEvent.blur(input);
643
+
644
+ expect(onBlur).toHaveBeenCalled();
645
+ expect(onBlur).toHaveBeenCalledWith({
646
+ value: "test",
647
+ error: "Invalid date."
648
+ });
649
+
650
+ _userEvent["default"].clear(input);
651
+
652
+ _userEvent["default"].type(input, "20-02-2002");
653
+
654
+ expect(input.value).toBe("20-02-2002");
655
+
656
+ _react2.fireEvent.blur(input);
657
+
658
+ expect(onBlur).toHaveBeenCalled();
659
+ expect(onBlur).toHaveBeenCalledWith({
660
+ value: "20-02-2002",
661
+ date: d
662
+ });
663
+ });
664
+ test("onBlur function removes the error when the input is empty", function () {
665
+ var onBlur = jest.fn();
666
+
667
+ var _render19 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_DateInput["default"], {
668
+ onBlur: onBlur,
669
+ optional: true
670
+ })),
671
+ getByRole = _render19.getByRole;
672
+
673
+ var input = getByRole("textbox");
674
+
675
+ _userEvent["default"].type(input, "test");
676
+
677
+ expect(input.value).toBe("test");
678
+
679
+ _react2.fireEvent.blur(input);
680
+
681
+ expect(onBlur).toHaveBeenCalled();
682
+ expect(onBlur).toHaveBeenCalledWith({
683
+ value: "test",
684
+ error: "Invalid date."
685
+ });
686
+
687
+ _userEvent["default"].clear(input);
688
+
689
+ _react2.fireEvent.blur(input);
690
+
691
+ expect(onBlur).toHaveBeenCalled();
692
+ expect(onBlur).toHaveBeenCalledWith({
693
+ value: ""
694
+ });
695
+ });
696
+ test("onBlur & onChange functions error: required field (not optional)", function () {
697
+ var onBlur = jest.fn();
698
+ var onChange = jest.fn();
699
+
700
+ var _render20 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_DateInput["default"], {
701
+ onBlur: onBlur,
702
+ onChange: onChange
703
+ })),
704
+ getByRole = _render20.getByRole;
705
+
706
+ var date = getByRole("textbox");
707
+
708
+ _userEvent["default"].type(date, "t");
709
+
710
+ expect(date.value).toBe("t");
711
+
712
+ _userEvent["default"].clear(date);
713
+
714
+ _react2.fireEvent.blur(date);
715
+
716
+ expect(onBlur).toHaveBeenCalled();
717
+ expect(onBlur).toHaveBeenCalledWith({
718
+ value: "",
719
+ error: "This field is required. Please, enter a value."
720
+ });
721
+ expect(onChange).toHaveBeenCalled();
722
+ expect(onChange).toHaveBeenCalledWith({
723
+ value: "",
724
+ error: "This field is required. Please, enter a value."
725
+ });
726
+ });
727
+ test("Disabled date input (calendar action must be shown but not clickable)", function () {
728
+ var _render21 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_DateInput["default"], {
729
+ disabled: true
730
+ })),
731
+ getByRole = _render21.getByRole,
732
+ queryByText = _render21.queryByText;
733
+
734
+ var calendarAction = getByRole("button");
735
+ var d = new Date();
736
+ var options = {
737
+ weekday: "short",
738
+ month: "short",
739
+ day: "numeric"
740
+ };
741
+ expect(getByRole("textbox").disabled).toBeTruthy();
742
+
743
+ _userEvent["default"].click(calendarAction);
744
+
745
+ expect(queryByText(d.toLocaleString("en-US", options))).toBeFalsy();
746
+ });
747
+ test("Input has correct accesibility attributes", function () {
748
+ var _render22 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_DateInput["default"], {
749
+ label: "Date input label"
750
+ })),
751
+ getByRole = _render22.getByRole;
752
+
753
+ var input = getByRole("textbox");
754
+ expect(input.getAttribute("aria-autocomplete")).toBeNull();
755
+ expect(input.getAttribute("aria-controls")).toBeNull();
756
+ expect(input.getAttribute("aria-expanded")).toBeNull();
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");
763
+
764
+ _userEvent["default"].click(calendarAction);
765
+
766
+ var datePicker = getByRole("dialog");
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();
834
+ });
835
+ });