@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
@@ -4,40 +4,29 @@ import DxcDropdown from "./Dropdown";
4
4
  import Title from "../../.storybook/components/Title";
5
5
  import ExampleContainer from "../../.storybook/components/ExampleContainer";
6
6
  import DropdownMenu from "./DropdownMenu";
7
- import DxcCheckbox from "../checkbox/Checkbox";
8
- import DxcTextInput from "../text-input/TextInput";
9
7
  import { Option } from "./types";
10
-
8
+ import useTheme from "../useTheme";
9
+ import DxcFlex from "../flex/Flex";
10
+ import { HalstackProvider } from "../HalstackContext";
11
+ import { ThemeProvider } from "styled-components";
11
12
 
12
13
  export default {
13
14
  title: "Dropdown",
14
15
  component: DxcDropdown,
15
16
  };
16
17
 
17
- const hamburguerIcon = (
18
- <svg xmlns="http://www.w3.org/2000/svg" height="20" width="20">
19
- <path d="M3 14.5V13h14v1.5Zm0-3.75v-1.5h14v1.5ZM3 7V5.5h14V7Z" />
20
- </svg>
21
- );
22
18
  const iconSVG = (
23
- <svg viewBox="0 0 24 24" fill="currentColor">
19
+ <svg viewBox="0 0 24 24" height="24" width="24" fill="currentColor">
24
20
  <path d="M0 0h24v24H0z" fill="none" />
25
21
  <path d="M12 21.35l-1.45-1.32C5.4 15.36 2 12.28 2 8.5 2 5.42 4.42 3 7.5 3c1.74 0 3.41.81 4.5 2.09C13.09 3.81 14.76 3 16.5 3 19.58 3 22 5.42 22 8.5c0 3.78-3.4 6.86-8.55 11.54L12 21.35z" />
26
22
  </svg>
27
23
  );
28
24
  const iconSVGLarge = (
29
- <svg enableBackground="new 0 0 24 24" height="48" viewBox="0 0 24 24" width="48" fill="currentColor">
30
- <g>
31
- <path d="M0,0h24v24H0V0z" fill="none" />
32
- <path d="M0,0h24v24H0V0z" fill="none" />
33
- </g>
34
- <g>
35
- <path d="M12,17.27L18.18,21l-1.64-7.03L22,9.24l-7.19-0.61L12,2L9.19,8.63L2,9.24l5.46,4.73L5.82,21L12,17.27z" />
36
- </g>
25
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 48 48" height="48" width="48">
26
+ <path d="M11 44q-1.2 0-2.1-.9Q8 42.2 8 41V15q0-1.2.9-2.1.9-.9 2.1-.9h5.5v-.5q0-3.15 2.175-5.325Q20.85 4 24 4q3.15 0 5.325 2.175Q31.5 8.35 31.5 11.5v.5H37q1.2 0 2.1.9.9.9.9 2.1v26q0 1.2-.9 2.1-.9.9-2.1.9Zm0-3h26V15h-5.5v4.5q0 .65-.425 1.075Q30.65 21 30 21q-.65 0-1.075-.425-.425-.425-.425-1.075V15h-9v4.5q0 .65-.425 1.075Q18.65 21 18 21q-.65 0-1.075-.425-.425-.425-.425-1.075V15H11v26Zm8.5-29h9v-.5q0-1.9-1.3-3.2Q25.9 7 24 7q-1.9 0-3.2 1.3-1.3 1.3-1.3 3.2ZM11 41V15v26Z" />
37
27
  </svg>
38
28
  );
39
- const iconUrl = "https://iconape.com/wp-content/files/yd/367773/svg/logo-linkedin-logo-icon-png-svg.png";
40
- const icons = [iconSVG, iconSVGLarge, iconUrl];
29
+ const icons = [iconSVG, iconSVGLarge, "nutrition"];
41
30
 
42
31
  const defaultOptions: Option[] = [
43
32
  {
@@ -60,6 +49,18 @@ const defaultOptions: Option[] = [
60
49
  value: "5",
61
50
  label: "Aliexpress",
62
51
  },
52
+ {
53
+ value: "6",
54
+ label: "Etsy",
55
+ },
56
+ {
57
+ value: "7",
58
+ label: "Alibaba",
59
+ },
60
+ {
61
+ value: "8",
62
+ label: "Gearbest shop",
63
+ },
63
64
  ];
64
65
  const options: Option[] = [
65
66
  {
@@ -79,13 +80,21 @@ const optionWithIcon: Option[] = [
79
80
  {
80
81
  value: "1",
81
82
  label: "Ebay",
82
- icon: iconUrl,
83
+ icon: "shopping_cart",
83
84
  },
84
85
  ];
85
86
 
86
87
  const optionsIcon: any = options.map((op, i) => ({ ...op, icon: icons[i] }));
87
88
 
88
- export const Chromatic = () => (
89
+ const opinionatedTheme = {
90
+ dropdown: {
91
+ baseColor: "#ffffff",
92
+ fontColor: "#000000",
93
+ optionFontColor: "#000000",
94
+ },
95
+ };
96
+
97
+ const Dropdown = () => (
89
98
  <>
90
99
  <ExampleContainer>
91
100
  <Title title="Default" theme="light" level={4} />
@@ -121,7 +130,7 @@ export const Chromatic = () => (
121
130
  label="Icon after"
122
131
  options={options}
123
132
  onSelectOption={(value) => {}}
124
- icon="https://iconape.com/wp-content/files/yd/367773/svg/logo-linkedin-logo-icon-png-svg.png"
133
+ icon="shopping_cart"
125
134
  iconPosition="after"
126
135
  />
127
136
  </ExampleContainer>
@@ -131,12 +140,16 @@ export const Chromatic = () => (
131
140
  </ExampleContainer>
132
141
  <ExampleContainer>
133
142
  <Title title="Only icon without caret" theme="light" level={4} />
134
- <DxcDropdown options={options} onSelectOption={(value) => {}} icon={hamburguerIcon} caretHidden />
143
+ <DxcDropdown options={options} onSelectOption={(value) => {}} icon="menu" caretHidden />
135
144
  </ExampleContainer>
136
145
  <ExampleContainer>
137
- <Title title="Large icon" theme="light" level={4} />
146
+ <Title title="Large icon (SVG)" theme="light" level={4} />
138
147
  <DxcDropdown label="Large icon" options={options} onSelectOption={(value) => {}} icon={iconSVGLarge} />
139
148
  </ExampleContainer>
149
+ <ExampleContainer>
150
+ <Title title="Large icon (image)" theme="light" level={4} />
151
+ <DxcDropdown label="Large icon" options={options} onSelectOption={(value) => {}} icon="menu" />
152
+ </ExampleContainer>
140
153
  <ExampleContainer>
141
154
  <Title title="Disabled with icon" theme="light" level={4} />
142
155
  <DxcDropdown
@@ -219,94 +232,196 @@ export const Chromatic = () => (
219
232
  size="fillParent"
220
233
  />
221
234
  </ExampleContainer>
235
+ <ExampleContainer expanded>
236
+ <Title title="Opened menu" theme="light" level={4} />
237
+ <DxcDropdown label="Label" options={options} onSelectOption={(value) => {}} margin={{ top: "xxlarge" }} />
238
+ </ExampleContainer>
222
239
  </>
223
240
  );
224
241
 
225
- const DropdownListStates = () => (
242
+ const DropdownListStates = () => {
243
+ const colorsTheme: any = useTheme();
244
+
245
+ return (
246
+ <>
247
+ <Title title="Dropdown Menu" theme="light" level={2} />
248
+ <ExampleContainer>
249
+ <Title
250
+ title="List dialog uses a Radix Popover to appear over elements with a certain z-index"
251
+ theme="light"
252
+ level={3}
253
+ />
254
+ <div
255
+ style={{
256
+ position: "relative",
257
+ display: "flex",
258
+ flexDirection: "column",
259
+ gap: "20px",
260
+ height: "150px",
261
+ width: "min-content",
262
+ marginBottom: "100px",
263
+ padding: "20px",
264
+ border: "1px solid black",
265
+ borderRadius: "4px",
266
+ overflow: "auto",
267
+ zIndex: "1300",
268
+ }}
269
+ >
270
+ <DxcDropdown
271
+ label="Select a platform"
272
+ options={defaultOptions}
273
+ onSelectOption={(option) => {}}
274
+ size="medium"
275
+ />
276
+ <button style={{ zIndex: "1", width: "100px" }}>Submit</button>
277
+ </div>
278
+ </ExampleContainer>
279
+ <ThemeProvider theme={colorsTheme.dropdown}>
280
+ <Title title="Option states" theme="light" level={3} />
281
+ <ExampleContainer pseudoState="pseudo-hover">
282
+ <Title title="Hovered option" theme="light" level={4} />
283
+ <DropdownMenu
284
+ id="x"
285
+ dropdownTriggerId="dtx"
286
+ iconsPosition="before"
287
+ visualFocusIndex={-1}
288
+ menuItemOnClick={(value) => {}}
289
+ onKeyDown={(e) => {}}
290
+ options={optionWithIcon}
291
+ styles={{ width: 240 }}
292
+ />
293
+ </ExampleContainer>
294
+ <ExampleContainer pseudoState="pseudo-active">
295
+ <Title title="Active option" theme="light" level={4} />
296
+ <DropdownMenu
297
+ id="x"
298
+ dropdownTriggerId="dtx"
299
+ iconsPosition="before"
300
+ visualFocusIndex={-1}
301
+ menuItemOnClick={(value) => {}}
302
+ onKeyDown={(e) => {}}
303
+ options={optionWithIcon}
304
+ styles={{ width: 240 }}
305
+ />
306
+ </ExampleContainer>
307
+ <ExampleContainer>
308
+ <Title title="Focused option" theme="light" level={4} />
309
+ <DropdownMenu
310
+ id="x"
311
+ dropdownTriggerId="dtx"
312
+ iconsPosition="before"
313
+ visualFocusIndex={0}
314
+ menuItemOnClick={(value) => {}}
315
+ onKeyDown={(e) => {}}
316
+ options={options}
317
+ styles={{ width: 240 }}
318
+ />
319
+ </ExampleContainer>
320
+ <Title title="Icons" theme="light" level={3} />
321
+ <ExampleContainer>
322
+ <Title title="Before" theme="light" level={4} />
323
+ <DropdownMenu
324
+ id="x"
325
+ dropdownTriggerId="dtx"
326
+ iconsPosition="before"
327
+ visualFocusIndex={-1}
328
+ menuItemOnClick={(value) => {}}
329
+ onKeyDown={(e) => {}}
330
+ options={optionsIcon}
331
+ styles={{ width: 240 }}
332
+ />
333
+ <Title title="After" theme="light" level={4} />
334
+ <DropdownMenu
335
+ id="x"
336
+ dropdownTriggerId="dtx"
337
+ iconsPosition="after"
338
+ visualFocusIndex={-1}
339
+ menuItemOnClick={(value) => {}}
340
+ onKeyDown={(e) => {}}
341
+ options={optionsIcon}
342
+ styles={{ width: 240 }}
343
+ />
344
+ </ExampleContainer>
345
+ </ThemeProvider>
346
+ </>
347
+ );
348
+ };
349
+
350
+ const DropdownRightAlignment = () => (
351
+ <ExampleContainer expanded>
352
+ <Title title="Dropdown collisions on the right boundary (right)" theme="light" level={4} />
353
+ <DxcFlex justifyContent="flex-end">
354
+ <DxcDropdown label="Label" options={options} onSelectOption={(value) => {}} />
355
+ </DxcFlex>
356
+ </ExampleContainer>
357
+ );
358
+
359
+ const DropdownCenterAlignment = () => (
360
+ <ExampleContainer expanded>
361
+ <Title title="Dropdown collisions on the right boundary (centered)" theme="light" level={4} />
362
+ <DxcFlex justifyContent="flex-end">
363
+ <DxcDropdown label="Label" options={defaultOptions} onSelectOption={(value) => {}} margin="small" />
364
+ </DxcFlex>
365
+ </ExampleContainer>
366
+ );
367
+
368
+ export const Chromatic = Dropdown.bind({});
369
+ Chromatic.play = async ({ canvasElement }) => {
370
+ const canvas = within(canvasElement);
371
+ const buttonList = canvas.getAllByRole("button");
372
+ await userEvent.click(buttonList[buttonList.length - 1]);
373
+ };
374
+
375
+ export const OpinionatedTheme = () => (
226
376
  <>
227
- <Title title="Dropdown Menu" theme="light" level={2} />
228
- <Title title="Default with opened menu" theme="light" level={3} />
377
+ <Title title="Opinionated theme" theme="light" level={2} />
229
378
  <ExampleContainer>
230
- <div style={{ display: "flex", gap: "30px", flexDirection: "column", marginBottom: "80px" }}>
231
- <DxcDropdown label="Select a platform" options={defaultOptions} onSelectOption={(option) => {}} size="medium" />
232
- <DxcTextInput label="Your name" onChange={() => {}} />
233
- <DxcCheckbox
234
- label="You understand the selection and give your consent"
235
- onChange={() => {}}
236
- labelPosition="after"
237
- />
238
- </div>
379
+ <Title title="Default" theme="light" level={4} />
380
+ <HalstackProvider theme={opinionatedTheme}>
381
+ <DxcDropdown label="Default" options={options} onSelectOption={(value) => {}} icon={iconSVG} />
382
+ </HalstackProvider>
239
383
  </ExampleContainer>
240
- <Title title="Option states" theme="light" level={3} />
241
384
  <ExampleContainer pseudoState="pseudo-hover">
242
- <Title title="Hovered option" theme="light" level={4} />
243
- <DropdownMenu
244
- id="x"
245
- dropdownId="dX"
246
- iconsPosition="before"
247
- visualFocusIndex={-1}
248
- optionOnClick={(option) => {}}
249
- onKeyDown={(e) => {}}
250
- options={optionWithIcon}
251
- styles={{ width: 240 }}
252
- />
385
+ <Title title="Hovered" theme="light" level={4} />
386
+ <HalstackProvider theme={opinionatedTheme}>
387
+ <DxcDropdown label="Hovered" options={options} onSelectOption={(value) => {}} icon={iconSVG} />
388
+ </HalstackProvider>
253
389
  </ExampleContainer>
254
390
  <ExampleContainer pseudoState="pseudo-active">
255
- <Title title="Active option" theme="light" level={4} />
256
- <DropdownMenu
257
- id="x"
258
- dropdownId="dX"
259
- iconsPosition="before"
260
- visualFocusIndex={-1}
261
- optionOnClick={(option) => {}}
262
- onKeyDown={(e) => {}}
263
- options={optionWithIcon}
264
- styles={{ width: 240 }}
265
- />
391
+ <Title title="Actived" theme="light" level={4} />
392
+ <HalstackProvider theme={opinionatedTheme}>
393
+ <DxcDropdown label="Actived" options={options} onSelectOption={(value) => {}} icon={iconSVG} />
394
+ </HalstackProvider>
266
395
  </ExampleContainer>
267
- <ExampleContainer>
268
- <Title title="Focused option" theme="light" level={4} />
269
- <DropdownMenu
270
- id="x"
271
- dropdownId="dX"
272
- iconsPosition="before"
273
- visualFocusIndex={0}
274
- optionOnClick={(option) => {}}
275
- onKeyDown={(e) => {}}
276
- options={options}
277
- styles={{ width: 240 }}
278
- />
396
+ <ExampleContainer pseudoState="pseudo-focus">
397
+ <Title title="Focused" theme="light" level={4} />
398
+ <HalstackProvider theme={opinionatedTheme}>
399
+ <DxcDropdown label="Focused" options={options} onSelectOption={(value) => {}} icon={iconSVG} />
400
+ </HalstackProvider>
279
401
  </ExampleContainer>
280
- <Title title="Icons" theme="light" level={3} />
281
402
  <ExampleContainer>
282
- <Title title="Before" theme="light" level={4} />
283
- <DropdownMenu
284
- id="x"
285
- dropdownId="dX"
286
- iconsPosition="before"
287
- visualFocusIndex={-1}
288
- optionOnClick={(option) => {}}
289
- onKeyDown={(e) => {}}
290
- options={optionsIcon}
291
- styles={{ width: 240 }}
292
- />
293
- <Title title="After" theme="light" level={4} />
294
- <DropdownMenu
295
- id="x"
296
- dropdownId="dX"
297
- iconsPosition="after"
298
- visualFocusIndex={-1}
299
- optionOnClick={(option) => {}}
300
- onKeyDown={(e) => {}}
301
- options={optionsIcon}
302
- styles={{ width: 240 }}
303
- />
403
+ <Title title="Disabled" theme="light" level={4} />
404
+ <HalstackProvider theme={opinionatedTheme}>
405
+ <DxcDropdown label="Disabled" options={options} onSelectOption={(value) => {}} icon={iconSVG} disabled />
406
+ </HalstackProvider>
304
407
  </ExampleContainer>
305
408
  </>
306
409
  );
307
410
 
308
411
  export const DropdownMenuStates = DropdownListStates.bind({});
309
412
  DropdownMenuStates.play = async ({ canvasElement }) => {
413
+ const canvas = within(canvasElement);
414
+ await userEvent.click(canvas.getAllByRole("button")[0]);
415
+ };
416
+
417
+ export const DropdownMenuAlignedRight = DropdownRightAlignment.bind({});
418
+ DropdownMenuAlignedRight.play = async ({ canvasElement }) => {
419
+ const canvas = within(canvasElement);
420
+ await userEvent.click(canvas.getByRole("button"));
421
+ };
422
+
423
+ export const DropdownMenuAlignedCenter = DropdownCenterAlignment.bind({});
424
+ DropdownMenuAlignedCenter.play = async ({ canvasElement }) => {
310
425
  const canvas = within(canvasElement);
311
426
  await userEvent.click(canvas.getByRole("button"));
312
427
  };