@dxc-technology/halstack-react 0.0.0-49c38a4 → 0.0.0-4a67e25

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 (225) hide show
  1. package/HalstackContext.d.ts +12 -0
  2. package/HalstackContext.js +294 -0
  3. package/accordion/Accordion.d.ts +1 -1
  4. package/accordion/Accordion.js +121 -123
  5. package/accordion/Accordion.stories.tsx +13 -14
  6. package/accordion/Accordion.test.js +25 -11
  7. package/accordion/types.d.ts +9 -4
  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 +30 -37
  12. package/accordion-group/types.d.ts +14 -3
  13. package/alert/Alert.js +5 -2
  14. package/badge/Badge.d.ts +1 -1
  15. package/badge/Badge.js +5 -3
  16. package/badge/types.d.ts +1 -0
  17. package/bleed/Bleed.js +1 -34
  18. package/bleed/Bleed.stories.tsx +94 -95
  19. package/bleed/types.d.ts +25 -1
  20. package/box/Box.js +23 -33
  21. package/box/types.d.ts +1 -0
  22. package/bulleted-list/BulletedList.d.ts +7 -0
  23. package/bulleted-list/BulletedList.js +123 -0
  24. package/bulleted-list/BulletedList.stories.tsx +200 -0
  25. package/bulleted-list/types.d.ts +11 -0
  26. package/{list → bulleted-list}/types.js +0 -0
  27. package/button/Button.js +53 -68
  28. package/button/Button.stories.tsx +9 -0
  29. package/button/types.d.ts +7 -7
  30. package/card/Card.js +24 -27
  31. package/card/types.d.ts +1 -0
  32. package/checkbox/Checkbox.d.ts +2 -2
  33. package/checkbox/Checkbox.js +106 -109
  34. package/checkbox/Checkbox.stories.tsx +146 -130
  35. package/checkbox/Checkbox.test.js +100 -10
  36. package/checkbox/types.d.ts +13 -5
  37. package/chip/types.d.ts +1 -1
  38. package/common/variables.js +236 -106
  39. package/date-input/DateInput.js +56 -42
  40. package/date-input/DateInput.stories.tsx +19 -8
  41. package/date-input/DateInput.test.js +161 -87
  42. package/date-input/types.d.ts +16 -9
  43. package/dialog/Dialog.js +46 -50
  44. package/dialog/Dialog.stories.tsx +57 -2
  45. package/dialog/Dialog.test.js +34 -4
  46. package/dialog/types.d.ts +3 -2
  47. package/dropdown/Dropdown.d.ts +1 -1
  48. package/dropdown/Dropdown.js +247 -251
  49. package/dropdown/Dropdown.stories.tsx +126 -63
  50. package/dropdown/Dropdown.test.js +504 -108
  51. package/dropdown/DropdownMenu.d.ts +4 -0
  52. package/dropdown/DropdownMenu.js +80 -0
  53. package/dropdown/DropdownMenuItem.d.ts +4 -0
  54. package/dropdown/DropdownMenuItem.js +92 -0
  55. package/dropdown/types.d.ts +25 -5
  56. package/file-input/FileInput.d.ts +2 -2
  57. package/file-input/FileInput.js +183 -222
  58. package/file-input/FileInput.stories.tsx +38 -10
  59. package/file-input/FileInput.test.js +53 -12
  60. package/file-input/FileItem.d.ts +4 -14
  61. package/file-input/FileItem.js +43 -66
  62. package/file-input/types.d.ts +17 -0
  63. package/flex/Flex.d.ts +4 -0
  64. package/flex/Flex.js +69 -0
  65. package/flex/Flex.stories.tsx +103 -0
  66. package/flex/types.d.ts +32 -0
  67. package/{radio → flex}/types.js +0 -0
  68. package/footer/Footer.js +15 -88
  69. package/footer/Footer.stories.tsx +8 -1
  70. package/footer/Icons.js +1 -1
  71. package/footer/types.d.ts +2 -1
  72. package/header/Header.js +95 -114
  73. package/header/Header.stories.tsx +46 -36
  74. package/header/Header.test.js +18 -2
  75. package/header/Icons.js +2 -2
  76. package/header/types.d.ts +3 -2
  77. package/inset/Inset.js +1 -34
  78. package/inset/Inset.stories.tsx +36 -36
  79. package/inset/types.d.ts +25 -1
  80. package/layout/ApplicationLayout.d.ts +16 -6
  81. package/layout/ApplicationLayout.js +71 -131
  82. package/layout/ApplicationLayout.stories.tsx +84 -93
  83. package/layout/Icons.d.ts +5 -0
  84. package/layout/Icons.js +13 -2
  85. package/layout/SidenavContext.d.ts +5 -0
  86. package/layout/SidenavContext.js +19 -0
  87. package/layout/types.d.ts +18 -33
  88. package/link/Link.d.ts +3 -2
  89. package/link/Link.js +58 -75
  90. package/link/Link.stories.tsx +95 -53
  91. package/link/Link.test.js +7 -15
  92. package/link/types.d.ts +7 -23
  93. package/main.d.ts +8 -10
  94. package/main.js +46 -56
  95. package/number-input/NumberInput.js +11 -18
  96. package/number-input/NumberInput.stories.tsx +5 -5
  97. package/number-input/NumberInput.test.js +45 -11
  98. package/number-input/types.d.ts +17 -10
  99. package/package.json +20 -16
  100. package/paginator/Paginator.js +17 -38
  101. package/paginator/Paginator.test.js +43 -1
  102. package/paragraph/Paragraph.d.ts +6 -0
  103. package/paragraph/Paragraph.js +38 -0
  104. package/paragraph/Paragraph.stories.tsx +44 -0
  105. package/password-input/PasswordInput.js +7 -4
  106. package/password-input/PasswordInput.test.js +16 -18
  107. package/password-input/types.d.ts +14 -11
  108. package/progress-bar/ProgressBar.d.ts +2 -2
  109. package/progress-bar/ProgressBar.js +57 -51
  110. package/progress-bar/ProgressBar.stories.jsx +13 -11
  111. package/progress-bar/ProgressBar.test.js +67 -22
  112. package/progress-bar/types.d.ts +3 -4
  113. package/quick-nav/QuickNav.d.ts +4 -0
  114. package/quick-nav/QuickNav.js +117 -0
  115. package/quick-nav/QuickNav.stories.tsx +342 -0
  116. package/quick-nav/types.d.ts +21 -0
  117. package/{row → quick-nav}/types.js +0 -0
  118. package/radio-group/Radio.d.ts +1 -1
  119. package/radio-group/Radio.js +43 -28
  120. package/radio-group/RadioGroup.js +32 -28
  121. package/radio-group/RadioGroup.stories.tsx +5 -0
  122. package/radio-group/RadioGroup.test.js +144 -116
  123. package/radio-group/types.d.ts +79 -2
  124. package/resultsetTable/ResultsetTable.js +1 -3
  125. package/resultsetTable/ResultsetTable.test.js +42 -0
  126. package/select/Icons.d.ts +10 -0
  127. package/select/Icons.js +93 -0
  128. package/select/Listbox.d.ts +4 -0
  129. package/select/Listbox.js +198 -0
  130. package/select/Option.d.ts +4 -0
  131. package/select/Option.js +110 -0
  132. package/select/Select.js +141 -365
  133. package/select/Select.stories.tsx +160 -115
  134. package/select/Select.test.js +609 -276
  135. package/select/types.d.ts +52 -12
  136. package/sidenav/Sidenav.d.ts +6 -5
  137. package/sidenav/Sidenav.js +184 -52
  138. package/sidenav/Sidenav.stories.tsx +154 -156
  139. package/sidenav/Sidenav.test.js +25 -37
  140. package/sidenav/types.d.ts +50 -27
  141. package/slider/Slider.d.ts +2 -2
  142. package/slider/Slider.js +122 -96
  143. package/slider/Slider.stories.tsx +15 -9
  144. package/slider/Slider.test.js +142 -21
  145. package/slider/types.d.ts +10 -2
  146. package/spinner/Spinner.js +1 -1
  147. package/switch/Switch.d.ts +2 -2
  148. package/switch/Switch.js +150 -67
  149. package/switch/Switch.stories.tsx +20 -42
  150. package/switch/Switch.test.js +155 -3
  151. package/switch/types.d.ts +12 -4
  152. package/table/Table.js +1 -1
  153. package/table/Table.test.js +1 -1
  154. package/tabs/Tab.d.ts +4 -0
  155. package/tabs/Tab.js +135 -0
  156. package/tabs/Tabs.d.ts +1 -1
  157. package/tabs/Tabs.js +362 -108
  158. package/tabs/Tabs.stories.tsx +74 -8
  159. package/tabs/Tabs.test.js +241 -13
  160. package/tabs/types.d.ts +19 -5
  161. package/tabs-nav/NavTabs.d.ts +8 -0
  162. package/tabs-nav/NavTabs.js +125 -0
  163. package/tabs-nav/NavTabs.stories.tsx +170 -0
  164. package/tabs-nav/NavTabs.test.js +82 -0
  165. package/tabs-nav/Tab.d.ts +4 -0
  166. package/tabs-nav/Tab.js +130 -0
  167. package/tabs-nav/types.d.ts +53 -0
  168. package/{stack → tabs-nav}/types.js +0 -0
  169. package/tag/Tag.js +15 -20
  170. package/tag/Tag.stories.tsx +12 -8
  171. package/tag/types.d.ts +1 -1
  172. package/text-input/Icons.d.ts +8 -0
  173. package/text-input/Icons.js +60 -0
  174. package/text-input/Suggestion.d.ts +4 -0
  175. package/text-input/Suggestion.js +57 -0
  176. package/text-input/Suggestions.d.ts +4 -0
  177. package/text-input/Suggestions.js +134 -0
  178. package/text-input/TextInput.js +214 -333
  179. package/text-input/TextInput.stories.tsx +199 -192
  180. package/text-input/TextInput.test.js +686 -753
  181. package/text-input/types.d.ts +50 -12
  182. package/textarea/Textarea.js +15 -24
  183. package/textarea/Textarea.stories.jsx +5 -5
  184. package/textarea/Textarea.test.js +37 -36
  185. package/textarea/types.d.ts +18 -11
  186. package/toggle-group/ToggleGroup.d.ts +1 -1
  187. package/toggle-group/ToggleGroup.js +5 -4
  188. package/toggle-group/ToggleGroup.stories.tsx +4 -4
  189. package/toggle-group/ToggleGroup.test.js +35 -4
  190. package/toggle-group/types.d.ts +9 -1
  191. package/typography/Typography.d.ts +4 -0
  192. package/typography/Typography.js +131 -0
  193. package/typography/Typography.stories.tsx +198 -0
  194. package/typography/types.d.ts +18 -0
  195. package/typography/types.js +5 -0
  196. package/useTheme.js +2 -2
  197. package/useTranslatedLabels.d.ts +2 -0
  198. package/useTranslatedLabels.js +20 -0
  199. package/wizard/Wizard.d.ts +1 -1
  200. package/wizard/Wizard.js +58 -54
  201. package/wizard/Wizard.stories.tsx +33 -24
  202. package/wizard/Wizard.test.js +36 -23
  203. package/wizard/types.d.ts +10 -5
  204. package/ThemeContext.d.ts +0 -15
  205. package/ThemeContext.js +0 -235
  206. package/list/List.d.ts +0 -4
  207. package/list/List.js +0 -47
  208. package/list/List.stories.tsx +0 -95
  209. package/list/types.d.ts +0 -7
  210. package/radio/Radio.d.ts +0 -4
  211. package/radio/Radio.js +0 -174
  212. package/radio/Radio.stories.tsx +0 -192
  213. package/radio/Radio.test.js +0 -71
  214. package/radio/types.d.ts +0 -54
  215. package/row/Row.d.ts +0 -3
  216. package/row/Row.js +0 -127
  217. package/row/Row.stories.tsx +0 -237
  218. package/row/types.d.ts +0 -10
  219. package/stack/Stack.d.ts +0 -3
  220. package/stack/Stack.js +0 -97
  221. package/stack/Stack.stories.tsx +0 -164
  222. package/stack/types.d.ts +0 -9
  223. package/text/Text.d.ts +0 -7
  224. package/text/Text.js +0 -30
  225. package/text/Text.stories.tsx +0 -19
@@ -2,6 +2,10 @@
2
2
 
3
3
  var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
4
 
5
+ var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
6
+
7
+ var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
8
+
5
9
  var _react = _interopRequireDefault(require("react"));
6
10
 
7
11
  var _react2 = require("@testing-library/react");
@@ -37,7 +41,7 @@ describe("DateInput component tests", function () {
37
41
 
38
42
  expect(input.value).toBe("");
39
43
  });
40
- test("Renders with personalized error", function () {
44
+ test("Renders with custom error", function () {
41
45
  var _render2 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_DateInput["default"], {
42
46
  error: "Personalized error."
43
47
  })),
@@ -45,52 +49,134 @@ describe("DateInput component tests", function () {
45
49
 
46
50
  expect(getByText("Personalized error.")).toBeTruthy();
47
51
  });
48
- test("Renders with correct format: user typed date but it's invalid, onBlur error", function () {
49
- var onBlur = jest.fn(function (_ref) {
50
- var value = _ref.value,
51
- error = _ref.error;
52
- expect(value).toBe("10/90/2010");
53
- expect(error).toBe("Invalid date.");
54
- });
55
-
52
+ test("Renders with an initial value when it is uncontrolled", function () {
56
53
  var _render3 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_DateInput["default"], {
57
- label: "With format MM/dd/yyyy",
58
- format: "MM/dd/yyyy",
59
- onBlur: onBlur
54
+ label: "Default label",
55
+ placeholder: "Placeholder",
56
+ defaultValue: "21-10-2015"
60
57
  })),
58
+ getByText = _render3.getByText,
61
59
  getByRole = _render3.getByRole;
62
60
 
63
61
  var input = getByRole("textbox");
62
+ var calendarAction = getByRole("button");
63
+ var d = new Date(2015, 9, 21);
64
+ var options = {
65
+ weekday: "short",
66
+ month: "short",
67
+ day: "numeric"
68
+ };
69
+ expect(input.value).toBe("21-10-2015");
64
70
 
65
- _userEvent["default"].type(input, "10/90/2010");
66
-
67
- _react2.fireEvent.blur(input);
68
- });
69
- test("Renders with correct format: user typed date but it's invalid, onChange error", function () {
70
- var onChange = jest.fn();
71
-
72
- var _render4 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_DateInput["default"], {
73
- label: "With format MM/dd/yyyy",
74
- format: "MM/dd/yyyy",
75
- onChange: onChange
76
- })),
77
- getByRole = _render4.getByRole;
78
-
79
- var input = getByRole("textbox");
80
-
81
- _userEvent["default"].type(input, "10/90/2010");
71
+ _userEvent["default"].click(calendarAction);
82
72
 
83
- expect(onChange).toHaveBeenCalledTimes(10);
84
- expect(onChange).toHaveBeenCalledWith({
85
- value: "10/90/2010",
86
- error: "Invalid date.",
87
- date: null
88
- });
73
+ expect(getByText(d.toLocaleString("en-US", options))).toBeTruthy();
89
74
  });
75
+ test("Renders with correct format: user typed date but it's invalid, onBlur error", /*#__PURE__*/(0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee() {
76
+ var onBlur, _render4, getByRole, input;
77
+
78
+ return _regenerator["default"].wrap(function _callee$(_context) {
79
+ while (1) {
80
+ switch (_context.prev = _context.next) {
81
+ case 0:
82
+ onBlur = jest.fn(function (_ref2) {
83
+ var value = _ref2.value,
84
+ error = _ref2.error;
85
+ expect(value).toBe("10/90/2010");
86
+ expect(error).toBe("Invalid date.");
87
+ });
88
+ _render4 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_DateInput["default"], {
89
+ label: "With format MM/dd/yyyy",
90
+ format: "MM/dd/yyyy",
91
+ onBlur: onBlur
92
+ })), getByRole = _render4.getByRole;
93
+ input = getByRole("textbox");
94
+
95
+ _userEvent["default"].click(input);
96
+
97
+ _context.next = 6;
98
+ return _userEvent["default"].keyboard("10");
99
+
100
+ case 6:
101
+ _context.next = 8;
102
+ return _userEvent["default"].keyboard("/");
103
+
104
+ case 8:
105
+ _context.next = 10;
106
+ return _userEvent["default"].keyboard("90");
107
+
108
+ case 10:
109
+ _context.next = 12;
110
+ return _userEvent["default"].keyboard("/");
111
+
112
+ case 12:
113
+ _context.next = 14;
114
+ return _userEvent["default"].keyboard("2010");
115
+
116
+ case 14:
117
+ _react2.fireEvent.blur(input);
118
+
119
+ case 15:
120
+ case "end":
121
+ return _context.stop();
122
+ }
123
+ }
124
+ }, _callee);
125
+ })));
126
+ test("Renders with correct format: user typed date but it's invalid, onChange error", /*#__PURE__*/(0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee2() {
127
+ var onChange, _render5, getByRole, input;
128
+
129
+ return _regenerator["default"].wrap(function _callee2$(_context2) {
130
+ while (1) {
131
+ switch (_context2.prev = _context2.next) {
132
+ case 0:
133
+ onChange = jest.fn();
134
+ _render5 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_DateInput["default"], {
135
+ label: "With format MM/dd/yyyy",
136
+ format: "MM/dd/yyyy",
137
+ onChange: onChange
138
+ })), getByRole = _render5.getByRole;
139
+ input = getByRole("textbox");
140
+
141
+ _userEvent["default"].click(input);
142
+
143
+ _context2.next = 6;
144
+ return _userEvent["default"].keyboard("10");
145
+
146
+ case 6:
147
+ _context2.next = 8;
148
+ return _userEvent["default"].keyboard("/");
149
+
150
+ case 8:
151
+ _context2.next = 10;
152
+ return _userEvent["default"].keyboard("90");
153
+
154
+ case 10:
155
+ _context2.next = 12;
156
+ return _userEvent["default"].keyboard("/");
157
+
158
+ case 12:
159
+ _context2.next = 14;
160
+ return _userEvent["default"].keyboard("2010");
161
+
162
+ case 14:
163
+ expect(onChange).toHaveBeenCalledTimes(10);
164
+ expect(onChange).toHaveBeenCalledWith({
165
+ value: "10/90/2010",
166
+ error: "Invalid date."
167
+ });
168
+
169
+ case 16:
170
+ case "end":
171
+ return _context2.stop();
172
+ }
173
+ }
174
+ }, _callee2);
175
+ })));
90
176
  test("Calendar renders with correct date: today's date", function () {
91
- var _render5 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_DateInput["default"], null)),
92
- getByText = _render5.getByText,
93
- getByRole = _render5.getByRole;
177
+ var _render6 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_DateInput["default"], null)),
178
+ getByText = _render6.getByText,
179
+ getByRole = _render6.getByRole;
94
180
 
95
181
  var calendarAction = getByRole("button");
96
182
  var d = new Date();
@@ -105,11 +191,11 @@ describe("DateInput component tests", function () {
105
191
  expect(getByText(d.toLocaleString("en-US", options))).toBeTruthy();
106
192
  });
107
193
  test("Calendar renders with correct date: value prop", function () {
108
- var _render6 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_DateInput["default"], {
194
+ var _render7 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_DateInput["default"], {
109
195
  value: "20-10-2019"
110
196
  })),
111
- getByText = _render6.getByText,
112
- getByRole = _render6.getByRole;
197
+ getByText = _render7.getByText,
198
+ getByRole = _render7.getByRole;
113
199
 
114
200
  var calendarAction = getByRole("button");
115
201
  var d = new Date(2019, 9, 20);
@@ -124,9 +210,9 @@ describe("DateInput component tests", function () {
124
210
  expect(getByText(d.toLocaleString("en-US", options))).toBeTruthy();
125
211
  });
126
212
  test("Calendar renders with correct date: user typed value", function () {
127
- var _render7 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_DateInput["default"], null)),
128
- getByText = _render7.getByText,
129
- getByRole = _render7.getByRole;
213
+ var _render8 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_DateInput["default"], null)),
214
+ getByText = _render8.getByText,
215
+ getByRole = _render8.getByRole;
130
216
 
131
217
  var calendarAction = getByRole("button");
132
218
  var d = new Date(2010, 0, 1);
@@ -146,11 +232,11 @@ describe("DateInput component tests", function () {
146
232
  test("Calendar renders with correct date: invalid date, renders with today's date", function () {
147
233
  var onBlur = jest.fn();
148
234
 
149
- var _render8 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_DateInput["default"], {
235
+ var _render9 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_DateInput["default"], {
150
236
  onBlur: onBlur
151
237
  })),
152
- getByText = _render8.getByText,
153
- getByRole = _render8.getByRole;
238
+ getByText = _render9.getByText,
239
+ getByRole = _render9.getByRole;
154
240
 
155
241
  var calendarAction = getByRole("button");
156
242
  var d = new Date();
@@ -168,8 +254,7 @@ describe("DateInput component tests", function () {
168
254
  expect(onBlur).toHaveBeenCalled();
169
255
  expect(onBlur).toHaveBeenCalledWith({
170
256
  value: "01-01-xxxx",
171
- error: "Invalid date.",
172
- date: null
257
+ error: "Invalid date."
173
258
  });
174
259
 
175
260
  _userEvent["default"].click(calendarAction);
@@ -177,12 +262,12 @@ describe("DateInput component tests", function () {
177
262
  expect(getByText(d.toLocaleString("en-US", options))).toBeTruthy();
178
263
  });
179
264
  test("Selecting a date from the calendar with an specific format", function () {
180
- var _render9 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_DateInput["default"], {
265
+ var _render10 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_DateInput["default"], {
181
266
  label: "With format M-dd-yyyy",
182
267
  format: "M-dd-yyyy"
183
268
  })),
184
- getByText = _render9.getByText,
185
- getByRole = _render9.getByRole;
269
+ getByText = _render10.getByText,
270
+ getByRole = _render10.getByRole;
186
271
 
187
272
  var input = getByRole("textbox");
188
273
  var calendarAction = getByRole("button");
@@ -212,8 +297,8 @@ describe("DateInput component tests", function () {
212
297
  expect(input.value).toBe("".concat(d.getMonth() + 1, "-10-").concat(d.getFullYear()));
213
298
  });
214
299
  test("Selecting a date from the calendar (using keyboard presses)", function () {
215
- var _render10 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_DateInput["default"], null)),
216
- getByRole = _render10.getByRole;
300
+ var _render11 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_DateInput["default"], null)),
301
+ getByRole = _render11.getByRole;
217
302
 
218
303
  var calendarAction = getByRole("button");
219
304
  var input = getByRole("textbox");
@@ -263,11 +348,11 @@ describe("DateInput component tests", function () {
263
348
  var onBlur = jest.fn();
264
349
  var onChange = jest.fn();
265
350
 
266
- var _render11 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_DateInput["default"], {
351
+ var _render12 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_DateInput["default"], {
267
352
  onChange: onChange,
268
353
  onBlur: onBlur
269
354
  })),
270
- getByRole = _render11.getByRole;
355
+ getByRole = _render12.getByRole;
271
356
 
272
357
  var input = getByRole("textbox");
273
358
  var d = new Date(2011, 9, 10);
@@ -278,7 +363,6 @@ describe("DateInput component tests", function () {
278
363
  expect(onChange).toHaveBeenCalledTimes(10);
279
364
  expect(onChange).toHaveBeenCalledWith({
280
365
  value: "10-10-2011",
281
- error: null,
282
366
  date: d
283
367
  });
284
368
 
@@ -287,7 +371,6 @@ describe("DateInput component tests", function () {
287
371
  expect(onBlur).toHaveBeenCalled();
288
372
  expect(onBlur).toHaveBeenCalledWith({
289
373
  value: "10-10-2011",
290
- error: null,
291
374
  date: d
292
375
  });
293
376
  });
@@ -295,11 +378,11 @@ describe("DateInput component tests", function () {
295
378
  var onBlur = jest.fn();
296
379
  var onChange = jest.fn();
297
380
 
298
- var _render12 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_DateInput["default"], {
381
+ var _render13 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_DateInput["default"], {
299
382
  onChange: onChange,
300
383
  onBlur: onBlur
301
384
  })),
302
- getByRole = _render12.getByRole;
385
+ getByRole = _render13.getByRole;
303
386
 
304
387
  var input = getByRole("textbox");
305
388
 
@@ -309,8 +392,7 @@ describe("DateInput component tests", function () {
309
392
  expect(onChange).toHaveBeenCalledTimes(6);
310
393
  expect(onChange).toHaveBeenCalledWith({
311
394
  value: "10-10-",
312
- error: "Invalid date.",
313
- date: null
395
+ error: "Invalid date."
314
396
  });
315
397
 
316
398
  _react2.fireEvent.blur(input);
@@ -318,17 +400,16 @@ describe("DateInput component tests", function () {
318
400
  expect(onBlur).toHaveBeenCalled();
319
401
  expect(onBlur).toHaveBeenCalledWith({
320
402
  value: "10-10-",
321
- error: "Invalid date.",
322
- date: null
403
+ error: "Invalid date."
323
404
  });
324
405
  });
325
406
  test("onBlur function removes the error when it is fixed", function () {
326
407
  var onBlur = jest.fn();
327
408
 
328
- var _render13 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_DateInput["default"], {
409
+ var _render14 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_DateInput["default"], {
329
410
  onBlur: onBlur
330
411
  })),
331
- getByRole = _render13.getByRole;
412
+ getByRole = _render14.getByRole;
332
413
 
333
414
  var input = getByRole("textbox");
334
415
  var d = new Date(2002, 1, 20);
@@ -342,8 +423,7 @@ describe("DateInput component tests", function () {
342
423
  expect(onBlur).toHaveBeenCalled();
343
424
  expect(onBlur).toHaveBeenCalledWith({
344
425
  value: "test",
345
- error: "Invalid date.",
346
- date: null
426
+ error: "Invalid date."
347
427
  });
348
428
 
349
429
  _userEvent["default"].clear(input);
@@ -357,18 +437,17 @@ describe("DateInput component tests", function () {
357
437
  expect(onBlur).toHaveBeenCalled();
358
438
  expect(onBlur).toHaveBeenCalledWith({
359
439
  value: "20-02-2002",
360
- error: null,
361
440
  date: d
362
441
  });
363
442
  });
364
443
  test("onBlur function removes the error when the input is empty", function () {
365
444
  var onBlur = jest.fn();
366
445
 
367
- var _render14 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_DateInput["default"], {
446
+ var _render15 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_DateInput["default"], {
368
447
  onBlur: onBlur,
369
448
  optional: true
370
449
  })),
371
- getByRole = _render14.getByRole;
450
+ getByRole = _render15.getByRole;
372
451
 
373
452
  var input = getByRole("textbox");
374
453
 
@@ -381,8 +460,7 @@ describe("DateInput component tests", function () {
381
460
  expect(onBlur).toHaveBeenCalled();
382
461
  expect(onBlur).toHaveBeenCalledWith({
383
462
  value: "test",
384
- error: "Invalid date.",
385
- date: null
463
+ error: "Invalid date."
386
464
  });
387
465
 
388
466
  _userEvent["default"].clear(input);
@@ -391,20 +469,18 @@ describe("DateInput component tests", function () {
391
469
 
392
470
  expect(onBlur).toHaveBeenCalled();
393
471
  expect(onBlur).toHaveBeenCalledWith({
394
- value: "",
395
- error: null,
396
- date: null
472
+ value: ""
397
473
  });
398
474
  });
399
475
  test("onBlur & onChange functions error: required field (not optional)", function () {
400
476
  var onBlur = jest.fn();
401
477
  var onChange = jest.fn();
402
478
 
403
- var _render15 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_DateInput["default"], {
479
+ var _render16 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_DateInput["default"], {
404
480
  onBlur: onBlur,
405
481
  onChange: onChange
406
482
  })),
407
- getByRole = _render15.getByRole;
483
+ getByRole = _render16.getByRole;
408
484
 
409
485
  var date = getByRole("textbox");
410
486
 
@@ -419,22 +495,20 @@ describe("DateInput component tests", function () {
419
495
  expect(onBlur).toHaveBeenCalled();
420
496
  expect(onBlur).toHaveBeenCalledWith({
421
497
  value: "",
422
- error: "This field is required. Please, enter a value.",
423
- date: null
498
+ error: "This field is required. Please, enter a value."
424
499
  });
425
500
  expect(onChange).toHaveBeenCalled();
426
501
  expect(onChange).toHaveBeenCalledWith({
427
502
  value: "",
428
- error: "This field is required. Please, enter a value.",
429
- date: null
503
+ error: "This field is required. Please, enter a value."
430
504
  });
431
505
  });
432
506
  test("Disabled date input (calendar action must be shown but not clickable)", function () {
433
- var _render16 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_DateInput["default"], {
507
+ var _render17 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_DateInput["default"], {
434
508
  disabled: true
435
509
  })),
436
- getByRole = _render16.getByRole,
437
- queryByText = _render16.queryByText;
510
+ getByRole = _render17.getByRole,
511
+ queryByText = _render17.queryByText;
438
512
 
439
513
  var calendarAction = getByRole("button");
440
514
  var d = new Date();
@@ -450,10 +524,10 @@ describe("DateInput component tests", function () {
450
524
  expect(queryByText(d.toLocaleString("en-US", options))).toBeFalsy();
451
525
  });
452
526
  test("Input has correct accesibility attributes", function () {
453
- var _render17 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_DateInput["default"], {
527
+ var _render18 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_DateInput["default"], {
454
528
  label: "Date input label"
455
529
  })),
456
- getByRole = _render17.getByRole;
530
+ getByRole = _render18.getByRole;
457
531
 
458
532
  var input = getByRole("textbox");
459
533
  expect(input.getAttribute("aria-autocomplete")).toBeNull();
@@ -14,6 +14,10 @@ declare type Props = {
14
14
  * Name attribute of the input element.
15
15
  */
16
16
  name?: string;
17
+ /**
18
+ * Initial value of the input element, only when it is uncontrolled.
19
+ */
20
+ defaultValue?: string;
17
21
  /**
18
22
  * Value of the input element. If undefined, the component will be uncontrolled and the value will be managed internally by the component.
19
23
  */
@@ -50,28 +54,31 @@ declare type Props = {
50
54
  * element of the component. An object including the string value, the
51
55
  * error and the date value will be passed to this function.
52
56
  * If the string value is a valid date, error will
53
- * be null. Also, if the string value is not a valid date, date will be null.
57
+ * be undefined. Also, if the string value is not a valid date, date will be undefined.
54
58
  */
55
59
  onChange?: (val: {
56
60
  value: string;
57
- error: string | null;
58
- date: Date | null;
61
+ error?: string;
62
+ date?: Date;
59
63
  }) => void;
60
64
  /**
61
65
  * This function will be called when the input element loses the focus.
62
66
  * An object including the string value, the error and the date value
63
67
  * will be passed to this function. If the string value is a valid date, error will
64
- * be null. Also, if the string value is not a valid date, date will be null.
68
+ * be undefined. Also, if the string value is not a valid date, date will be undefined.
65
69
  */
66
70
  onBlur?: (val: {
67
71
  value: string;
68
- error: string | null;
69
- date: Date | null;
72
+ error?: string;
73
+ date?: Date;
70
74
  }) => void;
71
75
  /**
72
- * If it is defined, the component will change its appearance, showing
73
- * the error below the date input component. If it is not defined, the error
74
- * messages will be managed internally, but never displayed on its own.
76
+ * If it is a defined value and also a truthy string, the component will
77
+ * change its appearance, showing the error below the date input
78
+ * component. If the defined value is an empty string, it will reserve a
79
+ * space below the component for a future error, but it would not change
80
+ * its look. In case of being undefined or null, both the appearance and
81
+ * the space for the error message would not be modified.
75
82
  */
76
83
  error?: string;
77
84
  /**
package/dialog/Dialog.js CHANGED
@@ -13,21 +13,17 @@ var _typeof2 = _interopRequireDefault(require("@babel/runtime/helpers/typeof"));
13
13
 
14
14
  var _taggedTemplateLiteral2 = _interopRequireDefault(require("@babel/runtime/helpers/taggedTemplateLiteral"));
15
15
 
16
- var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
17
-
18
16
  var _react = _interopRequireWildcard(require("react"));
19
17
 
20
18
  var _styledComponents = _interopRequireWildcard(require("styled-components"));
21
19
 
22
- var _Dialog = _interopRequireDefault(require("@material-ui/core/Dialog"));
23
-
24
20
  var _variables = require("../common/variables.js");
25
21
 
26
22
  var _useTheme = _interopRequireDefault(require("../useTheme"));
27
23
 
28
24
  var _BackgroundColorContext = require("../BackgroundColorContext");
29
25
 
30
- var _templateObject, _templateObject2, _templateObject3, _templateObject4;
26
+ var _templateObject, _templateObject2, _templateObject3, _templateObject4, _templateObject5, _templateObject6, _templateObject7;
31
27
 
32
28
  function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
33
29
 
@@ -45,12 +41,6 @@ var DxcDialog = function DxcDialog(_ref) {
45
41
  padding = _ref$padding === void 0 ? "small" : _ref$padding,
46
42
  _ref$tabIndex = _ref.tabIndex,
47
43
  tabIndex = _ref$tabIndex === void 0 ? 0 : _ref$tabIndex;
48
-
49
- var _useState = (0, _react.useState)(false),
50
- _useState2 = (0, _slicedToArray2["default"])(_useState, 2),
51
- isResponsive = _useState2[0],
52
- setIsResponsive = _useState2[1];
53
-
54
44
  var colorsTheme = (0, _useTheme["default"])();
55
45
 
56
46
  var handleClose = function handleClose() {
@@ -61,31 +51,37 @@ var DxcDialog = function DxcDialog(_ref) {
61
51
  onBackgroundClick === null || onBackgroundClick === void 0 ? void 0 : onBackgroundClick();
62
52
  };
63
53
 
64
- var handleResize = function handleResize(width) {
65
- setIsResponsive(width && width <= _variables.responsiveSizes.tablet);
66
- };
67
-
68
- var handleEventListener = function handleEventListener() {
69
- handleResize(window.innerWidth);
54
+ var handleOnKeyDown = function handleOnKeyDown(event) {
55
+ if (event.key === "Escape") {
56
+ event.preventDefault();
57
+ handleClose();
58
+ }
70
59
  };
71
60
 
72
61
  (0, _react.useEffect)(function () {
73
- window.addEventListener("resize", handleEventListener);
74
- handleResize(window.innerWidth);
62
+ if (isCloseVisible) {
63
+ window.addEventListener("keydown", handleOnKeyDown);
64
+ }
65
+
75
66
  return function () {
76
- window.removeEventListener("resize", handleEventListener);
67
+ window.removeEventListener("keydown", handleOnKeyDown);
77
68
  };
78
- }, []);
69
+ }, [isCloseVisible]);
79
70
  return /*#__PURE__*/_react["default"].createElement(_styledComponents.ThemeProvider, {
80
71
  theme: colorsTheme.dialog
81
- }, /*#__PURE__*/_react["default"].createElement(DialogContainer, {
82
- open: true,
83
- isCloseVisible: isCloseVisible,
84
- onClose: handleOverlayClick,
85
- overlay: overlay,
86
- padding: padding,
87
- isResponsive: isResponsive
88
- }, isCloseVisible && /*#__PURE__*/_react["default"].createElement(CloseIconContainer, {
72
+ }, /*#__PURE__*/_react["default"].createElement(BodyStyle, null), /*#__PURE__*/_react["default"].createElement(DialogContainer, {
73
+ role: "presentation"
74
+ }, overlay && /*#__PURE__*/_react["default"].createElement(Overlay, {
75
+ onClick: handleOverlayClick
76
+ }), /*#__PURE__*/_react["default"].createElement(Dialog, {
77
+ role: "dialog",
78
+ "aria-modal": overlay,
79
+ isCloseVisible: isCloseVisible
80
+ }, /*#__PURE__*/_react["default"].createElement(Children, {
81
+ padding: padding
82
+ }, /*#__PURE__*/_react["default"].createElement(_BackgroundColorContext.BackgroundColorProvider, {
83
+ color: colorsTheme.dialog.backgroundColor
84
+ }, children)), isCloseVisible && /*#__PURE__*/_react["default"].createElement(CloseIconContainer, {
89
85
  onClick: handleClose,
90
86
  tabIndex: tabIndex
91
87
  }, /*#__PURE__*/_react["default"].createElement(CloseIcon, {
@@ -99,28 +95,34 @@ var DxcDialog = function DxcDialog(_ref) {
99
95
  fill: "none"
100
96
  }), /*#__PURE__*/_react["default"].createElement("path", {
101
97
  d: "M19 6.41L17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12 19 6.41z"
102
- }))), /*#__PURE__*/_react["default"].createElement(Children, null, /*#__PURE__*/_react["default"].createElement(_BackgroundColorContext.BackgroundColorProvider, {
103
- color: colorsTheme.dialog.backgroundColor
104
- }, children))));
98
+ }))))));
105
99
  };
106
100
 
107
- var DialogContainer = (0, _styledComponents["default"])(_Dialog["default"])(_templateObject || (_templateObject = (0, _taggedTemplateLiteral2["default"])(["\n overflow: unset;\n font-family: ", ";\n\n .MuiBackdrop-root {\n background-color: ", ";\n opacity: ", " !important;\n }\n .MuiDialog-paperWidthSm {\n background-color: ", ";\n max-width: ", ";\n min-width: ", ";\n box-sizing: border-box;\n min-height: ", ";\n box-shadow: ", ";\n\n padding: ", ";\n padding-top: ", ";\n padding-right: ", ";\n padding-bottom: ", ";\n padding-left: ", ";\n }\n"])), function (props) {
108
- return props.theme.fontFamily;
109
- }, function (props) {
110
- return props.overlay === true ? props.theme.overlayColor : "transparent";
111
- }, function (props) {
112
- return props.overlay === true && props.theme.overlayOpacity;
101
+ var BodyStyle = (0, _styledComponents.createGlobalStyle)(_templateObject || (_templateObject = (0, _taggedTemplateLiteral2["default"])(["\n body {\n overflow: hidden;\n }\n"])));
102
+
103
+ var DialogContainer = _styledComponents["default"].div(_templateObject2 || (_templateObject2 = (0, _taggedTemplateLiteral2["default"])(["\n display: flex;\n align-items: center;\n justify-content: center;\n position: fixed;\n inset: 0px;\n height: 100%;\n z-index: 1300;\n"])));
104
+
105
+ var Overlay = _styledComponents["default"].div(_templateObject3 || (_templateObject3 = (0, _taggedTemplateLiteral2["default"])(["\n position: fixed;\n inset: 0px;\n height: 100%;\n background-color: ", ";\n opacity: ", ";\n"])), function (props) {
106
+ return props.theme.overlayColor;
113
107
  }, function (props) {
108
+ return props.theme.overlayOpacity;
109
+ });
110
+
111
+ var Dialog = _styledComponents["default"].div(_templateObject4 || (_templateObject4 = (0, _taggedTemplateLiteral2["default"])(["\n display: flex;\n justify-content: space-between;\n z-index: 1300;\n background-color: ", ";\n font-family: ", ";\n font-size: ", ";\n font-weight: ", ";\n ", "\n box-sizing: border-box;\n box-shadow: ", ";\n border-radius: 4px;\n position: relative;\n\n @media (min-width: ", "rem) {\n max-width: 80%;\n min-width: 800px;\n }\n\n @media (max-width: ", "rem) {\n //mobile phones\n max-width: 92%;\n min-width: 92%;\n }\n"])), function (props) {
114
112
  return props.theme.backgroundColor;
115
113
  }, function (props) {
116
- return props.isResponsive ? "92%" : "80%";
114
+ return props.theme.fontFamily;
117
115
  }, function (props) {
118
- return props.isResponsive ? "92%" : "800px";
116
+ return props.theme.fontSize;
119
117
  }, function (props) {
120
- return props.isCloseVisible ? "72px" : "";
118
+ return props.theme.fontWeight;
121
119
  }, function (props) {
122
- return "".concat(props.theme.boxShadowOffsetX, " ").concat(props.theme.boxShadowOffsetY, " ").concat(props.theme.boxShadowBlur, " ").concat(props.theme.boxShadowColor);
120
+ return props.isCloseVisible && "min-height: 72px; padding-top: 24px;";
123
121
  }, function (props) {
122
+ return "".concat(props.theme.boxShadowOffsetX, " ").concat(props.theme.boxShadowOffsetY, " ").concat(props.theme.boxShadowBlur, " ").concat(props.theme.boxShadowColor);
123
+ }, _variables.responsiveSizes.medium, _variables.responsiveSizes.medium);
124
+
125
+ var Children = _styledComponents["default"].div(_templateObject5 || (_templateObject5 = (0, _taggedTemplateLiteral2["default"])(["\n display: flex;\n flex-direction: column;\n width: 100%;\n padding: ", ";\n padding-top: ", ";\n padding-right: ", ";\n padding-bottom: ", ";\n padding-left: ", ";\n"])), function (props) {
124
126
  return props.padding && (0, _typeof2["default"])(props.padding) !== "object" ? _variables.spaces[props.padding] : _variables.spaces["small"];
125
127
  }, function (props) {
126
128
  return props.padding && (0, _typeof2["default"])(props.padding) === "object" && props.padding.top ? _variables.spaces[props.padding.top] : "";
@@ -132,13 +134,7 @@ var DialogContainer = (0, _styledComponents["default"])(_Dialog["default"])(_tem
132
134
  return props.padding && (0, _typeof2["default"])(props.padding) === "object" && props.padding.left ? _variables.spaces[props.padding.left] : "";
133
135
  });
134
136
 
135
- var Children = _styledComponents["default"].div(_templateObject2 || (_templateObject2 = (0, _taggedTemplateLiteral2["default"])([""])));
136
-
137
- var CloseIconContainer = _styledComponents["default"].button(_templateObject3 || (_templateObject3 = (0, _taggedTemplateLiteral2["default"])(["\n display: flex;\n justify-content: flex-end;\n position: absolute;\n top: ", ";\n right: ", ";\n cursor: pointer;\n padding: 0;\n margin: 0;\n background: none;\n color: ", ";\n width: ", ";\n height: ", ";\n border: none;\n"])), function (props) {
138
- return props.theme.closeIconTopPosition;
139
- }, function (props) {
140
- return props.theme.closeIconRightPosition;
141
- }, function (props) {
137
+ var CloseIconContainer = _styledComponents["default"].button(_templateObject6 || (_templateObject6 = (0, _taggedTemplateLiteral2["default"])(["\n cursor: pointer;\n padding: 0;\n margin: 0;\n background: none;\n border: none;\n position: absolute;\n top: 20px;\n right: 20px;\n color: ", ";\n width: ", ";\n height: ", ";\n"])), function (props) {
142
138
  return props.theme.closeIconColor;
143
139
  }, function (props) {
144
140
  return props.theme.closeIconWidth;
@@ -146,7 +142,7 @@ var CloseIconContainer = _styledComponents["default"].button(_templateObject3 ||
146
142
  return props.theme.closeIconHeight;
147
143
  });
148
144
 
149
- var CloseIcon = _styledComponents["default"].svg(_templateObject4 || (_templateObject4 = (0, _taggedTemplateLiteral2["default"])(["\n background-color: ", ";\n width: ", ";\n height: ", ";\n border-radius: ", ";\n border-width: ", ";\n border-style: ", ";\n border-color: ", ";\n"])), function (props) {
145
+ var CloseIcon = _styledComponents["default"].svg(_templateObject7 || (_templateObject7 = (0, _taggedTemplateLiteral2["default"])(["\n background-color: ", ";\n width: ", ";\n height: ", ";\n border-radius: ", ";\n border-width: ", ";\n border-style: ", ";\n border-color: ", ";\n"])), function (props) {
150
146
  return props.theme.closeIconBackgroundColor;
151
147
  }, function (props) {
152
148
  return props.theme.closeIconWidth;