@dxc-technology/halstack-react 0.0.0-9179a3a → 0.0.0-918d2c8

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 (293) hide show
  1. package/BackgroundColorContext.js +0 -1
  2. package/HalstackContext.d.ts +12 -0
  3. package/HalstackContext.js +335 -0
  4. package/accordion/Accordion.d.ts +1 -1
  5. package/accordion/Accordion.js +117 -136
  6. package/accordion/Accordion.stories.tsx +114 -19
  7. package/accordion/Accordion.test.js +71 -0
  8. package/accordion/types.d.ts +11 -10
  9. package/accordion-group/AccordionGroup.d.ts +1 -1
  10. package/accordion-group/AccordionGroup.js +15 -36
  11. package/accordion-group/AccordionGroup.stories.tsx +28 -2
  12. package/accordion-group/AccordionGroup.test.js +126 -0
  13. package/accordion-group/types.d.ts +16 -9
  14. package/alert/Alert.js +5 -2
  15. package/alert/Alert.stories.tsx +28 -0
  16. package/alert/Alert.test.js +92 -0
  17. package/badge/Badge.d.ts +4 -0
  18. package/badge/Badge.js +5 -3
  19. package/badge/types.d.ts +5 -0
  20. package/{radio → badge}/types.js +0 -0
  21. package/bleed/Bleed.d.ts +3 -0
  22. package/bleed/Bleed.js +51 -0
  23. package/bleed/Bleed.stories.tsx +341 -0
  24. package/bleed/types.d.ts +37 -0
  25. package/bleed/types.js +5 -0
  26. package/box/Box.js +23 -33
  27. package/box/Box.stories.tsx +15 -0
  28. package/box/Box.test.js +18 -0
  29. package/box/types.d.ts +1 -0
  30. package/bulleted-list/BulletedList.d.ts +7 -0
  31. package/bulleted-list/BulletedList.js +123 -0
  32. package/bulleted-list/BulletedList.stories.tsx +200 -0
  33. package/bulleted-list/types.d.ts +11 -0
  34. package/bulleted-list/types.js +5 -0
  35. package/button/Button.d.ts +1 -1
  36. package/button/Button.js +54 -79
  37. package/button/Button.stories.tsx +163 -14
  38. package/button/Button.test.js +35 -0
  39. package/button/types.d.ts +8 -12
  40. package/card/Card.js +24 -27
  41. package/card/Card.stories.tsx +1 -1
  42. package/card/Card.test.js +50 -0
  43. package/card/types.d.ts +1 -0
  44. package/checkbox/Checkbox.d.ts +2 -2
  45. package/checkbox/Checkbox.js +106 -109
  46. package/checkbox/Checkbox.stories.tsx +198 -130
  47. package/checkbox/Checkbox.test.js +155 -0
  48. package/checkbox/types.d.ts +14 -6
  49. package/chip/Chip.d.ts +1 -1
  50. package/chip/Chip.js +20 -64
  51. package/chip/Chip.stories.tsx +98 -13
  52. package/chip/Chip.test.js +56 -0
  53. package/chip/types.d.ts +5 -13
  54. package/common/variables.js +499 -554
  55. package/date-input/Calendar.d.ts +4 -0
  56. package/date-input/Calendar.js +258 -0
  57. package/date-input/DateInput.js +171 -260
  58. package/date-input/DateInput.stories.tsx +199 -33
  59. package/date-input/DateInput.test.js +835 -0
  60. package/date-input/DatePicker.d.ts +4 -0
  61. package/date-input/DatePicker.js +146 -0
  62. package/date-input/Icons.d.ts +6 -0
  63. package/date-input/Icons.js +75 -0
  64. package/date-input/YearPicker.d.ts +4 -0
  65. package/date-input/YearPicker.js +126 -0
  66. package/date-input/types.d.ts +67 -9
  67. package/dialog/Dialog.js +47 -52
  68. package/dialog/Dialog.stories.tsx +99 -22
  69. package/dialog/Dialog.test.js +70 -0
  70. package/dialog/types.d.ts +3 -2
  71. package/dropdown/Dropdown.d.ts +1 -1
  72. package/dropdown/Dropdown.js +248 -277
  73. package/dropdown/Dropdown.stories.tsx +438 -0
  74. package/dropdown/Dropdown.test.js +585 -0
  75. package/dropdown/DropdownMenu.d.ts +4 -0
  76. package/dropdown/DropdownMenu.js +70 -0
  77. package/dropdown/DropdownMenuItem.d.ts +4 -0
  78. package/dropdown/DropdownMenuItem.js +81 -0
  79. package/dropdown/types.d.ts +29 -18
  80. package/file-input/FileInput.d.ts +2 -2
  81. package/file-input/FileInput.js +159 -129
  82. package/file-input/FileInput.stories.tsx +618 -0
  83. package/file-input/FileInput.test.js +498 -0
  84. package/file-input/FileItem.d.ts +4 -14
  85. package/file-input/FileItem.js +43 -66
  86. package/file-input/types.d.ts +17 -0
  87. package/flex/Flex.d.ts +4 -0
  88. package/flex/Flex.js +69 -0
  89. package/flex/Flex.stories.tsx +103 -0
  90. package/flex/types.d.ts +32 -0
  91. package/flex/types.js +5 -0
  92. package/footer/Footer.js +24 -99
  93. package/footer/Footer.stories.tsx +99 -1
  94. package/footer/Footer.test.js +109 -0
  95. package/footer/Icons.js +1 -1
  96. package/footer/types.d.ts +2 -1
  97. package/header/Header.js +107 -128
  98. package/header/Header.stories.tsx +189 -36
  99. package/header/Header.test.js +79 -0
  100. package/header/Icons.js +2 -2
  101. package/header/types.d.ts +3 -2
  102. package/heading/Heading.stories.tsx +3 -2
  103. package/heading/Heading.test.js +186 -0
  104. package/inset/Inset.d.ts +3 -0
  105. package/inset/Inset.js +51 -0
  106. package/inset/Inset.stories.tsx +229 -0
  107. package/inset/types.d.ts +37 -0
  108. package/inset/types.js +5 -0
  109. package/layout/ApplicationLayout.d.ts +16 -6
  110. package/layout/ApplicationLayout.js +71 -125
  111. package/layout/ApplicationLayout.stories.tsx +84 -93
  112. package/layout/Icons.d.ts +5 -0
  113. package/layout/Icons.js +13 -2
  114. package/layout/SidenavContext.d.ts +5 -0
  115. package/layout/SidenavContext.js +19 -0
  116. package/layout/types.d.ts +18 -33
  117. package/link/Link.d.ts +3 -2
  118. package/link/Link.js +61 -86
  119. package/link/Link.stories.tsx +159 -52
  120. package/link/Link.test.js +83 -0
  121. package/link/types.d.ts +9 -29
  122. package/main.d.ts +11 -15
  123. package/main.js +53 -79
  124. package/number-input/NumberInput.js +11 -18
  125. package/number-input/NumberInput.stories.tsx +5 -5
  126. package/number-input/NumberInput.test.js +542 -0
  127. package/number-input/types.d.ts +17 -10
  128. package/package.json +21 -22
  129. package/paginator/Icons.d.ts +5 -0
  130. package/paginator/Icons.js +16 -28
  131. package/paginator/Paginator.js +19 -46
  132. package/paginator/Paginator.stories.tsx +24 -0
  133. package/paginator/Paginator.test.js +315 -0
  134. package/paragraph/Paragraph.d.ts +6 -0
  135. package/paragraph/Paragraph.js +38 -0
  136. package/paragraph/Paragraph.stories.tsx +44 -0
  137. package/password-input/PasswordInput.js +7 -4
  138. package/password-input/PasswordInput.stories.tsx +3 -3
  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 +60 -54
  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 +4 -0
  152. package/radio-group/Radio.js +156 -0
  153. package/radio-group/RadioGroup.d.ts +4 -0
  154. package/radio-group/RadioGroup.js +283 -0
  155. package/radio-group/RadioGroup.stories.tsx +214 -0
  156. package/radio-group/RadioGroup.test.js +722 -0
  157. package/radio-group/types.d.ts +114 -0
  158. package/radio-group/types.js +5 -0
  159. package/resultsetTable/Icons.d.ts +7 -0
  160. package/resultsetTable/Icons.js +51 -0
  161. package/resultsetTable/ResultsetTable.js +49 -105
  162. package/resultsetTable/ResultsetTable.stories.tsx +56 -32
  163. package/resultsetTable/ResultsetTable.test.js +325 -0
  164. package/resultsetTable/types.d.ts +2 -2
  165. package/select/Icons.d.ts +10 -0
  166. package/select/Icons.js +93 -0
  167. package/select/Listbox.d.ts +4 -0
  168. package/select/Listbox.js +169 -0
  169. package/select/Option.d.ts +4 -0
  170. package/select/Option.js +97 -0
  171. package/select/Select.d.ts +4 -0
  172. package/select/Select.js +184 -383
  173. package/select/Select.stories.tsx +600 -201
  174. package/select/Select.test.js +2228 -0
  175. package/select/types.d.ts +210 -0
  176. package/select/types.js +5 -0
  177. package/sidenav/Sidenav.d.ts +6 -5
  178. package/sidenav/Sidenav.js +182 -52
  179. package/sidenav/Sidenav.stories.tsx +249 -132
  180. package/sidenav/Sidenav.test.js +44 -0
  181. package/sidenav/types.d.ts +50 -27
  182. package/slider/Slider.d.ts +2 -2
  183. package/slider/Slider.js +122 -96
  184. package/slider/Slider.stories.tsx +72 -9
  185. package/slider/Slider.test.js +250 -0
  186. package/slider/types.d.ts +10 -2
  187. package/spinner/Spinner.js +3 -3
  188. package/spinner/Spinner.stories.jsx +27 -0
  189. package/spinner/Spinner.test.js +64 -0
  190. package/switch/Switch.d.ts +2 -2
  191. package/switch/Switch.js +150 -67
  192. package/switch/Switch.stories.tsx +54 -43
  193. package/switch/Switch.test.js +225 -0
  194. package/switch/types.d.ts +12 -4
  195. package/table/Table.js +1 -1
  196. package/table/Table.stories.jsx +81 -1
  197. package/table/Table.test.js +26 -0
  198. package/tabs/Tab.d.ts +4 -0
  199. package/tabs/Tab.js +133 -0
  200. package/tabs/Tabs.d.ts +1 -1
  201. package/tabs/Tabs.js +364 -110
  202. package/tabs/Tabs.stories.tsx +122 -17
  203. package/tabs/Tabs.test.js +351 -0
  204. package/tabs/types.d.ts +39 -17
  205. package/tabs-nav/NavTabs.d.ts +8 -0
  206. package/tabs-nav/NavTabs.js +125 -0
  207. package/tabs-nav/NavTabs.stories.tsx +172 -0
  208. package/tabs-nav/NavTabs.test.js +82 -0
  209. package/tabs-nav/Tab.d.ts +4 -0
  210. package/tabs-nav/Tab.js +128 -0
  211. package/tabs-nav/types.d.ts +53 -0
  212. package/tabs-nav/types.js +5 -0
  213. package/tag/Tag.d.ts +1 -1
  214. package/tag/Tag.js +18 -28
  215. package/tag/Tag.stories.tsx +38 -28
  216. package/tag/Tag.test.js +60 -0
  217. package/tag/types.d.ts +23 -14
  218. package/text-input/Icons.d.ts +8 -0
  219. package/text-input/Icons.js +60 -0
  220. package/text-input/Suggestion.d.ts +4 -0
  221. package/text-input/Suggestion.js +84 -0
  222. package/text-input/Suggestions.d.ts +4 -0
  223. package/text-input/Suggestions.js +134 -0
  224. package/text-input/TextInput.js +219 -332
  225. package/text-input/TextInput.stories.tsx +309 -196
  226. package/text-input/TextInput.test.js +1724 -0
  227. package/text-input/types.d.ts +51 -13
  228. package/textarea/Textarea.js +20 -27
  229. package/textarea/Textarea.stories.jsx +96 -15
  230. package/textarea/Textarea.test.js +437 -0
  231. package/textarea/types.d.ts +18 -11
  232. package/toggle-group/ToggleGroup.d.ts +1 -1
  233. package/toggle-group/ToggleGroup.js +12 -14
  234. package/toggle-group/ToggleGroup.stories.tsx +69 -32
  235. package/toggle-group/ToggleGroup.test.js +156 -0
  236. package/toggle-group/types.d.ts +46 -25
  237. package/typography/Typography.d.ts +4 -0
  238. package/typography/Typography.js +131 -0
  239. package/typography/Typography.stories.tsx +198 -0
  240. package/typography/types.d.ts +18 -0
  241. package/typography/types.js +5 -0
  242. package/useTheme.js +2 -2
  243. package/useTranslatedLabels.d.ts +2 -0
  244. package/useTranslatedLabels.js +20 -0
  245. package/wizard/Wizard.d.ts +1 -1
  246. package/wizard/Wizard.js +111 -57
  247. package/wizard/{Wizard.stories.jsx → Wizard.stories.tsx} +48 -19
  248. package/wizard/Wizard.test.js +141 -0
  249. package/wizard/types.d.ts +12 -11
  250. package/ThemeContext.d.ts +0 -15
  251. package/ThemeContext.js +0 -243
  252. package/V3Select/V3Select.js +0 -455
  253. package/V3Select/index.d.ts +0 -27
  254. package/V3Textarea/V3Textarea.js +0 -260
  255. package/V3Textarea/index.d.ts +0 -27
  256. package/common/RequiredComponent.js +0 -32
  257. package/date/Date.js +0 -373
  258. package/date/index.d.ts +0 -27
  259. package/input-text/Icons.js +0 -22
  260. package/input-text/InputText.js +0 -611
  261. package/input-text/index.d.ts +0 -36
  262. package/list/List.d.ts +0 -7
  263. package/list/List.js +0 -37
  264. package/list/List.stories.tsx +0 -70
  265. package/radio/Radio.d.ts +0 -4
  266. package/radio/Radio.js +0 -174
  267. package/radio/Radio.stories.tsx +0 -192
  268. package/radio/types.d.ts +0 -54
  269. package/row/Row.d.ts +0 -11
  270. package/row/Row.js +0 -124
  271. package/row/Row.stories.tsx +0 -223
  272. package/select/index.d.ts +0 -131
  273. package/stack/Stack.d.ts +0 -10
  274. package/stack/Stack.js +0 -94
  275. package/stack/Stack.stories.tsx +0 -150
  276. package/text/Text.d.ts +0 -7
  277. package/text/Text.js +0 -30
  278. package/text/Text.stories.tsx +0 -19
  279. package/toggle/Toggle.js +0 -186
  280. package/toggle/index.d.ts +0 -21
  281. package/upload/Upload.js +0 -201
  282. package/upload/buttons-upload/ButtonsUpload.js +0 -111
  283. package/upload/buttons-upload/Icons.js +0 -40
  284. package/upload/dragAndDropArea/DragAndDropArea.js +0 -225
  285. package/upload/dragAndDropArea/Icons.js +0 -39
  286. package/upload/file-upload/FileToUpload.js +0 -115
  287. package/upload/file-upload/Icons.js +0 -66
  288. package/upload/files-upload/FilesToUpload.js +0 -109
  289. package/upload/index.d.ts +0 -15
  290. package/upload/transaction/Icons.js +0 -160
  291. package/upload/transaction/Transaction.js +0 -104
  292. package/upload/transactions/Transactions.js +0 -94
  293. package/wizard/Icons.js +0 -65
@@ -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
+ });