@dxc-technology/halstack-react 0.0.0-8b133ff → 0.0.0-8b61ced

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 (212) hide show
  1. package/HalstackContext.d.ts +4 -2
  2. package/HalstackContext.js +109 -58
  3. package/accordion/Accordion.js +122 -103
  4. package/accordion/Accordion.stories.tsx +2 -3
  5. package/accordion/Accordion.test.js +9 -10
  6. package/accordion/types.d.ts +5 -4
  7. package/accordion-group/AccordionGroup.js +2 -21
  8. package/accordion-group/AccordionGroup.stories.tsx +27 -1
  9. package/accordion-group/AccordionGroup.test.js +20 -45
  10. package/accordion-group/types.d.ts +10 -3
  11. package/alert/Alert.js +5 -2
  12. package/badge/Badge.d.ts +1 -1
  13. package/badge/Badge.js +5 -3
  14. package/badge/types.d.ts +1 -0
  15. package/bleed/Bleed.js +1 -34
  16. package/bleed/Bleed.stories.tsx +94 -95
  17. package/bleed/types.d.ts +1 -1
  18. package/box/Box.js +23 -33
  19. package/box/types.d.ts +1 -0
  20. package/bulleted-list/BulletedList.d.ts +7 -0
  21. package/bulleted-list/BulletedList.js +123 -0
  22. package/bulleted-list/BulletedList.stories.tsx +200 -0
  23. package/bulleted-list/types.d.ts +11 -0
  24. package/{list → bulleted-list}/types.js +0 -0
  25. package/button/Button.js +46 -62
  26. package/button/Button.stories.tsx +9 -0
  27. package/button/types.d.ts +7 -7
  28. package/card/Card.js +34 -36
  29. package/card/types.d.ts +1 -0
  30. package/checkbox/Checkbox.d.ts +2 -2
  31. package/checkbox/Checkbox.js +95 -99
  32. package/checkbox/Checkbox.stories.tsx +79 -59
  33. package/checkbox/Checkbox.test.js +93 -16
  34. package/checkbox/types.d.ts +6 -2
  35. package/chip/types.d.ts +1 -1
  36. package/common/variables.js +237 -97
  37. package/date-input/Calendar.d.ts +4 -0
  38. package/date-input/Calendar.js +258 -0
  39. package/date-input/DateInput.js +81 -223
  40. package/date-input/DateInput.stories.tsx +30 -17
  41. package/date-input/DateInput.test.js +411 -138
  42. package/date-input/DatePicker.d.ts +4 -0
  43. package/date-input/DatePicker.js +160 -0
  44. package/date-input/YearPicker.d.ts +4 -0
  45. package/date-input/YearPicker.js +115 -0
  46. package/date-input/types.d.ts +53 -0
  47. package/dialog/Dialog.js +52 -28
  48. package/dialog/Dialog.stories.tsx +57 -2
  49. package/dialog/Dialog.test.js +34 -4
  50. package/dialog/types.d.ts +3 -2
  51. package/dropdown/Dropdown.d.ts +1 -1
  52. package/dropdown/Dropdown.js +247 -247
  53. package/dropdown/Dropdown.stories.tsx +126 -63
  54. package/dropdown/Dropdown.test.js +504 -108
  55. package/dropdown/DropdownMenu.d.ts +4 -0
  56. package/dropdown/DropdownMenu.js +80 -0
  57. package/dropdown/DropdownMenuItem.d.ts +4 -0
  58. package/dropdown/DropdownMenuItem.js +92 -0
  59. package/dropdown/types.d.ts +25 -5
  60. package/file-input/FileInput.d.ts +2 -2
  61. package/file-input/FileInput.js +183 -222
  62. package/file-input/FileInput.stories.tsx +38 -10
  63. package/file-input/FileInput.test.js +53 -12
  64. package/file-input/FileItem.d.ts +4 -14
  65. package/file-input/FileItem.js +43 -66
  66. package/file-input/types.d.ts +17 -0
  67. package/flex/Flex.d.ts +4 -0
  68. package/flex/Flex.js +69 -0
  69. package/flex/Flex.stories.tsx +103 -0
  70. package/flex/types.d.ts +32 -0
  71. package/{radio → flex}/types.js +0 -0
  72. package/footer/Footer.js +7 -5
  73. package/footer/Footer.stories.tsx +8 -1
  74. package/footer/Icons.js +1 -1
  75. package/footer/types.d.ts +2 -1
  76. package/header/Header.js +80 -75
  77. package/header/Header.stories.tsx +4 -4
  78. package/header/Icons.js +2 -2
  79. package/header/types.d.ts +3 -2
  80. package/inset/Inset.js +1 -34
  81. package/inset/Inset.stories.tsx +36 -36
  82. package/inset/types.d.ts +1 -1
  83. package/layout/ApplicationLayout.d.ts +16 -6
  84. package/layout/ApplicationLayout.js +70 -117
  85. package/layout/ApplicationLayout.stories.tsx +84 -93
  86. package/layout/Icons.d.ts +5 -0
  87. package/layout/Icons.js +13 -2
  88. package/layout/SidenavContext.d.ts +5 -0
  89. package/layout/SidenavContext.js +19 -0
  90. package/layout/types.d.ts +18 -33
  91. package/link/Link.d.ts +3 -2
  92. package/link/Link.js +58 -71
  93. package/link/Link.stories.tsx +95 -53
  94. package/link/Link.test.js +7 -15
  95. package/link/types.d.ts +7 -23
  96. package/main.d.ts +7 -10
  97. package/main.js +38 -56
  98. package/number-input/NumberInput.test.js +43 -7
  99. package/number-input/types.d.ts +1 -1
  100. package/package.json +16 -19
  101. package/paginator/Paginator.js +17 -38
  102. package/paginator/Paginator.test.js +43 -1
  103. package/paragraph/Paragraph.d.ts +6 -0
  104. package/paragraph/Paragraph.js +38 -0
  105. package/paragraph/Paragraph.stories.tsx +44 -0
  106. package/password-input/PasswordInput.js +7 -4
  107. package/password-input/PasswordInput.test.js +14 -14
  108. package/password-input/types.d.ts +1 -1
  109. package/progress-bar/ProgressBar.d.ts +2 -2
  110. package/progress-bar/ProgressBar.js +57 -51
  111. package/progress-bar/ProgressBar.stories.jsx +13 -11
  112. package/progress-bar/ProgressBar.test.js +67 -22
  113. package/progress-bar/types.d.ts +3 -4
  114. package/quick-nav/QuickNav.js +75 -22
  115. package/quick-nav/QuickNav.stories.tsx +131 -26
  116. package/quick-nav/types.d.ts +4 -4
  117. package/radio-group/Radio.d.ts +1 -1
  118. package/radio-group/Radio.js +43 -28
  119. package/radio-group/RadioGroup.js +30 -27
  120. package/radio-group/RadioGroup.stories.tsx +1 -0
  121. package/radio-group/RadioGroup.test.js +123 -96
  122. package/radio-group/types.d.ts +2 -2
  123. package/resultsetTable/Icons.d.ts +7 -0
  124. package/resultsetTable/Icons.js +51 -0
  125. package/resultsetTable/ResultsetTable.js +48 -107
  126. package/resultsetTable/ResultsetTable.stories.tsx +50 -25
  127. package/resultsetTable/ResultsetTable.test.js +65 -41
  128. package/resultsetTable/types.d.ts +2 -2
  129. package/select/Listbox.d.ts +1 -1
  130. package/select/Listbox.js +58 -8
  131. package/select/Select.js +80 -90
  132. package/select/Select.stories.tsx +147 -105
  133. package/select/Select.test.js +425 -249
  134. package/select/types.d.ts +2 -5
  135. package/sidenav/Sidenav.d.ts +6 -5
  136. package/sidenav/Sidenav.js +184 -52
  137. package/sidenav/Sidenav.stories.tsx +154 -156
  138. package/sidenav/Sidenav.test.js +25 -37
  139. package/sidenav/types.d.ts +50 -27
  140. package/slider/Slider.d.ts +2 -2
  141. package/slider/Slider.js +120 -95
  142. package/slider/Slider.stories.tsx +7 -1
  143. package/slider/Slider.test.js +121 -21
  144. package/slider/types.d.ts +6 -2
  145. package/spinner/Spinner.js +3 -3
  146. package/switch/Switch.d.ts +2 -2
  147. package/switch/Switch.js +138 -68
  148. package/switch/Switch.stories.tsx +8 -30
  149. package/switch/Switch.test.js +144 -17
  150. package/switch/types.d.ts +6 -2
  151. package/table/Table.js +1 -1
  152. package/table/Table.test.js +1 -1
  153. package/tabs/Tab.d.ts +4 -0
  154. package/tabs/Tab.js +135 -0
  155. package/tabs/Tabs.js +360 -104
  156. package/tabs/Tabs.stories.tsx +74 -7
  157. package/tabs/Tabs.test.js +217 -6
  158. package/tabs/types.d.ts +15 -5
  159. package/tabs-nav/NavTabs.d.ts +8 -0
  160. package/tabs-nav/NavTabs.js +125 -0
  161. package/tabs-nav/NavTabs.stories.tsx +170 -0
  162. package/tabs-nav/NavTabs.test.js +82 -0
  163. package/tabs-nav/Tab.d.ts +4 -0
  164. package/tabs-nav/Tab.js +130 -0
  165. package/tabs-nav/types.d.ts +53 -0
  166. package/{row → tabs-nav}/types.js +0 -0
  167. package/tag/Tag.js +1 -1
  168. package/tag/types.d.ts +1 -1
  169. package/text-input/Icons.d.ts +8 -0
  170. package/text-input/Icons.js +60 -0
  171. package/text-input/Suggestion.d.ts +4 -0
  172. package/text-input/Suggestion.js +84 -0
  173. package/text-input/Suggestions.d.ts +4 -0
  174. package/text-input/Suggestions.js +134 -0
  175. package/text-input/TextInput.js +211 -330
  176. package/text-input/TextInput.stories.tsx +194 -182
  177. package/text-input/TextInput.test.js +738 -726
  178. package/text-input/types.d.ts +33 -2
  179. package/textarea/Textarea.js +10 -19
  180. package/textarea/types.d.ts +1 -1
  181. package/toggle-group/types.d.ts +1 -1
  182. package/typography/Typography.d.ts +4 -0
  183. package/typography/Typography.js +131 -0
  184. package/typography/Typography.stories.tsx +198 -0
  185. package/typography/types.d.ts +18 -0
  186. package/{stack → typography}/types.js +0 -0
  187. package/useTranslatedLabels.d.ts +2 -0
  188. package/useTranslatedLabels.js +20 -0
  189. package/wizard/Wizard.js +36 -41
  190. package/wizard/Wizard.stories.tsx +20 -1
  191. package/wizard/types.d.ts +5 -4
  192. package/common/RequiredComponent.js +0 -32
  193. package/list/List.d.ts +0 -4
  194. package/list/List.js +0 -47
  195. package/list/List.stories.tsx +0 -95
  196. package/list/types.d.ts +0 -7
  197. package/radio/Radio.d.ts +0 -4
  198. package/radio/Radio.js +0 -173
  199. package/radio/Radio.stories.tsx +0 -192
  200. package/radio/Radio.test.js +0 -71
  201. package/radio/types.d.ts +0 -54
  202. package/row/Row.d.ts +0 -3
  203. package/row/Row.js +0 -127
  204. package/row/Row.stories.tsx +0 -237
  205. package/row/types.d.ts +0 -28
  206. package/stack/Stack.d.ts +0 -3
  207. package/stack/Stack.js +0 -97
  208. package/stack/Stack.stories.tsx +0 -164
  209. package/stack/types.d.ts +0 -24
  210. package/text/Text.d.ts +0 -7
  211. package/text/Text.js +0 -30
  212. package/text/Text.stories.tsx +0 -19
@@ -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 } from "@storybook/testing-library";
7
+ import styled from "styled-components";
8
8
 
9
9
  export default {
10
10
  title: "Checkbox",
@@ -17,29 +17,33 @@ const Checkbox = () => (
17
17
  <Title title="Default" theme="light" level={4} />
18
18
  <DxcCheckbox label="Checkbox" />
19
19
  </ExampleContainer>
20
- <ExampleContainer>
21
- <Title title="Focused" theme="light" level={4} />
22
- <DxcCheckbox label="Focused" />
23
- </ExampleContainer>
24
20
  <ExampleContainer>
25
21
  <Title title="Checked" theme="light" level={4} />
26
22
  <DxcCheckbox label="Checkbox" defaultChecked />
27
23
  </ExampleContainer>
28
24
  <ExampleContainer>
29
- <Title title="Optional" theme="light" level={4} />
30
- <DxcCheckbox label="Checkbox" optional />
25
+ <Title title="Disabled" theme="light" level={4} />
26
+ <DxcCheckbox label="Checkbox" disabled />
31
27
  </ExampleContainer>
32
28
  <ExampleContainer>
33
- <Title title="Disabled and checked" theme="light" level={4} />
34
- <DxcCheckbox label="Checkbox" disabled defaultChecked />
29
+ <Title title="Disabled, checked and optional" theme="light" level={4} />
30
+ <DxcCheckbox label="Checkbox" disabled defaultChecked optional />
35
31
  </ExampleContainer>
36
- <ExampleContainer>
37
- <Title title="Disabled and optional" theme="light" level={4} />
38
- <DxcCheckbox label="Checkbox" disabled optional />
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 />
39
43
  </ExampleContainer>
40
44
  <ExampleContainer>
41
- <Title title="Disabled, optional and checked" theme="light" level={4} />
42
- <DxcCheckbox label="Checkbox" disabled optional defaultChecked />
45
+ <Title title="Optional" theme="light" level={4} />
46
+ <DxcCheckbox label="Checkbox" optional />
43
47
  </ExampleContainer>
44
48
  <ExampleContainer>
45
49
  <Title title="Label after" theme="light" level={4} />
@@ -53,25 +57,9 @@ const Checkbox = () => (
53
57
  <Title title="Optional with label after" theme="light" level={4} />
54
58
  <DxcCheckbox label="Checkbox" optional labelPosition="after" />
55
59
  </ExampleContainer>
56
- <ExampleContainer>
57
- <Title title="Disabled and checked with label after" theme="light" level={4} />
58
- <DxcCheckbox label="Checkbox" disabled defaultChecked labelPosition="after" />
59
- </ExampleContainer>
60
60
  <ExampleContainer>
61
61
  <Title title="Disabled and optional with label after" theme="light" level={4} />
62
- <DxcCheckbox label="Checkbox" disabled optional labelPosition="after" />
63
- </ExampleContainer>
64
- <ExampleContainer>
65
- <Title title="Disabled, optional and checked with label after" theme="light" level={4} />
66
- <DxcCheckbox label="Checkbox" disabled optional defaultChecked labelPosition="after" />
67
- </ExampleContainer>
68
- <ExampleContainer pseudoState="pseudo-hover">
69
- <Title title="Hovered" theme="light" level={4} />
70
- <DxcCheckbox label="Hovered" />
71
- </ExampleContainer>
72
- <ExampleContainer pseudoState="pseudo-hover">
73
- <Title title="Hovered and checked" theme="light" level={4} />
74
- <DxcCheckbox label="Hovered" defaultChecked />
62
+ <DxcCheckbox label="Checkbox" disabled labelPosition="after" optional />
75
63
  </ExampleContainer>
76
64
  <BackgroundColorProvider color="#333333">
77
65
  <DarkContainer>
@@ -84,20 +72,28 @@ const Checkbox = () => (
84
72
  <DxcCheckbox label="Checkbox" defaultChecked />
85
73
  </ExampleContainer>
86
74
  <ExampleContainer>
87
- <Title title="Optional" theme="dark" level={4} />
88
- <DxcCheckbox label="Checkbox" optional />
75
+ <Title title="Disabled" theme="dark" level={4} />
76
+ <DxcCheckbox label="Checkbox" disabled />
89
77
  </ExampleContainer>
90
78
  <ExampleContainer>
91
- <Title title="Disabled and checked" theme="dark" level={4} />
92
- <DxcCheckbox label="Checkbox" disabled defaultChecked />
79
+ <Title title="Disabled, checked and optional" theme="dark" level={4} />
80
+ <DxcCheckbox label="Checkbox" disabled defaultChecked optional />
93
81
  </ExampleContainer>
94
- <ExampleContainer>
95
- <Title title="Disabled and optional" theme="dark" level={4} />
96
- <DxcCheckbox label="Checkbox" disabled optional />
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 />
97
93
  </ExampleContainer>
98
94
  <ExampleContainer>
99
- <Title title="Disabled, optional and checked" theme="dark" level={4} />
100
- <DxcCheckbox label="Checkbox" disabled optional defaultChecked />
95
+ <Title title="Optional" theme="dark" level={4} />
96
+ <DxcCheckbox label="Checkbox" optional />
101
97
  </ExampleContainer>
102
98
  <ExampleContainer>
103
99
  <Title title="Label after" theme="dark" level={4} />
@@ -111,25 +107,9 @@ const Checkbox = () => (
111
107
  <Title title="Optional with label after" theme="dark" level={4} />
112
108
  <DxcCheckbox label="Checkbox" optional labelPosition="after" />
113
109
  </ExampleContainer>
114
- <ExampleContainer>
115
- <Title title="Disabled and checked with label after" theme="dark" level={4} />
116
- <DxcCheckbox label="Checkbox" disabled defaultChecked labelPosition="after" />
117
- </ExampleContainer>
118
110
  <ExampleContainer>
119
111
  <Title title="Disabled and optional with label after" theme="dark" level={4} />
120
- <DxcCheckbox label="Checkbox" disabled optional labelPosition="after" />
121
- </ExampleContainer>
122
- <ExampleContainer>
123
- <Title title="Disabled, optional and checked with label after" theme="dark" level={4} />
124
- <DxcCheckbox label="Checkbox" disabled optional defaultChecked labelPosition="after" />
125
- </ExampleContainer>
126
- <ExampleContainer pseudoState="pseudo-hover">
127
- <Title title="Hovered" theme="dark" level={4} />
128
- <DxcCheckbox label="Hovered" />
129
- </ExampleContainer>
130
- <ExampleContainer pseudoState="pseudo-hover">
131
- <Title title="Hovered and checked" theme="dark" level={4} />
132
- <DxcCheckbox label="Hovered" defaultChecked />
112
+ <DxcCheckbox label="Checkbox" disabled labelPosition="after" optional />
133
113
  </ExampleContainer>
134
114
  </DarkContainer>
135
115
  </BackgroundColorProvider>
@@ -178,11 +158,51 @@ const Checkbox = () => (
178
158
  <Title title="Xxlarge" theme="light" level={4} />
179
159
  <DxcCheckbox label="Xxlarge" margin="xxlarge" />
180
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>
180
+ </ExampleContainer>
181
181
  </>
182
182
  );
183
183
 
184
184
  export const Chromatic = Checkbox.bind({});
185
+
185
186
  Chromatic.play = async () => {
186
- await userEvent.tab();
187
- await userEvent.tab();
187
+ const listEl = document.getElementById("scroll-container");
188
+ listEl?.scrollTo?.({ top: 50 });
188
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
+ `;
@@ -6,25 +6,39 @@ var _react = _interopRequireDefault(require("react"));
6
6
 
7
7
  var _react2 = require("@testing-library/react");
8
8
 
9
+ var _userEvent = _interopRequireDefault(require("@testing-library/user-event"));
10
+
9
11
  var _Checkbox = _interopRequireDefault(require("./Checkbox"));
10
12
 
11
13
  describe("Checkbox component tests", function () {
12
- test("Checkbox renders with correct text", function () {
14
+ test("Checkbox renders with correct aria-labelledby and aria-required", function () {
13
15
  var _render = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_Checkbox["default"], {
14
16
  label: "Checkbox"
15
17
  })),
16
- getByText = _render.getByText;
18
+ getByText = _render.getByText,
19
+ getByRole = _render.getByRole;
17
20
 
18
- expect(getByText("Checkbox")).toBeTruthy();
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");
19
33
  });
20
34
  test("Calls correct function on click", function () {
21
35
  var onChange = jest.fn();
22
36
 
23
- var _render2 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_Checkbox["default"], {
37
+ var _render3 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_Checkbox["default"], {
24
38
  label: "Checkbox",
25
39
  onChange: onChange
26
40
  })),
27
- getByText = _render2.getByText;
41
+ getByText = _render3.getByText;
28
42
 
29
43
  _react2.fireEvent.click(getByText("Checkbox"));
30
44
 
@@ -34,45 +48,108 @@ describe("Checkbox component tests", function () {
34
48
  var onChange = jest.fn();
35
49
  var component = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_Checkbox["default"], {
36
50
  label: "Checkbox",
37
- onChange: onChange
51
+ onChange: onChange,
52
+ name: "test"
38
53
  }));
39
54
  var visibleCheckbox = component.getByText("Checkbox");
40
55
  var input = component.getByRole("checkbox");
41
- expect(input.checked).toBe(false);
56
+ var submitInput = component.container.querySelector("input[name=\"test\"]");
57
+ expect(input.getAttribute("aria-checked")).toBe("false");
58
+ expect(submitInput.checked).toBe(false);
42
59
 
43
60
  _react2.fireEvent.click(visibleCheckbox);
44
61
 
45
62
  expect(onChange).toHaveBeenCalled();
46
63
  expect(onChange).toHaveBeenCalledWith(true);
47
- expect(input.checked).toBe(true);
64
+ expect(input.getAttribute("aria-checked")).toBe("true");
65
+ expect(submitInput.checked).toBe(true);
48
66
  });
49
67
  test("Controlled checkbox", function () {
50
68
  var onChange = jest.fn();
51
69
  var component = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_Checkbox["default"], {
52
70
  label: "Checkbox",
53
71
  checked: false,
54
- onChange: onChange
72
+ onChange: onChange,
73
+ name: "test"
55
74
  }));
56
75
  var input = component.getByRole("checkbox");
57
76
  var visibleCheckbox = component.getByText("Checkbox");
77
+ var submitInput = component.container.querySelector("input[name=\"test\"]");
58
78
 
59
79
  _react2.fireEvent.click(visibleCheckbox);
60
80
 
61
81
  expect(onChange).toHaveBeenCalled();
62
82
  expect(onChange).toHaveBeenCalledWith(true);
63
- expect(input.checked).toBe(false);
83
+ expect(input.getAttribute("aria-checked")).toBe("false");
84
+ expect(submitInput.checked).toBe(false);
64
85
  });
65
86
  test("Renders with correct initial value and initial state when it is uncontrolled", function () {
66
- var _render3 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_Checkbox["default"], {
87
+ var _render4 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_Checkbox["default"], {
67
88
  label: "Default label",
68
89
  defaultChecked: true,
69
- value: "test-defaultChecked"
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"
70
110
  })),
71
- getByRole = _render3.getByRole;
111
+ getByRole = _render5.getByRole,
112
+ getByText = _render5.getByText,
113
+ container = _render5.container;
72
114
 
73
115
  var input = getByRole("checkbox");
74
- expect(input.checked).toBe(true);
75
- expect(input.value).toBe("test-defaultChecked");
76
- expect(input.getAttribute("aria-checked")).toBe("true");
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);
77
154
  });
78
155
  });
@@ -1,5 +1,5 @@
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;
@@ -61,4 +61,8 @@ declare type Props = {
61
61
  */
62
62
  tabIndex?: number;
63
63
  };
64
+ /**
65
+ * Reference to the component.
66
+ */
67
+ export declare type RefType = HTMLDivElement;
64
68
  export default Props;
package/chip/types.d.ts CHANGED
@@ -6,7 +6,7 @@ declare type Margin = {
6
6
  left?: Space;
7
7
  right?: Space;
8
8
  };
9
- declare type SVG = React.SVGProps<SVGSVGElement>;
9
+ declare type SVG = React.ReactNode & React.SVGProps<SVGSVGElement>;
10
10
  declare type Props = {
11
11
  /**
12
12
  * Text to be placed on the chip.