@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,15 +2,52 @@
2
2
 
3
3
  var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
4
 
5
- var _react = _interopRequireDefault(require("react"));
5
+ var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
6
+
7
+ var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
6
8
 
7
- var _Select = _interopRequireDefault(require("./Select"));
9
+ var _react = _interopRequireDefault(require("react"));
8
10
 
9
11
  var _react2 = require("@testing-library/react");
10
12
 
11
13
  var _userEvent = _interopRequireDefault(require("@testing-library/user-event"));
12
14
 
13
- var single_options = [{
15
+ var _Select = _interopRequireDefault(require("./Select.tsx"));
16
+
17
+ // Mocking DOMRect for Radix Primitive Popover
18
+ global.globalThis = global;
19
+ global.DOMRect = {
20
+ fromRect: function fromRect() {
21
+ return {
22
+ top: 0,
23
+ left: 0,
24
+ bottom: 0,
25
+ right: 0,
26
+ width: 0,
27
+ height: 0
28
+ };
29
+ }
30
+ };
31
+
32
+ global.ResizeObserver = /*#__PURE__*/function () {
33
+ function ResizeObserver() {
34
+ (0, _classCallCheck2["default"])(this, ResizeObserver);
35
+ }
36
+
37
+ (0, _createClass2["default"])(ResizeObserver, [{
38
+ key: "observe",
39
+ value: function observe() {}
40
+ }, {
41
+ key: "unobserve",
42
+ value: function unobserve() {}
43
+ }, {
44
+ key: "disconnect",
45
+ value: function disconnect() {}
46
+ }]);
47
+ return ResizeObserver;
48
+ }();
49
+
50
+ var singleOptions = [{
14
51
  label: "Option 01",
15
52
  value: "1"
16
53
  }, {
@@ -71,7 +108,7 @@ var single_options = [{
71
108
  label: "Option 20",
72
109
  value: "20"
73
110
  }];
74
- var svg_icon_options = [{
111
+ var svgIconOptions = [{
75
112
  label: "3G Mobile",
76
113
  value: "1",
77
114
  icon: /*#__PURE__*/_react["default"].createElement("svg", {
@@ -135,7 +172,7 @@ var svg_icon_options = [{
135
172
  label: "Regular",
136
173
  value: "Regular"
137
174
  }];
138
- var url_icon_options = [{
175
+ var urlIconOptions = [{
139
176
  label: "Instagram",
140
177
  value: "1",
141
178
  icon: "https://cdn.icon-icons.com/icons2/2518/PNG/512/brand_instagram_icon_151534.png"
@@ -155,7 +192,7 @@ var url_icon_options = [{
155
192
  value: "5",
156
193
  icon: "https://cdn-icons-png.flaticon.com/512/145/145808.png"
157
194
  }];
158
- var group_options = [{
195
+ var groupOptions = [{
159
196
  label: "Colores",
160
197
  options: [{
161
198
  label: "Azul",
@@ -219,7 +256,7 @@ var group_options = [{
219
256
  value: "ebro"
220
257
  }]
221
258
  }];
222
- var grouped_icon_options = [{
259
+ var groupedIconOptions = [{
223
260
  label: "Social Media",
224
261
  options: [{
225
262
  label: "Instagram",
@@ -264,7 +301,7 @@ var grouped_icon_options = [{
264
301
  }]
265
302
  }];
266
303
  describe("Select component tests", function () {
267
- test("Renders with correct label", function () {
304
+ test("When clicking the label, the focus goes to the select", function () {
268
305
  var _render = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_Select["default"], {
269
306
  label: "test-select-label",
270
307
  helperText: "test-select-helper-text",
@@ -275,60 +312,153 @@ describe("Select component tests", function () {
275
312
 
276
313
  var select = getByRole("combobox");
277
314
  var label = getByText("test-select-label");
278
- expect(label).toBeTruthy();
279
315
 
280
316
  _userEvent["default"].click(label);
281
317
 
282
318
  expect(document.activeElement).toEqual(select);
283
319
  });
284
- test("Renders with correct helper text and placeholder", function () {
320
+ test("Renders with correct aria attributes when is in error state", function () {
285
321
  var _render2 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_Select["default"], {
286
- label: "test-select-label",
287
- helperText: "test-select-helper-text",
288
- placeholder: "Example text"
322
+ label: "Error label",
323
+ error: "Error message."
289
324
  })),
290
- getByText = _render2.getByText;
325
+ getByText = _render2.getByText,
326
+ getByRole = _render2.getByRole;
291
327
 
292
- expect(getByText("test-select-helper-text")).toBeTruthy();
293
- expect(getByText("Example text")).toBeTruthy();
328
+ var select = getByRole("combobox");
329
+ var errorMessage = getByText("Error message.");
330
+ expect(errorMessage).toBeTruthy();
331
+ expect(select.getAttribute("aria-errormessage")).toBe(errorMessage.id);
332
+ expect(select.getAttribute("aria-invalid")).toBe("true");
333
+ expect(errorMessage.getAttribute("aria-live")).toBe("assertive");
294
334
  });
295
- test("Renders with correct optional label", function () {
335
+ test("Renders with correct aria attributes", function () {
296
336
  var _render3 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_Select["default"], {
297
337
  label: "test-select-label",
298
- optional: true
338
+ placeholder: "Example",
339
+ options: singleOptions
299
340
  })),
300
- getByText = _render3.getByText;
341
+ getByText = _render3.getByText,
342
+ getByRole = _render3.getByRole;
301
343
 
302
- expect(getByText("test-select-label")).toBeTruthy();
303
- expect(getByText("(Optional)")).toBeTruthy();
344
+ var select = getByRole("combobox");
345
+ var label = getByText("test-select-label");
346
+ expect(select.getAttribute("aria-disabled")).toBe("false");
347
+ expect(select.getAttribute("aria-haspopup")).toBe("listbox");
348
+ expect(select.getAttribute("aria-expanded")).toBe("false");
349
+ expect(select.getAttribute("aria-required")).toBe("true");
350
+ expect(select.getAttribute("aria-labelledby")).toBe(label.id);
351
+ expect(select.getAttribute("aria-activedescendant")).toBeNull();
352
+ expect(select.getAttribute("aria-invalid")).toBe("false");
353
+
354
+ _userEvent["default"].click(select);
355
+
356
+ var list = getByRole("listbox");
357
+ expect(select.getAttribute("aria-controls")).toBe(list.id);
358
+ expect(list.getAttribute("aria-multiselectable")).toBe("false");
304
359
  });
305
- test("Renders with error message and correct aria attributes", function () {
360
+ test("Single selection: Renders with correct default value", function () {
306
361
  var _render4 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_Select["default"], {
307
- label: "Error label",
308
- error: "Error message."
362
+ label: "test-select-label",
363
+ name: "test",
364
+ defaultValue: "4",
365
+ options: singleOptions
309
366
  })),
310
367
  getByText = _render4.getByText,
311
- getByRole = _render4.getByRole;
368
+ getByRole = _render4.getByRole,
369
+ getAllByRole = _render4.getAllByRole,
370
+ queryByRole = _render4.queryByRole,
371
+ container = _render4.container;
312
372
 
313
373
  var select = getByRole("combobox");
314
- var errorMessage = getByText("Error message.");
315
- expect(errorMessage).toBeTruthy();
316
- expect(select.getAttribute("aria-errormessage")).toBe(errorMessage.id);
317
- expect(select.getAttribute("aria-invalid")).toBe("true");
318
- expect(errorMessage.getAttribute("aria-live")).toBe("assertive");
374
+ var submitInput = container.querySelector("input[name=\"test\"]");
375
+ expect(queryByRole("listbox")).toBeFalsy();
376
+ expect(getByText("Option 04")).toBeTruthy();
377
+ expect(submitInput.value).toBe("4");
378
+
379
+ _userEvent["default"].click(select);
380
+
381
+ expect(getAllByRole("option")[3].getAttribute("aria-selected")).toBe("true");
382
+
383
+ _userEvent["default"].click(getAllByRole("option")[7]);
384
+
385
+ expect(getByText("Option 08")).toBeTruthy();
386
+ expect(submitInput.value).toBe("8");
319
387
  });
320
- test("Disabled select - Clear all options action must be shown but not clickable", function () {
388
+ test("Multiple selection: Renders with correct default value", function () {
321
389
  var _render5 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_Select["default"], {
322
390
  label: "test-select-label",
323
- value: ["1", "2"],
324
- options: single_options,
325
- disabled: true,
326
- searchable: true,
391
+ name: "test",
392
+ defaultValue: ["4", "2", "6"],
393
+ options: singleOptions,
327
394
  multiple: true
328
395
  })),
329
- getByRole = _render5.getByRole,
330
396
  getByText = _render5.getByText,
331
- queryByRole = _render5.queryByRole;
397
+ getByRole = _render5.getByRole,
398
+ getAllByRole = _render5.getAllByRole,
399
+ queryByRole = _render5.queryByRole,
400
+ container = _render5.container;
401
+
402
+ var select = getByRole("combobox");
403
+ var submitInput = container.querySelector("input[name=\"test\"]");
404
+ expect(queryByRole("listbox")).toBeFalsy();
405
+ expect(getByText("Option 02, Option 04, Option 06")).toBeTruthy();
406
+ expect(submitInput.value).toBe("4,2,6");
407
+
408
+ _userEvent["default"].click(select);
409
+
410
+ expect(getAllByRole("option")[3].getAttribute("aria-selected")).toBe("true");
411
+ expect(getAllByRole("option")[1].getAttribute("aria-selected")).toBe("true");
412
+ expect(getAllByRole("option")[5].getAttribute("aria-selected")).toBe("true");
413
+
414
+ _userEvent["default"].click(getAllByRole("option")[2]);
415
+
416
+ expect(getByText("Option 02, Option 03, Option 04, Option 06")).toBeTruthy();
417
+ expect(submitInput.value).toBe("4,2,6,3");
418
+ });
419
+ test("Sends its value when submitted", function () {
420
+ var handlerOnSubmit = jest.fn(function (e) {
421
+ e.preventDefault();
422
+ var formData = new FormData(e.target);
423
+ var formProps = Object.fromEntries(formData);
424
+ expect(formProps).toStrictEqual({
425
+ options: "1,5,3"
426
+ });
427
+ });
428
+
429
+ var _render6 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement("form", {
430
+ onSubmit: handlerOnSubmit
431
+ }, /*#__PURE__*/_react["default"].createElement(_Select["default"], {
432
+ name: "options",
433
+ label: "test-select-label",
434
+ defaultValue: ["1", "5"],
435
+ options: singleOptions,
436
+ multiple: true
437
+ }), /*#__PURE__*/_react["default"].createElement("button", {
438
+ type: "submit"
439
+ }, "Submit"))),
440
+ getByText = _render6.getByText,
441
+ getByRole = _render6.getByRole,
442
+ getAllByRole = _render6.getAllByRole;
443
+
444
+ var select = getByRole("combobox");
445
+ var submit = getByText("Submit");
446
+
447
+ _userEvent["default"].click(select);
448
+
449
+ _userEvent["default"].click(getAllByRole("option")[2]);
450
+
451
+ _userEvent["default"].click(submit);
452
+ });
453
+ test("Disabled select - Cannot gain focus or open the listbox via click", function () {
454
+ var _render7 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_Select["default"], {
455
+ label: "test-select-label",
456
+ value: ["1", "2"],
457
+ options: singleOptions,
458
+ disabled: true
459
+ })),
460
+ getByRole = _render7.getByRole,
461
+ queryByRole = _render7.queryByRole;
332
462
 
333
463
  var select = getByRole("combobox");
334
464
  expect(select.getAttribute("aria-disabled")).toBe("true");
@@ -336,41 +466,103 @@ describe("Select component tests", function () {
336
466
  _userEvent["default"].click(select);
337
467
 
338
468
  expect(queryByRole("listbox")).toBeFalsy();
469
+ expect(document.activeElement === select).toBeFalsy();
470
+ });
471
+ test("Disabled select - Clear all options action must be shown but not clickable", function () {
472
+ var _render8 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_Select["default"], {
473
+ label: "test-select-label",
474
+ value: ["1", "2"],
475
+ options: singleOptions,
476
+ disabled: true,
477
+ searchable: true,
478
+ multiple: true
479
+ })),
480
+ getByRole = _render8.getByRole,
481
+ getByText = _render8.getByText;
339
482
 
340
483
  _userEvent["default"].click(getByRole("button"));
341
484
 
342
485
  expect(getByText("Option 01, Option 02")).toBeTruthy();
343
486
  });
344
- test("Focused select does not open the listbox", function () {
345
- var _render6 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_Select["default"], {
487
+ test("Disabled select - Does not call onBlur event", function () {
488
+ var onBlur = jest.fn();
489
+
490
+ var _render9 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_Select["default"], {
491
+ label: "test-select-label",
492
+ options: singleOptions,
493
+ disabled: true,
494
+ onBlur: onBlur
495
+ })),
496
+ getByRole = _render9.getByRole;
497
+
498
+ var select = getByRole("combobox");
499
+
500
+ _userEvent["default"].click(select);
501
+
502
+ _react2.fireEvent.keyDown(getByRole("combobox"), {
503
+ key: "Tab",
504
+ code: "Tab",
505
+ keyCode: 9,
506
+ charCode: 9
507
+ });
508
+
509
+ expect(onBlur).not.toHaveBeenCalled();
510
+ });
511
+ test("Disabled select - When the component gains the focus, the listbox does not open", function () {
512
+ var _render10 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_Select["default"], {
346
513
  label: "test-select-label",
347
514
  value: ["1", "2"],
348
- options: single_options,
515
+ options: singleOptions,
349
516
  disabled: true,
350
517
  searchable: true,
351
518
  multiple: true
352
519
  })),
353
- getByRole = _render6.getByRole,
354
- queryByRole = _render6.queryByRole;
520
+ getByRole = _render10.getByRole,
521
+ queryByRole = _render10.queryByRole;
355
522
 
356
523
  var select = getByRole("combobox");
357
524
 
358
525
  _react2.fireEvent.focus(select);
359
526
 
360
527
  expect(queryByRole("listbox")).toBeFalsy();
528
+ expect(document.activeElement === select).toBeFalsy();
361
529
  });
362
- test("Controlled - Not optional constraint", function () {
530
+ test("Disabled select - Doesn't send its value when submitted", function () {
531
+ var handlerOnSubmit = jest.fn(function (e) {
532
+ e.preventDefault();
533
+ var formData = new FormData(e.target);
534
+ var formProps = Object.fromEntries(formData);
535
+ expect(formProps).toStrictEqual({});
536
+ });
537
+
538
+ var _render11 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement("form", {
539
+ onSubmit: handlerOnSubmit
540
+ }, /*#__PURE__*/_react["default"].createElement(_Select["default"], {
541
+ label: "test-select-label",
542
+ defaultValue: "1",
543
+ options: singleOptions,
544
+ disabled: true
545
+ }), /*#__PURE__*/_react["default"].createElement("button", {
546
+ type: "submit"
547
+ }, "Submit"))),
548
+ getByText = _render11.getByText;
549
+
550
+ var submit = getByText("Submit");
551
+
552
+ _userEvent["default"].click(submit);
553
+ });
554
+ test("Controlled - Single selection - Not optional constraint", function () {
363
555
  var onChange = jest.fn();
364
556
  var onBlur = jest.fn();
365
557
 
366
- var _render7 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_Select["default"], {
558
+ var _render12 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_Select["default"], {
367
559
  label: "test-select-label",
368
- options: single_options,
560
+ options: singleOptions,
369
561
  onChange: onChange,
370
562
  onBlur: onBlur
371
563
  })),
372
- getByRole = _render7.getByRole,
373
- getAllByRole = _render7.getAllByRole;
564
+ getByRole = _render12.getByRole,
565
+ getAllByRole = _render12.getAllByRole;
374
566
 
375
567
  var select = getByRole("combobox");
376
568
  expect(select.getAttribute("aria-required")).toBe("true");
@@ -391,32 +583,93 @@ describe("Select component tests", function () {
391
583
 
392
584
  expect(onChange).toHaveBeenCalled();
393
585
  expect(onChange).toHaveBeenCalledWith({
394
- value: "1",
395
- error: null
586
+ value: "1"
396
587
  });
397
588
 
589
+ _react2.fireEvent.blur(select);
590
+
591
+ expect(onBlur).toHaveBeenCalled();
592
+ expect(onBlur).toHaveBeenCalledWith({
593
+ value: "1"
594
+ });
595
+ });
596
+ test("Controlled - Multiple selection - Not optional constraint", function () {
597
+ var onChange = jest.fn();
598
+ var onBlur = jest.fn();
599
+
600
+ var _render13 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_Select["default"], {
601
+ label: "test-select-label",
602
+ options: singleOptions,
603
+ onChange: onChange,
604
+ onBlur: onBlur,
605
+ multiple: true
606
+ })),
607
+ getByRole = _render13.getByRole,
608
+ getAllByRole = _render13.getAllByRole;
609
+
610
+ var select = getByRole("combobox");
611
+ expect(select.getAttribute("aria-required")).toBe("true");
612
+
398
613
  _react2.fireEvent.focus(select);
399
614
 
400
615
  _react2.fireEvent.blur(select);
401
616
 
402
617
  expect(onBlur).toHaveBeenCalled();
403
618
  expect(onBlur).toHaveBeenCalledWith({
404
- value: "1",
405
- error: null
619
+ value: [],
620
+ error: "This field is required. Please, enter a value."
621
+ });
622
+
623
+ _userEvent["default"].click(select);
624
+
625
+ _userEvent["default"].click(getAllByRole("option")[0]);
626
+
627
+ _userEvent["default"].click(getAllByRole("option")[1]);
628
+
629
+ expect(onChange).toHaveBeenCalled();
630
+ expect(onChange).toHaveBeenCalledWith({
631
+ value: ["1", "2"]
632
+ });
633
+
634
+ _react2.fireEvent.blur(select);
635
+
636
+ expect(onBlur).toHaveBeenCalled();
637
+ expect(onBlur).toHaveBeenCalledWith({
638
+ value: ["1", "2"]
639
+ });
640
+
641
+ _userEvent["default"].click(select);
642
+
643
+ _userEvent["default"].click(getAllByRole("option")[0]);
644
+
645
+ _userEvent["default"].click(getAllByRole("option")[1]);
646
+
647
+ expect(onChange).toHaveBeenCalled();
648
+ expect(onChange).toHaveBeenCalledWith({
649
+ value: [],
650
+ error: "This field is required. Please, enter a value."
651
+ });
652
+
653
+ _react2.fireEvent.blur(select);
654
+
655
+ expect(onBlur).toHaveBeenCalled();
656
+ expect(onBlur).toHaveBeenCalledWith({
657
+ value: [],
658
+ error: "This field is required. Please, enter a value."
406
659
  });
407
660
  });
408
661
  test("Controlled - Optional constraint", function () {
409
662
  var onChange = jest.fn();
410
663
  var onBlur = jest.fn();
411
664
 
412
- var _render8 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_Select["default"], {
665
+ var _render14 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_Select["default"], {
413
666
  label: "test-select-label",
414
- options: single_options,
667
+ options: singleOptions,
415
668
  onChange: onChange,
416
669
  onBlur: onBlur,
417
670
  optional: true
418
671
  })),
419
- getByRole = _render8.getByRole;
672
+ getByRole = _render14.getByRole;
420
673
 
421
674
  var select = getByRole("combobox");
422
675
  expect(select.getAttribute("aria-required")).toBe("false");
@@ -427,20 +680,19 @@ describe("Select component tests", function () {
427
680
 
428
681
  expect(onBlur).toHaveBeenCalled();
429
682
  expect(onBlur).toHaveBeenCalledWith({
430
- value: "",
431
- error: null
683
+ value: ""
432
684
  });
433
685
  expect(select.getAttribute("aria-invalid")).toBe("false");
434
686
  });
435
687
  test("Non-Grouped Options - Opens listbox and renders correctly or closes it with a click on select", function () {
436
- var _render9 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_Select["default"], {
688
+ var _render15 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_Select["default"], {
437
689
  label: "test-select-label",
438
- options: single_options
690
+ options: singleOptions
439
691
  })),
440
- getByText = _render9.getByText,
441
- getByRole = _render9.getByRole,
442
- getAllByRole = _render9.getAllByRole,
443
- queryByRole = _render9.queryByRole;
692
+ getByText = _render15.getByText,
693
+ getByRole = _render15.getByRole,
694
+ getAllByRole = _render15.getAllByRole,
695
+ queryByRole = _render15.queryByRole;
444
696
 
445
697
  var select = getByRole("combobox");
446
698
 
@@ -460,12 +712,12 @@ describe("Select component tests", function () {
460
712
  expect(select.getAttribute("aria-expanded")).toBe("false");
461
713
  });
462
714
  test("Non-Grouped Options - If an empty list of options is passed, the select is rendered but doestn't open the listbox", function () {
463
- var _render10 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_Select["default"], {
715
+ var _render16 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_Select["default"], {
464
716
  label: "test-select-label",
465
717
  options: []
466
718
  })),
467
- getByRole = _render10.getByRole,
468
- queryByRole = _render10.queryByRole;
719
+ getByRole = _render16.getByRole,
720
+ queryByRole = _render16.queryByRole;
469
721
 
470
722
  var select = getByRole("combobox");
471
723
 
@@ -477,17 +729,17 @@ describe("Select component tests", function () {
477
729
  test("Non-Grouped Options - Click in an option selects it and closes the listbox", function () {
478
730
  var onChange = jest.fn();
479
731
 
480
- var _render11 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_Select["default"], {
732
+ var _render17 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_Select["default"], {
481
733
  name: "test",
482
734
  label: "test-select-label",
483
- options: single_options,
735
+ options: singleOptions,
484
736
  onChange: onChange
485
737
  })),
486
- getByText = _render11.getByText,
487
- getByRole = _render11.getByRole,
488
- getAllByRole = _render11.getAllByRole,
489
- queryByRole = _render11.queryByRole,
490
- container = _render11.container;
738
+ getByText = _render17.getByText,
739
+ getByRole = _render17.getByRole,
740
+ getAllByRole = _render17.getAllByRole,
741
+ queryByRole = _render17.queryByRole,
742
+ container = _render17.container;
491
743
 
492
744
  var select = getByRole("combobox");
493
745
  var submitInput = container.querySelector("input[name=\"test\"]");
@@ -497,8 +749,7 @@ describe("Select component tests", function () {
497
749
  _userEvent["default"].click(getAllByRole("option")[2]);
498
750
 
499
751
  expect(onChange).toHaveBeenCalledWith({
500
- value: "3",
501
- error: null
752
+ value: "3"
502
753
  });
503
754
  expect(queryByRole("listbox")).toBeFalsy();
504
755
  expect(getByText("Option 03")).toBeTruthy();
@@ -508,19 +759,19 @@ describe("Select component tests", function () {
508
759
  expect(getAllByRole("option")[2].getAttribute("aria-selected")).toBe("true");
509
760
  expect(submitInput.value).toBe("3");
510
761
  });
511
- test("Non-Grouped Options - Optional renders an empty first option with the placeholder as its label", function () {
762
+ test("Non-Grouped Options - Optional renders an empty first option (selected by default) with the placeholder as its label", function () {
512
763
  var onChange = jest.fn();
513
764
 
514
- var _render12 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_Select["default"], {
765
+ var _render18 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_Select["default"], {
515
766
  label: "test-select-label",
516
767
  placeholder: "Choose an option",
517
- options: single_options,
768
+ options: singleOptions,
518
769
  onChange: onChange,
519
770
  optional: true
520
771
  })),
521
- getByRole = _render12.getByRole,
522
- getAllByRole = _render12.getAllByRole,
523
- getAllByText = _render12.getAllByText;
772
+ getByRole = _render18.getByRole,
773
+ getAllByRole = _render18.getAllByRole,
774
+ getAllByText = _render18.getAllByText;
524
775
 
525
776
  var select = getByRole("combobox");
526
777
 
@@ -532,8 +783,7 @@ describe("Select component tests", function () {
532
783
  _userEvent["default"].click(getAllByRole("option")[0]);
533
784
 
534
785
  expect(onChange).toHaveBeenCalledWith({
535
- value: "",
536
- error: null
786
+ value: ""
537
787
  });
538
788
  expect(getAllByText("Choose an option").length).toBe(1);
539
789
 
@@ -554,8 +804,7 @@ describe("Select component tests", function () {
554
804
  });
555
805
 
556
806
  expect(onChange).toHaveBeenCalledWith({
557
- value: "",
558
- error: null
807
+ value: ""
559
808
  });
560
809
  expect(getAllByText("Choose an option").length).toBe(1);
561
810
 
@@ -568,13 +817,42 @@ describe("Select component tests", function () {
568
817
 
569
818
  expect(select.getAttribute("aria-activedescendant")).toBe("option-0");
570
819
  });
820
+ test("Non-Grouped Options - Filtering options never affects the optional item until there are no coincidence", function () {
821
+ var _render19 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_Select["default"], {
822
+ label: "test-select-label",
823
+ placeholder: "Placeholder example",
824
+ options: singleOptions,
825
+ optional: true,
826
+ searchable: true
827
+ })),
828
+ getByRole = _render19.getByRole,
829
+ getAllByRole = _render19.getAllByRole,
830
+ getByText = _render19.getByText,
831
+ queryByText = _render19.queryByText,
832
+ container = _render19.container;
833
+
834
+ var select = getByRole("combobox");
835
+ var searchInput = container.querySelectorAll("input")[1];
836
+
837
+ _userEvent["default"].click(select);
838
+
839
+ _userEvent["default"].type(searchInput, "1");
840
+
841
+ expect(getByText("Placeholder example")).toBeTruthy();
842
+ expect(getAllByRole("option").length).toBe(12);
843
+
844
+ _userEvent["default"].type(searchInput, "123");
845
+
846
+ expect(queryByText("Placeholder example")).toBeFalsy();
847
+ expect(getByText("No matches found")).toBeTruthy();
848
+ });
571
849
  test("Non-Grouped Options - Renders SVG icons correctly when passed with options", function () {
572
- var _render13 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_Select["default"], {
850
+ var _render20 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_Select["default"], {
573
851
  label: "test-select-label",
574
- options: svg_icon_options
852
+ options: svgIconOptions
575
853
  })),
576
- getByRole = _render13.getByRole,
577
- getAllByRole = _render13.getAllByRole;
854
+ getByRole = _render20.getByRole,
855
+ getAllByRole = _render20.getAllByRole;
578
856
 
579
857
  var select = getByRole("combobox");
580
858
 
@@ -584,13 +862,13 @@ describe("Select component tests", function () {
584
862
  expect(getAllByRole("option").length).toBe(5);
585
863
  });
586
864
  test("Non-Grouped Options - Renders string url icons correctly when passed with options", function () {
587
- var _render14 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_Select["default"], {
865
+ var _render21 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_Select["default"], {
588
866
  label: "test-select-label",
589
- options: url_icon_options,
867
+ options: urlIconOptions,
590
868
  optional: true
591
869
  })),
592
- getByRole = _render14.getByRole,
593
- getAllByRole = _render14.getAllByRole;
870
+ getByRole = _render21.getByRole,
871
+ getAllByRole = _render21.getAllByRole;
594
872
 
595
873
  var select = getByRole("combobox");
596
874
 
@@ -600,12 +878,12 @@ describe("Select component tests", function () {
600
878
  expect(getAllByRole("option").length).toBe(6);
601
879
  });
602
880
  test("Non-Grouped Options: Arrow up key - Opens the listbox and visually focus the last option", function () {
603
- var _render15 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_Select["default"], {
881
+ var _render22 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_Select["default"], {
604
882
  label: "test-select-label",
605
- options: single_options
883
+ options: singleOptions
606
884
  })),
607
- getByRole = _render15.getByRole,
608
- queryByRole = _render15.queryByRole;
885
+ getByRole = _render22.getByRole,
886
+ queryByRole = _render22.queryByRole;
609
887
 
610
888
  var select = getByRole("combobox");
611
889
 
@@ -620,12 +898,12 @@ describe("Select component tests", function () {
620
898
  expect(select.getAttribute("aria-activedescendant")).toBe("option-19");
621
899
  });
622
900
  test("Non-Grouped Options: Arrow up key - Puts the focus in last option when the first one is visually focused", function () {
623
- var _render16 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_Select["default"], {
901
+ var _render23 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_Select["default"], {
624
902
  label: "test-select-label",
625
- options: single_options
903
+ options: singleOptions
626
904
  })),
627
- getByRole = _render16.getByRole,
628
- queryByRole = _render16.queryByRole;
905
+ getByRole = _render23.getByRole,
906
+ queryByRole = _render23.queryByRole;
629
907
 
630
908
  var select = getByRole("combobox");
631
909
 
@@ -647,12 +925,12 @@ describe("Select component tests", function () {
647
925
  expect(select.getAttribute("aria-activedescendant")).toBe("option-19");
648
926
  });
649
927
  test("Non-Grouped Options: Arrow down key - Opens the listbox and visually focus the first option", function () {
650
- var _render17 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_Select["default"], {
928
+ var _render24 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_Select["default"], {
651
929
  label: "test-select-label",
652
- options: single_options
930
+ options: singleOptions
653
931
  })),
654
- getByRole = _render17.getByRole,
655
- queryByRole = _render17.queryByRole;
932
+ getByRole = _render24.getByRole,
933
+ queryByRole = _render24.queryByRole;
656
934
 
657
935
  var select = getByRole("combobox");
658
936
 
@@ -667,12 +945,12 @@ describe("Select component tests", function () {
667
945
  expect(select.getAttribute("aria-activedescendant")).toBe("option-0");
668
946
  });
669
947
  test("Non-Grouped Options: Arrow down key - Puts the focus in the first option when the last one is visually focused", function () {
670
- var _render18 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_Select["default"], {
948
+ var _render25 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_Select["default"], {
671
949
  label: "test-select-label",
672
- options: single_options
950
+ options: singleOptions
673
951
  })),
674
- getByRole = _render18.getByRole,
675
- queryByRole = _render18.queryByRole;
952
+ getByRole = _render25.getByRole,
953
+ queryByRole = _render25.queryByRole;
676
954
 
677
955
  var select = getByRole("combobox");
678
956
 
@@ -696,16 +974,16 @@ describe("Select component tests", function () {
696
974
  test("Non-Grouped Options: Enter key - Selects the visually focused option and closes the listbox", function () {
697
975
  var onChange = jest.fn();
698
976
 
699
- var _render19 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_Select["default"], {
977
+ var _render26 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_Select["default"], {
700
978
  label: "test-select-label",
701
- options: single_options,
979
+ options: singleOptions,
702
980
  onChange: onChange,
703
981
  optional: true
704
982
  })),
705
- getByText = _render19.getByText,
706
- getByRole = _render19.getByRole,
707
- getAllByRole = _render19.getAllByRole,
708
- queryByRole = _render19.queryByRole;
983
+ getByText = _render26.getByText,
984
+ getByRole = _render26.getByRole,
985
+ getAllByRole = _render26.getAllByRole,
986
+ queryByRole = _render26.queryByRole;
709
987
 
710
988
  var select = getByRole("combobox");
711
989
 
@@ -745,8 +1023,7 @@ describe("Select component tests", function () {
745
1023
  });
746
1024
 
747
1025
  expect(onChange).toHaveBeenCalledWith({
748
- value: "20",
749
- error: null
1026
+ value: "20"
750
1027
  });
751
1028
  expect(queryByRole("listbox")).toBeFalsy();
752
1029
  expect(getByText("Option 20")).toBeTruthy();
@@ -758,17 +1035,17 @@ describe("Select component tests", function () {
758
1035
  test("Non-Grouped Options: Searchable - Displays an input for filtering the list of options", function () {
759
1036
  var onChange = jest.fn();
760
1037
 
761
- var _render20 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_Select["default"], {
1038
+ var _render27 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_Select["default"], {
762
1039
  label: "test-select-label",
763
- options: single_options,
1040
+ options: singleOptions,
764
1041
  onChange: onChange,
765
1042
  searchable: true
766
1043
  })),
767
- container = _render20.container,
768
- getByText = _render20.getByText,
769
- getByRole = _render20.getByRole,
770
- getAllByRole = _render20.getAllByRole,
771
- queryByRole = _render20.queryByRole;
1044
+ container = _render27.container,
1045
+ getByText = _render27.getByText,
1046
+ getByRole = _render27.getByRole,
1047
+ getAllByRole = _render27.getAllByRole,
1048
+ queryByRole = _render27.queryByRole;
772
1049
 
773
1050
  var select = getByRole("combobox");
774
1051
  var searchInput = container.querySelectorAll("input")[1];
@@ -782,8 +1059,7 @@ describe("Select component tests", function () {
782
1059
  _userEvent["default"].click(getByRole("option"));
783
1060
 
784
1061
  expect(onChange).toHaveBeenCalledWith({
785
- value: "8",
786
- error: null
1062
+ value: "8"
787
1063
  });
788
1064
  expect(queryByRole("listbox")).toBeFalsy();
789
1065
  expect(getByText("Option 08")).toBeTruthy();
@@ -796,15 +1072,15 @@ describe("Select component tests", function () {
796
1072
  test("Non-Grouped Options: Searchable - Displays 'No matches found' when there are no filtering results", function () {
797
1073
  var onChange = jest.fn();
798
1074
 
799
- var _render21 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_Select["default"], {
1075
+ var _render28 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_Select["default"], {
800
1076
  label: "test-select-label",
801
- options: single_options,
1077
+ options: singleOptions,
802
1078
  onChange: onChange,
803
1079
  searchable: true
804
1080
  })),
805
- container = _render21.container,
806
- getByText = _render21.getByText,
807
- getByRole = _render21.getByRole;
1081
+ container = _render28.container,
1082
+ getByText = _render28.getByText,
1083
+ getByRole = _render28.getByRole;
808
1084
 
809
1085
  var select = getByRole("combobox");
810
1086
  var searchInput = container.querySelectorAll("input")[1];
@@ -820,16 +1096,16 @@ describe("Select component tests", function () {
820
1096
  test("Non-Grouped Options: Searchable - Clicking the select, when the list is open, clears the search value", function () {
821
1097
  var onChange = jest.fn();
822
1098
 
823
- var _render22 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_Select["default"], {
1099
+ var _render29 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_Select["default"], {
824
1100
  label: "test-select-label",
825
- options: single_options,
1101
+ options: singleOptions,
826
1102
  onChange: onChange,
827
1103
  searchable: true
828
1104
  })),
829
- container = _render22.container,
830
- getByText = _render22.getByText,
831
- getByRole = _render22.getByRole,
832
- getAllByRole = _render22.getAllByRole;
1105
+ container = _render29.container,
1106
+ getByText = _render29.getByText,
1107
+ getByRole = _render29.getByRole,
1108
+ getAllByRole = _render29.getAllByRole;
833
1109
 
834
1110
  var select = getByRole("combobox");
835
1111
  var searchInput = container.querySelectorAll("input")[1];
@@ -852,15 +1128,15 @@ describe("Select component tests", function () {
852
1128
  test("Non-Grouped Options: Searchable - Writing displays the listbox, if it was not open", function () {
853
1129
  var onChange = jest.fn();
854
1130
 
855
- var _render23 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_Select["default"], {
1131
+ var _render30 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_Select["default"], {
856
1132
  label: "test-select-label",
857
- options: single_options,
1133
+ options: singleOptions,
858
1134
  onChange: onChange,
859
1135
  searchable: true
860
1136
  })),
861
- container = _render23.container,
862
- getByRole = _render23.getByRole,
863
- queryByRole = _render23.queryByRole;
1137
+ container = _render30.container,
1138
+ getByRole = _render30.getByRole,
1139
+ queryByRole = _render30.queryByRole;
864
1140
 
865
1141
  var select = getByRole("combobox");
866
1142
  var searchInput = container.querySelectorAll("input")[1];
@@ -878,15 +1154,15 @@ describe("Select component tests", function () {
878
1154
  test("Non-Grouped Options: Searchable - Key Esc cleans the search value and closes the options", function () {
879
1155
  var onChange = jest.fn();
880
1156
 
881
- var _render24 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_Select["default"], {
1157
+ var _render31 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_Select["default"], {
882
1158
  label: "test-select-label",
883
- options: single_options,
1159
+ options: singleOptions,
884
1160
  onChange: onChange,
885
1161
  searchable: true
886
1162
  })),
887
- container = _render24.container,
888
- getByRole = _render24.getByRole,
889
- queryByRole = _render24.queryByRole;
1163
+ container = _render31.container,
1164
+ getByRole = _render31.getByRole,
1165
+ queryByRole = _render31.queryByRole;
890
1166
 
891
1167
  var select = getByRole("combobox");
892
1168
  var searchInput = container.querySelectorAll("input")[1];
@@ -906,16 +1182,16 @@ describe("Select component tests", function () {
906
1182
  test("Non-Grouped Options: Searchable - While user types, a clear action is displayed for cleaning the search value", function () {
907
1183
  var onChange = jest.fn();
908
1184
 
909
- var _render25 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_Select["default"], {
1185
+ var _render32 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_Select["default"], {
910
1186
  label: "test-select-label",
911
- options: single_options,
1187
+ options: singleOptions,
912
1188
  onChange: onChange,
913
1189
  searchable: true
914
1190
  })),
915
- container = _render25.container,
916
- getByRole = _render25.getByRole,
917
- getAllByRole = _render25.getAllByRole,
918
- queryByTitle = _render25.queryByTitle;
1191
+ container = _render32.container,
1192
+ getByRole = _render32.getByRole,
1193
+ getAllByRole = _render32.getAllByRole,
1194
+ queryByTitle = _render32.queryByTitle;
919
1195
 
920
1196
  var searchInput = container.querySelectorAll("input")[1];
921
1197
 
@@ -935,19 +1211,19 @@ describe("Select component tests", function () {
935
1211
  test("Non-Grouped Options: Multiple selection - Displays a checkbox per option and enables the multi-selection", function () {
936
1212
  var onChange = jest.fn();
937
1213
 
938
- var _render26 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_Select["default"], {
1214
+ var _render33 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_Select["default"], {
939
1215
  name: "test",
940
1216
  label: "test-select-label",
941
- options: single_options,
1217
+ options: singleOptions,
942
1218
  onChange: onChange,
943
1219
  multiple: true
944
1220
  })),
945
- getByText = _render26.getByText,
946
- getAllByText = _render26.getAllByText,
947
- getByRole = _render26.getByRole,
948
- getAllByRole = _render26.getAllByRole,
949
- queryByRole = _render26.queryByRole,
950
- container = _render26.container;
1221
+ getByText = _render33.getByText,
1222
+ getAllByText = _render33.getAllByText,
1223
+ getByRole = _render33.getByRole,
1224
+ getAllByRole = _render33.getAllByRole,
1225
+ queryByRole = _render33.queryByRole,
1226
+ container = _render33.container;
951
1227
 
952
1228
  var select = getByRole("combobox");
953
1229
  var submitInput = container.querySelector("input[name=\"test\"]");
@@ -956,9 +1232,11 @@ describe("Select component tests", function () {
956
1232
 
957
1233
  expect(getByRole("listbox").getAttribute("aria-multiselectable")).toBe("true");
958
1234
 
959
- _userEvent["default"].click(getAllByRole("option")[10]); // expect(onChange).toHaveBeenCalledWith({ value: ["11"], error: null });
960
-
1235
+ _userEvent["default"].click(getAllByRole("option")[10]);
961
1236
 
1237
+ expect(onChange).toHaveBeenCalledWith({
1238
+ value: ["11"]
1239
+ });
962
1240
  expect(queryByRole("listbox")).toBeTruthy();
963
1241
  expect(getAllByText("Option 11").length).toBe(2);
964
1242
 
@@ -981,31 +1259,33 @@ describe("Select component tests", function () {
981
1259
  code: "Enter",
982
1260
  keyCode: 13,
983
1261
  charCode: 13
984
- }); // expect(onChange).toHaveBeenCalledWith({ value: ["11", "19"], error: null });
985
-
1262
+ });
986
1263
 
1264
+ expect(onChange).toHaveBeenCalledWith({
1265
+ value: ["11", "19"]
1266
+ });
987
1267
  expect(queryByRole("listbox")).toBeTruthy();
988
1268
  expect(getByText("Option 11, Option 19")).toBeTruthy();
989
1269
  expect(getAllByRole("option")[10].getAttribute("aria-selected")).toBe("true");
990
1270
  expect(getAllByRole("option")[18].getAttribute("aria-selected")).toBe("true");
991
- expect(submitInput.value).toBe("11, 19");
1271
+ expect(submitInput.value).toBe("11,19");
992
1272
  });
993
1273
  test("Non-Grouped Options: Multiple selection - Clear action and selection indicator", function () {
994
1274
  var onChange = jest.fn();
995
1275
 
996
- var _render27 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_Select["default"], {
1276
+ var _render34 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_Select["default"], {
997
1277
  label: "test-select-label",
998
- options: single_options,
1278
+ options: singleOptions,
999
1279
  onChange: onChange,
1000
1280
  multiple: true
1001
1281
  })),
1002
- getByText = _render27.getByText,
1003
- queryByText = _render27.queryByText,
1004
- getByRole = _render27.getByRole,
1005
- getAllByRole = _render27.getAllByRole,
1006
- queryByRole = _render27.queryByRole,
1007
- getByTitle = _render27.getByTitle,
1008
- queryByTitle = _render27.queryByTitle;
1282
+ getByText = _render34.getByText,
1283
+ queryByText = _render34.queryByText,
1284
+ getByRole = _render34.getByRole,
1285
+ getAllByRole = _render34.getAllByRole,
1286
+ queryByRole = _render34.queryByRole,
1287
+ getByTitle = _render34.getByTitle,
1288
+ queryByTitle = _render34.queryByTitle;
1009
1289
 
1010
1290
  var select = getByRole("combobox");
1011
1291
 
@@ -1015,9 +1295,11 @@ describe("Select component tests", function () {
1015
1295
 
1016
1296
  _userEvent["default"].click(getAllByRole("option")[8]);
1017
1297
 
1018
- _userEvent["default"].click(getAllByRole("option")[13]); // expect(onChange).toHaveBeenCalledWith({ value: ["6", "9", "14"], error: null });
1019
-
1298
+ _userEvent["default"].click(getAllByRole("option")[13]);
1020
1299
 
1300
+ expect(onChange).toHaveBeenCalledWith({
1301
+ value: ["6", "9", "14"]
1302
+ });
1021
1303
  expect(queryByRole("listbox")).toBeTruthy();
1022
1304
  expect(getByText("Option 06, Option 09, Option 14")).toBeTruthy();
1023
1305
  expect(getByText("3", {
@@ -1026,6 +1308,10 @@ describe("Select component tests", function () {
1026
1308
 
1027
1309
  _userEvent["default"].click(getByTitle("Clear selection"));
1028
1310
 
1311
+ expect(onChange).toHaveBeenCalledWith({
1312
+ value: [],
1313
+ error: "This field is required. Please, enter a value."
1314
+ });
1029
1315
  expect(queryByRole("listbox")).toBeTruthy();
1030
1316
  expect(queryByText("Option 06, Option 09, Option 14")).toBeFalsy();
1031
1317
  expect(queryByText("3")).toBeFalsy();
@@ -1034,18 +1320,18 @@ describe("Select component tests", function () {
1034
1320
  test("Non-Grouped Options: Multiple selection - Optional option should not be added when the select is marked as multiple", function () {
1035
1321
  var onChange = jest.fn();
1036
1322
 
1037
- var _render28 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_Select["default"], {
1323
+ var _render35 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_Select["default"], {
1038
1324
  label: "test-select-label",
1039
1325
  placeholder: "Choose an option",
1040
- options: single_options,
1326
+ options: singleOptions,
1041
1327
  onChange: onChange,
1042
1328
  multiple: true,
1043
1329
  optional: true
1044
1330
  })),
1045
- getByText = _render28.getByText,
1046
- getAllByText = _render28.getAllByText,
1047
- getByRole = _render28.getByRole,
1048
- getAllByRole = _render28.getAllByRole;
1331
+ getByText = _render35.getByText,
1332
+ getAllByText = _render35.getAllByText,
1333
+ getByRole = _render35.getByRole,
1334
+ getAllByRole = _render35.getAllByRole;
1049
1335
 
1050
1336
  var select = getByRole("combobox");
1051
1337
  expect(getByText("(Optional)")).toBeTruthy();
@@ -1055,19 +1341,21 @@ describe("Select component tests", function () {
1055
1341
  expect(getAllByText("Choose an option").length).toBe(1);
1056
1342
  expect(getAllByRole("option")[0].getAttribute("aria-selected")).toBe("false");
1057
1343
 
1058
- _userEvent["default"].click(getAllByRole("option")[0]); // expect(onChange).toHaveBeenCalledWith({ value: ["1"], error: null });
1059
-
1344
+ _userEvent["default"].click(getAllByRole("option")[0]);
1060
1345
 
1346
+ expect(onChange).toHaveBeenCalledWith({
1347
+ value: ["1"]
1348
+ });
1061
1349
  expect(getAllByText("Option 01").length).toBe(2);
1062
1350
  });
1063
1351
  test("Non-Grouped Options - If an options was previously selected when its opened (by key press), the visual focus appears always in the selected option", function () {
1064
- var _render29 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_Select["default"], {
1352
+ var _render36 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_Select["default"], {
1065
1353
  label: "test-select-label",
1066
- options: single_options
1354
+ options: singleOptions
1067
1355
  })),
1068
- getByText = _render29.getByText,
1069
- getByRole = _render29.getByRole,
1070
- getAllByRole = _render29.getAllByRole;
1356
+ getByText = _render36.getByText,
1357
+ getByRole = _render36.getByRole,
1358
+ getAllByRole = _render36.getAllByRole;
1071
1359
 
1072
1360
  var select = getByRole("combobox");
1073
1361
 
@@ -1135,14 +1423,14 @@ describe("Select component tests", function () {
1135
1423
  expect(getByText("Option 06")).toBeTruthy();
1136
1424
  });
1137
1425
  test("Non-Grouped Options - If an options was previously selected when its opened (by click and key press), the visual focus appears always in the selected option", function () {
1138
- var _render30 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_Select["default"], {
1426
+ var _render37 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_Select["default"], {
1139
1427
  label: "test-select-label",
1140
- options: single_options
1428
+ options: singleOptions
1141
1429
  })),
1142
- getByText = _render30.getByText,
1143
- getByRole = _render30.getByRole,
1144
- getAllByRole = _render30.getAllByRole,
1145
- queryByRole = _render30.queryByRole;
1430
+ getByText = _render37.getByText,
1431
+ getByRole = _render37.getByRole,
1432
+ getAllByRole = _render37.getAllByRole,
1433
+ queryByRole = _render37.queryByRole;
1146
1434
 
1147
1435
  var select = getByRole("combobox");
1148
1436
 
@@ -1210,14 +1498,14 @@ describe("Select component tests", function () {
1210
1498
  expect(getByText("Option 17")).toBeTruthy();
1211
1499
  });
1212
1500
  test("Grouped Options - Opens listbox and renders it correctly or closes it with a click on select", function () {
1213
- var _render31 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_Select["default"], {
1501
+ var _render38 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_Select["default"], {
1214
1502
  label: "test-select-label",
1215
- options: group_options
1503
+ options: groupOptions
1216
1504
  })),
1217
- getByText = _render31.getByText,
1218
- getByRole = _render31.getByRole,
1219
- getAllByRole = _render31.getAllByRole,
1220
- queryByRole = _render31.queryByRole;
1505
+ getByText = _render38.getByText,
1506
+ getByRole = _render38.getByRole,
1507
+ getAllByRole = _render38.getAllByRole,
1508
+ queryByRole = _render38.queryByRole;
1221
1509
 
1222
1510
  var select = getByRole("combobox");
1223
1511
 
@@ -1245,15 +1533,15 @@ describe("Select component tests", function () {
1245
1533
  expect(select.getAttribute("aria-expanded")).toBe("false");
1246
1534
  });
1247
1535
  test("Grouped Options - If an empty list of options in a group is passed, the select is rendered but doestn't open the listbox", function () {
1248
- var _render32 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_Select["default"], {
1536
+ var _render39 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_Select["default"], {
1249
1537
  label: "test-select-label",
1250
1538
  options: [{
1251
1539
  label: "Group 1",
1252
1540
  options: []
1253
1541
  }]
1254
1542
  })),
1255
- getByRole = _render32.getByRole,
1256
- queryByRole = _render32.queryByRole;
1543
+ getByRole = _render39.getByRole,
1544
+ queryByRole = _render39.queryByRole;
1257
1545
 
1258
1546
  var select = getByRole("combobox");
1259
1547
 
@@ -1265,17 +1553,17 @@ describe("Select component tests", function () {
1265
1553
  test("Grouped Options - Click in an option selects it and closes the listbox", function () {
1266
1554
  var onChange = jest.fn();
1267
1555
 
1268
- var _render33 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_Select["default"], {
1556
+ var _render40 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_Select["default"], {
1269
1557
  name: "test",
1270
1558
  label: "test-select-label",
1271
- options: group_options,
1559
+ options: groupOptions,
1272
1560
  onChange: onChange
1273
1561
  })),
1274
- getByText = _render33.getByText,
1275
- getByRole = _render33.getByRole,
1276
- getAllByRole = _render33.getAllByRole,
1277
- queryByRole = _render33.queryByRole,
1278
- container = _render33.container;
1562
+ getByText = _render40.getByText,
1563
+ getByRole = _render40.getByRole,
1564
+ getAllByRole = _render40.getAllByRole,
1565
+ queryByRole = _render40.queryByRole,
1566
+ container = _render40.container;
1279
1567
 
1280
1568
  var select = getByRole("combobox");
1281
1569
  var submitInput = container.querySelector("input[name=\"test\"]");
@@ -1285,8 +1573,7 @@ describe("Select component tests", function () {
1285
1573
  _userEvent["default"].click(getAllByRole("option")[8]);
1286
1574
 
1287
1575
  expect(onChange).toHaveBeenCalledWith({
1288
- value: "oviedo",
1289
- error: null
1576
+ value: "oviedo"
1290
1577
  });
1291
1578
  expect(queryByRole("listbox")).toBeFalsy();
1292
1579
  expect(getByText("Oviedo")).toBeTruthy();
@@ -1299,16 +1586,16 @@ describe("Select component tests", function () {
1299
1586
  test("Grouped Options - Optional renders an empty first option (out of any group) with the placeholder as its label", function () {
1300
1587
  var onChange = jest.fn();
1301
1588
 
1302
- var _render34 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_Select["default"], {
1589
+ var _render41 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_Select["default"], {
1303
1590
  label: "test-select-label",
1304
1591
  placeholder: "Placeholder example",
1305
- options: group_options,
1592
+ options: groupOptions,
1306
1593
  onChange: onChange,
1307
1594
  optional: true
1308
1595
  })),
1309
- getByRole = _render34.getByRole,
1310
- getAllByRole = _render34.getAllByRole,
1311
- getAllByText = _render34.getAllByText;
1596
+ getByRole = _render41.getByRole,
1597
+ getAllByRole = _render41.getAllByRole,
1598
+ getAllByText = _render41.getAllByText;
1312
1599
 
1313
1600
  var select = getByRole("combobox");
1314
1601
 
@@ -1320,8 +1607,7 @@ describe("Select component tests", function () {
1320
1607
  _userEvent["default"].click(getAllByRole("option")[0]);
1321
1608
 
1322
1609
  expect(onChange).toHaveBeenCalledWith({
1323
- value: "",
1324
- error: null
1610
+ value: ""
1325
1611
  });
1326
1612
  expect(getAllByText("Placeholder example").length).toBe(1);
1327
1613
 
@@ -1342,8 +1628,7 @@ describe("Select component tests", function () {
1342
1628
  });
1343
1629
 
1344
1630
  expect(onChange).toHaveBeenCalledWith({
1345
- value: "",
1346
- error: null
1631
+ value: ""
1347
1632
  });
1348
1633
  expect(getAllByText("Placeholder example").length).toBe(1);
1349
1634
 
@@ -1356,14 +1641,43 @@ describe("Select component tests", function () {
1356
1641
 
1357
1642
  expect(select.getAttribute("aria-activedescendant")).toBe("option-0");
1358
1643
  });
1644
+ test("Grouped Options - Filtering options never affects the optional item until there are no coincidence", function () {
1645
+ var _render42 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_Select["default"], {
1646
+ label: "test-select-label",
1647
+ placeholder: "Placeholder example",
1648
+ options: groupOptions,
1649
+ optional: true,
1650
+ searchable: true
1651
+ })),
1652
+ getByRole = _render42.getByRole,
1653
+ getAllByRole = _render42.getAllByRole,
1654
+ getByText = _render42.getByText,
1655
+ queryByText = _render42.queryByText,
1656
+ container = _render42.container;
1657
+
1658
+ var select = getByRole("combobox");
1659
+ var searchInput = container.querySelectorAll("input")[1];
1660
+
1661
+ _userEvent["default"].click(select);
1662
+
1663
+ _userEvent["default"].type(searchInput, "ro");
1664
+
1665
+ expect(getByText("Placeholder example")).toBeTruthy();
1666
+ expect(getAllByRole("option").length).toBe(6);
1667
+
1668
+ _userEvent["default"].type(searchInput, "roro");
1669
+
1670
+ expect(queryByText("Placeholder example")).toBeFalsy();
1671
+ expect(getByText("No matches found")).toBeTruthy();
1672
+ });
1359
1673
  test("Grouped Options - Renders icons correctly when passed with group options", function () {
1360
- var _render35 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_Select["default"], {
1674
+ var _render43 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_Select["default"], {
1361
1675
  label: "test-select-label",
1362
- options: grouped_icon_options,
1676
+ options: groupedIconOptions,
1363
1677
  optional: true
1364
1678
  })),
1365
- getByRole = _render35.getByRole,
1366
- getAllByRole = _render35.getAllByRole;
1679
+ getByRole = _render43.getByRole,
1680
+ getAllByRole = _render43.getAllByRole;
1367
1681
 
1368
1682
  var select = getByRole("combobox");
1369
1683
 
@@ -1373,12 +1687,12 @@ describe("Select component tests", function () {
1373
1687
  expect(getAllByRole("option").length).toBe(11);
1374
1688
  });
1375
1689
  test("Grouped Options: Arrow up key - Opens the listbox and visually focus the last option", function () {
1376
- var _render36 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_Select["default"], {
1690
+ var _render44 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_Select["default"], {
1377
1691
  label: "test-select-label",
1378
- options: group_options
1692
+ options: groupOptions
1379
1693
  })),
1380
- getByRole = _render36.getByRole,
1381
- queryByRole = _render36.queryByRole;
1694
+ getByRole = _render44.getByRole,
1695
+ queryByRole = _render44.queryByRole;
1382
1696
 
1383
1697
  var select = getByRole("combobox");
1384
1698
 
@@ -1393,12 +1707,12 @@ describe("Select component tests", function () {
1393
1707
  expect(select.getAttribute("aria-activedescendant")).toBe("option-17");
1394
1708
  });
1395
1709
  test("Grouped Options: Arrow up key - Puts the focus in last option when the first one is visually focused", function () {
1396
- var _render37 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_Select["default"], {
1710
+ var _render45 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_Select["default"], {
1397
1711
  label: "test-select-label",
1398
- options: group_options
1712
+ options: groupOptions
1399
1713
  })),
1400
- getByRole = _render37.getByRole,
1401
- queryByRole = _render37.queryByRole;
1714
+ getByRole = _render45.getByRole,
1715
+ queryByRole = _render45.queryByRole;
1402
1716
 
1403
1717
  var select = getByRole("combobox");
1404
1718
 
@@ -1420,12 +1734,12 @@ describe("Select component tests", function () {
1420
1734
  expect(select.getAttribute("aria-activedescendant")).toBe("option-17");
1421
1735
  });
1422
1736
  test("Grouped Options: Arrow down key - Opens the listbox and visually focus the first option", function () {
1423
- var _render38 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_Select["default"], {
1737
+ var _render46 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_Select["default"], {
1424
1738
  label: "test-select-label",
1425
- options: group_options
1739
+ options: groupOptions
1426
1740
  })),
1427
- getByRole = _render38.getByRole,
1428
- queryByRole = _render38.queryByRole;
1741
+ getByRole = _render46.getByRole,
1742
+ queryByRole = _render46.queryByRole;
1429
1743
 
1430
1744
  var select = getByRole("combobox");
1431
1745
 
@@ -1440,12 +1754,12 @@ describe("Select component tests", function () {
1440
1754
  expect(select.getAttribute("aria-activedescendant")).toBe("option-0");
1441
1755
  });
1442
1756
  test("Grouped Options: Arrow down key - Puts the focus in the first option when the last one is visually focused", function () {
1443
- var _render39 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_Select["default"], {
1757
+ var _render47 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_Select["default"], {
1444
1758
  label: "test-select-label",
1445
- options: group_options
1759
+ options: groupOptions
1446
1760
  })),
1447
- getByRole = _render39.getByRole,
1448
- queryByRole = _render39.queryByRole;
1761
+ getByRole = _render47.getByRole,
1762
+ queryByRole = _render47.queryByRole;
1449
1763
 
1450
1764
  var select = getByRole("combobox");
1451
1765
 
@@ -1469,16 +1783,16 @@ describe("Select component tests", function () {
1469
1783
  test("Grouped Options: Enter key - Selects the visually focused option and closes the listbox", function () {
1470
1784
  var onChange = jest.fn();
1471
1785
 
1472
- var _render40 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_Select["default"], {
1786
+ var _render48 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_Select["default"], {
1473
1787
  label: "test-select-label",
1474
- options: group_options,
1788
+ options: groupOptions,
1475
1789
  onChange: onChange,
1476
1790
  optional: true
1477
1791
  })),
1478
- getByText = _render40.getByText,
1479
- getByRole = _render40.getByRole,
1480
- getAllByRole = _render40.getAllByRole,
1481
- queryByRole = _render40.queryByRole;
1792
+ getByText = _render48.getByText,
1793
+ getByRole = _render48.getByRole,
1794
+ getAllByRole = _render48.getAllByRole,
1795
+ queryByRole = _render48.queryByRole;
1482
1796
 
1483
1797
  var select = getByRole("combobox");
1484
1798
 
@@ -1518,8 +1832,7 @@ describe("Select component tests", function () {
1518
1832
  });
1519
1833
 
1520
1834
  expect(onChange).toHaveBeenCalledWith({
1521
- value: "ebro",
1522
- error: null
1835
+ value: "ebro"
1523
1836
  });
1524
1837
  expect(queryByRole("listbox")).toBeFalsy();
1525
1838
  expect(getByText("Ebro")).toBeTruthy();
@@ -1531,17 +1844,17 @@ describe("Select component tests", function () {
1531
1844
  test("Grouped Options: Searchable - Displays an input for filtering the list of options", function () {
1532
1845
  var onChange = jest.fn();
1533
1846
 
1534
- var _render41 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_Select["default"], {
1847
+ var _render49 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_Select["default"], {
1535
1848
  label: "test-select-label",
1536
- options: group_options,
1849
+ options: groupOptions,
1537
1850
  onChange: onChange,
1538
1851
  searchable: true
1539
1852
  })),
1540
- container = _render41.container,
1541
- getByText = _render41.getByText,
1542
- getByRole = _render41.getByRole,
1543
- getAllByRole = _render41.getAllByRole,
1544
- queryByRole = _render41.queryByRole;
1853
+ container = _render49.container,
1854
+ getByText = _render49.getByText,
1855
+ getByRole = _render49.getByRole,
1856
+ getAllByRole = _render49.getAllByRole,
1857
+ queryByRole = _render49.queryByRole;
1545
1858
 
1546
1859
  var select = getByRole("combobox");
1547
1860
  var searchInput = container.querySelectorAll("input")[1];
@@ -1561,8 +1874,7 @@ describe("Select component tests", function () {
1561
1874
  _userEvent["default"].click(getAllByRole("option")[4]);
1562
1875
 
1563
1876
  expect(onChange).toHaveBeenCalledWith({
1564
- value: "ebro",
1565
- error: null
1877
+ value: "ebro"
1566
1878
  });
1567
1879
  expect(queryByRole("listbox")).toBeFalsy();
1568
1880
  expect(getByText("Ebro")).toBeTruthy();
@@ -1575,15 +1887,15 @@ describe("Select component tests", function () {
1575
1887
  test("Grouped Options: Searchable - Displays 'No matches found' when there are no filtering results", function () {
1576
1888
  var onChange = jest.fn();
1577
1889
 
1578
- var _render42 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_Select["default"], {
1890
+ var _render50 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_Select["default"], {
1579
1891
  label: "test-select-label",
1580
- options: group_options,
1892
+ options: groupOptions,
1581
1893
  onChange: onChange,
1582
1894
  searchable: true
1583
1895
  })),
1584
- container = _render42.container,
1585
- getByText = _render42.getByText,
1586
- getByRole = _render42.getByRole;
1896
+ container = _render50.container,
1897
+ getByText = _render50.getByText,
1898
+ getByRole = _render50.getByRole;
1587
1899
 
1588
1900
  var select = getByRole("combobox");
1589
1901
  var searchInput = container.querySelectorAll("input")[1];
@@ -1599,19 +1911,19 @@ describe("Select component tests", function () {
1599
1911
  test("Grouped Options: Multiple selection - Displays a checkbox per option and enables the multi-selection", function () {
1600
1912
  var onChange = jest.fn();
1601
1913
 
1602
- var _render43 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_Select["default"], {
1914
+ var _render51 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_Select["default"], {
1603
1915
  name: "test",
1604
1916
  label: "test-select-label",
1605
- options: group_options,
1917
+ options: groupOptions,
1606
1918
  onChange: onChange,
1607
1919
  multiple: true
1608
1920
  })),
1609
- getByText = _render43.getByText,
1610
- getAllByText = _render43.getAllByText,
1611
- getByRole = _render43.getByRole,
1612
- getAllByRole = _render43.getAllByRole,
1613
- queryByRole = _render43.queryByRole,
1614
- container = _render43.container;
1921
+ getByText = _render51.getByText,
1922
+ getAllByText = _render51.getAllByText,
1923
+ getByRole = _render51.getByRole,
1924
+ getAllByRole = _render51.getAllByRole,
1925
+ queryByRole = _render51.queryByRole,
1926
+ container = _render51.container;
1615
1927
 
1616
1928
  var select = getByRole("combobox");
1617
1929
  var submitInput = container.querySelector("input[name=\"test\"]");
@@ -1620,9 +1932,11 @@ describe("Select component tests", function () {
1620
1932
 
1621
1933
  expect(getByRole("listbox").getAttribute("aria-multiselectable")).toBe("true");
1622
1934
 
1623
- _userEvent["default"].click(getAllByRole("option")[10]); // expect(onChange).toHaveBeenCalledWith({ value: ["bilbao"], error: null });
1624
-
1935
+ _userEvent["default"].click(getAllByRole("option")[10]);
1625
1936
 
1937
+ expect(onChange).toHaveBeenCalledWith({
1938
+ value: ["bilbao"]
1939
+ });
1626
1940
  expect(queryByRole("listbox")).toBeTruthy();
1627
1941
  expect(getAllByText("Bilbao").length).toBe(2);
1628
1942
 
@@ -1645,31 +1959,33 @@ describe("Select component tests", function () {
1645
1959
  code: "Enter",
1646
1960
  keyCode: 13,
1647
1961
  charCode: 13
1648
- }); // expect(onChange).toHaveBeenCalledWith({ value: ["bilbao", "guadalquivir"], error: null });
1649
-
1962
+ });
1650
1963
 
1964
+ expect(onChange).toHaveBeenCalledWith({
1965
+ value: ["bilbao", "guadalquivir"]
1966
+ });
1651
1967
  expect(queryByRole("listbox")).toBeTruthy();
1652
1968
  expect(getByText("Bilbao, Guadalquivir")).toBeTruthy();
1653
1969
  expect(getAllByRole("option")[10].getAttribute("aria-selected")).toBe("true");
1654
1970
  expect(getAllByRole("option")[16].getAttribute("aria-selected")).toBe("true");
1655
- expect(submitInput.value).toBe("bilbao, guadalquivir");
1971
+ expect(submitInput.value).toBe("bilbao,guadalquivir");
1656
1972
  });
1657
1973
  test("Grouped Options: Multiple selection - Clear action and selection indicator", function () {
1658
1974
  var onChange = jest.fn();
1659
1975
 
1660
- var _render44 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_Select["default"], {
1976
+ var _render52 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_Select["default"], {
1661
1977
  label: "test-select-label",
1662
- options: group_options,
1978
+ options: groupOptions,
1663
1979
  onChange: onChange,
1664
1980
  multiple: true
1665
1981
  })),
1666
- getByText = _render44.getByText,
1667
- queryByText = _render44.queryByText,
1668
- getByRole = _render44.getByRole,
1669
- getAllByRole = _render44.getAllByRole,
1670
- queryByRole = _render44.queryByRole,
1671
- getByTitle = _render44.getByTitle,
1672
- queryByTitle = _render44.queryByTitle;
1982
+ getByText = _render52.getByText,
1983
+ queryByText = _render52.queryByText,
1984
+ getByRole = _render52.getByRole,
1985
+ getAllByRole = _render52.getAllByRole,
1986
+ queryByRole = _render52.queryByRole,
1987
+ getByTitle = _render52.getByTitle,
1988
+ queryByTitle = _render52.queryByTitle;
1673
1989
 
1674
1990
  var select = getByRole("combobox");
1675
1991
 
@@ -1681,9 +1997,11 @@ describe("Select component tests", function () {
1681
1997
 
1682
1998
  _userEvent["default"].click(getAllByRole("option")[13]);
1683
1999
 
1684
- _userEvent["default"].click(getAllByRole("option")[17]); // expect(onChange).toHaveBeenCalledWith({ value: ["blanco", "oviedo", "duero", "ebro"], error: null });
1685
-
2000
+ _userEvent["default"].click(getAllByRole("option")[17]);
1686
2001
 
2002
+ expect(onChange).toHaveBeenCalledWith({
2003
+ value: ["blanco", "oviedo", "duero", "ebro"]
2004
+ });
1687
2005
  expect(queryByRole("listbox")).toBeTruthy();
1688
2006
  expect(getByText("Blanco, Oviedo, Duero, Ebro")).toBeTruthy();
1689
2007
  expect(getByText("4", {
@@ -1700,18 +2018,18 @@ describe("Select component tests", function () {
1700
2018
  test("Grouped Options: Multiple selection - Optional option should not be added when the select is marked as multiple", function () {
1701
2019
  var onChange = jest.fn();
1702
2020
 
1703
- var _render45 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_Select["default"], {
2021
+ var _render53 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_Select["default"], {
1704
2022
  label: "test-select-label",
1705
2023
  placeholder: "Choose an option",
1706
- options: group_options,
2024
+ options: groupOptions,
1707
2025
  onChange: onChange,
1708
2026
  multiple: true,
1709
2027
  optional: true
1710
2028
  })),
1711
- getByText = _render45.getByText,
1712
- getAllByText = _render45.getAllByText,
1713
- getByRole = _render45.getByRole,
1714
- getAllByRole = _render45.getAllByRole;
2029
+ getByText = _render53.getByText,
2030
+ getAllByText = _render53.getAllByText,
2031
+ getByRole = _render53.getByRole,
2032
+ getAllByRole = _render53.getAllByRole;
1715
2033
 
1716
2034
  var select = getByRole("combobox");
1717
2035
  expect(getByText("(Optional)")).toBeTruthy();
@@ -1721,19 +2039,21 @@ describe("Select component tests", function () {
1721
2039
  expect(getAllByText("Choose an option").length).toBe(1);
1722
2040
  expect(getAllByRole("option")[0].getAttribute("aria-selected")).toBe("false");
1723
2041
 
1724
- _userEvent["default"].click(getAllByRole("option")[0]); // expect(onChange).toHaveBeenCalledWith({ value: ["azul"], error: null });
1725
-
2042
+ _userEvent["default"].click(getAllByRole("option")[0]);
1726
2043
 
2044
+ expect(onChange).toHaveBeenCalledWith({
2045
+ value: ["azul"]
2046
+ });
1727
2047
  expect(getAllByText("Azul").length).toBe(2);
1728
2048
  });
1729
2049
  test("Grouped Options - If an options was previously selected when its opened (by key press), the visual focus appears always in the selected option", function () {
1730
- var _render46 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_Select["default"], {
2050
+ var _render54 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_Select["default"], {
1731
2051
  label: "test-select-label",
1732
- options: group_options
2052
+ options: groupOptions
1733
2053
  })),
1734
- getByText = _render46.getByText,
1735
- getByRole = _render46.getByRole,
1736
- getAllByRole = _render46.getAllByRole;
2054
+ getByText = _render54.getByText,
2055
+ getByRole = _render54.getByRole,
2056
+ getAllByRole = _render54.getAllByRole;
1737
2057
 
1738
2058
  var select = getByRole("combobox");
1739
2059
 
@@ -1801,14 +2121,13 @@ describe("Select component tests", function () {
1801
2121
  expect(getByText("Verde")).toBeTruthy();
1802
2122
  });
1803
2123
  test("Grouped Options - If an options was previously selected when its opened (by click and key press), the visual focus appears always in the selected option", function () {
1804
- var _render47 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_Select["default"], {
2124
+ var _render55 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_Select["default"], {
1805
2125
  label: "test-select-label",
1806
- options: group_options
2126
+ options: groupOptions
1807
2127
  })),
1808
- getByText = _render47.getByText,
1809
- getByRole = _render47.getByRole,
1810
- getAllByRole = _render47.getAllByRole,
1811
- queryByRole = _render47.queryByRole;
2128
+ getByText = _render55.getByText,
2129
+ getByRole = _render55.getByRole,
2130
+ getAllByRole = _render55.getAllByRole;
1812
2131
 
1813
2132
  var select = getByRole("combobox");
1814
2133
 
@@ -1872,29 +2191,38 @@ describe("Select component tests", function () {
1872
2191
 
1873
2192
  expect(getByText("Azul")).toBeTruthy();
1874
2193
  });
1875
- test("Renders with correct aria attributes", function () {
1876
- var _render48 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_Select["default"], {
2194
+ test("Multiple selection and optional - Clear action cleans every selected option but does not display an error", function () {
2195
+ var onChange = jest.fn();
2196
+
2197
+ var _render56 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_Select["default"], {
1877
2198
  label: "test-select-label",
1878
- placeholder: "Example",
1879
- options: single_options
2199
+ options: singleOptions,
2200
+ onChange: onChange,
2201
+ multiple: true,
2202
+ optional: true
1880
2203
  })),
1881
- getByText = _render48.getByText,
1882
- getByRole = _render48.getByRole;
2204
+ getByRole = _render56.getByRole,
2205
+ getAllByRole = _render56.getAllByRole,
2206
+ getByTitle = _render56.getByTitle;
1883
2207
 
1884
2208
  var select = getByRole("combobox");
1885
- var label = getByText("test-select-label");
1886
- expect(select.getAttribute("aria-disabled")).toBe("false");
1887
- expect(select.getAttribute("aria-haspopup")).toBe("listbox");
1888
- expect(select.getAttribute("aria-expanded")).toBe("false");
1889
- expect(select.getAttribute("aria-required")).toBe("true");
1890
- expect(select.getAttribute("aria-labelledby")).toBe(label.id);
1891
- expect(select.getAttribute("aria-activedescendant")).toBeNull();
1892
- expect(select.getAttribute("aria-invalid")).toBe("false");
1893
2209
 
1894
2210
  _userEvent["default"].click(select);
1895
2211
 
1896
- var list = getByRole("listbox");
1897
- expect(select.getAttribute("aria-controls")).toBe(list.id);
1898
- expect(list.getAttribute("aria-multiselectable")).toBe("false");
2212
+ _userEvent["default"].click(getAllByRole("option")[5]);
2213
+
2214
+ _userEvent["default"].click(getAllByRole("option")[8]);
2215
+
2216
+ _userEvent["default"].click(getAllByRole("option")[13]);
2217
+
2218
+ expect(onChange).toHaveBeenCalledWith({
2219
+ value: ["6", "9", "14"]
2220
+ });
2221
+
2222
+ _userEvent["default"].click(getByTitle("Clear selection"));
2223
+
2224
+ expect(onChange).toHaveBeenCalledWith({
2225
+ value: []
2226
+ });
1899
2227
  });
1900
2228
  });