@dxc-technology/halstack-react 0.0.0-ff5083e → 0.0.0-ff6c8bf

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