@dxc-technology/halstack-react 0.0.0-d1e7610 → 0.0.0-d201da1

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 (282) hide show
  1. package/BackgroundColorContext.d.ts +10 -0
  2. package/BackgroundColorContext.js +1 -4
  3. package/HalstackContext.d.ts +12 -0
  4. package/HalstackContext.js +295 -0
  5. package/accordion/Accordion.d.ts +1 -1
  6. package/accordion/Accordion.js +15 -47
  7. package/accordion/Accordion.stories.tsx +307 -0
  8. package/accordion/Accordion.test.js +72 -0
  9. package/accordion/types.d.ts +8 -8
  10. package/accordion-group/AccordionGroup.d.ts +1 -1
  11. package/accordion-group/AccordionGroup.js +16 -17
  12. package/accordion-group/AccordionGroup.stories.tsx +225 -0
  13. package/accordion-group/AccordionGroup.test.js +151 -0
  14. package/accordion-group/types.d.ts +8 -8
  15. package/alert/Alert.js +6 -3
  16. package/alert/Alert.test.js +92 -0
  17. package/alert/types.d.ts +1 -1
  18. package/badge/Badge.d.ts +4 -0
  19. package/badge/Badge.js +6 -4
  20. package/badge/types.d.ts +5 -0
  21. package/{radio → badge}/types.js +0 -0
  22. package/bleed/Bleed.d.ts +3 -0
  23. package/bleed/Bleed.js +51 -0
  24. package/bleed/Bleed.stories.tsx +341 -0
  25. package/bleed/types.d.ts +37 -0
  26. package/bleed/types.js +5 -0
  27. package/box/Box.d.ts +1 -1
  28. package/box/Box.js +26 -39
  29. package/box/Box.test.js +18 -0
  30. package/box/types.d.ts +0 -4
  31. package/button/Button.d.ts +1 -1
  32. package/button/Button.js +24 -27
  33. package/button/Button.stories.tsx +6 -8
  34. package/button/Button.test.js +35 -0
  35. package/button/types.d.ts +5 -9
  36. package/card/Card.js +26 -30
  37. package/card/Card.stories.tsx +201 -0
  38. package/card/Card.test.js +50 -0
  39. package/card/ice-cream.jpg +0 -0
  40. package/card/types.d.ts +4 -6
  41. package/checkbox/Checkbox.d.ts +1 -1
  42. package/checkbox/Checkbox.js +45 -41
  43. package/checkbox/Checkbox.stories.tsx +124 -128
  44. package/checkbox/Checkbox.test.js +78 -0
  45. package/checkbox/types.d.ts +9 -5
  46. package/chip/Chip.d.ts +4 -0
  47. package/chip/Chip.js +16 -76
  48. package/chip/Chip.stories.tsx +6 -8
  49. package/chip/Chip.test.js +56 -0
  50. package/chip/types.d.ts +45 -0
  51. package/chip/types.js +5 -0
  52. package/common/variables.js +234 -341
  53. package/date-input/DateInput.js +63 -52
  54. package/date-input/DateInput.stories.tsx +7 -7
  55. package/date-input/DateInput.test.js +479 -0
  56. package/date-input/types.d.ts +16 -9
  57. package/dialog/Dialog.js +8 -35
  58. package/dialog/Dialog.test.js +40 -0
  59. package/dropdown/Dropdown.d.ts +1 -1
  60. package/dropdown/Dropdown.js +22 -48
  61. package/dropdown/Dropdown.stories.tsx +249 -0
  62. package/dropdown/Dropdown.test.js +189 -0
  63. package/dropdown/types.d.ts +6 -15
  64. package/file-input/FileInput.d.ts +4 -0
  65. package/file-input/FileInput.js +172 -111
  66. package/file-input/FileInput.stories.tsx +507 -0
  67. package/file-input/FileInput.test.js +457 -0
  68. package/file-input/FileItem.d.ts +14 -0
  69. package/file-input/FileItem.js +16 -23
  70. package/file-input/types.d.ts +112 -0
  71. package/file-input/types.js +5 -0
  72. package/footer/Footer.d.ts +1 -1
  73. package/footer/Footer.js +32 -113
  74. package/footer/{Footer.stories.jsx → Footer.stories.tsx} +1 -22
  75. package/footer/Footer.test.js +109 -0
  76. package/footer/Icons.d.ts +2 -0
  77. package/footer/Icons.js +4 -4
  78. package/footer/types.d.ts +21 -17
  79. package/header/Header.js +29 -50
  80. package/header/Header.stories.tsx +172 -0
  81. package/header/Header.test.js +79 -0
  82. package/header/Icons.d.ts +2 -0
  83. package/header/types.d.ts +4 -2
  84. package/heading/Heading.js +1 -1
  85. package/heading/Heading.stories.tsx +54 -0
  86. package/heading/Heading.test.js +186 -0
  87. package/inline/Inline.d.ts +4 -0
  88. package/inline/Inline.js +60 -0
  89. package/inline/Inline.stories.tsx +319 -0
  90. package/inline/types.d.ts +36 -0
  91. package/inline/types.js +5 -0
  92. package/inset/Inset.d.ts +3 -0
  93. package/inset/Inset.js +51 -0
  94. package/inset/Inset.stories.tsx +229 -0
  95. package/inset/types.d.ts +37 -0
  96. package/inset/types.js +5 -0
  97. package/layout/ApplicationLayout.d.ts +11 -0
  98. package/layout/ApplicationLayout.js +84 -120
  99. package/layout/ApplicationLayout.stories.tsx +126 -0
  100. package/layout/Icons.d.ts +5 -0
  101. package/layout/Icons.js +13 -2
  102. package/layout/SidenavContext.d.ts +5 -0
  103. package/layout/SidenavContext.js +19 -0
  104. package/layout/types.d.ts +52 -0
  105. package/layout/types.js +5 -0
  106. package/link/Link.d.ts +3 -2
  107. package/link/Link.js +61 -86
  108. package/link/Link.stories.tsx +131 -15
  109. package/link/Link.test.js +83 -0
  110. package/link/types.d.ts +9 -29
  111. package/list/List.d.ts +4 -0
  112. package/list/List.js +47 -0
  113. package/list/List.stories.tsx +89 -0
  114. package/list/types.d.ts +7 -0
  115. package/list/types.js +5 -0
  116. package/main.d.ts +13 -9
  117. package/main.js +80 -42
  118. package/number-input/NumberInput.js +14 -24
  119. package/number-input/NumberInput.stories.tsx +5 -5
  120. package/number-input/NumberInput.test.js +506 -0
  121. package/number-input/NumberInputContext.d.ts +4 -0
  122. package/number-input/NumberInputContext.js +5 -2
  123. package/number-input/numberInputContextTypes.d.ts +19 -0
  124. package/number-input/numberInputContextTypes.js +5 -0
  125. package/number-input/types.d.ts +17 -10
  126. package/package.json +10 -6
  127. package/paginator/Paginator.js +19 -46
  128. package/paginator/Paginator.test.js +308 -0
  129. package/password-input/PasswordInput.js +23 -19
  130. package/password-input/PasswordInput.stories.tsx +3 -3
  131. package/password-input/PasswordInput.test.js +180 -0
  132. package/password-input/types.d.ts +29 -19
  133. package/progress-bar/ProgressBar.js +5 -5
  134. package/progress-bar/ProgressBar.stories.jsx +11 -11
  135. package/progress-bar/ProgressBar.test.js +65 -0
  136. package/quick-nav/QuickNav.d.ts +4 -0
  137. package/quick-nav/QuickNav.js +116 -0
  138. package/quick-nav/QuickNav.stories.tsx +237 -0
  139. package/quick-nav/types.d.ts +21 -0
  140. package/quick-nav/types.js +5 -0
  141. package/radio-group/Radio.d.ts +4 -0
  142. package/radio-group/Radio.js +141 -0
  143. package/radio-group/RadioGroup.d.ts +4 -0
  144. package/radio-group/RadioGroup.js +282 -0
  145. package/radio-group/RadioGroup.stories.tsx +100 -0
  146. package/radio-group/RadioGroup.test.js +695 -0
  147. package/radio-group/types.d.ts +114 -0
  148. package/radio-group/types.js +5 -0
  149. package/resultsetTable/ResultsetTable.d.ts +4 -0
  150. package/resultsetTable/ResultsetTable.js +9 -29
  151. package/resultsetTable/ResultsetTable.stories.tsx +275 -0
  152. package/resultsetTable/ResultsetTable.test.js +348 -0
  153. package/resultsetTable/types.d.ts +67 -0
  154. package/resultsetTable/types.js +5 -0
  155. package/row/Row.d.ts +3 -0
  156. package/row/Row.js +127 -0
  157. package/row/Row.stories.tsx +237 -0
  158. package/row/types.d.ts +28 -0
  159. package/row/types.js +5 -0
  160. package/select/Icons.d.ts +10 -0
  161. package/select/Icons.js +93 -0
  162. package/select/Listbox.d.ts +4 -0
  163. package/select/Listbox.js +175 -0
  164. package/select/Option.d.ts +4 -0
  165. package/select/Option.js +110 -0
  166. package/select/Select.d.ts +4 -0
  167. package/select/Select.js +161 -366
  168. package/select/Select.stories.tsx +230 -176
  169. package/select/Select.test.js +2162 -0
  170. package/select/types.d.ts +212 -0
  171. package/select/types.js +5 -0
  172. package/sidenav/Sidenav.d.ts +1 -1
  173. package/sidenav/Sidenav.js +22 -11
  174. package/sidenav/Sidenav.stories.tsx +182 -0
  175. package/sidenav/Sidenav.test.js +56 -0
  176. package/slider/Slider.d.ts +1 -1
  177. package/slider/Slider.js +6 -5
  178. package/slider/Slider.stories.tsx +8 -8
  179. package/slider/Slider.test.js +150 -0
  180. package/slider/types.d.ts +4 -0
  181. package/spinner/Spinner.js +3 -3
  182. package/spinner/Spinner.stories.jsx +1 -0
  183. package/spinner/Spinner.test.js +64 -0
  184. package/stack/Stack.d.ts +4 -0
  185. package/stack/Stack.js +56 -0
  186. package/stack/Stack.stories.tsx +263 -0
  187. package/stack/types.d.ts +32 -0
  188. package/stack/types.js +5 -0
  189. package/switch/Switch.d.ts +1 -1
  190. package/switch/Switch.js +37 -21
  191. package/switch/Switch.stories.tsx +15 -15
  192. package/switch/Switch.test.js +98 -0
  193. package/switch/types.d.ts +6 -2
  194. package/table/Table.js +3 -3
  195. package/table/Table.stories.jsx +2 -1
  196. package/table/Table.test.js +26 -0
  197. package/tabs/Tabs.d.ts +1 -1
  198. package/tabs/Tabs.js +20 -20
  199. package/tabs/Tabs.stories.tsx +112 -0
  200. package/tabs/Tabs.test.js +140 -0
  201. package/tabs/types.d.ts +29 -18
  202. package/tabs-nav/NavTabs.d.ts +8 -0
  203. package/tabs-nav/NavTabs.js +125 -0
  204. package/tabs-nav/NavTabs.stories.tsx +170 -0
  205. package/tabs-nav/NavTabs.test.js +82 -0
  206. package/tabs-nav/Tab.d.ts +4 -0
  207. package/tabs-nav/Tab.js +132 -0
  208. package/tabs-nav/types.d.ts +53 -0
  209. package/tabs-nav/types.js +5 -0
  210. package/tag/Tag.d.ts +1 -1
  211. package/tag/Tag.js +18 -28
  212. package/tag/Tag.stories.tsx +26 -29
  213. package/tag/Tag.test.js +60 -0
  214. package/tag/types.d.ts +23 -14
  215. package/text/Text.d.ts +7 -0
  216. package/text/Text.js +30 -0
  217. package/text/Text.stories.tsx +19 -0
  218. package/text-input/Suggestion.d.ts +4 -0
  219. package/text-input/Suggestion.js +55 -0
  220. package/text-input/TextInput.d.ts +4 -0
  221. package/text-input/TextInput.js +91 -146
  222. package/text-input/TextInput.stories.tsx +474 -0
  223. package/text-input/TextInput.test.js +1712 -0
  224. package/text-input/types.d.ts +178 -0
  225. package/text-input/types.js +5 -0
  226. package/textarea/Textarea.d.ts +4 -0
  227. package/textarea/Textarea.js +39 -79
  228. package/textarea/Textarea.stories.jsx +37 -15
  229. package/textarea/Textarea.test.js +437 -0
  230. package/textarea/types.d.ts +137 -0
  231. package/textarea/types.js +5 -0
  232. package/toggle-group/ToggleGroup.d.ts +4 -0
  233. package/toggle-group/ToggleGroup.js +18 -46
  234. package/toggle-group/ToggleGroup.stories.tsx +27 -32
  235. package/toggle-group/ToggleGroup.test.js +156 -0
  236. package/toggle-group/types.d.ts +105 -0
  237. package/toggle-group/types.js +5 -0
  238. package/useTheme.d.ts +2 -0
  239. package/useTheme.js +2 -2
  240. package/useTranslatedLabels.d.ts +2 -0
  241. package/useTranslatedLabels.js +20 -0
  242. package/wizard/Wizard.d.ts +1 -1
  243. package/wizard/Wizard.js +107 -46
  244. package/wizard/{Wizard.stories.jsx → Wizard.stories.tsx} +13 -23
  245. package/wizard/Wizard.test.js +141 -0
  246. package/wizard/types.d.ts +9 -9
  247. package/ThemeContext.js +0 -246
  248. package/V3Select/V3Select.js +0 -455
  249. package/V3Select/index.d.ts +0 -27
  250. package/V3Textarea/V3Textarea.js +0 -260
  251. package/V3Textarea/index.d.ts +0 -27
  252. package/chip/index.d.ts +0 -22
  253. package/date/Date.js +0 -373
  254. package/date/index.d.ts +0 -27
  255. package/file-input/index.d.ts +0 -81
  256. package/input-text/Icons.js +0 -22
  257. package/input-text/InputText.js +0 -611
  258. package/input-text/index.d.ts +0 -36
  259. package/radio/Radio.d.ts +0 -4
  260. package/radio/Radio.js +0 -174
  261. package/radio/Radio.stories.tsx +0 -192
  262. package/radio/types.d.ts +0 -54
  263. package/resultsetTable/index.d.ts +0 -19
  264. package/select/index.d.ts +0 -131
  265. package/text-input/index.d.ts +0 -135
  266. package/textarea/index.d.ts +0 -117
  267. package/toggle/Toggle.js +0 -186
  268. package/toggle/index.d.ts +0 -21
  269. package/toggle-group/index.d.ts +0 -21
  270. package/upload/Upload.js +0 -201
  271. package/upload/buttons-upload/ButtonsUpload.js +0 -111
  272. package/upload/buttons-upload/Icons.js +0 -40
  273. package/upload/dragAndDropArea/DragAndDropArea.js +0 -225
  274. package/upload/dragAndDropArea/Icons.js +0 -39
  275. package/upload/file-upload/FileToUpload.js +0 -115
  276. package/upload/file-upload/Icons.js +0 -66
  277. package/upload/files-upload/FilesToUpload.js +0 -109
  278. package/upload/index.d.ts +0 -15
  279. package/upload/transaction/Icons.js +0 -160
  280. package/upload/transaction/Transaction.js +0 -104
  281. package/upload/transactions/Transactions.js +0 -94
  282. package/wizard/Icons.js +0 -65
@@ -1,19 +1,18 @@
1
1
  import React from "react";
2
-
3
2
  import { userEvent, within, waitFor } from "@storybook/testing-library";
4
- import { fireEvent } from "@testing-library/react";
5
-
6
3
  import Title from "../../.storybook/components/Title";
7
4
  import ExampleContainer from "../../.storybook/components/ExampleContainer";
8
-
9
5
  import DxcSelect from "./Select";
6
+ import Listbox from "./Listbox";
7
+ import DxcButton from "../button/Button";
8
+ import DxcCheckbox from "../checkbox/Checkbox";
10
9
 
11
10
  export default {
12
11
  title: "Select",
13
12
  component: DxcSelect,
14
13
  };
15
- const one_option = [{ label: "Option 01", value: "1" }];
16
14
 
15
+ const one_option = [{ label: "Option 01", value: "1" }];
17
16
  const single_options = [
18
17
  { label: "Option 01", value: "1" },
19
18
  { label: "Option 02", value: "2" },
@@ -224,10 +223,12 @@ const optionsWithEllipsisMedium = [
224
223
  { label: "Optiond1234567890123456789012345678901234", value: "1" },
225
224
  { label: "Optiond12345678901234567890123456789012345", value: "2" },
226
225
  { label: "Option 031111111111111111111111111111222", value: "3" },
227
- { label: "Option 03111111111111111111111111111122", value: "4" },
226
+ { label: "Option 03111111111111111111111111111222", value: "4" },
228
227
  ];
228
+
229
229
  const Select = () => (
230
230
  <>
231
+ <Title title="States" theme="light" level={2} />
231
232
  <ExampleContainer pseudoState="pseudo-hover">
232
233
  <Title title="Hovered" theme="light" level={4} />
233
234
  <DxcSelect label="Hovered" options={single_options} />
@@ -242,115 +243,210 @@ const Select = () => (
242
243
  </ExampleContainer>
243
244
  <ExampleContainer>
244
245
  <Title title="Disabled with value" theme="light" level={4} />
245
- <DxcSelect label="Disabled with value" disabled options={single_options} value="1" />
246
+ <DxcSelect label="Disabled with value" disabled options={single_options} defaultValue="1" />
246
247
  </ExampleContainer>
247
248
  <ExampleContainer>
248
- <Title title="With label" theme="light" level={4} />
249
- <DxcSelect label="Label" options={single_options} />
250
- <Title title="Label and placeholder" theme="light" level={4} />
251
- <DxcSelect label="Label" options={single_options} placeholder="Placeholder" />
252
- <Title title="Label, placeholder and helper text" theme="light" level={4} />
253
- <DxcSelect label="Label" options={single_options} helperText="Helper text" placeholder="Placeholder" />
254
249
  <Title title="Error" theme="light" level={4} />
255
250
  <DxcSelect
256
251
  label="Label"
257
252
  options={single_options}
258
- error="Error message"
253
+ error="Error message."
254
+ helperText="Helper text"
255
+ placeholder="Placeholder"
256
+ />
257
+ </ExampleContainer>
258
+ <ExampleContainer pseudoState="pseudo-hover">
259
+ <Title title="Hovered error" theme="light" level={4} />
260
+ <DxcSelect
261
+ label="Label"
262
+ options={single_options}
263
+ error="Error message."
259
264
  helperText="Helper text"
260
265
  placeholder="Placeholder"
261
266
  />
267
+ </ExampleContainer>
268
+ <Title title="Anatomy" theme="light" level={2} />
269
+ <ExampleContainer>
270
+ <Title title="Label, placeholder and helper text" theme="light" level={4} />
271
+ <DxcSelect label="Label" options={single_options} helperText="Helper text" placeholder="Placeholder" />
272
+ </ExampleContainer>
273
+ <Title title="Variants" theme="light" level={2} />
274
+ <ExampleContainer>
262
275
  <Title title="Simple selection" theme="light" level={4} />
263
- <DxcSelect label="Simple selection" searchable options={single_options} value="2" />
276
+ <DxcSelect label="Simple selection" searchable options={single_options} defaultValue="2" />
277
+ </ExampleContainer>
278
+ <ExampleContainer>
264
279
  <Title title="Multiple selection" theme="light" level={4} />
265
- <DxcSelect label="Multiple select" searchable options={single_options} multiple value={["1", "2"]} />
280
+ <DxcSelect label="Multiple select" searchable options={single_options} multiple defaultValue={["1", "2"]} />
266
281
  </ExampleContainer>
267
-
268
282
  <ExampleContainer pseudoState="pseudo-hover">
269
283
  <Title title="Multiple clear hovered" theme="light" level={4} />
270
- <DxcSelect label="Multiple select" options={single_options} multiple value={["1", "2"]} />
284
+ <DxcSelect label="Multiple select" options={single_options} multiple defaultValue={["1", "2"]} />
271
285
  </ExampleContainer>
272
-
273
286
  <ExampleContainer pseudoState="pseudo-active">
274
287
  <Title title="Multiple clear actived" theme="light" level={4} />
275
- <DxcSelect label="Multiple select" options={single_options} multiple value={["1", "2"]} />
288
+ <DxcSelect label="Multiple select" options={single_options} multiple defaultValue={["1", "2"]} />
289
+ </ExampleContainer>
290
+ <Title title="Sizes" theme="light" level={2} />
291
+ <ExampleContainer>
292
+ <Title title="Small size" theme="light" level={4} />
293
+ <DxcSelect label="Small" options={single_options} size="small" />
294
+ </ExampleContainer>
295
+ <ExampleContainer>
296
+ <Title title="Medium size" theme="light" level={4} />
297
+ <DxcSelect label="Medium" options={single_options} size="medium" />
298
+ </ExampleContainer>
299
+ <ExampleContainer>
300
+ <Title title="Large size" theme="light" level={4} />
301
+ <DxcSelect label="Large" options={single_options} size="large" />
302
+ </ExampleContainer>
303
+ <ExampleContainer>
304
+ <Title title="Fillparent size" theme="light" level={4} />
305
+ <DxcSelect label="Fillparent" options={single_options} size="fillParent" />
306
+ </ExampleContainer>
307
+ <Title title="Margins" theme="light" level={2} />
308
+ <ExampleContainer>
309
+ <Title title="xxsmall margin" theme="light" level={4} />
310
+ <DxcSelect label="xxSmall" options={single_options} margin="xxsmall" />
311
+ </ExampleContainer>
312
+ <ExampleContainer>
313
+ <Title title="xsmall margin" theme="light" level={4} />
314
+ <DxcSelect label="xSmall" options={single_options} margin="xsmall" />
315
+ </ExampleContainer>
316
+ <ExampleContainer>
317
+ <Title title="small margin" theme="light" level={4} />
318
+ <DxcSelect label="Small" options={single_options} margin="small" />
319
+ </ExampleContainer>
320
+ <ExampleContainer>
321
+ <Title title="medium margin" theme="light" level={4} />
322
+ <DxcSelect label="Medium" options={single_options} margin="medium" />
323
+ </ExampleContainer>
324
+ <ExampleContainer>
325
+ <Title title="large margin" theme="light" level={4} />
326
+ <DxcSelect label="Large" options={single_options} margin="large" />
327
+ </ExampleContainer>
328
+ <ExampleContainer>
329
+ <Title title="xlarge margin" theme="light" level={4} />
330
+ <DxcSelect label="xLarge" options={single_options} margin="xlarge" />
331
+ </ExampleContainer>
332
+ <ExampleContainer>
333
+ <Title title="xxlarge margin" theme="light" level={4} />
334
+ <DxcSelect label="xxLarge" options={single_options} margin="xxlarge" />
276
335
  </ExampleContainer>
277
- <>
278
- <Title title="Sizes" theme="light" level={2} />
279
- <ExampleContainer>
280
- <Title title="Small size" theme="light" level={4} />
281
- <DxcSelect label="Small" options={single_options} size="small" />
282
- </ExampleContainer>
283
- <ExampleContainer>
284
- <Title title="Medium size" theme="light" level={4} />
285
- <DxcSelect label="Medium" options={single_options} size="medium" />
286
- </ExampleContainer>
287
- <ExampleContainer>
288
- <Title title="Large size" theme="light" level={4} />
289
- <DxcSelect label="Large" options={single_options} size="large" />
290
- </ExampleContainer>
291
- <ExampleContainer>
292
- <Title title="Fillparent size" theme="light" level={4} />
293
- <DxcSelect label="Fillparent" options={single_options} size="fillParent" />
294
- </ExampleContainer>
295
- </>
296
- <>
297
- <Title title="Margins" theme="light" level={2} />
298
- <ExampleContainer>
299
- <Title title="xxsmall margin" theme="light" level={4} />
300
- <DxcSelect label="xxSmall" options={single_options} margin="xxsmall" />
301
- </ExampleContainer>
302
- <ExampleContainer>
303
- <Title title="xsmall margin" theme="light" level={4} />
304
- <DxcSelect label="xSmall" options={single_options} margin="xsmall" />
305
- </ExampleContainer>
306
- <ExampleContainer>
307
- <Title title="small margin" theme="light" level={4} />
308
- <DxcSelect label="Small" options={single_options} margin="small" />
309
- </ExampleContainer>
310
- <ExampleContainer>
311
- <Title title="medium margin" theme="light" level={4} />
312
- <DxcSelect label="Medium" options={single_options} margin="medium" />
313
- </ExampleContainer>
314
- <ExampleContainer>
315
- <Title title="large margin" theme="light" level={4} />
316
- <DxcSelect label="Large" options={single_options} margin="large" />
317
- </ExampleContainer>
318
- <ExampleContainer>
319
- <Title title="xlarge margin" theme="light" level={4} />
320
- <DxcSelect label="xLarge" options={single_options} margin="xlarge" />
321
- </ExampleContainer>
322
- <ExampleContainer>
323
- <Title title="xxlarge margin" theme="light" level={4} />
324
- <DxcSelect label="xxLarge" options={single_options} margin="xxlarge" />
325
- </ExampleContainer>
326
- </>
327
336
  <ExampleContainer expanded>
328
337
  <Title title="Ellipsis" theme="light" level={2} />
329
338
  <Title title="Multiple selection with ellipsis" theme="light" level={4} />
330
- <DxcSelect label="Label" options={single_options} multiple value={["1", "2", "3", "4"]} />
339
+ <DxcSelect label="Label" options={single_options} multiple defaultValue={["1", "2", "3", "4"]} />
331
340
  <Title title="Value with ellipsis" theme="light" level={4} />
332
- <DxcSelect label="Label" options={optionsWithEllipsisMedium} value="1" size="medium" />
333
- <Title title="Option with ellipsis" theme="light" level={4} />
341
+ <DxcSelect label="Label" options={optionsWithEllipsisMedium} defaultValue="1" size="medium" />
342
+ <Title title="Options with ellipsis" theme="light" level={4} />
334
343
  <DxcSelect
335
344
  label="Label"
336
345
  placeholder="Choose an option"
337
- value="1"
346
+ defaultValue="1"
338
347
  options={optionsWithEllipsisMedium}
339
348
  size="medium"
340
349
  />
341
350
  </ExampleContainer>
342
351
  </>
343
352
  );
344
- export const Chromatic = Select.bind({});
345
- Chromatic.play = async ({ canvasElement }) => {
346
- const canvas = within(canvasElement);
347
- await userEvent.click(canvas.getAllByRole("combobox")[25]);
348
- };
349
- const DefaultSelect = () => (
350
- <ExampleContainer expanded>
351
- <Title title="Default select" theme="light" level={4} />
352
- <DxcSelect label="Select label" options={single_options} optional placeholder="Choose an option" />
353
- </ExampleContainer>
353
+ const SelectListbox = () => (
354
+ <>
355
+ <Title title="Listbox" theme="light" level={2} />
356
+ <Title title="Default with opened listbox" theme="light" level={3} />
357
+ <ExampleContainer>
358
+ <div style={{ display: "flex", gap: "30px", flexDirection: "column", marginBottom: "80px" }}>
359
+ <DxcSelect label="Label" options={single_options} optional placeholder="Choose an option" />
360
+ <DxcCheckbox
361
+ label="You understand the selection and give your consent"
362
+ onChange={() => {}}
363
+ labelPosition="after"
364
+ />
365
+ <DxcButton label="Submit" onClick={() => {}} size="medium" />
366
+ </div>
367
+ </ExampleContainer>
368
+ <Title title="Listbox option states" theme="light" level={3} />
369
+ <ExampleContainer pseudoState="pseudo-hover">
370
+ <Title title="Hovered option" theme="light" level={4} />
371
+ <Listbox
372
+ id="x"
373
+ currentValue=""
374
+ options={one_option}
375
+ visualFocusIndex={-1}
376
+ lastOptionIndex={0}
377
+ multiple={false}
378
+ optional={false}
379
+ optionalItem={{ label: "Empty", value: "" }}
380
+ searchable={false}
381
+ handleOptionOnClick={() => {}}
382
+ styles={{ width: 360 }}
383
+ />
384
+ </ExampleContainer>
385
+ <ExampleContainer pseudoState="pseudo-active">
386
+ <Title title="Active option" theme="light" level={4} />
387
+ <Listbox
388
+ id="x"
389
+ currentValue=""
390
+ options={one_option}
391
+ visualFocusIndex={-1}
392
+ lastOptionIndex={0}
393
+ multiple={false}
394
+ optional={false}
395
+ optionalItem={{ label: "Empty", value: "" }}
396
+ searchable={false}
397
+ handleOptionOnClick={() => {}}
398
+ styles={{ width: 360 }}
399
+ />
400
+ </ExampleContainer>
401
+ <ExampleContainer>
402
+ <Title title="Focused option" theme="light" level={4} />
403
+ <Listbox
404
+ id="x"
405
+ currentValue=""
406
+ options={one_option}
407
+ visualFocusIndex={0}
408
+ lastOptionIndex={0}
409
+ multiple={false}
410
+ optional={false}
411
+ optionalItem={{ label: "Empty", value: "" }}
412
+ searchable={false}
413
+ handleOptionOnClick={() => {}}
414
+ styles={{ width: 360 }}
415
+ />
416
+ </ExampleContainer>
417
+ <ExampleContainer pseudoState="pseudo-hover">
418
+ <Title title="Hovered selected option" theme="light" level={4} />
419
+ <Listbox
420
+ id="x"
421
+ currentValue="1"
422
+ options={single_options}
423
+ visualFocusIndex={-1}
424
+ lastOptionIndex={3}
425
+ multiple={false}
426
+ optional={false}
427
+ optionalItem={{ label: "Empty", value: "" }}
428
+ searchable={false}
429
+ handleOptionOnClick={() => {}}
430
+ styles={{ width: 360 }}
431
+ />
432
+ </ExampleContainer>
433
+ <ExampleContainer pseudoState="pseudo-active">
434
+ <Title title="Active selected option" theme="light" level={4} />
435
+ <Listbox
436
+ id="x"
437
+ currentValue="2"
438
+ options={single_options}
439
+ visualFocusIndex={0}
440
+ lastOptionIndex={3}
441
+ multiple={false}
442
+ optional={false}
443
+ optionalItem={{ label: "Empty", value: "" }}
444
+ searchable={false}
445
+ handleOptionOnClick={() => {}}
446
+ styles={{ width: 360 }}
447
+ />
448
+ </ExampleContainer>
449
+ </>
354
450
  );
355
451
  const SearchableSelect = () => (
356
452
  <ExampleContainer expanded>
@@ -358,13 +454,18 @@ const SearchableSelect = () => (
358
454
  <DxcSelect label="Select Label" searchable options={single_options} placeholder="Choose an option" />
359
455
  </ExampleContainer>
360
456
  );
361
- const SearchableWithValue = () => (
457
+ const SearchValue = () => (
362
458
  <ExampleContainer expanded>
363
459
  <Title title="Searchable select with value" theme="light" level={4} />
364
- <DxcSelect label="Select Label" searchable value="1" options={single_options} placeholder="Choose an option" />
460
+ <DxcSelect
461
+ label="Select Label"
462
+ searchable
463
+ defaultValue="1"
464
+ options={single_options}
465
+ placeholder="Choose an option"
466
+ />
365
467
  </ExampleContainer>
366
468
  );
367
-
368
469
  const MultipleSelect = () => (
369
470
  <>
370
471
  <ExampleContainer expanded>
@@ -372,7 +473,7 @@ const MultipleSelect = () => (
372
473
  <DxcSelect
373
474
  label="Select label"
374
475
  options={single_options}
375
- value={["1", "4"]}
476
+ defaultValue={["1", "4"]}
376
477
  multiple
377
478
  placeholder="Choose an option"
378
479
  />
@@ -382,31 +483,37 @@ const MultipleSelect = () => (
382
483
  const DefaultGroupedOptionsSelect = () => (
383
484
  <ExampleContainer expanded>
384
485
  <Title title="Grouped options simple select" theme="light" level={4} />
385
- <DxcSelect label="Label" options={group_options} value="9" placeholder="Choose an option" />
486
+ <DxcSelect label="Label" options={group_options} defaultValue="9" placeholder="Choose an option" />
386
487
  </ExampleContainer>
387
488
  );
388
489
  const MultipleGroupedOptionsSelect = () => (
389
490
  <ExampleContainer expanded>
390
491
  <Title title="Grouped options multiple select" theme="light" level={4} />
391
- <DxcSelect label="Label" options={group_options} value={["0", "2"]} multiple placeholder="Choose an option" />
492
+ <DxcSelect
493
+ label="Label"
494
+ options={group_options}
495
+ defaultValue={["0", "2"]}
496
+ multiple
497
+ placeholder="Choose an option"
498
+ />
392
499
  </ExampleContainer>
393
500
  );
394
501
  const RescaledIcons = () => (
395
502
  <ExampleContainer expanded>
396
503
  <Title title="Rescaled icons displayed" theme="light" level={4} />
397
- <DxcSelect label="Label" options={url_options} value="facebook" placeholder="Choose an option" />
504
+ <DxcSelect label="Label" options={url_options} defaultValue="facebook" placeholder="Choose an option" />
398
505
  </ExampleContainer>
399
506
  );
400
507
  const SelectWithIcons = () => (
401
508
  <ExampleContainer expanded>
402
509
  <Title title="Normal icons displayed" theme="light" level={4} />
403
- <DxcSelect label="Label" options={icon_options} value="3" placeholder="Choose an option" />
510
+ <DxcSelect label="Label" options={icon_options} defaultValue="3" placeholder="Choose an option" />
404
511
  </ExampleContainer>
405
512
  );
406
513
  const SelectMultipleWithIcons = () => (
407
514
  <ExampleContainer expanded>
408
515
  <Title title="Multiple select with icons" theme="light" level={4} />
409
- <DxcSelect label="Label" options={icon_options} multiple value={["1", "3"]} placeholder="Choose an option" />
516
+ <DxcSelect label="Label" options={icon_options} multiple defaultValue={["1", "3"]} placeholder="Choose an option" />
410
517
  </ExampleContainer>
411
518
  );
412
519
  const MultipleGroupedOptionsSelectWithIcons = () => (
@@ -416,41 +523,12 @@ const MultipleGroupedOptionsSelectWithIcons = () => (
416
523
  label="Label"
417
524
  options={icon_options_grouped}
418
525
  multiple
419
- value={["3", "2"]}
526
+ defaultValue={["3", "2"]}
420
527
  placeholder="Choose an option"
421
528
  />
422
529
  </ExampleContainer>
423
530
  );
424
- const OnlyOneOptionHovered = () => (
425
- <ExampleContainer pseudoState="pseudo-hover" expanded>
426
- <Title title="Hovered Option" theme="light" level={4} />
427
- <DxcSelect label="Hovered" options={one_option} placeholder="Choose an option" />
428
- </ExampleContainer>
429
- );
430
- const OnlyOneOptionFocused = () => (
431
- <ExampleContainer pseudoState="pseudo-focus" expanded>
432
- <Title title="Focused Option" theme="light" level={4} />
433
- <DxcSelect label="Focused" options={one_option} placeholder="Choose an option" />
434
- </ExampleContainer>
435
- );
436
- const OnlyOneOptionActived = () => (
437
- <ExampleContainer pseudoState="pseudo-active" expanded>
438
- <Title title="Actived Option" theme="light" level={4} />
439
- <DxcSelect label="Actived" options={one_option} placeholder="Choose an option" />
440
- </ExampleContainer>
441
- );
442
- const SelectedOptionHovered = () => (
443
- <ExampleContainer pseudoState="pseudo-hover" expanded>
444
- <Title title="Hovered Selected Option" theme="light" level={4} />
445
- <DxcSelect label="Hovered" value="1" options={one_option} placeholder="Choose an option" />
446
- </ExampleContainer>
447
- );
448
- const SelectedOptionActived = () => (
449
- <ExampleContainer pseudoState="pseudo-active" expanded>
450
- <Title title="Actived Selected Option" theme="light" level={4} />
451
- <DxcSelect label="Actived" value="1" options={one_option} placeholder="Choose an option" />
452
- </ExampleContainer>
453
- );
531
+
454
532
  const MultipleSearchable = () => (
455
533
  <ExampleContainer expanded>
456
534
  <Title title="Searchable multiple select with value" theme="light" level={4} />
@@ -458,18 +536,26 @@ const MultipleSearchable = () => (
458
536
  label="Select Label"
459
537
  searchable
460
538
  multiple
461
- value={["1", "4"]}
539
+ defaultValue={["1", "4"]}
462
540
  options={single_options}
463
541
  placeholder="Choose an option"
464
542
  />
465
543
  </ExampleContainer>
466
544
  );
467
- export const OptionsDisplayed = DefaultSelect.bind({});
468
- OptionsDisplayed.play = async ({ canvasElement }) => {
545
+
546
+ export const Chromatic = Select.bind({});
547
+ Chromatic.play = async ({ canvasElement }) => {
548
+ const canvas = within(canvasElement);
549
+ await userEvent.click(canvas.getAllByRole("combobox")[24]);
550
+ };
551
+
552
+ export const ListboxStates = SelectListbox.bind({});
553
+ ListboxStates.play = async ({ canvasElement }) => {
469
554
  const canvas = within(canvasElement);
470
555
  const select = canvas.getByRole("combobox");
471
556
  await userEvent.click(select);
472
557
  };
558
+
473
559
  export const Searchable = SearchableSelect.bind({});
474
560
  Searchable.play = async ({ canvasElement }) => {
475
561
  const canvas = within(canvasElement);
@@ -478,14 +564,15 @@ Searchable.play = async ({ canvasElement }) => {
478
564
  userEvent.type(canvas.getByRole("combobox"), "r");
479
565
  });
480
566
  };
481
- export const SelectSearchableWithValue = SearchableWithValue.bind({});
482
- SelectSearchableWithValue.play = async ({ canvasElement }) => {
567
+
568
+ export const SearchableWithValue = SearchValue.bind({});
569
+ SearchableWithValue.play = async ({ canvasElement }) => {
483
570
  const canvas = within(canvasElement);
484
571
  await userEvent.click(canvas.getByRole("combobox"));
485
572
  };
486
573
 
487
- export const SelectMultipleSearchableWithValue = MultipleSearchable.bind({});
488
- SelectMultipleSearchableWithValue.play = async ({ canvasElement }) => {
574
+ export const MultipleSearchableWithValue = MultipleSearchable.bind({});
575
+ MultipleSearchableWithValue.play = async ({ canvasElement }) => {
489
576
  const canvas = within(canvasElement);
490
577
  await userEvent.click(canvas.getAllByRole("combobox")[0]);
491
578
  };
@@ -497,75 +584,42 @@ GroupOptionsDisplayed.play = async ({ canvasElement }) => {
497
584
  await userEvent.click(select);
498
585
  };
499
586
 
500
- export const SelectMultipleOptionsDisplayed = MultipleSelect.bind({});
501
- SelectMultipleOptionsDisplayed.play = async ({ canvasElement }) => {
587
+ export const MultipleOptionsDisplayed = MultipleSelect.bind({});
588
+ MultipleOptionsDisplayed.play = async ({ canvasElement }) => {
502
589
  const canvas = within(canvasElement);
503
590
  await userEvent.click(canvas.getAllByRole("combobox")[0]);
504
591
  };
505
592
 
506
- export const SelectMultipleGroupedOptionsDisplayed = MultipleGroupedOptionsSelect.bind({});
507
- SelectMultipleGroupedOptionsDisplayed.play = async ({ canvasElement }) => {
508
- const canvas = within(canvasElement);
509
- const select = canvas.getByRole("combobox");
510
- await userEvent.click(select);
511
- };
512
- export const SelectWithIconsDisplayed = SelectWithIcons.bind({});
513
- SelectWithIconsDisplayed.play = async ({ canvasElement }) => {
593
+ export const MultipleGroupedOptionsDisplayed = MultipleGroupedOptionsSelect.bind({});
594
+ MultipleGroupedOptionsDisplayed.play = async ({ canvasElement }) => {
514
595
  const canvas = within(canvasElement);
515
596
  const select = canvas.getByRole("combobox");
516
597
  await userEvent.click(select);
517
598
  };
518
599
 
519
- export const SelectWithRescaledIconsDisplayed = RescaledIcons.bind({});
520
- SelectWithRescaledIconsDisplayed.play = async ({ canvasElement }) => {
521
- const canvas = within(canvasElement);
522
- const select = canvas.getByRole("combobox");
523
- await userEvent.click(select);
524
- };
525
- export const SelectMultipleWithIconsDisplayed = SelectMultipleWithIcons.bind({});
526
- SelectMultipleWithIconsDisplayed.play = async ({ canvasElement }) => {
600
+ export const WithIconsDisplayed = SelectWithIcons.bind({});
601
+ WithIconsDisplayed.play = async ({ canvasElement }) => {
527
602
  const canvas = within(canvasElement);
528
603
  const select = canvas.getByRole("combobox");
529
604
  await userEvent.click(select);
530
605
  };
531
606
 
532
- export const SelectMultipleGroupedWithIconsDisplayed = MultipleGroupedOptionsSelectWithIcons.bind({});
533
- SelectMultipleGroupedWithIconsDisplayed.play = async ({ canvasElement }) => {
607
+ export const WithRescaledIconsDisplayed = RescaledIcons.bind({});
608
+ WithRescaledIconsDisplayed.play = async ({ canvasElement }) => {
534
609
  const canvas = within(canvasElement);
535
610
  const select = canvas.getByRole("combobox");
536
611
  await userEvent.click(select);
537
612
  };
538
613
 
539
- export const OptionHovered = OnlyOneOptionHovered.bind({});
540
- OptionHovered.play = async ({ canvasElement }) => {
614
+ export const MultipleWithIconsDisplayed = SelectMultipleWithIcons.bind({});
615
+ MultipleWithIconsDisplayed.play = async ({ canvasElement }) => {
541
616
  const canvas = within(canvasElement);
542
617
  const select = canvas.getByRole("combobox");
543
618
  await userEvent.click(select);
544
619
  };
545
620
 
546
- export const OptionFocused = OnlyOneOptionFocused.bind({});
547
- OptionFocused.play = async ({ canvasElement }) => {
548
- const canvas = within(canvasElement);
549
- const select = canvas.getByRole("combobox");
550
- await userEvent.click(select);
551
- await waitFor(async () => {
552
- fireEvent.keyDown(select, { key: "ArrowDown", code: "ArrowDown", keyCode: 40, charCode: 40 });
553
- });
554
- };
555
- export const OptionActived = OnlyOneOptionActived.bind({});
556
- OptionActived.play = async ({ canvasElement }) => {
557
- const canvas = within(canvasElement);
558
- const select = canvas.getByRole("combobox");
559
- await userEvent.click(select);
560
- };
561
- export const OptionSelectedHovered = SelectedOptionHovered.bind({});
562
- OptionSelectedHovered.play = async ({ canvasElement }) => {
563
- const canvas = within(canvasElement);
564
- const select = canvas.getByRole("combobox");
565
- await userEvent.click(select);
566
- };
567
- export const OptionSelectedActived = SelectedOptionActived.bind({});
568
- OptionSelectedActived.play = async ({ canvasElement }) => {
621
+ export const MultipleGroupedWithIconsDisplayed = MultipleGroupedOptionsSelectWithIcons.bind({});
622
+ MultipleGroupedWithIconsDisplayed.play = async ({ canvasElement }) => {
569
623
  const canvas = within(canvasElement);
570
624
  const select = canvas.getByRole("combobox");
571
625
  await userEvent.click(select);