@dxc-technology/halstack-react 0.0.0-df9dd3c → 0.0.0-dfb16f5

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 (269) hide show
  1. package/HalstackContext.d.ts +12 -0
  2. package/HalstackContext.js +295 -0
  3. package/accordion/Accordion.d.ts +1 -1
  4. package/accordion/Accordion.js +122 -135
  5. package/accordion/Accordion.stories.tsx +20 -14
  6. package/accordion/Accordion.test.js +71 -0
  7. package/accordion/types.d.ts +11 -10
  8. package/accordion-group/AccordionGroup.d.ts +1 -1
  9. package/accordion-group/AccordionGroup.js +15 -36
  10. package/accordion-group/AccordionGroup.stories.tsx +28 -2
  11. package/accordion-group/AccordionGroup.test.js +126 -0
  12. package/accordion-group/types.d.ts +16 -9
  13. package/alert/Alert.js +5 -2
  14. package/alert/Alert.test.js +92 -0
  15. package/badge/Badge.d.ts +4 -0
  16. package/badge/Badge.js +5 -3
  17. package/badge/types.d.ts +5 -0
  18. package/{radio → badge}/types.js +0 -0
  19. package/bleed/Bleed.d.ts +3 -0
  20. package/bleed/Bleed.js +51 -0
  21. package/bleed/Bleed.stories.tsx +341 -0
  22. package/bleed/types.d.ts +37 -0
  23. package/bleed/types.js +5 -0
  24. package/box/Box.js +23 -33
  25. package/box/Box.test.js +18 -0
  26. package/box/types.d.ts +1 -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 +57 -80
  34. package/button/Button.stories.tsx +15 -8
  35. package/button/Button.test.js +35 -0
  36. package/button/types.d.ts +8 -12
  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/card/types.d.ts +1 -0
  41. package/checkbox/Checkbox.d.ts +2 -2
  42. package/checkbox/Checkbox.js +106 -109
  43. package/checkbox/Checkbox.stories.tsx +146 -130
  44. package/checkbox/Checkbox.test.js +155 -0
  45. package/checkbox/types.d.ts +13 -5
  46. package/chip/Chip.d.ts +1 -1
  47. package/chip/Chip.js +14 -52
  48. package/chip/Chip.stories.tsx +6 -8
  49. package/chip/Chip.test.js +56 -0
  50. package/chip/types.d.ts +5 -13
  51. package/common/variables.js +250 -346
  52. package/date-input/DateInput.js +62 -48
  53. package/date-input/DateInput.stories.tsx +7 -7
  54. package/date-input/DateInput.test.js +479 -0
  55. package/date-input/types.d.ts +16 -9
  56. package/dialog/Dialog.js +46 -50
  57. package/dialog/Dialog.stories.tsx +57 -2
  58. package/dialog/Dialog.test.js +70 -0
  59. package/dialog/types.d.ts +3 -2
  60. package/dropdown/Dropdown.d.ts +1 -1
  61. package/dropdown/Dropdown.js +247 -273
  62. package/dropdown/Dropdown.stories.tsx +144 -79
  63. package/dropdown/Dropdown.test.js +585 -0
  64. package/dropdown/DropdownMenu.d.ts +4 -0
  65. package/dropdown/DropdownMenu.js +80 -0
  66. package/dropdown/DropdownMenuItem.d.ts +4 -0
  67. package/dropdown/DropdownMenuItem.js +92 -0
  68. package/dropdown/types.d.ts +29 -18
  69. package/file-input/FileInput.d.ts +2 -2
  70. package/file-input/FileInput.js +179 -220
  71. package/file-input/FileInput.stories.tsx +39 -10
  72. package/file-input/FileInput.test.js +498 -0
  73. package/file-input/FileItem.d.ts +4 -14
  74. package/file-input/FileItem.js +43 -66
  75. package/file-input/types.d.ts +17 -0
  76. package/flex/Flex.d.ts +4 -0
  77. package/flex/Flex.js +69 -0
  78. package/flex/Flex.stories.tsx +103 -0
  79. package/flex/types.d.ts +32 -0
  80. package/flex/types.js +5 -0
  81. package/footer/Footer.js +24 -99
  82. package/footer/Footer.stories.tsx +8 -1
  83. package/footer/Footer.test.js +109 -0
  84. package/footer/Icons.js +1 -1
  85. package/footer/types.d.ts +2 -1
  86. package/header/Header.js +95 -114
  87. package/header/Header.stories.tsx +46 -36
  88. package/header/Header.test.js +79 -0
  89. package/header/Icons.js +2 -2
  90. package/header/types.d.ts +3 -2
  91. package/heading/Heading.stories.tsx +3 -2
  92. package/heading/Heading.test.js +186 -0
  93. package/inset/Inset.d.ts +3 -0
  94. package/inset/Inset.js +51 -0
  95. package/inset/Inset.stories.tsx +229 -0
  96. package/inset/types.d.ts +37 -0
  97. package/inset/types.js +5 -0
  98. package/layout/ApplicationLayout.d.ts +16 -6
  99. package/layout/ApplicationLayout.js +71 -125
  100. package/layout/ApplicationLayout.stories.tsx +84 -93
  101. package/layout/Icons.d.ts +5 -0
  102. package/layout/Icons.js +13 -2
  103. package/layout/SidenavContext.d.ts +5 -0
  104. package/layout/SidenavContext.js +19 -0
  105. package/layout/types.d.ts +18 -33
  106. package/link/Link.d.ts +3 -2
  107. package/link/Link.js +60 -85
  108. package/link/Link.stories.tsx +99 -52
  109. package/link/Link.test.js +83 -0
  110. package/link/types.d.ts +9 -29
  111. package/main.d.ts +11 -15
  112. package/main.js +53 -79
  113. package/number-input/NumberInput.js +11 -18
  114. package/number-input/NumberInput.stories.tsx +5 -5
  115. package/number-input/NumberInput.test.js +543 -0
  116. package/number-input/types.d.ts +17 -10
  117. package/package.json +14 -12
  118. package/paginator/Paginator.js +17 -38
  119. package/paginator/Paginator.test.js +308 -0
  120. package/paragraph/Paragraph.d.ts +6 -0
  121. package/paragraph/Paragraph.js +38 -0
  122. package/paragraph/Paragraph.stories.tsx +44 -0
  123. package/password-input/PasswordInput.js +7 -4
  124. package/password-input/PasswordInput.stories.tsx +3 -3
  125. package/password-input/PasswordInput.test.js +181 -0
  126. package/password-input/types.d.ts +14 -11
  127. package/progress-bar/ProgressBar.d.ts +2 -2
  128. package/progress-bar/ProgressBar.js +57 -51
  129. package/progress-bar/ProgressBar.stories.jsx +13 -11
  130. package/progress-bar/ProgressBar.test.js +110 -0
  131. package/progress-bar/types.d.ts +3 -4
  132. package/quick-nav/QuickNav.d.ts +4 -0
  133. package/quick-nav/QuickNav.js +117 -0
  134. package/quick-nav/QuickNav.stories.tsx +342 -0
  135. package/quick-nav/types.d.ts +21 -0
  136. package/quick-nav/types.js +5 -0
  137. package/radio-group/Radio.d.ts +1 -1
  138. package/radio-group/Radio.js +79 -32
  139. package/radio-group/RadioGroup.js +153 -36
  140. package/radio-group/RadioGroup.stories.tsx +64 -19
  141. package/radio-group/RadioGroup.test.js +722 -0
  142. package/radio-group/types.d.ts +90 -13
  143. package/resultsetTable/ResultsetTable.js +6 -5
  144. package/resultsetTable/ResultsetTable.stories.tsx +7 -8
  145. package/resultsetTable/ResultsetTable.test.js +348 -0
  146. package/select/Icons.d.ts +10 -0
  147. package/select/Icons.js +93 -0
  148. package/select/Listbox.d.ts +4 -0
  149. package/select/Listbox.js +198 -0
  150. package/select/Option.d.ts +4 -0
  151. package/select/Option.js +110 -0
  152. package/select/Select.js +147 -365
  153. package/select/Select.stories.tsx +231 -176
  154. package/select/Select.test.js +2233 -0
  155. package/select/types.d.ts +52 -12
  156. package/sidenav/Sidenav.d.ts +6 -5
  157. package/sidenav/Sidenav.js +184 -52
  158. package/sidenav/Sidenav.stories.tsx +154 -139
  159. package/sidenav/Sidenav.test.js +44 -0
  160. package/sidenav/types.d.ts +50 -27
  161. package/slider/Slider.d.ts +2 -2
  162. package/slider/Slider.js +122 -96
  163. package/slider/Slider.stories.tsx +15 -9
  164. package/slider/Slider.test.js +250 -0
  165. package/slider/types.d.ts +10 -2
  166. package/spinner/Spinner.js +1 -1
  167. package/spinner/Spinner.stories.jsx +1 -0
  168. package/spinner/Spinner.test.js +64 -0
  169. package/switch/Switch.d.ts +2 -2
  170. package/switch/Switch.js +150 -67
  171. package/switch/Switch.stories.tsx +21 -43
  172. package/switch/Switch.test.js +225 -0
  173. package/switch/types.d.ts +12 -4
  174. package/table/Table.js +1 -1
  175. package/table/Table.stories.jsx +2 -1
  176. package/table/Table.test.js +26 -0
  177. package/tabs/Tab.d.ts +4 -0
  178. package/tabs/Tab.js +135 -0
  179. package/tabs/Tabs.d.ts +1 -1
  180. package/tabs/Tabs.js +364 -110
  181. package/tabs/Tabs.stories.tsx +81 -16
  182. package/tabs/Tabs.test.js +351 -0
  183. package/tabs/types.d.ts +39 -17
  184. package/tabs-nav/NavTabs.d.ts +8 -0
  185. package/tabs-nav/NavTabs.js +125 -0
  186. package/tabs-nav/NavTabs.stories.tsx +170 -0
  187. package/tabs-nav/NavTabs.test.js +82 -0
  188. package/tabs-nav/Tab.d.ts +4 -0
  189. package/tabs-nav/Tab.js +130 -0
  190. package/tabs-nav/types.d.ts +53 -0
  191. package/tabs-nav/types.js +5 -0
  192. package/tag/Tag.d.ts +1 -1
  193. package/tag/Tag.js +18 -28
  194. package/tag/Tag.stories.tsx +26 -29
  195. package/tag/Tag.test.js +60 -0
  196. package/tag/types.d.ts +23 -14
  197. package/text-input/Icons.d.ts +8 -0
  198. package/text-input/Icons.js +60 -0
  199. package/text-input/Suggestion.d.ts +4 -0
  200. package/text-input/Suggestion.js +57 -0
  201. package/text-input/Suggestions.d.ts +4 -0
  202. package/text-input/Suggestions.js +134 -0
  203. package/text-input/TextInput.js +213 -322
  204. package/text-input/TextInput.stories.tsx +218 -193
  205. package/text-input/TextInput.test.js +1771 -0
  206. package/text-input/types.d.ts +51 -13
  207. package/textarea/Textarea.js +20 -27
  208. package/textarea/Textarea.stories.jsx +37 -15
  209. package/textarea/Textarea.test.js +437 -0
  210. package/textarea/types.d.ts +18 -11
  211. package/toggle-group/ToggleGroup.d.ts +1 -1
  212. package/toggle-group/ToggleGroup.js +5 -4
  213. package/toggle-group/ToggleGroup.stories.tsx +4 -4
  214. package/toggle-group/ToggleGroup.test.js +156 -0
  215. package/toggle-group/types.d.ts +9 -1
  216. package/typography/Typography.d.ts +4 -0
  217. package/typography/Typography.js +131 -0
  218. package/typography/Typography.stories.tsx +198 -0
  219. package/typography/types.d.ts +18 -0
  220. package/typography/types.js +5 -0
  221. package/useTheme.js +2 -2
  222. package/useTranslatedLabels.d.ts +2 -0
  223. package/useTranslatedLabels.js +20 -0
  224. package/wizard/Wizard.d.ts +1 -1
  225. package/wizard/Wizard.js +58 -54
  226. package/wizard/Wizard.stories.tsx +33 -24
  227. package/wizard/Wizard.test.js +141 -0
  228. package/wizard/types.d.ts +10 -5
  229. package/ThemeContext.d.ts +0 -15
  230. package/ThemeContext.js +0 -243
  231. package/V3Select/V3Select.js +0 -455
  232. package/V3Select/index.d.ts +0 -27
  233. package/V3Textarea/V3Textarea.js +0 -260
  234. package/V3Textarea/index.d.ts +0 -27
  235. package/date/Date.js +0 -373
  236. package/date/index.d.ts +0 -27
  237. package/input-text/Icons.js +0 -22
  238. package/input-text/InputText.js +0 -611
  239. package/input-text/index.d.ts +0 -36
  240. package/list/List.d.ts +0 -8
  241. package/list/List.js +0 -47
  242. package/list/List.stories.tsx +0 -85
  243. package/radio/Radio.d.ts +0 -4
  244. package/radio/Radio.js +0 -174
  245. package/radio/Radio.stories.tsx +0 -192
  246. package/radio/types.d.ts +0 -54
  247. package/row/Row.d.ts +0 -11
  248. package/row/Row.js +0 -124
  249. package/row/Row.stories.tsx +0 -223
  250. package/stack/Stack.d.ts +0 -10
  251. package/stack/Stack.js +0 -94
  252. package/stack/Stack.stories.tsx +0 -150
  253. package/text/Text.d.ts +0 -7
  254. package/text/Text.js +0 -30
  255. package/text/Text.stories.tsx +0 -19
  256. package/toggle/Toggle.js +0 -186
  257. package/toggle/index.d.ts +0 -21
  258. package/upload/Upload.js +0 -201
  259. package/upload/buttons-upload/ButtonsUpload.js +0 -111
  260. package/upload/buttons-upload/Icons.js +0 -40
  261. package/upload/dragAndDropArea/DragAndDropArea.js +0 -225
  262. package/upload/dragAndDropArea/Icons.js +0 -39
  263. package/upload/file-upload/FileToUpload.js +0 -115
  264. package/upload/file-upload/Icons.js +0 -66
  265. package/upload/files-upload/FilesToUpload.js +0 -109
  266. package/upload/index.d.ts +0 -15
  267. package/upload/transaction/Icons.js +0 -160
  268. package/upload/transaction/Transaction.js +0 -104
  269. package/upload/transactions/Transactions.js +0 -94
@@ -4,7 +4,7 @@ import { BackgroundColorProvider } from "../BackgroundColorContext";
4
4
  import Title from "../../.storybook/components/Title";
5
5
  import ExampleContainer from "../../.storybook/components/ExampleContainer";
6
6
  import DarkContainer from "../../.storybook/components/DarkSection";
7
- import { userEvent, within } from "@storybook/testing-library";
7
+ import styled from "styled-components";
8
8
 
9
9
  export default {
10
10
  title: "Checkbox",
@@ -13,128 +13,104 @@ export default {
13
13
 
14
14
  const Checkbox = () => (
15
15
  <>
16
- <>
17
- <ExampleContainer>
18
- <Title title="Default" theme="light" level={4} />
19
- <DxcCheckbox label="Checkbox" />
20
- </ExampleContainer>
21
- <ExampleContainer>
22
- <Title title="Focused" theme="light" level={4} />
23
- <DxcCheckbox label="Focused" />
24
- </ExampleContainer>
25
- <ExampleContainer>
26
- <Title title="Checked" theme="light" level={4} />
27
- <DxcCheckbox label="Checkbox" checked />
28
- </ExampleContainer>
29
- <ExampleContainer>
30
- <Title title="Required" theme="light" level={4} />
31
- <DxcCheckbox label="Checkbox" required />
32
- </ExampleContainer>
33
- <ExampleContainer>
34
- <Title title="Disabled and checked" theme="light" level={4} />
35
- <DxcCheckbox label="Checkbox" disabled checked />
36
- </ExampleContainer>
37
- <ExampleContainer>
38
- <Title title="Disabled and required" theme="light" level={4} />
39
- <DxcCheckbox label="Checkbox" disabled required />
40
- </ExampleContainer>
41
- <ExampleContainer>
42
- <Title title="Disabled, required and checked" theme="light" level={4} />
43
- <DxcCheckbox label="Checkbox" disabled required checked />
44
- </ExampleContainer>
45
- <ExampleContainer>
46
- <Title title="Label after" theme="light" level={4} />
47
- <DxcCheckbox label="Checkbox" labelPosition="after" />
48
- </ExampleContainer>
49
- <ExampleContainer>
50
- <Title title="Checked with label after" theme="light" level={4} />
51
- <DxcCheckbox label="Checkbox" checked labelPosition="after" />
52
- </ExampleContainer>
53
- <ExampleContainer>
54
- <Title title="Required with label after" theme="light" level={4} />
55
- <DxcCheckbox label="Checkbox" required labelPosition="after" />
56
- </ExampleContainer>
57
- <ExampleContainer>
58
- <Title title="Disabled and checked with label after" theme="light" level={4} />
59
- <DxcCheckbox label="Checkbox" disabled checked labelPosition="after" />
60
- </ExampleContainer>
61
- <ExampleContainer>
62
- <Title title="Disabled and required with label after" theme="light" level={4} />
63
- <DxcCheckbox label="Checkbox" disabled required labelPosition="after" />
64
- </ExampleContainer>
65
- <ExampleContainer>
66
- <Title title="Disabled, required and checked with label after" theme="light" level={4} />
67
- <DxcCheckbox label="Checkbox" disabled required checked labelPosition="after" />
68
- </ExampleContainer>
69
- <ExampleContainer pseudoState="pseudo-hover">
70
- <Title title="Hovered" theme="light" level={4} />
71
- <DxcCheckbox label="Hovered" />
72
- </ExampleContainer>
73
- <ExampleContainer pseudoState="pseudo-hover">
74
- <Title title="Hovered and checked" theme="light" level={4} />
75
- <DxcCheckbox label="Hovered" checked />
76
- </ExampleContainer>
77
- </>
16
+ <ExampleContainer>
17
+ <Title title="Default" theme="light" level={4} />
18
+ <DxcCheckbox label="Checkbox" />
19
+ </ExampleContainer>
20
+ <ExampleContainer>
21
+ <Title title="Checked" theme="light" level={4} />
22
+ <DxcCheckbox label="Checkbox" defaultChecked />
23
+ </ExampleContainer>
24
+ <ExampleContainer>
25
+ <Title title="Disabled" theme="light" level={4} />
26
+ <DxcCheckbox label="Checkbox" disabled />
27
+ </ExampleContainer>
28
+ <ExampleContainer>
29
+ <Title title="Disabled, checked and optional" theme="light" level={4} />
30
+ <DxcCheckbox label="Checkbox" disabled defaultChecked optional />
31
+ </ExampleContainer>
32
+ <ExampleContainer pseudoState="pseudo-focus">
33
+ <Title title="Focused" theme="light" level={4} />
34
+ <DxcCheckbox label="Focused" />
35
+ </ExampleContainer>
36
+ <ExampleContainer pseudoState="pseudo-hover">
37
+ <Title title="Hovered" theme="light" level={4} />
38
+ <DxcCheckbox label="Hovered" />
39
+ </ExampleContainer>
40
+ <ExampleContainer pseudoState="pseudo-hover">
41
+ <Title title="Hovered and checked" theme="light" level={4} />
42
+ <DxcCheckbox label="Hovered" defaultChecked />
43
+ </ExampleContainer>
44
+ <ExampleContainer>
45
+ <Title title="Optional" theme="light" level={4} />
46
+ <DxcCheckbox label="Checkbox" optional />
47
+ </ExampleContainer>
48
+ <ExampleContainer>
49
+ <Title title="Label after" theme="light" level={4} />
50
+ <DxcCheckbox label="Checkbox" labelPosition="after" />
51
+ </ExampleContainer>
52
+ <ExampleContainer>
53
+ <Title title="Checked with label after" theme="light" level={4} />
54
+ <DxcCheckbox label="Checkbox" defaultChecked labelPosition="after" />
55
+ </ExampleContainer>
56
+ <ExampleContainer>
57
+ <Title title="Optional with label after" theme="light" level={4} />
58
+ <DxcCheckbox label="Checkbox" optional labelPosition="after" />
59
+ </ExampleContainer>
60
+ <ExampleContainer>
61
+ <Title title="Disabled and optional with label after" theme="light" level={4} />
62
+ <DxcCheckbox label="Checkbox" disabled labelPosition="after" optional />
63
+ </ExampleContainer>
78
64
  <BackgroundColorProvider color="#333333">
79
65
  <DarkContainer>
80
- <>
81
- <ExampleContainer>
82
- <Title title="Default" theme="dark" level={4} />
83
- <DxcCheckbox label="Checkbox" />
84
- </ExampleContainer>
85
- <ExampleContainer>
86
- <Title title="Checked" theme="dark" level={4} />
87
- <DxcCheckbox label="Checkbox" checked />
88
- </ExampleContainer>
89
- <ExampleContainer>
90
- <Title title="Required" theme="dark" level={4} />
91
- <DxcCheckbox label="Checkbox" required />
92
- </ExampleContainer>
93
- <ExampleContainer>
94
- <Title title="Disabled and checked" theme="dark" level={4} />
95
- <DxcCheckbox label="Checkbox" disabled checked />
96
- </ExampleContainer>
97
- <ExampleContainer>
98
- <Title title="Disabled and required" theme="dark" level={4} />
99
- <DxcCheckbox label="Checkbox" disabled required />
100
- </ExampleContainer>
101
- <ExampleContainer>
102
- <Title title="Disabled, required and checked" theme="dark" level={4} />
103
- <DxcCheckbox label="Checkbox" disabled required checked />
104
- </ExampleContainer>
105
- <ExampleContainer>
106
- <Title title="Label after" theme="dark" level={4} />
107
- <DxcCheckbox label="Checkbox" labelPosition="after" />
108
- </ExampleContainer>
109
- <ExampleContainer>
110
- <Title title="Checked with label after" theme="dark" level={4} />
111
- <DxcCheckbox label="Checkbox" checked labelPosition="after" />
112
- </ExampleContainer>
113
- <ExampleContainer>
114
- <Title title="Required with label after" theme="dark" level={4} />
115
- <DxcCheckbox label="Checkbox" required labelPosition="after" />
116
- </ExampleContainer>
117
- <ExampleContainer>
118
- <Title title="Disabled and checked with label after" theme="dark" level={4} />
119
- <DxcCheckbox label="Checkbox" disabled checked labelPosition="after" />
120
- </ExampleContainer>
121
- <ExampleContainer>
122
- <Title title="Disabled and required with label after" theme="dark" level={4} />
123
- <DxcCheckbox label="Checkbox" disabled required labelPosition="after" />
124
- </ExampleContainer>
125
- <ExampleContainer>
126
- <Title title="Disabled, required and checked with label after" theme="dark" level={4} />
127
- <DxcCheckbox label="Checkbox" disabled required checked labelPosition="after" />
128
- </ExampleContainer>
129
- <ExampleContainer pseudoState="pseudo-hover">
130
- <Title title="Hovered" theme="dark" level={4} />
131
- <DxcCheckbox label="Hovered" />
132
- </ExampleContainer>
133
- <ExampleContainer pseudoState="pseudo-hover">
134
- <Title title="Hovered and checked" theme="dark" level={4} />
135
- <DxcCheckbox label="Hovered" checked />
136
- </ExampleContainer>
137
- </>
66
+ <ExampleContainer>
67
+ <Title title="Default" theme="dark" level={4} />
68
+ <DxcCheckbox label="Checkbox" />
69
+ </ExampleContainer>
70
+ <ExampleContainer>
71
+ <Title title="Checked" theme="dark" level={4} />
72
+ <DxcCheckbox label="Checkbox" defaultChecked />
73
+ </ExampleContainer>
74
+ <ExampleContainer>
75
+ <Title title="Disabled" theme="dark" level={4} />
76
+ <DxcCheckbox label="Checkbox" disabled />
77
+ </ExampleContainer>
78
+ <ExampleContainer>
79
+ <Title title="Disabled, checked and optional" theme="dark" level={4} />
80
+ <DxcCheckbox label="Checkbox" disabled defaultChecked optional />
81
+ </ExampleContainer>
82
+ <ExampleContainer pseudoState="pseudo-focus">
83
+ <Title title="Focused" theme="dark" level={4} />
84
+ <DxcCheckbox label="Focused" />
85
+ </ExampleContainer>
86
+ <ExampleContainer pseudoState="pseudo-hover">
87
+ <Title title="Hovered" theme="dark" level={4} />
88
+ <DxcCheckbox label="Hovered" />
89
+ </ExampleContainer>
90
+ <ExampleContainer pseudoState="pseudo-hover">
91
+ <Title title="Hovered and checked" theme="dark" level={4} />
92
+ <DxcCheckbox label="Hovered" defaultChecked />
93
+ </ExampleContainer>
94
+ <ExampleContainer>
95
+ <Title title="Optional" theme="dark" level={4} />
96
+ <DxcCheckbox label="Checkbox" optional />
97
+ </ExampleContainer>
98
+ <ExampleContainer>
99
+ <Title title="Label after" theme="dark" level={4} />
100
+ <DxcCheckbox label="Checkbox" labelPosition="after" />
101
+ </ExampleContainer>
102
+ <ExampleContainer>
103
+ <Title title="Checked with label after" theme="dark" level={4} />
104
+ <DxcCheckbox label="Checkbox" defaultChecked labelPosition="after" />
105
+ </ExampleContainer>
106
+ <ExampleContainer>
107
+ <Title title="Optional with label after" theme="dark" level={4} />
108
+ <DxcCheckbox label="Checkbox" optional labelPosition="after" />
109
+ </ExampleContainer>
110
+ <ExampleContainer>
111
+ <Title title="Disabled and optional with label after" theme="dark" level={4} />
112
+ <DxcCheckbox label="Checkbox" disabled labelPosition="after" optional />
113
+ </ExampleContainer>
138
114
  </DarkContainer>
139
115
  </BackgroundColorProvider>
140
116
  <Title title="Sizes" theme="light" level={2} />
@@ -156,37 +132,77 @@ const Checkbox = () => (
156
132
  <Title title="Margins" theme="light" level={2} />
157
133
  <ExampleContainer>
158
134
  <Title title="Xxsmall" theme="light" level={4} />
159
- <DxcCheckbox label="Xxsmall" margin={"xxsmall"} />
135
+ <DxcCheckbox label="Xxsmall" margin="xxsmall" />
160
136
  </ExampleContainer>
161
137
  <ExampleContainer>
162
138
  <Title title="Xsmall" theme="light" level={4} />
163
- <DxcCheckbox label="Xsmall" margin={"xsmall"} />
139
+ <DxcCheckbox label="Xsmall" margin="xsmall" />
164
140
  </ExampleContainer>
165
141
  <ExampleContainer>
166
142
  <Title title="Small" theme="light" level={4} />
167
- <DxcCheckbox label="Small" margin={"small"} />
143
+ <DxcCheckbox label="Small" margin="small" />
168
144
  </ExampleContainer>
169
145
  <ExampleContainer>
170
146
  <Title title="Medium" theme="light" level={4} />
171
- <DxcCheckbox label="Medium" margin={"medium"} />
147
+ <DxcCheckbox label="Medium" margin="medium" />
172
148
  </ExampleContainer>
173
149
  <ExampleContainer>
174
150
  <Title title="Large" theme="light" level={4} />
175
- <DxcCheckbox label="Large" margin={"large"} />
151
+ <DxcCheckbox label="Large" margin="large" />
176
152
  </ExampleContainer>
177
153
  <ExampleContainer>
178
154
  <Title title="Xlarge" theme="light" level={4} />
179
- <DxcCheckbox label="Xlarge" margin={"xlarge"} />
155
+ <DxcCheckbox label="Xlarge" margin="xlarge" />
180
156
  </ExampleContainer>
181
157
  <ExampleContainer>
182
158
  <Title title="Xxlarge" theme="light" level={4} />
183
- <DxcCheckbox label="Xxlarge" margin={"xxlarge"} />
159
+ <DxcCheckbox label="Xxlarge" margin="xxlarge" />
160
+ </ExampleContainer>
161
+ <ExampleContainer>
162
+ <Title title="Overflow container" theme="light" level={4} />
163
+ <ScrollableContainer id="scroll-container">
164
+ <DxcCheckbox label="Checkbox" defaultChecked />
165
+ <DxcCheckbox label="Checkbox" defaultChecked />
166
+ <DxcCheckbox label="Checkbox" />
167
+ <DxcCheckbox label="Checkbox" defaultChecked />
168
+ <DxcCheckbox label="Checkbox" />
169
+ <DxcCheckbox label="Checkbox" />
170
+ <DxcCheckbox label="Checkbox" />
171
+ <DxcCheckbox label="Checkbox" defaultChecked />
172
+ </ScrollableContainer>
173
+ </ExampleContainer>
174
+ <ExampleContainer>
175
+ <Title title="Label overflow" theme="light" level={4} />
176
+ <SmallContainer>
177
+ <DxcCheckbox label="Very long label to check its overflowing" defaultChecked />
178
+ <DxcCheckbox label="Very long label to check its overflowing" labelPosition="after" />
179
+ </SmallContainer>
184
180
  </ExampleContainer>
185
181
  </>
186
182
  );
187
183
 
188
184
  export const Chromatic = Checkbox.bind({});
185
+
189
186
  Chromatic.play = async () => {
190
- await userEvent.tab();
191
- await userEvent.tab();
187
+ const listEl = document.getElementById("scroll-container");
188
+ listEl?.scrollTo?.({ top: 50 });
192
189
  };
190
+
191
+ const ScrollableContainer = styled.div`
192
+ display: flex;
193
+ flex-direction: column;
194
+ gap: 14px;
195
+ width: 200px;
196
+ height: 200px;
197
+ border: 1px solid #000;
198
+ padding: 14px;
199
+ overflow: auto;
200
+ `;
201
+
202
+ const SmallContainer = styled.div`
203
+ display: flex;
204
+ flex-direction: column;
205
+ gap: 14px;
206
+ width: 150px;
207
+ height: 150px;
208
+ `;
@@ -0,0 +1,155 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+
5
+ var _react = _interopRequireDefault(require("react"));
6
+
7
+ var _react2 = require("@testing-library/react");
8
+
9
+ var _userEvent = _interopRequireDefault(require("@testing-library/user-event"));
10
+
11
+ var _Checkbox = _interopRequireDefault(require("./Checkbox"));
12
+
13
+ describe("Checkbox component tests", function () {
14
+ test("Checkbox renders with correct aria-labelledby and aria-required", function () {
15
+ var _render = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_Checkbox["default"], {
16
+ label: "Checkbox"
17
+ })),
18
+ getByText = _render.getByText,
19
+ getByRole = _render.getByRole;
20
+
21
+ var labelId = getByText("Checkbox").getAttribute("id");
22
+ expect(getByRole("checkbox").getAttribute("aria-labelledby")).toBe(labelId);
23
+ expect(getByRole("checkbox").getAttribute("aria-required")).toBe("true");
24
+ });
25
+ test("Optional checkbox renders with correct aria-required", function () {
26
+ var _render2 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_Checkbox["default"], {
27
+ label: "Checkbox",
28
+ optional: true
29
+ })),
30
+ getByRole = _render2.getByRole;
31
+
32
+ expect(getByRole("checkbox").getAttribute("aria-required")).toBe("false");
33
+ });
34
+ test("Calls correct function on click", function () {
35
+ var onChange = jest.fn();
36
+
37
+ var _render3 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_Checkbox["default"], {
38
+ label: "Checkbox",
39
+ onChange: onChange
40
+ })),
41
+ getByText = _render3.getByText;
42
+
43
+ _react2.fireEvent.click(getByText("Checkbox"));
44
+
45
+ expect(onChange).toHaveBeenCalled();
46
+ });
47
+ test("Uncontrolled checkbox", function () {
48
+ var onChange = jest.fn();
49
+ var component = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_Checkbox["default"], {
50
+ label: "Checkbox",
51
+ onChange: onChange,
52
+ name: "test"
53
+ }));
54
+ var visibleCheckbox = component.getByText("Checkbox");
55
+ var input = component.getByRole("checkbox");
56
+ var submitInput = component.container.querySelector("input[name=\"test\"]");
57
+ expect(input.getAttribute("aria-checked")).toBe("false");
58
+ expect(submitInput.checked).toBe(false);
59
+
60
+ _react2.fireEvent.click(visibleCheckbox);
61
+
62
+ expect(onChange).toHaveBeenCalled();
63
+ expect(onChange).toHaveBeenCalledWith(true);
64
+ expect(input.getAttribute("aria-checked")).toBe("true");
65
+ expect(submitInput.checked).toBe(true);
66
+ });
67
+ test("Controlled checkbox", function () {
68
+ var onChange = jest.fn();
69
+ var component = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_Checkbox["default"], {
70
+ label: "Checkbox",
71
+ checked: false,
72
+ onChange: onChange,
73
+ name: "test"
74
+ }));
75
+ var input = component.getByRole("checkbox");
76
+ var visibleCheckbox = component.getByText("Checkbox");
77
+ var submitInput = component.container.querySelector("input[name=\"test\"]");
78
+
79
+ _react2.fireEvent.click(visibleCheckbox);
80
+
81
+ expect(onChange).toHaveBeenCalled();
82
+ expect(onChange).toHaveBeenCalledWith(true);
83
+ expect(input.getAttribute("aria-checked")).toBe("false");
84
+ expect(submitInput.checked).toBe(false);
85
+ });
86
+ test("Renders with correct initial value and initial state when it is uncontrolled", function () {
87
+ var _render4 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_Checkbox["default"], {
88
+ label: "Default label",
89
+ defaultChecked: true,
90
+ value: "test-defaultChecked",
91
+ name: "test"
92
+ })),
93
+ getByRole = _render4.getByRole,
94
+ container = _render4.container;
95
+
96
+ var checkbox = getByRole("checkbox");
97
+ var submitInput = container.querySelector("input[name=\"test\"]");
98
+ expect(submitInput.value).toBe("test-defaultChecked");
99
+ expect(checkbox.getAttribute("aria-checked")).toBe("true");
100
+ expect(submitInput.checked).toBe(true);
101
+ });
102
+ test("Test disable keyboard and mouse interactions", function () {
103
+ var onChange = jest.fn();
104
+
105
+ var _render5 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_Checkbox["default"], {
106
+ label: "Checkbox",
107
+ onChange: onChange,
108
+ disabled: true,
109
+ name: "test"
110
+ })),
111
+ getByRole = _render5.getByRole,
112
+ getByText = _render5.getByText,
113
+ container = _render5.container;
114
+
115
+ var input = getByRole("checkbox");
116
+ var visibleCheckbox = getByText("Checkbox");
117
+ var submitInput = container.querySelector("input[name=\"test\"]");
118
+
119
+ _react2.fireEvent.click(visibleCheckbox);
120
+
121
+ expect(onChange).toHaveBeenCalledTimes(0);
122
+ expect(input.getAttribute("aria-checked")).toBe("false");
123
+ expect(input.getAttribute("aria-disabled")).toBe("true");
124
+ expect(submitInput.checked).toBe(false);
125
+
126
+ _userEvent["default"].tab();
127
+
128
+ expect(document.activeElement === input).toBeFalsy();
129
+ });
130
+ test("Test keyboard interactions", function () {
131
+ var onChange = jest.fn();
132
+
133
+ var _render6 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_Checkbox["default"], {
134
+ label: "Checkbox",
135
+ name: "test",
136
+ onChange: onChange
137
+ })),
138
+ getByRole = _render6.getByRole;
139
+
140
+ var checkbox = getByRole("checkbox");
141
+
142
+ _userEvent["default"].tab();
143
+
144
+ expect(document.activeElement === checkbox).toBeTruthy();
145
+
146
+ _react2.fireEvent.keyDown(checkbox, {
147
+ key: " ",
148
+ code: "Space",
149
+ keyCode: 32,
150
+ charCode: 32
151
+ });
152
+
153
+ expect(onChange).toHaveBeenCalledWith(true);
154
+ });
155
+ });
@@ -1,11 +1,15 @@
1
- declare type Space = "xxsmall" | "xsmall" | "small" | "medium" | "large" | "xlarge" | "xxlarge";
2
- declare type Margin = {
1
+ export declare type Space = "xxsmall" | "xsmall" | "small" | "medium" | "large" | "xlarge" | "xxlarge";
2
+ export declare type Margin = {
3
3
  top?: Space;
4
4
  bottom?: Space;
5
5
  left?: Space;
6
6
  right?: Space;
7
7
  };
8
8
  declare type Props = {
9
+ /**
10
+ * Initial state of the checkbox, only when it is uncontrolled.
11
+ */
12
+ defaultChecked?: boolean;
9
13
  /**
10
14
  * If true, the component is checked. If undefined the component will be
11
15
  * uncontrolled and the value will be managed internally by the component.
@@ -33,14 +37,14 @@ declare type Props = {
33
37
  */
34
38
  disabled?: boolean;
35
39
  /**
36
- * If true, the checkbox will change its appearence, showing that the value is required.
40
+ * If true, the component will display '(Optional)' next to the label.
37
41
  */
38
- required?: boolean;
42
+ optional?: boolean;
39
43
  /**
40
44
  * This function will be called when the user clicks the checkbox.
41
45
  * The new value will be passed as a parameter.
42
46
  */
43
- onChange?: (val: boolean) => void;
47
+ onChange?: (value: boolean) => void;
44
48
  /**
45
49
  * Size of the margin to be applied to the component
46
50
  * ('xxsmall' | 'xsmall' | 'small' | 'medium' | 'large' | 'xlarge' | 'xxlarge').
@@ -57,4 +61,8 @@ declare type Props = {
57
61
  */
58
62
  tabIndex?: number;
59
63
  };
64
+ /**
65
+ * Reference to the component.
66
+ */
67
+ export declare type RefType = HTMLDivElement;
60
68
  export default Props;
package/chip/Chip.d.ts CHANGED
@@ -1,4 +1,4 @@
1
1
  /// <reference types="react" />
2
2
  import ChipPropsType from "./types";
3
- declare const DxcChip: ({ label, suffixIcon, prefixIcon, suffixIconSrc, onClickSuffix, prefixIconSrc, onClickPrefix, disabled, margin, tabIndex, }: ChipPropsType) => JSX.Element;
3
+ declare const DxcChip: ({ label, suffixIcon, prefixIcon, onClickSuffix, onClickPrefix, disabled, margin, tabIndex, }: ChipPropsType) => JSX.Element;
4
4
  export default DxcChip;
package/chip/Chip.js CHANGED
@@ -9,10 +9,10 @@ Object.defineProperty(exports, "__esModule", {
9
9
  });
10
10
  exports["default"] = void 0;
11
11
 
12
- var _taggedTemplateLiteral2 = _interopRequireDefault(require("@babel/runtime/helpers/taggedTemplateLiteral"));
13
-
14
12
  var _typeof2 = _interopRequireDefault(require("@babel/runtime/helpers/typeof"));
15
13
 
14
+ var _taggedTemplateLiteral2 = _interopRequireDefault(require("@babel/runtime/helpers/taggedTemplateLiteral"));
15
+
16
16
  var _react = _interopRequireDefault(require("react"));
17
17
 
18
18
  var _styledComponents = _interopRequireWildcard(require("styled-components"));
@@ -33,9 +33,7 @@ var DxcChip = function DxcChip(_ref) {
33
33
  var label = _ref.label,
34
34
  suffixIcon = _ref.suffixIcon,
35
35
  prefixIcon = _ref.prefixIcon,
36
- suffixIconSrc = _ref.suffixIconSrc,
37
36
  onClickSuffix = _ref.onClickSuffix,
38
- prefixIconSrc = _ref.prefixIconSrc,
39
37
  onClickPrefix = _ref.onClickPrefix,
40
38
  disabled = _ref.disabled,
41
39
  margin = _ref.margin,
@@ -47,7 +45,7 @@ var DxcChip = function DxcChip(_ref) {
47
45
  }, /*#__PURE__*/_react["default"].createElement(StyledDxcChip, {
48
46
  disabled: disabled,
49
47
  margin: margin
50
- }, prefixIcon ? /*#__PURE__*/_react["default"].createElement(IconContainer, {
48
+ }, prefixIcon && /*#__PURE__*/_react["default"].createElement(IconContainer, {
51
49
  disabled: disabled,
52
50
  prefixIcon: true,
53
51
  label: label,
@@ -57,20 +55,11 @@ var DxcChip = function DxcChip(_ref) {
57
55
  return onClickPrefix && !disabled && onClickPrefix();
58
56
  },
59
57
  interactuable: typeof onClickPrefix === "function" && !disabled
60
- }, (0, _typeof2["default"])(prefixIcon) === "object" ? prefixIcon : /*#__PURE__*/_react["default"].createElement(prefixIcon)) : prefixIconSrc && /*#__PURE__*/_react["default"].createElement(PrefixIconContainer, {
61
- disabled: disabled,
62
- src: prefixIconSrc,
63
- label: label,
64
- tabIndex: typeof onClickPrefix === "function" && !disabled ? tabIndex : -1,
65
- onClick: function onClick() {
66
- return onClickPrefix && !disabled && onClickPrefix();
67
- },
68
- interactuable: typeof onClickPrefix === "function" && !disabled
69
- }), label && /*#__PURE__*/_react["default"].createElement(ChipTextContainer, {
70
- disabled: disabled,
71
- prefixIconSrc: prefixIconSrc,
72
- suffixIconSrc: suffixIconSrc
73
- }, label), suffixIcon ? /*#__PURE__*/_react["default"].createElement(IconContainer, {
58
+ }, typeof prefixIcon === "string" ? /*#__PURE__*/_react["default"].createElement(PrefixIconContainer, {
59
+ src: prefixIcon
60
+ }) : prefixIcon), label && /*#__PURE__*/_react["default"].createElement(ChipTextContainer, {
61
+ disabled: disabled
62
+ }, label), suffixIcon && /*#__PURE__*/_react["default"].createElement(IconContainer, {
74
63
  disabled: disabled,
75
64
  suffixIcon: true,
76
65
  mode: "suffix",
@@ -80,16 +69,9 @@ var DxcChip = function DxcChip(_ref) {
80
69
  return onClickSuffix && !disabled && onClickSuffix();
81
70
  },
82
71
  interactuable: typeof onClickSuffix === "function" && !disabled
83
- }, (0, _typeof2["default"])(suffixIcon) === "object" ? suffixIcon : /*#__PURE__*/_react["default"].createElement(suffixIcon)) : suffixIconSrc && /*#__PURE__*/_react["default"].createElement(SuffixIconContainer, {
84
- disabled: disabled,
85
- src: suffixIconSrc,
86
- label: label,
87
- tabIndex: typeof onClickSuffix === "function" && !disabled ? tabIndex : -1,
88
- onClick: function onClick() {
89
- return onClickSuffix && !disabled && onClickSuffix();
90
- },
91
- interactuable: typeof onClickSuffix === "function" && !disabled
92
- })));
72
+ }, typeof suffixIcon === "string" ? /*#__PURE__*/_react["default"].createElement(SuffixIconContainer, {
73
+ src: suffixIcon
74
+ }) : suffixIcon)));
93
75
  };
94
76
 
95
77
  var getCursor = function getCursor(interactuable, disabled) {
@@ -155,34 +137,14 @@ var ChipTextContainer = _styledComponents["default"].span(_templateObject2 || (_
155
137
  return disabled && "not-allowed" || "default";
156
138
  });
157
139
 
158
- var SuffixIconContainer = _styledComponents["default"].img(_templateObject3 || (_templateObject3 = (0, _taggedTemplateLiteral2["default"])(["\n color: ", ";\n ", "\n margin-left: ", ";\n width: ", ";\n height: ", ";\n"])), function (props) {
159
- return props.disabled ? props.theme.disabledIconColor : props.theme.iconColor;
160
- }, function (props) {
161
- return getCursor(props.interactuable, props.disabled);
162
- }, function (props) {
163
- return (props.label || props.suffixIconSrc) && props.theme.iconSpacing || props.prefixIconSrc && "5px";
164
- }, function (props) {
165
- return props.theme.iconSize;
166
- }, function (props) {
167
- return props.theme.iconSize;
168
- });
140
+ var SuffixIconContainer = _styledComponents["default"].img(_templateObject3 || (_templateObject3 = (0, _taggedTemplateLiteral2["default"])([""])));
169
141
 
170
- var PrefixIconContainer = _styledComponents["default"].img(_templateObject4 || (_templateObject4 = (0, _taggedTemplateLiteral2["default"])(["\n color: ", ";\n ", "\n margin-right: ", ";\n width: ", ";\n height: ", ";\n"])), function (props) {
171
- return props.disabled ? props.theme.disabledIconColor : props.theme.iconColor;
172
- }, function (props) {
173
- return getCursor(props.interactuable, props.disabled);
174
- }, function (props) {
175
- return (props.label || props.suffixIconSrc) && props.theme.iconSpacing || props.prefixIconSrc && "5px";
176
- }, function (props) {
177
- return props.theme.iconSize;
178
- }, function (props) {
179
- return props.theme.iconSize;
180
- });
142
+ var PrefixIconContainer = _styledComponents["default"].img(_templateObject4 || (_templateObject4 = (0, _taggedTemplateLiteral2["default"])([""])));
181
143
 
182
144
  var IconContainer = _styledComponents["default"].div(_templateObject5 || (_templateObject5 = (0, _taggedTemplateLiteral2["default"])(["\n color: ", ";\n ", "\n ", "\n width: ", ";\n height: ", ";\n overflow: hidden;\n\n img,\n svg {\n height: 100%;\n width: 100%;\n }\n &:focus {\n outline-color: ", ";\n outline-width: 2px;\n ", "\n }\n"])), function (props) {
183
145
  return props.disabled ? props.theme.disabledIconColor : props.theme.iconColor;
184
146
  }, function (props) {
185
- return props.prefixIcon ? "margin-right: ".concat((props.label || props.suffixIcon || props.suffixIconSrc) && props.theme.iconSpacing || (props.prefixIcon || props.prefixIconSrc) && "0", ";") : "margin-left: ".concat((props.label || props.prefixIcon || props.prefixIconSrc) && props.theme.iconSpacing || (props.prefixIcon || props.prefixIconSrc) && "0", ";");
147
+ return props.prefixIcon ? "margin-right: ".concat((props.label || props.suffixIcon) && props.theme.iconSpacing || props.prefixIcon && "0", ";") : "margin-left: ".concat((props.label || props.prefixIcon) && props.theme.iconSpacing || props.prefixIcon && "0", ";");
186
148
  }, function (props) {
187
149
  return getCursor(props.interactuable, props.disabled);
188
150
  }, function (props) {