@dxc-technology/halstack-react 0.0.0-e49dc66 → 0.0.0-e4ccd42

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 (373) hide show
  1. package/BackgroundColorContext.d.ts +1 -0
  2. package/BackgroundColorContext.js +6 -26
  3. package/HalstackContext.d.ts +1249 -0
  4. package/HalstackContext.js +310 -0
  5. package/README.md +47 -0
  6. package/accordion/Accordion.d.ts +1 -1
  7. package/accordion/Accordion.js +118 -194
  8. package/accordion/Accordion.stories.tsx +283 -0
  9. package/accordion/Accordion.test.js +56 -0
  10. package/accordion/types.d.ts +12 -23
  11. package/accordion-group/AccordionGroup.d.ts +5 -4
  12. package/accordion-group/AccordionGroup.js +39 -108
  13. package/accordion-group/AccordionGroup.stories.tsx +252 -0
  14. package/accordion-group/AccordionGroup.test.js +98 -0
  15. package/accordion-group/AccordionGroupAccordion.d.ts +4 -0
  16. package/accordion-group/AccordionGroupAccordion.js +31 -0
  17. package/accordion-group/types.d.ts +18 -23
  18. package/action-icon/ActionIcon.d.ts +4 -0
  19. package/action-icon/ActionIcon.js +47 -0
  20. package/action-icon/ActionIcon.stories.tsx +41 -0
  21. package/action-icon/ActionIcon.test.js +64 -0
  22. package/action-icon/types.d.ts +26 -0
  23. package/alert/Alert.js +24 -60
  24. package/alert/Alert.stories.tsx +28 -0
  25. package/alert/Alert.test.js +75 -0
  26. package/alert/types.d.ts +6 -6
  27. package/badge/Badge.d.ts +4 -0
  28. package/badge/Badge.js +141 -41
  29. package/badge/Badge.stories.tsx +210 -0
  30. package/badge/Badge.test.js +30 -0
  31. package/badge/types.d.ts +54 -0
  32. package/badge/types.js +5 -0
  33. package/bleed/Bleed.d.ts +3 -0
  34. package/bleed/Bleed.js +43 -0
  35. package/bleed/Bleed.stories.tsx +342 -0
  36. package/bleed/types.d.ts +37 -0
  37. package/bleed/types.js +5 -0
  38. package/box/Box.d.ts +1 -1
  39. package/box/Box.js +32 -86
  40. package/box/Box.stories.tsx +38 -51
  41. package/box/Box.test.js +13 -0
  42. package/box/types.d.ts +3 -18
  43. package/bulleted-list/BulletedList.d.ts +7 -0
  44. package/bulleted-list/BulletedList.js +89 -0
  45. package/bulleted-list/BulletedList.stories.tsx +115 -0
  46. package/bulleted-list/types.d.ts +38 -0
  47. package/bulleted-list/types.js +5 -0
  48. package/button/Button.d.ts +1 -1
  49. package/button/Button.js +65 -122
  50. package/button/Button.stories.tsx +164 -96
  51. package/button/Button.test.js +38 -0
  52. package/button/types.d.ts +14 -14
  53. package/card/Card.d.ts +1 -1
  54. package/card/Card.js +59 -104
  55. package/card/Card.stories.tsx +171 -0
  56. package/card/Card.test.js +39 -0
  57. package/card/types.d.ts +8 -15
  58. package/checkbox/Checkbox.d.ts +2 -2
  59. package/checkbox/Checkbox.js +145 -183
  60. package/checkbox/Checkbox.stories.tsx +166 -136
  61. package/checkbox/Checkbox.test.js +199 -0
  62. package/checkbox/types.d.ts +20 -8
  63. package/chip/Chip.d.ts +4 -0
  64. package/chip/Chip.js +48 -148
  65. package/chip/Chip.stories.tsx +214 -0
  66. package/chip/Chip.test.js +41 -0
  67. package/chip/types.d.ts +45 -0
  68. package/chip/types.js +5 -0
  69. package/common/OpenSans.css +68 -80
  70. package/common/coreTokens.d.ts +237 -0
  71. package/common/coreTokens.js +184 -0
  72. package/common/utils.d.ts +1 -0
  73. package/common/utils.js +6 -12
  74. package/common/variables.d.ts +1395 -0
  75. package/common/variables.js +1033 -1343
  76. package/container/Container.d.ts +4 -0
  77. package/container/Container.js +194 -0
  78. package/container/Container.stories.tsx +214 -0
  79. package/container/types.d.ts +74 -0
  80. package/container/types.js +5 -0
  81. package/date-input/Calendar.d.ts +4 -0
  82. package/date-input/Calendar.js +214 -0
  83. package/date-input/DateInput.js +175 -313
  84. package/date-input/DateInput.stories.tsx +203 -56
  85. package/date-input/DateInput.test.js +808 -0
  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 +86 -22
  93. package/dialog/Dialog.d.ts +1 -1
  94. package/dialog/Dialog.js +69 -130
  95. package/dialog/Dialog.stories.tsx +365 -0
  96. package/dialog/Dialog.test.js +307 -0
  97. package/dialog/types.d.ts +18 -25
  98. package/dropdown/Dropdown.d.ts +1 -1
  99. package/dropdown/Dropdown.js +250 -331
  100. package/dropdown/Dropdown.stories.tsx +438 -0
  101. package/dropdown/Dropdown.test.js +599 -0
  102. package/dropdown/DropdownMenu.d.ts +4 -0
  103. package/dropdown/DropdownMenu.js +63 -0
  104. package/dropdown/DropdownMenuItem.d.ts +4 -0
  105. package/dropdown/DropdownMenuItem.js +67 -0
  106. package/dropdown/types.d.ts +37 -28
  107. package/file-input/FileInput.d.ts +4 -0
  108. package/file-input/FileInput.js +274 -327
  109. package/file-input/FileInput.stories.tsx +618 -0
  110. package/file-input/FileInput.test.js +459 -0
  111. package/file-input/FileItem.d.ts +4 -0
  112. package/file-input/FileItem.js +54 -112
  113. package/file-input/types.d.ts +129 -0
  114. package/file-input/types.js +5 -0
  115. package/flex/Flex.d.ts +4 -0
  116. package/flex/Flex.js +57 -0
  117. package/flex/Flex.stories.tsx +112 -0
  118. package/flex/types.d.ts +97 -0
  119. package/flex/types.js +5 -0
  120. package/footer/Footer.d.ts +1 -1
  121. package/footer/Footer.js +73 -201
  122. package/footer/{Footer.stories.jsx → Footer.stories.tsx} +57 -37
  123. package/footer/Footer.test.js +85 -0
  124. package/footer/Icons.d.ts +3 -0
  125. package/footer/Icons.js +67 -8
  126. package/footer/types.d.ts +41 -38
  127. package/grid/Grid.d.ts +7 -0
  128. package/grid/Grid.js +76 -0
  129. package/grid/Grid.stories.tsx +219 -0
  130. package/grid/types.d.ts +115 -0
  131. package/grid/types.js +5 -0
  132. package/header/Header.d.ts +4 -3
  133. package/header/Header.js +100 -204
  134. package/header/Header.stories.tsx +251 -0
  135. package/header/Header.test.js +66 -0
  136. package/header/Icons.d.ts +2 -0
  137. package/header/Icons.js +4 -9
  138. package/header/types.d.ts +4 -16
  139. package/heading/Heading.d.ts +4 -0
  140. package/heading/Heading.js +16 -55
  141. package/heading/Heading.stories.tsx +54 -0
  142. package/heading/Heading.test.js +169 -0
  143. package/heading/types.d.ts +33 -0
  144. package/heading/types.js +5 -0
  145. package/image/Image.d.ts +4 -0
  146. package/image/Image.js +70 -0
  147. package/image/Image.stories.tsx +129 -0
  148. package/image/types.d.ts +72 -0
  149. package/image/types.js +5 -0
  150. package/inset/Inset.d.ts +3 -0
  151. package/inset/Inset.js +43 -0
  152. package/inset/Inset.stories.tsx +230 -0
  153. package/inset/types.d.ts +37 -0
  154. package/inset/types.js +5 -0
  155. package/layout/ApplicationLayout.d.ts +20 -0
  156. package/layout/ApplicationLayout.js +83 -184
  157. package/layout/ApplicationLayout.stories.tsx +162 -0
  158. package/layout/Icons.d.ts +8 -0
  159. package/layout/Icons.js +51 -48
  160. package/layout/SidenavContext.d.ts +5 -0
  161. package/layout/SidenavContext.js +13 -0
  162. package/layout/types.d.ts +41 -0
  163. package/layout/types.js +5 -0
  164. package/link/Link.d.ts +3 -2
  165. package/link/Link.js +65 -111
  166. package/link/Link.stories.tsx +199 -16
  167. package/link/Link.test.js +63 -0
  168. package/link/types.d.ts +15 -35
  169. package/main.d.ts +17 -14
  170. package/main.js +78 -98
  171. package/nav-tabs/NavTabs.d.ts +8 -0
  172. package/nav-tabs/NavTabs.js +93 -0
  173. package/nav-tabs/NavTabs.stories.tsx +276 -0
  174. package/nav-tabs/NavTabs.test.js +76 -0
  175. package/nav-tabs/Tab.d.ts +4 -0
  176. package/nav-tabs/Tab.js +118 -0
  177. package/nav-tabs/types.d.ts +52 -0
  178. package/nav-tabs/types.js +5 -0
  179. package/number-input/NumberInput.d.ts +11 -0
  180. package/number-input/NumberInput.js +49 -91
  181. package/number-input/{NumberInput.stories.jsx → NumberInput.stories.tsx} +44 -28
  182. package/number-input/NumberInput.test.js +989 -0
  183. package/number-input/types.d.ts +130 -0
  184. package/number-input/types.js +5 -0
  185. package/package.json +46 -45
  186. package/paginator/Icons.d.ts +5 -0
  187. package/paginator/Icons.js +21 -47
  188. package/paginator/Paginator.js +35 -98
  189. package/paginator/Paginator.stories.tsx +24 -0
  190. package/paginator/Paginator.test.js +335 -0
  191. package/paginator/types.d.ts +3 -3
  192. package/paragraph/Paragraph.d.ts +5 -0
  193. package/paragraph/Paragraph.js +22 -0
  194. package/paragraph/Paragraph.stories.tsx +27 -0
  195. package/password-input/Icons.d.ts +6 -0
  196. package/password-input/Icons.js +35 -0
  197. package/password-input/PasswordInput.js +60 -125
  198. package/password-input/PasswordInput.stories.tsx +3 -35
  199. package/password-input/PasswordInput.test.js +198 -0
  200. package/password-input/types.d.ts +35 -24
  201. package/progress-bar/ProgressBar.js +66 -92
  202. package/progress-bar/ProgressBar.stories.tsx +93 -0
  203. package/progress-bar/ProgressBar.test.js +93 -0
  204. package/progress-bar/types.d.ts +3 -3
  205. package/quick-nav/QuickNav.d.ts +4 -0
  206. package/quick-nav/QuickNav.js +94 -0
  207. package/quick-nav/QuickNav.stories.tsx +356 -0
  208. package/quick-nav/types.d.ts +21 -0
  209. package/quick-nav/types.js +5 -0
  210. package/radio-group/Radio.d.ts +4 -0
  211. package/radio-group/Radio.js +124 -0
  212. package/radio-group/RadioGroup.d.ts +4 -0
  213. package/radio-group/RadioGroup.js +235 -0
  214. package/radio-group/RadioGroup.stories.tsx +214 -0
  215. package/radio-group/RadioGroup.test.js +756 -0
  216. package/radio-group/types.d.ts +114 -0
  217. package/radio-group/types.js +5 -0
  218. package/resultset-table/Icons.d.ts +7 -0
  219. package/resultset-table/Icons.js +47 -0
  220. package/resultset-table/ResultsetTable.d.ts +7 -0
  221. package/resultset-table/ResultsetTable.js +166 -0
  222. package/resultset-table/ResultsetTable.stories.tsx +397 -0
  223. package/resultset-table/ResultsetTable.test.js +371 -0
  224. package/resultset-table/types.d.ts +73 -0
  225. package/resultset-table/types.js +5 -0
  226. package/select/Icons.d.ts +10 -0
  227. package/select/Icons.js +89 -0
  228. package/select/Listbox.d.ts +4 -0
  229. package/select/Listbox.js +143 -0
  230. package/select/Option.d.ts +4 -0
  231. package/select/Option.js +87 -0
  232. package/select/Select.d.ts +4 -0
  233. package/select/Select.js +240 -515
  234. package/select/Select.stories.tsx +971 -0
  235. package/select/Select.test.js +2370 -0
  236. package/select/types.d.ts +209 -0
  237. package/select/types.js +5 -0
  238. package/sidenav/Icons.d.ts +7 -0
  239. package/sidenav/Icons.js +47 -0
  240. package/sidenav/Sidenav.d.ts +10 -0
  241. package/sidenav/Sidenav.js +132 -81
  242. package/sidenav/Sidenav.stories.tsx +282 -0
  243. package/sidenav/Sidenav.test.js +37 -0
  244. package/sidenav/types.d.ts +76 -0
  245. package/sidenav/types.js +5 -0
  246. package/slider/Slider.d.ts +2 -2
  247. package/slider/Slider.js +151 -183
  248. package/slider/Slider.test.js +254 -0
  249. package/slider/types.d.ts +11 -3
  250. package/spinner/Spinner.js +32 -76
  251. package/spinner/{Spinner.stories.jsx → Spinner.stories.tsx} +53 -26
  252. package/spinner/Spinner.test.js +55 -0
  253. package/spinner/types.d.ts +3 -3
  254. package/status-light/StatusLight.d.ts +4 -0
  255. package/status-light/StatusLight.js +51 -0
  256. package/status-light/StatusLight.stories.tsx +74 -0
  257. package/status-light/StatusLight.test.js +25 -0
  258. package/status-light/types.d.ts +17 -0
  259. package/status-light/types.js +5 -0
  260. package/switch/Switch.d.ts +2 -2
  261. package/switch/Switch.js +150 -115
  262. package/switch/Switch.stories.tsx +45 -68
  263. package/switch/Switch.test.js +180 -0
  264. package/switch/types.d.ts +13 -5
  265. package/table/DropdownTheme.js +62 -0
  266. package/table/Table.d.ts +6 -2
  267. package/table/Table.js +89 -37
  268. package/table/Table.stories.tsx +658 -0
  269. package/table/Table.test.js +113 -0
  270. package/table/types.d.ts +48 -6
  271. package/tabs/Tab.d.ts +4 -0
  272. package/tabs/Tab.js +116 -0
  273. package/tabs/Tabs.d.ts +1 -1
  274. package/tabs/Tabs.js +318 -145
  275. package/tabs/Tabs.stories.tsx +226 -0
  276. package/tabs/Tabs.test.js +294 -0
  277. package/tabs/types.d.ts +48 -27
  278. package/tag/Tag.d.ts +1 -1
  279. package/tag/Tag.js +44 -86
  280. package/tag/Tag.stories.tsx +38 -28
  281. package/tag/Tag.test.js +49 -0
  282. package/tag/types.d.ts +25 -16
  283. package/text-input/Icons.d.ts +8 -0
  284. package/text-input/Icons.js +56 -0
  285. package/text-input/Suggestion.d.ts +4 -0
  286. package/text-input/Suggestion.js +67 -0
  287. package/text-input/Suggestions.d.ts +4 -0
  288. package/text-input/Suggestions.js +84 -0
  289. package/text-input/TextInput.d.ts +4 -0
  290. package/text-input/TextInput.js +333 -593
  291. package/text-input/TextInput.stories.tsx +465 -0
  292. package/text-input/TextInput.test.js +1756 -0
  293. package/text-input/types.d.ts +205 -0
  294. package/text-input/types.js +5 -0
  295. package/textarea/Textarea.d.ts +4 -0
  296. package/textarea/Textarea.js +98 -181
  297. package/textarea/Textarea.stories.tsx +174 -0
  298. package/textarea/Textarea.test.js +406 -0
  299. package/textarea/types.d.ts +141 -0
  300. package/textarea/types.js +5 -0
  301. package/toggle-group/ToggleGroup.d.ts +4 -0
  302. package/toggle-group/ToggleGroup.js +100 -142
  303. package/toggle-group/ToggleGroup.stories.tsx +218 -0
  304. package/toggle-group/ToggleGroup.test.js +137 -0
  305. package/toggle-group/types.d.ts +114 -0
  306. package/toggle-group/types.js +5 -0
  307. package/typography/Typography.d.ts +4 -0
  308. package/typography/Typography.js +23 -0
  309. package/typography/Typography.stories.tsx +198 -0
  310. package/typography/types.d.ts +18 -0
  311. package/typography/types.js +5 -0
  312. package/useTheme.d.ts +1148 -0
  313. package/useTheme.js +4 -11
  314. package/useTranslatedLabels.d.ts +85 -0
  315. package/useTranslatedLabels.js +14 -0
  316. package/utils/BaseTypography.d.ts +21 -0
  317. package/utils/BaseTypography.js +94 -0
  318. package/utils/FocusLock.d.ts +13 -0
  319. package/utils/FocusLock.js +124 -0
  320. package/wizard/Wizard.d.ts +4 -0
  321. package/wizard/Wizard.js +130 -151
  322. package/wizard/Wizard.stories.tsx +253 -0
  323. package/wizard/Wizard.test.js +114 -0
  324. package/wizard/types.d.ts +64 -0
  325. package/wizard/types.js +5 -0
  326. package/ThemeContext.js +0 -246
  327. package/V3Select/V3Select.js +0 -455
  328. package/V3Select/index.d.ts +0 -27
  329. package/V3Textarea/V3Textarea.js +0 -260
  330. package/V3Textarea/index.d.ts +0 -27
  331. package/chip/index.d.ts +0 -22
  332. package/common/RequiredComponent.js +0 -32
  333. package/date/Date.js +0 -373
  334. package/date/index.d.ts +0 -27
  335. package/file-input/index.d.ts +0 -81
  336. package/heading/index.d.ts +0 -17
  337. package/input-text/Icons.js +0 -22
  338. package/input-text/InputText.js +0 -611
  339. package/input-text/index.d.ts +0 -36
  340. package/number-input/NumberInputContext.js +0 -16
  341. package/number-input/index.d.ts +0 -113
  342. package/progress-bar/ProgressBar.stories.jsx +0 -58
  343. package/radio/Radio.d.ts +0 -4
  344. package/radio/Radio.js +0 -174
  345. package/radio/Radio.stories.tsx +0 -192
  346. package/radio/types.d.ts +0 -54
  347. package/resultsetTable/ResultsetTable.js +0 -274
  348. package/resultsetTable/index.d.ts +0 -19
  349. package/select/index.d.ts +0 -131
  350. package/sidenav/index.d.ts +0 -13
  351. package/slider/Slider.stories.tsx +0 -172
  352. package/table/Table.stories.jsx +0 -276
  353. package/text-input/index.d.ts +0 -135
  354. package/textarea/Textarea.stories.jsx +0 -135
  355. package/textarea/index.d.ts +0 -117
  356. package/toggle/Toggle.js +0 -186
  357. package/toggle/index.d.ts +0 -21
  358. package/toggle-group/index.d.ts +0 -21
  359. package/upload/Upload.js +0 -201
  360. package/upload/buttons-upload/ButtonsUpload.js +0 -111
  361. package/upload/buttons-upload/Icons.js +0 -40
  362. package/upload/dragAndDropArea/DragAndDropArea.js +0 -225
  363. package/upload/dragAndDropArea/Icons.js +0 -39
  364. package/upload/file-upload/FileToUpload.js +0 -115
  365. package/upload/file-upload/Icons.js +0 -66
  366. package/upload/files-upload/FilesToUpload.js +0 -109
  367. package/upload/index.d.ts +0 -15
  368. package/upload/transaction/Icons.js +0 -160
  369. package/upload/transaction/Transaction.js +0 -104
  370. package/upload/transactions/Transactions.js +0 -94
  371. package/wizard/Icons.js +0 -65
  372. package/wizard/index.d.ts +0 -18
  373. /package/{radio → action-icon}/types.js +0 -0
@@ -0,0 +1,253 @@
1
+ import React from "react";
2
+ import DxcWizard from "./Wizard";
3
+ import Title from "../../.storybook/components/Title";
4
+ import ExampleContainer from "../../.storybook/components/ExampleContainer";
5
+ import { userEvent, within } from "@storybook/testing-library";
6
+ import { HalstackProvider } from "../HalstackContext";
7
+
8
+ export default {
9
+ title: "Wizard",
10
+ component: DxcWizard,
11
+ };
12
+
13
+ const favoriteSVG = (
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
+ const largeIcon = (
20
+ <svg xmlns="http://www.w3.org/2000/svg" height="48px" viewBox="0 0 24 24" width="48px" fill="currentColor">
21
+ <path d="M0 0h24v24H0z" fill="none" />
22
+ <path d="M10 20v-6h4v6h5v-8h3L12 3 2 12h3v8z" />
23
+ </svg>
24
+ );
25
+
26
+ const stepWithLabel = [
27
+ {
28
+ label: "First step",
29
+ },
30
+ {
31
+ label: "Second step",
32
+ },
33
+ {
34
+ label: "Third step",
35
+ },
36
+ {
37
+ label: "Forth step",
38
+ },
39
+ ];
40
+
41
+ const stepWithLabelDescription = [
42
+ {
43
+ label: "First step",
44
+ description: "Description",
45
+ },
46
+ {
47
+ label: "Second step",
48
+ description: "Description",
49
+ },
50
+ {
51
+ label: "Third step",
52
+ description: "Description",
53
+ valid: true,
54
+ },
55
+ {
56
+ label: "Forth step",
57
+ description: "Description",
58
+ valid: false,
59
+ },
60
+ ];
61
+
62
+ const stepWithLongDescription = [
63
+ {
64
+ label: "First step",
65
+ description:
66
+ "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. ",
67
+ },
68
+ {
69
+ label: "Second step",
70
+ description:
71
+ "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. ",
72
+ },
73
+ {
74
+ label: "Third step",
75
+ description:
76
+ "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. ",
77
+ },
78
+ ];
79
+
80
+ const stepDisabled = [
81
+ {
82
+ label: "First step",
83
+ description: "Description",
84
+ disabled: true,
85
+ },
86
+ {
87
+ label: "Second step",
88
+ description: "Description",
89
+ icon: favoriteSVG,
90
+ disabled: true,
91
+ },
92
+ {
93
+ label: "Third step",
94
+ description: "Description",
95
+ disabled: true,
96
+ valid: true,
97
+ },
98
+ {
99
+ label: "Forth step",
100
+ description: "Description",
101
+ valid: false,
102
+ disabled: true,
103
+ },
104
+ ];
105
+
106
+ const stepIcons = [
107
+ {
108
+ label: "First step",
109
+ icon: favoriteSVG,
110
+ },
111
+ {
112
+ label: "Second step",
113
+ icon: favoriteSVG,
114
+ },
115
+ {
116
+ label: "Third step",
117
+ icon: favoriteSVG,
118
+ },
119
+ ];
120
+
121
+ const stepLargeIcons = [
122
+ {
123
+ label: "First step",
124
+ icon: largeIcon,
125
+ },
126
+ {
127
+ label: "Second step",
128
+ icon: largeIcon,
129
+ },
130
+ {
131
+ label: "Third step",
132
+ icon: largeIcon,
133
+ },
134
+ ];
135
+
136
+ const opinionatedTheme = {
137
+ wizard: {
138
+ baseColor: "#5f249f",
139
+ fontColor: "#000000",
140
+ selectedStepFontColor: "#ffffff",
141
+ },
142
+ };
143
+
144
+ export const Chromatic = () => (
145
+ <>
146
+ <ExampleContainer>
147
+ <Title title="Current step in the third step, labels and description" theme="light" level={4} />
148
+ <DxcWizard defaultCurrentStep={2} steps={stepWithLabelDescription}></DxcWizard>
149
+ </ExampleContainer>
150
+ <ExampleContainer>
151
+ <Title title="With long description in horizontal" theme="light" level={4} />
152
+ <DxcWizard steps={stepWithLongDescription}></DxcWizard>
153
+ </ExampleContainer>
154
+ <ExampleContainer>
155
+ <Title title="With long description in vertical" theme="light" level={4} />
156
+ <DxcWizard mode="vertical" steps={stepWithLongDescription}></DxcWizard>
157
+ </ExampleContainer>
158
+ <ExampleContainer>
159
+ <Title title="Disabled steps" theme="light" level={4} />
160
+ <DxcWizard steps={stepDisabled}></DxcWizard>
161
+ </ExampleContainer>
162
+ <ExampleContainer pseudoState="pseudo-focus">
163
+ <Title title="Focused steps" theme="light" level={4} />
164
+ <DxcWizard steps={stepIcons}></DxcWizard>
165
+ </ExampleContainer>
166
+ <ExampleContainer>
167
+ <Title title="With icons" theme="light" level={4} />
168
+ <DxcWizard steps={stepIcons}></DxcWizard>
169
+ </ExampleContainer>
170
+ <ExampleContainer>
171
+ <Title title="With large icons" theme="light" level={4} />
172
+ <DxcWizard steps={stepLargeIcons}></DxcWizard>
173
+ </ExampleContainer>
174
+ <Title title="Margins horizontal" theme="light" level={2} />
175
+ <ExampleContainer>
176
+ <Title title="Xxsmall margin" theme="light" level={4} />
177
+ <DxcWizard margin="xxsmall" steps={stepWithLabel}></DxcWizard>
178
+ </ExampleContainer>
179
+ <ExampleContainer>
180
+ <Title title="Xsmall margin" theme="light" level={4} />
181
+ <DxcWizard margin="xsmall" steps={stepWithLabel}></DxcWizard>
182
+ </ExampleContainer>
183
+ <ExampleContainer>
184
+ <Title title="Small margin" theme="light" level={4} />
185
+ <DxcWizard margin="small" steps={stepWithLabel}></DxcWizard>
186
+ </ExampleContainer>
187
+ <ExampleContainer>
188
+ <Title title="Medium margin" theme="light" level={4} />
189
+ <DxcWizard margin="medium" steps={stepWithLabel}></DxcWizard>
190
+ </ExampleContainer>
191
+ <ExampleContainer>
192
+ <Title title="Large margin" theme="light" level={4} />
193
+ <DxcWizard margin="large" steps={stepWithLabel}></DxcWizard>
194
+ </ExampleContainer>
195
+ <ExampleContainer>
196
+ <Title title="Xlarge margin" theme="light" level={4} />
197
+ <DxcWizard margin="xlarge" steps={stepWithLabel}></DxcWizard>
198
+ </ExampleContainer>
199
+ <ExampleContainer>
200
+ <Title title="Xxlarge margin" theme="light" level={4} />
201
+ <DxcWizard margin="xxlarge" steps={stepWithLabel}></DxcWizard>
202
+ </ExampleContainer>
203
+ <Title title="Margins vertical" theme="light" level={2} />
204
+ <ExampleContainer>
205
+ <Title title="Xxsmall margin" theme="light" level={4} />
206
+ <DxcWizard mode="vertical" margin="xxsmall" steps={stepWithLabelDescription}></DxcWizard>
207
+ </ExampleContainer>
208
+ <ExampleContainer>
209
+ <Title title="Xsmall margin" theme="light" level={4} />
210
+ <DxcWizard mode="vertical" margin="xsmall" steps={stepWithLabel}></DxcWizard>
211
+ </ExampleContainer>
212
+ <ExampleContainer>
213
+ <Title title="Small margin" theme="light" level={4} />
214
+ <DxcWizard mode="vertical" margin="small" steps={stepWithLabel}></DxcWizard>
215
+ </ExampleContainer>
216
+ <ExampleContainer>
217
+ <Title title="Medium margin" theme="light" level={4} />
218
+ <DxcWizard mode="vertical" margin="medium" steps={stepWithLabel}></DxcWizard>
219
+ </ExampleContainer>
220
+ <ExampleContainer>
221
+ <Title title="Large margin" theme="light" level={4} />
222
+ <DxcWizard mode="vertical" margin="large" steps={stepWithLabel}></DxcWizard>
223
+ </ExampleContainer>
224
+ <ExampleContainer>
225
+ <Title title="Xlarge margin" theme="light" level={4} />
226
+ <DxcWizard mode="vertical" margin="xlarge" steps={stepWithLabel}></DxcWizard>
227
+ </ExampleContainer>
228
+ <ExampleContainer>
229
+ <Title title="Xxlarge margin" theme="light" level={4} />
230
+ <DxcWizard mode="vertical" margin="xxlarge" steps={stepWithLabel}></DxcWizard>
231
+ </ExampleContainer>
232
+ <Title title="Opinionated theme" theme="light" level={2} />
233
+ <ExampleContainer>
234
+ <HalstackProvider theme={opinionatedTheme}>
235
+ <DxcWizard defaultCurrentStep={2} steps={stepWithLabelDescription}></DxcWizard>
236
+ </HalstackProvider>
237
+ </ExampleContainer>
238
+ </>
239
+ );
240
+
241
+ const WizardSelected = () => (
242
+ <ExampleContainer>
243
+ <Title title="Clicked step" theme="light" level={4} />
244
+ <DxcWizard steps={stepWithLabel} mode="vertical"></DxcWizard>
245
+ </ExampleContainer>
246
+ );
247
+
248
+ export const WizardStepActived = WizardSelected.bind({});
249
+ WizardStepActived.play = async ({ canvasElement }) => {
250
+ const canvas = within(canvasElement);
251
+ const option = canvas.getByText("Third step");
252
+ await userEvent.click(option);
253
+ };
@@ -0,0 +1,114 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+ var _react = _interopRequireDefault(require("react"));
5
+ var _react2 = require("@testing-library/react");
6
+ var _Wizard = _interopRequireDefault(require("./Wizard.tsx"));
7
+ describe("Wizard components tests", function () {
8
+ test("Wizard renders with correct steps", function () {
9
+ var _render = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_Wizard["default"], {
10
+ steps: [{
11
+ label: "first-step"
12
+ }, {
13
+ label: "second-step"
14
+ }]
15
+ })),
16
+ getByText = _render.getByText,
17
+ getAllByRole = _render.getAllByRole;
18
+ var steps = getAllByRole("button");
19
+ expect(getByText("first-step")).toBeTruthy();
20
+ expect(getByText("second-step")).toBeTruthy();
21
+ expect(steps[0].getAttribute("aria-current")).toBe("step");
22
+ expect(steps[1].getAttribute("aria-current")).toBe("false");
23
+ });
24
+ test("Wizard renders with initially selected step", function () {
25
+ var _render2 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_Wizard["default"], {
26
+ defaultCurrentStep: 1,
27
+ steps: [{
28
+ label: "first-step"
29
+ }, {
30
+ label: "second-step"
31
+ }]
32
+ })),
33
+ getAllByRole = _render2.getAllByRole;
34
+ var steps = getAllByRole("button");
35
+ expect(steps[1].getAttribute("aria-current")).toBe("step");
36
+ });
37
+ test("Click on step text", function () {
38
+ var onClick = jest.fn();
39
+ var _render3 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_Wizard["default"], {
40
+ onStepClick: onClick,
41
+ steps: [{
42
+ label: "first-step"
43
+ }]
44
+ })),
45
+ getByText = _render3.getByText;
46
+ var step = getByText("first-step");
47
+ _react2.fireEvent.click(step);
48
+ expect(onClick).toHaveBeenCalled();
49
+ });
50
+ test("Click on step description", function () {
51
+ var onClick = jest.fn();
52
+ var _render4 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_Wizard["default"], {
53
+ onStepClick: onClick,
54
+ steps: [{
55
+ label: "first-step",
56
+ description: "step-description"
57
+ }]
58
+ })),
59
+ getByText = _render4.getByText;
60
+ var step = getByText("step-description");
61
+ _react2.fireEvent.click(step);
62
+ expect(onClick).toHaveBeenCalled();
63
+ });
64
+ test("Click on step number", function () {
65
+ var onClick = jest.fn();
66
+ var _render5 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_Wizard["default"], {
67
+ onStepClick: onClick,
68
+ steps: [{
69
+ label: "first-step"
70
+ }]
71
+ })),
72
+ getByText = _render5.getByText;
73
+ var step = getByText("1");
74
+ _react2.fireEvent.click(step);
75
+ expect(onClick).toHaveBeenCalled();
76
+ });
77
+ test("Click on disable step", function () {
78
+ var onClick = jest.fn();
79
+ var _render6 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_Wizard["default"], {
80
+ onStepClick: onClick,
81
+ steps: [{
82
+ label: "first-step"
83
+ }, {
84
+ label: "second-step",
85
+ disabled: true
86
+ }]
87
+ })),
88
+ getByText = _render6.getByText;
89
+ var step = getByText("second-step");
90
+ _react2.fireEvent.click(step);
91
+ expect(onClick).toHaveBeenCalledTimes(0);
92
+ });
93
+ test("Controlled wizard function is called", function () {
94
+ var onClick = jest.fn(function (i) {
95
+ return i;
96
+ });
97
+ var _render7 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_Wizard["default"], {
98
+ currentStep: 0,
99
+ onStepClick: onClick,
100
+ steps: [{
101
+ label: "first-step"
102
+ }, {
103
+ label: "second-step"
104
+ }]
105
+ })),
106
+ getAllByRole = _render7.getAllByRole;
107
+ var steps = getAllByRole("button");
108
+ _react2.fireEvent.click(steps[1]);
109
+ _react2.fireEvent.click(steps[0]);
110
+ expect(onClick).toHaveBeenCalledTimes(2);
111
+ expect(onClick).toHaveBeenNthCalledWith(1, 1);
112
+ expect(onClick).toHaveBeenNthCalledWith(2, 0);
113
+ });
114
+ });
@@ -0,0 +1,64 @@
1
+ /// <reference types="react" />
2
+ type Space = "xxsmall" | "xsmall" | "small" | "medium" | "large" | "xlarge" | "xxlarge";
3
+ type Margin = {
4
+ top?: Space;
5
+ bottom?: Space;
6
+ left?: Space;
7
+ right?: Space;
8
+ };
9
+ type SVG = React.ReactNode & React.SVGProps<SVGSVGElement>;
10
+ export type StepProps = {
11
+ /**
12
+ * Step label.
13
+ */
14
+ label: string;
15
+ /**
16
+ * Description that will be placed next to the step.
17
+ */
18
+ description?: string;
19
+ /**
20
+ * Element or path used as the icon displayed in the step.
21
+ */
22
+ icon?: string | SVG;
23
+ /**
24
+ * Whether the step is disabled or not.
25
+ */
26
+ disabled?: boolean;
27
+ /**
28
+ * Whether the step is valid or not.
29
+ */
30
+ valid?: boolean;
31
+ };
32
+ type Props = {
33
+ /**
34
+ * The wizard can be showed in horizontal or vertical.
35
+ */
36
+ mode?: "horizontal" | "vertical";
37
+ /**
38
+ * Initially selected step, only when it is uncontrolled.
39
+ */
40
+ defaultCurrentStep?: number;
41
+ /**
42
+ * Defines which step is marked as the current. The numeration starts at 0.
43
+ */
44
+ currentStep?: number;
45
+ /**
46
+ * This function will be called when the user clicks a step. The step
47
+ * number will be passed as a parameter.
48
+ */
49
+ onStepClick?: (currentStep: number) => void;
50
+ /**
51
+ * An array of objects representing the steps.
52
+ */
53
+ steps: StepProps[];
54
+ /**
55
+ * Size of the margin to be applied to the component ('xxsmall' | 'xsmall' | 'small' | 'medium' | 'large' | 'xlarge' | 'xxlarge').
56
+ * You can pass an object with 'top', 'bottom', 'left' and 'right' properties in order to specify different margin sizes.
57
+ */
58
+ margin?: Space | Margin;
59
+ /**
60
+ * Value of the tabindex attribute that is given to all the steps.
61
+ */
62
+ tabIndex?: number;
63
+ };
64
+ export default Props;
@@ -0,0 +1,5 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });