@dxc-technology/halstack-react 0.0.0-66de2f8 → 0.0.0-68c642b

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 (407) hide show
  1. package/BackgroundColorContext.d.ts +10 -0
  2. package/BackgroundColorContext.js +48 -0
  3. package/ThemeContext.d.ts +15 -0
  4. package/ThemeContext.js +243 -0
  5. package/V3Select/V3Select.js +455 -0
  6. package/V3Select/index.d.ts +27 -0
  7. package/{dist/textarea/Textarea.js → V3Textarea/V3Textarea.js} +41 -41
  8. package/V3Textarea/index.d.ts +27 -0
  9. package/accordion/Accordion.d.ts +4 -0
  10. package/accordion/Accordion.js +258 -0
  11. package/accordion/Accordion.stories.tsx +300 -0
  12. package/accordion/types.d.ts +68 -0
  13. package/accordion/types.js +5 -0
  14. package/accordion-group/AccordionGroup.d.ts +7 -0
  15. package/accordion-group/AccordionGroup.js +170 -0
  16. package/accordion-group/AccordionGroup.stories.tsx +225 -0
  17. package/accordion-group/types.d.ts +72 -0
  18. package/accordion-group/types.js +5 -0
  19. package/alert/Alert.d.ts +4 -0
  20. package/alert/Alert.js +290 -0
  21. package/alert/Alert.stories.tsx +170 -0
  22. package/alert/types.d.ts +49 -0
  23. package/alert/types.js +5 -0
  24. package/badge/Badge.js +59 -0
  25. package/box/Box.d.ts +4 -0
  26. package/{dist/box → box}/Box.js +15 -53
  27. package/box/Box.stories.tsx +132 -0
  28. package/box/types.d.ts +43 -0
  29. package/box/types.js +5 -0
  30. package/button/Button.d.ts +4 -0
  31. package/button/Button.js +179 -0
  32. package/button/Button.stories.tsx +276 -0
  33. package/button/types.d.ts +57 -0
  34. package/button/types.js +5 -0
  35. package/card/Card.d.ts +4 -0
  36. package/{dist/card → card}/Card.js +34 -124
  37. package/card/Card.stories.tsx +201 -0
  38. package/card/ice-cream.jpg +0 -0
  39. package/card/types.d.ts +67 -0
  40. package/card/types.js +5 -0
  41. package/checkbox/Checkbox.d.ts +4 -0
  42. package/{dist/checkbox → checkbox}/Checkbox.js +39 -80
  43. package/checkbox/Checkbox.stories.tsx +192 -0
  44. package/checkbox/types.d.ts +60 -0
  45. package/checkbox/types.js +5 -0
  46. package/chip/Chip.d.ts +4 -0
  47. package/{dist/chip → chip}/Chip.js +38 -108
  48. package/chip/Chip.stories.tsx +121 -0
  49. package/chip/types.d.ts +53 -0
  50. package/chip/types.js +5 -0
  51. package/{dist/common → common}/OpenSans.css +0 -0
  52. package/{dist/common → common}/RequiredComponent.js +3 -11
  53. package/{dist/common → common}/fonts/OpenSans-Bold.ttf +0 -0
  54. package/{dist/common → common}/fonts/OpenSans-BoldItalic.ttf +0 -0
  55. package/{dist/common → common}/fonts/OpenSans-ExtraBold.ttf +0 -0
  56. package/{dist/common → common}/fonts/OpenSans-ExtraBoldItalic.ttf +0 -0
  57. package/{dist/common → common}/fonts/OpenSans-Italic.ttf +0 -0
  58. package/{dist/common → common}/fonts/OpenSans-Light.ttf +0 -0
  59. package/{dist/common → common}/fonts/OpenSans-LightItalic.ttf +0 -0
  60. package/{dist/common → common}/fonts/OpenSans-Regular.ttf +0 -0
  61. package/{dist/common → common}/fonts/OpenSans-SemiBold.ttf +0 -0
  62. package/{dist/common → common}/fonts/OpenSans-SemiBoldItalic.ttf +0 -0
  63. package/{dist/common → common}/utils.js +0 -0
  64. package/common/variables.js +1574 -0
  65. package/{dist/date → date}/Date.js +24 -32
  66. package/date/index.d.ts +27 -0
  67. package/date-input/DateInput.d.ts +4 -0
  68. package/date-input/DateInput.js +358 -0
  69. package/date-input/DateInput.stories.tsx +138 -0
  70. package/date-input/types.d.ts +100 -0
  71. package/date-input/types.js +5 -0
  72. package/dialog/Dialog.d.ts +4 -0
  73. package/{dist/dialog → dialog}/Dialog.js +28 -98
  74. package/dialog/Dialog.stories.tsx +212 -0
  75. package/dialog/types.d.ts +43 -0
  76. package/dialog/types.js +5 -0
  77. package/dropdown/Dropdown.d.ts +4 -0
  78. package/dropdown/Dropdown.js +417 -0
  79. package/dropdown/Dropdown.stories.tsx +247 -0
  80. package/dropdown/types.d.ts +89 -0
  81. package/dropdown/types.js +5 -0
  82. package/file-input/FileInput.d.ts +4 -0
  83. package/file-input/FileInput.js +521 -0
  84. package/file-input/FileItem.d.ts +14 -0
  85. package/file-input/FileItem.js +184 -0
  86. package/file-input/types.d.ts +112 -0
  87. package/file-input/types.js +5 -0
  88. package/footer/Footer.d.ts +4 -0
  89. package/footer/Footer.js +260 -0
  90. package/footer/Footer.stories.tsx +130 -0
  91. package/footer/Icons.d.ts +2 -0
  92. package/footer/Icons.js +77 -0
  93. package/footer/types.d.ts +65 -0
  94. package/footer/types.js +5 -0
  95. package/header/Header.d.ts +7 -0
  96. package/header/Header.js +324 -0
  97. package/header/Header.stories.tsx +162 -0
  98. package/header/Icons.d.ts +2 -0
  99. package/header/Icons.js +34 -0
  100. package/header/types.d.ts +47 -0
  101. package/header/types.js +5 -0
  102. package/heading/Heading.d.ts +4 -0
  103. package/{dist/heading → heading}/Heading.js +31 -94
  104. package/heading/Heading.stories.tsx +53 -0
  105. package/heading/types.d.ts +33 -0
  106. package/heading/types.js +5 -0
  107. package/input-text/Icons.js +22 -0
  108. package/{dist/input-text → input-text}/InputText.js +120 -181
  109. package/input-text/index.d.ts +36 -0
  110. package/layout/ApplicationLayout.d.ts +10 -0
  111. package/{dist/layout → layout}/ApplicationLayout.js +43 -149
  112. package/layout/ApplicationLayout.stories.tsx +171 -0
  113. package/layout/Icons.js +55 -0
  114. package/layout/types.d.ts +57 -0
  115. package/layout/types.js +5 -0
  116. package/link/Link.d.ts +3 -0
  117. package/{dist/link → link}/Link.js +21 -101
  118. package/link/Link.stories.tsx +146 -0
  119. package/link/types.d.ts +74 -0
  120. package/link/types.js +5 -0
  121. package/list/List.d.ts +8 -0
  122. package/list/List.js +47 -0
  123. package/list/List.stories.tsx +85 -0
  124. package/main.d.ts +48 -0
  125. package/{dist/main.js → main.js} +134 -82
  126. package/number-input/NumberInput.d.ts +4 -0
  127. package/number-input/NumberInput.js +83 -0
  128. package/number-input/NumberInput.stories.tsx +115 -0
  129. package/number-input/NumberInputContext.d.ts +4 -0
  130. package/{dist/number/NumberContext.js → number-input/NumberInputContext.js} +6 -3
  131. package/number-input/numberInputContextTypes.d.ts +19 -0
  132. package/number-input/numberInputContextTypes.js +5 -0
  133. package/number-input/types.d.ts +117 -0
  134. package/number-input/types.js +5 -0
  135. package/package.json +32 -24
  136. package/paginator/Icons.js +66 -0
  137. package/paginator/Paginator.d.ts +4 -0
  138. package/paginator/Paginator.js +192 -0
  139. package/paginator/Paginator.stories.tsx +63 -0
  140. package/paginator/types.d.ts +38 -0
  141. package/paginator/types.js +5 -0
  142. package/password-input/PasswordInput.d.ts +4 -0
  143. package/password-input/PasswordInput.js +163 -0
  144. package/password-input/PasswordInput.stories.tsx +131 -0
  145. package/password-input/types.d.ts +107 -0
  146. package/password-input/types.js +5 -0
  147. package/progress-bar/ProgressBar.d.ts +4 -0
  148. package/progress-bar/ProgressBar.js +170 -0
  149. package/progress-bar/ProgressBar.stories.jsx +58 -0
  150. package/progress-bar/types.d.ts +37 -0
  151. package/progress-bar/types.js +5 -0
  152. package/radio/Radio.d.ts +4 -0
  153. package/{dist/radio → radio}/Radio.js +17 -52
  154. package/radio/Radio.stories.tsx +192 -0
  155. package/radio/types.d.ts +54 -0
  156. package/radio/types.js +5 -0
  157. package/resultsetTable/ResultsetTable.d.ts +4 -0
  158. package/{dist/resultsetTable → resultsetTable}/ResultsetTable.js +39 -146
  159. package/resultsetTable/ResultsetTable.stories.tsx +276 -0
  160. package/resultsetTable/types.d.ts +67 -0
  161. package/resultsetTable/types.js +5 -0
  162. package/row/Row.d.ts +11 -0
  163. package/row/Row.js +124 -0
  164. package/row/Row.stories.tsx +223 -0
  165. package/select/Select.js +863 -0
  166. package/select/Select.stories.tsx +572 -0
  167. package/select/index.d.ts +131 -0
  168. package/sidenav/Sidenav.d.ts +9 -0
  169. package/sidenav/Sidenav.js +136 -0
  170. package/sidenav/Sidenav.stories.tsx +165 -0
  171. package/sidenav/types.d.ts +50 -0
  172. package/sidenav/types.js +5 -0
  173. package/slider/Slider.d.ts +4 -0
  174. package/slider/Slider.js +317 -0
  175. package/slider/Slider.stories.tsx +177 -0
  176. package/slider/types.d.ts +78 -0
  177. package/slider/types.js +5 -0
  178. package/spinner/Spinner.d.ts +4 -0
  179. package/spinner/Spinner.js +250 -0
  180. package/spinner/Spinner.stories.jsx +102 -0
  181. package/spinner/types.d.ts +32 -0
  182. package/spinner/types.js +5 -0
  183. package/stack/Stack.d.ts +10 -0
  184. package/stack/Stack.js +94 -0
  185. package/stack/Stack.stories.tsx +150 -0
  186. package/switch/Switch.d.ts +4 -0
  187. package/{dist/switch → switch}/Switch.js +28 -71
  188. package/switch/Switch.stories.tsx +160 -0
  189. package/switch/types.d.ts +58 -0
  190. package/switch/types.js +5 -0
  191. package/table/Table.d.ts +4 -0
  192. package/{dist/table → table}/Table.js +14 -24
  193. package/table/Table.stories.jsx +276 -0
  194. package/table/types.d.ts +21 -0
  195. package/table/types.js +5 -0
  196. package/tabs/Tabs.d.ts +4 -0
  197. package/tabs/Tabs.js +213 -0
  198. package/tabs/Tabs.stories.tsx +121 -0
  199. package/tabs/types.d.ts +70 -0
  200. package/tabs/types.js +5 -0
  201. package/tag/Tag.d.ts +4 -0
  202. package/tag/Tag.js +193 -0
  203. package/tag/Tag.stories.tsx +145 -0
  204. package/tag/types.d.ts +60 -0
  205. package/tag/types.js +5 -0
  206. package/text/Text.d.ts +7 -0
  207. package/text/Text.js +30 -0
  208. package/text/Text.stories.tsx +19 -0
  209. package/text-input/TextInput.d.ts +4 -0
  210. package/text-input/TextInput.js +786 -0
  211. package/text-input/TextInput.stories.tsx +456 -0
  212. package/text-input/types.d.ts +159 -0
  213. package/text-input/types.js +5 -0
  214. package/textarea/Textarea.d.ts +4 -0
  215. package/textarea/Textarea.js +284 -0
  216. package/textarea/Textarea.stories.jsx +135 -0
  217. package/textarea/types.d.ts +130 -0
  218. package/textarea/types.js +5 -0
  219. package/{dist/toggle → toggle}/Toggle.js +16 -50
  220. package/toggle/index.d.ts +21 -0
  221. package/toggle-group/ToggleGroup.d.ts +4 -0
  222. package/toggle-group/ToggleGroup.js +217 -0
  223. package/toggle-group/ToggleGroup.stories.tsx +178 -0
  224. package/toggle-group/types.d.ts +84 -0
  225. package/toggle-group/types.js +5 -0
  226. package/{dist/upload → upload}/Upload.js +11 -15
  227. package/upload/buttons-upload/ButtonsUpload.js +111 -0
  228. package/upload/buttons-upload/Icons.js +40 -0
  229. package/upload/dragAndDropArea/DragAndDropArea.js +225 -0
  230. package/upload/dragAndDropArea/Icons.js +39 -0
  231. package/upload/file-upload/FileToUpload.js +115 -0
  232. package/upload/file-upload/Icons.js +66 -0
  233. package/{dist/upload → upload}/files-upload/FilesToUpload.js +13 -27
  234. package/upload/index.d.ts +15 -0
  235. package/upload/transaction/Icons.js +160 -0
  236. package/upload/transaction/Transaction.js +104 -0
  237. package/upload/transactions/Transactions.js +94 -0
  238. package/useTheme.d.ts +2 -0
  239. package/{dist/useTheme.js → useTheme.js} +1 -1
  240. package/wizard/Wizard.d.ts +4 -0
  241. package/wizard/Wizard.js +281 -0
  242. package/wizard/Wizard.stories.tsx +224 -0
  243. package/wizard/types.d.ts +60 -0
  244. package/wizard/types.js +5 -0
  245. package/README.md +0 -66
  246. package/babel.config.js +0 -8
  247. package/dist/BackgroundColorContext.js +0 -46
  248. package/dist/ThemeContext.js +0 -216
  249. package/dist/accordion/Accordion.js +0 -346
  250. package/dist/accordion/Accordion.stories.js +0 -207
  251. package/dist/accordion/readme.md +0 -96
  252. package/dist/accordion-group/AccordionGroup.js +0 -188
  253. package/dist/accordion-group/AccordionGroup.stories.js +0 -207
  254. package/dist/accordion-group/readme.md +0 -70
  255. package/dist/alert/Alert.js +0 -388
  256. package/dist/alert/Alert.stories.js +0 -158
  257. package/dist/alert/close.svg +0 -4
  258. package/dist/alert/error.svg +0 -4
  259. package/dist/alert/info.svg +0 -4
  260. package/dist/alert/readme.md +0 -43
  261. package/dist/alert/success.svg +0 -4
  262. package/dist/alert/warning.svg +0 -4
  263. package/dist/badge/Badge.js +0 -63
  264. package/dist/button/Button.js +0 -232
  265. package/dist/button/Button.stories.js +0 -224
  266. package/dist/button/readme.md +0 -93
  267. package/dist/checkbox/Checkbox.stories.js +0 -144
  268. package/dist/checkbox/readme.md +0 -116
  269. package/dist/common/variables.js +0 -1305
  270. package/dist/date/Date.stories.js +0 -205
  271. package/dist/date/readme.md +0 -73
  272. package/dist/dialog/Dialog.stories.js +0 -217
  273. package/dist/dialog/readme.md +0 -32
  274. package/dist/dropdown/Dropdown.js +0 -493
  275. package/dist/dropdown/Dropdown.stories.js +0 -249
  276. package/dist/dropdown/baseline-arrow_drop_down.svg +0 -1
  277. package/dist/dropdown/baseline-arrow_drop_down_wh.svg +0 -4
  278. package/dist/dropdown/baseline-arrow_drop_up.svg +0 -1
  279. package/dist/dropdown/baseline-arrow_drop_up_wh.svg +0 -4
  280. package/dist/dropdown/readme.md +0 -69
  281. package/dist/footer/Footer.js +0 -407
  282. package/dist/footer/Footer.stories.js +0 -94
  283. package/dist/footer/dxc_logo.svg +0 -15
  284. package/dist/footer/readme.md +0 -41
  285. package/dist/header/Header.js +0 -431
  286. package/dist/header/Header.stories.js +0 -176
  287. package/dist/header/close_icon.svg +0 -1
  288. package/dist/header/dxc_logo_black.svg +0 -8
  289. package/dist/header/hamb_menu_black.svg +0 -1
  290. package/dist/header/hamb_menu_white.svg +0 -1
  291. package/dist/header/readme.md +0 -33
  292. package/dist/input-text/InputText.stories.js +0 -209
  293. package/dist/input-text/error.svg +0 -1
  294. package/dist/input-text/readme.md +0 -91
  295. package/dist/layout/facebook.svg +0 -45
  296. package/dist/layout/linkedin.svg +0 -50
  297. package/dist/layout/twitter.svg +0 -53
  298. package/dist/link/readme.md +0 -51
  299. package/dist/new-date/NewDate.js +0 -391
  300. package/dist/new-input-text/NewInputText.js +0 -929
  301. package/dist/number/Number.js +0 -127
  302. package/dist/paginator/Paginator.js +0 -283
  303. package/dist/paginator/images/next.svg +0 -3
  304. package/dist/paginator/images/nextPage.svg +0 -3
  305. package/dist/paginator/images/previous.svg +0 -3
  306. package/dist/paginator/images/previousPage.svg +0 -3
  307. package/dist/paginator/readme.md +0 -50
  308. package/dist/password/Password.js +0 -139
  309. package/dist/password/styles.css +0 -3
  310. package/dist/progress-bar/ProgressBar.js +0 -206
  311. package/dist/progress-bar/ProgressBar.stories.js +0 -280
  312. package/dist/progress-bar/readme.md +0 -63
  313. package/dist/radio/Radio.stories.js +0 -166
  314. package/dist/radio/readme.md +0 -70
  315. package/dist/resultsetTable/arrow_downward-24px_wht.svg +0 -1
  316. package/dist/resultsetTable/arrow_upward-24px_wht.svg +0 -1
  317. package/dist/resultsetTable/unfold_more-24px_wht.svg +0 -1
  318. package/dist/select/Select.js +0 -563
  319. package/dist/select/Select.stories.js +0 -235
  320. package/dist/select/readme.md +0 -72
  321. package/dist/sidenav/Sidenav.js +0 -183
  322. package/dist/slider/Slider.js +0 -315
  323. package/dist/slider/Slider.stories.js +0 -241
  324. package/dist/slider/readme.md +0 -64
  325. package/dist/spinner/Spinner.js +0 -214
  326. package/dist/spinner/Spinner.stories.js +0 -183
  327. package/dist/spinner/readme.md +0 -65
  328. package/dist/switch/Switch.stories.js +0 -134
  329. package/dist/switch/readme.md +0 -133
  330. package/dist/tabs/Tabs.js +0 -343
  331. package/dist/tabs/Tabs.stories.js +0 -130
  332. package/dist/tabs/readme.md +0 -78
  333. package/dist/tabs-for-sections/TabsForSections.js +0 -92
  334. package/dist/tabs-for-sections/readme.md +0 -78
  335. package/dist/tag/Tag.js +0 -280
  336. package/dist/toggle/Toggle.stories.js +0 -297
  337. package/dist/toggle/readme.md +0 -80
  338. package/dist/toggle-group/ToggleGroup.js +0 -241
  339. package/dist/toggle-group/readme.md +0 -82
  340. package/dist/upload/Upload.stories.js +0 -72
  341. package/dist/upload/buttons-upload/ButtonsUpload.js +0 -135
  342. package/dist/upload/buttons-upload/drag-drop-icon.svg +0 -4
  343. package/dist/upload/buttons-upload/upload-button.svg +0 -1
  344. package/dist/upload/dragAndDropArea/DragAndDropArea.js +0 -325
  345. package/dist/upload/dragAndDropArea/upload_drop.svg +0 -4
  346. package/dist/upload/dragAndDropArea/upload_file.svg +0 -4
  347. package/dist/upload/file-upload/FileToUpload.js +0 -184
  348. package/dist/upload/file-upload/audio-icon.svg +0 -4
  349. package/dist/upload/file-upload/close.svg +0 -4
  350. package/dist/upload/file-upload/file-icon.svg +0 -4
  351. package/dist/upload/file-upload/video-icon.svg +0 -4
  352. package/dist/upload/readme.md +0 -37
  353. package/dist/upload/transaction/Transaction.js +0 -171
  354. package/dist/upload/transaction/audio-icon-err.svg +0 -4
  355. package/dist/upload/transaction/audio-icon.svg +0 -4
  356. package/dist/upload/transaction/error-icon.svg +0 -4
  357. package/dist/upload/transaction/file-icon-err.svg +0 -4
  358. package/dist/upload/transaction/file-icon.svg +0 -4
  359. package/dist/upload/transaction/image-icon-err.svg +0 -4
  360. package/dist/upload/transaction/image-icon.svg +0 -4
  361. package/dist/upload/transaction/success-icon.svg +0 -4
  362. package/dist/upload/transaction/video-icon-err.svg +0 -4
  363. package/dist/upload/transaction/video-icon.svg +0 -4
  364. package/dist/upload/transactions/Transactions.js +0 -138
  365. package/dist/wizard/Wizard.js +0 -411
  366. package/dist/wizard/invalid_icon.svg +0 -5
  367. package/dist/wizard/valid_icon.svg +0 -5
  368. package/dist/wizard/validation-wrong.svg +0 -6
  369. package/test/Accordion.test.js +0 -33
  370. package/test/AccordionGroup.test.js +0 -125
  371. package/test/Alert.test.js +0 -53
  372. package/test/Box.test.js +0 -10
  373. package/test/Button.test.js +0 -18
  374. package/test/Card.test.js +0 -30
  375. package/test/Checkbox.test.js +0 -45
  376. package/test/Chip.test.js +0 -25
  377. package/test/Date.test.js +0 -393
  378. package/test/Dialog.test.js +0 -23
  379. package/test/Dropdown.test.js +0 -130
  380. package/test/Footer.test.js +0 -99
  381. package/test/Header.test.js +0 -39
  382. package/test/Heading.test.js +0 -35
  383. package/test/InputText.test.js +0 -240
  384. package/test/Link.test.js +0 -43
  385. package/test/NewDate.test.js +0 -189
  386. package/test/NewInputText.test.js +0 -663
  387. package/test/Number.test.js +0 -205
  388. package/test/Paginator.test.js +0 -177
  389. package/test/Password.test.js +0 -63
  390. package/test/ProgressBar.test.js +0 -35
  391. package/test/Radio.test.js +0 -37
  392. package/test/ResultsetTable.test.js +0 -330
  393. package/test/Select.test.js +0 -192
  394. package/test/Sidenav.test.js +0 -45
  395. package/test/Slider.test.js +0 -82
  396. package/test/Spinner.test.js +0 -27
  397. package/test/Switch.test.js +0 -45
  398. package/test/Table.test.js +0 -36
  399. package/test/Tabs.test.js +0 -109
  400. package/test/TabsForSections.test.js +0 -34
  401. package/test/Tag.test.js +0 -32
  402. package/test/TextArea.test.js +0 -52
  403. package/test/ToggleGroup.test.js +0 -81
  404. package/test/Upload.test.js +0 -60
  405. package/test/Wizard.test.js +0 -130
  406. package/test/mocks/pngMock.js +0 -1
  407. package/test/mocks/svgMock.js +0 -1
@@ -0,0 +1,417 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+
5
+ var _typeof3 = require("@babel/runtime/helpers/typeof");
6
+
7
+ Object.defineProperty(exports, "__esModule", {
8
+ value: true
9
+ });
10
+ exports["default"] = void 0;
11
+
12
+ var _taggedTemplateLiteral2 = _interopRequireDefault(require("@babel/runtime/helpers/taggedTemplateLiteral"));
13
+
14
+ var _typeof2 = _interopRequireDefault(require("@babel/runtime/helpers/typeof"));
15
+
16
+ var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
17
+
18
+ var _react = _interopRequireWildcard(require("react"));
19
+
20
+ var _styledComponents = _interopRequireWildcard(require("styled-components"));
21
+
22
+ var _Popper = _interopRequireDefault(require("@material-ui/core/Popper"));
23
+
24
+ var _MenuItem = _interopRequireDefault(require("@material-ui/core/MenuItem"));
25
+
26
+ var _core = require("@material-ui/core");
27
+
28
+ var _Grow = _interopRequireDefault(require("@material-ui/core/Grow"));
29
+
30
+ var _Paper = _interopRequireDefault(require("@material-ui/core/Paper"));
31
+
32
+ var _MenuList = _interopRequireDefault(require("@material-ui/core/MenuList"));
33
+
34
+ var _variables = require("../common/variables.js");
35
+
36
+ var _utils = require("../common/utils.js");
37
+
38
+ var _useTheme = _interopRequireDefault(require("../useTheme"));
39
+
40
+ var _templateObject, _templateObject2, _templateObject3, _templateObject4, _templateObject5, _templateObject6, _templateObject7, _templateObject8, _templateObject9, _templateObject10;
41
+
42
+ function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
43
+
44
+ function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof3(obj) !== "object" && typeof obj !== "function") { return { "default": obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj["default"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
45
+
46
+ var DxcDropdown = function DxcDropdown(_ref) {
47
+ var options = _ref.options,
48
+ _ref$optionsIconPosit = _ref.optionsIconPosition,
49
+ optionsIconPosition = _ref$optionsIconPosit === void 0 ? "before" : _ref$optionsIconPosit,
50
+ icon = _ref.icon,
51
+ _ref$iconSrc = _ref.iconSrc,
52
+ iconSrc = _ref$iconSrc === void 0 ? "" : _ref$iconSrc,
53
+ _ref$iconPosition = _ref.iconPosition,
54
+ iconPosition = _ref$iconPosition === void 0 ? "before" : _ref$iconPosition,
55
+ _ref$label = _ref.label,
56
+ label = _ref$label === void 0 ? "" : _ref$label,
57
+ _ref$caretHidden = _ref.caretHidden,
58
+ caretHidden = _ref$caretHidden === void 0 ? false : _ref$caretHidden,
59
+ onSelectOption = _ref.onSelectOption,
60
+ _ref$expandOnHover = _ref.expandOnHover,
61
+ expandOnHover = _ref$expandOnHover === void 0 ? false : _ref$expandOnHover,
62
+ margin = _ref.margin,
63
+ _ref$size = _ref.size,
64
+ size = _ref$size === void 0 ? "fitContent" : _ref$size,
65
+ _ref$tabIndex = _ref.tabIndex,
66
+ tabIndex = _ref$tabIndex === void 0 ? 0 : _ref$tabIndex,
67
+ _ref$disabled = _ref.disabled,
68
+ disabled = _ref$disabled === void 0 ? false : _ref$disabled;
69
+
70
+ var _useState = (0, _react.useState)(),
71
+ _useState2 = (0, _slicedToArray2["default"])(_useState, 2),
72
+ width = _useState2[0],
73
+ setWidth = _useState2[1];
74
+
75
+ var colorsTheme = (0, _useTheme["default"])();
76
+ var ref = (0, _react.useRef)(null);
77
+
78
+ var handleResize = function handleResize() {
79
+ if (ref.current) setWidth(ref.current.offsetWidth);
80
+ };
81
+
82
+ (0, _react.useEffect)(function () {
83
+ if (ref.current) {
84
+ ref.current.addEventListener("resize", handleResize);
85
+ handleResize();
86
+ }
87
+
88
+ return function () {
89
+ if (ref.current) ref.current.removeEventListener("resize", handleResize);
90
+ };
91
+ }, []);
92
+
93
+ var _useState3 = (0, _react.useState)(null),
94
+ _useState4 = (0, _slicedToArray2["default"])(_useState3, 2),
95
+ anchorEl = _useState4[0],
96
+ setAnchorEl = _useState4[1];
97
+
98
+ function handleClickListItem(event) {
99
+ setAnchorEl(event.currentTarget);
100
+ }
101
+
102
+ function handleMenuItemClick(option) {
103
+ setAnchorEl(null);
104
+ onSelectOption(option.value);
105
+ }
106
+
107
+ function handleClose() {
108
+ setAnchorEl(null);
109
+ }
110
+
111
+ var handleCloseOver = expandOnHover ? handleClose : undefined;
112
+
113
+ var UpArrowIcon = function UpArrowIcon() {
114
+ return /*#__PURE__*/_react["default"].createElement("svg", {
115
+ xmlns: "http://www.w3.org/2000/svg",
116
+ width: "24",
117
+ height: "24",
118
+ viewBox: "0 0 24 24",
119
+ fill: "currentColor"
120
+ }, /*#__PURE__*/_react["default"].createElement("path", {
121
+ d: "M7 14l5-5 5 5z"
122
+ }), /*#__PURE__*/_react["default"].createElement("path", {
123
+ d: "M0 0h24v24H0z",
124
+ fill: "none"
125
+ }));
126
+ };
127
+
128
+ var DownArrowIcon = function DownArrowIcon() {
129
+ return /*#__PURE__*/_react["default"].createElement("svg", {
130
+ xmlns: "http://www.w3.org/2000/svg",
131
+ width: "24",
132
+ height: "24",
133
+ viewBox: "0 0 24 24",
134
+ fill: "currentColor"
135
+ }, /*#__PURE__*/_react["default"].createElement("path", {
136
+ d: "M7 10l5 5 5-5z"
137
+ }), /*#__PURE__*/_react["default"].createElement("path", {
138
+ d: "M0 0h24v24H0z",
139
+ fill: "none"
140
+ }));
141
+ };
142
+
143
+ return /*#__PURE__*/_react["default"].createElement(_styledComponents.ThemeProvider, {
144
+ theme: colorsTheme.dropdown
145
+ }, /*#__PURE__*/_react["default"].createElement(DXCDropdownContainer, {
146
+ margin: margin,
147
+ size: size,
148
+ disabled: disabled
149
+ }, /*#__PURE__*/_react["default"].createElement("div", {
150
+ onMouseOver: expandOnHover && !disabled ? handleClickListItem : undefined,
151
+ onMouseOut: handleCloseOver,
152
+ onFocus: handleCloseOver,
153
+ onBlur: handleCloseOver
154
+ }, /*#__PURE__*/_react["default"].createElement(DropdownTrigger, {
155
+ opened: anchorEl === null ? false : true,
156
+ onClick: handleClickListItem,
157
+ disabled: disabled,
158
+ label: label,
159
+ caretHidden: caretHidden,
160
+ margin: margin,
161
+ size: size,
162
+ ref: ref,
163
+ tabIndex: tabIndex
164
+ }, /*#__PURE__*/_react["default"].createElement(DropdownTriggerContainer, {
165
+ iconPosition: iconPosition,
166
+ caretHidden: caretHidden
167
+ }, icon ? /*#__PURE__*/_react["default"].createElement(ButtonIconContainer, {
168
+ label: label,
169
+ iconPosition: iconPosition,
170
+ disabled: disabled
171
+ }, (0, _typeof2["default"])(icon) === "object" ? icon : /*#__PURE__*/_react["default"].createElement(icon)) : iconSrc && /*#__PURE__*/_react["default"].createElement(ButtonIcon, {
172
+ label: label,
173
+ src: iconSrc,
174
+ iconPosition: iconPosition
175
+ }), /*#__PURE__*/_react["default"].createElement(DropdownTriggerLabel, {
176
+ iconPosition: iconPosition,
177
+ label: label
178
+ }, label)), /*#__PURE__*/_react["default"].createElement(CaretIconContainer, {
179
+ caretHidden: caretHidden,
180
+ disabled: disabled
181
+ }, !caretHidden && (anchorEl === null ? /*#__PURE__*/_react["default"].createElement(DownArrowIcon, null) : /*#__PURE__*/_react["default"].createElement(UpArrowIcon, null)))), /*#__PURE__*/_react["default"].createElement(DXCMenu, {
182
+ anchorEl: anchorEl,
183
+ open: Boolean(anchorEl),
184
+ onClose: handleClose,
185
+ getContentAnchorEl: null,
186
+ anchorOrigin: {
187
+ vertical: "bottom",
188
+ horizontal: "left"
189
+ },
190
+ transformOrigin: {
191
+ vertical: "top",
192
+ horizontal: "left"
193
+ },
194
+ optionsIconPosition: optionsIconPosition,
195
+ size: size,
196
+ width: width,
197
+ role: undefined,
198
+ transition: true,
199
+ disablePortal: true,
200
+ placement: "bottom-start"
201
+ }, function (_ref2) {
202
+ var TransitionProps = _ref2.TransitionProps;
203
+ return /*#__PURE__*/_react["default"].createElement(_Grow["default"], TransitionProps, /*#__PURE__*/_react["default"].createElement(_Paper["default"], null, /*#__PURE__*/_react["default"].createElement(_core.ClickAwayListener, {
204
+ onClickAway: handleClose
205
+ }, /*#__PURE__*/_react["default"].createElement(_MenuList["default"], {
206
+ autoFocusItem: Boolean(anchorEl),
207
+ id: "menu-list-grow"
208
+ }, options.map(function (option) {
209
+ return /*#__PURE__*/_react["default"].createElement(_MenuItem["default"], {
210
+ key: option.value,
211
+ value: option.value,
212
+ disableRipple: true,
213
+ onClick: function onClick(event) {
214
+ return handleMenuItemClick(option);
215
+ }
216
+ }, option.icon ? /*#__PURE__*/_react["default"].createElement(ListIconContainer, {
217
+ label: option.label,
218
+ iconPosition: optionsIconPosition
219
+ }, (0, _typeof2["default"])(option.icon) === "object" ? option.icon : /*#__PURE__*/_react["default"].createElement(option.icon)) : option.iconSrc && /*#__PURE__*/_react["default"].createElement(ListIcon, {
220
+ label: option.label,
221
+ src: option.iconSrc,
222
+ iconPosition: optionsIconPosition
223
+ }), /*#__PURE__*/_react["default"].createElement("span", {
224
+ className: "optionLabel"
225
+ }, option.label));
226
+ })))));
227
+ }))));
228
+ };
229
+
230
+ var sizes = {
231
+ small: "60px",
232
+ medium: "240px",
233
+ large: "480px",
234
+ fillParent: "100%",
235
+ fitContent: "unset"
236
+ };
237
+
238
+ var calculateWidth = function calculateWidth(margin, size) {
239
+ if (size === "fillParent") {
240
+ return "calc(".concat(sizes[size], " - ").concat((0, _utils.getMargin)(margin, "left"), " - ").concat((0, _utils.getMargin)(margin, "right"), ")");
241
+ }
242
+
243
+ return sizes[size];
244
+ };
245
+
246
+ var DXCDropdownContainer = _styledComponents["default"].div(_templateObject || (_templateObject = (0, _taggedTemplateLiteral2["default"])(["\n width: ", ";\n text-overflow: ellipsis;\n overflow: hidden;\n margin: ", ";\n margin-top: ", ";\n margin-right: ", ";\n margin-bottom: ", ";\n margin-left: ", ";\n display: inline-block;\n"])), function (props) {
247
+ return calculateWidth(props.margin, props.size);
248
+ }, function (props) {
249
+ return props.margin && (0, _typeof2["default"])(props.margin) !== "object" ? _variables.spaces[props.margin] : "0px";
250
+ }, function (props) {
251
+ return props.margin && (0, _typeof2["default"])(props.margin) === "object" && props.margin.top ? _variables.spaces[props.margin.top] : "";
252
+ }, function (props) {
253
+ return props.margin && (0, _typeof2["default"])(props.margin) === "object" && props.margin.right ? _variables.spaces[props.margin.right] : "";
254
+ }, function (props) {
255
+ return props.margin && (0, _typeof2["default"])(props.margin) === "object" && props.margin.bottom ? _variables.spaces[props.margin.bottom] : "";
256
+ }, function (props) {
257
+ return props.margin && (0, _typeof2["default"])(props.margin) === "object" && props.margin.left ? _variables.spaces[props.margin.left] : "";
258
+ });
259
+
260
+ var DXCMenu = (0, _styledComponents["default"])(_Popper["default"])(_templateObject2 || (_templateObject2 = (0, _taggedTemplateLiteral2["default"])(["\n z-index: 1;\n\n .MuiMenuItem-gutters {\n width: ", ";\n }\n .MuiMenuItem-root {\n min-height: 36px;\n padding-top: ", ";\n padding-bottom: ", ";\n padding-left: ", ";\n padding-right: ", ";\n height: auto;\n }\n .MuiPaper-root {\n min-width: ", ";\n border-width: ", ";\n border-style: ", ";\n border-color: ", ";\n border-bottom-left-radius: ", ";\n border-bottom-right-radius: ", ";\n border-top-left-radius: 0px;\n border-top-right-radius: 0px;\n max-height: 230px;\n overflow-y: auto;\n\n ::-webkit-scrollbar {\n width: 3px;\n }\n ::-webkit-scrollbar-track {\n background-color: ", ";\n border-radius: 3px;\n }\n ::-webkit-scrollbar-thumb {\n background-color: ", ";\n border-radius: 3px;\n }\n\n .MuiList-padding {\n padding-top: 0px;\n padding-bottom: 0px;\n }\n .MuiListItem-button {\n display: flex;\n flex-direction: ", ";\n justify-content: ", ";\n background-color: ", ";\n font-family: ", ";\n font-size: ", ";\n font-style: ", ";\n font-weight: ", ";\n color: ", ";\n cursor: pointer;\n }\n .MuiListItem-button:focus {\n outline: ", " solid 2px;\n outline-offset: -2px;\n }\n .MuiListItem-button:hover {\n background-color: ", ";\n }\n .MuiListItem-button:active {\n background-color: ", ";\n outline: ", " solid 2px;\n outline-offset: -2px;\n }\n }\n"])), function (props) {
261
+ return calculateWidth(props.margin, props.size);
262
+ }, function (props) {
263
+ return props.theme.optionPaddingTop;
264
+ }, function (props) {
265
+ return props.theme.optionPaddingBottom;
266
+ }, function (props) {
267
+ return props.theme.optionPaddingLeft;
268
+ }, function (props) {
269
+ return props.theme.optionPaddingRight;
270
+ }, function (props) {
271
+ return "".concat(props.width, "px");
272
+ }, function (props) {
273
+ return props.theme.borderThickness;
274
+ }, function (props) {
275
+ return props.theme.borderStyle;
276
+ }, function (props) {
277
+ return props.theme.borderColor;
278
+ }, function (props) {
279
+ return props.theme.borderRadius;
280
+ }, function (props) {
281
+ return props.theme.borderRadius;
282
+ }, function (props) {
283
+ return props.theme.scrollBarTrackColor;
284
+ }, function (props) {
285
+ return props.theme.scrollBarThumbColor;
286
+ }, function (props) {
287
+ return props.optionsIconPosition === "after" && "row-reverse" || "row";
288
+ }, function (props) {
289
+ return props.optionsIconPosition === "after" && "flex-end" || "";
290
+ }, function (props) {
291
+ return props.theme.optionBackgroundColor;
292
+ }, function (props) {
293
+ return props.theme.optionFontFamily;
294
+ }, function (props) {
295
+ return props.theme.optionFontSize;
296
+ }, function (props) {
297
+ return props.theme.optionFontStyle;
298
+ }, function (props) {
299
+ return props.theme.optionFontWeight;
300
+ }, function (props) {
301
+ return props.theme.optionFontColor;
302
+ }, function (props) {
303
+ return props.theme.focusColor;
304
+ }, function (props) {
305
+ return props.theme.hoverOptionBackgroundColor;
306
+ }, function (props) {
307
+ return props.theme.activeOptionBackgroundColor;
308
+ }, function (props) {
309
+ return props.theme.focusColor;
310
+ });
311
+
312
+ var DropdownTrigger = _styledComponents["default"].button(_templateObject3 || (_templateObject3 = (0, _taggedTemplateLiteral2["default"])(["\n display: inline-flex;\n justify-content: space-between;\n align-items: center;\n width: 100%;\n height: auto;\n min-height: 40px;\n cursor: ", ";\n font-family: ", ";\n font-size: ", ";\n font-style: ", ";\n font-weight: ", ";\n border-radius: ", ";\n border-width: ", ";\n border-style: ", ";\n border-color: ", ";\n min-width: ", ";\n padding-top: ", ";\n padding-bottom: ", ";\n padding-left: ", ";\n padding-right: ", ";\n background-color: ", ";\n color: ", ";\n border-bottom-right-radius: ", ";\n border-bottom-left-radius: ", ";\n\n ", ";\n"])), function (props) {
313
+ return props.disabled ? "not-allowed" : "pointer";
314
+ }, function (props) {
315
+ return props.theme.buttonFontFamily;
316
+ }, function (props) {
317
+ return props.theme.buttonFontSize;
318
+ }, function (props) {
319
+ return props.theme.buttonFontStyle;
320
+ }, function (props) {
321
+ return props.theme.buttonFontWeight;
322
+ }, function (props) {
323
+ return props.theme.borderRadius;
324
+ }, function (props) {
325
+ return props.theme.borderThickness;
326
+ }, function (props) {
327
+ return props.theme.borderStyle;
328
+ }, function (props) {
329
+ return props.disabled ? props.theme.disabledBorderColor : props.theme.borderColor;
330
+ }, function (props) {
331
+ return props.label === "" ? "0px" : calculateWidth(props.margin, props.size);
332
+ }, function (props) {
333
+ return props.theme.buttonPaddingTop;
334
+ }, function (props) {
335
+ return props.theme.buttonPaddingBottom;
336
+ }, function (props) {
337
+ return props.theme.buttonPaddingLeft;
338
+ }, function (props) {
339
+ return props.theme.buttonPaddingRight;
340
+ }, function (props) {
341
+ return props.disabled ? props.theme.disabledButtonBackgroundColor : props.theme.buttonBackgroundColor;
342
+ }, function (props) {
343
+ return props.disabled ? props.theme.disabledColor : props.theme.buttonFontColor;
344
+ }, function (props) {
345
+ return props.opened ? "0px" : props.theme.borderRadius;
346
+ }, function (props) {
347
+ return props.opened ? "0px" : props.theme.borderRadius;
348
+ }, function (props) {
349
+ return !props.disabled && " \n &:focus {\n outline: none;\n }\n &:focus-visible {\n outline: ".concat(props.theme.focusColor, " solid 2px;\n outline-offset: -2px;\n }\n &:hover {\n background-color: ").concat(props.theme.hoverButtonBackgroundColor, ";\n }\n &:active {\n background-color: ").concat(props.theme.activeButtonBackgroundColor, ";\n }\n ");
350
+ });
351
+
352
+ var DropdownTriggerLabel = _styledComponents["default"].span(_templateObject4 || (_templateObject4 = (0, _taggedTemplateLiteral2["default"])(["\n text-align: left;\n text-overflow: ellipsis;\n overflow: hidden;\n"])));
353
+
354
+ var DropdownTriggerContainer = _styledComponents["default"].span(_templateObject5 || (_templateObject5 = (0, _taggedTemplateLiteral2["default"])(["\n display: flex;\n align-items: center;\n flex-direction: ", ";\n margin-left: 0px;\n margin-right: 0px;\n width: ", ";\n white-space: nowrap;\n"])), function (props) {
355
+ return props.iconPosition === "after" && "row-reverse" || "row";
356
+ }, function (props) {
357
+ return props.caretHidden ? "100%" : "calc(100% - 36px)";
358
+ });
359
+
360
+ var ButtonIcon = _styledComponents["default"].img(_templateObject6 || (_templateObject6 = (0, _taggedTemplateLiteral2["default"])(["\n width: ", ";\n height: ", ";\n margin-left: ", ";\n margin-right: ", ";\n"])), function (props) {
361
+ return props.theme.buttonIconSize;
362
+ }, function (props) {
363
+ return props.theme.buttonIconSize;
364
+ }, function (props) {
365
+ return props.iconPosition === "after" && props.label !== "" && props.theme.buttonIconSpacing || "0px";
366
+ }, function (props) {
367
+ return props.iconPosition === "before" && props.label !== "" && props.theme.buttonIconSpacing || "0px";
368
+ });
369
+
370
+ var ButtonIconContainer = _styledComponents["default"].div(_templateObject7 || (_templateObject7 = (0, _taggedTemplateLiteral2["default"])(["\n overflow: hidden;\n width: ", ";\n height: ", ";\n margin-left: ", ";\n margin-right: ", ";\n color: ", ";\n\n img,\n svg {\n height: 100%;\n width: 100%;\n }\n"])), function (props) {
371
+ return props.theme.buttonIconSize;
372
+ }, function (props) {
373
+ return props.theme.buttonIconSize;
374
+ }, function (props) {
375
+ return props.iconPosition === "after" && props.label !== "" && props.theme.buttonIconSpacing || "0px";
376
+ }, function (props) {
377
+ return props.iconPosition === "before" && props.label !== "" && props.theme.buttonIconSpacing || "0px";
378
+ }, function (props) {
379
+ return props.disabled ? props.theme.disabledColor : props.theme.buttonIconColor;
380
+ });
381
+
382
+ var ListIcon = _styledComponents["default"].img(_templateObject8 || (_templateObject8 = (0, _taggedTemplateLiteral2["default"])(["\n width: ", ";\n height: ", ";\n margin-left: ", ";\n margin-right: ", ";\n"])), function (props) {
383
+ return props.theme.optionIconSize;
384
+ }, function (props) {
385
+ return props.theme.optionIconSize;
386
+ }, function (props) {
387
+ return props.iconPosition === "after" && props.label !== "" && props.theme.optionIconSpacing || "0px";
388
+ }, function (props) {
389
+ return props.iconPosition === "before" && props.label !== "" && props.theme.optionIconSpacing || "0px";
390
+ });
391
+
392
+ var ListIconContainer = _styledComponents["default"].div(_templateObject9 || (_templateObject9 = (0, _taggedTemplateLiteral2["default"])(["\n overflow: hidden;\n width: ", ";\n height: ", ";\n margin-left: ", ";\n margin-right: ", ";\n color: ", ";\n\n img,\n svg {\n height: 100%;\n width: 100%;\n }\n"])), function (props) {
393
+ return props.theme.optionIconSize;
394
+ }, function (props) {
395
+ return props.theme.optionIconSize;
396
+ }, function (props) {
397
+ return props.iconPosition === "after" && props.label !== "" && props.theme.optionIconSpacing || "0px";
398
+ }, function (props) {
399
+ return props.iconPosition === "before" && props.label !== "" && props.theme.optionIconSpacing || "0px";
400
+ }, function (props) {
401
+ return props.theme.optionIconColor;
402
+ });
403
+
404
+ var CaretIconContainer = _styledComponents["default"].div(_templateObject10 || (_templateObject10 = (0, _taggedTemplateLiteral2["default"])(["\n display: ", ";\n margin-left: ", ";\n color: ", ";\n\n svg {\n width: ", ";\n height: ", ";\n }\n"])), function (props) {
405
+ return props.caretHidden ? "none" : "inline-flex";
406
+ }, function (props) {
407
+ return props.theme.caretIconSpacing;
408
+ }, function (props) {
409
+ return props.disabled ? props.theme.disabledColor : props.theme.caretIconColor;
410
+ }, function (props) {
411
+ return props.theme.caretIconSize;
412
+ }, function (props) {
413
+ return props.theme.caretIconSize;
414
+ });
415
+
416
+ var _default = DxcDropdown;
417
+ exports["default"] = _default;
@@ -0,0 +1,247 @@
1
+ import React from "react";
2
+ import { userEvent, within } from "@storybook/testing-library";
3
+ import DxcDropdown from "./Dropdown";
4
+ import Title from "../../.storybook/components/Title";
5
+ import ExampleContainer from "../../.storybook/components/ExampleContainer";
6
+
7
+ export default {
8
+ title: "Dropdown",
9
+ component: DxcDropdown,
10
+ };
11
+
12
+ const iconSVG = () => {
13
+ return (
14
+ <svg viewBox="0 0 24 24" fill="currentColor">
15
+ <path d="M0 0h24v24H0z" fill="none" />
16
+ <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" />
17
+ </svg>
18
+ );
19
+ };
20
+
21
+ const iconSVGLarge = () => {
22
+ return (
23
+ <svg enable-background="new 0 0 24 24" height="48px" viewBox="0 0 24 24" width="48px" fill="currentColor">
24
+ <g>
25
+ <path d="M0,0h24v24H0V0z" fill="none" />
26
+ <path d="M0,0h24v24H0V0z" fill="none" />
27
+ </g>
28
+ <g>
29
+ <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" />
30
+ </g>
31
+ </svg>
32
+ );
33
+ };
34
+
35
+ const options: any = [
36
+ {
37
+ value: "1",
38
+ label: "Amazon with a very long text",
39
+ },
40
+ {
41
+ value: "2",
42
+ label: "Ebay",
43
+ },
44
+ {
45
+ value: "3",
46
+ label: "Apple",
47
+ },
48
+ ];
49
+
50
+ const option: any = [
51
+ {
52
+ value: "1",
53
+ label: "Ebay",
54
+ },
55
+ ];
56
+
57
+ const optionsIcon: any = options.map((op, i) => ({ ...op, icon: i === 1 ? iconSVGLarge : iconSVG }));
58
+
59
+ export const Chromatic = () => (
60
+ <>
61
+ <ExampleContainer>
62
+ <Title title="Default" theme="light" level={4} />
63
+ <DxcDropdown label="Default" options={options} onSelectOption={(value) => {}} />
64
+ </ExampleContainer>
65
+ <ExampleContainer pseudoState="pseudo-hover">
66
+ <Title title="Hovered" theme="light" level={4} />
67
+ <DxcDropdown label="Hovered" options={options} onSelectOption={(value) => {}} />
68
+ </ExampleContainer>
69
+ <ExampleContainer pseudoState="pseudo-focus-visible">
70
+ <Title title="Focused" theme="light" level={4} />
71
+ <DxcDropdown label="Focused" options={options} onSelectOption={(value) => {}} />
72
+ </ExampleContainer>
73
+ <ExampleContainer pseudoState="pseudo-active">
74
+ <Title title="Actived" theme="light" level={4} />
75
+ <DxcDropdown label="Actived" options={options} onSelectOption={(value) => {}} />
76
+ </ExampleContainer>
77
+ <ExampleContainer>
78
+ <Title title="Disabled" theme="light" level={4} />
79
+ <DxcDropdown label="Disabled" options={options} onSelectOption={(value) => {}} disabled />
80
+ </ExampleContainer>
81
+ <ExampleContainer>
82
+ <Title title="Caret hidden" theme="light" level={4} />
83
+ <DxcDropdown label="Caret hidden" options={options} onSelectOption={(value) => {}} caretHidden />
84
+ </ExampleContainer>
85
+ <ExampleContainer>
86
+ <Title title="With icon before" theme="light" level={4} />
87
+ <DxcDropdown label="Icon before" options={options} onSelectOption={(value) => {}} icon={iconSVG} />
88
+ </ExampleContainer>
89
+ <ExampleContainer>
90
+ <Title title="With icon after" theme="light" level={4} />
91
+ <DxcDropdown
92
+ label="Icon after"
93
+ options={options}
94
+ onSelectOption={(value) => {}}
95
+ icon={iconSVG}
96
+ iconPosition="after"
97
+ />
98
+ </ExampleContainer>
99
+ <ExampleContainer>
100
+ <Title title="Only icon" theme="light" level={4} />
101
+ <DxcDropdown options={options} onSelectOption={(value) => {}} icon={iconSVG} />
102
+ </ExampleContainer>
103
+ <ExampleContainer>
104
+ <Title title="Large icon" theme="light" level={4} />
105
+ <DxcDropdown label="Large icon" options={options} onSelectOption={(value) => {}} icon={iconSVGLarge} />
106
+ </ExampleContainer>
107
+ <ExampleContainer>
108
+ <Title title="Disabled with icon" theme="light" level={4} />
109
+ <DxcDropdown
110
+ label="Disabled with icon"
111
+ options={options}
112
+ onSelectOption={(value) => {}}
113
+ icon={iconSVG}
114
+ disabled
115
+ />
116
+ </ExampleContainer>
117
+ <ExampleContainer>
118
+ <Title title="Ellipsis" theme="light" level={4} />
119
+ <DxcDropdown
120
+ label="Very long text in dropdown button"
121
+ options={options}
122
+ onSelectOption={(value) => {}}
123
+ icon={iconSVG}
124
+ size="medium"
125
+ />
126
+ </ExampleContainer>
127
+ <Title title="Margins" theme="light" level={2} />
128
+ <ExampleContainer>
129
+ <Title title="Xxsmall" theme="light" level={4} />
130
+ <DxcDropdown label="Xxsmall" options={options} onSelectOption={(value) => {}} icon={iconSVG} margin="xxsmall" />
131
+ </ExampleContainer>
132
+ <ExampleContainer>
133
+ <Title title="Xsmall" theme="light" level={4} />
134
+ <DxcDropdown label="Xsmall" options={options} onSelectOption={(value) => {}} icon={iconSVG} margin="xsmall" />
135
+ </ExampleContainer>
136
+ <ExampleContainer>
137
+ <Title title="Small" theme="light" level={4} />
138
+ <DxcDropdown label="Small" options={options} onSelectOption={(value) => {}} icon={iconSVG} margin="small" />
139
+ </ExampleContainer>
140
+ <ExampleContainer>
141
+ <Title title="Medium" theme="light" level={4} />
142
+ <DxcDropdown label="Medium" options={options} onSelectOption={(value) => {}} icon={iconSVG} margin="medium" />
143
+ </ExampleContainer>
144
+ <ExampleContainer>
145
+ <Title title="Large" theme="light" level={4} />
146
+ <DxcDropdown label="Large" options={options} onSelectOption={(value) => {}} icon={iconSVG} margin="large" />
147
+ </ExampleContainer>
148
+ <ExampleContainer>
149
+ <Title title="Xlarge" theme="light" level={4} />
150
+ <DxcDropdown label="Xlarge" options={options} onSelectOption={(value) => {}} icon={iconSVG} margin="xlarge" />
151
+ </ExampleContainer>
152
+ <ExampleContainer>
153
+ <Title title="Xxlarge" theme="light" level={4} />
154
+ <DxcDropdown label="Xxlarge" options={options} onSelectOption={(value) => {}} icon={iconSVG} margin="xxlarge" />
155
+ </ExampleContainer>
156
+ <Title title="Sizes" theme="light" level={2} />
157
+ <ExampleContainer>
158
+ <Title title="Small" theme="light" level={4} />
159
+ <DxcDropdown label="Small" options={options} onSelectOption={(value) => {}} icon={iconSVG} size="small" />
160
+ </ExampleContainer>
161
+ <ExampleContainer>
162
+ <Title title="Medium" theme="light" level={4} />
163
+ <DxcDropdown label="Medium" options={options} onSelectOption={(value) => {}} icon={iconSVG} size="medium" />
164
+ </ExampleContainer>
165
+ <ExampleContainer>
166
+ <Title title="Large" theme="light" level={4} />
167
+ <DxcDropdown label="Large" options={options} onSelectOption={(value) => {}} icon={iconSVG} size="large" />
168
+ </ExampleContainer>
169
+ <ExampleContainer>
170
+ <Title title="FitContent" theme="light" level={4} />
171
+ <DxcDropdown
172
+ label="FitContent"
173
+ options={options}
174
+ onSelectOption={(value) => {}}
175
+ icon={iconSVG}
176
+ size="fitContent"
177
+ />
178
+ </ExampleContainer>
179
+ <ExampleContainer>
180
+ <Title title="FillParent" theme="light" level={4} />
181
+ <DxcDropdown
182
+ label="FillParent"
183
+ options={options}
184
+ onSelectOption={(value) => {}}
185
+ icon={iconSVG}
186
+ size="fillParent"
187
+ />
188
+ </ExampleContainer>
189
+ </>
190
+ );
191
+
192
+ const DropdownWithOptions = () => (
193
+ <ExampleContainer expanded>
194
+ <Title title="Options" theme="light" level={4} />
195
+ <DxcDropdown label="Options with icon" options={optionsIcon} onSelectOption={(value) => {}} />
196
+ </ExampleContainer>
197
+ );
198
+
199
+ const DropdownHoverOption = () => (
200
+ <ExampleContainer pseudoState="pseudo-hover" expanded>
201
+ <Title title="Hovered option" theme="light" level={4} />
202
+ <DxcDropdown label="Hovered options" options={option} onSelectOption={(value) => {}} />
203
+ </ExampleContainer>
204
+ );
205
+
206
+ const DropdownActiveOption = () => (
207
+ <ExampleContainer pseudoState="pseudo-active" expanded>
208
+ <Title title="Actived option" theme="light" level={4} />
209
+ <DxcDropdown label="Actived options" options={option} onSelectOption={(value) => {}} />
210
+ </ExampleContainer>
211
+ );
212
+
213
+ const DropdownWithOptionsIconAfter = () => (
214
+ <ExampleContainer expanded>
215
+ <Title title="Icon after options" theme="light" level={4} />
216
+ <DxcDropdown
217
+ label="Icon after options"
218
+ options={optionsIcon}
219
+ onSelectOption={(value) => {}}
220
+ optionsIconPosition="after"
221
+ />
222
+ </ExampleContainer>
223
+ );
224
+
225
+ export const DropdownOptions = DropdownWithOptions.bind({});
226
+ DropdownOptions.play = async ({ canvasElement }) => {
227
+ const canvas = within(canvasElement);
228
+ await userEvent.click(canvas.getByRole("button"));
229
+ };
230
+
231
+ export const DropdownHoveredOption = DropdownHoverOption.bind({});
232
+ DropdownHoveredOption.play = async ({ canvasElement }) => {
233
+ const canvas = within(canvasElement);
234
+ await userEvent.click(canvas.getByRole("button"));
235
+ };
236
+
237
+ export const DropdownActivedOption = DropdownActiveOption.bind({});
238
+ DropdownActivedOption.play = async ({ canvasElement }) => {
239
+ const canvas = within(canvasElement);
240
+ await userEvent.click(canvas.getByRole("button"));
241
+ };
242
+
243
+ export const DropdownOptionsIconAfter = DropdownWithOptionsIconAfter.bind({});
244
+ DropdownOptionsIconAfter.play = async ({ canvasElement }) => {
245
+ const canvas = within(canvasElement);
246
+ await userEvent.click(canvas.getByRole("button"));
247
+ };