@dxc-technology/halstack-react 0.0.0-5aa300b → 0.0.0-5b15506

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 (364) hide show
  1. package/BackgroundColorContext.d.ts +1 -10
  2. package/BackgroundColorContext.js +5 -22
  3. package/HalstackContext.d.ts +1243 -6
  4. package/HalstackContext.js +122 -106
  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 +41 -109
  9. package/accordion/Accordion.stories.tsx +53 -148
  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 +70 -103
  55. package/button/Button.stories.tsx +105 -114
  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.js +87 -122
  66. package/checkbox/Checkbox.stories.tsx +68 -54
  67. package/checkbox/Checkbox.test.js +108 -64
  68. package/checkbox/types.d.ts +8 -4
  69. package/chip/Chip.accessibility.test.js +67 -0
  70. package/chip/Chip.js +42 -67
  71. package/chip/Chip.stories.tsx +73 -29
  72. package/chip/Chip.test.js +18 -33
  73. package/chip/types.d.ts +4 -4
  74. package/common/coreTokens.d.ts +237 -0
  75. package/common/coreTokens.js +184 -0
  76. package/common/utils.d.ts +1 -0
  77. package/common/utils.js +6 -12
  78. package/common/variables.d.ts +1395 -0
  79. package/common/variables.js +899 -1144
  80. package/container/Container.d.ts +4 -0
  81. package/container/Container.js +194 -0
  82. package/container/Container.stories.tsx +214 -0
  83. package/container/types.d.ts +74 -0
  84. package/contextual-menu/ContextualMenu.accessibility.test.js +86 -0
  85. package/contextual-menu/ContextualMenu.d.ts +7 -0
  86. package/contextual-menu/ContextualMenu.js +71 -0
  87. package/contextual-menu/ContextualMenu.stories.tsx +182 -0
  88. package/contextual-menu/ContextualMenu.test.js +71 -0
  89. package/contextual-menu/MenuItemAction.d.ts +4 -0
  90. package/contextual-menu/MenuItemAction.js +46 -0
  91. package/contextual-menu/types.d.ts +22 -0
  92. package/date-input/Calendar.d.ts +1 -1
  93. package/date-input/Calendar.js +52 -96
  94. package/date-input/DateInput.accessibility.test.js +216 -0
  95. package/date-input/DateInput.js +102 -107
  96. package/date-input/DateInput.stories.tsx +194 -60
  97. package/date-input/DateInput.test.js +676 -620
  98. package/date-input/DatePicker.js +53 -92
  99. package/date-input/YearPicker.d.ts +1 -1
  100. package/date-input/YearPicker.js +29 -44
  101. package/date-input/types.d.ts +32 -28
  102. package/dialog/Dialog.accessibility.test.js +69 -0
  103. package/dialog/Dialog.d.ts +1 -1
  104. package/dialog/Dialog.js +61 -119
  105. package/dialog/Dialog.stories.tsx +310 -212
  106. package/dialog/Dialog.test.js +270 -33
  107. package/dialog/types.d.ts +18 -26
  108. package/divider/Divider.accessibility.test.js +33 -0
  109. package/divider/Divider.d.ts +4 -0
  110. package/divider/Divider.js +36 -0
  111. package/divider/Divider.stories.tsx +223 -0
  112. package/divider/Divider.test.js +38 -0
  113. package/divider/types.d.ts +21 -0
  114. package/divider/types.js +5 -0
  115. package/dropdown/Dropdown.accessibility.test.js +180 -0
  116. package/dropdown/Dropdown.js +61 -131
  117. package/dropdown/Dropdown.stories.tsx +205 -98
  118. package/dropdown/Dropdown.test.js +393 -379
  119. package/dropdown/DropdownMenu.js +20 -37
  120. package/dropdown/DropdownMenuItem.js +15 -37
  121. package/dropdown/types.d.ts +20 -24
  122. package/file-input/FileInput.accessibility.test.js +160 -0
  123. package/file-input/FileInput.js +184 -292
  124. package/file-input/FileInput.stories.tsx +86 -3
  125. package/file-input/FileInput.test.js +279 -395
  126. package/file-input/FileItem.js +27 -67
  127. package/file-input/types.d.ts +10 -10
  128. package/flex/Flex.js +27 -39
  129. package/flex/Flex.stories.tsx +35 -26
  130. package/flex/types.d.ts +74 -9
  131. package/footer/Footer.accessibility.test.js +117 -0
  132. package/footer/Footer.d.ts +1 -1
  133. package/footer/Footer.js +73 -118
  134. package/footer/Footer.stories.tsx +82 -23
  135. package/footer/Footer.test.js +33 -57
  136. package/footer/Icons.d.ts +3 -2
  137. package/footer/Icons.js +66 -7
  138. package/footer/types.d.ts +26 -28
  139. package/grid/Grid.d.ts +7 -0
  140. package/grid/Grid.js +76 -0
  141. package/grid/Grid.stories.tsx +219 -0
  142. package/grid/types.d.ts +115 -0
  143. package/grid/types.js +5 -0
  144. package/header/Header.accessibility.test.js +84 -0
  145. package/header/Header.d.ts +4 -3
  146. package/header/Header.js +53 -149
  147. package/header/Header.stories.tsx +115 -36
  148. package/header/Header.test.js +13 -26
  149. package/header/Icons.d.ts +2 -2
  150. package/header/Icons.js +2 -7
  151. package/header/types.d.ts +7 -22
  152. package/heading/Heading.accessibility.test.js +33 -0
  153. package/heading/Heading.js +10 -32
  154. package/heading/Heading.test.js +71 -88
  155. package/heading/types.d.ts +7 -7
  156. package/icon/Icon.accessibility.test.js +30 -0
  157. package/icon/Icon.d.ts +4 -0
  158. package/icon/Icon.js +33 -0
  159. package/icon/Icon.stories.tsx +28 -0
  160. package/icon/types.d.ts +4 -0
  161. package/icon/types.js +5 -0
  162. package/image/Image.accessibility.test.js +56 -0
  163. package/image/Image.d.ts +4 -0
  164. package/image/Image.js +70 -0
  165. package/image/Image.stories.tsx +129 -0
  166. package/image/types.d.ts +72 -0
  167. package/image/types.js +5 -0
  168. package/inset/Inset.js +13 -21
  169. package/inset/Inset.stories.tsx +2 -1
  170. package/inset/types.d.ts +2 -2
  171. package/layout/ApplicationLayout.d.ts +5 -5
  172. package/layout/ApplicationLayout.js +30 -67
  173. package/layout/ApplicationLayout.stories.tsx +1 -1
  174. package/layout/Icons.d.ts +8 -5
  175. package/layout/Icons.js +49 -59
  176. package/layout/types.d.ts +5 -6
  177. package/link/Link.accessibility.test.js +112 -0
  178. package/link/Link.js +31 -50
  179. package/link/Link.stories.tsx +62 -2
  180. package/link/Link.test.js +24 -44
  181. package/link/types.d.ts +14 -14
  182. package/main.d.ts +10 -5
  183. package/main.js +47 -59
  184. package/nav-tabs/NavTabs.accessibility.test.js +44 -0
  185. package/nav-tabs/NavTabs.d.ts +7 -0
  186. package/{tabs-nav → nav-tabs}/NavTabs.js +25 -57
  187. package/nav-tabs/NavTabs.stories.tsx +279 -0
  188. package/{tabs-nav → nav-tabs}/NavTabs.test.js +39 -46
  189. package/nav-tabs/NavTabsContext.d.ts +3 -0
  190. package/nav-tabs/NavTabsContext.js +8 -0
  191. package/nav-tabs/Tab.js +117 -0
  192. package/{tabs-nav → nav-tabs}/types.d.ts +15 -16
  193. package/nav-tabs/types.js +5 -0
  194. package/number-input/NumberInput.accessibility.test.js +228 -0
  195. package/number-input/NumberInput.js +46 -36
  196. package/number-input/NumberInput.stories.tsx +42 -26
  197. package/number-input/NumberInput.test.js +860 -413
  198. package/number-input/NumberInputContext.d.ts +3 -4
  199. package/number-input/NumberInputContext.js +3 -14
  200. package/number-input/types.d.ts +17 -5
  201. package/package.json +41 -39
  202. package/paginator/Icons.d.ts +5 -5
  203. package/paginator/Icons.js +5 -19
  204. package/paginator/Paginator.accessibility.test.js +79 -0
  205. package/paginator/Paginator.js +17 -47
  206. package/paginator/Paginator.stories.tsx +24 -0
  207. package/paginator/Paginator.test.js +252 -225
  208. package/paginator/types.d.ts +3 -3
  209. package/paragraph/Paragraph.accessibility.test.js +28 -0
  210. package/paragraph/Paragraph.d.ts +3 -4
  211. package/paragraph/Paragraph.js +6 -22
  212. package/paragraph/Paragraph.stories.tsx +0 -17
  213. package/password-input/PasswordInput.accessibility.test.js +153 -0
  214. package/password-input/PasswordInput.js +56 -126
  215. package/password-input/PasswordInput.stories.tsx +1 -33
  216. package/password-input/PasswordInput.test.js +158 -141
  217. package/password-input/types.d.ts +8 -7
  218. package/progress-bar/ProgressBar.accessibility.test.js +35 -0
  219. package/progress-bar/ProgressBar.d.ts +2 -2
  220. package/progress-bar/ProgressBar.js +23 -55
  221. package/progress-bar/{ProgressBar.stories.jsx → ProgressBar.stories.tsx} +36 -3
  222. package/progress-bar/ProgressBar.test.js +36 -53
  223. package/progress-bar/types.d.ts +4 -3
  224. package/quick-nav/QuickNav.accessibility.test.js +57 -0
  225. package/quick-nav/QuickNav.js +4 -27
  226. package/quick-nav/QuickNav.stories.tsx +15 -1
  227. package/quick-nav/types.d.ts +10 -10
  228. package/radio-group/Radio.d.ts +1 -1
  229. package/radio-group/Radio.js +31 -63
  230. package/radio-group/RadioGroup.accessibility.test.js +97 -0
  231. package/radio-group/RadioGroup.js +45 -93
  232. package/radio-group/RadioGroup.stories.tsx +131 -18
  233. package/radio-group/RadioGroup.test.js +505 -471
  234. package/radio-group/types.d.ts +8 -8
  235. package/resultset-table/Icons.d.ts +7 -0
  236. package/{resultsetTable → resultset-table}/Icons.js +1 -5
  237. package/resultset-table/ResultsetTable.accessibility.test.js +274 -0
  238. package/resultset-table/ResultsetTable.d.ts +7 -0
  239. package/{resultsetTable → resultset-table}/ResultsetTable.js +46 -71
  240. package/{resultsetTable → resultset-table}/ResultsetTable.stories.tsx +106 -5
  241. package/{resultsetTable → resultset-table}/ResultsetTable.test.js +165 -114
  242. package/{resultsetTable → resultset-table}/types.d.ts +44 -11
  243. package/resultset-table/types.js +5 -0
  244. package/select/Listbox.d.ts +1 -1
  245. package/select/Listbox.js +22 -75
  246. package/select/Option.js +28 -48
  247. package/select/Select.accessibility.test.js +217 -0
  248. package/select/Select.js +134 -181
  249. package/select/Select.stories.tsx +488 -264
  250. package/select/Select.test.js +1950 -1907
  251. package/select/types.d.ts +17 -18
  252. package/sidenav/Sidenav.accessibility.test.js +59 -0
  253. package/sidenav/Sidenav.d.ts +2 -2
  254. package/sidenav/Sidenav.js +90 -155
  255. package/sidenav/Sidenav.stories.tsx +113 -25
  256. package/sidenav/Sidenav.test.js +3 -10
  257. package/{layout → sidenav}/SidenavContext.d.ts +1 -1
  258. package/{layout → sidenav}/SidenavContext.js +3 -9
  259. package/sidenav/types.d.ts +33 -30
  260. package/slider/Slider.accessibility.test.js +104 -0
  261. package/slider/Slider.js +70 -128
  262. package/slider/Slider.test.js +108 -104
  263. package/slider/types.d.ts +4 -4
  264. package/spinner/Spinner.accessibility.test.js +96 -0
  265. package/spinner/Spinner.js +29 -73
  266. package/spinner/{Spinner.stories.jsx → Spinner.stories.tsx} +53 -27
  267. package/spinner/Spinner.test.js +26 -35
  268. package/spinner/types.d.ts +3 -3
  269. package/status-light/StatusLight.accessibility.test.js +157 -0
  270. package/status-light/StatusLight.d.ts +4 -0
  271. package/status-light/StatusLight.js +51 -0
  272. package/status-light/StatusLight.stories.tsx +74 -0
  273. package/status-light/StatusLight.test.js +25 -0
  274. package/status-light/types.d.ts +17 -0
  275. package/status-light/types.js +5 -0
  276. package/switch/Switch.accessibility.test.js +89 -0
  277. package/switch/Switch.js +51 -99
  278. package/switch/Switch.stories.tsx +33 -34
  279. package/switch/Switch.test.js +52 -97
  280. package/switch/types.d.ts +4 -4
  281. package/table/DropdownTheme.js +62 -0
  282. package/table/Table.accessibility.test.js +82 -0
  283. package/table/Table.d.ts +6 -2
  284. package/table/Table.js +78 -35
  285. package/table/Table.stories.tsx +651 -0
  286. package/table/Table.test.js +94 -7
  287. package/table/types.d.ts +34 -6
  288. package/tabs/Tab.js +27 -43
  289. package/tabs/Tabs.accessibility.test.js +56 -0
  290. package/tabs/Tabs.js +69 -163
  291. package/tabs/Tabs.stories.tsx +40 -4
  292. package/tabs/Tabs.test.js +61 -136
  293. package/tabs/types.d.ts +21 -21
  294. package/tag/Tag.accessibility.test.js +69 -0
  295. package/tag/Tag.js +34 -66
  296. package/tag/Tag.stories.tsx +18 -8
  297. package/tag/Tag.test.js +18 -37
  298. package/tag/types.d.ts +9 -9
  299. package/text-input/Suggestion.js +11 -28
  300. package/text-input/Suggestions.d.ts +1 -1
  301. package/text-input/Suggestions.js +19 -67
  302. package/text-input/TextInput.accessibility.test.js +321 -0
  303. package/text-input/TextInput.js +223 -329
  304. package/text-input/TextInput.stories.tsx +118 -153
  305. package/text-input/TextInput.test.js +1228 -1196
  306. package/text-input/types.d.ts +25 -17
  307. package/textarea/Textarea.accessibility.test.js +155 -0
  308. package/textarea/Textarea.js +70 -113
  309. package/textarea/Textarea.stories.tsx +174 -0
  310. package/textarea/Textarea.test.js +152 -183
  311. package/textarea/types.d.ts +9 -5
  312. package/toggle-group/ToggleGroup.accessibility.test.js +107 -0
  313. package/toggle-group/ToggleGroup.d.ts +2 -2
  314. package/toggle-group/ToggleGroup.js +94 -107
  315. package/toggle-group/ToggleGroup.stories.tsx +52 -7
  316. package/toggle-group/ToggleGroup.test.js +69 -88
  317. package/toggle-group/types.d.ts +28 -19
  318. package/typography/Typography.accessibility.test.js +339 -0
  319. package/typography/Typography.d.ts +2 -2
  320. package/typography/Typography.js +15 -123
  321. package/typography/Typography.stories.tsx +1 -1
  322. package/typography/types.d.ts +1 -1
  323. package/useTheme.d.ts +1147 -1
  324. package/useTheme.js +2 -9
  325. package/useTranslatedLabels.d.ts +84 -1
  326. package/useTranslatedLabels.js +1 -7
  327. package/utils/BaseTypography.d.ts +21 -0
  328. package/utils/BaseTypography.js +94 -0
  329. package/utils/FocusLock.d.ts +13 -0
  330. package/utils/FocusLock.js +124 -0
  331. package/wizard/Wizard.accessibility.test.js +55 -0
  332. package/wizard/Wizard.js +29 -67
  333. package/wizard/Wizard.stories.tsx +39 -0
  334. package/wizard/Wizard.test.js +54 -81
  335. package/wizard/types.d.ts +10 -11
  336. package/card/ice-cream.jpg +0 -0
  337. package/common/OpenSans.css +0 -81
  338. package/common/fonts/OpenSans-Bold.ttf +0 -0
  339. package/common/fonts/OpenSans-BoldItalic.ttf +0 -0
  340. package/common/fonts/OpenSans-ExtraBold.ttf +0 -0
  341. package/common/fonts/OpenSans-ExtraBoldItalic.ttf +0 -0
  342. package/common/fonts/OpenSans-Italic.ttf +0 -0
  343. package/common/fonts/OpenSans-Light.ttf +0 -0
  344. package/common/fonts/OpenSans-LightItalic.ttf +0 -0
  345. package/common/fonts/OpenSans-Regular.ttf +0 -0
  346. package/common/fonts/OpenSans-SemiBold.ttf +0 -0
  347. package/common/fonts/OpenSans-SemiBoldItalic.ttf +0 -0
  348. package/number-input/numberInputContextTypes.d.ts +0 -19
  349. package/resultsetTable/Icons.d.ts +0 -7
  350. package/resultsetTable/ResultsetTable.d.ts +0 -4
  351. package/select/Icons.d.ts +0 -10
  352. package/select/Icons.js +0 -93
  353. package/slider/Slider.stories.tsx +0 -183
  354. package/table/Table.stories.jsx +0 -277
  355. package/tabs-nav/NavTabs.d.ts +0 -8
  356. package/tabs-nav/NavTabs.stories.tsx +0 -172
  357. package/tabs-nav/Tab.js +0 -128
  358. package/text-input/Icons.d.ts +0 -8
  359. package/text-input/Icons.js +0 -60
  360. package/textarea/Textarea.stories.jsx +0 -157
  361. /package/{resultsetTable → action-icon}/types.js +0 -0
  362. /package/{tabs-nav → container}/types.js +0 -0
  363. /package/{number-input/numberInputContextTypes.js → contextual-menu/types.js} +0 -0
  364. /package/{tabs-nav → nav-tabs}/Tab.d.ts +0 -0
@@ -4,8 +4,9 @@ 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,82 +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: (
193
- <svg
194
- version="1.1"
195
- id="Capa_1"
196
- x="0px"
197
- y="0px"
198
- width="438.536px"
199
- height="438.536px"
200
- viewBox="0 0 438.536 438.536"
201
- fill="#4267B2"
202
- >
203
- <g>
204
- <path
205
- d="M414.41,24.123C398.333,8.042,378.963,0,356.315,0H82.228C59.58,0,40.21,8.042,24.126,24.123
206
- C8.045,40.207,0.003,59.576,0.003,82.225v274.084c0,22.647,8.042,42.018,24.123,58.102c16.084,16.084,35.454,24.126,58.102,24.126
207
- h274.084c22.648,0,42.018-8.042,58.095-24.126c16.084-16.084,24.126-35.454,24.126-58.102V82.225
208
- C438.532,59.576,430.49,40.204,414.41,24.123z M373.155,225.548h-49.963V406.84h-74.802V225.548H210.99V163.02h37.401v-37.402
209
- c0-26.838,6.283-47.107,18.843-60.813c12.559-13.706,33.304-20.555,62.242-20.555h49.963v62.526h-31.401
210
- c-10.663,0-17.467,1.853-20.417,5.568c-2.949,3.711-4.428,10.23-4.428,19.558v31.119h56.534L373.155,225.548z"
211
- />
212
- </g>
213
- </svg>
214
- ),
170
+ label: "Train",
171
+ value: "train",
172
+ icon: "train",
215
173
  },
216
174
  {
217
- label: "Pinterest",
218
- value: "pinterest",
219
- icon: "https://cdn-icons-png.flaticon.com/512/145/145808.png",
175
+ label: "Bike",
176
+ value: "bike",
177
+ icon: "pedal_bike",
220
178
  },
221
179
  ],
222
180
  },
223
181
  {
224
- label: "Design",
182
+ label: "Entertainment",
225
183
  options: [
226
184
  {
227
- label: "Figma",
228
- value: "figma",
229
- icon: "https://logowik.com/content/uploads/images/figma.jpg",
185
+ label: "Movie",
186
+ value: "movie",
187
+ icon: "movie",
230
188
  },
231
189
  {
232
- label: "Adobe XD",
233
- value: "adobexd",
234
- icon: "https://cdn.worldvectorlogo.com/logos/adobe-xd-2.svg",
190
+ label: "Music",
191
+ value: "music",
192
+ icon: "music_note",
235
193
  },
236
194
  {
237
- label: "Sketch",
238
- value: "sketch",
239
- icon: "https://cdn.worldvectorlogo.com/logos/sketch-2.svg",
195
+ label: "Games",
196
+ value: "games",
197
+ icon: "joystick",
240
198
  },
241
199
  ],
242
200
  },
243
201
  ];
202
+
244
203
  const optionsWithEllipsisMedium = [
245
204
  { label: "Optiond1234567890123456789012345678901234", value: "1" },
246
205
  { label: "Optiond12345678901234567890123456789012345", value: "2" },
247
206
  { label: "Option 031111111111111111111111111111222", value: "3" },
248
- { label: "Option 03111111111111111111111111111222", value: "4" },
249
207
  ];
250
208
 
209
+ const opinionatedTheme = {
210
+ select: {
211
+ selectedOptionBackgroundColor: "#e6f4ff",
212
+ fontColor: "#000000",
213
+ optionFontColor: "#000000",
214
+ hoverBorderColor: "#a46ede",
215
+ },
216
+ };
217
+
251
218
  const Select = () => (
252
219
  <>
253
220
  <Title title="States" theme="light" level={2} />
@@ -360,200 +327,364 @@ const Select = () => (
360
327
  <Title title="Multiple selection with ellipsis" theme="light" level={4} />
361
328
  <DxcSelect label="Label" options={single_options} multiple defaultValue={["1", "2", "3", "4"]} />
362
329
  <Title title="Value with ellipsis" theme="light" level={4} />
363
- <DxcSelect label="Label" options={optionsWithEllipsisMedium} defaultValue="1" size="medium" />
330
+ <DxcSelect label="Label" options={optionsWithEllipsisMedium} defaultValue="1" />
364
331
  <Title title="Options with ellipsis" theme="light" level={4} />
365
332
  <DxcSelect
366
333
  label="Label"
367
334
  placeholder="Choose an option"
368
335
  defaultValue="1"
369
336
  options={optionsWithEllipsisMedium}
370
- size="medium"
371
- />
372
- </ExampleContainer>
373
- </>
374
- );
375
- const SelectListbox = () => (
376
- <>
377
- <Title title="Listbox" theme="light" level={2} />
378
- <ExampleContainer>
379
- <Title
380
- title="List dialog uses a Radix Popover to appear over elements with a certain z-index"
381
- theme="light"
382
- level={3}
383
- />
384
- <div
385
- style={{
386
- display: "flex",
387
- flexDirection: "column",
388
- gap: "20px",
389
- height: "150px",
390
- width: "min-content",
391
- marginBottom: "100px",
392
- padding: "20px",
393
- border: "1px solid black",
394
- borderRadius: "4px",
395
- overflow: "auto",
396
- zIndex: "1300",
397
- }}
398
- >
399
- <DxcSelect label="Label" options={single_options} optional placeholder="Choose an option" />
400
- <button style={{ zIndex: "1", width: "100px" }}>Submit</button>
401
- </div>
402
- </ExampleContainer>
403
- <Title title="Listbox option states" theme="light" level={3} />
404
- <ExampleContainer pseudoState="pseudo-hover">
405
- <Title title="Hovered option" theme="light" level={4} />
406
- <Listbox
407
- id="x"
408
- currentValue=""
409
- options={one_option}
410
- visualFocusIndex={-1}
411
- lastOptionIndex={0}
412
- multiple={false}
413
- optional={false}
414
- optionalItem={{ label: "Empty", value: "" }}
415
- searchable={false}
416
- handleOptionOnClick={() => {}}
417
- getSelectWidth={() => 360}
418
- />
419
- </ExampleContainer>
420
- <ExampleContainer pseudoState="pseudo-active">
421
- <Title title="Active option" theme="light" level={4} />
422
- <Listbox
423
- id="x"
424
- currentValue=""
425
- options={one_option}
426
- visualFocusIndex={-1}
427
- lastOptionIndex={0}
428
- multiple={false}
429
- optional={false}
430
- optionalItem={{ label: "Empty", value: "" }}
431
- searchable={false}
432
- handleOptionOnClick={() => {}}
433
- getSelectWidth={() => 360}
434
- />
435
- </ExampleContainer>
436
- <ExampleContainer>
437
- <Title title="Focused option" theme="light" level={4} />
438
- <Listbox
439
- id="x"
440
- currentValue=""
441
- options={one_option}
442
- visualFocusIndex={0}
443
- lastOptionIndex={0}
444
- multiple={false}
445
- optional={false}
446
- optionalItem={{ label: "Empty", value: "" }}
447
- searchable={false}
448
- handleOptionOnClick={() => {}}
449
- getSelectWidth={() => 360}
337
+ margin={{ top: "xxlarge" }}
450
338
  />
451
339
  </ExampleContainer>
340
+ <Title title="Opinionated theme" theme="light" level={2} />
452
341
  <ExampleContainer pseudoState="pseudo-hover">
453
- <Title title="Hovered selected option" theme="light" level={4} />
454
- <Listbox
455
- id="x"
456
- currentValue="1"
457
- options={single_options}
458
- visualFocusIndex={-1}
459
- lastOptionIndex={3}
460
- multiple={false}
461
- optional={false}
462
- optionalItem={{ label: "Empty", value: "" }}
463
- searchable={false}
464
- handleOptionOnClick={() => {}}
465
- getSelectWidth={() => 360}
466
- />
467
- </ExampleContainer>
468
- <ExampleContainer pseudoState="pseudo-active">
469
- <Title title="Active selected option" theme="light" level={4} />
470
- <Listbox
471
- id="x"
472
- currentValue="2"
473
- options={single_options}
474
- visualFocusIndex={0}
475
- lastOptionIndex={3}
476
- multiple={false}
477
- optional={false}
478
- optionalItem={{ label: "Empty", value: "" }}
479
- searchable={false}
480
- handleOptionOnClick={() => {}}
481
- getSelectWidth={() => 360}
482
- />
342
+ <Title title="Hovered" theme="light" level={4} />
343
+ <HalstackProvider theme={opinionatedTheme}>
344
+ <DxcSelect label="Hovered" options={single_options} />
345
+ </HalstackProvider>
483
346
  </ExampleContainer>
484
- <Title title="Listbox with icons" theme="light" level={3} />
485
- <ExampleContainer>
486
- <Title title="Icons (SVGs)" theme="light" level={4} />
487
- <Listbox
488
- id="x"
489
- currentValue="3"
490
- options={icon_options}
491
- visualFocusIndex={-1}
492
- lastOptionIndex={3}
493
- multiple={false}
494
- optional={false}
495
- optionalItem={{ label: "Empty", value: "" }}
496
- searchable={false}
497
- handleOptionOnClick={() => {}}
498
- getSelectWidth={() => 360}
499
- />
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>
500
352
  </ExampleContainer>
501
353
  <ExampleContainer>
502
- <Title title="Icons (Images)" theme="light" level={4} />
503
- <Listbox
504
- id="x"
505
- currentValue="facebook"
506
- options={url_options}
507
- visualFocusIndex={-1}
508
- lastOptionIndex={6}
509
- multiple={false}
510
- optional={false}
511
- optionalItem={{ label: "Empty", value: "" }}
512
- searchable={false}
513
- handleOptionOnClick={() => {}}
514
- getSelectWidth={() => 360}
515
- />
354
+ <Title title="Disabled" theme="light" level={4} />
355
+ <HalstackProvider theme={opinionatedTheme}>
356
+ <DxcSelect label="Disabled" placeholder="Placeholder" disabled options={single_options} />
357
+ </HalstackProvider>
516
358
  </ExampleContainer>
517
359
  <ExampleContainer>
518
- <Title title="Grouped icons (SVGs)" theme="light" level={4} />
519
- <Listbox
520
- id="x"
521
- currentValue={["0", "3"]}
522
- options={icon_options_grouped}
523
- visualFocusIndex={-1}
524
- lastOptionIndex={3}
525
- multiple={false}
526
- optional={false}
527
- optionalItem={{ label: "Empty", value: "" }}
528
- searchable={false}
529
- handleOptionOnClick={() => {}}
530
- getSelectWidth={() => 360}
531
- />
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>
532
364
  </ExampleContainer>
533
365
  <ExampleContainer>
534
- <Title title="Grouped icons (Images)" theme="light" level={4} />
535
- <Listbox
536
- id="x"
537
- currentValue={["facebook", "figma"]}
538
- options={url_options}
539
- visualFocusIndex={-1}
540
- lastOptionIndex={6}
541
- multiple={true}
542
- optional={false}
543
- optionalItem={{ label: "Empty", value: "" }}
544
- searchable={false}
545
- handleOptionOnClick={() => {}}
546
- getSelectWidth={() => 360}
547
- />
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>
548
388
  </ExampleContainer>
549
389
  </>
550
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
+
551
672
  const SearchableSelect = () => (
552
673
  <ExampleContainer expanded>
553
674
  <Title title="Searchable select" theme="light" level={4} />
554
675
  <DxcSelect label="Select Label" searchable options={single_options} placeholder="Choose an option" />
555
676
  </ExampleContainer>
556
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
+
557
688
  const SearchValue = () => (
558
689
  <ExampleContainer expanded>
559
690
  <Title title="Searchable select with value" theme="light" level={4} />
@@ -566,6 +697,22 @@ const SearchValue = () => (
566
697
  />
567
698
  </ExampleContainer>
568
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
+
569
716
  const MultipleSelect = () => (
570
717
  <>
571
718
  <ExampleContainer expanded>
@@ -580,12 +727,38 @@ const MultipleSelect = () => (
580
727
  </ExampleContainer>
581
728
  </>
582
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
+
583
746
  const DefaultGroupedOptionsSelect = () => (
584
747
  <ExampleContainer expanded>
585
748
  <Title title="Grouped options simple select" theme="light" level={4} />
586
749
  <DxcSelect label="Label" options={group_options} defaultValue="9" placeholder="Choose an option" />
587
750
  </ExampleContainer>
588
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
+
589
762
  const MultipleGroupedOptionsSelect = () => (
590
763
  <ExampleContainer expanded>
591
764
  <Title title="Grouped options multiple select" theme="light" level={4} />
@@ -598,22 +771,19 @@ const MultipleGroupedOptionsSelect = () => (
598
771
  />
599
772
  </ExampleContainer>
600
773
  );
601
- const SelectMultipleWithIcons = () => (
602
- <ExampleContainer expanded>
603
- <Title title="Multiple select with icons" theme="light" level={4} />
604
- <DxcSelect label="Label" options={icon_options} multiple defaultValue={["1", "3"]} placeholder="Choose an option" />
605
- </ExampleContainer>
606
- );
607
- const MultipleGroupedOptionsSelectWithIcons = () => (
774
+
775
+ const MultipleGroupedOptionsSelectOpinionated = () => (
608
776
  <ExampleContainer expanded>
609
- <Title title="Multiple grouped options with icons" theme="light" level={4} />
610
- <DxcSelect
611
- label="Label"
612
- options={icon_options_grouped}
613
- multiple
614
- defaultValue={["3", "2"]}
615
- placeholder="Choose an option"
616
- />
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>
617
787
  </ExampleContainer>
618
788
  );
619
789
 
@@ -631,6 +801,22 @@ const MultipleSearchable = () => (
631
801
  </ExampleContainer>
632
802
  );
633
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
+
634
820
  export const Chromatic = Select.bind({});
635
821
  Chromatic.play = async ({ canvasElement }) => {
636
822
  const canvas = within(canvasElement);
@@ -650,18 +836,36 @@ Searchable.play = async ({ canvasElement }) => {
650
836
  await userEvent.type(canvas.getByRole("combobox"), "r");
651
837
  };
652
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");
843
+ };
844
+
653
845
  export const SearchableWithValue = SearchValue.bind({});
654
846
  SearchableWithValue.play = async ({ canvasElement }) => {
655
847
  const canvas = within(canvasElement);
656
848
  await userEvent.click(canvas.getByRole("combobox"));
657
849
  };
658
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
+
659
857
  export const MultipleSearchableWithValue = MultipleSearchable.bind({});
660
858
  MultipleSearchableWithValue.play = async ({ canvasElement }) => {
661
859
  const canvas = within(canvasElement);
662
860
  await userEvent.click(canvas.getAllByRole("combobox")[0]);
663
861
  };
664
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
+
665
869
  export const GroupOptionsDisplayed = DefaultGroupedOptionsSelect.bind({});
666
870
  GroupOptionsDisplayed.play = async ({ canvasElement }) => {
667
871
  const canvas = within(canvasElement);
@@ -669,15 +873,35 @@ GroupOptionsDisplayed.play = async ({ canvasElement }) => {
669
873
  await userEvent.click(select);
670
874
  };
671
875
 
876
+ export const GroupOptionsDisplayedOpinionated = DefaultGroupedOptionsSelectOpinionated.bind({});
877
+ GroupOptionsDisplayedOpinionated.play = async ({ canvasElement }) => {
878
+ const canvas = within(canvasElement);
879
+ const select = canvas.getByRole("combobox");
880
+ await userEvent.click(select);
881
+ };
882
+
672
883
  export const MultipleOptionsDisplayed = MultipleSelect.bind({});
673
884
  MultipleOptionsDisplayed.play = async ({ canvasElement }) => {
674
885
  const canvas = within(canvasElement);
675
886
  await userEvent.click(canvas.getAllByRole("combobox")[0]);
676
887
  };
677
888
 
889
+ export const MultipleOptionsDisplayedOpinionated = MultipleSelectOpinioated.bind({});
890
+ MultipleOptionsDisplayedOpinionated.play = async ({ canvasElement }) => {
891
+ const canvas = within(canvasElement);
892
+ await userEvent.click(canvas.getAllByRole("combobox")[0]);
893
+ };
894
+
678
895
  export const MultipleGroupedOptionsDisplayed = MultipleGroupedOptionsSelect.bind({});
679
896
  MultipleGroupedOptionsDisplayed.play = async ({ canvasElement }) => {
680
897
  const canvas = within(canvasElement);
681
898
  const select = canvas.getByRole("combobox");
682
899
  await userEvent.click(select);
683
900
  };
901
+
902
+ export const MultipleGroupedOptionsDisplayedOpinionated = MultipleGroupedOptionsSelectOpinionated.bind({});
903
+ MultipleGroupedOptionsDisplayedOpinionated.play = async ({ canvasElement }) => {
904
+ const canvas = within(canvasElement);
905
+ const select = canvas.getByRole("combobox");
906
+ await userEvent.click(select);
907
+ };