@dxc-technology/halstack-react 0.0.0-1f7dada → 0.0.0-2151ae6

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 (255) hide show
  1. package/BackgroundColorContext.js +0 -1
  2. package/HalstackContext.d.ts +12 -0
  3. package/HalstackContext.js +295 -0
  4. package/accordion/Accordion.d.ts +1 -1
  5. package/accordion/Accordion.js +13 -45
  6. package/accordion/Accordion.stories.tsx +20 -13
  7. package/accordion/Accordion.test.js +72 -0
  8. package/accordion/types.d.ts +7 -7
  9. package/accordion-group/AccordionGroup.d.ts +1 -1
  10. package/accordion-group/AccordionGroup.js +14 -15
  11. package/accordion-group/AccordionGroup.stories.tsx +1 -1
  12. package/accordion-group/AccordionGroup.test.js +151 -0
  13. package/accordion-group/types.d.ts +7 -7
  14. package/alert/Alert.js +4 -1
  15. package/alert/Alert.test.js +92 -0
  16. package/badge/Badge.d.ts +4 -0
  17. package/badge/Badge.js +5 -3
  18. package/badge/types.d.ts +5 -0
  19. package/{radio → badge}/types.js +0 -0
  20. package/bleed/Bleed.d.ts +3 -0
  21. package/bleed/Bleed.js +51 -0
  22. package/bleed/Bleed.stories.tsx +341 -0
  23. package/bleed/types.d.ts +37 -0
  24. package/bleed/types.js +5 -0
  25. package/box/Box.js +22 -32
  26. package/box/Box.test.js +18 -0
  27. package/bulleted-list/BulletedList.d.ts +7 -0
  28. package/bulleted-list/BulletedList.js +123 -0
  29. package/bulleted-list/BulletedList.stories.tsx +200 -0
  30. package/bulleted-list/types.d.ts +11 -0
  31. package/bulleted-list/types.js +5 -0
  32. package/button/Button.d.ts +1 -1
  33. package/button/Button.js +19 -24
  34. package/button/Button.stories.tsx +6 -8
  35. package/button/Button.test.js +35 -0
  36. package/button/types.d.ts +3 -7
  37. package/card/Card.js +24 -27
  38. package/card/Card.stories.tsx +1 -1
  39. package/card/Card.test.js +50 -0
  40. package/checkbox/Checkbox.d.ts +1 -1
  41. package/checkbox/Checkbox.js +43 -39
  42. package/checkbox/Checkbox.stories.tsx +124 -128
  43. package/checkbox/Checkbox.test.js +78 -0
  44. package/checkbox/types.d.ts +8 -4
  45. package/chip/Chip.d.ts +1 -1
  46. package/chip/Chip.js +14 -52
  47. package/chip/Chip.stories.tsx +6 -8
  48. package/chip/Chip.test.js +56 -0
  49. package/chip/types.d.ts +5 -13
  50. package/common/variables.js +254 -333
  51. package/date-input/DateInput.js +59 -45
  52. package/date-input/DateInput.stories.tsx +7 -7
  53. package/date-input/DateInput.test.js +479 -0
  54. package/date-input/types.d.ts +16 -9
  55. package/dialog/Dialog.js +6 -33
  56. package/dialog/Dialog.test.js +40 -0
  57. package/dropdown/Dropdown.d.ts +1 -1
  58. package/dropdown/Dropdown.js +21 -47
  59. package/dropdown/Dropdown.stories.tsx +249 -0
  60. package/dropdown/Dropdown.test.js +189 -0
  61. package/dropdown/types.d.ts +5 -14
  62. package/file-input/FileInput.js +111 -39
  63. package/file-input/FileInput.stories.tsx +507 -0
  64. package/file-input/FileInput.test.js +457 -0
  65. package/file-input/FileItem.js +7 -5
  66. package/flex/Flex.d.ts +3 -0
  67. package/flex/Flex.js +74 -0
  68. package/flex/Flex.stories.tsx +103 -0
  69. package/flex/types.d.ts +21 -0
  70. package/flex/types.js +5 -0
  71. package/footer/Footer.js +24 -99
  72. package/footer/Footer.test.js +109 -0
  73. package/footer/Icons.js +1 -1
  74. package/header/Header.js +27 -48
  75. package/header/Header.stories.tsx +46 -36
  76. package/header/Header.test.js +79 -0
  77. package/heading/Heading.stories.tsx +3 -2
  78. package/heading/Heading.test.js +186 -0
  79. package/inset/Inset.d.ts +3 -0
  80. package/inset/Inset.js +51 -0
  81. package/inset/Inset.stories.tsx +229 -0
  82. package/inset/types.d.ts +37 -0
  83. package/inset/types.js +5 -0
  84. package/layout/ApplicationLayout.d.ts +4 -3
  85. package/layout/ApplicationLayout.js +69 -108
  86. package/layout/ApplicationLayout.stories.tsx +44 -85
  87. package/layout/Icons.d.ts +5 -0
  88. package/layout/Icons.js +13 -2
  89. package/layout/SidenavContext.d.ts +5 -0
  90. package/layout/SidenavContext.js +19 -0
  91. package/layout/types.d.ts +8 -21
  92. package/link/Link.d.ts +3 -2
  93. package/link/Link.js +60 -85
  94. package/link/Link.stories.tsx +92 -52
  95. package/link/Link.test.js +83 -0
  96. package/link/types.d.ts +9 -29
  97. package/main.d.ts +11 -10
  98. package/main.js +61 -47
  99. package/number-input/NumberInput.js +11 -18
  100. package/number-input/NumberInput.stories.tsx +5 -5
  101. package/number-input/NumberInput.test.js +506 -0
  102. package/number-input/types.d.ts +17 -10
  103. package/package.json +10 -6
  104. package/paginator/Paginator.js +17 -38
  105. package/paginator/Paginator.test.js +308 -0
  106. package/paragraph/Paragraph.d.ts +6 -0
  107. package/paragraph/Paragraph.js +38 -0
  108. package/paragraph/Paragraph.stories.tsx +44 -0
  109. package/password-input/PasswordInput.js +7 -4
  110. package/password-input/PasswordInput.stories.tsx +3 -3
  111. package/password-input/PasswordInput.test.js +180 -0
  112. package/password-input/types.d.ts +14 -11
  113. package/progress-bar/ProgressBar.js +3 -3
  114. package/progress-bar/ProgressBar.stories.jsx +11 -11
  115. package/progress-bar/ProgressBar.test.js +65 -0
  116. package/quick-nav/QuickNav.d.ts +4 -0
  117. package/quick-nav/QuickNav.js +118 -0
  118. package/quick-nav/QuickNav.stories.tsx +264 -0
  119. package/quick-nav/types.d.ts +21 -0
  120. package/quick-nav/types.js +5 -0
  121. package/radio-group/Radio.d.ts +4 -0
  122. package/radio-group/Radio.js +141 -0
  123. package/radio-group/RadioGroup.d.ts +4 -0
  124. package/radio-group/RadioGroup.js +283 -0
  125. package/radio-group/RadioGroup.stories.tsx +100 -0
  126. package/radio-group/RadioGroup.test.js +695 -0
  127. package/radio-group/types.d.ts +114 -0
  128. package/radio-group/types.js +5 -0
  129. package/resultsetTable/ResultsetTable.js +5 -2
  130. package/resultsetTable/ResultsetTable.stories.tsx +7 -8
  131. package/resultsetTable/ResultsetTable.test.js +348 -0
  132. package/row/Row.d.ts +3 -11
  133. package/row/Row.js +12 -9
  134. package/row/Row.stories.tsx +20 -6
  135. package/row/types.d.ts +28 -0
  136. package/row/types.js +5 -0
  137. package/select/Icons.d.ts +10 -0
  138. package/select/Icons.js +93 -0
  139. package/select/Listbox.d.ts +4 -0
  140. package/select/Listbox.js +175 -0
  141. package/select/Option.d.ts +4 -0
  142. package/select/Option.js +110 -0
  143. package/select/Select.d.ts +4 -0
  144. package/select/Select.js +149 -352
  145. package/select/Select.stories.tsx +230 -176
  146. package/select/Select.test.js +2162 -0
  147. package/select/types.d.ts +212 -0
  148. package/select/types.js +5 -0
  149. package/sidenav/Sidenav.d.ts +6 -5
  150. package/sidenav/Sidenav.js +172 -52
  151. package/sidenav/Sidenav.stories.tsx +154 -139
  152. package/sidenav/Sidenav.test.js +44 -0
  153. package/sidenav/types.d.ts +50 -27
  154. package/slider/Slider.d.ts +1 -1
  155. package/slider/Slider.js +2 -1
  156. package/slider/Slider.stories.tsx +8 -8
  157. package/slider/Slider.test.js +150 -0
  158. package/slider/types.d.ts +4 -0
  159. package/spinner/Spinner.js +1 -1
  160. package/spinner/Spinner.stories.jsx +1 -0
  161. package/spinner/Spinner.test.js +64 -0
  162. package/stack/Stack.d.ts +4 -10
  163. package/stack/Stack.js +29 -67
  164. package/stack/Stack.stories.tsx +198 -85
  165. package/stack/types.d.ts +32 -0
  166. package/stack/types.js +5 -0
  167. package/switch/Switch.d.ts +1 -1
  168. package/switch/Switch.js +35 -19
  169. package/switch/Switch.stories.tsx +15 -15
  170. package/switch/Switch.test.js +98 -0
  171. package/switch/types.d.ts +6 -2
  172. package/table/Table.stories.jsx +2 -1
  173. package/table/Table.test.js +26 -0
  174. package/tabs/Tabs.d.ts +1 -1
  175. package/tabs/Tabs.js +16 -18
  176. package/tabs/Tabs.stories.tsx +7 -16
  177. package/tabs/Tabs.test.js +140 -0
  178. package/tabs/types.d.ts +27 -15
  179. package/tabs-nav/NavTabs.d.ts +8 -0
  180. package/tabs-nav/NavTabs.js +125 -0
  181. package/tabs-nav/NavTabs.stories.tsx +170 -0
  182. package/tabs-nav/NavTabs.test.js +82 -0
  183. package/tabs-nav/Tab.d.ts +4 -0
  184. package/tabs-nav/Tab.js +132 -0
  185. package/tabs-nav/types.d.ts +53 -0
  186. package/tabs-nav/types.js +5 -0
  187. package/tag/Tag.d.ts +1 -1
  188. package/tag/Tag.js +17 -27
  189. package/tag/Tag.stories.tsx +26 -29
  190. package/tag/Tag.test.js +60 -0
  191. package/tag/types.d.ts +23 -14
  192. package/text-input/Suggestion.d.ts +4 -0
  193. package/text-input/Suggestion.js +55 -0
  194. package/text-input/TextInput.js +68 -84
  195. package/text-input/TextInput.stories.tsx +34 -16
  196. package/text-input/TextInput.test.js +1712 -0
  197. package/text-input/types.d.ts +32 -13
  198. package/textarea/Textarea.js +20 -27
  199. package/textarea/Textarea.stories.jsx +37 -15
  200. package/textarea/Textarea.test.js +437 -0
  201. package/textarea/types.d.ts +18 -11
  202. package/toggle-group/ToggleGroup.d.ts +1 -1
  203. package/toggle-group/ToggleGroup.js +12 -14
  204. package/toggle-group/ToggleGroup.stories.tsx +27 -32
  205. package/toggle-group/ToggleGroup.test.js +156 -0
  206. package/toggle-group/types.d.ts +46 -25
  207. package/typography/Typography.d.ts +4 -0
  208. package/typography/Typography.js +131 -0
  209. package/typography/Typography.stories.tsx +198 -0
  210. package/typography/types.d.ts +18 -0
  211. package/typography/types.js +5 -0
  212. package/useTheme.js +2 -2
  213. package/useTranslatedLabels.d.ts +2 -0
  214. package/useTranslatedLabels.js +20 -0
  215. package/wizard/Wizard.d.ts +1 -1
  216. package/wizard/Wizard.js +55 -44
  217. package/wizard/Wizard.stories.tsx +13 -23
  218. package/wizard/Wizard.test.js +141 -0
  219. package/wizard/types.d.ts +6 -2
  220. package/ThemeContext.d.ts +0 -15
  221. package/ThemeContext.js +0 -243
  222. package/V3Select/V3Select.js +0 -455
  223. package/V3Select/index.d.ts +0 -27
  224. package/V3Textarea/V3Textarea.js +0 -260
  225. package/V3Textarea/index.d.ts +0 -27
  226. package/date/Date.js +0 -373
  227. package/date/index.d.ts +0 -27
  228. package/input-text/Icons.js +0 -22
  229. package/input-text/InputText.js +0 -611
  230. package/input-text/index.d.ts +0 -36
  231. package/list/List.d.ts +0 -8
  232. package/list/List.js +0 -47
  233. package/list/List.stories.tsx +0 -85
  234. package/radio/Radio.d.ts +0 -4
  235. package/radio/Radio.js +0 -174
  236. package/radio/Radio.stories.tsx +0 -192
  237. package/radio/types.d.ts +0 -54
  238. package/select/index.d.ts +0 -131
  239. package/text/Text.d.ts +0 -7
  240. package/text/Text.js +0 -30
  241. package/text/Text.stories.tsx +0 -19
  242. package/toggle/Toggle.js +0 -186
  243. package/toggle/index.d.ts +0 -21
  244. package/upload/Upload.js +0 -201
  245. package/upload/buttons-upload/ButtonsUpload.js +0 -111
  246. package/upload/buttons-upload/Icons.js +0 -40
  247. package/upload/dragAndDropArea/DragAndDropArea.js +0 -225
  248. package/upload/dragAndDropArea/Icons.js +0 -39
  249. package/upload/file-upload/FileToUpload.js +0 -115
  250. package/upload/file-upload/Icons.js +0 -66
  251. package/upload/files-upload/FilesToUpload.js +0 -109
  252. package/upload/index.d.ts +0 -15
  253. package/upload/transaction/Icons.js +0 -160
  254. package/upload/transaction/Transaction.js +0 -104
  255. package/upload/transactions/Transactions.js +0 -94
@@ -13,138 +13,251 @@ export const Chromatic = () => (
13
13
  <Title title="Default" theme="light" level={4} />
14
14
  <Container>
15
15
  <DxcStack>
16
- <Placeholder></Placeholder>
17
- <Placeholder></Placeholder>
18
- <Placeholder></Placeholder>
16
+ <Placeholder height="small" width="small" />
17
+ <Placeholder height="medium" width="medium" />
18
+ <Placeholder height="large" width="large" />
19
+ <Placeholder height="small" width="large" />
19
20
  </DxcStack>
20
21
  </Container>
21
- <Title title="Align = baseline" theme="light" level={4} />
22
+ <Title title="Default with divider" theme="light" level={4} />
22
23
  <Container>
23
- <DxcStack align="baseline">
24
- <Placeholder paddingLeft={20}></Placeholder>
25
- <Placeholder></Placeholder>
26
- <Placeholder paddingRight={60}></Placeholder>
24
+ <DxcStack divider>
25
+ <Placeholder height="medium" width="medium" />
26
+ <Placeholder height="large" width="large" />
27
+ <Placeholder height="small" width="large" />
27
28
  </DxcStack>
28
29
  </Container>
29
- <Title title="Align = center" theme="light" level={4} />
30
+ <Title title="Alignment with divider" theme="light" level={4} />
30
31
  <Container>
31
- <DxcStack align="center">
32
- <Placeholder paddingLeft={20}></Placeholder>
33
- <Placeholder></Placeholder>
34
- <Placeholder paddingLeft={60}></Placeholder>
32
+ <DxcStack alignX="end" divider>
33
+ <Placeholder height="small" width="small" />
34
+ <Placeholder height="small" width="medium" />
35
+ <Placeholder height="medium" width="small" />
35
36
  </DxcStack>
36
37
  </Container>
37
- <Title title="Align = end" theme="light" level={4} />
38
+ <Title title="Default with one child" theme="light" level={4} />
38
39
  <Container>
39
- <DxcStack align="end">
40
- <Placeholder paddingLeft={20}></Placeholder>
41
- <Placeholder></Placeholder>
42
- <Placeholder paddingLeft={60}></Placeholder>
40
+ <DxcStack divider>
41
+ <Placeholder height="large" width="xlarge" />
43
42
  </DxcStack>
44
43
  </Container>
45
- <Title title="Align = start" theme="light" level={4} />
44
+ <Title title="Wrap" theme="light" level={4} />
45
+ <FlexContainer customHeight>
46
+ <DxcStack wrap>
47
+ <Placeholder height="small" width="small" />
48
+ <Placeholder height="large" width="medium" />
49
+ <Placeholder height="medium" width="small" />
50
+ <Placeholder height="large" width="medium" />
51
+ </DxcStack>
52
+ </FlexContainer>
53
+ <Title title="No wrap in a flex container" theme="light" level={4} />
54
+ <FlexContainer customHeight>
55
+ <DxcStack>
56
+ <Placeholder height="small" width="small" />
57
+ <Placeholder height="medium" width="small" />
58
+ <Placeholder height="small" width="medium" />
59
+ </DxcStack>
60
+ </FlexContainer>
61
+ <Title title="No wrap (default)" theme="light" level={4} />
62
+ <Container customHeight>
63
+ <DxcStack>
64
+ <Placeholder height="small" width="medium" />
65
+ <Placeholder height="small" width="small" />
66
+ </DxcStack>
67
+ </Container>
68
+ <Title title="AlignX = start" theme="light" level={4} />
69
+ <Container>
70
+ <DxcStack alignX="start">
71
+ <Placeholder height="small" width="small" />
72
+ <Placeholder height="large" width="medium" />
73
+ <Placeholder height="medium" width="small" />
74
+ <Placeholder height="large" width="medium" />
75
+ </DxcStack>
76
+ </Container>
77
+ <Title title="AlignX = end" theme="light" level={4} />
78
+ <Container>
79
+ <DxcStack alignX="end">
80
+ <Placeholder height="small" width="small" />
81
+ <Placeholder height="large" width="medium" />
82
+ <Placeholder height="medium" width="small" />
83
+ </DxcStack>
84
+ </Container>
85
+ <Title title="AlignX = center" theme="light" level={4} />
86
+ <Container>
87
+ <DxcStack alignX="center">
88
+ <Placeholder height="small" width="small" />
89
+ <Placeholder height="large" width="medium" />
90
+ <Placeholder height="medium" width="small" />
91
+ <Placeholder height="large" width="medium" />
92
+ </DxcStack>
93
+ </Container>
94
+ <Title title="AlignX = baseline" theme="light" level={4} />
95
+ <Container>
96
+ <DxcStack alignX="baseline">
97
+ <Placeholder height="small" width="small" />
98
+ <Placeholder height="large" width="medium" />
99
+ <Placeholder height="medium" width="small" />
100
+ </DxcStack>
101
+ </Container>
102
+ <Title title="AlignX with wrapped items" theme="light" level={4} />
103
+ <Container customHeight>
104
+ <DxcStack alignX="center" wrap>
105
+ <Placeholder height="small" width="medium" />
106
+ <Placeholder height="small" width="small" />
107
+ </DxcStack>
108
+ </Container>
109
+ <Title title="Gutter = 0rem" theme="light" level={4} />
110
+ <Container>
111
+ <DxcStack gutter="0rem">
112
+ <Placeholder height="small" width="medium" />
113
+ <Placeholder height="large" width="small" />
114
+ <Placeholder height="medium" width="medium" />
115
+ <Placeholder height="large" width="small" />
116
+ <Placeholder height="small" width="medium" />
117
+ </DxcStack>
118
+ </Container>
119
+ <Title title="Gutter = 0.125rem" theme="light" level={4} />
46
120
  <Container>
47
- <DxcStack align="start">
48
- <Placeholder paddingLeft={20}></Placeholder>
49
- <Placeholder></Placeholder>
50
- <Placeholder paddingLeft={60}></Placeholder>
121
+ <DxcStack gutter="0.125rem">
122
+ <Placeholder height="small" width="small" />
123
+ <Placeholder height="large" width="medium" />
124
+ <Placeholder height="medium" width="small" />
51
125
  </DxcStack>
52
126
  </Container>
53
- <Title title="Align = stretch" theme="light" level={4} />
127
+ <Title title="Gutter = 0.25rem" theme="light" level={4} />
54
128
  <Container>
55
- <DxcStack align="stretch">
56
- <Placeholder paddingLeft={20}></Placeholder>
57
- <Placeholder></Placeholder>
58
- <Placeholder paddingLeft={60}></Placeholder>
129
+ <DxcStack gutter="0.25rem">
130
+ <Placeholder height="small" width="medium" />
131
+ <Placeholder height="large" width="small" />
132
+ <Placeholder height="medium" width="medium" />
133
+ <Placeholder height="large" width="small" />
134
+ <Placeholder height="small" width="medium" />
59
135
  </DxcStack>
60
136
  </Container>
61
- <Title title="gutter = xxsmall" theme="light" level={4} />
137
+ <Title title="Gutter = 0.5rem" theme="light" level={4} />
62
138
  <Container>
63
- <DxcStack gutter="xxsmall">
64
- <Placeholder></Placeholder>
65
- <Placeholder></Placeholder>
66
- <Placeholder></Placeholder>
139
+ <DxcStack gutter="0.5rem">
140
+ <Placeholder height="small" width="small" />
141
+ <Placeholder height="large" width="medium" />
142
+ <Placeholder height="medium" width="small" />
67
143
  </DxcStack>
68
144
  </Container>
69
- <Title title="gutter = xsmall" theme="light" level={4} />
145
+ <Title title="Gutter = 0.75rem" theme="light" level={4} />
70
146
  <Container>
71
- <DxcStack gutter="xsmall">
72
- <Placeholder></Placeholder>
73
- <Placeholder></Placeholder>
74
- <Placeholder></Placeholder>
147
+ <DxcStack gutter="0.75rem">
148
+ <Placeholder height="small" width="medium" />
149
+ <Placeholder height="large" width="small" />
150
+ <Placeholder height="medium" width="medium" />
151
+ <Placeholder height="large" width="small" />
152
+ <Placeholder height="small" width="medium" />
75
153
  </DxcStack>
76
154
  </Container>
77
- <Title title="gutter = small" theme="light" level={4} />
155
+ <Title title="Gutter = 1rem" theme="light" level={4} />
78
156
  <Container>
79
- <DxcStack gutter="small">
80
- <Placeholder></Placeholder>
81
- <Placeholder></Placeholder>
82
- <Placeholder></Placeholder>
157
+ <DxcStack gutter="1rem">
158
+ <Placeholder height="small" width="small" />
159
+ <Placeholder height="large" width="medium" />
160
+ <Placeholder height="medium" width="small" />
83
161
  </DxcStack>
84
162
  </Container>
85
- <Title title="gutter = medium" theme="light" level={4} />
163
+ <Title title="Gutter = 1.5rem" theme="light" level={4} />
86
164
  <Container>
87
- <DxcStack gutter="medium">
88
- <Placeholder></Placeholder>
89
- <Placeholder></Placeholder>
90
- <Placeholder></Placeholder>
165
+ <DxcStack gutter="1.5rem">
166
+ <Placeholder height="small" width="medium" />
167
+ <Placeholder height="large" width="small" />
168
+ <Placeholder height="medium" width="medium" />
169
+ <Placeholder height="large" width="small" />
170
+ <Placeholder height="small" width="medium" />
91
171
  </DxcStack>
92
172
  </Container>
93
- <Title title="gutter = large" theme="light" level={4} />
173
+ <Title title="Gutter = 2rem & divider" theme="light" level={4} />
94
174
  <Container>
95
- <DxcStack gutter="large">
96
- <Placeholder></Placeholder>
97
- <Placeholder></Placeholder>
98
- <Placeholder></Placeholder>
175
+ <DxcStack gutter="2rem" divider>
176
+ <Placeholder height="small" width="small" />
177
+ <Placeholder height="large" width="medium" />
178
+ <Placeholder height="medium" width="small" />
99
179
  </DxcStack>
100
180
  </Container>
101
- <Title title="gutter = xlarge" theme="light" level={4} />
181
+ <Title title="Gutter = 3rem" theme="light" level={4} />
102
182
  <Container>
103
- <DxcStack gutter="xlarge">
104
- <Placeholder></Placeholder>
105
- <Placeholder></Placeholder>
106
- <Placeholder></Placeholder>
183
+ <DxcStack gutter="3rem">
184
+ <Placeholder height="small" width="small" />
185
+ <Placeholder height="large" width="medium" />
186
+ <Placeholder height="medium" width="small" />
107
187
  </DxcStack>
108
188
  </Container>
109
- <Title title="gutter = xxlarge" theme="light" level={4} />
189
+ <Title title="Gutter = 4rem" theme="light" level={4} />
110
190
  <Container>
111
- <DxcStack gutter="xxlarge">
112
- <Placeholder></Placeholder>
113
- <Placeholder></Placeholder>
114
- <Placeholder></Placeholder>
191
+ <DxcStack gutter="4rem">
192
+ <Placeholder height="large" width="medium" />
193
+ <Placeholder height="medium" width="small" />
115
194
  </DxcStack>
116
195
  </Container>
117
- <Title title="gutter = xxlarge && divider" theme="light" level={4} />
196
+ <Title title="Gutter = 5rem" theme="light" level={4} />
118
197
  <Container>
119
- <DxcStack gutter="xxlarge" divider>
120
- <Placeholder></Placeholder>
121
- <Placeholder></Placeholder>
122
- <Placeholder></Placeholder>
198
+ <DxcStack gutter="5rem">
199
+ <Placeholder height="small" width="small" />
200
+ <Placeholder height="medium" width="small" />
123
201
  </DxcStack>
124
202
  </Container>
125
- <Title title="gutter = none" theme="light" level={4} />
203
+ <Title title="Reverse" theme="light" level={4} />
126
204
  <Container>
127
- <DxcStack gutter="none">
128
- <Placeholder></Placeholder>
129
- <Placeholder></Placeholder>
130
- <Placeholder></Placeholder>
205
+ <DxcStack reverse>
206
+ <Placeholder height="small" width="medium">
207
+ 1
208
+ </Placeholder>
209
+ <Placeholder height="large" width="small">
210
+ 2
211
+ </Placeholder>
212
+ <Placeholder height="medium" width="medium">
213
+ 3
214
+ </Placeholder>
215
+ <Placeholder height="large" width="small">
216
+ 4
217
+ </Placeholder>
131
218
  </DxcStack>
132
219
  </Container>
220
+ <Title title="Wrapped and reversed children" theme="light" level={4} />
221
+ <FlexContainer customHeight>
222
+ <DxcStack reverse wrap>
223
+ <Placeholder height="small" width="medium">
224
+ 1
225
+ </Placeholder>
226
+ <Placeholder height="large" width="small">
227
+ 2
228
+ </Placeholder>
229
+ <Placeholder height="medium" width="medium">
230
+ 3
231
+ </Placeholder>
232
+ <Placeholder height="large" width="small">
233
+ 4
234
+ </Placeholder>
235
+ </DxcStack>
236
+ </FlexContainer>
133
237
  </>
134
238
  );
135
239
 
136
- const Container = styled.div`
137
- background: #d0d0d0;
138
- padding: 10px;
139
- border-radius: 10px;
240
+ const FlexContainer = styled.div<{ customHeight?: boolean }>`
241
+ display: flex;
242
+ ${({ customHeight }) => customHeight && `height: 100px;`};
243
+ background: #f2eafa;
140
244
  `;
141
245
 
142
- const Placeholder = styled.div`
143
- min-height: 80px;
144
- min-width: 120px;
145
- border: 1px solid #fabada;
146
- background-color: #fff7fb;
147
- border-radius: 5px;
148
- padding-left: ${({ paddingLeft }) => `${paddingLeft ?? 0}px`};
149
- padding-right: ${({ paddingRight }) => `${paddingRight ?? 0}px`};
246
+ const Container = styled.div<{ customHeight?: boolean }>`
247
+ background: #f2eafa;
248
+ ${({ customHeight }) => customHeight && `height: 100px;`};
249
+ `;
250
+
251
+ type PlaceholderProps = {
252
+ width?: "xlarge" | "large" | "medium" | "small" | "auto";
253
+ height?: "large" | "medium" | "small" | "auto";
254
+ };
255
+
256
+ const Placeholder = styled.div<PlaceholderProps>`
257
+ ${({ width }) =>
258
+ width &&
259
+ `width: ${width === "xlarge" ? "350px" : width === "large" ? "150px" : width === "medium" ? "100px" : "50px"};`};
260
+ ${({ height }) => height && `height: ${height === "large" ? "100px" : height === "medium" ? "80px" : "50px"};`};
261
+ border: 1px solid #a46ede;
262
+ background-color: #e5d5f6;
150
263
  `;
@@ -0,0 +1,32 @@
1
+ /// <reference types="react" />
2
+ declare type Props = {
3
+ /**
4
+ * Alignment applied to children in the main axis.
5
+ */
6
+ alignX?: "start" | "end" | "center" | "baseline" | "stretch";
7
+ /**
8
+ * Specifies the HTML tag or component that is rendered as the wrapper element.
9
+ */
10
+ as?: React.ElementType;
11
+ /**
12
+ * If true, a divider is shown between children.
13
+ */
14
+ divider?: boolean;
15
+ /**
16
+ * Space applied between each child.
17
+ */
18
+ gutter?: "0rem" | "0.125rem" | "0.25rem" | "0.5rem" | "0.75rem" | "1rem" | "1.5rem" | "2rem" | "3rem" | "4rem" | "5rem";
19
+ /**
20
+ * Change the direction of the stack to reverse.
21
+ */
22
+ reverse?: boolean;
23
+ /**
24
+ * Sets whether the children are forced onto one column or can wrap onto multiple columns.
25
+ */
26
+ wrap?: boolean;
27
+ /**
28
+ * Custom content inside the stack.
29
+ */
30
+ children: React.ReactNode[] | React.ReactNode;
31
+ };
32
+ export default Props;
package/stack/types.js ADDED
@@ -0,0 +1,5 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
@@ -1,4 +1,4 @@
1
1
  /// <reference types="react" />
2
2
  import SwitchPropsType from "./types";
3
- declare const DxcSwitch: ({ checked, value, label, labelPosition, name, disabled, onChange, required, margin, size, tabIndex, }: SwitchPropsType) => JSX.Element;
3
+ declare const DxcSwitch: ({ defaultChecked, checked, value, label, labelPosition, name, disabled, optional, onChange, margin, size, tabIndex, }: SwitchPropsType) => JSX.Element;
4
4
  export default DxcSwitch;
package/switch/Switch.js CHANGED
@@ -21,7 +21,7 @@ var _styledComponents = _interopRequireWildcard(require("styled-components"));
21
21
 
22
22
  var _core = require("@material-ui/core");
23
23
 
24
- var _RequiredComponent = _interopRequireDefault(require("../common/RequiredComponent"));
24
+ var _uuid = require("uuid");
25
25
 
26
26
  var _variables = require("../common/variables.js");
27
27
 
@@ -29,6 +29,8 @@ var _utils = require("../common/utils.js");
29
29
 
30
30
  var _useTheme = _interopRequireDefault(require("../useTheme"));
31
31
 
32
+ var _useTranslatedLabels = _interopRequireDefault(require("../useTranslatedLabels"));
33
+
32
34
  var _BackgroundColorContext = _interopRequireDefault(require("../BackgroundColorContext"));
33
35
 
34
36
  var _templateObject, _templateObject2;
@@ -38,7 +40,8 @@ function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "functio
38
40
  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; }
39
41
 
40
42
  var DxcSwitch = function DxcSwitch(_ref) {
41
- var checked = _ref.checked,
43
+ var defaultChecked = _ref.defaultChecked,
44
+ checked = _ref.checked,
42
45
  value = _ref.value,
43
46
  _ref$label = _ref.label,
44
47
  label = _ref$label === void 0 ? "" : _ref$label,
@@ -48,21 +51,28 @@ var DxcSwitch = function DxcSwitch(_ref) {
48
51
  name = _ref$name === void 0 ? "" : _ref$name,
49
52
  _ref$disabled = _ref.disabled,
50
53
  disabled = _ref$disabled === void 0 ? false : _ref$disabled,
54
+ _ref$optional = _ref.optional,
55
+ optional = _ref$optional === void 0 ? false : _ref$optional,
51
56
  onChange = _ref.onChange,
52
- _ref$required = _ref.required,
53
- required = _ref$required === void 0 ? false : _ref$required,
54
57
  margin = _ref.margin,
55
58
  _ref$size = _ref.size,
56
59
  size = _ref$size === void 0 ? "fitContent" : _ref$size,
57
60
  _ref$tabIndex = _ref.tabIndex,
58
61
  tabIndex = _ref$tabIndex === void 0 ? 0 : _ref$tabIndex;
59
62
 
60
- var _useState = (0, _react.useState)(false),
61
- _useState2 = (0, _slicedToArray2["default"])(_useState, 2),
62
- innerChecked = _useState2[0],
63
- setInnerChecked = _useState2[1];
63
+ var _useState = (0, _react.useState)("switch-".concat((0, _uuid.v4)())),
64
+ _useState2 = (0, _slicedToArray2["default"])(_useState, 1),
65
+ switchId = _useState2[0];
66
+
67
+ var labelId = "label-".concat(switchId);
68
+
69
+ var _useState3 = (0, _react.useState)(defaultChecked !== null && defaultChecked !== void 0 ? defaultChecked : false),
70
+ _useState4 = (0, _slicedToArray2["default"])(_useState3, 2),
71
+ innerChecked = _useState4[0],
72
+ setInnerChecked = _useState4[1];
64
73
 
65
74
  var colorsTheme = (0, _useTheme["default"])();
75
+ var translatedLabels = (0, _useTranslatedLabels["default"])();
66
76
  var backgroundType = (0, _react.useContext)(_BackgroundColorContext["default"]);
67
77
 
68
78
  var handlerSwitchChange = function handlerSwitchChange(event) {
@@ -75,6 +85,14 @@ var DxcSwitch = function DxcSwitch(_ref) {
75
85
  } else onChange === null || onChange === void 0 ? void 0 : onChange(!checked);
76
86
  };
77
87
 
88
+ var labelComponent = /*#__PURE__*/_react["default"].createElement(LabelContainer, {
89
+ id: labelId,
90
+ labelPosition: labelPosition,
91
+ onClick: !disabled && handlerSwitchChange,
92
+ disabled: disabled,
93
+ backgroundType: backgroundType
94
+ }, labelPosition === "before" ? /*#__PURE__*/_react["default"].createElement(_react["default"].Fragment, null, label, " ", optional && /*#__PURE__*/_react["default"].createElement("span", null, translatedLabels.formFields.optionalLabel)) : /*#__PURE__*/_react["default"].createElement(_react["default"].Fragment, null, optional && /*#__PURE__*/_react["default"].createElement("span", null, translatedLabels.formFields.optionalLabel), " ", label));
95
+
78
96
  return /*#__PURE__*/_react["default"].createElement(_styledComponents.ThemeProvider, {
79
97
  theme: colorsTheme["switch"]
80
98
  }, /*#__PURE__*/_react["default"].createElement(SwitchContainer, {
@@ -83,22 +101,20 @@ var DxcSwitch = function DxcSwitch(_ref) {
83
101
  labelPosition: labelPosition,
84
102
  size: size,
85
103
  backgroundType: backgroundType
86
- }, /*#__PURE__*/_react["default"].createElement(_core.Switch, {
104
+ }, labelPosition === "before" && labelComponent, /*#__PURE__*/_react["default"].createElement(_core.Switch, {
87
105
  checked: checked !== null && checked !== void 0 ? checked : innerChecked,
88
106
  inputProps: {
89
107
  name: name,
108
+ "aria-labelledby": labelId,
109
+ role: "switch",
110
+ "aria-checked": checked !== null && checked !== void 0 ? checked : innerChecked,
90
111
  tabIndex: tabIndex
91
112
  },
92
113
  onChange: handlerSwitchChange,
93
114
  value: value,
94
115
  disabled: disabled,
95
116
  disableRipple: true
96
- }), /*#__PURE__*/_react["default"].createElement(LabelContainer, {
97
- labelPosition: labelPosition,
98
- onClick: !disabled && handlerSwitchChange,
99
- disabled: disabled,
100
- backgroundType: backgroundType
101
- }, required && /*#__PURE__*/_react["default"].createElement(_RequiredComponent["default"], null), label)));
117
+ }), labelPosition === "after" && labelComponent));
102
118
  };
103
119
 
104
120
  var sizes = {
@@ -113,10 +129,8 @@ var calculateWidth = function calculateWidth(margin, size) {
113
129
  return size === "fillParent" ? "calc(".concat(sizes[size], " - ").concat((0, _utils.getMargin)(margin, "left"), " - ").concat((0, _utils.getMargin)(margin, "right"), ")") : sizes[size];
114
130
  };
115
131
 
116
- var SwitchContainer = _styledComponents["default"].div(_templateObject || (_templateObject = (0, _taggedTemplateLiteral2["default"])(["\n width: ", ";\n display: inline-flex;\n align-items: center;\n flex-direction: ", ";\n \n\n margin: ", ";\n margin-top: ", ";\n margin-right: ", ";\n margin-bottom: ", ";\n margin-left: ", ";\n cursor: ", ";\n\n .MuiSwitch-root {\n align-items: center;\n width: ", ";\n height: 45px;\n margin: 3px;\n\n .Mui-focusVisible {\n outline: ", ";\n outline-offset: -3px;\n }\n\n .MuiSwitch-track {\n /*Enabled and unchecked bar*/\n background-color: ", ";\n height: ", ";\n }\n\n .MuiSwitch-switchBase + .MuiSwitch-track {\n opacity: 1;\n }\n\n .MuiIconButton-root {\n /*Enabled and unchecked*/\n top: unset;\n .MuiSwitch-thumb {\n /*Only for thumb in all states*/\n width: ", ";\n height: ", ";\n }\n color: ", ";\n &:hover {\n background-color: transparent;\n }\n &.Mui-disabled {\n /*Disabled and unchecked*/\n color: ", ";\n + .MuiSwitch-track {\n /*Disabled and unchecked bar*/\n background-color: ", ";\n }\n }\n &.Mui-disabled.Mui-checked {\n /*Disabled and checked*/\n color: ", ";\n + .MuiSwitch-track {\n /*Disabled and checked bar*/\n background-color: ", ";\n }\n }\n &.Mui-checked {\n /*Enabled and checked*/\n color: ", ";\n transform: translateX(", ");\n &:hover {\n background-color: transparent;\n }\n + .MuiSwitch-track {\n /*Enabled and checked bar*/\n background-color: ", ";\n }\n }\n }\n }\n"])), function (props) {
132
+ var SwitchContainer = _styledComponents["default"].div(_templateObject || (_templateObject = (0, _taggedTemplateLiteral2["default"])(["\n width: ", ";\n display: inline-flex;\n align-items: center;\n\n margin: ", ";\n margin-top: ", ";\n margin-right: ", ";\n margin-bottom: ", ";\n margin-left: ", ";\n cursor: ", ";\n\n .MuiSwitch-root {\n align-items: center;\n width: ", ";\n height: 45px;\n margin: 3px;\n\n .Mui-focusVisible {\n outline: ", ";\n outline-offset: -3px;\n }\n\n .MuiSwitch-track {\n /*Enabled and unchecked bar*/\n background-color: ", ";\n height: ", ";\n }\n\n .MuiSwitch-switchBase + .MuiSwitch-track {\n opacity: 1;\n }\n\n .MuiIconButton-root {\n /*Enabled and unchecked*/\n top: unset;\n .MuiSwitch-thumb {\n /*Only for thumb in all states*/\n width: ", ";\n height: ", ";\n }\n color: ", ";\n &:hover {\n background-color: transparent;\n }\n &.Mui-disabled {\n /*Disabled and unchecked*/\n color: ", ";\n + .MuiSwitch-track {\n /*Disabled and unchecked bar*/\n background-color: ", ";\n }\n }\n &.Mui-disabled.Mui-checked {\n /*Disabled and checked*/\n color: ", ";\n + .MuiSwitch-track {\n /*Disabled and checked bar*/\n background-color: ", ";\n }\n }\n &.Mui-checked {\n /*Enabled and checked*/\n color: ", ";\n transform: translateX(", ");\n &:hover {\n background-color: transparent;\n }\n + .MuiSwitch-track {\n /*Enabled and checked bar*/\n background-color: ", ";\n }\n }\n }\n }\n"])), function (props) {
117
133
  return calculateWidth(props.margin, props.size);
118
- }, function (props) {
119
- return props.labelPosition === "after" ? "row" : "row-reverse";
120
134
  }, function (props) {
121
135
  return props.margin && (0, _typeof2["default"])(props.margin) !== "object" ? _variables.spaces[props.margin] : "0px";
122
136
  }, function (props) {
@@ -159,7 +173,7 @@ var SwitchContainer = _styledComponents["default"].div(_templateObject || (_temp
159
173
  return props.backgroundType === "dark" ? props.theme.checkedTrackBackgroundColorOnDark : props.theme.checkedTrackBackgroundColor;
160
174
  });
161
175
 
162
- var LabelContainer = _styledComponents["default"].span(_templateObject2 || (_templateObject2 = (0, _taggedTemplateLiteral2["default"])(["\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n color: ", ";\n opacity: 1;\n font-family: ", ";\n font-size: ", ";\n font-style: ", ";\n font-weight: ", ";\n cursor: ", ";\n ", "\n"])), function (props) {
176
+ var LabelContainer = _styledComponents["default"].span(_templateObject2 || (_templateObject2 = (0, _taggedTemplateLiteral2["default"])(["\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n color: ", ";\n opacity: 1;\n font-family: ", ";\n font-size: ", ";\n font-style: ", ";\n font-weight: ", ";\n cursor: ", ";\n ", "\n\n ", "\n"])), function (props) {
163
177
  return props.disabled ? props.backgroundType === "dark" ? props.theme.disabledLabelFontColorOnDark : props.theme.disabledLabelFontColor : props.backgroundType === "dark" ? props.theme.labelFontColorOnDark : props.theme.labelFontColor;
164
178
  }, function (props) {
165
179
  return props.theme.labelFontFamily;
@@ -173,6 +187,8 @@ var LabelContainer = _styledComponents["default"].span(_templateObject2 || (_tem
173
187
  return props.disabled === true ? "not-allowed" : "pointer";
174
188
  }, function (props) {
175
189
  return props.labelPosition === "after" ? "margin-left: ".concat(props.theme.spaceBetweenLabelSwitch, ";") : "margin-right: ".concat(props.theme.spaceBetweenLabelSwitch, ";");
190
+ }, function (props) {
191
+ return props.labelPosition === "before" && "order: -1";
176
192
  });
177
193
 
178
194
  var _default = DxcSwitch;
@@ -23,23 +23,23 @@ export const Chromatic = () => (
23
23
  </ExampleContainer>
24
24
  <ExampleContainer>
25
25
  <Title title="Checked" theme="light" level={4} />
26
- <DxcSwitch label="Switch" checked />
26
+ <DxcSwitch label="Switch" defaultChecked />
27
27
  </ExampleContainer>
28
28
  <ExampleContainer>
29
- <Title title="Required" theme="light" level={4} />
30
- <DxcSwitch label="Switch" required />
29
+ <Title title="Optional" theme="light" level={4} />
30
+ <DxcSwitch label="Switch" optional />
31
31
  </ExampleContainer>
32
32
  <ExampleContainer>
33
33
  <Title title="Disabled" theme="light" level={4} />
34
34
  <DxcSwitch label="Switch" disabled />
35
35
  </ExampleContainer>
36
36
  <ExampleContainer>
37
- <Title title="Disabled required" theme="light" level={4} />
38
- <DxcSwitch label="Switch" disabled required labelPosition="after" />
37
+ <Title title="Disabled optional" theme="light" level={4} />
38
+ <DxcSwitch label="Switch" disabled optional labelPosition="after" />
39
39
  </ExampleContainer>
40
40
  <ExampleContainer>
41
41
  <Title title="Disabled checked" theme="light" level={4} />
42
- <DxcSwitch label="Switch" disabled checked labelPosition="after" />
42
+ <DxcSwitch label="Switch" disabled defaultChecked labelPosition="after" />
43
43
  </ExampleContainer>
44
44
  <BackgroundColorProvider color="#333333">
45
45
  <DarkContainer>
@@ -49,30 +49,30 @@ export const Chromatic = () => (
49
49
  </ExampleContainer>
50
50
  <ExampleContainer>
51
51
  <Title title="Checked" theme="dark" level={4} />
52
- <DxcSwitch label="Switch" checked />
52
+ <DxcSwitch label="Switch" defaultChecked />
53
53
  </ExampleContainer>
54
54
  <ExampleContainer>
55
- <Title title="Required" theme="dark" level={4} />
56
- <DxcSwitch label="Switch" required />
55
+ <Title title="Optional" theme="dark" level={4} />
56
+ <DxcSwitch label="Switch" optional />
57
57
  </ExampleContainer>
58
58
  <ExampleContainer>
59
59
  <Title title="Disabled" theme="dark" level={4} />
60
60
  <DxcSwitch label="Switch" disabled />
61
61
  </ExampleContainer>
62
62
  <ExampleContainer>
63
- <Title title="Disabled required" theme="dark" level={4} />
64
- <DxcSwitch label="Switch" disabled required labelPosition="after" />
63
+ <Title title="Disabled optional" theme="dark" level={4} />
64
+ <DxcSwitch label="Switch" disabled optional labelPosition="after" />
65
65
  </ExampleContainer>
66
66
  <ExampleContainer>
67
67
  <Title title="Disabled checked" theme="dark" level={4} />
68
- <DxcSwitch label="Switch" disabled checked labelPosition="after" />
68
+ <DxcSwitch label="Switch" disabled defaultChecked labelPosition="after" />
69
69
  </ExampleContainer>
70
70
  </DarkContainer>
71
71
  </BackgroundColorProvider>
72
72
  <Title title="Margins" theme="light" level={2} />
73
73
  <ExampleContainer>
74
74
  <Title title="Xxsmall margin" theme="light" level={4} />
75
- <DxcSwitch label="Xxsmmall" margin="xxsmall" />
75
+ <DxcSwitch label="Xxsmall" margin="xxsmall" />
76
76
  </ExampleContainer>
77
77
  <ExampleContainer>
78
78
  <Title title="Xsmall margin" theme="light" level={4} />
@@ -139,7 +139,7 @@ const Switch = () => (
139
139
  export const FocusedSwitch = Switch.bind({});
140
140
  FocusedSwitch.play = async ({ canvasElement }) => {
141
141
  const canvas = within(canvasElement);
142
- canvas.getByRole("checkbox").focus();
142
+ canvas.getByRole("switch").focus();
143
143
  };
144
144
 
145
145
  const DarkSwitch = () => (
@@ -156,5 +156,5 @@ const DarkSwitch = () => (
156
156
  export const FocusedSwitchOnDark = DarkSwitch.bind({});
157
157
  FocusedSwitchOnDark.play = async ({ canvasElement }) => {
158
158
  const canvas = within(canvasElement);
159
- canvas.getByRole("checkbox").focus();
159
+ canvas.getByRole("switch").focus();
160
160
  };