@dxc-technology/halstack-react 0.0.0-61a8ced → 0.0.0-62702b8

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 (244) hide show
  1. package/BackgroundColorContext.d.ts +2 -2
  2. package/BackgroundColorContext.js +1 -1
  3. package/HalstackContext.d.ts +1349 -5
  4. package/HalstackContext.js +117 -77
  5. package/README.md +47 -0
  6. package/accordion/Accordion.d.ts +1 -1
  7. package/accordion/Accordion.js +14 -37
  8. package/accordion/Accordion.stories.tsx +104 -113
  9. package/accordion/Accordion.test.js +1 -1
  10. package/accordion/types.d.ts +2 -13
  11. package/accordion-group/AccordionGroup.d.ts +4 -3
  12. package/accordion-group/AccordionGroup.js +23 -44
  13. package/accordion-group/AccordionGroup.stories.tsx +77 -76
  14. package/accordion-group/AccordionGroup.test.js +7 -17
  15. package/accordion-group/AccordionGroupAccordion.d.ts +4 -0
  16. package/accordion-group/AccordionGroupAccordion.js +43 -0
  17. package/accordion-group/types.d.ts +2 -13
  18. package/alert/Alert.js +4 -8
  19. package/alert/Alert.stories.tsx +28 -0
  20. package/alert/Alert.test.js +1 -1
  21. package/bleed/Bleed.stories.tsx +1 -0
  22. package/box/Box.d.ts +1 -1
  23. package/box/Box.js +7 -26
  24. package/box/Box.stories.tsx +38 -51
  25. package/box/Box.test.js +1 -1
  26. package/box/types.d.ts +0 -11
  27. package/bulleted-list/BulletedList.js +4 -2
  28. package/bulleted-list/BulletedList.stories.tsx +7 -1
  29. package/bulleted-list/types.d.ts +31 -4
  30. package/button/Button.d.ts +1 -1
  31. package/button/Button.js +48 -60
  32. package/button/Button.stories.tsx +151 -9
  33. package/button/Button.test.js +12 -1
  34. package/button/types.d.ts +7 -3
  35. package/card/Card.d.ts +1 -1
  36. package/card/Card.js +27 -45
  37. package/card/Card.stories.tsx +12 -42
  38. package/card/Card.test.js +1 -1
  39. package/card/types.d.ts +1 -6
  40. package/checkbox/Checkbox.d.ts +2 -2
  41. package/checkbox/Checkbox.js +74 -53
  42. package/checkbox/Checkbox.stories.tsx +146 -58
  43. package/checkbox/Checkbox.test.js +84 -11
  44. package/checkbox/types.d.ts +10 -2
  45. package/chip/Chip.js +28 -49
  46. package/chip/Chip.stories.tsx +121 -26
  47. package/chip/Chip.test.js +3 -5
  48. package/common/OpenSans.css +68 -80
  49. package/common/coreTokens.d.ts +146 -0
  50. package/common/coreTokens.js +167 -0
  51. package/common/utils.d.ts +1 -0
  52. package/common/utils.js +4 -4
  53. package/common/variables.d.ts +1499 -0
  54. package/common/variables.js +1004 -1134
  55. package/date-input/Calendar.d.ts +4 -0
  56. package/date-input/Calendar.js +258 -0
  57. package/date-input/DateInput.js +138 -239
  58. package/date-input/DateInput.stories.tsx +209 -33
  59. package/date-input/DateInput.test.js +519 -149
  60. package/date-input/DatePicker.d.ts +4 -0
  61. package/date-input/DatePicker.js +146 -0
  62. package/date-input/Icons.d.ts +6 -0
  63. package/date-input/Icons.js +75 -0
  64. package/date-input/YearPicker.d.ts +4 -0
  65. package/date-input/YearPicker.js +126 -0
  66. package/date-input/types.d.ts +57 -0
  67. package/dialog/Dialog.d.ts +1 -1
  68. package/dialog/Dialog.js +54 -85
  69. package/dialog/Dialog.stories.tsx +154 -170
  70. package/dialog/Dialog.test.js +302 -3
  71. package/dialog/types.d.ts +0 -12
  72. package/dropdown/Dropdown.js +42 -41
  73. package/dropdown/Dropdown.stories.tsx +210 -84
  74. package/dropdown/Dropdown.test.js +22 -27
  75. package/dropdown/DropdownMenu.js +12 -18
  76. package/dropdown/DropdownMenuItem.js +5 -18
  77. package/dropdown/types.d.ts +3 -3
  78. package/file-input/FileInput.d.ts +2 -2
  79. package/file-input/FileInput.js +174 -220
  80. package/file-input/FileInput.stories.tsx +122 -11
  81. package/file-input/FileInput.test.js +14 -14
  82. package/file-input/FileItem.d.ts +4 -14
  83. package/file-input/FileItem.js +39 -63
  84. package/file-input/types.d.ts +18 -1
  85. package/flex/Flex.d.ts +1 -1
  86. package/flex/Flex.js +33 -19
  87. package/flex/Flex.stories.tsx +35 -26
  88. package/flex/types.d.ts +83 -7
  89. package/footer/Footer.d.ts +1 -1
  90. package/footer/Footer.js +44 -64
  91. package/footer/Footer.stories.tsx +36 -21
  92. package/footer/Footer.test.js +16 -26
  93. package/footer/types.d.ts +10 -11
  94. package/grid/Grid.d.ts +7 -0
  95. package/grid/Grid.js +91 -0
  96. package/grid/Grid.stories.tsx +219 -0
  97. package/grid/types.d.ts +115 -0
  98. package/header/Header.d.ts +4 -3
  99. package/header/Header.js +20 -49
  100. package/header/Header.stories.tsx +115 -36
  101. package/header/Header.test.js +2 -2
  102. package/header/types.d.ts +1 -14
  103. package/heading/Heading.js +1 -1
  104. package/heading/Heading.test.js +1 -1
  105. package/image/Image.d.ts +4 -0
  106. package/image/Image.js +85 -0
  107. package/image/Image.stories.tsx +127 -0
  108. package/image/types.d.ts +72 -0
  109. package/inset/Inset.stories.tsx +2 -1
  110. package/layout/ApplicationLayout.d.ts +5 -5
  111. package/layout/ApplicationLayout.js +15 -12
  112. package/layout/ApplicationLayout.stories.tsx +1 -1
  113. package/layout/Icons.d.ts +7 -4
  114. package/layout/Icons.js +52 -56
  115. package/layout/types.d.ts +2 -3
  116. package/link/Link.js +4 -4
  117. package/link/Link.stories.tsx +60 -0
  118. package/link/Link.test.js +2 -4
  119. package/link/types.d.ts +2 -2
  120. package/main.d.ts +5 -3
  121. package/main.js +18 -2
  122. package/{tabs-nav → nav-tabs}/NavTabs.d.ts +2 -2
  123. package/{tabs-nav → nav-tabs}/NavTabs.js +8 -11
  124. package/{tabs-nav → nav-tabs}/NavTabs.stories.tsx +110 -6
  125. package/{tabs-nav → nav-tabs}/NavTabs.test.js +1 -1
  126. package/{tabs-nav → nav-tabs}/Tab.js +49 -33
  127. package/{tabs-nav → nav-tabs}/types.d.ts +8 -9
  128. package/number-input/NumberInput.d.ts +7 -0
  129. package/number-input/NumberInput.js +8 -4
  130. package/number-input/NumberInput.stories.tsx +47 -2
  131. package/number-input/NumberInput.test.js +354 -92
  132. package/number-input/types.d.ts +6 -0
  133. package/package.json +14 -19
  134. package/paginator/Icons.d.ts +5 -0
  135. package/paginator/Icons.js +16 -28
  136. package/paginator/Paginator.js +8 -16
  137. package/paginator/Paginator.stories.tsx +24 -0
  138. package/paginator/Paginator.test.js +58 -48
  139. package/paragraph/Paragraph.d.ts +3 -4
  140. package/paragraph/Paragraph.js +5 -5
  141. package/password-input/Icons.d.ts +6 -0
  142. package/password-input/Icons.js +39 -0
  143. package/password-input/PasswordInput.js +35 -82
  144. package/password-input/PasswordInput.stories.tsx +1 -0
  145. package/password-input/PasswordInput.test.js +34 -40
  146. package/progress-bar/ProgressBar.d.ts +2 -2
  147. package/progress-bar/ProgressBar.js +5 -5
  148. package/progress-bar/ProgressBar.stories.jsx +35 -2
  149. package/progress-bar/ProgressBar.test.js +1 -1
  150. package/progress-bar/types.d.ts +4 -3
  151. package/quick-nav/QuickNav.js +11 -12
  152. package/quick-nav/QuickNav.stories.tsx +111 -19
  153. package/radio-group/Radio.d.ts +1 -1
  154. package/radio-group/Radio.js +50 -35
  155. package/radio-group/RadioGroup.js +29 -29
  156. package/radio-group/RadioGroup.stories.tsx +132 -18
  157. package/radio-group/RadioGroup.test.js +153 -99
  158. package/radio-group/types.d.ts +5 -5
  159. package/resultset-table/Icons.d.ts +7 -0
  160. package/resultset-table/Icons.js +51 -0
  161. package/{resultsetTable → resultset-table}/ResultsetTable.js +49 -108
  162. package/{resultsetTable → resultset-table}/ResultsetTable.stories.tsx +50 -25
  163. package/{resultsetTable → resultset-table}/ResultsetTable.test.js +41 -64
  164. package/{resultsetTable → resultset-table}/types.d.ts +1 -1
  165. package/resultset-table/types.js +5 -0
  166. package/select/Listbox.d.ts +1 -1
  167. package/select/Listbox.js +5 -35
  168. package/select/Option.js +11 -24
  169. package/select/Select.js +59 -36
  170. package/select/Select.stories.tsx +497 -153
  171. package/select/Select.test.js +345 -292
  172. package/select/types.d.ts +2 -2
  173. package/sidenav/Icons.d.ts +7 -0
  174. package/sidenav/Icons.js +51 -0
  175. package/sidenav/Sidenav.d.ts +2 -2
  176. package/sidenav/Sidenav.js +66 -96
  177. package/sidenav/Sidenav.stories.tsx +165 -63
  178. package/sidenav/types.d.ts +21 -18
  179. package/slider/Slider.d.ts +2 -2
  180. package/slider/Slider.js +17 -14
  181. package/slider/Slider.stories.tsx +57 -0
  182. package/slider/Slider.test.js +1 -1
  183. package/slider/types.d.ts +6 -2
  184. package/spinner/Spinner.js +17 -23
  185. package/spinner/Spinner.stories.jsx +53 -27
  186. package/spinner/Spinner.test.js +1 -1
  187. package/switch/Switch.d.ts +3 -3
  188. package/switch/Switch.js +95 -84
  189. package/switch/Switch.stories.tsx +33 -0
  190. package/switch/Switch.test.js +27 -14
  191. package/switch/types.d.ts +8 -3
  192. package/table/Table.js +3 -3
  193. package/table/Table.stories.jsx +80 -1
  194. package/table/Table.test.js +2 -2
  195. package/tabs/Tab.js +12 -15
  196. package/tabs/Tabs.js +11 -17
  197. package/tabs/Tabs.stories.tsx +45 -5
  198. package/tabs/Tabs.test.js +4 -5
  199. package/tabs/types.d.ts +2 -2
  200. package/tag/Tag.js +7 -9
  201. package/tag/Tag.stories.tsx +14 -1
  202. package/tag/Tag.test.js +1 -1
  203. package/text-input/Icons.d.ts +8 -0
  204. package/text-input/Icons.js +60 -0
  205. package/text-input/Suggestion.js +40 -11
  206. package/text-input/Suggestions.d.ts +4 -0
  207. package/text-input/Suggestions.js +134 -0
  208. package/text-input/TextInput.js +232 -342
  209. package/text-input/TextInput.stories.tsx +319 -184
  210. package/text-input/TextInput.test.js +848 -726
  211. package/text-input/types.d.ts +27 -2
  212. package/textarea/Textarea.js +27 -26
  213. package/textarea/Textarea.stories.jsx +68 -1
  214. package/textarea/Textarea.test.js +61 -19
  215. package/textarea/types.d.ts +4 -0
  216. package/toggle-group/ToggleGroup.d.ts +2 -2
  217. package/toggle-group/ToggleGroup.js +85 -59
  218. package/toggle-group/ToggleGroup.stories.tsx +48 -3
  219. package/toggle-group/ToggleGroup.test.js +38 -24
  220. package/toggle-group/types.d.ts +22 -13
  221. package/typography/Typography.d.ts +2 -2
  222. package/typography/Typography.js +14 -113
  223. package/typography/Typography.stories.tsx +1 -1
  224. package/useTheme.d.ts +1251 -1
  225. package/useTheme.js +1 -1
  226. package/useTranslatedLabels.d.ts +84 -1
  227. package/utils/BaseTypography.d.ts +21 -0
  228. package/utils/BaseTypography.js +108 -0
  229. package/utils/FocusLock.d.ts +13 -0
  230. package/utils/FocusLock.js +138 -0
  231. package/wizard/Wizard.js +2 -2
  232. package/wizard/Wizard.stories.tsx +20 -0
  233. package/wizard/Wizard.test.js +1 -1
  234. package/wizard/types.d.ts +5 -6
  235. package/card/ice-cream.jpg +0 -0
  236. package/common/RequiredComponent.js +0 -32
  237. package/number-input/NumberInputContext.d.ts +0 -4
  238. package/number-input/NumberInputContext.js +0 -19
  239. package/number-input/numberInputContextTypes.d.ts +0 -19
  240. /package/{resultsetTable → grid}/types.js +0 -0
  241. /package/{tabs-nav → image}/types.js +0 -0
  242. /package/{tabs-nav → nav-tabs}/Tab.d.ts +0 -0
  243. /package/{number-input/numberInputContextTypes.js → nav-tabs/types.js} +0 -0
  244. /package/{resultsetTable → resultset-table}/ResultsetTable.d.ts +0 -0
@@ -8,68 +8,93 @@ var _react2 = require("@testing-library/react");
8
8
 
9
9
  var _userEvent = _interopRequireDefault(require("@testing-library/user-event"));
10
10
 
11
- var _NumberInput = _interopRequireDefault(require("./NumberInput"));
11
+ var _NumberInput = _interopRequireDefault(require("./NumberInput.tsx"));
12
12
 
13
13
  describe("Number input component tests", function () {
14
- test("Number input renders with label", function () {
14
+ test("Number input renders with label, helper text, placeholder and increment/decrement action buttons", function () {
15
15
  var _render = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_NumberInput["default"], {
16
- label: "Number input label"
16
+ label: "Number input label",
17
+ helperText: "Helper text",
18
+ placeholder: "Placeholder"
17
19
  })),
18
- getByText = _render.getByText;
20
+ getByLabelText = _render.getByLabelText,
21
+ getByText = _render.getByText,
22
+ queryAllByRole = _render.queryAllByRole;
19
23
 
24
+ var number = getByLabelText("Number input label");
20
25
  expect(getByText("Number input label")).toBeTruthy();
26
+ expect(getByText("Helper text")).toBeTruthy();
27
+ expect(number.getAttribute("placeholder")).toBe("Placeholder");
28
+ expect(queryAllByRole("button").length).toBe(2);
21
29
  });
22
- test("Number input renders with helper text", function () {
30
+ test("Number input buttons' tooltip is correct", function () {
23
31
  var _render2 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_NumberInput["default"], {
24
- helperText: "Helper text"
32
+ label: "Number label"
25
33
  })),
26
- getByText = _render2.getByText;
34
+ getByTitle = _render2.getByTitle;
27
35
 
28
- expect(getByText("Helper text")).toBeTruthy();
36
+ expect(getByTitle("Decrement value")).toBeTruthy();
37
+ expect(getByTitle("Increment value")).toBeTruthy();
29
38
  });
30
- test("Number input renders with placeholder", function () {
39
+ test("Number input is disabled", function () {
31
40
  var _render3 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_NumberInput["default"], {
32
41
  label: "Number label",
33
- placeholder: "Placeholder"
42
+ disabled: true
34
43
  })),
35
44
  getByLabelText = _render3.getByLabelText;
36
45
 
37
46
  var number = getByLabelText("Number label");
38
- expect(number.getAttribute("placeholder")).toBe("Placeholder");
47
+ expect(number.disabled).toBeTruthy();
39
48
  });
40
- test("Number input renders increment and decrement buttons", function () {
49
+ test("Number input is read only and cannot be incremented or decremented using the actions", function () {
41
50
  var _render4 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_NumberInput["default"], {
42
- label: "Number label"
51
+ label: "Number label",
52
+ readOnly: true
43
53
  })),
44
- queryAllByRole = _render4.queryAllByRole;
54
+ getByLabelText = _render4.getByLabelText,
55
+ getAllByRole = _render4.getAllByRole;
45
56
 
46
- expect(queryAllByRole("button").length).toBe(2);
47
- });
48
- test("Number input buttons' tooltip is correct", function () {
49
- var _render5 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_NumberInput["default"], {
50
- label: "Number label"
51
- })),
52
- getByTitle = _render5.getByTitle;
57
+ var number = getByLabelText("Number label");
58
+ expect(number.readOnly).toBeTruthy();
59
+ var decrement = getAllByRole("button")[0];
53
60
 
54
- expect(getByTitle("Decrement value")).toBeTruthy();
55
- expect(getByTitle("Increment value")).toBeTruthy();
61
+ _userEvent["default"].click(decrement);
62
+
63
+ expect(number.value).toBe("");
64
+ var increment = getAllByRole("button")[1];
65
+
66
+ _userEvent["default"].click(increment);
67
+
68
+ expect(number.value).toBe("");
56
69
  });
57
- test("Number input is disabled", function () {
58
- var _render6 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_NumberInput["default"], {
70
+ test("Number input is read only and cannot be incremented or decremented using the arrow keys", function () {
71
+ var _render5 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_NumberInput["default"], {
59
72
  label: "Number label",
60
- disabled: true
73
+ readOnly: true
61
74
  })),
62
- getByLabelText = _render6.getByLabelText;
75
+ getByLabelText = _render5.getByLabelText;
63
76
 
64
77
  var number = getByLabelText("Number label");
65
- expect(number.disabled).toBeTruthy();
78
+ expect(number.readOnly).toBeTruthy();
79
+
80
+ _react2.fireEvent.keyDown(number, {
81
+ keyCode: 38
82
+ });
83
+
84
+ expect(number.value).toBe("");
85
+
86
+ _react2.fireEvent.keyDown(number, {
87
+ keyCode: 40
88
+ });
89
+
90
+ expect(number.value).toBe("");
66
91
  });
67
92
  test("Number input is optional", function () {
68
- var _render7 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_NumberInput["default"], {
93
+ var _render6 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_NumberInput["default"], {
69
94
  label: "Number label",
70
95
  optional: true
71
96
  })),
72
- getByText = _render7.getByText;
97
+ getByText = _render6.getByText;
73
98
 
74
99
  expect(getByText("(Optional)")).toBeTruthy();
75
100
  });
@@ -77,19 +102,20 @@ describe("Number input component tests", function () {
77
102
  var onBlur = jest.fn();
78
103
  var onChange = jest.fn();
79
104
 
80
- var _render8 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_NumberInput["default"], {
105
+ var _render7 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_NumberInput["default"], {
106
+ label: "Number input label",
81
107
  onBlur: onBlur,
82
108
  onChange: onChange
83
109
  })),
84
- getByRole = _render8.getByRole;
110
+ getByLabelText = _render7.getByLabelText;
85
111
 
86
- var input = getByRole("textbox");
112
+ var number = getByLabelText("Number input label");
87
113
 
88
- _userEvent["default"].type(input, "1");
114
+ _userEvent["default"].type(number, "1");
89
115
 
90
- _userEvent["default"].clear(input);
116
+ _userEvent["default"].clear(number);
91
117
 
92
- _react2.fireEvent.blur(input);
118
+ _react2.fireEvent.blur(number);
93
119
 
94
120
  expect(onBlur).toHaveBeenCalled();
95
121
  expect(onBlur).toHaveBeenCalledWith({
@@ -102,33 +128,33 @@ describe("Number input component tests", function () {
102
128
  error: "This field is required. Please, enter a value."
103
129
  });
104
130
  });
105
- test("Suffix and prefix must be shown)", function () {
106
- var _render9 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_NumberInput["default"], {
131
+ test("Suffix and prefix must be shown", function () {
132
+ var _render8 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_NumberInput["default"], {
107
133
  label: "Number input label",
108
134
  prefix: "+34",
109
135
  suffix: "USD"
110
136
  })),
111
- getByText = _render9.getByText;
137
+ getByText = _render8.getByText;
112
138
 
113
139
  expect(getByText("+34")).toBeTruthy();
114
140
  expect(getByText("USD")).toBeTruthy();
115
141
  });
116
142
  test("Invalid number input renders error", function () {
117
- var _render10 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_NumberInput["default"], {
143
+ var _render9 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_NumberInput["default"], {
118
144
  error: "Error message."
119
145
  })),
120
- getByText = _render10.getByText;
146
+ getByText = _render9.getByText;
121
147
 
122
148
  expect(getByText("Error message.")).toBeTruthy();
123
149
  });
124
150
  test("onChange function is called correctly", function () {
125
151
  var onChange = jest.fn();
126
152
 
127
- var _render11 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_NumberInput["default"], {
153
+ var _render10 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_NumberInput["default"], {
128
154
  label: "Number input label",
129
155
  onChange: onChange
130
156
  })),
131
- getByLabelText = _render11.getByLabelText;
157
+ getByLabelText = _render10.getByLabelText;
132
158
 
133
159
  var number = getByLabelText("Number input label");
134
160
 
@@ -146,41 +172,41 @@ describe("Number input component tests", function () {
146
172
  });
147
173
  expect(number.value).toBe("1");
148
174
  });
149
- test("Error message is shown if the value is less than the min value", function () {
175
+ test("Error message is shown if the typed value is less than the min value", function () {
150
176
  var onChange = jest.fn(function (_ref) {
151
177
  var value = _ref.value,
152
178
  error = _ref.error;
153
- expect(value).toBe("1");
154
- expect(error).toBe("Value must be greater than or equal to 5.");
179
+ expect(value).toBe("-1");
180
+ expect(error).toBe("Value must be greater than or equal to 0.");
155
181
  });
156
182
  var onBlur = jest.fn(function (_ref2) {
157
183
  var value = _ref2.value,
158
184
  error = _ref2.error;
159
- expect(value).toBe("1");
160
- expect(error).toBe("Value must be greater than or equal to 5.");
185
+ expect(value).toBe("-1");
186
+ expect(error).toBe("Value must be greater than or equal to 0.");
161
187
  });
162
188
 
163
- var _render12 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_NumberInput["default"], {
189
+ var _render11 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_NumberInput["default"], {
164
190
  label: "Number input label",
165
- min: 5,
191
+ min: 0,
166
192
  onBlur: onBlur,
167
193
  onChange: onChange
168
194
  })),
169
- getByLabelText = _render12.getByLabelText;
195
+ getByLabelText = _render11.getByLabelText;
170
196
 
171
197
  var number = getByLabelText("Number input label");
172
198
 
173
- _userEvent["default"].type(number, "1");
199
+ _userEvent["default"].type(number, "-1");
174
200
 
175
201
  _react2.fireEvent.blur(number);
176
202
  });
177
203
  test("Cannot decrement the value if it is less than the min value", function () {
178
- var _render13 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_NumberInput["default"], {
204
+ var _render12 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_NumberInput["default"], {
179
205
  label: "Number input label",
180
206
  min: 5
181
207
  })),
182
- getByLabelText = _render13.getByLabelText,
183
- getAllByRole = _render13.getAllByRole;
208
+ getByLabelText = _render12.getByLabelText,
209
+ getAllByRole = _render12.getAllByRole;
184
210
 
185
211
  var number = getByLabelText("Number input label");
186
212
 
@@ -196,12 +222,12 @@ describe("Number input component tests", function () {
196
222
  expect(number.value).toBe("1");
197
223
  });
198
224
  test("Increment the value when it is less than the min value", function () {
199
- var _render14 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_NumberInput["default"], {
225
+ var _render13 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_NumberInput["default"], {
200
226
  label: "Number input label",
201
227
  min: 5
202
228
  })),
203
- getByLabelText = _render14.getByLabelText,
204
- getAllByRole = _render14.getAllByRole;
229
+ getByLabelText = _render13.getByLabelText,
230
+ getAllByRole = _render13.getAllByRole;
205
231
 
206
232
  var number = getByLabelText("Number input label");
207
233
 
@@ -216,17 +242,17 @@ describe("Number input component tests", function () {
216
242
 
217
243
  expect(number.value).toBe("5");
218
244
  });
219
- test("Error message is shown if the value is greater than the max value", function () {
245
+ test("Error message is shown if the typed value is greater than the max value", function () {
220
246
  var onChange = jest.fn();
221
247
  var onBlur = jest.fn();
222
248
 
223
- var _render15 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_NumberInput["default"], {
249
+ var _render14 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_NumberInput["default"], {
224
250
  label: "Number input label",
225
251
  max: 10,
226
252
  onBlur: onBlur,
227
253
  onChange: onChange
228
254
  })),
229
- getByLabelText = _render15.getByLabelText;
255
+ getByLabelText = _render14.getByLabelText;
230
256
 
231
257
  var number = getByLabelText("Number input label");
232
258
 
@@ -247,12 +273,12 @@ describe("Number input component tests", function () {
247
273
  });
248
274
  });
249
275
  test("Cannot increment the value if it is greater than the max value", function () {
250
- var _render16 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_NumberInput["default"], {
276
+ var _render15 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_NumberInput["default"], {
251
277
  label: "Number input label",
252
278
  max: 10
253
279
  })),
254
- getByLabelText = _render16.getByLabelText,
255
- getAllByRole = _render16.getAllByRole;
280
+ getByLabelText = _render15.getByLabelText,
281
+ getAllByRole = _render15.getAllByRole;
256
282
 
257
283
  var number = getByLabelText("Number input label");
258
284
 
@@ -268,20 +294,20 @@ describe("Number input component tests", function () {
268
294
  expect(number.value).toBe("12");
269
295
  });
270
296
  test("Decrement the value when it is greater than the max value", function () {
271
- var _render17 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_NumberInput["default"], {
297
+ var _render16 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_NumberInput["default"], {
272
298
  label: "Number input label",
273
299
  max: 10
274
300
  })),
275
- getByLabelText = _render17.getByLabelText,
276
- getAllByRole = _render17.getAllByRole;
301
+ getByLabelText = _render16.getByLabelText,
302
+ getAllByRole = _render16.getAllByRole;
277
303
 
278
304
  var number = getByLabelText("Number input label");
279
305
 
280
- _userEvent["default"].type(number, "12");
306
+ _userEvent["default"].type(number, "120");
281
307
 
282
308
  _react2.fireEvent.blur(number);
283
309
 
284
- expect(number.value).toBe("12");
310
+ expect(number.value).toBe("120");
285
311
  var decrement = getAllByRole("button")[0];
286
312
 
287
313
  _userEvent["default"].click(decrement);
@@ -289,13 +315,13 @@ describe("Number input component tests", function () {
289
315
  expect(number.value).toBe("10");
290
316
  });
291
317
  test("Increment and decrement the value with min and max values", function () {
292
- var _render18 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_NumberInput["default"], {
318
+ var _render17 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_NumberInput["default"], {
293
319
  label: "Number input label",
294
320
  min: 5,
295
321
  max: 10
296
322
  })),
297
- getByLabelText = _render18.getByLabelText,
298
- getAllByRole = _render18.getAllByRole;
323
+ getByLabelText = _render17.getByLabelText,
324
+ getAllByRole = _render17.getAllByRole;
299
325
 
300
326
  var number = getByLabelText("Number input label");
301
327
 
@@ -331,13 +357,13 @@ describe("Number input component tests", function () {
331
357
 
332
358
  expect(number.value).toBe("10");
333
359
  });
334
- test("Increment and decrement the value with step", function () {
335
- var _render19 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_NumberInput["default"], {
360
+ test("Increment and decrement the value with an integer step", function () {
361
+ var _render18 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_NumberInput["default"], {
336
362
  label: "Number input label",
337
363
  step: 5
338
364
  })),
339
- getByLabelText = _render19.getByLabelText,
340
- getAllByRole = _render19.getAllByRole;
365
+ getByLabelText = _render18.getByLabelText,
366
+ getAllByRole = _render18.getAllByRole;
341
367
 
342
368
  var number = getByLabelText("Number input label");
343
369
 
@@ -365,13 +391,46 @@ describe("Number input component tests", function () {
365
391
 
366
392
  expect(number.value).toBe("10");
367
393
  });
394
+ test("Increment and decrement the value with a decimal step", function () {
395
+ var _render19 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_NumberInput["default"], {
396
+ label: "Number input label",
397
+ step: 0.5
398
+ })),
399
+ getByLabelText = _render19.getByLabelText,
400
+ getAllByRole = _render19.getAllByRole;
401
+
402
+ var number = getByLabelText("Number input label");
403
+
404
+ _userEvent["default"].type(number, "-9");
405
+
406
+ _react2.fireEvent.blur(number);
407
+
408
+ expect(number.value).toBe("-9");
409
+ var increment = getAllByRole("button")[1];
410
+
411
+ _userEvent["default"].click(increment);
412
+
413
+ expect(number.value).toBe("-8.5");
414
+
415
+ _userEvent["default"].click(increment);
416
+
417
+ expect(number.value).toBe("-8");
418
+ var decrement = getAllByRole("button")[0];
419
+
420
+ _userEvent["default"].click(decrement);
421
+
422
+ _userEvent["default"].click(decrement);
423
+
424
+ _userEvent["default"].click(decrement);
425
+
426
+ expect(number.value).toBe("-9.5");
427
+
428
+ _userEvent["default"].click(decrement);
429
+
430
+ expect(number.value).toBe("-10");
431
+ });
368
432
  test("Increment and decrement the value with min, max and step", function () {
369
- var onBlur = jest.fn(function (_ref3) {
370
- var value = _ref3.value,
371
- error = _ref3.error;
372
- expect(value).toBe("1");
373
- expect(error).toBe("Value must be greater than or equal to 5.");
374
- });
433
+ var onBlur = jest.fn();
375
434
 
376
435
  var _render20 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_NumberInput["default"], {
377
436
  label: "Number input label",
@@ -389,6 +448,10 @@ describe("Number input component tests", function () {
389
448
 
390
449
  _react2.fireEvent.blur(number);
391
450
 
451
+ expect(onBlur).toHaveBeenCalledWith({
452
+ value: "1",
453
+ error: "Value must be greater than or equal to 5."
454
+ });
392
455
  var increment = getAllByRole("button")[1];
393
456
 
394
457
  _userEvent["default"].click(increment);
@@ -401,33 +464,194 @@ describe("Number input component tests", function () {
401
464
 
402
465
  _userEvent["default"].click(increment);
403
466
 
404
- expect(number.value).toBe("20");
467
+ expect(number.value).toBe("13");
405
468
 
406
469
  _userEvent["default"].click(increment);
407
470
 
408
- expect(number.value).toBe("20");
471
+ expect(number.value).toBe("13");
409
472
  var decrement = getAllByRole("button")[0];
410
473
 
411
474
  _userEvent["default"].click(decrement);
412
475
 
413
- expect(number.value).toBe("12");
476
+ expect(number.value).toBe("5");
414
477
 
415
478
  _userEvent["default"].click(decrement);
416
479
 
417
480
  expect(number.value).toBe("5");
418
481
 
419
482
  _userEvent["default"].click(decrement);
483
+ });
484
+ test("Start incrementing from 0 when the min value is less than 0 and the max value is bigger than 0", function () {
485
+ var onBlur = jest.fn();
420
486
 
421
- expect(number.value).toBe("5");
487
+ var _render21 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_NumberInput["default"], {
488
+ label: "Number input label",
489
+ min: -10,
490
+ max: 10,
491
+ step: 1,
492
+ onBlur: onBlur
493
+ })),
494
+ getByLabelText = _render21.getByLabelText,
495
+ getAllByRole = _render21.getAllByRole;
496
+
497
+ var number = getByLabelText("Number input label");
498
+ var increment = getAllByRole("button")[1];
499
+
500
+ _userEvent["default"].click(increment);
501
+
502
+ expect(number.value).toBe("1");
503
+
504
+ _userEvent["default"].click(increment);
505
+
506
+ expect(number.value).toBe("2");
507
+ });
508
+ test("Start incrementing from 0 when the min value is less than 0 and the max is 0", function () {
509
+ var _render22 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_NumberInput["default"], {
510
+ label: "Number input label",
511
+ min: -10,
512
+ max: 0,
513
+ step: 1
514
+ })),
515
+ getByLabelText = _render22.getByLabelText,
516
+ getAllByRole = _render22.getAllByRole;
517
+
518
+ var number = getByLabelText("Number input label");
519
+ var increment = getAllByRole("button")[1];
520
+
521
+ _userEvent["default"].click(increment);
522
+
523
+ expect(number.value).toBe("0");
524
+
525
+ _userEvent["default"].click(increment);
526
+
527
+ expect(number.value).toBe("0");
528
+ });
529
+ test("Start incrementing from the min value when it is bigger than 0", function () {
530
+ var _render23 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_NumberInput["default"], {
531
+ label: "Number input label",
532
+ min: 2,
533
+ max: 10,
534
+ step: 0.5
535
+ })),
536
+ getByLabelText = _render23.getByLabelText,
537
+ getAllByRole = _render23.getAllByRole;
538
+
539
+ var number = getByLabelText("Number input label");
540
+ var increment = getAllByRole("button")[1];
541
+
542
+ _userEvent["default"].click(increment);
543
+
544
+ expect(number.value).toBe("2");
545
+
546
+ _userEvent["default"].click(increment);
547
+
548
+ expect(number.value).toBe("2.5");
549
+ });
550
+ test("Start incrementing from the max value when it is less than 0", function () {
551
+ var _render24 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_NumberInput["default"], {
552
+ label: "Number input label",
553
+ min: -10,
554
+ max: -1,
555
+ step: 0.5
556
+ })),
557
+ getByLabelText = _render24.getByLabelText,
558
+ getAllByRole = _render24.getAllByRole;
559
+
560
+ var number = getByLabelText("Number input label");
561
+ var increment = getAllByRole("button")[1];
562
+
563
+ _userEvent["default"].click(increment);
564
+
565
+ expect(number.value).toBe("-1");
566
+
567
+ _userEvent["default"].click(increment);
568
+
569
+ expect(number.value).toBe("-1");
570
+ });
571
+ test("Start decrementing from 0 when the min value is less than 0 and the max value is bigger than 0", function () {
572
+ var _render25 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_NumberInput["default"], {
573
+ label: "Number input label",
574
+ min: -10,
575
+ max: 10,
576
+ step: 1
577
+ })),
578
+ getByLabelText = _render25.getByLabelText,
579
+ getAllByRole = _render25.getAllByRole;
580
+
581
+ var number = getByLabelText("Number input label");
582
+ var decrement = getAllByRole("button")[0];
583
+
584
+ _userEvent["default"].click(decrement);
585
+
586
+ expect(number.value).toBe("-1");
587
+ });
588
+ test("Start decrementing from 0 when the min value is 0 and the max value is bigger than 0", function () {
589
+ var _render26 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_NumberInput["default"], {
590
+ label: "Number input label",
591
+ min: 0,
592
+ max: 10,
593
+ step: 1
594
+ })),
595
+ getByLabelText = _render26.getByLabelText,
596
+ getAllByRole = _render26.getAllByRole;
597
+
598
+ var number = getByLabelText("Number input label");
599
+ var decrement = getAllByRole("button")[0];
600
+
601
+ _userEvent["default"].click(decrement);
602
+
603
+ expect(number.value).toBe("0");
604
+ });
605
+ test("Start decrementing from the min value when it is bigger than 0", function () {
606
+ var _render27 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_NumberInput["default"], {
607
+ label: "Number input label",
608
+ min: 2,
609
+ max: 10,
610
+ step: 0.5
611
+ })),
612
+ getByLabelText = _render27.getByLabelText,
613
+ getAllByRole = _render27.getAllByRole;
614
+
615
+ var number = getByLabelText("Number input label");
616
+ var decrement = getAllByRole("button")[0];
617
+
618
+ _userEvent["default"].click(decrement);
619
+
620
+ expect(number.value).toBe("2");
621
+
622
+ _userEvent["default"].click(decrement);
623
+
624
+ expect(number.value).toBe("2");
625
+ });
626
+ test("Start decrementing from the max value when it is less than 0", function () {
627
+ var _render28 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_NumberInput["default"], {
628
+ label: "Number input label",
629
+ min: -10,
630
+ max: -1,
631
+ step: 0.5
632
+ })),
633
+ getByLabelText = _render28.getByLabelText,
634
+ getAllByRole = _render28.getAllByRole;
635
+
636
+ var number = getByLabelText("Number input label");
637
+ var decrement = getAllByRole("button")[0];
638
+
639
+ _userEvent["default"].click(decrement);
640
+
641
+ expect(number.value).toBe("-1");
642
+
643
+ _userEvent["default"].click(decrement);
644
+
645
+ expect(number.value).toBe("-1.5");
422
646
  });
423
647
  test("Increment and decrement the value with min, max and step using the arrows in keyboard", function () {
424
- var _render21 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_NumberInput["default"], {
648
+ var _render29 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_NumberInput["default"], {
425
649
  label: "Number input label",
426
650
  min: 5,
427
651
  max: 20,
428
652
  step: 5
429
653
  })),
430
- getByLabelText = _render21.getByLabelText;
654
+ getByLabelText = _render29.getByLabelText;
431
655
 
432
656
  var number = getByLabelText("Number input label");
433
657
 
@@ -487,14 +711,15 @@ describe("Number input component tests", function () {
487
711
 
488
712
  expect(number.value).toBe("5");
489
713
  });
490
- test("Number has correct accesibility attributes", function () {
491
- var _render22 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_NumberInput["default"], {
714
+ test("Number has correct accessibility attributes", function () {
715
+ var _render30 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_NumberInput["default"], {
492
716
  label: "Number input label"
493
717
  })),
494
- getByLabelText = _render22.getByLabelText,
495
- getAllByRole = _render22.getAllByRole;
718
+ getByLabelText = _render30.getByLabelText,
719
+ getAllByRole = _render30.getAllByRole;
496
720
 
497
721
  var number = getByLabelText("Number input label");
722
+ expect(number.getAttribute("type")).toBe("number");
498
723
  expect(number.getAttribute("aria-autocomplete")).toBeNull();
499
724
  expect(number.getAttribute("aria-controls")).toBeNull();
500
725
  expect(number.getAttribute("aria-expanded")).toBeNull();
@@ -503,4 +728,41 @@ describe("Number input component tests", function () {
503
728
  var increment = getAllByRole("button")[1];
504
729
  expect(increment.getAttribute("aria-label")).toBe("Increment value");
505
730
  });
731
+ test("Number input submits correct values inside a form and actions don't trigger the submit event", function () {
732
+ var handlerOnSubmit = jest.fn(function (e) {
733
+ e.preventDefault();
734
+ var formData = new FormData(e.target);
735
+ var formProps = Object.fromEntries(formData);
736
+ expect(formProps).toStrictEqual({
737
+ data: "0"
738
+ });
739
+ });
740
+
741
+ var _render31 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement("form", {
742
+ onSubmit: handlerOnSubmit
743
+ }, /*#__PURE__*/_react["default"].createElement(_NumberInput["default"], {
744
+ label: "Number input label",
745
+ name: "data"
746
+ }), /*#__PURE__*/_react["default"].createElement("button", {
747
+ type: "submit"
748
+ }, "Submit"))),
749
+ getByText = _render31.getByText,
750
+ getAllByRole = _render31.getAllByRole;
751
+
752
+ var less = getAllByRole("button")[0];
753
+ var more = getAllByRole("button")[1];
754
+ var submit = getByText("Submit");
755
+
756
+ _userEvent["default"].click(more);
757
+
758
+ expect(handlerOnSubmit).not.toHaveBeenCalled();
759
+
760
+ _userEvent["default"].click(less);
761
+
762
+ expect(handlerOnSubmit).not.toHaveBeenCalled();
763
+
764
+ _userEvent["default"].click(submit);
765
+
766
+ expect(handlerOnSubmit).toHaveBeenCalled();
767
+ });
506
768
  });