@dxc-technology/halstack-react 0.0.0-dfd09f9 → 0.0.0-e01c6f9

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 (315) hide show
  1. package/BackgroundColorContext.d.ts +1 -10
  2. package/BackgroundColorContext.js +5 -22
  3. package/HalstackContext.d.ts +1235 -0
  4. package/HalstackContext.js +310 -0
  5. package/README.md +47 -0
  6. package/accordion/Accordion.d.ts +1 -1
  7. package/accordion/Accordion.js +116 -160
  8. package/accordion/Accordion.stories.tsx +103 -127
  9. package/accordion/Accordion.test.js +25 -41
  10. package/accordion/types.d.ts +5 -16
  11. package/accordion-group/AccordionGroup.d.ts +4 -3
  12. package/accordion-group/AccordionGroup.js +31 -98
  13. package/accordion-group/AccordionGroup.stories.tsx +94 -67
  14. package/accordion-group/AccordionGroup.test.js +52 -105
  15. package/accordion-group/AccordionGroupAccordion.d.ts +4 -0
  16. package/accordion-group/AccordionGroupAccordion.js +31 -0
  17. package/accordion-group/types.d.ts +11 -16
  18. package/action-icon/ActionIcon.d.ts +4 -0
  19. package/action-icon/ActionIcon.js +43 -0
  20. package/action-icon/types.d.ts +26 -0
  21. package/alert/Alert.js +23 -59
  22. package/alert/Alert.stories.tsx +28 -0
  23. package/alert/Alert.test.js +29 -46
  24. package/alert/types.d.ts +5 -5
  25. package/badge/Badge.d.ts +1 -1
  26. package/badge/Badge.js +8 -19
  27. package/badge/types.d.ts +2 -1
  28. package/bleed/Bleed.js +14 -55
  29. package/bleed/Bleed.stories.tsx +95 -95
  30. package/bleed/types.d.ts +2 -2
  31. package/box/Box.d.ts +1 -1
  32. package/box/Box.js +30 -81
  33. package/box/Box.stories.tsx +38 -51
  34. package/box/Box.test.js +2 -7
  35. package/box/types.d.ts +3 -14
  36. package/bulleted-list/BulletedList.d.ts +7 -0
  37. package/bulleted-list/BulletedList.js +89 -0
  38. package/bulleted-list/BulletedList.stories.tsx +115 -0
  39. package/bulleted-list/types.d.ts +38 -0
  40. package/button/Button.d.ts +1 -1
  41. package/button/Button.js +62 -113
  42. package/button/Button.stories.tsx +160 -90
  43. package/button/Button.test.js +18 -17
  44. package/button/types.d.ts +12 -8
  45. package/card/Card.d.ts +1 -1
  46. package/card/Card.js +58 -102
  47. package/card/Card.stories.tsx +12 -42
  48. package/card/Card.test.js +11 -22
  49. package/card/types.d.ts +6 -11
  50. package/checkbox/Checkbox.d.ts +2 -2
  51. package/checkbox/Checkbox.js +141 -180
  52. package/checkbox/Checkbox.stories.tsx +128 -94
  53. package/checkbox/Checkbox.test.js +160 -39
  54. package/checkbox/types.d.ts +12 -6
  55. package/chip/Chip.js +39 -79
  56. package/chip/Chip.stories.tsx +121 -26
  57. package/chip/Chip.test.js +16 -31
  58. package/chip/types.d.ts +4 -4
  59. package/common/OpenSans.css +68 -80
  60. package/common/coreTokens.d.ts +237 -0
  61. package/common/coreTokens.js +184 -0
  62. package/common/utils.d.ts +1 -0
  63. package/common/utils.js +6 -12
  64. package/common/variables.d.ts +1381 -0
  65. package/common/variables.js +998 -1117
  66. package/container/Container.d.ts +4 -0
  67. package/container/Container.js +194 -0
  68. package/container/Container.stories.tsx +214 -0
  69. package/container/types.d.ts +74 -0
  70. package/date-input/Calendar.d.ts +4 -0
  71. package/date-input/Calendar.js +214 -0
  72. package/date-input/DateInput.js +153 -299
  73. package/date-input/DateInput.stories.tsx +203 -56
  74. package/date-input/DateInput.test.js +700 -371
  75. package/date-input/DatePicker.d.ts +4 -0
  76. package/date-input/DatePicker.js +115 -0
  77. package/date-input/Icons.d.ts +6 -0
  78. package/date-input/Icons.js +58 -0
  79. package/date-input/YearPicker.d.ts +4 -0
  80. package/date-input/YearPicker.js +100 -0
  81. package/date-input/types.d.ts +72 -15
  82. package/dialog/Dialog.d.ts +1 -1
  83. package/dialog/Dialog.js +73 -107
  84. package/dialog/Dialog.stories.tsx +320 -167
  85. package/dialog/Dialog.test.js +287 -20
  86. package/dialog/types.d.ts +18 -25
  87. package/dropdown/Dropdown.d.ts +1 -1
  88. package/dropdown/Dropdown.js +243 -304
  89. package/dropdown/Dropdown.stories.tsx +245 -56
  90. package/dropdown/Dropdown.test.js +575 -165
  91. package/dropdown/DropdownMenu.d.ts +4 -0
  92. package/dropdown/DropdownMenu.js +63 -0
  93. package/dropdown/DropdownMenuItem.d.ts +4 -0
  94. package/dropdown/DropdownMenuItem.js +67 -0
  95. package/dropdown/types.d.ts +32 -14
  96. package/file-input/FileInput.d.ts +2 -2
  97. package/file-input/FileInput.js +246 -357
  98. package/file-input/FileInput.stories.tsx +123 -12
  99. package/file-input/FileInput.test.js +369 -367
  100. package/file-input/FileItem.d.ts +4 -14
  101. package/file-input/FileItem.js +50 -99
  102. package/file-input/types.d.ts +25 -8
  103. package/flex/Flex.d.ts +4 -0
  104. package/flex/Flex.js +57 -0
  105. package/flex/Flex.stories.tsx +112 -0
  106. package/flex/types.d.ts +97 -0
  107. package/footer/Footer.d.ts +1 -1
  108. package/footer/Footer.js +57 -115
  109. package/footer/Footer.stories.tsx +41 -19
  110. package/footer/Footer.test.js +33 -57
  111. package/footer/Icons.d.ts +2 -2
  112. package/footer/Icons.js +3 -8
  113. package/footer/types.d.ts +21 -28
  114. package/grid/Grid.d.ts +7 -0
  115. package/grid/Grid.js +76 -0
  116. package/grid/Grid.stories.tsx +219 -0
  117. package/grid/types.d.ts +115 -0
  118. package/header/Header.d.ts +4 -3
  119. package/header/Header.js +90 -170
  120. package/header/Header.stories.tsx +118 -39
  121. package/header/Header.test.js +13 -26
  122. package/header/Icons.d.ts +2 -2
  123. package/header/Icons.js +4 -9
  124. package/header/types.d.ts +5 -19
  125. package/heading/Heading.js +10 -32
  126. package/heading/Heading.test.js +71 -88
  127. package/heading/types.d.ts +7 -7
  128. package/image/Image.d.ts +4 -0
  129. package/image/Image.js +70 -0
  130. package/image/Image.stories.tsx +127 -0
  131. package/image/types.d.ts +72 -0
  132. package/inset/Inset.js +14 -55
  133. package/inset/Inset.stories.tsx +37 -36
  134. package/inset/types.d.ts +2 -2
  135. package/layout/ApplicationLayout.d.ts +16 -6
  136. package/layout/ApplicationLayout.js +82 -166
  137. package/layout/ApplicationLayout.stories.tsx +85 -94
  138. package/layout/Icons.d.ts +8 -0
  139. package/layout/Icons.js +51 -48
  140. package/layout/SidenavContext.d.ts +5 -0
  141. package/layout/SidenavContext.js +13 -0
  142. package/layout/types.d.ts +19 -35
  143. package/link/Link.d.ts +3 -2
  144. package/link/Link.js +61 -99
  145. package/link/Link.stories.tsx +155 -53
  146. package/link/Link.test.js +25 -53
  147. package/link/types.d.ts +15 -31
  148. package/main.d.ts +11 -12
  149. package/main.js +58 -109
  150. package/nav-tabs/NavTabs.d.ts +8 -0
  151. package/nav-tabs/NavTabs.js +90 -0
  152. package/nav-tabs/NavTabs.stories.tsx +274 -0
  153. package/nav-tabs/NavTabs.test.js +75 -0
  154. package/nav-tabs/Tab.d.ts +4 -0
  155. package/nav-tabs/Tab.js +117 -0
  156. package/nav-tabs/types.d.ts +52 -0
  157. package/nav-tabs/types.js +5 -0
  158. package/number-input/NumberInput.d.ts +7 -0
  159. package/number-input/NumberInput.js +26 -35
  160. package/number-input/NumberInput.stories.tsx +42 -26
  161. package/number-input/NumberInput.test.js +701 -377
  162. package/number-input/types.d.ts +12 -6
  163. package/package.json +44 -46
  164. package/paginator/Icons.d.ts +5 -0
  165. package/paginator/Icons.js +21 -47
  166. package/paginator/Paginator.js +34 -91
  167. package/paginator/Paginator.stories.tsx +24 -0
  168. package/paginator/Paginator.test.js +280 -211
  169. package/paginator/types.d.ts +3 -3
  170. package/paragraph/Paragraph.d.ts +5 -0
  171. package/paragraph/Paragraph.js +22 -0
  172. package/paragraph/Paragraph.stories.tsx +27 -0
  173. package/password-input/Icons.d.ts +6 -0
  174. package/password-input/Icons.js +35 -0
  175. package/password-input/PasswordInput.js +57 -123
  176. package/password-input/PasswordInput.stories.tsx +1 -33
  177. package/password-input/PasswordInput.test.js +160 -143
  178. package/password-input/types.d.ts +9 -8
  179. package/progress-bar/ProgressBar.js +65 -91
  180. package/progress-bar/ProgressBar.stories.tsx +93 -0
  181. package/progress-bar/ProgressBar.test.js +72 -44
  182. package/progress-bar/types.d.ts +3 -3
  183. package/quick-nav/QuickNav.js +71 -41
  184. package/quick-nav/QuickNav.stories.tsx +146 -27
  185. package/quick-nav/types.d.ts +10 -10
  186. package/radio-group/Radio.d.ts +1 -1
  187. package/radio-group/Radio.js +59 -76
  188. package/radio-group/RadioGroup.js +71 -116
  189. package/radio-group/RadioGroup.stories.tsx +132 -18
  190. package/radio-group/RadioGroup.test.js +518 -457
  191. package/radio-group/types.d.ts +10 -10
  192. package/resultset-table/Icons.d.ts +7 -0
  193. package/resultset-table/Icons.js +47 -0
  194. package/resultset-table/ResultsetTable.js +159 -0
  195. package/{resultsetTable → resultset-table}/ResultsetTable.stories.tsx +50 -25
  196. package/{resultsetTable → resultset-table}/ResultsetTable.test.js +117 -118
  197. package/{resultsetTable → resultset-table}/types.d.ts +7 -7
  198. package/resultset-table/types.js +5 -0
  199. package/select/Icons.d.ts +7 -7
  200. package/select/Icons.js +1 -5
  201. package/select/Listbox.d.ts +1 -1
  202. package/select/Listbox.js +46 -51
  203. package/select/Option.js +20 -50
  204. package/select/Select.js +168 -242
  205. package/select/Select.stories.tsx +525 -136
  206. package/select/Select.test.js +2009 -1696
  207. package/select/types.d.ts +16 -20
  208. package/sidenav/Icons.d.ts +7 -0
  209. package/sidenav/Icons.js +47 -0
  210. package/sidenav/Sidenav.d.ts +6 -5
  211. package/sidenav/Sidenav.js +131 -71
  212. package/sidenav/Sidenav.stories.tsx +251 -151
  213. package/sidenav/Sidenav.test.js +26 -45
  214. package/sidenav/types.d.ts +52 -26
  215. package/slider/Slider.d.ts +2 -2
  216. package/slider/Slider.js +148 -181
  217. package/slider/Slider.test.js +185 -81
  218. package/slider/types.d.ts +7 -3
  219. package/spinner/Spinner.js +31 -75
  220. package/spinner/{Spinner.stories.jsx → Spinner.stories.tsx} +53 -27
  221. package/spinner/Spinner.test.js +26 -35
  222. package/spinner/types.d.ts +3 -3
  223. package/switch/Switch.d.ts +2 -2
  224. package/switch/Switch.js +143 -121
  225. package/switch/Switch.stories.tsx +41 -64
  226. package/switch/Switch.test.js +138 -56
  227. package/switch/types.d.ts +9 -5
  228. package/table/Table.js +8 -30
  229. package/table/{Table.stories.jsx → Table.stories.tsx} +80 -1
  230. package/table/Table.test.js +3 -8
  231. package/table/types.d.ts +8 -8
  232. package/tabs/Tab.d.ts +4 -0
  233. package/tabs/Tab.js +113 -0
  234. package/tabs/Tabs.js +314 -141
  235. package/tabs/Tabs.stories.tsx +119 -11
  236. package/tabs/Tabs.test.js +223 -69
  237. package/tabs/types.d.ts +28 -18
  238. package/tag/Tag.js +33 -68
  239. package/tag/Tag.stories.tsx +14 -1
  240. package/tag/Tag.test.js +20 -31
  241. package/tag/types.d.ts +7 -7
  242. package/text-input/Icons.d.ts +8 -0
  243. package/text-input/Icons.js +56 -0
  244. package/text-input/Suggestion.d.ts +4 -0
  245. package/text-input/Suggestion.js +67 -0
  246. package/text-input/Suggestions.d.ts +4 -0
  247. package/text-input/Suggestions.js +84 -0
  248. package/text-input/TextInput.js +323 -547
  249. package/text-input/TextInput.stories.tsx +266 -275
  250. package/text-input/TextInput.test.js +1403 -1376
  251. package/text-input/types.d.ts +53 -14
  252. package/textarea/Textarea.js +79 -131
  253. package/textarea/Textarea.stories.tsx +174 -0
  254. package/textarea/Textarea.test.js +152 -183
  255. package/textarea/types.d.ts +10 -6
  256. package/toggle-group/ToggleGroup.d.ts +2 -2
  257. package/toggle-group/ToggleGroup.js +92 -106
  258. package/toggle-group/ToggleGroup.stories.tsx +49 -4
  259. package/toggle-group/ToggleGroup.test.js +69 -88
  260. package/toggle-group/types.d.ts +26 -17
  261. package/typography/Typography.d.ts +4 -0
  262. package/typography/Typography.js +23 -0
  263. package/typography/Typography.stories.tsx +198 -0
  264. package/typography/types.d.ts +18 -0
  265. package/typography/types.js +5 -0
  266. package/useTheme.d.ts +1133 -1
  267. package/useTheme.js +4 -11
  268. package/useTranslatedLabels.d.ts +85 -0
  269. package/useTranslatedLabels.js +14 -0
  270. package/utils/BaseTypography.d.ts +21 -0
  271. package/utils/BaseTypography.js +94 -0
  272. package/utils/FocusLock.d.ts +13 -0
  273. package/utils/FocusLock.js +121 -0
  274. package/wizard/Wizard.js +51 -91
  275. package/wizard/Wizard.stories.tsx +40 -1
  276. package/wizard/Wizard.test.js +54 -81
  277. package/wizard/types.d.ts +7 -7
  278. package/ThemeContext.d.ts +0 -10
  279. package/ThemeContext.js +0 -243
  280. package/card/ice-cream.jpg +0 -0
  281. package/common/RequiredComponent.js +0 -32
  282. package/list/List.d.ts +0 -4
  283. package/list/List.js +0 -47
  284. package/list/List.stories.tsx +0 -95
  285. package/list/types.d.ts +0 -7
  286. package/number-input/NumberInputContext.d.ts +0 -4
  287. package/number-input/NumberInputContext.js +0 -19
  288. package/number-input/numberInputContextTypes.d.ts +0 -19
  289. package/progress-bar/ProgressBar.stories.jsx +0 -58
  290. package/radio/Radio.d.ts +0 -4
  291. package/radio/Radio.js +0 -174
  292. package/radio/Radio.stories.tsx +0 -192
  293. package/radio/Radio.test.js +0 -71
  294. package/radio/types.d.ts +0 -54
  295. package/resultsetTable/ResultsetTable.js +0 -254
  296. package/row/Row.d.ts +0 -3
  297. package/row/Row.js +0 -127
  298. package/row/Row.stories.tsx +0 -237
  299. package/row/types.d.ts +0 -28
  300. package/slider/Slider.stories.tsx +0 -177
  301. package/stack/Stack.d.ts +0 -3
  302. package/stack/Stack.js +0 -97
  303. package/stack/Stack.stories.tsx +0 -164
  304. package/stack/types.d.ts +0 -24
  305. package/text/Text.d.ts +0 -7
  306. package/text/Text.js +0 -30
  307. package/text/Text.stories.tsx +0 -19
  308. package/textarea/Textarea.stories.jsx +0 -157
  309. /package/{list → action-icon}/types.js +0 -0
  310. /package/{radio → bulleted-list}/types.js +0 -0
  311. /package/{resultsetTable → container}/types.js +0 -0
  312. /package/{row → flex}/types.js +0 -0
  313. /package/{stack → grid}/types.js +0 -0
  314. /package/{number-input/numberInputContextTypes.js → image/types.js} +0 -0
  315. /package/{resultsetTable → resultset-table}/ResultsetTable.d.ts +0 -0
@@ -1,12 +1,12 @@
1
1
  import React from "react";
2
-
3
- import { userEvent, within, waitFor } from "@storybook/testing-library";
4
- import { fireEvent } from "@testing-library/react";
5
-
2
+ import { userEvent, within } from "@storybook/testing-library";
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 { ThemeProvider } from "styled-components";
8
+ import useTheme from "../useTheme";
9
+ import { HalstackProvider } from "../HalstackContext";
10
10
 
11
11
  export default {
12
12
  title: "Select",
@@ -14,12 +14,14 @@ export default {
14
14
  };
15
15
 
16
16
  const one_option = [{ label: "Option 01", value: "1" }];
17
+
17
18
  const single_options = [
18
19
  { label: "Option 01", value: "1" },
19
20
  { label: "Option 02", value: "2" },
20
21
  { label: "Option 03", value: "3" },
21
22
  { label: "Option 04", value: "4" },
22
23
  ];
24
+
23
25
  const group_options = [
24
26
  {
25
27
  label: "Group 001",
@@ -62,6 +64,7 @@ const group_options = [
62
64
  ],
63
65
  },
64
66
  ];
67
+
65
68
  const icon_options_grouped = [
66
69
  {
67
70
  label: "Group 001",
@@ -125,6 +128,7 @@ const icon_options_grouped = [
125
128
  ],
126
129
  },
127
130
  ];
131
+
128
132
  const icon_options = [
129
133
  {
130
134
  label: "3G Mobile",
@@ -173,6 +177,7 @@ const icon_options = [
173
177
  ),
174
178
  },
175
179
  ];
180
+
176
181
  const url_options = [
177
182
  {
178
183
  label: "Social Media",
@@ -183,14 +188,36 @@ const url_options = [
183
188
  icon: "https://upload.wikimedia.org/wikipedia/commons/thumb/e/e7/Instagram_logo_2016.svg/800px-Instagram_logo_2016.svg.png",
184
189
  },
185
190
  {
186
- label: "Twitter",
187
- value: "twitter",
188
- icon: "https://cdn.computerhoy.com/sites/navi.axelspringer.es/public/styles/480/public/media/image/2013/08/17981-logo-twitter.png?itok=dElA6iAV",
191
+ label: "X",
192
+ value: "x",
193
+ icon: "https://static.dezeen.com/uploads/2023/07/x-logo-twitter-elon-musk_dezeen_2364_col_0.jpg",
189
194
  },
190
195
  {
191
196
  label: "Facebook",
192
197
  value: "facebook",
193
- icon: "https://upload.wikimedia.org/wikipedia/commons/thumb/b/b8/2021_Facebook_icon.svg/2048px-2021_Facebook_icon.svg.png",
198
+ icon: (
199
+ <svg
200
+ version="1.1"
201
+ id="Capa_1"
202
+ x="0px"
203
+ y="0px"
204
+ width="438.536px"
205
+ height="438.536px"
206
+ viewBox="0 0 438.536 438.536"
207
+ fill="#4267B2"
208
+ >
209
+ <g>
210
+ <path
211
+ d="M414.41,24.123C398.333,8.042,378.963,0,356.315,0H82.228C59.58,0,40.21,8.042,24.126,24.123
212
+ C8.045,40.207,0.003,59.576,0.003,82.225v274.084c0,22.647,8.042,42.018,24.123,58.102c16.084,16.084,35.454,24.126,58.102,24.126
213
+ h274.084c22.648,0,42.018-8.042,58.095-24.126c16.084-16.084,24.126-35.454,24.126-58.102V82.225
214
+ C438.532,59.576,430.49,40.204,414.41,24.123z M373.155,225.548h-49.963V406.84h-74.802V225.548H210.99V163.02h37.401v-37.402
215
+ c0-26.838,6.283-47.107,18.843-60.813c12.559-13.706,33.304-20.555,62.242-20.555h49.963v62.526h-31.401
216
+ c-10.663,0-17.467,1.853-20.417,5.568c-2.949,3.711-4.428,10.23-4.428,19.558v31.119h56.534L373.155,225.548z"
217
+ />
218
+ </g>
219
+ </svg>
220
+ ),
194
221
  },
195
222
  {
196
223
  label: "Pinterest",
@@ -220,13 +247,22 @@ const url_options = [
220
247
  ],
221
248
  },
222
249
  ];
250
+
223
251
  const optionsWithEllipsisMedium = [
224
252
  { label: "Optiond1234567890123456789012345678901234", value: "1" },
225
253
  { label: "Optiond12345678901234567890123456789012345", value: "2" },
226
254
  { label: "Option 031111111111111111111111111111222", value: "3" },
227
- { label: "Option 03111111111111111111111111111222", value: "4" },
228
255
  ];
229
256
 
257
+ const opinionatedTheme = {
258
+ select: {
259
+ selectedOptionBackgroundColor: "#e6f4ff",
260
+ fontColor: "#000000",
261
+ optionFontColor: "#000000",
262
+ hoverBorderColor: "#a46ede",
263
+ },
264
+ };
265
+
230
266
  const Select = () => (
231
267
  <>
232
268
  <Title title="States" theme="light" level={2} />
@@ -339,39 +375,405 @@ const Select = () => (
339
375
  <Title title="Multiple selection with ellipsis" theme="light" level={4} />
340
376
  <DxcSelect label="Label" options={single_options} multiple defaultValue={["1", "2", "3", "4"]} />
341
377
  <Title title="Value with ellipsis" theme="light" level={4} />
342
- <DxcSelect label="Label" options={optionsWithEllipsisMedium} defaultValue="1" size="medium" />
343
- <Title title="Option with ellipsis" theme="light" level={4} />
378
+ <DxcSelect label="Label" options={optionsWithEllipsisMedium} defaultValue="1" />
379
+ <Title title="Options with ellipsis" theme="light" level={4} />
344
380
  <DxcSelect
345
381
  label="Label"
346
382
  placeholder="Choose an option"
347
383
  defaultValue="1"
348
384
  options={optionsWithEllipsisMedium}
349
- size="medium"
385
+ margin={{ top: "xxlarge" }}
350
386
  />
351
387
  </ExampleContainer>
388
+ <Title title="Opinionated theme" theme="light" level={2} />
389
+ <ExampleContainer pseudoState="pseudo-hover">
390
+ <Title title="Hovered" theme="light" level={4} />
391
+ <HalstackProvider theme={opinionatedTheme}>
392
+ <DxcSelect label="Hovered" options={single_options} />
393
+ </HalstackProvider>
394
+ </ExampleContainer>
395
+ <ExampleContainer pseudoState="pseudo-focus-within">
396
+ <Title title="Focused" theme="light" level={4} />
397
+ <HalstackProvider theme={opinionatedTheme}>
398
+ <DxcSelect label="Focused" options={single_options} />
399
+ </HalstackProvider>
400
+ </ExampleContainer>
401
+ <ExampleContainer>
402
+ <Title title="Disabled" theme="light" level={4} />
403
+ <HalstackProvider theme={opinionatedTheme}>
404
+ <DxcSelect label="Disabled" placeholder="Placeholder" disabled options={single_options} />
405
+ </HalstackProvider>
406
+ </ExampleContainer>
407
+ <ExampleContainer>
408
+ <Title title="Disabled with value" theme="light" level={4} />
409
+ <HalstackProvider theme={opinionatedTheme}>
410
+ <DxcSelect label="Disabled with value" disabled options={single_options} defaultValue="1" />
411
+ </HalstackProvider>
412
+ </ExampleContainer>
413
+ <ExampleContainer>
414
+ <Title title="Error" theme="light" level={4} />
415
+ <HalstackProvider theme={opinionatedTheme}>
416
+ <DxcSelect
417
+ label="Label"
418
+ options={single_options}
419
+ error="Error message."
420
+ helperText="Helper text"
421
+ placeholder="Placeholder"
422
+ />
423
+ <ExampleContainer>
424
+ <Title title="Multiple selection" theme="light" level={4} />
425
+ <DxcSelect label="Multiple select" searchable options={single_options} multiple defaultValue={["1", "2"]} />
426
+ </ExampleContainer>
427
+ <ExampleContainer pseudoState="pseudo-hover">
428
+ <Title title="Multiple clear hovered" theme="light" level={4} />
429
+ <DxcSelect label="Multiple select" options={single_options} multiple defaultValue={["1", "2"]} />
430
+ </ExampleContainer>
431
+ <ExampleContainer pseudoState="pseudo-active">
432
+ <Title title="Multiple clear actived" theme="light" level={4} />
433
+ <DxcSelect label="Multiple select" options={single_options} multiple defaultValue={["1", "2"]} />
434
+ </ExampleContainer>
435
+ </HalstackProvider>
436
+ </ExampleContainer>
352
437
  </>
353
438
  );
354
- export const Chromatic = Select.bind({});
355
- Chromatic.play = async ({ canvasElement }) => {
356
- const canvas = within(canvasElement);
357
- await userEvent.click(canvas.getAllByRole("combobox")[24]);
439
+
440
+ const SelectListbox = () => {
441
+ const colorsTheme: any = useTheme();
442
+
443
+ return (
444
+ <>
445
+ <ThemeProvider theme={colorsTheme.select}>
446
+ <Title title="Listbox" theme="light" level={2} />
447
+ <ExampleContainer>
448
+ <Title
449
+ title="List dialog uses a Radix Popover to appear over elements with a certain z-index"
450
+ theme="light"
451
+ level={3}
452
+ />
453
+ <div
454
+ style={{
455
+ position: "relative",
456
+ display: "flex",
457
+ flexDirection: "column",
458
+ gap: "20px",
459
+ height: "150px",
460
+ width: "min-content",
461
+ marginBottom: "100px",
462
+ padding: "20px",
463
+ border: "1px solid black",
464
+ borderRadius: "4px",
465
+ overflow: "auto",
466
+ zIndex: "1300",
467
+ }}
468
+ >
469
+ <DxcSelect label="Label" options={single_options} optional placeholder="Choose an option" />
470
+ <button style={{ zIndex: "1", width: "100px" }}>Submit</button>
471
+ </div>
472
+ </ExampleContainer>
473
+ <Title title="Listbox option states" theme="light" level={3} />
474
+ <ExampleContainer pseudoState="pseudo-hover">
475
+ <Title title="Hovered option" theme="light" level={4} />
476
+ <Listbox
477
+ id="x"
478
+ currentValue=""
479
+ options={one_option}
480
+ visualFocusIndex={-1}
481
+ lastOptionIndex={0}
482
+ multiple={false}
483
+ optional={false}
484
+ optionalItem={{ label: "Empty", value: "" }}
485
+ searchable={false}
486
+ handleOptionOnClick={() => {}}
487
+ styles={{ width: 360 }}
488
+ />
489
+ </ExampleContainer>
490
+ <ExampleContainer pseudoState="pseudo-active">
491
+ <Title title="Active option" theme="light" level={4} />
492
+ <Listbox
493
+ id="x"
494
+ currentValue=""
495
+ options={one_option}
496
+ visualFocusIndex={-1}
497
+ lastOptionIndex={0}
498
+ multiple={false}
499
+ optional={false}
500
+ optionalItem={{ label: "Empty", value: "" }}
501
+ searchable={false}
502
+ handleOptionOnClick={() => {}}
503
+ styles={{ width: 360 }}
504
+ />
505
+ </ExampleContainer>
506
+ <ExampleContainer>
507
+ <Title title="Focused option" theme="light" level={4} />
508
+ <Listbox
509
+ id="x"
510
+ currentValue=""
511
+ options={one_option}
512
+ visualFocusIndex={0}
513
+ lastOptionIndex={0}
514
+ multiple={false}
515
+ optional={false}
516
+ optionalItem={{ label: "Empty", value: "" }}
517
+ searchable={false}
518
+ handleOptionOnClick={() => {}}
519
+ styles={{ width: 360 }}
520
+ />
521
+ </ExampleContainer>
522
+ <ExampleContainer pseudoState="pseudo-hover">
523
+ <Title title="Hovered selected option" theme="light" level={4} />
524
+ <Listbox
525
+ id="x"
526
+ currentValue="1"
527
+ options={single_options}
528
+ visualFocusIndex={-1}
529
+ lastOptionIndex={3}
530
+ multiple={false}
531
+ optional={false}
532
+ optionalItem={{ label: "Empty", value: "" }}
533
+ searchable={false}
534
+ handleOptionOnClick={() => {}}
535
+ styles={{ width: 360 }}
536
+ />
537
+ </ExampleContainer>
538
+ <ExampleContainer pseudoState="pseudo-active">
539
+ <Title title="Active selected option" theme="light" level={4} />
540
+ <Listbox
541
+ id="x"
542
+ currentValue="2"
543
+ options={single_options}
544
+ visualFocusIndex={0}
545
+ lastOptionIndex={3}
546
+ multiple={false}
547
+ optional={false}
548
+ optionalItem={{ label: "Empty", value: "" }}
549
+ searchable={false}
550
+ handleOptionOnClick={() => {}}
551
+ styles={{ width: 360 }}
552
+ />
553
+ </ExampleContainer>
554
+ <Title title="Listbox with icons" theme="light" level={3} />
555
+ <ExampleContainer>
556
+ <Title title="Icons (SVGs)" theme="light" level={4} />
557
+ <Listbox
558
+ id="x"
559
+ currentValue="3"
560
+ options={icon_options}
561
+ visualFocusIndex={-1}
562
+ lastOptionIndex={3}
563
+ multiple={false}
564
+ optional={false}
565
+ optionalItem={{ label: "Empty", value: "" }}
566
+ searchable={false}
567
+ handleOptionOnClick={() => {}}
568
+ styles={{ width: 360 }}
569
+ />
570
+ </ExampleContainer>
571
+ <ExampleContainer>
572
+ <Title title="Icons (Images)" theme="light" level={4} />
573
+ <Listbox
574
+ id="x"
575
+ currentValue="facebook"
576
+ options={url_options}
577
+ visualFocusIndex={-1}
578
+ lastOptionIndex={6}
579
+ multiple={false}
580
+ optional={false}
581
+ optionalItem={{ label: "Empty", value: "" }}
582
+ searchable={false}
583
+ handleOptionOnClick={() => {}}
584
+ styles={{ width: 360 }}
585
+ />
586
+ </ExampleContainer>
587
+ <ExampleContainer>
588
+ <Title title="Grouped icons (SVGs)" theme="light" level={4} />
589
+ <Listbox
590
+ id="x"
591
+ currentValue={["0", "3"]}
592
+ options={icon_options_grouped}
593
+ visualFocusIndex={-1}
594
+ lastOptionIndex={3}
595
+ multiple={false}
596
+ optional={false}
597
+ optionalItem={{ label: "Empty", value: "" }}
598
+ searchable={false}
599
+ handleOptionOnClick={() => {}}
600
+ styles={{ width: 360 }}
601
+ />
602
+ </ExampleContainer>
603
+ <ExampleContainer>
604
+ <Title title="Grouped icons (Images)" theme="light" level={4} />
605
+ <Listbox
606
+ id="x"
607
+ currentValue={["facebook", "figma"]}
608
+ options={url_options}
609
+ visualFocusIndex={-1}
610
+ lastOptionIndex={6}
611
+ multiple={true}
612
+ optional={false}
613
+ optionalItem={{ label: "Empty", value: "" }}
614
+ searchable={false}
615
+ handleOptionOnClick={() => {}}
616
+ styles={{ width: 360 }}
617
+ />
618
+ </ExampleContainer>
619
+ </ThemeProvider>
620
+ <ThemeProvider theme={colorsTheme.select}>
621
+ <Title title="Opinionated theme" theme="light" level={2} />
622
+ <ExampleContainer pseudoState="pseudo-hover">
623
+ <Title title="Hovered option" theme="light" level={4} />
624
+ <HalstackProvider theme={opinionatedTheme}>
625
+ <Listbox
626
+ id="x"
627
+ currentValue=""
628
+ options={one_option}
629
+ visualFocusIndex={-1}
630
+ lastOptionIndex={0}
631
+ multiple={false}
632
+ optional={false}
633
+ optionalItem={{ label: "Empty", value: "" }}
634
+ searchable={false}
635
+ handleOptionOnClick={() => {}}
636
+ styles={{ width: 360 }}
637
+ />
638
+ </HalstackProvider>
639
+ </ExampleContainer>
640
+ <ExampleContainer pseudoState="pseudo-active">
641
+ <Title title="Active option" theme="light" level={4} />{" "}
642
+ <HalstackProvider theme={opinionatedTheme}>
643
+ <Listbox
644
+ id="x"
645
+ currentValue=""
646
+ options={one_option}
647
+ visualFocusIndex={-1}
648
+ lastOptionIndex={0}
649
+ multiple={false}
650
+ optional={false}
651
+ optionalItem={{ label: "Empty", value: "" }}
652
+ searchable={false}
653
+ handleOptionOnClick={() => {}}
654
+ styles={{ width: 360 }}
655
+ />
656
+ </HalstackProvider>
657
+ </ExampleContainer>
658
+ <ExampleContainer>
659
+ <Title title="Focused option" theme="light" level={4} />{" "}
660
+ <HalstackProvider theme={opinionatedTheme}>
661
+ <Listbox
662
+ id="x"
663
+ currentValue=""
664
+ options={one_option}
665
+ visualFocusIndex={0}
666
+ lastOptionIndex={0}
667
+ multiple={false}
668
+ optional={false}
669
+ optionalItem={{ label: "Empty", value: "" }}
670
+ searchable={false}
671
+ handleOptionOnClick={() => {}}
672
+ styles={{ width: 360 }}
673
+ />
674
+ </HalstackProvider>
675
+ </ExampleContainer>
676
+ <ExampleContainer pseudoState="pseudo-hover">
677
+ <Title title="Hovered selected option" theme="light" level={4} />{" "}
678
+ <HalstackProvider theme={opinionatedTheme}>
679
+ <Listbox
680
+ id="x"
681
+ currentValue="1"
682
+ options={single_options}
683
+ visualFocusIndex={-1}
684
+ lastOptionIndex={3}
685
+ multiple={false}
686
+ optional={false}
687
+ optionalItem={{ label: "Empty", value: "" }}
688
+ searchable={false}
689
+ handleOptionOnClick={() => {}}
690
+ styles={{ width: 360 }}
691
+ />
692
+ </HalstackProvider>
693
+ </ExampleContainer>
694
+ <ExampleContainer pseudoState="pseudo-active">
695
+ <Title title="Active selected option" theme="light" level={4} />{" "}
696
+ <HalstackProvider theme={opinionatedTheme}>
697
+ <Listbox
698
+ id="x"
699
+ currentValue="2"
700
+ options={single_options}
701
+ visualFocusIndex={0}
702
+ lastOptionIndex={3}
703
+ multiple={false}
704
+ optional={false}
705
+ optionalItem={{ label: "Empty", value: "" }}
706
+ searchable={false}
707
+ handleOptionOnClick={() => {}}
708
+ styles={{ width: 360 }}
709
+ />
710
+ </HalstackProvider>
711
+ </ExampleContainer>
712
+ <Title title="Listbox with icons" theme="light" level={3} />
713
+ <ExampleContainer>
714
+ <Title title="Icons (SVGs)" theme="light" level={4} />{" "}
715
+ <HalstackProvider theme={opinionatedTheme}>
716
+ <Listbox
717
+ id="x"
718
+ currentValue="3"
719
+ options={icon_options}
720
+ visualFocusIndex={-1}
721
+ lastOptionIndex={3}
722
+ multiple={false}
723
+ optional={false}
724
+ optionalItem={{ label: "Empty", value: "" }}
725
+ searchable={false}
726
+ handleOptionOnClick={() => {}}
727
+ styles={{ width: 360 }}
728
+ />
729
+ </HalstackProvider>
730
+ </ExampleContainer>
731
+ </ThemeProvider>
732
+ </>
733
+ );
358
734
  };
359
- const DefaultSelect = () => (
735
+
736
+ const SearchableSelect = () => (
360
737
  <ExampleContainer expanded>
361
- <Title title="Default select" theme="light" level={4} />
362
- <DxcSelect label="Select label" options={single_options} optional placeholder="Choose an option" />
738
+ <Title title="Searchable select" theme="light" level={4} />
739
+ <DxcSelect label="Select Label" searchable options={single_options} placeholder="Choose an option" />
363
740
  </ExampleContainer>
364
741
  );
365
- const SearchableSelect = () => (
742
+
743
+ const SearchableSelectOpinionated = () => (
366
744
  <ExampleContainer expanded>
367
745
  <Title title="Searchable select" theme="light" level={4} />
368
- <DxcSelect label="Select Label" searchable options={single_options} placeholder="Choose an option" />
746
+ <HalstackProvider theme={opinionatedTheme}>
747
+ <DxcSelect label="Select Label" searchable options={single_options} placeholder="Choose an option" />
748
+ </HalstackProvider>
749
+ </ExampleContainer>
750
+ );
751
+
752
+ const SearchValue = () => (
753
+ <ExampleContainer expanded>
754
+ <Title title="Searchable select with value" theme="light" level={4} />
755
+ <DxcSelect
756
+ label="Select Label"
757
+ searchable
758
+ defaultValue="1"
759
+ options={single_options}
760
+ placeholder="Choose an option"
761
+ />
369
762
  </ExampleContainer>
370
763
  );
371
- const SearchableWithValue = () => (
764
+
765
+ const SearchValueOpinionated = () => (
372
766
  <ExampleContainer expanded>
373
767
  <Title title="Searchable select with value" theme="light" level={4} />
374
- <DxcSelect label="Select Label" searchable defaultValue="1" options={single_options} placeholder="Choose an option" />
768
+ <HalstackProvider theme={opinionatedTheme}>
769
+ <DxcSelect
770
+ label="Select Label"
771
+ searchable
772
+ defaultValue="1"
773
+ options={single_options}
774
+ placeholder="Choose an option"
775
+ />
776
+ </HalstackProvider>
375
777
  </ExampleContainer>
376
778
  );
377
779
 
@@ -389,78 +791,66 @@ const MultipleSelect = () => (
389
791
  </ExampleContainer>
390
792
  </>
391
793
  );
392
- const DefaultGroupedOptionsSelect = () => (
393
- <ExampleContainer expanded>
394
- <Title title="Grouped options simple select" theme="light" level={4} />
395
- <DxcSelect label="Label" options={group_options} defaultValue="9" placeholder="Choose an option" />
396
- </ExampleContainer>
397
- );
398
- const MultipleGroupedOptionsSelect = () => (
399
- <ExampleContainer expanded>
400
- <Title title="Grouped options multiple select" theme="light" level={4} />
401
- <DxcSelect label="Label" options={group_options} defaultValue={["0", "2"]} multiple placeholder="Choose an option" />
402
- </ExampleContainer>
403
- );
404
- const RescaledIcons = () => (
794
+
795
+ const MultipleSelectOpinioated = () => (
405
796
  <ExampleContainer expanded>
406
- <Title title="Rescaled icons displayed" theme="light" level={4} />
407
- <DxcSelect label="Label" options={url_options} defaultValue="facebook" placeholder="Choose an option" />
797
+ <Title title="Multiple select" theme="light" level={4} />
798
+ <HalstackProvider theme={opinionatedTheme}>
799
+ <DxcSelect
800
+ label="Select label"
801
+ options={single_options}
802
+ defaultValue={["1", "4"]}
803
+ multiple
804
+ placeholder="Choose an option"
805
+ />
806
+ </HalstackProvider>
408
807
  </ExampleContainer>
409
808
  );
410
- const SelectWithIcons = () => (
809
+
810
+ const DefaultGroupedOptionsSelect = () => (
411
811
  <ExampleContainer expanded>
412
- <Title title="Normal icons displayed" theme="light" level={4} />
413
- <DxcSelect label="Label" options={icon_options} defaultValue="3" placeholder="Choose an option" />
812
+ <Title title="Grouped options simple select" theme="light" level={4} />
813
+ <DxcSelect label="Label" options={group_options} defaultValue="9" placeholder="Choose an option" />
414
814
  </ExampleContainer>
415
815
  );
416
- const SelectMultipleWithIcons = () => (
816
+
817
+ const DefaultGroupedOptionsSelectOpinionated = () => (
417
818
  <ExampleContainer expanded>
418
- <Title title="Multiple select with icons" theme="light" level={4} />
419
- <DxcSelect label="Label" options={icon_options} multiple defaultValue={["1", "3"]} placeholder="Choose an option" />
819
+ <Title title="Grouped options simple select" theme="light" level={4} />
820
+ <HalstackProvider theme={opinionatedTheme}>
821
+ <DxcSelect label="Label" options={group_options} defaultValue="9" placeholder="Choose an option" />
822
+ </HalstackProvider>
420
823
  </ExampleContainer>
421
824
  );
422
- const MultipleGroupedOptionsSelectWithIcons = () => (
825
+
826
+ const MultipleGroupedOptionsSelect = () => (
423
827
  <ExampleContainer expanded>
424
- <Title title="Multiple grouped options with icons" theme="light" level={4} />
828
+ <Title title="Grouped options multiple select" theme="light" level={4} />
425
829
  <DxcSelect
426
830
  label="Label"
427
- options={icon_options_grouped}
831
+ options={group_options}
832
+ defaultValue={["0", "2"]}
428
833
  multiple
429
- defaultValue={["3", "2"]}
430
834
  placeholder="Choose an option"
431
835
  />
432
836
  </ExampleContainer>
433
837
  );
434
- const OnlyOneOptionHovered = () => (
435
- <ExampleContainer pseudoState="pseudo-hover" expanded>
436
- <Title title="Hovered Option" theme="light" level={4} />
437
- <DxcSelect label="Hovered" options={one_option} placeholder="Choose an option" />
438
- </ExampleContainer>
439
- );
440
- const OnlyOneOptionFocused = () => (
441
- <ExampleContainer pseudoState="pseudo-focus" expanded>
442
- <Title title="Focused Option" theme="light" level={4} />
443
- <DxcSelect label="Focused" options={one_option} placeholder="Choose an option" />
444
- </ExampleContainer>
445
- );
446
- const OnlyOneOptionActived = () => (
447
- <ExampleContainer pseudoState="pseudo-active" expanded>
448
- <Title title="Actived Option" theme="light" level={4} />
449
- <DxcSelect label="Actived" options={one_option} placeholder="Choose an option" />
450
- </ExampleContainer>
451
- );
452
- const SelectedOptionHovered = () => (
453
- <ExampleContainer pseudoState="pseudo-hover" expanded>
454
- <Title title="Hovered Selected Option" theme="light" level={4} />
455
- <DxcSelect label="Hovered" defaultValue="1" options={one_option} placeholder="Choose an option" />
456
- </ExampleContainer>
457
- );
458
- const SelectedOptionActived = () => (
459
- <ExampleContainer pseudoState="pseudo-active" expanded>
460
- <Title title="Actived Selected Option" theme="light" level={4} />
461
- <DxcSelect label="Actived" defaultValue="1" options={one_option} placeholder="Choose an option" />
838
+
839
+ const MultipleGroupedOptionsSelectOpinionated = () => (
840
+ <ExampleContainer expanded>
841
+ <Title title="Grouped options multiple select" theme="light" level={4} />
842
+ <HalstackProvider theme={opinionatedTheme}>
843
+ <DxcSelect
844
+ label="Label"
845
+ options={group_options}
846
+ defaultValue={["0", "2"]}
847
+ multiple
848
+ placeholder="Choose an option"
849
+ />
850
+ </HalstackProvider>
462
851
  </ExampleContainer>
463
852
  );
853
+
464
854
  const MultipleSearchable = () => (
465
855
  <ExampleContainer expanded>
466
856
  <Title title="Searchable multiple select with value" theme="light" level={4} />
@@ -474,108 +864,107 @@ const MultipleSearchable = () => (
474
864
  />
475
865
  </ExampleContainer>
476
866
  );
477
- export const OptionsDisplayed = DefaultSelect.bind({});
478
- OptionsDisplayed.play = async ({ canvasElement }) => {
867
+
868
+ const MultipleSearchableOpinionated = () => (
869
+ <ExampleContainer expanded>
870
+ <Title title="Searchable multiple select with value" theme="light" level={4} />
871
+ <HalstackProvider theme={opinionatedTheme}>
872
+ <DxcSelect
873
+ label="Select Label"
874
+ searchable
875
+ multiple
876
+ defaultValue={["1", "4"]}
877
+ options={single_options}
878
+ placeholder="Choose an option"
879
+ />
880
+ </HalstackProvider>
881
+ </ExampleContainer>
882
+ );
883
+
884
+ export const Chromatic = Select.bind({});
885
+ Chromatic.play = async ({ canvasElement }) => {
886
+ const canvas = within(canvasElement);
887
+ await userEvent.click(canvas.getAllByRole("combobox")[24]);
888
+ };
889
+
890
+ export const ListboxStates = SelectListbox.bind({});
891
+ ListboxStates.play = async ({ canvasElement }) => {
479
892
  const canvas = within(canvasElement);
480
893
  const select = canvas.getByRole("combobox");
481
894
  await userEvent.click(select);
482
895
  };
896
+
483
897
  export const Searchable = SearchableSelect.bind({});
484
898
  Searchable.play = async ({ canvasElement }) => {
485
899
  const canvas = within(canvasElement);
486
- await userEvent.click(canvas.getByRole("combobox"));
487
- await waitFor(async () => {
488
- userEvent.type(canvas.getByRole("combobox"), "r");
489
- });
900
+ await userEvent.type(canvas.getByRole("combobox"), "r");
490
901
  };
491
- export const SelectSearchableWithValue = SearchableWithValue.bind({});
492
- SelectSearchableWithValue.play = async ({ canvasElement }) => {
902
+
903
+ export const SearchableOpinionated = SearchableSelectOpinionated.bind({});
904
+ SearchableOpinionated.play = async ({ canvasElement }) => {
493
905
  const canvas = within(canvasElement);
494
- await userEvent.click(canvas.getByRole("combobox"));
906
+ await userEvent.type(canvas.getByRole("combobox"), "r");
495
907
  };
496
908
 
497
- export const SelectMultipleSearchableWithValue = MultipleSearchable.bind({});
498
- SelectMultipleSearchableWithValue.play = async ({ canvasElement }) => {
909
+ export const SearchableWithValue = SearchValue.bind({});
910
+ SearchableWithValue.play = async ({ canvasElement }) => {
499
911
  const canvas = within(canvasElement);
500
- await userEvent.click(canvas.getAllByRole("combobox")[0]);
912
+ await userEvent.click(canvas.getByRole("combobox"));
501
913
  };
502
914
 
503
- export const GroupOptionsDisplayed = DefaultGroupedOptionsSelect.bind({});
504
- GroupOptionsDisplayed.play = async ({ canvasElement }) => {
915
+ export const SearchableWithValueOpinionated = SearchValueOpinionated.bind({});
916
+ SearchableWithValueOpinionated.play = async ({ canvasElement }) => {
505
917
  const canvas = within(canvasElement);
506
- const select = canvas.getByRole("combobox");
507
- await userEvent.click(select);
918
+ await userEvent.click(canvas.getByRole("combobox"));
508
919
  };
509
920
 
510
- export const SelectMultipleOptionsDisplayed = MultipleSelect.bind({});
511
- SelectMultipleOptionsDisplayed.play = async ({ canvasElement }) => {
921
+ export const MultipleSearchableWithValue = MultipleSearchable.bind({});
922
+ MultipleSearchableWithValue.play = async ({ canvasElement }) => {
512
923
  const canvas = within(canvasElement);
513
924
  await userEvent.click(canvas.getAllByRole("combobox")[0]);
514
925
  };
515
926
 
516
- export const SelectMultipleGroupedOptionsDisplayed = MultipleGroupedOptionsSelect.bind({});
517
- SelectMultipleGroupedOptionsDisplayed.play = async ({ canvasElement }) => {
927
+ export const MultipleSearchableWithValueOpinionated = MultipleSearchableOpinionated.bind({});
928
+ MultipleSearchableWithValueOpinionated.play = async ({ canvasElement }) => {
518
929
  const canvas = within(canvasElement);
519
- const select = canvas.getByRole("combobox");
520
- await userEvent.click(select);
521
- };
522
- export const SelectWithIconsDisplayed = SelectWithIcons.bind({});
523
- SelectWithIconsDisplayed.play = async ({ canvasElement }) => {
524
- const canvas = within(canvasElement);
525
- const select = canvas.getByRole("combobox");
526
- await userEvent.click(select);
930
+ await userEvent.click(canvas.getAllByRole("combobox")[0]);
527
931
  };
528
932
 
529
- export const SelectWithRescaledIconsDisplayed = RescaledIcons.bind({});
530
- SelectWithRescaledIconsDisplayed.play = async ({ canvasElement }) => {
531
- const canvas = within(canvasElement);
532
- const select = canvas.getByRole("combobox");
533
- await userEvent.click(select);
534
- };
535
- export const SelectMultipleWithIconsDisplayed = SelectMultipleWithIcons.bind({});
536
- SelectMultipleWithIconsDisplayed.play = async ({ canvasElement }) => {
933
+ export const GroupOptionsDisplayed = DefaultGroupedOptionsSelect.bind({});
934
+ GroupOptionsDisplayed.play = async ({ canvasElement }) => {
537
935
  const canvas = within(canvasElement);
538
936
  const select = canvas.getByRole("combobox");
539
937
  await userEvent.click(select);
540
938
  };
541
939
 
542
- export const SelectMultipleGroupedWithIconsDisplayed = MultipleGroupedOptionsSelectWithIcons.bind({});
543
- SelectMultipleGroupedWithIconsDisplayed.play = async ({ canvasElement }) => {
940
+ export const GroupOptionsDisplayedOpinionated = DefaultGroupedOptionsSelectOpinionated.bind({});
941
+ GroupOptionsDisplayedOpinionated.play = async ({ canvasElement }) => {
544
942
  const canvas = within(canvasElement);
545
943
  const select = canvas.getByRole("combobox");
546
944
  await userEvent.click(select);
547
945
  };
548
946
 
549
- export const OptionHovered = OnlyOneOptionHovered.bind({});
550
- OptionHovered.play = async ({ canvasElement }) => {
947
+ export const MultipleOptionsDisplayed = MultipleSelect.bind({});
948
+ MultipleOptionsDisplayed.play = async ({ canvasElement }) => {
551
949
  const canvas = within(canvasElement);
552
- const select = canvas.getByRole("combobox");
553
- await userEvent.click(select);
950
+ await userEvent.click(canvas.getAllByRole("combobox")[0]);
554
951
  };
555
952
 
556
- export const OptionFocused = OnlyOneOptionFocused.bind({});
557
- OptionFocused.play = async ({ canvasElement }) => {
558
- const canvas = within(canvasElement);
559
- const select = canvas.getByRole("combobox");
560
- await userEvent.click(select);
561
- await waitFor(async () => {
562
- fireEvent.keyDown(select, { key: "ArrowDown", code: "ArrowDown", keyCode: 40, charCode: 40 });
563
- });
564
- };
565
- export const OptionActived = OnlyOneOptionActived.bind({});
566
- OptionActived.play = async ({ canvasElement }) => {
953
+ export const MultipleOptionsDisplayedOpinionated = MultipleSelectOpinioated.bind({});
954
+ MultipleOptionsDisplayedOpinionated.play = async ({ canvasElement }) => {
567
955
  const canvas = within(canvasElement);
568
- const select = canvas.getByRole("combobox");
569
- await userEvent.click(select);
956
+ await userEvent.click(canvas.getAllByRole("combobox")[0]);
570
957
  };
571
- export const OptionSelectedHovered = SelectedOptionHovered.bind({});
572
- OptionSelectedHovered.play = async ({ canvasElement }) => {
958
+
959
+ export const MultipleGroupedOptionsDisplayed = MultipleGroupedOptionsSelect.bind({});
960
+ MultipleGroupedOptionsDisplayed.play = async ({ canvasElement }) => {
573
961
  const canvas = within(canvasElement);
574
962
  const select = canvas.getByRole("combobox");
575
963
  await userEvent.click(select);
576
964
  };
577
- export const OptionSelectedActived = SelectedOptionActived.bind({});
578
- OptionSelectedActived.play = async ({ canvasElement }) => {
965
+
966
+ export const MultipleGroupedOptionsDisplayedOpinionated = MultipleGroupedOptionsSelectOpinionated.bind({});
967
+ MultipleGroupedOptionsDisplayedOpinionated.play = async ({ canvasElement }) => {
579
968
  const canvas = within(canvasElement);
580
969
  const select = canvas.getByRole("combobox");
581
970
  await userEvent.click(select);