@dxc-technology/halstack-react 0.0.0-4dc6bb3 → 0.0.0-4e1277a

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 (331) 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 -111
  5. package/README.md +47 -0
  6. package/accordion/Accordion.d.ts +1 -1
  7. package/accordion/Accordion.js +37 -100
  8. package/accordion/Accordion.stories.tsx +101 -124
  9. package/accordion/Accordion.test.js +19 -34
  10. package/accordion/types.d.ts +5 -17
  11. package/accordion-group/AccordionGroup.d.ts +2 -2
  12. package/accordion-group/AccordionGroup.js +29 -77
  13. package/accordion-group/AccordionGroup.stories.tsx +78 -77
  14. package/accordion-group/AccordionGroup.test.js +44 -72
  15. package/accordion-group/AccordionGroupAccordion.d.ts +4 -0
  16. package/accordion-group/AccordionGroupAccordion.js +31 -0
  17. package/accordion-group/AccordionGroupContext.d.ts +3 -0
  18. package/accordion-group/AccordionGroupContext.js +8 -0
  19. package/accordion-group/types.d.ts +6 -18
  20. package/action-icon/ActionIcon.d.ts +4 -0
  21. package/action-icon/ActionIcon.js +47 -0
  22. package/action-icon/ActionIcon.stories.tsx +41 -0
  23. package/action-icon/ActionIcon.test.js +64 -0
  24. package/action-icon/types.d.ts +26 -0
  25. package/alert/Alert.js +19 -58
  26. package/alert/Alert.stories.tsx +28 -0
  27. package/alert/Alert.test.js +29 -46
  28. package/alert/types.d.ts +5 -5
  29. package/badge/Badge.d.ts +1 -1
  30. package/badge/Badge.js +141 -43
  31. package/badge/Badge.stories.tsx +210 -0
  32. package/badge/Badge.test.js +30 -0
  33. package/badge/types.d.ts +52 -3
  34. package/bleed/Bleed.js +13 -21
  35. package/bleed/Bleed.stories.tsx +1 -0
  36. package/bleed/types.d.ts +2 -2
  37. package/box/Box.d.ts +1 -1
  38. package/box/Box.js +18 -59
  39. package/box/Box.stories.tsx +38 -51
  40. package/box/Box.test.js +2 -7
  41. package/box/types.d.ts +3 -15
  42. package/bulleted-list/BulletedList.js +19 -53
  43. package/bulleted-list/BulletedList.stories.tsx +8 -93
  44. package/bulleted-list/types.d.ts +32 -5
  45. package/button/Button.d.ts +1 -1
  46. package/button/Button.js +71 -106
  47. package/button/Button.stories.tsx +144 -101
  48. package/button/Button.test.js +20 -17
  49. package/button/types.d.ts +9 -5
  50. package/card/Card.d.ts +1 -1
  51. package/card/Card.js +48 -89
  52. package/card/Card.stories.tsx +12 -42
  53. package/card/Card.test.js +11 -22
  54. package/card/types.d.ts +6 -12
  55. package/checkbox/Checkbox.d.ts +2 -2
  56. package/checkbox/Checkbox.js +92 -126
  57. package/checkbox/Checkbox.stories.tsx +128 -94
  58. package/checkbox/Checkbox.test.js +108 -64
  59. package/checkbox/types.d.ts +11 -3
  60. package/chip/Chip.js +39 -79
  61. package/chip/Chip.stories.tsx +121 -26
  62. package/chip/Chip.test.js +16 -31
  63. package/chip/types.d.ts +4 -4
  64. package/common/coreTokens.d.ts +237 -0
  65. package/common/coreTokens.js +184 -0
  66. package/common/utils.d.ts +1 -0
  67. package/common/utils.js +6 -12
  68. package/common/variables.d.ts +1395 -0
  69. package/common/variables.js +921 -1162
  70. package/container/Container.d.ts +4 -0
  71. package/container/Container.js +194 -0
  72. package/container/Container.stories.tsx +214 -0
  73. package/container/types.d.ts +74 -0
  74. package/contextual-menu/ContextualMenu.d.ts +7 -0
  75. package/contextual-menu/ContextualMenu.js +71 -0
  76. package/contextual-menu/ContextualMenu.stories.tsx +182 -0
  77. package/contextual-menu/ContextualMenu.test.js +71 -0
  78. package/contextual-menu/MenuItemAction.d.ts +4 -0
  79. package/contextual-menu/MenuItemAction.js +46 -0
  80. package/contextual-menu/types.d.ts +22 -0
  81. package/date-input/Calendar.d.ts +4 -0
  82. package/date-input/Calendar.js +214 -0
  83. package/date-input/DateInput.js +150 -299
  84. package/date-input/DateInput.stories.tsx +203 -56
  85. package/date-input/DateInput.test.js +700 -371
  86. package/date-input/DatePicker.d.ts +4 -0
  87. package/date-input/DatePicker.js +115 -0
  88. package/date-input/Icons.d.ts +6 -0
  89. package/date-input/Icons.js +58 -0
  90. package/date-input/YearPicker.d.ts +4 -0
  91. package/date-input/YearPicker.js +100 -0
  92. package/date-input/types.d.ts +72 -15
  93. package/dialog/Dialog.d.ts +1 -1
  94. package/dialog/Dialog.js +61 -119
  95. package/dialog/Dialog.stories.tsx +310 -212
  96. package/dialog/Dialog.test.js +269 -32
  97. package/dialog/types.d.ts +18 -26
  98. package/divider/Divider.d.ts +4 -0
  99. package/divider/Divider.js +36 -0
  100. package/divider/Divider.stories.tsx +223 -0
  101. package/divider/Divider.test.js +38 -0
  102. package/divider/types.d.ts +21 -0
  103. package/divider/types.js +5 -0
  104. package/dropdown/Dropdown.js +75 -127
  105. package/dropdown/Dropdown.stories.tsx +210 -84
  106. package/dropdown/Dropdown.test.js +409 -400
  107. package/dropdown/DropdownMenu.js +20 -37
  108. package/dropdown/DropdownMenuItem.js +9 -34
  109. package/dropdown/types.d.ts +18 -20
  110. package/file-input/FileInput.d.ts +2 -2
  111. package/file-input/FileInput.js +241 -355
  112. package/file-input/FileInput.stories.tsx +123 -12
  113. package/file-input/FileInput.test.js +369 -367
  114. package/file-input/FileItem.d.ts +4 -14
  115. package/file-input/FileItem.js +45 -96
  116. package/file-input/types.d.ts +25 -8
  117. package/flex/Flex.d.ts +1 -1
  118. package/flex/Flex.js +40 -40
  119. package/flex/Flex.stories.tsx +35 -26
  120. package/flex/types.d.ts +84 -8
  121. package/footer/Footer.d.ts +1 -1
  122. package/footer/Footer.js +70 -117
  123. package/footer/Footer.stories.tsx +55 -21
  124. package/footer/Footer.test.js +33 -57
  125. package/footer/Icons.d.ts +3 -2
  126. package/footer/Icons.js +66 -7
  127. package/footer/types.d.ts +25 -27
  128. package/grid/Grid.d.ts +7 -0
  129. package/grid/Grid.js +76 -0
  130. package/grid/Grid.stories.tsx +219 -0
  131. package/grid/types.d.ts +115 -0
  132. package/grid/types.js +5 -0
  133. package/header/Header.d.ts +4 -3
  134. package/header/Header.js +48 -133
  135. package/header/Header.stories.tsx +115 -36
  136. package/header/Header.test.js +13 -26
  137. package/header/Icons.d.ts +2 -2
  138. package/header/Icons.js +2 -7
  139. package/header/types.d.ts +7 -22
  140. package/heading/Heading.js +10 -32
  141. package/heading/Heading.test.js +71 -88
  142. package/heading/types.d.ts +7 -7
  143. package/icon/Icon.d.ts +4 -0
  144. package/icon/Icon.js +33 -0
  145. package/icon/Icon.stories.tsx +26 -0
  146. package/icon/types.d.ts +4 -0
  147. package/icon/types.js +5 -0
  148. package/image/Image.d.ts +4 -0
  149. package/image/Image.js +70 -0
  150. package/image/Image.stories.tsx +129 -0
  151. package/image/types.d.ts +72 -0
  152. package/image/types.js +5 -0
  153. package/inset/Inset.js +13 -21
  154. package/inset/Inset.stories.tsx +2 -1
  155. package/inset/types.d.ts +2 -2
  156. package/layout/ApplicationLayout.d.ts +5 -5
  157. package/layout/ApplicationLayout.js +30 -67
  158. package/layout/ApplicationLayout.stories.tsx +1 -1
  159. package/layout/Icons.d.ts +8 -5
  160. package/layout/Icons.js +51 -59
  161. package/layout/types.d.ts +5 -6
  162. package/link/Link.js +25 -46
  163. package/link/Link.stories.tsx +60 -0
  164. package/link/Link.test.js +24 -44
  165. package/link/types.d.ts +14 -14
  166. package/main.d.ts +10 -5
  167. package/main.js +47 -59
  168. package/nav-tabs/NavTabs.d.ts +7 -0
  169. package/{tabs-nav → nav-tabs}/NavTabs.js +25 -57
  170. package/{tabs-nav → nav-tabs}/NavTabs.stories.tsx +115 -9
  171. package/{tabs-nav → nav-tabs}/NavTabs.test.js +39 -45
  172. package/nav-tabs/NavTabsContext.d.ts +3 -0
  173. package/nav-tabs/NavTabsContext.js +8 -0
  174. package/nav-tabs/Tab.js +118 -0
  175. package/{tabs-nav → nav-tabs}/types.d.ts +14 -15
  176. package/nav-tabs/types.js +5 -0
  177. package/number-input/NumberInput.js +46 -36
  178. package/number-input/NumberInput.stories.tsx +42 -26
  179. package/number-input/NumberInput.test.js +860 -377
  180. package/number-input/NumberInputContext.d.ts +3 -4
  181. package/number-input/NumberInputContext.js +3 -14
  182. package/number-input/types.d.ts +17 -5
  183. package/package.json +37 -40
  184. package/paginator/Icons.d.ts +5 -0
  185. package/paginator/Icons.js +21 -47
  186. package/paginator/Paginator.js +23 -59
  187. package/paginator/Paginator.stories.tsx +24 -0
  188. package/paginator/Paginator.test.js +253 -226
  189. package/paginator/types.d.ts +3 -3
  190. package/paragraph/Paragraph.d.ts +3 -4
  191. package/paragraph/Paragraph.js +6 -22
  192. package/paragraph/Paragraph.stories.tsx +0 -17
  193. package/password-input/Icons.d.ts +6 -0
  194. package/password-input/Icons.js +35 -0
  195. package/password-input/PasswordInput.js +57 -126
  196. package/password-input/PasswordInput.stories.tsx +1 -33
  197. package/password-input/PasswordInput.test.js +158 -141
  198. package/password-input/types.d.ts +8 -7
  199. package/progress-bar/ProgressBar.d.ts +2 -2
  200. package/progress-bar/ProgressBar.js +23 -55
  201. package/progress-bar/{ProgressBar.stories.jsx → ProgressBar.stories.tsx} +36 -3
  202. package/progress-bar/ProgressBar.test.js +36 -53
  203. package/progress-bar/types.d.ts +4 -3
  204. package/quick-nav/QuickNav.js +7 -28
  205. package/quick-nav/QuickNav.stories.tsx +82 -26
  206. package/quick-nav/types.d.ts +10 -10
  207. package/radio-group/Radio.d.ts +1 -1
  208. package/radio-group/Radio.js +31 -63
  209. package/radio-group/RadioGroup.js +51 -95
  210. package/radio-group/RadioGroup.stories.tsx +131 -18
  211. package/radio-group/RadioGroup.test.js +513 -422
  212. package/radio-group/types.d.ts +8 -8
  213. package/resultset-table/Icons.d.ts +7 -0
  214. package/resultset-table/Icons.js +47 -0
  215. package/resultset-table/ResultsetTable.d.ts +7 -0
  216. package/resultset-table/ResultsetTable.js +166 -0
  217. package/{resultsetTable → resultset-table}/ResultsetTable.stories.tsx +152 -30
  218. package/{resultsetTable → resultset-table}/ResultsetTable.test.js +167 -144
  219. package/{resultsetTable → resultset-table}/types.d.ts +13 -7
  220. package/resultset-table/types.js +5 -0
  221. package/select/Icons.d.ts +7 -7
  222. package/select/Icons.js +1 -5
  223. package/select/Listbox.d.ts +1 -1
  224. package/select/Listbox.js +17 -72
  225. package/select/Option.js +27 -50
  226. package/select/Select.js +121 -175
  227. package/select/Select.stories.tsx +497 -153
  228. package/select/Select.test.js +1970 -1775
  229. package/select/types.d.ts +16 -17
  230. package/sidenav/Icons.d.ts +7 -0
  231. package/sidenav/Icons.js +47 -0
  232. package/sidenav/Sidenav.d.ts +2 -2
  233. package/sidenav/Sidenav.js +83 -154
  234. package/sidenav/Sidenav.stories.tsx +165 -63
  235. package/sidenav/Sidenav.test.js +3 -10
  236. package/{layout → sidenav}/SidenavContext.d.ts +1 -1
  237. package/{layout → sidenav}/SidenavContext.js +3 -9
  238. package/sidenav/types.d.ts +31 -28
  239. package/slider/Slider.d.ts +2 -2
  240. package/slider/Slider.js +77 -134
  241. package/slider/Slider.test.js +108 -104
  242. package/slider/types.d.ts +7 -3
  243. package/spinner/Spinner.js +31 -75
  244. package/spinner/{Spinner.stories.jsx → Spinner.stories.tsx} +53 -27
  245. package/spinner/Spinner.test.js +26 -35
  246. package/spinner/types.d.ts +3 -3
  247. package/status-light/StatusLight.d.ts +4 -0
  248. package/status-light/StatusLight.js +51 -0
  249. package/status-light/StatusLight.stories.tsx +74 -0
  250. package/status-light/StatusLight.test.js +25 -0
  251. package/status-light/types.d.ts +17 -0
  252. package/status-light/types.js +5 -0
  253. package/switch/Switch.d.ts +3 -3
  254. package/switch/Switch.js +56 -103
  255. package/switch/Switch.stories.tsx +33 -34
  256. package/switch/Switch.test.js +52 -97
  257. package/switch/types.d.ts +8 -3
  258. package/table/DropdownTheme.js +62 -0
  259. package/table/Table.d.ts +6 -2
  260. package/table/Table.js +87 -35
  261. package/table/Table.stories.tsx +658 -0
  262. package/table/Table.test.js +95 -8
  263. package/table/types.d.ts +48 -6
  264. package/tabs/Tab.js +26 -45
  265. package/tabs/Tabs.js +62 -145
  266. package/tabs/Tabs.stories.tsx +46 -6
  267. package/tabs/Tabs.test.js +66 -123
  268. package/tabs/types.d.ts +19 -19
  269. package/tag/Tag.js +28 -60
  270. package/tag/Tag.stories.tsx +14 -1
  271. package/tag/Tag.test.js +20 -31
  272. package/tag/types.d.ts +7 -7
  273. package/text-input/Icons.d.ts +5 -5
  274. package/text-input/Icons.js +1 -5
  275. package/text-input/Suggestion.js +35 -25
  276. package/text-input/Suggestions.d.ts +1 -1
  277. package/text-input/Suggestions.js +15 -65
  278. package/text-input/TextInput.js +220 -328
  279. package/text-input/TextInput.stories.tsx +139 -155
  280. package/text-input/TextInput.test.js +1389 -1347
  281. package/text-input/types.d.ts +25 -17
  282. package/textarea/Textarea.js +70 -113
  283. package/textarea/Textarea.stories.tsx +174 -0
  284. package/textarea/Textarea.test.js +152 -183
  285. package/textarea/types.d.ts +9 -5
  286. package/toggle-group/ToggleGroup.d.ts +2 -2
  287. package/toggle-group/ToggleGroup.js +92 -106
  288. package/toggle-group/ToggleGroup.stories.tsx +49 -4
  289. package/toggle-group/ToggleGroup.test.js +69 -88
  290. package/toggle-group/types.d.ts +26 -17
  291. package/typography/Typography.d.ts +2 -2
  292. package/typography/Typography.js +15 -123
  293. package/typography/Typography.stories.tsx +1 -1
  294. package/typography/types.d.ts +1 -1
  295. package/useTheme.d.ts +1147 -1
  296. package/useTheme.js +2 -9
  297. package/useTranslatedLabels.d.ts +84 -1
  298. package/useTranslatedLabels.js +1 -7
  299. package/utils/BaseTypography.d.ts +21 -0
  300. package/utils/BaseTypography.js +94 -0
  301. package/utils/FocusLock.d.ts +13 -0
  302. package/utils/FocusLock.js +124 -0
  303. package/wizard/Wizard.js +16 -51
  304. package/wizard/Wizard.stories.tsx +20 -0
  305. package/wizard/Wizard.test.js +54 -81
  306. package/wizard/types.d.ts +9 -10
  307. package/card/ice-cream.jpg +0 -0
  308. package/common/OpenSans.css +0 -81
  309. package/common/RequiredComponent.js +0 -32
  310. package/common/fonts/OpenSans-Bold.ttf +0 -0
  311. package/common/fonts/OpenSans-BoldItalic.ttf +0 -0
  312. package/common/fonts/OpenSans-ExtraBold.ttf +0 -0
  313. package/common/fonts/OpenSans-ExtraBoldItalic.ttf +0 -0
  314. package/common/fonts/OpenSans-Italic.ttf +0 -0
  315. package/common/fonts/OpenSans-Light.ttf +0 -0
  316. package/common/fonts/OpenSans-LightItalic.ttf +0 -0
  317. package/common/fonts/OpenSans-Regular.ttf +0 -0
  318. package/common/fonts/OpenSans-SemiBold.ttf +0 -0
  319. package/common/fonts/OpenSans-SemiBoldItalic.ttf +0 -0
  320. package/number-input/numberInputContextTypes.d.ts +0 -19
  321. package/resultsetTable/ResultsetTable.d.ts +0 -4
  322. package/resultsetTable/ResultsetTable.js +0 -254
  323. package/slider/Slider.stories.tsx +0 -183
  324. package/table/Table.stories.jsx +0 -277
  325. package/tabs-nav/NavTabs.d.ts +0 -8
  326. package/tabs-nav/Tab.js +0 -130
  327. package/textarea/Textarea.stories.jsx +0 -157
  328. /package/{resultsetTable → action-icon}/types.js +0 -0
  329. /package/{tabs-nav → container}/types.js +0 -0
  330. /package/{number-input/numberInputContextTypes.js → contextual-menu/types.js} +0 -0
  331. /package/{tabs-nav → nav-tabs}/Tab.d.ts +0 -0
@@ -4,10 +4,11 @@ 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",
@@ -20,20 +21,14 @@ const hamburguerIcon = (
20
21
  </svg>
21
22
  );
22
23
  const iconSVG = (
23
- <svg viewBox="0 0 24 24" fill="currentColor">
24
+ <svg viewBox="0 0 24 24" height="24" width="24" fill="currentColor">
24
25
  <path d="M0 0h24v24H0z" fill="none" />
25
26
  <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
27
  </svg>
27
28
  );
28
29
  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>
30
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 48 48" height="48" width="48">
31
+ <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
32
  </svg>
38
33
  );
39
34
  const iconUrl = "https://iconape.com/wp-content/files/yd/367773/svg/logo-linkedin-logo-icon-png-svg.png";
@@ -60,6 +55,18 @@ const defaultOptions: Option[] = [
60
55
  value: "5",
61
56
  label: "Aliexpress",
62
57
  },
58
+ {
59
+ value: "6",
60
+ label: "Etsy",
61
+ },
62
+ {
63
+ value: "7",
64
+ label: "Alibaba",
65
+ },
66
+ {
67
+ value: "8",
68
+ label: "Gearbest shop",
69
+ },
63
70
  ];
64
71
  const options: Option[] = [
65
72
  {
@@ -85,7 +92,15 @@ const optionWithIcon: Option[] = [
85
92
 
86
93
  const optionsIcon: any = options.map((op, i) => ({ ...op, icon: icons[i] }));
87
94
 
88
- export const Chromatic = () => (
95
+ const opinionatedTheme = {
96
+ dropdown: {
97
+ baseColor: "#ffffff",
98
+ fontColor: "#000000",
99
+ optionFontColor: "#000000",
100
+ },
101
+ };
102
+
103
+ const Dropdown = () => (
89
104
  <>
90
105
  <ExampleContainer>
91
106
  <Title title="Default" theme="light" level={4} />
@@ -134,9 +149,18 @@ export const Chromatic = () => (
134
149
  <DxcDropdown options={options} onSelectOption={(value) => {}} icon={hamburguerIcon} caretHidden />
135
150
  </ExampleContainer>
136
151
  <ExampleContainer>
137
- <Title title="Large icon" theme="light" level={4} />
152
+ <Title title="Large icon (SVG)" theme="light" level={4} />
138
153
  <DxcDropdown label="Large icon" options={options} onSelectOption={(value) => {}} icon={iconSVGLarge} />
139
154
  </ExampleContainer>
155
+ <ExampleContainer>
156
+ <Title title="Large icon (image)" theme="light" level={4} />
157
+ <DxcDropdown
158
+ label="Large icon"
159
+ options={options}
160
+ onSelectOption={(value) => {}}
161
+ icon="https://upload.wikimedia.org/wikipedia/commons/thumb/b/b2/Hamburger_icon.svg/2048px-Hamburger_icon.svg.png"
162
+ />
163
+ </ExampleContainer>
140
164
  <ExampleContainer>
141
165
  <Title title="Disabled with icon" theme="light" level={4} />
142
166
  <DxcDropdown
@@ -219,94 +243,196 @@ export const Chromatic = () => (
219
243
  size="fillParent"
220
244
  />
221
245
  </ExampleContainer>
246
+ <ExampleContainer expanded>
247
+ <Title title="Opened menu" theme="light" level={4} />
248
+ <DxcDropdown label="Label" options={options} onSelectOption={(value) => {}} margin={{ top: "xxlarge" }} />
249
+ </ExampleContainer>
222
250
  </>
223
251
  );
224
252
 
225
- const DropdownListStates = () => (
253
+ const DropdownListStates = () => {
254
+ const colorsTheme: any = useTheme();
255
+
256
+ return (
257
+ <>
258
+ <Title title="Dropdown Menu" theme="light" level={2} />
259
+ <ExampleContainer>
260
+ <Title
261
+ title="List dialog uses a Radix Popover to appear over elements with a certain z-index"
262
+ theme="light"
263
+ level={3}
264
+ />
265
+ <div
266
+ style={{
267
+ position: "relative",
268
+ display: "flex",
269
+ flexDirection: "column",
270
+ gap: "20px",
271
+ height: "150px",
272
+ width: "min-content",
273
+ marginBottom: "100px",
274
+ padding: "20px",
275
+ border: "1px solid black",
276
+ borderRadius: "4px",
277
+ overflow: "auto",
278
+ zIndex: "1300",
279
+ }}
280
+ >
281
+ <DxcDropdown
282
+ label="Select a platform"
283
+ options={defaultOptions}
284
+ onSelectOption={(option) => {}}
285
+ size="medium"
286
+ />
287
+ <button style={{ zIndex: "1", width: "100px" }}>Submit</button>
288
+ </div>
289
+ </ExampleContainer>
290
+ <ThemeProvider theme={colorsTheme.dropdown}>
291
+ <Title title="Option states" theme="light" level={3} />
292
+ <ExampleContainer pseudoState="pseudo-hover">
293
+ <Title title="Hovered option" theme="light" level={4} />
294
+ <DropdownMenu
295
+ id="x"
296
+ dropdownTriggerId="dtx"
297
+ iconsPosition="before"
298
+ visualFocusIndex={-1}
299
+ menuItemOnClick={(value) => {}}
300
+ onKeyDown={(e) => {}}
301
+ options={optionWithIcon}
302
+ styles={{ width: 240 }}
303
+ />
304
+ </ExampleContainer>
305
+ <ExampleContainer pseudoState="pseudo-active">
306
+ <Title title="Active option" theme="light" level={4} />
307
+ <DropdownMenu
308
+ id="x"
309
+ dropdownTriggerId="dtx"
310
+ iconsPosition="before"
311
+ visualFocusIndex={-1}
312
+ menuItemOnClick={(value) => {}}
313
+ onKeyDown={(e) => {}}
314
+ options={optionWithIcon}
315
+ styles={{ width: 240 }}
316
+ />
317
+ </ExampleContainer>
318
+ <ExampleContainer>
319
+ <Title title="Focused option" theme="light" level={4} />
320
+ <DropdownMenu
321
+ id="x"
322
+ dropdownTriggerId="dtx"
323
+ iconsPosition="before"
324
+ visualFocusIndex={0}
325
+ menuItemOnClick={(value) => {}}
326
+ onKeyDown={(e) => {}}
327
+ options={options}
328
+ styles={{ width: 240 }}
329
+ />
330
+ </ExampleContainer>
331
+ <Title title="Icons" theme="light" level={3} />
332
+ <ExampleContainer>
333
+ <Title title="Before" theme="light" level={4} />
334
+ <DropdownMenu
335
+ id="x"
336
+ dropdownTriggerId="dtx"
337
+ iconsPosition="before"
338
+ visualFocusIndex={-1}
339
+ menuItemOnClick={(value) => {}}
340
+ onKeyDown={(e) => {}}
341
+ options={optionsIcon}
342
+ styles={{ width: 240 }}
343
+ />
344
+ <Title title="After" theme="light" level={4} />
345
+ <DropdownMenu
346
+ id="x"
347
+ dropdownTriggerId="dtx"
348
+ iconsPosition="after"
349
+ visualFocusIndex={-1}
350
+ menuItemOnClick={(value) => {}}
351
+ onKeyDown={(e) => {}}
352
+ options={optionsIcon}
353
+ styles={{ width: 240 }}
354
+ />
355
+ </ExampleContainer>
356
+ </ThemeProvider>
357
+ </>
358
+ );
359
+ };
360
+
361
+ const DropdownRightAlignment = () => (
362
+ <ExampleContainer expanded>
363
+ <Title title="Dropdown collisions on the right boundary (right)" theme="light" level={4} />
364
+ <DxcFlex justifyContent="flex-end">
365
+ <DxcDropdown label="Label" options={options} onSelectOption={(value) => {}} />
366
+ </DxcFlex>
367
+ </ExampleContainer>
368
+ );
369
+
370
+ const DropdownCenterAlignment = () => (
371
+ <ExampleContainer expanded>
372
+ <Title title="Dropdown collisions on the right boundary (centered)" theme="light" level={4} />
373
+ <DxcFlex justifyContent="flex-end">
374
+ <DxcDropdown label="Label" options={defaultOptions} onSelectOption={(value) => {}} margin="small" />
375
+ </DxcFlex>
376
+ </ExampleContainer>
377
+ );
378
+
379
+ export const Chromatic = Dropdown.bind({});
380
+ Chromatic.play = async ({ canvasElement }) => {
381
+ const canvas = within(canvasElement);
382
+ const buttonList = canvas.getAllByRole("button");
383
+ await userEvent.click(buttonList[buttonList.length - 1]);
384
+ };
385
+
386
+ export const OpinionatedTheme = () => (
226
387
  <>
227
- <Title title="Dropdown Menu" theme="light" level={2} />
228
- <Title title="Default with opened menu" theme="light" level={3} />
388
+ <Title title="Opinionated theme" theme="light" level={2} />
229
389
  <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>
390
+ <Title title="Default" theme="light" level={4} />
391
+ <HalstackProvider theme={opinionatedTheme}>
392
+ <DxcDropdown label="Default" options={options} onSelectOption={(value) => {}} icon={iconSVG} />
393
+ </HalstackProvider>
239
394
  </ExampleContainer>
240
- <Title title="Option states" theme="light" level={3} />
241
395
  <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
- />
396
+ <Title title="Hovered" theme="light" level={4} />
397
+ <HalstackProvider theme={opinionatedTheme}>
398
+ <DxcDropdown label="Hovered" options={options} onSelectOption={(value) => {}} icon={iconSVG} />
399
+ </HalstackProvider>
253
400
  </ExampleContainer>
254
401
  <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
- />
402
+ <Title title="Actived" theme="light" level={4} />
403
+ <HalstackProvider theme={opinionatedTheme}>
404
+ <DxcDropdown label="Actived" options={options} onSelectOption={(value) => {}} icon={iconSVG} />
405
+ </HalstackProvider>
266
406
  </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
- />
407
+ <ExampleContainer pseudoState="pseudo-focus">
408
+ <Title title="Focused" theme="light" level={4} />
409
+ <HalstackProvider theme={opinionatedTheme}>
410
+ <DxcDropdown label="Focused" options={options} onSelectOption={(value) => {}} icon={iconSVG} />
411
+ </HalstackProvider>
279
412
  </ExampleContainer>
280
- <Title title="Icons" theme="light" level={3} />
281
413
  <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
- />
414
+ <Title title="Disabled" theme="light" level={4} />
415
+ <HalstackProvider theme={opinionatedTheme}>
416
+ <DxcDropdown label="Disabled" options={options} onSelectOption={(value) => {}} icon={iconSVG} disabled />
417
+ </HalstackProvider>
304
418
  </ExampleContainer>
305
419
  </>
306
420
  );
307
421
 
308
422
  export const DropdownMenuStates = DropdownListStates.bind({});
309
423
  DropdownMenuStates.play = async ({ canvasElement }) => {
424
+ const canvas = within(canvasElement);
425
+ await userEvent.click(canvas.getAllByRole("button")[0]);
426
+ };
427
+
428
+ export const DropdownMenuAlignedRight = DropdownRightAlignment.bind({});
429
+ DropdownMenuAlignedRight.play = async ({ canvasElement }) => {
430
+ const canvas = within(canvasElement);
431
+ await userEvent.click(canvas.getByRole("button"));
432
+ };
433
+
434
+ export const DropdownMenuAlignedCenter = DropdownCenterAlignment.bind({});
435
+ DropdownMenuAlignedCenter.play = async ({ canvasElement }) => {
310
436
  const canvas = within(canvasElement);
311
437
  await userEvent.click(canvas.getByRole("button"));
312
438
  };