@dxc-technology/halstack-react 0.0.0-336cd81 → 0.0.0-33c1fd8

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 (376) hide show
  1. package/BackgroundColorContext.d.ts +1 -10
  2. package/BackgroundColorContext.js +5 -22
  3. package/HalstackContext.d.ts +1242 -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 +44 -118
  9. package/accordion/Accordion.stories.tsx +84 -139
  10. package/accordion/Accordion.test.js +19 -34
  11. package/accordion/types.d.ts +6 -18
  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 +29 -77
  15. package/accordion-group/AccordionGroup.stories.tsx +78 -77
  16. package/accordion-group/AccordionGroup.test.js +44 -72
  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 +7 -19
  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 +31 -124
  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 +1 -0
  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 +18 -59
  45. package/box/Box.stories.tsx +38 -51
  46. package/box/Box.test.js +2 -7
  47. package/box/types.d.ts +3 -15
  48. package/bulleted-list/BulletedList.accessibility.test.js +107 -0
  49. package/bulleted-list/BulletedList.js +22 -53
  50. package/bulleted-list/BulletedList.stories.tsx +8 -93
  51. package/bulleted-list/types.d.ts +32 -5
  52. package/button/Button.accessibility.test.js +127 -0
  53. package/button/Button.d.ts +1 -1
  54. package/button/Button.js +71 -106
  55. package/button/Button.stories.tsx +143 -101
  56. package/button/Button.test.js +20 -17
  57. package/button/types.d.ts +9 -5
  58. package/card/Card.accessibility.test.js +36 -0
  59. package/card/Card.d.ts +1 -1
  60. package/card/Card.js +48 -89
  61. package/card/Card.stories.tsx +12 -42
  62. package/card/Card.test.js +11 -22
  63. package/card/types.d.ts +6 -12
  64. package/checkbox/Checkbox.accessibility.test.js +87 -0
  65. package/checkbox/Checkbox.d.ts +2 -2
  66. package/checkbox/Checkbox.js +92 -126
  67. package/checkbox/Checkbox.stories.tsx +128 -94
  68. package/checkbox/Checkbox.test.js +108 -64
  69. package/checkbox/types.d.ts +11 -3
  70. package/chip/Chip.accessibility.test.js +67 -0
  71. package/chip/Chip.js +43 -80
  72. package/chip/Chip.stories.tsx +102 -26
  73. package/chip/Chip.test.js +18 -33
  74. package/chip/types.d.ts +4 -4
  75. package/common/coreTokens.d.ts +237 -0
  76. package/common/coreTokens.js +184 -0
  77. package/common/utils.d.ts +1 -0
  78. package/common/utils.js +6 -12
  79. package/common/variables.d.ts +1394 -0
  80. package/common/variables.js +917 -1159
  81. package/container/Container.d.ts +4 -0
  82. package/container/Container.js +194 -0
  83. package/container/Container.stories.tsx +214 -0
  84. package/container/types.d.ts +74 -0
  85. package/contextual-menu/ContextualMenu.accessibility.test.js +86 -0
  86. package/contextual-menu/ContextualMenu.d.ts +5 -0
  87. package/contextual-menu/ContextualMenu.js +88 -0
  88. package/contextual-menu/ContextualMenu.stories.tsx +219 -0
  89. package/contextual-menu/ContextualMenu.test.js +205 -0
  90. package/contextual-menu/GroupItem.d.ts +4 -0
  91. package/contextual-menu/GroupItem.js +67 -0
  92. package/contextual-menu/ItemAction.d.ts +4 -0
  93. package/contextual-menu/ItemAction.js +52 -0
  94. package/contextual-menu/MenuItem.d.ts +4 -0
  95. package/contextual-menu/MenuItem.js +29 -0
  96. package/contextual-menu/SingleItem.d.ts +4 -0
  97. package/contextual-menu/SingleItem.js +38 -0
  98. package/contextual-menu/types.d.ts +58 -0
  99. package/date-input/Calendar.d.ts +4 -0
  100. package/date-input/Calendar.js +214 -0
  101. package/date-input/DateInput.accessibility.test.js +216 -0
  102. package/date-input/DateInput.js +149 -299
  103. package/date-input/DateInput.stories.tsx +203 -56
  104. package/date-input/DateInput.test.js +700 -371
  105. package/date-input/DatePicker.d.ts +4 -0
  106. package/date-input/DatePicker.js +121 -0
  107. package/date-input/YearPicker.d.ts +4 -0
  108. package/date-input/YearPicker.js +100 -0
  109. package/date-input/types.d.ts +72 -15
  110. package/dialog/Dialog.accessibility.test.js +69 -0
  111. package/dialog/Dialog.d.ts +1 -1
  112. package/dialog/Dialog.js +49 -119
  113. package/dialog/Dialog.stories.tsx +310 -212
  114. package/dialog/Dialog.test.js +270 -33
  115. package/dialog/types.d.ts +18 -26
  116. package/divider/Divider.accessibility.test.js +33 -0
  117. package/divider/Divider.d.ts +4 -0
  118. package/divider/Divider.js +36 -0
  119. package/divider/Divider.stories.tsx +223 -0
  120. package/divider/Divider.test.js +38 -0
  121. package/divider/types.d.ts +21 -0
  122. package/divider/types.js +5 -0
  123. package/dropdown/Dropdown.accessibility.test.js +180 -0
  124. package/dropdown/Dropdown.js +84 -153
  125. package/dropdown/Dropdown.stories.tsx +209 -94
  126. package/dropdown/Dropdown.test.js +409 -400
  127. package/dropdown/DropdownMenu.js +20 -37
  128. package/dropdown/DropdownMenuItem.js +15 -37
  129. package/dropdown/types.d.ts +20 -24
  130. package/file-input/FileInput.accessibility.test.js +160 -0
  131. package/file-input/FileInput.d.ts +2 -2
  132. package/file-input/FileInput.js +241 -391
  133. package/file-input/FileInput.stories.tsx +123 -12
  134. package/file-input/FileInput.test.js +292 -367
  135. package/file-input/FileItem.d.ts +4 -14
  136. package/file-input/FileItem.js +52 -117
  137. package/file-input/types.d.ts +25 -8
  138. package/flex/Flex.js +27 -39
  139. package/flex/Flex.stories.tsx +35 -26
  140. package/flex/types.d.ts +74 -9
  141. package/footer/Footer.accessibility.test.js +117 -0
  142. package/footer/Footer.d.ts +1 -1
  143. package/footer/Footer.js +73 -118
  144. package/footer/Footer.stories.tsx +82 -23
  145. package/footer/Footer.test.js +33 -57
  146. package/footer/Icons.d.ts +3 -2
  147. package/footer/Icons.js +66 -7
  148. package/footer/types.d.ts +26 -28
  149. package/grid/Grid.d.ts +7 -0
  150. package/grid/Grid.js +76 -0
  151. package/grid/Grid.stories.tsx +219 -0
  152. package/grid/types.d.ts +115 -0
  153. package/grid/types.js +5 -0
  154. package/header/Header.accessibility.test.js +84 -0
  155. package/header/Header.d.ts +4 -3
  156. package/header/Header.js +53 -149
  157. package/header/Header.stories.tsx +115 -36
  158. package/header/Header.test.js +13 -26
  159. package/header/Icons.d.ts +2 -2
  160. package/header/Icons.js +2 -7
  161. package/header/types.d.ts +7 -22
  162. package/heading/Heading.accessibility.test.js +33 -0
  163. package/heading/Heading.js +10 -32
  164. package/heading/Heading.test.js +71 -88
  165. package/heading/types.d.ts +7 -7
  166. package/icon/Icon.accessibility.test.js +30 -0
  167. package/icon/Icon.d.ts +4 -0
  168. package/icon/Icon.js +33 -0
  169. package/icon/Icon.stories.tsx +28 -0
  170. package/icon/types.d.ts +4 -0
  171. package/icon/types.js +5 -0
  172. package/image/Image.accessibility.test.js +56 -0
  173. package/image/Image.d.ts +4 -0
  174. package/image/Image.js +70 -0
  175. package/image/Image.stories.tsx +129 -0
  176. package/image/types.d.ts +72 -0
  177. package/image/types.js +5 -0
  178. package/inset/Inset.js +13 -21
  179. package/inset/Inset.stories.tsx +2 -1
  180. package/inset/types.d.ts +2 -2
  181. package/layout/ApplicationLayout.d.ts +5 -5
  182. package/layout/ApplicationLayout.js +33 -67
  183. package/layout/ApplicationLayout.stories.tsx +1 -1
  184. package/layout/Icons.d.ts +7 -5
  185. package/layout/Icons.js +41 -59
  186. package/layout/types.d.ts +5 -6
  187. package/link/Link.accessibility.test.js +112 -0
  188. package/link/Link.js +32 -51
  189. package/link/Link.stories.tsx +62 -2
  190. package/link/Link.test.js +24 -44
  191. package/link/types.d.ts +14 -14
  192. package/main.d.ts +10 -5
  193. package/main.js +47 -59
  194. package/nav-tabs/NavTabs.accessibility.test.js +44 -0
  195. package/nav-tabs/NavTabs.d.ts +7 -0
  196. package/{tabs-nav → nav-tabs}/NavTabs.js +25 -57
  197. package/nav-tabs/NavTabs.stories.tsx +279 -0
  198. package/{tabs-nav → nav-tabs}/NavTabs.test.js +39 -46
  199. package/nav-tabs/NavTabsContext.d.ts +3 -0
  200. package/nav-tabs/NavTabsContext.js +8 -0
  201. package/nav-tabs/Tab.js +117 -0
  202. package/{tabs-nav → nav-tabs}/types.d.ts +15 -16
  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 +43 -46
  212. package/paginator/Paginator.accessibility.test.js +79 -0
  213. package/paginator/Paginator.js +26 -63
  214. package/paginator/Paginator.stories.tsx +24 -0
  215. package/paginator/Paginator.test.js +252 -225
  216. package/paginator/types.d.ts +3 -3
  217. package/paragraph/Paragraph.accessibility.test.js +28 -0
  218. package/paragraph/Paragraph.d.ts +3 -4
  219. package/paragraph/Paragraph.js +6 -22
  220. package/paragraph/Paragraph.stories.tsx +0 -17
  221. package/password-input/PasswordInput.accessibility.test.js +153 -0
  222. package/password-input/PasswordInput.js +56 -128
  223. package/password-input/PasswordInput.stories.tsx +1 -33
  224. package/password-input/PasswordInput.test.js +158 -141
  225. package/password-input/types.d.ts +8 -7
  226. package/progress-bar/ProgressBar.accessibility.test.js +35 -0
  227. package/progress-bar/ProgressBar.d.ts +2 -2
  228. package/progress-bar/ProgressBar.js +23 -55
  229. package/progress-bar/{ProgressBar.stories.jsx → ProgressBar.stories.tsx} +36 -3
  230. package/progress-bar/ProgressBar.test.js +36 -53
  231. package/progress-bar/types.d.ts +4 -3
  232. package/quick-nav/QuickNav.accessibility.test.js +57 -0
  233. package/quick-nav/QuickNav.js +4 -27
  234. package/quick-nav/QuickNav.stories.tsx +15 -1
  235. package/quick-nav/types.d.ts +10 -10
  236. package/radio-group/Radio.d.ts +1 -1
  237. package/radio-group/Radio.js +31 -63
  238. package/radio-group/RadioGroup.accessibility.test.js +97 -0
  239. package/radio-group/RadioGroup.js +45 -93
  240. package/radio-group/RadioGroup.stories.tsx +131 -18
  241. package/radio-group/RadioGroup.test.js +505 -471
  242. package/radio-group/types.d.ts +8 -8
  243. package/resultset-table/Icons.d.ts +7 -0
  244. package/{text-input → resultset-table}/Icons.js +13 -26
  245. package/resultset-table/ResultsetTable.accessibility.test.js +274 -0
  246. package/resultset-table/ResultsetTable.d.ts +7 -0
  247. package/resultset-table/ResultsetTable.js +170 -0
  248. package/{resultsetTable → resultset-table}/ResultsetTable.stories.tsx +156 -30
  249. package/resultset-table/ResultsetTable.test.js +381 -0
  250. package/{resultsetTable → resultset-table}/types.d.ts +44 -11
  251. package/resultset-table/types.js +5 -0
  252. package/select/Listbox.d.ts +1 -1
  253. package/select/Listbox.js +22 -75
  254. package/select/Option.js +33 -55
  255. package/select/Select.accessibility.test.js +217 -0
  256. package/select/Select.js +134 -181
  257. package/select/Select.stories.tsx +484 -204
  258. package/select/Select.test.js +1950 -1907
  259. package/select/types.d.ts +17 -18
  260. package/sidenav/Sidenav.accessibility.test.js +59 -0
  261. package/sidenav/Sidenav.d.ts +2 -2
  262. package/sidenav/Sidenav.js +90 -157
  263. package/sidenav/Sidenav.stories.tsx +160 -63
  264. package/sidenav/Sidenav.test.js +3 -10
  265. package/{layout → sidenav}/SidenavContext.d.ts +1 -1
  266. package/{layout → sidenav}/SidenavContext.js +3 -9
  267. package/sidenav/types.d.ts +33 -30
  268. package/slider/Slider.accessibility.test.js +104 -0
  269. package/slider/Slider.d.ts +2 -2
  270. package/slider/Slider.js +77 -134
  271. package/slider/Slider.test.js +108 -104
  272. package/slider/types.d.ts +7 -3
  273. package/spinner/Spinner.accessibility.test.js +96 -0
  274. package/spinner/Spinner.js +31 -75
  275. package/spinner/{Spinner.stories.jsx → Spinner.stories.tsx} +53 -27
  276. package/spinner/Spinner.test.js +26 -35
  277. package/spinner/types.d.ts +3 -3
  278. package/status-light/StatusLight.accessibility.test.js +157 -0
  279. package/status-light/StatusLight.d.ts +4 -0
  280. package/status-light/StatusLight.js +51 -0
  281. package/status-light/StatusLight.stories.tsx +74 -0
  282. package/status-light/StatusLight.test.js +25 -0
  283. package/status-light/types.d.ts +17 -0
  284. package/status-light/types.js +5 -0
  285. package/switch/Switch.accessibility.test.js +89 -0
  286. package/switch/Switch.d.ts +3 -3
  287. package/switch/Switch.js +56 -103
  288. package/switch/Switch.stories.tsx +33 -34
  289. package/switch/Switch.test.js +52 -97
  290. package/switch/types.d.ts +8 -3
  291. package/table/DropdownTheme.js +62 -0
  292. package/table/Table.accessibility.test.js +82 -0
  293. package/table/Table.d.ts +6 -2
  294. package/table/Table.js +78 -35
  295. package/table/Table.stories.tsx +651 -0
  296. package/table/Table.test.js +95 -8
  297. package/table/types.d.ts +34 -6
  298. package/tabs/Tab.js +28 -46
  299. package/tabs/Tabs.accessibility.test.js +56 -0
  300. package/tabs/Tabs.js +69 -163
  301. package/tabs/Tabs.stories.tsx +44 -6
  302. package/tabs/Tabs.test.js +61 -136
  303. package/tabs/types.d.ts +21 -21
  304. package/tag/Tag.accessibility.test.js +69 -0
  305. package/tag/Tag.js +34 -66
  306. package/tag/Tag.stories.tsx +18 -8
  307. package/tag/Tag.test.js +18 -37
  308. package/tag/types.d.ts +9 -9
  309. package/text-input/Suggestion.js +35 -25
  310. package/text-input/Suggestions.d.ts +1 -1
  311. package/text-input/Suggestions.js +19 -67
  312. package/text-input/TextInput.accessibility.test.js +321 -0
  313. package/text-input/TextInput.js +223 -329
  314. package/text-input/TextInput.stories.tsx +139 -155
  315. package/text-input/TextInput.test.js +1389 -1347
  316. package/text-input/types.d.ts +27 -19
  317. package/textarea/Textarea.accessibility.test.js +155 -0
  318. package/textarea/Textarea.js +70 -113
  319. package/textarea/Textarea.stories.tsx +174 -0
  320. package/textarea/Textarea.test.js +152 -183
  321. package/textarea/types.d.ts +9 -5
  322. package/toggle-group/ToggleGroup.accessibility.test.js +107 -0
  323. package/toggle-group/ToggleGroup.d.ts +2 -2
  324. package/toggle-group/ToggleGroup.js +94 -107
  325. package/toggle-group/ToggleGroup.stories.tsx +52 -7
  326. package/toggle-group/ToggleGroup.test.js +69 -88
  327. package/toggle-group/types.d.ts +28 -19
  328. package/typography/Typography.accessibility.test.js +339 -0
  329. package/typography/Typography.d.ts +2 -2
  330. package/typography/Typography.js +15 -123
  331. package/typography/Typography.stories.tsx +1 -1
  332. package/typography/types.d.ts +1 -1
  333. package/useTheme.d.ts +1146 -1
  334. package/useTheme.js +2 -9
  335. package/useTranslatedLabels.d.ts +84 -1
  336. package/useTranslatedLabels.js +1 -7
  337. package/utils/BaseTypography.d.ts +21 -0
  338. package/utils/BaseTypography.js +94 -0
  339. package/utils/FocusLock.d.ts +13 -0
  340. package/utils/FocusLock.js +124 -0
  341. package/wizard/Wizard.accessibility.test.js +55 -0
  342. package/wizard/Wizard.js +29 -67
  343. package/wizard/Wizard.stories.tsx +39 -0
  344. package/wizard/Wizard.test.js +54 -81
  345. package/wizard/types.d.ts +10 -11
  346. package/card/ice-cream.jpg +0 -0
  347. package/common/OpenSans.css +0 -81
  348. package/common/RequiredComponent.js +0 -32
  349. package/common/fonts/OpenSans-Bold.ttf +0 -0
  350. package/common/fonts/OpenSans-BoldItalic.ttf +0 -0
  351. package/common/fonts/OpenSans-ExtraBold.ttf +0 -0
  352. package/common/fonts/OpenSans-ExtraBoldItalic.ttf +0 -0
  353. package/common/fonts/OpenSans-Italic.ttf +0 -0
  354. package/common/fonts/OpenSans-Light.ttf +0 -0
  355. package/common/fonts/OpenSans-LightItalic.ttf +0 -0
  356. package/common/fonts/OpenSans-Regular.ttf +0 -0
  357. package/common/fonts/OpenSans-SemiBold.ttf +0 -0
  358. package/common/fonts/OpenSans-SemiBoldItalic.ttf +0 -0
  359. package/number-input/numberInputContextTypes.d.ts +0 -19
  360. package/paginator/Icons.js +0 -66
  361. package/resultsetTable/ResultsetTable.d.ts +0 -4
  362. package/resultsetTable/ResultsetTable.js +0 -252
  363. package/resultsetTable/ResultsetTable.test.js +0 -348
  364. package/select/Icons.d.ts +0 -10
  365. package/select/Icons.js +0 -93
  366. package/slider/Slider.stories.tsx +0 -183
  367. package/table/Table.stories.jsx +0 -277
  368. package/tabs-nav/NavTabs.d.ts +0 -8
  369. package/tabs-nav/NavTabs.stories.tsx +0 -170
  370. package/tabs-nav/Tab.js +0 -130
  371. package/text-input/Icons.d.ts +0 -8
  372. package/textarea/Textarea.stories.jsx +0 -157
  373. /package/{resultsetTable → action-icon}/types.js +0 -0
  374. /package/{tabs-nav → container}/types.js +0 -0
  375. /package/{number-input/numberInputContextTypes.js → contextual-menu/types.js} +0 -0
  376. /package/{tabs-nav → nav-tabs}/Tab.d.ts +0 -0
@@ -1,11 +1,12 @@
1
1
  import React from "react";
2
- import { userEvent, within, waitFor } from "@storybook/testing-library";
2
+ import { userEvent, within } from "@storybook/testing-library";
3
3
  import Title from "../../.storybook/components/Title";
4
4
  import ExampleContainer from "../../.storybook/components/ExampleContainer";
5
5
  import DxcSelect from "./Select";
6
6
  import Listbox from "./Listbox";
7
- import DxcButton from "../button/Button";
8
- import DxcCheckbox from "../checkbox/Checkbox";
7
+ import { ThemeProvider } from "styled-components";
8
+ import useTheme from "../useTheme";
9
+ import { HalstackProvider } from "../HalstackContext";
9
10
 
10
11
  export default {
11
12
  title: "Select",
@@ -13,12 +14,14 @@ export default {
13
14
  };
14
15
 
15
16
  const one_option = [{ label: "Option 01", value: "1" }];
17
+
16
18
  const single_options = [
17
19
  { label: "Option 01", value: "1" },
18
20
  { label: "Option 02", value: "2" },
19
21
  { label: "Option 03", value: "3" },
20
22
  { label: "Option 04", value: "4" },
21
23
  ];
24
+
22
25
  const group_options = [
23
26
  {
24
27
  label: "Group 001",
@@ -61,25 +64,15 @@ const group_options = [
61
64
  ],
62
65
  },
63
66
  ];
64
- const icon_options_grouped = [
67
+
68
+ const icon_options_grouped_material = [
65
69
  {
66
70
  label: "Group 001",
67
71
  options: [
68
72
  {
69
73
  label: "3G Mobile",
70
74
  value: "1",
71
- icon: (
72
- <svg xmlns="http://www.w3.org/2000/svg" height="24px" viewBox="0 0 24 24" width="24px" fill="currentColor">
73
- <g>
74
- <path d="M0,0h24v24H0V0z" fill="none" />
75
- </g>
76
- <g>
77
- <g>
78
- <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" />
79
- </g>
80
- </g>
81
- </svg>
82
- ),
75
+ icon: "3g_mobiledata",
83
76
  },
84
77
  ],
85
78
  },
@@ -89,12 +82,7 @@ const icon_options_grouped = [
89
82
  {
90
83
  label: "Ethernet",
91
84
  value: "2",
92
- icon: (
93
- <svg xmlns="http://www.w3.org/2000/svg" height="24px" viewBox="0 0 24 24" width="24px" fill="currentColor">
94
- <path d="M0 0h24v24H0V0z" fill="none" />
95
- <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" />
96
- </svg>
97
- ),
85
+ icon: "settings_ethernet",
98
86
  },
99
87
  ],
100
88
  },
@@ -104,26 +92,17 @@ const icon_options_grouped = [
104
92
  {
105
93
  label: "Wi-fi",
106
94
  value: "3",
107
- icon: (
108
- <svg xmlns="http://www.w3.org/2000/svg" height="24px" viewBox="0 0 24 24" width="24px" fill="currentColor">
109
- <path d="M0 0h24v24H0V0zm0 0h24v24H0V0z" fill="none" />
110
- <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" />
111
- </svg>
112
- ),
95
+ icon: "wifi",
113
96
  },
114
97
  {
115
98
  label: "Settings backup restore (just for previous configuration)",
116
99
  value: "4",
117
- icon: (
118
- <svg xmlns="http://www.w3.org/2000/svg" height="24px" viewBox="0 0 24 24" width="24px" fill="currentColor">
119
- <path d="M0 0h24v24H0V0z" fill="none" />
120
- <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" />
121
- </svg>
122
- ),
100
+ icon: "settings_backup_restore",
123
101
  },
124
102
  ],
125
103
  },
126
104
  ];
105
+
127
106
  const icon_options = [
128
107
  {
129
108
  label: "3G Mobile",
@@ -172,60 +151,70 @@ const icon_options = [
172
151
  ),
173
152
  },
174
153
  ];
175
- const url_options = [
154
+
155
+ const options_material = [
176
156
  {
177
- label: "Social Media",
157
+ label: "Transport",
178
158
  options: [
179
159
  {
180
- label: "Instagram",
181
- value: "instagram",
182
- 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",
183
163
  },
184
164
  {
185
- label: "Twitter",
186
- value: "twitter",
187
- 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",
188
168
  },
189
169
  {
190
- label: "Facebook",
191
- value: "facebook",
192
- 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",
193
173
  },
194
174
  {
195
- label: "Pinterest",
196
- value: "pinterest",
197
- icon: "https://cdn-icons-png.flaticon.com/512/145/145808.png",
175
+ label: "Bike",
176
+ value: "bike",
177
+ icon: "pedal_bike",
198
178
  },
199
179
  ],
200
180
  },
201
181
  {
202
- label: "Design",
182
+ label: "Entertainment",
203
183
  options: [
204
184
  {
205
- label: "Figma",
206
- value: "figma",
207
- icon: "https://logowik.com/content/uploads/images/figma.jpg",
185
+ label: "Movie",
186
+ value: "movie",
187
+ icon: "movie",
208
188
  },
209
189
  {
210
- label: "Adobe XD",
211
- value: "adobexd",
212
- icon: "https://cdn.worldvectorlogo.com/logos/adobe-xd-2.svg",
190
+ label: "Music",
191
+ value: "music",
192
+ icon: "music_note",
213
193
  },
214
194
  {
215
- label: "Sketch",
216
- value: "sketch",
217
- icon: "https://cdn.worldvectorlogo.com/logos/sketch-2.svg",
195
+ label: "Games",
196
+ value: "games",
197
+ icon: "joystick",
218
198
  },
219
199
  ],
220
200
  },
221
201
  ];
202
+
222
203
  const optionsWithEllipsisMedium = [
223
204
  { label: "Optiond1234567890123456789012345678901234", value: "1" },
224
205
  { label: "Optiond12345678901234567890123456789012345", value: "2" },
225
206
  { label: "Option 031111111111111111111111111111222", value: "3" },
226
- { label: "Option 03111111111111111111111111111222", value: "4" },
227
207
  ];
228
208
 
209
+ const opinionatedTheme = {
210
+ select: {
211
+ selectedOptionBackgroundColor: "#e6f4ff",
212
+ fontColor: "#000000",
213
+ optionFontColor: "#000000",
214
+ hoverBorderColor: "#a46ede",
215
+ },
216
+ };
217
+
229
218
  const Select = () => (
230
219
  <>
231
220
  <Title title="States" theme="light" level={2} />
@@ -338,123 +327,364 @@ const Select = () => (
338
327
  <Title title="Multiple selection with ellipsis" theme="light" level={4} />
339
328
  <DxcSelect label="Label" options={single_options} multiple defaultValue={["1", "2", "3", "4"]} />
340
329
  <Title title="Value with ellipsis" theme="light" level={4} />
341
- <DxcSelect label="Label" options={optionsWithEllipsisMedium} defaultValue="1" size="medium" />
330
+ <DxcSelect label="Label" options={optionsWithEllipsisMedium} defaultValue="1" />
342
331
  <Title title="Options with ellipsis" theme="light" level={4} />
343
332
  <DxcSelect
344
333
  label="Label"
345
334
  placeholder="Choose an option"
346
335
  defaultValue="1"
347
336
  options={optionsWithEllipsisMedium}
348
- size="medium"
337
+ margin={{ top: "xxlarge" }}
349
338
  />
350
339
  </ExampleContainer>
351
- </>
352
- );
353
- const SelectListbox = () => (
354
- <>
355
- <Title title="Listbox" theme="light" level={2} />
356
- <Title title="Default with opened listbox" theme="light" level={3} />
357
- <ExampleContainer>
358
- <div style={{ display: "flex", gap: "30px", flexDirection: "column", marginBottom: "80px" }}>
359
- <DxcSelect label="Label" options={single_options} optional placeholder="Choose an option" />
360
- <DxcCheckbox
361
- label="You understand the selection and give your consent"
362
- onChange={() => {}}
363
- labelPosition="after"
364
- />
365
- <DxcButton label="Submit" onClick={() => {}} size="medium" />
366
- </div>
367
- </ExampleContainer>
368
- <Title title="Listbox option states" theme="light" level={3} />
340
+ <Title title="Opinionated theme" theme="light" level={2} />
369
341
  <ExampleContainer pseudoState="pseudo-hover">
370
- <Title title="Hovered option" theme="light" level={4} />
371
- <Listbox
372
- id="x"
373
- currentValue=""
374
- options={one_option}
375
- visualFocusIndex={-1}
376
- lastOptionIndex={0}
377
- multiple={false}
378
- optional={false}
379
- optionalItem={{ label: "Empty", value: "" }}
380
- searchable={false}
381
- handleOptionOnClick={() => {}}
382
- getSelectWidth={() => 360}
383
- />
342
+ <Title title="Hovered" theme="light" level={4} />
343
+ <HalstackProvider theme={opinionatedTheme}>
344
+ <DxcSelect label="Hovered" options={single_options} />
345
+ </HalstackProvider>
384
346
  </ExampleContainer>
385
- <ExampleContainer pseudoState="pseudo-active">
386
- <Title title="Active option" theme="light" level={4} />
387
- <Listbox
388
- id="x"
389
- currentValue=""
390
- options={one_option}
391
- visualFocusIndex={-1}
392
- lastOptionIndex={0}
393
- multiple={false}
394
- optional={false}
395
- optionalItem={{ label: "Empty", value: "" }}
396
- searchable={false}
397
- handleOptionOnClick={() => {}}
398
- getSelectWidth={() => 360}
399
-
400
- />
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>
401
352
  </ExampleContainer>
402
353
  <ExampleContainer>
403
- <Title title="Focused option" theme="light" level={4} />
404
- <Listbox
405
- id="x"
406
- currentValue=""
407
- options={one_option}
408
- visualFocusIndex={0}
409
- lastOptionIndex={0}
410
- multiple={false}
411
- optional={false}
412
- optionalItem={{ label: "Empty", value: "" }}
413
- searchable={false}
414
- handleOptionOnClick={() => {}}
415
- getSelectWidth={() => 360}
416
- />
354
+ <Title title="Disabled" theme="light" level={4} />
355
+ <HalstackProvider theme={opinionatedTheme}>
356
+ <DxcSelect label="Disabled" placeholder="Placeholder" disabled options={single_options} />
357
+ </HalstackProvider>
417
358
  </ExampleContainer>
418
- <ExampleContainer pseudoState="pseudo-hover">
419
- <Title title="Hovered selected option" theme="light" level={4} />
420
- <Listbox
421
- id="x"
422
- currentValue="1"
423
- options={single_options}
424
- visualFocusIndex={-1}
425
- lastOptionIndex={3}
426
- multiple={false}
427
- optional={false}
428
- optionalItem={{ label: "Empty", value: "" }}
429
- searchable={false}
430
- handleOptionOnClick={() => {}}
431
- getSelectWidth={() => 360}
432
- />
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>
433
364
  </ExampleContainer>
434
- <ExampleContainer pseudoState="pseudo-active">
435
- <Title title="Active selected option" theme="light" level={4} />
436
- <Listbox
437
- id="x"
438
- currentValue="2"
439
- options={single_options}
440
- visualFocusIndex={0}
441
- lastOptionIndex={3}
442
- multiple={false}
443
- optional={false}
444
- optionalItem={{ label: "Empty", value: "" }}
445
- searchable={false}
446
- handleOptionOnClick={() => {}}
447
- getSelectWidth={() => 360}
448
- />
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>
449
388
  </ExampleContainer>
450
389
  </>
451
390
  );
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
+ );
670
+ };
671
+
452
672
  const SearchableSelect = () => (
453
673
  <ExampleContainer expanded>
454
674
  <Title title="Searchable select" theme="light" level={4} />
455
675
  <DxcSelect label="Select Label" searchable options={single_options} placeholder="Choose an option" />
456
676
  </ExampleContainer>
457
677
  );
678
+
679
+ const SearchableSelectOpinionated = () => (
680
+ <ExampleContainer expanded>
681
+ <Title title="Searchable select" theme="light" level={4} />
682
+ <HalstackProvider theme={opinionatedTheme}>
683
+ <DxcSelect label="Select Label" searchable options={single_options} placeholder="Choose an option" />
684
+ </HalstackProvider>
685
+ </ExampleContainer>
686
+ );
687
+
458
688
  const SearchValue = () => (
459
689
  <ExampleContainer expanded>
460
690
  <Title title="Searchable select with value" theme="light" level={4} />
@@ -467,6 +697,22 @@ const SearchValue = () => (
467
697
  />
468
698
  </ExampleContainer>
469
699
  );
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
+
470
716
  const MultipleSelect = () => (
471
717
  <>
472
718
  <ExampleContainer expanded>
@@ -481,12 +727,38 @@ const MultipleSelect = () => (
481
727
  </ExampleContainer>
482
728
  </>
483
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
+
484
746
  const DefaultGroupedOptionsSelect = () => (
485
747
  <ExampleContainer expanded>
486
748
  <Title title="Grouped options simple select" theme="light" level={4} />
487
749
  <DxcSelect label="Label" options={group_options} defaultValue="9" placeholder="Choose an option" />
488
750
  </ExampleContainer>
489
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
+
490
762
  const MultipleGroupedOptionsSelect = () => (
491
763
  <ExampleContainer expanded>
492
764
  <Title title="Grouped options multiple select" theme="light" level={4} />
@@ -499,34 +771,19 @@ const MultipleGroupedOptionsSelect = () => (
499
771
  />
500
772
  </ExampleContainer>
501
773
  );
502
- const RescaledIcons = () => (
503
- <ExampleContainer expanded>
504
- <Title title="Rescaled icons displayed" theme="light" level={4} />
505
- <DxcSelect label="Label" options={url_options} defaultValue="facebook" placeholder="Choose an option" />
506
- </ExampleContainer>
507
- );
508
- const SelectWithIcons = () => (
509
- <ExampleContainer expanded>
510
- <Title title="Normal icons displayed" theme="light" level={4} />
511
- <DxcSelect label="Label" options={icon_options} defaultValue="3" placeholder="Choose an option" />
512
- </ExampleContainer>
513
- );
514
- const SelectMultipleWithIcons = () => (
515
- <ExampleContainer expanded>
516
- <Title title="Multiple select with icons" theme="light" level={4} />
517
- <DxcSelect label="Label" options={icon_options} multiple defaultValue={["1", "3"]} placeholder="Choose an option" />
518
- </ExampleContainer>
519
- );
520
- const MultipleGroupedOptionsSelectWithIcons = () => (
774
+
775
+ const MultipleGroupedOptionsSelectOpinionated = () => (
521
776
  <ExampleContainer expanded>
522
- <Title title="Multiple grouped options with icons" theme="light" level={4} />
523
- <DxcSelect
524
- label="Label"
525
- options={icon_options_grouped}
526
- multiple
527
- defaultValue={["3", "2"]}
528
- placeholder="Choose an option"
529
- />
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>
530
787
  </ExampleContainer>
531
788
  );
532
789
 
@@ -544,6 +801,22 @@ const MultipleSearchable = () => (
544
801
  </ExampleContainer>
545
802
  );
546
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
+
547
820
  export const Chromatic = Select.bind({});
548
821
  Chromatic.play = async ({ canvasElement }) => {
549
822
  const canvas = within(canvasElement);
@@ -560,10 +833,13 @@ ListboxStates.play = async ({ canvasElement }) => {
560
833
  export const Searchable = SearchableSelect.bind({});
561
834
  Searchable.play = async ({ canvasElement }) => {
562
835
  const canvas = within(canvasElement);
563
- await userEvent.click(canvas.getByRole("combobox"));
564
- await waitFor(async () => {
565
- userEvent.type(canvas.getByRole("combobox"), "r");
566
- });
836
+ await userEvent.type(canvas.getByRole("combobox"), "r");
837
+ };
838
+
839
+ export const SearchableOpinionated = SearchableSelectOpinionated.bind({});
840
+ SearchableOpinionated.play = async ({ canvasElement }) => {
841
+ const canvas = within(canvasElement);
842
+ await userEvent.type(canvas.getByRole("combobox"), "r");
567
843
  };
568
844
 
569
845
  export const SearchableWithValue = SearchValue.bind({});
@@ -572,12 +848,24 @@ SearchableWithValue.play = async ({ canvasElement }) => {
572
848
  await userEvent.click(canvas.getByRole("combobox"));
573
849
  };
574
850
 
851
+ export const SearchableWithValueOpinionated = SearchValueOpinionated.bind({});
852
+ SearchableWithValueOpinionated.play = async ({ canvasElement }) => {
853
+ const canvas = within(canvasElement);
854
+ await userEvent.click(canvas.getByRole("combobox"));
855
+ };
856
+
575
857
  export const MultipleSearchableWithValue = MultipleSearchable.bind({});
576
858
  MultipleSearchableWithValue.play = async ({ canvasElement }) => {
577
859
  const canvas = within(canvasElement);
578
860
  await userEvent.click(canvas.getAllByRole("combobox")[0]);
579
861
  };
580
862
 
863
+ export const MultipleSearchableWithValueOpinionated = MultipleSearchableOpinionated.bind({});
864
+ MultipleSearchableWithValueOpinionated.play = async ({ canvasElement }) => {
865
+ const canvas = within(canvasElement);
866
+ await userEvent.click(canvas.getAllByRole("combobox")[0]);
867
+ };
868
+
581
869
  export const GroupOptionsDisplayed = DefaultGroupedOptionsSelect.bind({});
582
870
  GroupOptionsDisplayed.play = async ({ canvasElement }) => {
583
871
  const canvas = within(canvasElement);
@@ -585,42 +873,34 @@ GroupOptionsDisplayed.play = async ({ canvasElement }) => {
585
873
  await userEvent.click(select);
586
874
  };
587
875
 
588
- export const MultipleOptionsDisplayed = MultipleSelect.bind({});
589
- MultipleOptionsDisplayed.play = async ({ canvasElement }) => {
590
- const canvas = within(canvasElement);
591
- await userEvent.click(canvas.getAllByRole("combobox")[0]);
592
- };
593
-
594
- export const MultipleGroupedOptionsDisplayed = MultipleGroupedOptionsSelect.bind({});
595
- MultipleGroupedOptionsDisplayed.play = async ({ canvasElement }) => {
876
+ export const GroupOptionsDisplayedOpinionated = DefaultGroupedOptionsSelectOpinionated.bind({});
877
+ GroupOptionsDisplayedOpinionated.play = async ({ canvasElement }) => {
596
878
  const canvas = within(canvasElement);
597
879
  const select = canvas.getByRole("combobox");
598
880
  await userEvent.click(select);
599
881
  };
600
882
 
601
- export const WithIconsDisplayed = SelectWithIcons.bind({});
602
- WithIconsDisplayed.play = async ({ canvasElement }) => {
883
+ export const MultipleOptionsDisplayed = MultipleSelect.bind({});
884
+ MultipleOptionsDisplayed.play = async ({ canvasElement }) => {
603
885
  const canvas = within(canvasElement);
604
- const select = canvas.getByRole("combobox");
605
- await userEvent.click(select);
886
+ await userEvent.click(canvas.getAllByRole("combobox")[0]);
606
887
  };
607
888
 
608
- export const WithRescaledIconsDisplayed = RescaledIcons.bind({});
609
- WithRescaledIconsDisplayed.play = async ({ canvasElement }) => {
889
+ export const MultipleOptionsDisplayedOpinionated = MultipleSelectOpinioated.bind({});
890
+ MultipleOptionsDisplayedOpinionated.play = async ({ canvasElement }) => {
610
891
  const canvas = within(canvasElement);
611
- const select = canvas.getByRole("combobox");
612
- await userEvent.click(select);
892
+ await userEvent.click(canvas.getAllByRole("combobox")[0]);
613
893
  };
614
894
 
615
- export const MultipleWithIconsDisplayed = SelectMultipleWithIcons.bind({});
616
- MultipleWithIconsDisplayed.play = async ({ canvasElement }) => {
895
+ export const MultipleGroupedOptionsDisplayed = MultipleGroupedOptionsSelect.bind({});
896
+ MultipleGroupedOptionsDisplayed.play = async ({ canvasElement }) => {
617
897
  const canvas = within(canvasElement);
618
898
  const select = canvas.getByRole("combobox");
619
899
  await userEvent.click(select);
620
900
  };
621
901
 
622
- export const MultipleGroupedWithIconsDisplayed = MultipleGroupedOptionsSelectWithIcons.bind({});
623
- MultipleGroupedWithIconsDisplayed.play = async ({ canvasElement }) => {
902
+ export const MultipleGroupedOptionsDisplayedOpinionated = MultipleGroupedOptionsSelectOpinionated.bind({});
903
+ MultipleGroupedOptionsDisplayedOpinionated.play = async ({ canvasElement }) => {
624
904
  const canvas = within(canvasElement);
625
905
  const select = canvas.getByRole("combobox");
626
906
  await userEvent.click(select);