@dxc-technology/halstack-react 0.0.0-6c8ea9f → 0.0.0-6d25405

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (403) hide show
  1. package/BackgroundColorContext.d.ts +1 -10
  2. package/BackgroundColorContext.js +5 -22
  3. package/HalstackContext.d.ts +1243 -6
  4. package/HalstackContext.js +126 -114
  5. package/README.md +47 -0
  6. package/accordion/Accordion.accessibility.test.js +71 -0
  7. package/accordion/Accordion.d.ts +1 -1
  8. package/accordion/Accordion.js +104 -161
  9. package/accordion/Accordion.stories.tsx +84 -140
  10. package/accordion/Accordion.test.js +25 -41
  11. package/accordion/types.d.ts +6 -17
  12. package/accordion-group/AccordionGroup.accessibility.test.js +88 -0
  13. package/accordion-group/AccordionGroup.d.ts +2 -2
  14. package/accordion-group/AccordionGroup.js +31 -98
  15. package/accordion-group/AccordionGroup.stories.tsx +94 -67
  16. package/accordion-group/AccordionGroup.test.js +52 -105
  17. package/accordion-group/AccordionGroupAccordion.d.ts +4 -0
  18. package/accordion-group/AccordionGroupAccordion.js +31 -0
  19. package/accordion-group/AccordionGroupContext.d.ts +3 -0
  20. package/accordion-group/AccordionGroupContext.js +8 -0
  21. package/accordion-group/types.d.ts +12 -17
  22. package/action-icon/ActionIcon.accessibility.test.js +63 -0
  23. package/action-icon/ActionIcon.d.ts +4 -0
  24. package/action-icon/ActionIcon.js +48 -0
  25. package/action-icon/ActionIcon.stories.tsx +41 -0
  26. package/action-icon/ActionIcon.test.js +64 -0
  27. package/action-icon/types.d.ts +26 -0
  28. package/alert/Alert.accessibility.test.js +95 -0
  29. package/alert/Alert.js +32 -125
  30. package/alert/Alert.stories.tsx +28 -0
  31. package/alert/Alert.test.js +29 -46
  32. package/alert/types.d.ts +5 -5
  33. package/badge/Badge.accessibility.test.js +129 -0
  34. package/badge/Badge.d.ts +1 -1
  35. package/badge/Badge.js +142 -40
  36. package/badge/Badge.stories.tsx +210 -0
  37. package/badge/Badge.test.js +30 -0
  38. package/badge/types.d.ts +52 -2
  39. package/bleed/Bleed.js +14 -55
  40. package/bleed/Bleed.stories.tsx +95 -95
  41. package/bleed/types.d.ts +2 -2
  42. package/box/Box.accessibility.test.js +33 -0
  43. package/box/Box.d.ts +1 -1
  44. package/box/Box.js +30 -81
  45. package/box/Box.stories.tsx +38 -51
  46. package/box/Box.test.js +2 -7
  47. package/box/types.d.ts +3 -14
  48. package/bulleted-list/BulletedList.accessibility.test.js +107 -0
  49. package/bulleted-list/BulletedList.d.ts +7 -0
  50. package/bulleted-list/BulletedList.js +92 -0
  51. package/bulleted-list/BulletedList.stories.tsx +115 -0
  52. package/bulleted-list/types.d.ts +38 -0
  53. package/button/Button.accessibility.test.js +127 -0
  54. package/button/Button.d.ts +1 -1
  55. package/button/Button.js +64 -117
  56. package/button/Button.stories.tsx +151 -100
  57. package/button/Button.test.js +20 -17
  58. package/button/types.d.ts +12 -8
  59. package/card/Card.accessibility.test.js +36 -0
  60. package/card/Card.d.ts +1 -1
  61. package/card/Card.js +64 -107
  62. package/card/Card.stories.tsx +12 -42
  63. package/card/Card.test.js +11 -22
  64. package/card/types.d.ts +6 -11
  65. package/checkbox/Checkbox.accessibility.test.js +87 -0
  66. package/checkbox/Checkbox.d.ts +2 -2
  67. package/checkbox/Checkbox.js +140 -182
  68. package/checkbox/Checkbox.stories.tsx +128 -94
  69. package/checkbox/Checkbox.test.js +160 -39
  70. package/checkbox/types.d.ts +11 -3
  71. package/chip/Chip.accessibility.test.js +67 -0
  72. package/chip/Chip.js +43 -80
  73. package/chip/Chip.stories.tsx +102 -26
  74. package/chip/Chip.test.js +18 -33
  75. package/chip/types.d.ts +4 -4
  76. package/common/coreTokens.d.ts +237 -0
  77. package/common/coreTokens.js +184 -0
  78. package/common/utils.d.ts +1 -0
  79. package/common/utils.js +6 -12
  80. package/common/variables.d.ts +1395 -0
  81. package/common/variables.js +942 -1159
  82. package/container/Container.d.ts +4 -0
  83. package/container/Container.js +194 -0
  84. package/container/Container.stories.tsx +214 -0
  85. package/container/types.d.ts +74 -0
  86. package/contextual-menu/ContextualMenu.accessibility.test.js +86 -0
  87. package/contextual-menu/ContextualMenu.d.ts +7 -0
  88. package/contextual-menu/ContextualMenu.js +71 -0
  89. package/contextual-menu/ContextualMenu.stories.tsx +182 -0
  90. package/contextual-menu/ContextualMenu.test.js +71 -0
  91. package/contextual-menu/MenuItemAction.d.ts +4 -0
  92. package/contextual-menu/MenuItemAction.js +46 -0
  93. package/contextual-menu/types.d.ts +22 -0
  94. package/date-input/Calendar.d.ts +4 -0
  95. package/date-input/Calendar.js +214 -0
  96. package/date-input/DateInput.accessibility.test.js +216 -0
  97. package/date-input/DateInput.js +150 -299
  98. package/date-input/DateInput.stories.tsx +203 -56
  99. package/date-input/DateInput.test.js +700 -371
  100. package/date-input/DatePicker.d.ts +4 -0
  101. package/date-input/DatePicker.js +115 -0
  102. package/date-input/Icons.d.ts +6 -0
  103. package/date-input/Icons.js +58 -0
  104. package/date-input/YearPicker.d.ts +4 -0
  105. package/date-input/YearPicker.js +100 -0
  106. package/date-input/types.d.ts +72 -15
  107. package/dialog/Dialog.accessibility.test.js +69 -0
  108. package/dialog/Dialog.d.ts +1 -1
  109. package/dialog/Dialog.js +73 -107
  110. package/dialog/Dialog.stories.tsx +320 -167
  111. package/dialog/Dialog.test.js +287 -20
  112. package/dialog/types.d.ts +18 -25
  113. package/divider/Divider.accessibility.test.js +33 -0
  114. package/divider/Divider.d.ts +4 -0
  115. package/divider/Divider.js +36 -0
  116. package/divider/Divider.stories.tsx +223 -0
  117. package/divider/Divider.test.js +38 -0
  118. package/divider/types.d.ts +21 -0
  119. package/dropdown/Dropdown.accessibility.test.js +180 -0
  120. package/dropdown/Dropdown.d.ts +1 -1
  121. package/dropdown/Dropdown.js +231 -303
  122. package/dropdown/Dropdown.stories.tsx +235 -57
  123. package/dropdown/Dropdown.test.js +575 -165
  124. package/dropdown/DropdownMenu.d.ts +4 -0
  125. package/dropdown/DropdownMenu.js +63 -0
  126. package/dropdown/DropdownMenuItem.d.ts +4 -0
  127. package/dropdown/DropdownMenuItem.js +70 -0
  128. package/dropdown/types.d.ts +35 -19
  129. package/file-input/FileInput.accessibility.test.js +160 -0
  130. package/file-input/FileInput.d.ts +2 -2
  131. package/file-input/FileInput.js +241 -391
  132. package/file-input/FileInput.stories.tsx +123 -12
  133. package/file-input/FileInput.test.js +292 -367
  134. package/file-input/FileItem.d.ts +4 -14
  135. package/file-input/FileItem.js +52 -117
  136. package/file-input/types.d.ts +25 -8
  137. package/flex/Flex.d.ts +4 -0
  138. package/flex/Flex.js +57 -0
  139. package/flex/Flex.stories.tsx +112 -0
  140. package/flex/types.d.ts +97 -0
  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 +87 -21
  145. package/footer/Footer.test.js +33 -57
  146. package/footer/Icons.d.ts +3 -2
  147. package/footer/Icons.js +67 -8
  148. package/footer/types.d.ts +26 -27
  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 +88 -182
  157. package/header/Header.stories.tsx +118 -39
  158. package/header/Header.test.js +13 -26
  159. package/header/Icons.d.ts +2 -2
  160. package/header/Icons.js +4 -9
  161. package/header/types.d.ts +7 -21
  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 +14 -55
  179. package/inset/Inset.stories.tsx +37 -36
  180. package/inset/types.d.ts +2 -2
  181. package/layout/ApplicationLayout.d.ts +16 -6
  182. package/layout/ApplicationLayout.js +82 -166
  183. package/layout/ApplicationLayout.stories.tsx +85 -94
  184. package/layout/Icons.d.ts +8 -0
  185. package/layout/Icons.js +49 -48
  186. package/layout/types.d.ts +19 -35
  187. package/link/Link.accessibility.test.js +112 -0
  188. package/link/Link.d.ts +2 -2
  189. package/link/Link.js +46 -91
  190. package/link/Link.stories.tsx +74 -7
  191. package/link/Link.test.js +24 -44
  192. package/link/types.d.ts +14 -15
  193. package/main.d.ts +14 -12
  194. package/main.js +65 -101
  195. package/nav-tabs/NavTabs.accessibility.test.js +52 -0
  196. package/nav-tabs/NavTabs.d.ts +7 -0
  197. package/nav-tabs/NavTabs.js +93 -0
  198. package/nav-tabs/NavTabs.stories.tsx +276 -0
  199. package/nav-tabs/NavTabs.test.js +76 -0
  200. package/nav-tabs/NavTabsContext.d.ts +3 -0
  201. package/nav-tabs/NavTabsContext.js +8 -0
  202. package/nav-tabs/Tab.d.ts +4 -0
  203. package/nav-tabs/Tab.js +118 -0
  204. package/nav-tabs/types.d.ts +52 -0
  205. package/nav-tabs/types.js +5 -0
  206. package/number-input/NumberInput.accessibility.test.js +228 -0
  207. package/number-input/NumberInput.js +46 -36
  208. package/number-input/NumberInput.stories.tsx +42 -26
  209. package/number-input/NumberInput.test.js +860 -377
  210. package/number-input/NumberInputContext.d.ts +3 -4
  211. package/number-input/NumberInputContext.js +3 -14
  212. package/number-input/types.d.ts +17 -5
  213. package/package.json +49 -51
  214. package/paginator/Icons.d.ts +5 -0
  215. package/paginator/Icons.js +21 -47
  216. package/paginator/Paginator.accessibility.test.js +79 -0
  217. package/paginator/Paginator.js +23 -59
  218. package/paginator/Paginator.stories.tsx +24 -0
  219. package/paginator/Paginator.test.js +280 -211
  220. package/paginator/types.d.ts +3 -3
  221. package/paragraph/Paragraph.accessibility.test.js +28 -0
  222. package/paragraph/Paragraph.d.ts +5 -0
  223. package/paragraph/Paragraph.js +22 -0
  224. package/paragraph/Paragraph.stories.tsx +27 -0
  225. package/password-input/Icons.d.ts +6 -0
  226. package/password-input/Icons.js +35 -0
  227. package/password-input/PasswordInput.accessibility.test.js +153 -0
  228. package/password-input/PasswordInput.js +57 -126
  229. package/password-input/PasswordInput.stories.tsx +1 -33
  230. package/password-input/PasswordInput.test.js +160 -142
  231. package/password-input/types.d.ts +8 -7
  232. package/progress-bar/ProgressBar.accessibility.test.js +35 -0
  233. package/progress-bar/ProgressBar.js +65 -91
  234. package/progress-bar/ProgressBar.stories.tsx +93 -0
  235. package/progress-bar/ProgressBar.test.js +72 -44
  236. package/progress-bar/types.d.ts +3 -3
  237. package/quick-nav/QuickNav.accessibility.test.js +57 -0
  238. package/quick-nav/QuickNav.js +32 -48
  239. package/quick-nav/QuickNav.stories.tsx +146 -27
  240. package/quick-nav/types.d.ts +10 -10
  241. package/radio-group/Radio.d.ts +1 -1
  242. package/radio-group/Radio.js +59 -76
  243. package/radio-group/RadioGroup.accessibility.test.js +97 -0
  244. package/radio-group/RadioGroup.js +67 -114
  245. package/radio-group/RadioGroup.stories.tsx +132 -18
  246. package/radio-group/RadioGroup.test.js +518 -457
  247. package/radio-group/types.d.ts +10 -10
  248. package/resultset-table/Icons.d.ts +7 -0
  249. package/resultset-table/Icons.js +47 -0
  250. package/resultset-table/ResultsetTable.accessibility.test.js +274 -0
  251. package/resultset-table/ResultsetTable.d.ts +7 -0
  252. package/resultset-table/ResultsetTable.js +170 -0
  253. package/{resultsetTable → resultset-table}/ResultsetTable.stories.tsx +156 -30
  254. package/resultset-table/ResultsetTable.test.js +381 -0
  255. package/{resultsetTable → resultset-table}/types.d.ts +44 -11
  256. package/resultset-table/types.js +5 -0
  257. package/select/Icons.d.ts +7 -7
  258. package/select/Icons.js +1 -5
  259. package/select/Listbox.d.ts +1 -1
  260. package/select/Listbox.js +42 -51
  261. package/select/Option.js +27 -50
  262. package/select/Select.accessibility.test.js +217 -0
  263. package/select/Select.js +173 -237
  264. package/select/Select.stories.tsx +515 -139
  265. package/select/Select.test.js +2009 -1696
  266. package/select/types.d.ts +16 -20
  267. package/sidenav/Icons.d.ts +7 -0
  268. package/sidenav/Icons.js +47 -0
  269. package/sidenav/Sidenav.accessibility.test.js +59 -0
  270. package/sidenav/Sidenav.d.ts +6 -5
  271. package/sidenav/Sidenav.js +132 -71
  272. package/sidenav/Sidenav.stories.tsx +250 -151
  273. package/sidenav/Sidenav.test.js +26 -45
  274. package/sidenav/SidenavContext.d.ts +5 -0
  275. package/sidenav/SidenavContext.js +13 -0
  276. package/sidenav/types.d.ts +52 -26
  277. package/slider/Slider.accessibility.test.js +104 -0
  278. package/slider/Slider.d.ts +2 -2
  279. package/slider/Slider.js +148 -181
  280. package/slider/Slider.test.js +185 -81
  281. package/slider/types.d.ts +7 -3
  282. package/spinner/Spinner.accessibility.test.js +96 -0
  283. package/spinner/Spinner.js +31 -75
  284. package/spinner/{Spinner.stories.jsx → Spinner.stories.tsx} +53 -27
  285. package/spinner/Spinner.test.js +26 -35
  286. package/spinner/types.d.ts +3 -3
  287. package/status-light/StatusLight.accessibility.test.js +157 -0
  288. package/status-light/StatusLight.d.ts +4 -0
  289. package/status-light/StatusLight.js +51 -0
  290. package/status-light/StatusLight.stories.tsx +74 -0
  291. package/status-light/StatusLight.test.js +25 -0
  292. package/status-light/types.d.ts +17 -0
  293. package/status-light/types.js +5 -0
  294. package/switch/Switch.accessibility.test.js +89 -0
  295. package/switch/Switch.d.ts +2 -2
  296. package/switch/Switch.js +145 -126
  297. package/switch/Switch.stories.tsx +37 -60
  298. package/switch/Switch.test.js +138 -56
  299. package/switch/types.d.ts +7 -3
  300. package/table/DropdownTheme.js +62 -0
  301. package/table/Table.accessibility.test.js +82 -0
  302. package/table/Table.d.ts +6 -2
  303. package/table/Table.js +78 -35
  304. package/table/Table.stories.tsx +651 -0
  305. package/table/Table.test.js +95 -8
  306. package/table/types.d.ts +34 -6
  307. package/tabs/Tab.d.ts +4 -0
  308. package/tabs/Tab.js +116 -0
  309. package/tabs/Tabs.accessibility.test.js +56 -0
  310. package/tabs/Tabs.js +314 -141
  311. package/tabs/Tabs.stories.tsx +120 -6
  312. package/tabs/Tabs.test.js +223 -69
  313. package/tabs/types.d.ts +28 -18
  314. package/tag/Tag.accessibility.test.js +69 -0
  315. package/tag/Tag.js +29 -61
  316. package/tag/Tag.stories.tsx +14 -1
  317. package/tag/Tag.test.js +20 -31
  318. package/tag/types.d.ts +7 -7
  319. package/text-input/Suggestion.js +40 -28
  320. package/text-input/Suggestions.d.ts +4 -0
  321. package/text-input/Suggestions.js +86 -0
  322. package/text-input/TextInput.accessibility.test.js +321 -0
  323. package/text-input/TextInput.js +311 -514
  324. package/text-input/TextInput.stories.tsx +266 -275
  325. package/text-input/TextInput.test.js +1419 -1375
  326. package/text-input/types.d.ts +43 -16
  327. package/textarea/Textarea.accessibility.test.js +155 -0
  328. package/textarea/Textarea.js +70 -113
  329. package/textarea/Textarea.stories.tsx +174 -0
  330. package/textarea/Textarea.test.js +152 -183
  331. package/textarea/types.d.ts +9 -5
  332. package/toggle-group/ToggleGroup.accessibility.test.js +107 -0
  333. package/toggle-group/ToggleGroup.d.ts +2 -2
  334. package/toggle-group/ToggleGroup.js +92 -106
  335. package/toggle-group/ToggleGroup.stories.tsx +49 -4
  336. package/toggle-group/ToggleGroup.test.js +69 -88
  337. package/toggle-group/types.d.ts +26 -17
  338. package/typography/Typography.accessibility.test.js +339 -0
  339. package/typography/Typography.d.ts +4 -0
  340. package/typography/Typography.js +23 -0
  341. package/typography/Typography.stories.tsx +198 -0
  342. package/typography/types.d.ts +18 -0
  343. package/typography/types.js +5 -0
  344. package/useTheme.d.ts +1147 -1
  345. package/useTheme.js +2 -9
  346. package/useTranslatedLabels.d.ts +84 -1
  347. package/useTranslatedLabels.js +1 -7
  348. package/utils/BaseTypography.d.ts +21 -0
  349. package/utils/BaseTypography.js +94 -0
  350. package/utils/FocusLock.d.ts +13 -0
  351. package/utils/FocusLock.js +124 -0
  352. package/wizard/Wizard.accessibility.test.js +55 -0
  353. package/wizard/Wizard.js +24 -66
  354. package/wizard/Wizard.stories.tsx +40 -1
  355. package/wizard/Wizard.test.js +54 -81
  356. package/wizard/types.d.ts +8 -8
  357. package/card/ice-cream.jpg +0 -0
  358. package/common/OpenSans.css +0 -81
  359. package/common/RequiredComponent.js +0 -32
  360. package/common/fonts/OpenSans-Bold.ttf +0 -0
  361. package/common/fonts/OpenSans-BoldItalic.ttf +0 -0
  362. package/common/fonts/OpenSans-ExtraBold.ttf +0 -0
  363. package/common/fonts/OpenSans-ExtraBoldItalic.ttf +0 -0
  364. package/common/fonts/OpenSans-Italic.ttf +0 -0
  365. package/common/fonts/OpenSans-Light.ttf +0 -0
  366. package/common/fonts/OpenSans-LightItalic.ttf +0 -0
  367. package/common/fonts/OpenSans-Regular.ttf +0 -0
  368. package/common/fonts/OpenSans-SemiBold.ttf +0 -0
  369. package/common/fonts/OpenSans-SemiBoldItalic.ttf +0 -0
  370. package/list/List.d.ts +0 -4
  371. package/list/List.js +0 -47
  372. package/list/List.stories.tsx +0 -95
  373. package/list/types.d.ts +0 -7
  374. package/number-input/numberInputContextTypes.d.ts +0 -19
  375. package/progress-bar/ProgressBar.stories.jsx +0 -58
  376. package/radio/Radio.d.ts +0 -4
  377. package/radio/Radio.js +0 -173
  378. package/radio/Radio.stories.tsx +0 -192
  379. package/radio/Radio.test.js +0 -71
  380. package/radio/types.d.ts +0 -54
  381. package/resultsetTable/ResultsetTable.d.ts +0 -4
  382. package/resultsetTable/ResultsetTable.js +0 -254
  383. package/resultsetTable/ResultsetTable.test.js +0 -306
  384. package/row/Row.d.ts +0 -3
  385. package/row/Row.js +0 -127
  386. package/row/Row.stories.tsx +0 -237
  387. package/row/types.d.ts +0 -28
  388. package/slider/Slider.stories.tsx +0 -177
  389. package/stack/Stack.d.ts +0 -3
  390. package/stack/Stack.js +0 -97
  391. package/stack/Stack.stories.tsx +0 -164
  392. package/stack/types.d.ts +0 -24
  393. package/table/Table.stories.jsx +0 -277
  394. package/text/Text.d.ts +0 -7
  395. package/text/Text.js +0 -30
  396. package/text/Text.stories.tsx +0 -19
  397. package/textarea/Textarea.stories.jsx +0 -157
  398. /package/{list → action-icon}/types.js +0 -0
  399. /package/{radio → bulleted-list}/types.js +0 -0
  400. /package/{resultsetTable → container}/types.js +0 -0
  401. /package/{row → contextual-menu}/types.js +0 -0
  402. /package/{stack → divider}/types.js +0 -0
  403. /package/{number-input/numberInputContextTypes.js → flex/types.js} +0 -0
@@ -3,6 +3,12 @@ import { userEvent, within } from "@storybook/testing-library";
3
3
  import DxcDropdown from "./Dropdown";
4
4
  import Title from "../../.storybook/components/Title";
5
5
  import ExampleContainer from "../../.storybook/components/ExampleContainer";
6
+ import DropdownMenu from "./DropdownMenu";
7
+ import { Option } from "./types";
8
+ import useTheme from "../useTheme";
9
+ import DxcFlex from "../flex/Flex";
10
+ import { HalstackProvider } from "../HalstackContext";
11
+ import { ThemeProvider } from "styled-components";
6
12
 
7
13
  export default {
8
14
  title: "Dropdown",
@@ -10,28 +16,22 @@ export default {
10
16
  };
11
17
 
12
18
  const iconSVG = (
13
- <svg viewBox="0 0 24 24" fill="currentColor">
19
+ <svg viewBox="0 0 24 24" height="24" width="24" fill="currentColor">
14
20
  <path d="M0 0h24v24H0z" fill="none" />
15
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" />
16
22
  </svg>
17
23
  );
18
-
19
24
  const iconSVGLarge = (
20
- <svg enable-background="new 0 0 24 24" height="48px" viewBox="0 0 24 24" width="48px" fill="currentColor">
21
- <g>
22
- <path d="M0,0h24v24H0V0z" fill="none" />
23
- <path d="M0,0h24v24H0V0z" fill="none" />
24
- </g>
25
- <g>
26
- <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" />
27
- </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" />
28
27
  </svg>
29
28
  );
29
+ const icons = [iconSVG, iconSVGLarge, "nutrition"];
30
30
 
31
- const options: any = [
31
+ const defaultOptions: Option[] = [
32
32
  {
33
33
  value: "1",
34
- label: "Amazon with a very long text",
34
+ label: "Amazon",
35
35
  },
36
36
  {
37
37
  value: "2",
@@ -41,24 +41,60 @@ const options: any = [
41
41
  value: "3",
42
42
  label: "Apple",
43
43
  },
44
+ {
45
+ value: "4",
46
+ label: "Wallapop",
47
+ },
48
+ {
49
+ value: "5",
50
+ label: "Aliexpress",
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
+ },
44
64
  ];
45
-
46
- const option: any = [
65
+ const options: Option[] = [
47
66
  {
48
67
  value: "1",
68
+ label: "Amazon with a very long text",
69
+ },
70
+ {
71
+ value: "2",
49
72
  label: "Ebay",
50
73
  },
74
+ {
75
+ value: "3",
76
+ label: "Apple",
77
+ },
51
78
  ];
52
-
53
- const icons = [
54
- iconSVG,
55
- iconSVGLarge,
56
- "https://iconape.com/wp-content/files/yd/367773/svg/logo-linkedin-logo-icon-png-svg.png",
79
+ const optionWithIcon: Option[] = [
80
+ {
81
+ value: "1",
82
+ label: "Ebay",
83
+ icon: "shopping_cart",
84
+ },
57
85
  ];
58
86
 
59
87
  const optionsIcon: any = options.map((op, i) => ({ ...op, icon: icons[i] }));
60
88
 
61
- export const Chromatic = () => (
89
+ const opinionatedTheme = {
90
+ dropdown: {
91
+ baseColor: "#ffffff",
92
+ fontColor: "#000000",
93
+ optionFontColor: "#000000",
94
+ },
95
+ };
96
+
97
+ const Dropdown = () => (
62
98
  <>
63
99
  <ExampleContainer>
64
100
  <Title title="Default" theme="light" level={4} />
@@ -68,7 +104,7 @@ export const Chromatic = () => (
68
104
  <Title title="Hovered" theme="light" level={4} />
69
105
  <DxcDropdown label="Hovered" options={options} onSelectOption={(value) => {}} />
70
106
  </ExampleContainer>
71
- <ExampleContainer pseudoState="pseudo-focus-visible">
107
+ <ExampleContainer pseudoState="pseudo-focus">
72
108
  <Title title="Focused" theme="light" level={4} />
73
109
  <DxcDropdown label="Focused" options={options} onSelectOption={(value) => {}} />
74
110
  </ExampleContainer>
@@ -94,7 +130,7 @@ export const Chromatic = () => (
94
130
  label="Icon after"
95
131
  options={options}
96
132
  onSelectOption={(value) => {}}
97
- icon="https://iconape.com/wp-content/files/yd/367773/svg/logo-linkedin-logo-icon-png-svg.png"
133
+ icon="shopping_cart"
98
134
  iconPosition="after"
99
135
  />
100
136
  </ExampleContainer>
@@ -103,9 +139,17 @@ export const Chromatic = () => (
103
139
  <DxcDropdown options={options} onSelectOption={(value) => {}} icon={iconSVG} />
104
140
  </ExampleContainer>
105
141
  <ExampleContainer>
106
- <Title title="Large icon" theme="light" level={4} />
142
+ <Title title="Only icon without caret" theme="light" level={4} />
143
+ <DxcDropdown options={options} onSelectOption={(value) => {}} icon="menu" caretHidden />
144
+ </ExampleContainer>
145
+ <ExampleContainer>
146
+ <Title title="Large icon (SVG)" theme="light" level={4} />
107
147
  <DxcDropdown label="Large icon" options={options} onSelectOption={(value) => {}} icon={iconSVGLarge} />
108
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>
109
153
  <ExampleContainer>
110
154
  <Title title="Disabled with icon" theme="light" level={4} />
111
155
  <DxcDropdown
@@ -188,62 +232,196 @@ export const Chromatic = () => (
188
232
  size="fillParent"
189
233
  />
190
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>
191
239
  </>
192
240
  );
193
241
 
194
- const DropdownWithOptions = () => (
195
- <ExampleContainer expanded>
196
- <Title title="Options" theme="light" level={4} />
197
- <DxcDropdown label="Options with icon" options={optionsIcon} onSelectOption={(value) => {}} />
198
- </ExampleContainer>
199
- );
242
+ const DropdownListStates = () => {
243
+ const colorsTheme: any = useTheme();
200
244
 
201
- const DropdownHoverOption = () => (
202
- <ExampleContainer pseudoState="pseudo-hover" expanded>
203
- <Title title="Hovered option" theme="light" level={4} />
204
- <DxcDropdown label="Hovered options" options={option} onSelectOption={(value) => {}} />
205
- </ExampleContainer>
206
- );
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
+ };
207
349
 
208
- const DropdownActiveOption = () => (
209
- <ExampleContainer pseudoState="pseudo-active" expanded>
210
- <Title title="Actived option" theme="light" level={4} />
211
- <DxcDropdown label="Actived options" options={option} onSelectOption={(value) => {}} />
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>
212
356
  </ExampleContainer>
213
357
  );
214
358
 
215
- const DropdownWithOptionsIconAfter = () => (
359
+ const DropdownCenterAlignment = () => (
216
360
  <ExampleContainer expanded>
217
- <Title title="Icon after options" theme="light" level={4} />
218
- <DxcDropdown
219
- label="Icon after options"
220
- options={optionsIcon}
221
- onSelectOption={(value) => {}}
222
- optionsIconPosition="after"
223
- />
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>
224
365
  </ExampleContainer>
225
366
  );
226
367
 
227
- export const DropdownOptions = DropdownWithOptions.bind({});
228
- DropdownOptions.play = async ({ canvasElement }) => {
368
+ export const Chromatic = Dropdown.bind({});
369
+ Chromatic.play = async ({ canvasElement }) => {
229
370
  const canvas = within(canvasElement);
230
- await userEvent.click(canvas.getByRole("button"));
371
+ const buttonList = canvas.getAllByRole("button");
372
+ await userEvent.click(buttonList[buttonList.length - 1]);
231
373
  };
232
374
 
233
- export const DropdownHoveredOption = DropdownHoverOption.bind({});
234
- DropdownHoveredOption.play = async ({ canvasElement }) => {
375
+ export const OpinionatedTheme = () => (
376
+ <>
377
+ <Title title="Opinionated theme" theme="light" level={2} />
378
+ <ExampleContainer>
379
+ <Title title="Default" theme="light" level={4} />
380
+ <HalstackProvider theme={opinionatedTheme}>
381
+ <DxcDropdown label="Default" options={options} onSelectOption={(value) => {}} icon={iconSVG} />
382
+ </HalstackProvider>
383
+ </ExampleContainer>
384
+ <ExampleContainer pseudoState="pseudo-hover">
385
+ <Title title="Hovered" theme="light" level={4} />
386
+ <HalstackProvider theme={opinionatedTheme}>
387
+ <DxcDropdown label="Hovered" options={options} onSelectOption={(value) => {}} icon={iconSVG} />
388
+ </HalstackProvider>
389
+ </ExampleContainer>
390
+ <ExampleContainer pseudoState="pseudo-active">
391
+ <Title title="Actived" theme="light" level={4} />
392
+ <HalstackProvider theme={opinionatedTheme}>
393
+ <DxcDropdown label="Actived" options={options} onSelectOption={(value) => {}} icon={iconSVG} />
394
+ </HalstackProvider>
395
+ </ExampleContainer>
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>
401
+ </ExampleContainer>
402
+ <ExampleContainer>
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>
407
+ </ExampleContainer>
408
+ </>
409
+ );
410
+
411
+ export const DropdownMenuStates = DropdownListStates.bind({});
412
+ DropdownMenuStates.play = async ({ canvasElement }) => {
235
413
  const canvas = within(canvasElement);
236
- await userEvent.click(canvas.getByRole("button"));
414
+ await userEvent.click(canvas.getAllByRole("button")[0]);
237
415
  };
238
416
 
239
- export const DropdownActivedOption = DropdownActiveOption.bind({});
240
- DropdownActivedOption.play = async ({ canvasElement }) => {
417
+ export const DropdownMenuAlignedRight = DropdownRightAlignment.bind({});
418
+ DropdownMenuAlignedRight.play = async ({ canvasElement }) => {
241
419
  const canvas = within(canvasElement);
242
420
  await userEvent.click(canvas.getByRole("button"));
243
421
  };
244
422
 
245
- export const DropdownOptionsIconAfter = DropdownWithOptionsIconAfter.bind({});
246
- DropdownOptionsIconAfter.play = async ({ canvasElement }) => {
423
+ export const DropdownMenuAlignedCenter = DropdownCenterAlignment.bind({});
424
+ DropdownMenuAlignedCenter.play = async ({ canvasElement }) => {
247
425
  const canvas = within(canvasElement);
248
426
  await userEvent.click(canvas.getByRole("button"));
249
427
  };