@dxc-technology/halstack-react 0.0.0-c2834c3 → 0.0.0-c293b72

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 (397) hide show
  1. package/BackgroundColorContext.d.ts +1 -10
  2. package/BackgroundColorContext.js +5 -22
  3. package/HalstackContext.d.ts +1243 -6
  4. package/HalstackContext.js +126 -114
  5. package/README.md +47 -0
  6. package/accordion/Accordion.accessibility.test.js +71 -0
  7. package/accordion/Accordion.d.ts +1 -1
  8. package/accordion/Accordion.js +104 -161
  9. package/accordion/Accordion.stories.tsx +84 -140
  10. package/accordion/Accordion.test.js +25 -41
  11. package/accordion/types.d.ts +6 -17
  12. package/accordion-group/AccordionGroup.accessibility.test.js +88 -0
  13. package/accordion-group/AccordionGroup.d.ts +2 -2
  14. package/accordion-group/AccordionGroup.js +31 -98
  15. package/accordion-group/AccordionGroup.stories.tsx +94 -67
  16. package/accordion-group/AccordionGroup.test.js +52 -105
  17. package/accordion-group/AccordionGroupAccordion.d.ts +4 -0
  18. package/accordion-group/AccordionGroupAccordion.js +31 -0
  19. package/accordion-group/AccordionGroupContext.d.ts +3 -0
  20. package/accordion-group/AccordionGroupContext.js +8 -0
  21. package/accordion-group/types.d.ts +12 -17
  22. package/action-icon/ActionIcon.accessibility.test.js +63 -0
  23. package/action-icon/ActionIcon.d.ts +4 -0
  24. package/action-icon/ActionIcon.js +48 -0
  25. package/action-icon/ActionIcon.stories.tsx +41 -0
  26. package/action-icon/ActionIcon.test.js +64 -0
  27. package/action-icon/types.d.ts +26 -0
  28. package/alert/Alert.accessibility.test.js +95 -0
  29. package/alert/Alert.js +32 -125
  30. package/alert/Alert.stories.tsx +28 -0
  31. package/alert/Alert.test.js +29 -46
  32. package/alert/types.d.ts +5 -5
  33. package/badge/Badge.accessibility.test.js +129 -0
  34. package/badge/Badge.d.ts +1 -1
  35. package/badge/Badge.js +142 -40
  36. package/badge/Badge.stories.tsx +210 -0
  37. package/badge/Badge.test.js +30 -0
  38. package/badge/types.d.ts +52 -2
  39. package/bleed/Bleed.js +14 -55
  40. package/bleed/Bleed.stories.tsx +95 -95
  41. package/bleed/types.d.ts +2 -2
  42. package/box/Box.accessibility.test.js +33 -0
  43. package/box/Box.d.ts +1 -1
  44. package/box/Box.js +30 -81
  45. package/box/Box.stories.tsx +38 -51
  46. package/box/Box.test.js +2 -7
  47. package/box/types.d.ts +3 -14
  48. package/bulleted-list/BulletedList.accessibility.test.js +107 -0
  49. package/bulleted-list/BulletedList.d.ts +7 -0
  50. package/bulleted-list/BulletedList.js +92 -0
  51. package/bulleted-list/BulletedList.stories.tsx +115 -0
  52. package/bulleted-list/types.d.ts +38 -0
  53. package/button/Button.accessibility.test.js +127 -0
  54. package/button/Button.d.ts +1 -1
  55. package/button/Button.js +64 -117
  56. package/button/Button.stories.tsx +151 -100
  57. package/button/Button.test.js +20 -17
  58. package/button/types.d.ts +12 -8
  59. package/card/Card.accessibility.test.js +36 -0
  60. package/card/Card.d.ts +1 -1
  61. package/card/Card.js +64 -107
  62. package/card/Card.stories.tsx +12 -42
  63. package/card/Card.test.js +11 -22
  64. package/card/types.d.ts +6 -11
  65. package/checkbox/Checkbox.accessibility.test.js +87 -0
  66. package/checkbox/Checkbox.d.ts +2 -2
  67. package/checkbox/Checkbox.js +140 -182
  68. package/checkbox/Checkbox.stories.tsx +128 -94
  69. package/checkbox/Checkbox.test.js +160 -39
  70. package/checkbox/types.d.ts +11 -3
  71. package/chip/Chip.accessibility.test.js +67 -0
  72. package/chip/Chip.js +43 -80
  73. package/chip/Chip.stories.tsx +102 -26
  74. package/chip/Chip.test.js +18 -33
  75. package/chip/types.d.ts +4 -4
  76. package/common/coreTokens.d.ts +237 -0
  77. package/common/coreTokens.js +184 -0
  78. package/common/utils.d.ts +1 -0
  79. package/common/utils.js +6 -12
  80. package/common/variables.d.ts +1395 -0
  81. package/common/variables.js +942 -1159
  82. package/container/Container.d.ts +4 -0
  83. package/container/Container.js +194 -0
  84. package/container/Container.stories.tsx +214 -0
  85. package/container/types.d.ts +74 -0
  86. package/contextual-menu/ContextualMenu.accessibility.test.js +86 -0
  87. package/contextual-menu/ContextualMenu.d.ts +7 -0
  88. package/contextual-menu/ContextualMenu.js +71 -0
  89. package/contextual-menu/ContextualMenu.stories.tsx +182 -0
  90. package/contextual-menu/ContextualMenu.test.js +71 -0
  91. package/contextual-menu/MenuItemAction.d.ts +4 -0
  92. package/contextual-menu/MenuItemAction.js +46 -0
  93. package/contextual-menu/types.d.ts +22 -0
  94. package/date-input/Calendar.d.ts +4 -0
  95. package/date-input/Calendar.js +214 -0
  96. package/date-input/DateInput.accessibility.test.js +216 -0
  97. package/date-input/DateInput.js +149 -299
  98. package/date-input/DateInput.stories.tsx +203 -56
  99. package/date-input/DateInput.test.js +700 -371
  100. package/date-input/DatePicker.d.ts +4 -0
  101. package/date-input/DatePicker.js +121 -0
  102. package/date-input/YearPicker.d.ts +4 -0
  103. package/date-input/YearPicker.js +100 -0
  104. package/date-input/types.d.ts +72 -15
  105. package/dialog/Dialog.accessibility.test.js +69 -0
  106. package/dialog/Dialog.d.ts +1 -1
  107. package/dialog/Dialog.js +73 -107
  108. package/dialog/Dialog.stories.tsx +320 -167
  109. package/dialog/Dialog.test.js +287 -20
  110. package/dialog/types.d.ts +18 -25
  111. package/divider/Divider.accessibility.test.js +33 -0
  112. package/divider/Divider.d.ts +4 -0
  113. package/divider/Divider.js +36 -0
  114. package/divider/Divider.stories.tsx +223 -0
  115. package/divider/Divider.test.js +38 -0
  116. package/divider/types.d.ts +21 -0
  117. package/dropdown/Dropdown.accessibility.test.js +180 -0
  118. package/dropdown/Dropdown.d.ts +1 -1
  119. package/dropdown/Dropdown.js +231 -303
  120. package/dropdown/Dropdown.stories.tsx +235 -57
  121. package/dropdown/Dropdown.test.js +575 -165
  122. package/dropdown/DropdownMenu.d.ts +4 -0
  123. package/dropdown/DropdownMenu.js +63 -0
  124. package/dropdown/DropdownMenuItem.d.ts +4 -0
  125. package/dropdown/DropdownMenuItem.js +70 -0
  126. package/dropdown/types.d.ts +35 -19
  127. package/file-input/FileInput.accessibility.test.js +160 -0
  128. package/file-input/FileInput.d.ts +2 -2
  129. package/file-input/FileInput.js +241 -391
  130. package/file-input/FileInput.stories.tsx +123 -12
  131. package/file-input/FileInput.test.js +292 -367
  132. package/file-input/FileItem.d.ts +4 -14
  133. package/file-input/FileItem.js +52 -117
  134. package/file-input/types.d.ts +25 -8
  135. package/flex/Flex.d.ts +4 -0
  136. package/flex/Flex.js +57 -0
  137. package/flex/Flex.stories.tsx +112 -0
  138. package/flex/types.d.ts +97 -0
  139. package/footer/Footer.accessibility.test.js +117 -0
  140. package/footer/Footer.d.ts +1 -1
  141. package/footer/Footer.js +73 -118
  142. package/footer/Footer.stories.tsx +87 -21
  143. package/footer/Footer.test.js +33 -57
  144. package/footer/Icons.d.ts +3 -2
  145. package/footer/Icons.js +67 -8
  146. package/footer/types.d.ts +26 -27
  147. package/grid/Grid.d.ts +7 -0
  148. package/grid/Grid.js +76 -0
  149. package/grid/Grid.stories.tsx +219 -0
  150. package/grid/types.d.ts +115 -0
  151. package/grid/types.js +5 -0
  152. package/header/Header.accessibility.test.js +84 -0
  153. package/header/Header.d.ts +4 -3
  154. package/header/Header.js +88 -182
  155. package/header/Header.stories.tsx +118 -39
  156. package/header/Header.test.js +13 -26
  157. package/header/Icons.d.ts +2 -2
  158. package/header/Icons.js +4 -9
  159. package/header/types.d.ts +7 -21
  160. package/heading/Heading.accessibility.test.js +33 -0
  161. package/heading/Heading.js +10 -32
  162. package/heading/Heading.test.js +71 -88
  163. package/heading/types.d.ts +7 -7
  164. package/icon/Icon.accessibility.test.js +30 -0
  165. package/icon/Icon.d.ts +4 -0
  166. package/icon/Icon.js +33 -0
  167. package/icon/Icon.stories.tsx +28 -0
  168. package/icon/types.d.ts +4 -0
  169. package/icon/types.js +5 -0
  170. package/image/Image.accessibility.test.js +56 -0
  171. package/image/Image.d.ts +4 -0
  172. package/image/Image.js +70 -0
  173. package/image/Image.stories.tsx +129 -0
  174. package/image/types.d.ts +72 -0
  175. package/image/types.js +5 -0
  176. package/inset/Inset.js +14 -55
  177. package/inset/Inset.stories.tsx +37 -36
  178. package/inset/types.d.ts +2 -2
  179. package/layout/ApplicationLayout.d.ts +16 -6
  180. package/layout/ApplicationLayout.js +82 -166
  181. package/layout/ApplicationLayout.stories.tsx +85 -94
  182. package/layout/Icons.d.ts +8 -0
  183. package/layout/Icons.js +49 -48
  184. package/layout/types.d.ts +19 -35
  185. package/link/Link.accessibility.test.js +112 -0
  186. package/link/Link.d.ts +2 -2
  187. package/link/Link.js +46 -91
  188. package/link/Link.stories.tsx +74 -7
  189. package/link/Link.test.js +24 -44
  190. package/link/types.d.ts +14 -15
  191. package/main.d.ts +14 -12
  192. package/main.js +65 -101
  193. package/nav-tabs/NavTabs.accessibility.test.js +44 -0
  194. package/nav-tabs/NavTabs.d.ts +7 -0
  195. package/nav-tabs/NavTabs.js +93 -0
  196. package/nav-tabs/NavTabs.stories.tsx +279 -0
  197. package/nav-tabs/NavTabs.test.js +75 -0
  198. package/nav-tabs/NavTabsContext.d.ts +3 -0
  199. package/nav-tabs/NavTabsContext.js +8 -0
  200. package/nav-tabs/Tab.d.ts +4 -0
  201. package/nav-tabs/Tab.js +117 -0
  202. package/nav-tabs/types.d.ts +52 -0
  203. package/nav-tabs/types.js +5 -0
  204. package/number-input/NumberInput.accessibility.test.js +228 -0
  205. package/number-input/NumberInput.js +46 -36
  206. package/number-input/NumberInput.stories.tsx +42 -26
  207. package/number-input/NumberInput.test.js +860 -377
  208. package/number-input/NumberInputContext.d.ts +3 -4
  209. package/number-input/NumberInputContext.js +3 -14
  210. package/number-input/types.d.ts +17 -5
  211. package/package.json +49 -51
  212. package/paginator/Icons.d.ts +5 -0
  213. package/paginator/Icons.js +21 -47
  214. package/paginator/Paginator.accessibility.test.js +79 -0
  215. package/paginator/Paginator.js +23 -59
  216. package/paginator/Paginator.stories.tsx +24 -0
  217. package/paginator/Paginator.test.js +280 -211
  218. package/paginator/types.d.ts +3 -3
  219. package/paragraph/Paragraph.accessibility.test.js +28 -0
  220. package/paragraph/Paragraph.d.ts +5 -0
  221. package/paragraph/Paragraph.js +22 -0
  222. package/paragraph/Paragraph.stories.tsx +27 -0
  223. package/password-input/PasswordInput.accessibility.test.js +153 -0
  224. package/password-input/PasswordInput.js +56 -126
  225. package/password-input/PasswordInput.stories.tsx +1 -33
  226. package/password-input/PasswordInput.test.js +160 -142
  227. package/password-input/types.d.ts +8 -7
  228. package/progress-bar/ProgressBar.accessibility.test.js +35 -0
  229. package/progress-bar/ProgressBar.js +65 -91
  230. package/progress-bar/ProgressBar.stories.tsx +93 -0
  231. package/progress-bar/ProgressBar.test.js +72 -44
  232. package/progress-bar/types.d.ts +3 -3
  233. package/quick-nav/QuickNav.accessibility.test.js +57 -0
  234. package/quick-nav/QuickNav.js +34 -56
  235. package/quick-nav/QuickNav.stories.tsx +146 -27
  236. package/quick-nav/types.d.ts +10 -10
  237. package/radio-group/Radio.d.ts +1 -1
  238. package/radio-group/Radio.js +59 -76
  239. package/radio-group/RadioGroup.accessibility.test.js +97 -0
  240. package/radio-group/RadioGroup.js +67 -114
  241. package/radio-group/RadioGroup.stories.tsx +132 -18
  242. package/radio-group/RadioGroup.test.js +518 -457
  243. package/radio-group/types.d.ts +10 -10
  244. package/resultset-table/Icons.d.ts +7 -0
  245. package/resultset-table/Icons.js +47 -0
  246. package/resultset-table/ResultsetTable.accessibility.test.js +274 -0
  247. package/resultset-table/ResultsetTable.d.ts +7 -0
  248. package/resultset-table/ResultsetTable.js +170 -0
  249. package/{resultsetTable → resultset-table}/ResultsetTable.stories.tsx +156 -30
  250. package/resultset-table/ResultsetTable.test.js +381 -0
  251. package/{resultsetTable → resultset-table}/types.d.ts +44 -11
  252. package/resultset-table/types.js +5 -0
  253. package/select/Listbox.d.ts +1 -1
  254. package/select/Listbox.js +47 -54
  255. package/select/Option.js +33 -55
  256. package/select/Select.accessibility.test.js +217 -0
  257. package/select/Select.js +186 -242
  258. package/select/Select.stories.tsx +503 -190
  259. package/select/Select.test.js +1962 -1743
  260. package/select/types.d.ts +17 -21
  261. package/sidenav/Sidenav.accessibility.test.js +59 -0
  262. package/sidenav/Sidenav.d.ts +6 -5
  263. package/sidenav/Sidenav.js +136 -71
  264. package/sidenav/Sidenav.stories.tsx +246 -151
  265. package/sidenav/Sidenav.test.js +26 -45
  266. package/sidenav/SidenavContext.d.ts +5 -0
  267. package/sidenav/SidenavContext.js +13 -0
  268. package/sidenav/types.d.ts +52 -26
  269. package/slider/Slider.accessibility.test.js +104 -0
  270. package/slider/Slider.d.ts +2 -2
  271. package/slider/Slider.js +148 -181
  272. package/slider/Slider.test.js +185 -81
  273. package/slider/types.d.ts +7 -3
  274. package/spinner/Spinner.accessibility.test.js +96 -0
  275. package/spinner/Spinner.js +31 -75
  276. package/spinner/{Spinner.stories.jsx → Spinner.stories.tsx} +53 -27
  277. package/spinner/Spinner.test.js +26 -35
  278. package/spinner/types.d.ts +3 -3
  279. package/status-light/StatusLight.accessibility.test.js +157 -0
  280. package/status-light/StatusLight.d.ts +4 -0
  281. package/status-light/StatusLight.js +51 -0
  282. package/status-light/StatusLight.stories.tsx +74 -0
  283. package/status-light/StatusLight.test.js +25 -0
  284. package/status-light/types.d.ts +17 -0
  285. package/status-light/types.js +5 -0
  286. package/switch/Switch.accessibility.test.js +89 -0
  287. package/switch/Switch.d.ts +2 -2
  288. package/switch/Switch.js +145 -126
  289. package/switch/Switch.stories.tsx +37 -60
  290. package/switch/Switch.test.js +138 -56
  291. package/switch/types.d.ts +7 -3
  292. package/table/DropdownTheme.js +62 -0
  293. package/table/Table.accessibility.test.js +82 -0
  294. package/table/Table.d.ts +6 -2
  295. package/table/Table.js +78 -35
  296. package/table/Table.stories.tsx +651 -0
  297. package/table/Table.test.js +95 -8
  298. package/table/types.d.ts +34 -6
  299. package/tabs/Tab.d.ts +4 -0
  300. package/tabs/Tab.js +117 -0
  301. package/tabs/Tabs.accessibility.test.js +56 -0
  302. package/tabs/Tabs.js +303 -141
  303. package/tabs/Tabs.stories.tsx +118 -6
  304. package/tabs/Tabs.test.js +213 -77
  305. package/tabs/types.d.ts +30 -20
  306. package/tag/Tag.accessibility.test.js +69 -0
  307. package/tag/Tag.js +35 -67
  308. package/tag/Tag.stories.tsx +18 -8
  309. package/tag/Tag.test.js +18 -37
  310. package/tag/types.d.ts +9 -9
  311. package/text-input/Suggestion.js +40 -28
  312. package/text-input/Suggestions.d.ts +4 -0
  313. package/text-input/Suggestions.js +86 -0
  314. package/text-input/TextInput.accessibility.test.js +321 -0
  315. package/text-input/TextInput.js +311 -514
  316. package/text-input/TextInput.stories.tsx +266 -275
  317. package/text-input/TextInput.test.js +1419 -1375
  318. package/text-input/types.d.ts +43 -16
  319. package/textarea/Textarea.accessibility.test.js +155 -0
  320. package/textarea/Textarea.js +70 -113
  321. package/textarea/Textarea.stories.tsx +174 -0
  322. package/textarea/Textarea.test.js +152 -183
  323. package/textarea/types.d.ts +9 -5
  324. package/toggle-group/ToggleGroup.accessibility.test.js +107 -0
  325. package/toggle-group/ToggleGroup.d.ts +2 -2
  326. package/toggle-group/ToggleGroup.js +94 -107
  327. package/toggle-group/ToggleGroup.stories.tsx +52 -7
  328. package/toggle-group/ToggleGroup.test.js +69 -88
  329. package/toggle-group/types.d.ts +28 -19
  330. package/typography/Typography.accessibility.test.js +339 -0
  331. package/typography/Typography.d.ts +4 -0
  332. package/typography/Typography.js +23 -0
  333. package/typography/Typography.stories.tsx +198 -0
  334. package/typography/types.d.ts +18 -0
  335. package/typography/types.js +5 -0
  336. package/useTheme.d.ts +1147 -1
  337. package/useTheme.js +2 -9
  338. package/useTranslatedLabels.d.ts +84 -1
  339. package/useTranslatedLabels.js +1 -7
  340. package/utils/BaseTypography.d.ts +21 -0
  341. package/utils/BaseTypography.js +94 -0
  342. package/utils/FocusLock.d.ts +13 -0
  343. package/utils/FocusLock.js +124 -0
  344. package/wizard/Wizard.accessibility.test.js +55 -0
  345. package/wizard/Wizard.js +34 -79
  346. package/wizard/Wizard.stories.tsx +59 -1
  347. package/wizard/Wizard.test.js +54 -81
  348. package/wizard/types.d.ts +9 -9
  349. package/card/ice-cream.jpg +0 -0
  350. package/common/OpenSans.css +0 -81
  351. package/common/RequiredComponent.js +0 -32
  352. package/common/fonts/OpenSans-Bold.ttf +0 -0
  353. package/common/fonts/OpenSans-BoldItalic.ttf +0 -0
  354. package/common/fonts/OpenSans-ExtraBold.ttf +0 -0
  355. package/common/fonts/OpenSans-ExtraBoldItalic.ttf +0 -0
  356. package/common/fonts/OpenSans-Italic.ttf +0 -0
  357. package/common/fonts/OpenSans-Light.ttf +0 -0
  358. package/common/fonts/OpenSans-LightItalic.ttf +0 -0
  359. package/common/fonts/OpenSans-Regular.ttf +0 -0
  360. package/common/fonts/OpenSans-SemiBold.ttf +0 -0
  361. package/common/fonts/OpenSans-SemiBoldItalic.ttf +0 -0
  362. package/list/List.d.ts +0 -4
  363. package/list/List.js +0 -47
  364. package/list/List.stories.tsx +0 -95
  365. package/list/types.d.ts +0 -7
  366. package/number-input/numberInputContextTypes.d.ts +0 -19
  367. package/progress-bar/ProgressBar.stories.jsx +0 -58
  368. package/radio/Radio.d.ts +0 -4
  369. package/radio/Radio.js +0 -173
  370. package/radio/Radio.stories.tsx +0 -192
  371. package/radio/Radio.test.js +0 -71
  372. package/radio/types.d.ts +0 -54
  373. package/resultsetTable/ResultsetTable.d.ts +0 -4
  374. package/resultsetTable/ResultsetTable.js +0 -254
  375. package/resultsetTable/ResultsetTable.test.js +0 -306
  376. package/row/Row.d.ts +0 -3
  377. package/row/Row.js +0 -127
  378. package/row/Row.stories.tsx +0 -237
  379. package/row/types.d.ts +0 -28
  380. package/select/Icons.d.ts +0 -10
  381. package/select/Icons.js +0 -93
  382. package/slider/Slider.stories.tsx +0 -177
  383. package/stack/Stack.d.ts +0 -3
  384. package/stack/Stack.js +0 -97
  385. package/stack/Stack.stories.tsx +0 -164
  386. package/stack/types.d.ts +0 -24
  387. package/table/Table.stories.jsx +0 -277
  388. package/text/Text.d.ts +0 -7
  389. package/text/Text.js +0 -30
  390. package/text/Text.stories.tsx +0 -19
  391. package/textarea/Textarea.stories.jsx +0 -157
  392. /package/{list → action-icon}/types.js +0 -0
  393. /package/{radio → bulleted-list}/types.js +0 -0
  394. /package/{resultsetTable → container}/types.js +0 -0
  395. /package/{row → contextual-menu}/types.js +0 -0
  396. /package/{stack → divider}/types.js +0 -0
  397. /package/{number-input/numberInputContextTypes.js → flex/types.js} +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,25 +64,15 @@ const group_options = [
62
64
  ],
63
65
  },
64
66
  ];
65
- const icon_options_grouped = [
67
+
68
+ const icon_options_grouped_material = [
66
69
  {
67
70
  label: "Group 001",
68
71
  options: [
69
72
  {
70
73
  label: "3G Mobile",
71
74
  value: "1",
72
- icon: (
73
- <svg xmlns="http://www.w3.org/2000/svg" height="24px" viewBox="0 0 24 24" width="24px" fill="currentColor">
74
- <g>
75
- <path d="M0,0h24v24H0V0z" fill="none" />
76
- </g>
77
- <g>
78
- <g>
79
- <path d="M3,7v2h5v2H4v2h4v2H3v2h5c1.1,0,2-0.9,2-2v-1.5c0-0.83-0.67-1.5-1.5-1.5c0.83,0,1.5-0.67,1.5-1.5V9c0-1.1-0.9-2-2-2H3z M21,11v4c0,1.1-0.9,2-2,2h-5c-1.1,0-2-0.9-2-2V9c0-1.1,0.9-2,2-2h5c1.1,0,2,0.9,2,2h-7v6h5v-2h-2.5v-2H21z" />
80
- </g>
81
- </g>
82
- </svg>
83
- ),
75
+ icon: "3g_mobiledata",
84
76
  },
85
77
  ],
86
78
  },
@@ -90,12 +82,7 @@ const icon_options_grouped = [
90
82
  {
91
83
  label: "Ethernet",
92
84
  value: "2",
93
- icon: (
94
- <svg xmlns="http://www.w3.org/2000/svg" height="24px" viewBox="0 0 24 24" width="24px" fill="currentColor">
95
- <path d="M0 0h24v24H0V0z" fill="none" />
96
- <path d="M7.77 6.76L6.23 5.48.82 12l5.41 6.52 1.54-1.28L3.42 12l4.35-5.24zM7 13h2v-2H7v2zm10-2h-2v2h2v-2zm-6 2h2v-2h-2v2zm6.77-7.52l-1.54 1.28L20.58 12l-4.35 5.24 1.54 1.28L23.18 12l-5.41-6.52z" />
97
- </svg>
98
- ),
85
+ icon: "settings_ethernet",
99
86
  },
100
87
  ],
101
88
  },
@@ -105,26 +92,17 @@ const icon_options_grouped = [
105
92
  {
106
93
  label: "Wi-fi",
107
94
  value: "3",
108
- icon: (
109
- <svg xmlns="http://www.w3.org/2000/svg" height="24px" viewBox="0 0 24 24" width="24px" fill="currentColor">
110
- <path d="M0 0h24v24H0V0zm0 0h24v24H0V0z" fill="none" />
111
- <path d="M1 9l2 2c4.97-4.97 13.03-4.97 18 0l2-2C16.93 2.93 7.08 2.93 1 9zm8 8l3 3 3-3c-1.65-1.66-4.34-1.66-6 0zm-4-4l2 2c2.76-2.76 7.24-2.76 10 0l2-2C15.14 9.14 8.87 9.14 5 13z" />
112
- </svg>
113
- ),
95
+ icon: "wifi",
114
96
  },
115
97
  {
116
98
  label: "Settings backup restore (just for previous configuration)",
117
99
  value: "4",
118
- icon: (
119
- <svg xmlns="http://www.w3.org/2000/svg" height="24px" viewBox="0 0 24 24" width="24px" fill="currentColor">
120
- <path d="M0 0h24v24H0V0z" fill="none" />
121
- <path d="M14 12c0-1.1-.9-2-2-2s-2 .9-2 2 .9 2 2 2 2-.9 2-2zm-2-9c-4.97 0-9 4.03-9 9H0l4 4 4-4H5c0-3.87 3.13-7 7-7s7 3.13 7 7-3.13 7-7 7c-1.51 0-2.91-.49-4.06-1.3l-1.42 1.44C8.04 20.3 9.94 21 12 21c4.97 0 9-4.03 9-9s-4.03-9-9-9z" />
122
- </svg>
123
- ),
100
+ icon: "settings_backup_restore",
124
101
  },
125
102
  ],
126
103
  },
127
104
  ];
105
+
128
106
  const icon_options = [
129
107
  {
130
108
  label: "3G Mobile",
@@ -173,60 +151,70 @@ const icon_options = [
173
151
  ),
174
152
  },
175
153
  ];
176
- const url_options = [
154
+
155
+ const options_material = [
177
156
  {
178
- label: "Social Media",
157
+ label: "Transport",
179
158
  options: [
180
159
  {
181
- label: "Instagram",
182
- value: "instagram",
183
- icon: "https://upload.wikimedia.org/wikipedia/commons/thumb/e/e7/Instagram_logo_2016.svg/800px-Instagram_logo_2016.svg.png",
160
+ label: "Electric Car",
161
+ value: "car",
162
+ icon: "electric_car",
184
163
  },
185
164
  {
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",
165
+ label: "Motorcycle",
166
+ value: "motorcycle",
167
+ icon: "Motorcycle",
189
168
  },
190
169
  {
191
- label: "Facebook",
192
- value: "facebook",
193
- icon: "https://upload.wikimedia.org/wikipedia/commons/thumb/b/b8/2021_Facebook_icon.svg/2048px-2021_Facebook_icon.svg.png",
170
+ label: "Train",
171
+ value: "train",
172
+ icon: "train",
194
173
  },
195
174
  {
196
- label: "Pinterest",
197
- value: "pinterest",
198
- icon: "https://cdn-icons-png.flaticon.com/512/145/145808.png",
175
+ label: "Bike",
176
+ value: "bike",
177
+ icon: "pedal_bike",
199
178
  },
200
179
  ],
201
180
  },
202
181
  {
203
- label: "Design",
182
+ label: "Entertainment",
204
183
  options: [
205
184
  {
206
- label: "Figma",
207
- value: "figma",
208
- icon: "https://logowik.com/content/uploads/images/figma.jpg",
185
+ label: "Movie",
186
+ value: "movie",
187
+ icon: "movie",
209
188
  },
210
189
  {
211
- label: "Adobe XD",
212
- value: "adobexd",
213
- icon: "https://cdn.worldvectorlogo.com/logos/adobe-xd-2.svg",
190
+ label: "Music",
191
+ value: "music",
192
+ icon: "music_note",
214
193
  },
215
194
  {
216
- label: "Sketch",
217
- value: "sketch",
218
- icon: "https://cdn.worldvectorlogo.com/logos/sketch-2.svg",
195
+ label: "Games",
196
+ value: "games",
197
+ icon: "joystick",
219
198
  },
220
199
  ],
221
200
  },
222
201
  ];
202
+
223
203
  const optionsWithEllipsisMedium = [
224
204
  { label: "Optiond1234567890123456789012345678901234", value: "1" },
225
205
  { label: "Optiond12345678901234567890123456789012345", value: "2" },
226
206
  { label: "Option 031111111111111111111111111111222", value: "3" },
227
- { label: "Option 03111111111111111111111111111222", value: "4" },
228
207
  ];
229
208
 
209
+ const opinionatedTheme = {
210
+ select: {
211
+ selectedOptionBackgroundColor: "#e6f4ff",
212
+ fontColor: "#000000",
213
+ optionFontColor: "#000000",
214
+ hoverBorderColor: "#a46ede",
215
+ },
216
+ };
217
+
230
218
  const Select = () => (
231
219
  <>
232
220
  <Title title="States" theme="light" level={2} />
@@ -339,36 +327,365 @@ const Select = () => (
339
327
  <Title title="Multiple selection with ellipsis" theme="light" level={4} />
340
328
  <DxcSelect label="Label" options={single_options} multiple defaultValue={["1", "2", "3", "4"]} />
341
329
  <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} />
330
+ <DxcSelect label="Label" options={optionsWithEllipsisMedium} defaultValue="1" />
331
+ <Title title="Options with ellipsis" theme="light" level={4} />
344
332
  <DxcSelect
345
333
  label="Label"
346
334
  placeholder="Choose an option"
347
335
  defaultValue="1"
348
336
  options={optionsWithEllipsisMedium}
349
- size="medium"
337
+ margin={{ top: "xxlarge" }}
350
338
  />
351
339
  </ExampleContainer>
340
+ <Title title="Opinionated theme" theme="light" level={2} />
341
+ <ExampleContainer pseudoState="pseudo-hover">
342
+ <Title title="Hovered" theme="light" level={4} />
343
+ <HalstackProvider theme={opinionatedTheme}>
344
+ <DxcSelect label="Hovered" options={single_options} />
345
+ </HalstackProvider>
346
+ </ExampleContainer>
347
+ <ExampleContainer pseudoState="pseudo-focus-within">
348
+ <Title title="Focused" theme="light" level={4} />
349
+ <HalstackProvider theme={opinionatedTheme}>
350
+ <DxcSelect label="Focused" options={single_options} />
351
+ </HalstackProvider>
352
+ </ExampleContainer>
353
+ <ExampleContainer>
354
+ <Title title="Disabled" theme="light" level={4} />
355
+ <HalstackProvider theme={opinionatedTheme}>
356
+ <DxcSelect label="Disabled" placeholder="Placeholder" disabled options={single_options} />
357
+ </HalstackProvider>
358
+ </ExampleContainer>
359
+ <ExampleContainer>
360
+ <Title title="Disabled with value" theme="light" level={4} />
361
+ <HalstackProvider theme={opinionatedTheme}>
362
+ <DxcSelect label="Disabled with value" disabled options={single_options} defaultValue="1" />
363
+ </HalstackProvider>
364
+ </ExampleContainer>
365
+ <ExampleContainer>
366
+ <Title title="Error" theme="light" level={4} />
367
+ <HalstackProvider theme={opinionatedTheme}>
368
+ <DxcSelect
369
+ label="Label"
370
+ options={single_options}
371
+ error="Error message."
372
+ helperText="Helper text"
373
+ placeholder="Placeholder"
374
+ />
375
+ <ExampleContainer>
376
+ <Title title="Multiple selection" theme="light" level={4} />
377
+ <DxcSelect label="Multiple select" searchable options={single_options} multiple defaultValue={["1", "2"]} />
378
+ </ExampleContainer>
379
+ <ExampleContainer pseudoState="pseudo-hover">
380
+ <Title title="Multiple clear hovered" theme="light" level={4} />
381
+ <DxcSelect label="Multiple select" options={single_options} multiple defaultValue={["1", "2"]} />
382
+ </ExampleContainer>
383
+ <ExampleContainer pseudoState="pseudo-active">
384
+ <Title title="Multiple clear actived" theme="light" level={4} />
385
+ <DxcSelect label="Multiple select" options={single_options} multiple defaultValue={["1", "2"]} />
386
+ </ExampleContainer>
387
+ </HalstackProvider>
388
+ </ExampleContainer>
352
389
  </>
353
390
  );
354
- export const Chromatic = Select.bind({});
355
- Chromatic.play = async ({ canvasElement }) => {
356
- const canvas = within(canvasElement);
357
- await userEvent.click(canvas.getAllByRole("combobox")[24]);
391
+
392
+ const SelectListbox = () => {
393
+ const colorsTheme: any = useTheme();
394
+
395
+ return (
396
+ <>
397
+ <ThemeProvider theme={colorsTheme.select}>
398
+ <Title title="Listbox" theme="light" level={2} />
399
+ <ExampleContainer>
400
+ <Title
401
+ title="List dialog uses a Radix Popover to appear over elements with a certain z-index"
402
+ theme="light"
403
+ level={3}
404
+ />
405
+ <div
406
+ style={{
407
+ position: "relative",
408
+ display: "flex",
409
+ flexDirection: "column",
410
+ gap: "20px",
411
+ height: "150px",
412
+ width: "min-content",
413
+ marginBottom: "100px",
414
+ padding: "20px",
415
+ border: "1px solid black",
416
+ borderRadius: "4px",
417
+ overflow: "auto",
418
+ zIndex: "1300",
419
+ }}
420
+ >
421
+ <DxcSelect label="Label" options={single_options} optional placeholder="Choose an option" />
422
+ <button style={{ zIndex: "1", width: "100px" }}>Submit</button>
423
+ </div>
424
+ </ExampleContainer>
425
+ <Title title="Listbox option states" theme="light" level={3} />
426
+ <ExampleContainer pseudoState="pseudo-hover">
427
+ <Title title="Hovered option" theme="light" level={4} />
428
+ <Listbox
429
+ id="x"
430
+ currentValue=""
431
+ options={one_option}
432
+ visualFocusIndex={-1}
433
+ lastOptionIndex={0}
434
+ multiple={false}
435
+ optional={false}
436
+ optionalItem={{ label: "Empty", value: "" }}
437
+ searchable={false}
438
+ handleOptionOnClick={() => {}}
439
+ styles={{ width: 360 }}
440
+ />
441
+ </ExampleContainer>
442
+ <ExampleContainer pseudoState="pseudo-active">
443
+ <Title title="Active option" theme="light" level={4} />
444
+ <Listbox
445
+ id="x"
446
+ currentValue=""
447
+ options={one_option}
448
+ visualFocusIndex={-1}
449
+ lastOptionIndex={0}
450
+ multiple={false}
451
+ optional={false}
452
+ optionalItem={{ label: "Empty", value: "" }}
453
+ searchable={false}
454
+ handleOptionOnClick={() => {}}
455
+ styles={{ width: 360 }}
456
+ />
457
+ </ExampleContainer>
458
+ <ExampleContainer>
459
+ <Title title="Focused option" theme="light" level={4} />
460
+ <Listbox
461
+ id="x"
462
+ currentValue=""
463
+ options={one_option}
464
+ visualFocusIndex={0}
465
+ lastOptionIndex={0}
466
+ multiple={false}
467
+ optional={false}
468
+ optionalItem={{ label: "Empty", value: "" }}
469
+ searchable={false}
470
+ handleOptionOnClick={() => {}}
471
+ styles={{ width: 360 }}
472
+ />
473
+ </ExampleContainer>
474
+ <ExampleContainer pseudoState="pseudo-hover">
475
+ <Title title="Hovered selected option" theme="light" level={4} />
476
+ <Listbox
477
+ id="x"
478
+ currentValue="1"
479
+ options={single_options}
480
+ visualFocusIndex={-1}
481
+ lastOptionIndex={3}
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 selected option" theme="light" level={4} />
492
+ <Listbox
493
+ id="x"
494
+ currentValue="2"
495
+ options={single_options}
496
+ visualFocusIndex={0}
497
+ lastOptionIndex={3}
498
+ multiple={false}
499
+ optional={false}
500
+ optionalItem={{ label: "Empty", value: "" }}
501
+ searchable={false}
502
+ handleOptionOnClick={() => {}}
503
+ styles={{ width: 360 }}
504
+ />
505
+ </ExampleContainer>
506
+ <Title title="Listbox with icons" theme="light" level={3} />
507
+ <ExampleContainer>
508
+ <Title title="Icons (SVGs)" theme="light" level={4} />
509
+ <Listbox
510
+ id="x"
511
+ currentValue="3"
512
+ options={icon_options}
513
+ visualFocusIndex={-1}
514
+ lastOptionIndex={3}
515
+ multiple={false}
516
+ optional={false}
517
+ optionalItem={{ label: "Empty", value: "" }}
518
+ searchable={false}
519
+ handleOptionOnClick={() => {}}
520
+ styles={{ width: 360 }}
521
+ />
522
+ </ExampleContainer>
523
+ <ExampleContainer>
524
+ <Title title="Grouped icons (Material Symbols)" theme="light" level={4} />
525
+ <Listbox
526
+ id="x"
527
+ currentValue={["0", "3"]}
528
+ options={icon_options_grouped_material}
529
+ visualFocusIndex={-1}
530
+ lastOptionIndex={3}
531
+ multiple={false}
532
+ optional={false}
533
+ optionalItem={{ label: "Empty", value: "" }}
534
+ searchable={false}
535
+ handleOptionOnClick={() => {}}
536
+ styles={{ width: 360 }}
537
+ />
538
+ </ExampleContainer>
539
+ <ExampleContainer>
540
+ <Title title="Grouped icons (Material)" theme="light" level={4} />
541
+ <Listbox
542
+ id="x"
543
+ currentValue={["facebook", "figma"]}
544
+ options={options_material}
545
+ visualFocusIndex={-1}
546
+ lastOptionIndex={6}
547
+ multiple={true}
548
+ optional={false}
549
+ optionalItem={{ label: "Empty", value: "" }}
550
+ searchable={false}
551
+ handleOptionOnClick={() => {}}
552
+ styles={{ width: 360 }}
553
+ />
554
+ </ExampleContainer>
555
+ </ThemeProvider>
556
+ <ThemeProvider theme={colorsTheme.select}>
557
+ <Title title="Opinionated theme" theme="light" level={2} />
558
+ <ExampleContainer pseudoState="pseudo-hover">
559
+ <Title title="Hovered option" theme="light" level={4} />
560
+ <HalstackProvider theme={opinionatedTheme}>
561
+ <Listbox
562
+ id="x"
563
+ currentValue=""
564
+ options={one_option}
565
+ visualFocusIndex={-1}
566
+ lastOptionIndex={0}
567
+ multiple={false}
568
+ optional={false}
569
+ optionalItem={{ label: "Empty", value: "" }}
570
+ searchable={false}
571
+ handleOptionOnClick={() => {}}
572
+ styles={{ width: 360 }}
573
+ />
574
+ </HalstackProvider>
575
+ </ExampleContainer>
576
+ <ExampleContainer pseudoState="pseudo-active">
577
+ <Title title="Active option" theme="light" level={4} />{" "}
578
+ <HalstackProvider theme={opinionatedTheme}>
579
+ <Listbox
580
+ id="x"
581
+ currentValue=""
582
+ options={one_option}
583
+ visualFocusIndex={-1}
584
+ lastOptionIndex={0}
585
+ multiple={false}
586
+ optional={false}
587
+ optionalItem={{ label: "Empty", value: "" }}
588
+ searchable={false}
589
+ handleOptionOnClick={() => {}}
590
+ styles={{ width: 360 }}
591
+ />
592
+ </HalstackProvider>
593
+ </ExampleContainer>
594
+ <ExampleContainer>
595
+ <Title title="Focused option" theme="light" level={4} />{" "}
596
+ <HalstackProvider theme={opinionatedTheme}>
597
+ <Listbox
598
+ id="x"
599
+ currentValue=""
600
+ options={one_option}
601
+ visualFocusIndex={0}
602
+ lastOptionIndex={0}
603
+ multiple={false}
604
+ optional={false}
605
+ optionalItem={{ label: "Empty", value: "" }}
606
+ searchable={false}
607
+ handleOptionOnClick={() => {}}
608
+ styles={{ width: 360 }}
609
+ />
610
+ </HalstackProvider>
611
+ </ExampleContainer>
612
+ <ExampleContainer pseudoState="pseudo-hover">
613
+ <Title title="Hovered selected option" theme="light" level={4} />{" "}
614
+ <HalstackProvider theme={opinionatedTheme}>
615
+ <Listbox
616
+ id="x"
617
+ currentValue="1"
618
+ options={single_options}
619
+ visualFocusIndex={-1}
620
+ lastOptionIndex={3}
621
+ multiple={false}
622
+ optional={false}
623
+ optionalItem={{ label: "Empty", value: "" }}
624
+ searchable={false}
625
+ handleOptionOnClick={() => {}}
626
+ styles={{ width: 360 }}
627
+ />
628
+ </HalstackProvider>
629
+ </ExampleContainer>
630
+ <ExampleContainer pseudoState="pseudo-active">
631
+ <Title title="Active selected option" theme="light" level={4} />{" "}
632
+ <HalstackProvider theme={opinionatedTheme}>
633
+ <Listbox
634
+ id="x"
635
+ currentValue="2"
636
+ options={single_options}
637
+ visualFocusIndex={0}
638
+ lastOptionIndex={3}
639
+ multiple={false}
640
+ optional={false}
641
+ optionalItem={{ label: "Empty", value: "" }}
642
+ searchable={false}
643
+ handleOptionOnClick={() => {}}
644
+ styles={{ width: 360 }}
645
+ />
646
+ </HalstackProvider>
647
+ </ExampleContainer>
648
+ <Title title="Listbox with icons" theme="light" level={3} />
649
+ <ExampleContainer>
650
+ <Title title="Icons (SVGs)" theme="light" level={4} />{" "}
651
+ <HalstackProvider theme={opinionatedTheme}>
652
+ <Listbox
653
+ id="x"
654
+ currentValue="3"
655
+ options={icon_options}
656
+ visualFocusIndex={-1}
657
+ lastOptionIndex={3}
658
+ multiple={false}
659
+ optional={false}
660
+ optionalItem={{ label: "Empty", value: "" }}
661
+ searchable={false}
662
+ handleOptionOnClick={() => {}}
663
+ styles={{ width: 360 }}
664
+ />
665
+ </HalstackProvider>
666
+ </ExampleContainer>
667
+ </ThemeProvider>
668
+ </>
669
+ );
358
670
  };
359
- const DefaultSelect = () => (
671
+
672
+ const SearchableSelect = () => (
360
673
  <ExampleContainer expanded>
361
- <Title title="Default select" theme="light" level={4} />
362
- <DxcSelect label="Select label" options={single_options} optional placeholder="Choose an option" />
674
+ <Title title="Searchable select" theme="light" level={4} />
675
+ <DxcSelect label="Select Label" searchable options={single_options} placeholder="Choose an option" />
363
676
  </ExampleContainer>
364
677
  );
365
- const SearchableSelect = () => (
678
+
679
+ const SearchableSelectOpinionated = () => (
366
680
  <ExampleContainer expanded>
367
681
  <Title title="Searchable select" theme="light" level={4} />
368
- <DxcSelect label="Select Label" searchable options={single_options} placeholder="Choose an option" />
682
+ <HalstackProvider theme={opinionatedTheme}>
683
+ <DxcSelect label="Select Label" searchable options={single_options} placeholder="Choose an option" />
684
+ </HalstackProvider>
369
685
  </ExampleContainer>
370
686
  );
371
- const SearchableWithValue = () => (
687
+
688
+ const SearchValue = () => (
372
689
  <ExampleContainer expanded>
373
690
  <Title title="Searchable select with value" theme="light" level={4} />
374
691
  <DxcSelect
@@ -381,6 +698,21 @@ const SearchableWithValue = () => (
381
698
  </ExampleContainer>
382
699
  );
383
700
 
701
+ const SearchValueOpinionated = () => (
702
+ <ExampleContainer expanded>
703
+ <Title title="Searchable select with value" theme="light" level={4} />
704
+ <HalstackProvider theme={opinionatedTheme}>
705
+ <DxcSelect
706
+ label="Select Label"
707
+ searchable
708
+ defaultValue="1"
709
+ options={single_options}
710
+ placeholder="Choose an option"
711
+ />
712
+ </HalstackProvider>
713
+ </ExampleContainer>
714
+ );
715
+
384
716
  const MultipleSelect = () => (
385
717
  <>
386
718
  <ExampleContainer expanded>
@@ -395,12 +727,38 @@ const MultipleSelect = () => (
395
727
  </ExampleContainer>
396
728
  </>
397
729
  );
730
+
731
+ const MultipleSelectOpinioated = () => (
732
+ <ExampleContainer expanded>
733
+ <Title title="Multiple select" theme="light" level={4} />
734
+ <HalstackProvider theme={opinionatedTheme}>
735
+ <DxcSelect
736
+ label="Select label"
737
+ options={single_options}
738
+ defaultValue={["1", "4"]}
739
+ multiple
740
+ placeholder="Choose an option"
741
+ />
742
+ </HalstackProvider>
743
+ </ExampleContainer>
744
+ );
745
+
398
746
  const DefaultGroupedOptionsSelect = () => (
399
747
  <ExampleContainer expanded>
400
748
  <Title title="Grouped options simple select" theme="light" level={4} />
401
749
  <DxcSelect label="Label" options={group_options} defaultValue="9" placeholder="Choose an option" />
402
750
  </ExampleContainer>
403
751
  );
752
+
753
+ const DefaultGroupedOptionsSelectOpinionated = () => (
754
+ <ExampleContainer expanded>
755
+ <Title title="Grouped options simple select" theme="light" level={4} />
756
+ <HalstackProvider theme={opinionatedTheme}>
757
+ <DxcSelect label="Label" options={group_options} defaultValue="9" placeholder="Choose an option" />
758
+ </HalstackProvider>
759
+ </ExampleContainer>
760
+ );
761
+
404
762
  const MultipleGroupedOptionsSelect = () => (
405
763
  <ExampleContainer expanded>
406
764
  <Title title="Grouped options multiple select" theme="light" level={4} />
@@ -413,66 +771,22 @@ const MultipleGroupedOptionsSelect = () => (
413
771
  />
414
772
  </ExampleContainer>
415
773
  );
416
- const RescaledIcons = () => (
417
- <ExampleContainer expanded>
418
- <Title title="Rescaled icons displayed" theme="light" level={4} />
419
- <DxcSelect label="Label" options={url_options} defaultValue="facebook" placeholder="Choose an option" />
420
- </ExampleContainer>
421
- );
422
- const SelectWithIcons = () => (
423
- <ExampleContainer expanded>
424
- <Title title="Normal icons displayed" theme="light" level={4} />
425
- <DxcSelect label="Label" options={icon_options} defaultValue="3" placeholder="Choose an option" />
426
- </ExampleContainer>
427
- );
428
- const SelectMultipleWithIcons = () => (
429
- <ExampleContainer expanded>
430
- <Title title="Multiple select with icons" theme="light" level={4} />
431
- <DxcSelect label="Label" options={icon_options} multiple defaultValue={["1", "3"]} placeholder="Choose an option" />
432
- </ExampleContainer>
433
- );
434
- const MultipleGroupedOptionsSelectWithIcons = () => (
774
+
775
+ const MultipleGroupedOptionsSelectOpinionated = () => (
435
776
  <ExampleContainer expanded>
436
- <Title title="Multiple grouped options with icons" theme="light" level={4} />
437
- <DxcSelect
438
- label="Label"
439
- options={icon_options_grouped}
440
- multiple
441
- defaultValue={["3", "2"]}
442
- placeholder="Choose an option"
443
- />
444
- </ExampleContainer>
445
- );
446
- const OnlyOneOptionHovered = () => (
447
- <ExampleContainer pseudoState="pseudo-hover" expanded>
448
- <Title title="Hovered Option" theme="light" level={4} />
449
- <DxcSelect label="Hovered" options={one_option} placeholder="Choose an option" />
450
- </ExampleContainer>
451
- );
452
- const OnlyOneOptionFocused = () => (
453
- <ExampleContainer pseudoState="pseudo-focus" expanded>
454
- <Title title="Focused Option" theme="light" level={4} />
455
- <DxcSelect label="Focused" options={one_option} placeholder="Choose an option" />
456
- </ExampleContainer>
457
- );
458
- const OnlyOneOptionActived = () => (
459
- <ExampleContainer pseudoState="pseudo-active" expanded>
460
- <Title title="Actived Option" theme="light" level={4} />
461
- <DxcSelect label="Actived" options={one_option} placeholder="Choose an option" />
462
- </ExampleContainer>
463
- );
464
- const SelectedOptionHovered = () => (
465
- <ExampleContainer pseudoState="pseudo-hover" expanded>
466
- <Title title="Hovered Selected Option" theme="light" level={4} />
467
- <DxcSelect label="Hovered" defaultValue="1" options={one_option} placeholder="Choose an option" />
468
- </ExampleContainer>
469
- );
470
- const SelectedOptionActived = () => (
471
- <ExampleContainer pseudoState="pseudo-active" expanded>
472
- <Title title="Actived Selected Option" theme="light" level={4} />
473
- <DxcSelect label="Actived" defaultValue="1" options={one_option} placeholder="Choose an option" />
777
+ <Title title="Grouped options multiple select" theme="light" level={4} />
778
+ <HalstackProvider theme={opinionatedTheme}>
779
+ <DxcSelect
780
+ label="Label"
781
+ options={group_options}
782
+ defaultValue={["0", "2"]}
783
+ multiple
784
+ placeholder="Choose an option"
785
+ />
786
+ </HalstackProvider>
474
787
  </ExampleContainer>
475
788
  );
789
+
476
790
  const MultipleSearchable = () => (
477
791
  <ExampleContainer expanded>
478
792
  <Title title="Searchable multiple select with value" theme="light" level={4} />
@@ -486,108 +800,107 @@ const MultipleSearchable = () => (
486
800
  />
487
801
  </ExampleContainer>
488
802
  );
489
- export const OptionsDisplayed = DefaultSelect.bind({});
490
- OptionsDisplayed.play = async ({ canvasElement }) => {
803
+
804
+ const MultipleSearchableOpinionated = () => (
805
+ <ExampleContainer expanded>
806
+ <Title title="Searchable multiple select with value" theme="light" level={4} />
807
+ <HalstackProvider theme={opinionatedTheme}>
808
+ <DxcSelect
809
+ label="Select Label"
810
+ searchable
811
+ multiple
812
+ defaultValue={["1", "4"]}
813
+ options={single_options}
814
+ placeholder="Choose an option"
815
+ />
816
+ </HalstackProvider>
817
+ </ExampleContainer>
818
+ );
819
+
820
+ export const Chromatic = Select.bind({});
821
+ Chromatic.play = async ({ canvasElement }) => {
822
+ const canvas = within(canvasElement);
823
+ await userEvent.click(canvas.getAllByRole("combobox")[24]);
824
+ };
825
+
826
+ export const ListboxStates = SelectListbox.bind({});
827
+ ListboxStates.play = async ({ canvasElement }) => {
491
828
  const canvas = within(canvasElement);
492
829
  const select = canvas.getByRole("combobox");
493
830
  await userEvent.click(select);
494
831
  };
832
+
495
833
  export const Searchable = SearchableSelect.bind({});
496
834
  Searchable.play = async ({ canvasElement }) => {
497
835
  const canvas = within(canvasElement);
498
- await userEvent.click(canvas.getByRole("combobox"));
499
- await waitFor(async () => {
500
- userEvent.type(canvas.getByRole("combobox"), "r");
501
- });
836
+ await userEvent.type(canvas.getByRole("combobox"), "r");
502
837
  };
503
- export const SelectSearchableWithValue = SearchableWithValue.bind({});
504
- SelectSearchableWithValue.play = async ({ canvasElement }) => {
838
+
839
+ export const SearchableOpinionated = SearchableSelectOpinionated.bind({});
840
+ SearchableOpinionated.play = async ({ canvasElement }) => {
505
841
  const canvas = within(canvasElement);
506
- await userEvent.click(canvas.getByRole("combobox"));
842
+ await userEvent.type(canvas.getByRole("combobox"), "r");
507
843
  };
508
844
 
509
- export const SelectMultipleSearchableWithValue = MultipleSearchable.bind({});
510
- SelectMultipleSearchableWithValue.play = async ({ canvasElement }) => {
845
+ export const SearchableWithValue = SearchValue.bind({});
846
+ SearchableWithValue.play = async ({ canvasElement }) => {
511
847
  const canvas = within(canvasElement);
512
- await userEvent.click(canvas.getAllByRole("combobox")[0]);
848
+ await userEvent.click(canvas.getByRole("combobox"));
513
849
  };
514
850
 
515
- export const GroupOptionsDisplayed = DefaultGroupedOptionsSelect.bind({});
516
- GroupOptionsDisplayed.play = async ({ canvasElement }) => {
851
+ export const SearchableWithValueOpinionated = SearchValueOpinionated.bind({});
852
+ SearchableWithValueOpinionated.play = async ({ canvasElement }) => {
517
853
  const canvas = within(canvasElement);
518
- const select = canvas.getByRole("combobox");
519
- await userEvent.click(select);
854
+ await userEvent.click(canvas.getByRole("combobox"));
520
855
  };
521
856
 
522
- export const SelectMultipleOptionsDisplayed = MultipleSelect.bind({});
523
- SelectMultipleOptionsDisplayed.play = async ({ canvasElement }) => {
857
+ export const MultipleSearchableWithValue = MultipleSearchable.bind({});
858
+ MultipleSearchableWithValue.play = async ({ canvasElement }) => {
524
859
  const canvas = within(canvasElement);
525
860
  await userEvent.click(canvas.getAllByRole("combobox")[0]);
526
861
  };
527
862
 
528
- export const SelectMultipleGroupedOptionsDisplayed = MultipleGroupedOptionsSelect.bind({});
529
- SelectMultipleGroupedOptionsDisplayed.play = async ({ canvasElement }) => {
863
+ export const MultipleSearchableWithValueOpinionated = MultipleSearchableOpinionated.bind({});
864
+ MultipleSearchableWithValueOpinionated.play = async ({ canvasElement }) => {
530
865
  const canvas = within(canvasElement);
531
- const select = canvas.getByRole("combobox");
532
- await userEvent.click(select);
533
- };
534
- export const SelectWithIconsDisplayed = SelectWithIcons.bind({});
535
- SelectWithIconsDisplayed.play = async ({ canvasElement }) => {
536
- const canvas = within(canvasElement);
537
- const select = canvas.getByRole("combobox");
538
- await userEvent.click(select);
866
+ await userEvent.click(canvas.getAllByRole("combobox")[0]);
539
867
  };
540
868
 
541
- export const SelectWithRescaledIconsDisplayed = RescaledIcons.bind({});
542
- SelectWithRescaledIconsDisplayed.play = async ({ canvasElement }) => {
543
- const canvas = within(canvasElement);
544
- const select = canvas.getByRole("combobox");
545
- await userEvent.click(select);
546
- };
547
- export const SelectMultipleWithIconsDisplayed = SelectMultipleWithIcons.bind({});
548
- SelectMultipleWithIconsDisplayed.play = async ({ canvasElement }) => {
869
+ export const GroupOptionsDisplayed = DefaultGroupedOptionsSelect.bind({});
870
+ GroupOptionsDisplayed.play = async ({ canvasElement }) => {
549
871
  const canvas = within(canvasElement);
550
872
  const select = canvas.getByRole("combobox");
551
873
  await userEvent.click(select);
552
874
  };
553
875
 
554
- export const SelectMultipleGroupedWithIconsDisplayed = MultipleGroupedOptionsSelectWithIcons.bind({});
555
- SelectMultipleGroupedWithIconsDisplayed.play = async ({ canvasElement }) => {
876
+ export const GroupOptionsDisplayedOpinionated = DefaultGroupedOptionsSelectOpinionated.bind({});
877
+ GroupOptionsDisplayedOpinionated.play = async ({ canvasElement }) => {
556
878
  const canvas = within(canvasElement);
557
879
  const select = canvas.getByRole("combobox");
558
880
  await userEvent.click(select);
559
881
  };
560
882
 
561
- export const OptionHovered = OnlyOneOptionHovered.bind({});
562
- OptionHovered.play = async ({ canvasElement }) => {
883
+ export const MultipleOptionsDisplayed = MultipleSelect.bind({});
884
+ MultipleOptionsDisplayed.play = async ({ canvasElement }) => {
563
885
  const canvas = within(canvasElement);
564
- const select = canvas.getByRole("combobox");
565
- await userEvent.click(select);
886
+ await userEvent.click(canvas.getAllByRole("combobox")[0]);
566
887
  };
567
888
 
568
- export const OptionFocused = OnlyOneOptionFocused.bind({});
569
- OptionFocused.play = async ({ canvasElement }) => {
889
+ export const MultipleOptionsDisplayedOpinionated = MultipleSelectOpinioated.bind({});
890
+ MultipleOptionsDisplayedOpinionated.play = async ({ canvasElement }) => {
570
891
  const canvas = within(canvasElement);
571
- const select = canvas.getByRole("combobox");
572
- await userEvent.click(select);
573
- await waitFor(async () => {
574
- fireEvent.keyDown(select, { key: "ArrowDown", code: "ArrowDown", keyCode: 40, charCode: 40 });
575
- });
576
- };
577
- export const OptionActived = OnlyOneOptionActived.bind({});
578
- OptionActived.play = async ({ canvasElement }) => {
579
- const canvas = within(canvasElement);
580
- const select = canvas.getByRole("combobox");
581
- await userEvent.click(select);
892
+ await userEvent.click(canvas.getAllByRole("combobox")[0]);
582
893
  };
583
- export const OptionSelectedHovered = SelectedOptionHovered.bind({});
584
- OptionSelectedHovered.play = async ({ canvasElement }) => {
894
+
895
+ export const MultipleGroupedOptionsDisplayed = MultipleGroupedOptionsSelect.bind({});
896
+ MultipleGroupedOptionsDisplayed.play = async ({ canvasElement }) => {
585
897
  const canvas = within(canvasElement);
586
898
  const select = canvas.getByRole("combobox");
587
899
  await userEvent.click(select);
588
900
  };
589
- export const OptionSelectedActived = SelectedOptionActived.bind({});
590
- OptionSelectedActived.play = async ({ canvasElement }) => {
901
+
902
+ export const MultipleGroupedOptionsDisplayedOpinionated = MultipleGroupedOptionsSelectOpinionated.bind({});
903
+ MultipleGroupedOptionsDisplayedOpinionated.play = async ({ canvasElement }) => {
591
904
  const canvas = within(canvasElement);
592
905
  const select = canvas.getByRole("combobox");
593
906
  await userEvent.click(select);