@dxc-technology/halstack-react 0.0.0-1e57e26 → 0.0.0-1e5db1e

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 (135) hide show
  1. package/HalstackContext.d.ts +12 -0
  2. package/HalstackContext.js +295 -0
  3. package/accordion/Accordion.d.ts +1 -1
  4. package/accordion/Accordion.js +7 -28
  5. package/accordion/Accordion.stories.tsx +11 -11
  6. package/accordion/Accordion.test.js +19 -4
  7. package/accordion/types.d.ts +4 -0
  8. package/accordion-group/AccordionGroup.d.ts +1 -1
  9. package/accordion-group/AccordionGroup.js +13 -15
  10. package/accordion-group/AccordionGroup.stories.tsx +1 -1
  11. package/accordion-group/AccordionGroup.test.js +24 -6
  12. package/accordion-group/types.d.ts +4 -0
  13. package/alert/Alert.js +4 -1
  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/types.d.ts +24 -0
  18. package/box/Box.js +22 -32
  19. package/button/Button.js +14 -11
  20. package/card/Card.js +27 -28
  21. package/checkbox/Checkbox.d.ts +1 -1
  22. package/checkbox/Checkbox.js +43 -39
  23. package/checkbox/Checkbox.stories.tsx +124 -128
  24. package/checkbox/Checkbox.test.js +13 -0
  25. package/checkbox/types.d.ts +7 -3
  26. package/common/variables.js +181 -84
  27. package/date-input/DateInput.js +53 -39
  28. package/date-input/DateInput.stories.tsx +7 -7
  29. package/date-input/DateInput.test.js +69 -59
  30. package/date-input/types.d.ts +16 -9
  31. package/dialog/Dialog.js +4 -32
  32. package/dropdown/Dropdown.js +13 -17
  33. package/file-input/FileInput.js +9 -6
  34. package/file-input/FileItem.js +7 -5
  35. package/footer/Footer.js +15 -88
  36. package/header/Header.js +27 -48
  37. package/header/Header.stories.tsx +46 -36
  38. package/header/Header.test.js +18 -2
  39. package/inset/types.d.ts +24 -0
  40. package/layout/ApplicationLayout.d.ts +4 -3
  41. package/layout/ApplicationLayout.js +78 -114
  42. package/layout/ApplicationLayout.stories.tsx +14 -59
  43. package/layout/Icons.d.ts +5 -0
  44. package/layout/Icons.js +13 -2
  45. package/layout/SidenavContext.d.ts +5 -0
  46. package/layout/SidenavContext.js +19 -0
  47. package/layout/types.d.ts +4 -10
  48. package/link/Link.d.ts +3 -2
  49. package/link/Link.js +57 -74
  50. package/link/Link.stories.tsx +87 -52
  51. package/link/Link.test.js +7 -15
  52. package/link/types.d.ts +7 -23
  53. package/main.d.ts +4 -3
  54. package/main.js +23 -9
  55. package/number-input/NumberInput.js +11 -18
  56. package/number-input/NumberInput.stories.tsx +5 -5
  57. package/number-input/NumberInput.test.js +2 -4
  58. package/number-input/types.d.ts +17 -10
  59. package/package.json +6 -5
  60. package/paginator/Paginator.js +17 -38
  61. package/password-input/PasswordInput.js +7 -4
  62. package/password-input/PasswordInput.test.js +3 -6
  63. package/password-input/types.d.ts +14 -11
  64. package/progress-bar/ProgressBar.js +1 -1
  65. package/progress-bar/ProgressBar.stories.jsx +11 -11
  66. package/quick-nav/QuickNav.d.ts +4 -0
  67. package/quick-nav/QuickNav.js +112 -0
  68. package/quick-nav/QuickNav.stories.tsx +237 -0
  69. package/quick-nav/types.d.ts +21 -0
  70. package/{radio → quick-nav}/types.js +0 -0
  71. package/radio-group/Radio.js +1 -1
  72. package/radio-group/RadioGroup.js +8 -6
  73. package/row/types.d.ts +18 -0
  74. package/select/Listbox.d.ts +4 -0
  75. package/select/Listbox.js +152 -0
  76. package/select/Option.js +1 -1
  77. package/select/Select.js +66 -161
  78. package/select/Select.stories.tsx +14 -2
  79. package/select/Select.test.js +335 -231
  80. package/select/types.d.ts +33 -11
  81. package/sidenav/Sidenav.d.ts +1 -1
  82. package/sidenav/Sidenav.js +20 -9
  83. package/slider/Slider.d.ts +1 -1
  84. package/slider/Slider.js +2 -1
  85. package/slider/Slider.stories.tsx +8 -8
  86. package/slider/Slider.test.js +31 -10
  87. package/slider/types.d.ts +4 -0
  88. package/spinner/Spinner.js +1 -1
  89. package/switch/Switch.d.ts +1 -1
  90. package/switch/Switch.js +35 -19
  91. package/switch/Switch.stories.tsx +14 -14
  92. package/switch/Switch.test.js +25 -0
  93. package/switch/types.d.ts +6 -2
  94. package/tabs/Tabs.d.ts +1 -1
  95. package/tabs/Tabs.js +9 -11
  96. package/tabs/Tabs.stories.tsx +0 -8
  97. package/tabs/Tabs.test.js +26 -9
  98. package/tabs/types.d.ts +4 -0
  99. package/tabs-nav/NavTabs.d.ts +8 -0
  100. package/tabs-nav/NavTabs.js +125 -0
  101. package/tabs-nav/NavTabs.stories.tsx +170 -0
  102. package/tabs-nav/NavTabs.test.js +82 -0
  103. package/tabs-nav/Tab.d.ts +4 -0
  104. package/tabs-nav/Tab.js +132 -0
  105. package/tabs-nav/types.d.ts +53 -0
  106. package/tabs-nav/types.js +5 -0
  107. package/tag/Tag.js +5 -8
  108. package/text-input/Suggestion.d.ts +4 -0
  109. package/text-input/Suggestion.js +55 -0
  110. package/text-input/TextInput.js +48 -76
  111. package/text-input/TextInput.test.js +22 -35
  112. package/text-input/types.d.ts +27 -12
  113. package/textarea/Textarea.js +12 -23
  114. package/textarea/Textarea.test.js +10 -20
  115. package/textarea/types.d.ts +14 -11
  116. package/toggle-group/ToggleGroup.d.ts +1 -1
  117. package/toggle-group/ToggleGroup.js +5 -4
  118. package/toggle-group/ToggleGroup.stories.tsx +4 -4
  119. package/toggle-group/ToggleGroup.test.js +35 -4
  120. package/toggle-group/types.d.ts +8 -0
  121. package/useTheme.js +2 -2
  122. package/useTranslatedLabels.d.ts +2 -0
  123. package/useTranslatedLabels.js +20 -0
  124. package/wizard/Wizard.d.ts +1 -1
  125. package/wizard/Wizard.js +55 -44
  126. package/wizard/Wizard.stories.tsx +13 -23
  127. package/wizard/Wizard.test.js +36 -23
  128. package/wizard/types.d.ts +6 -2
  129. package/ThemeContext.d.ts +0 -10
  130. package/ThemeContext.js +0 -243
  131. package/radio/Radio.d.ts +0 -4
  132. package/radio/Radio.js +0 -174
  133. package/radio/Radio.stories.tsx +0 -192
  134. package/radio/Radio.test.js +0 -71
  135. package/radio/types.d.ts +0 -54
@@ -37,7 +37,7 @@ describe("DateInput component tests", function () {
37
37
 
38
38
  expect(input.value).toBe("");
39
39
  });
40
- test("Renders with personalized error", function () {
40
+ test("Renders with custom error", function () {
41
41
  var _render2 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_DateInput["default"], {
42
42
  error: "Personalized error."
43
43
  })),
@@ -45,6 +45,29 @@ describe("DateInput component tests", function () {
45
45
 
46
46
  expect(getByText("Personalized error.")).toBeTruthy();
47
47
  });
48
+ test("Renders with an initial value when it is uncontrolled", function () {
49
+ var _render3 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_DateInput["default"], {
50
+ label: "Default label",
51
+ placeholder: "Placeholder",
52
+ defaultValue: "21-10-2015"
53
+ })),
54
+ getByText = _render3.getByText,
55
+ getByRole = _render3.getByRole;
56
+
57
+ var input = getByRole("textbox");
58
+ var calendarAction = getByRole("button");
59
+ var d = new Date(2015, 9, 21);
60
+ var options = {
61
+ weekday: "short",
62
+ month: "short",
63
+ day: "numeric"
64
+ };
65
+ expect(input.value).toBe("21-10-2015");
66
+
67
+ _userEvent["default"].click(calendarAction);
68
+
69
+ expect(getByText(d.toLocaleString("en-US", options))).toBeTruthy();
70
+ });
48
71
  test("Renders with correct format: user typed date but it's invalid, onBlur error", function () {
49
72
  var onBlur = jest.fn(function (_ref) {
50
73
  var value = _ref.value,
@@ -53,12 +76,12 @@ describe("DateInput component tests", function () {
53
76
  expect(error).toBe("Invalid date.");
54
77
  });
55
78
 
56
- var _render3 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_DateInput["default"], {
79
+ var _render4 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_DateInput["default"], {
57
80
  label: "With format MM/dd/yyyy",
58
81
  format: "MM/dd/yyyy",
59
82
  onBlur: onBlur
60
83
  })),
61
- getByRole = _render3.getByRole;
84
+ getByRole = _render4.getByRole;
62
85
 
63
86
  var input = getByRole("textbox");
64
87
 
@@ -69,12 +92,12 @@ describe("DateInput component tests", function () {
69
92
  test("Renders with correct format: user typed date but it's invalid, onChange error", function () {
70
93
  var onChange = jest.fn();
71
94
 
72
- var _render4 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_DateInput["default"], {
95
+ var _render5 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_DateInput["default"], {
73
96
  label: "With format MM/dd/yyyy",
74
97
  format: "MM/dd/yyyy",
75
98
  onChange: onChange
76
99
  })),
77
- getByRole = _render4.getByRole;
100
+ getByRole = _render5.getByRole;
78
101
 
79
102
  var input = getByRole("textbox");
80
103
 
@@ -83,14 +106,13 @@ describe("DateInput component tests", function () {
83
106
  expect(onChange).toHaveBeenCalledTimes(10);
84
107
  expect(onChange).toHaveBeenCalledWith({
85
108
  value: "10/90/2010",
86
- error: "Invalid date.",
87
- date: null
109
+ error: "Invalid date."
88
110
  });
89
111
  });
90
112
  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;
113
+ var _render6 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_DateInput["default"], null)),
114
+ getByText = _render6.getByText,
115
+ getByRole = _render6.getByRole;
94
116
 
95
117
  var calendarAction = getByRole("button");
96
118
  var d = new Date();
@@ -105,11 +127,11 @@ describe("DateInput component tests", function () {
105
127
  expect(getByText(d.toLocaleString("en-US", options))).toBeTruthy();
106
128
  });
107
129
  test("Calendar renders with correct date: value prop", function () {
108
- var _render6 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_DateInput["default"], {
130
+ var _render7 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_DateInput["default"], {
109
131
  value: "20-10-2019"
110
132
  })),
111
- getByText = _render6.getByText,
112
- getByRole = _render6.getByRole;
133
+ getByText = _render7.getByText,
134
+ getByRole = _render7.getByRole;
113
135
 
114
136
  var calendarAction = getByRole("button");
115
137
  var d = new Date(2019, 9, 20);
@@ -124,9 +146,9 @@ describe("DateInput component tests", function () {
124
146
  expect(getByText(d.toLocaleString("en-US", options))).toBeTruthy();
125
147
  });
126
148
  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;
149
+ var _render8 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_DateInput["default"], null)),
150
+ getByText = _render8.getByText,
151
+ getByRole = _render8.getByRole;
130
152
 
131
153
  var calendarAction = getByRole("button");
132
154
  var d = new Date(2010, 0, 1);
@@ -146,11 +168,11 @@ describe("DateInput component tests", function () {
146
168
  test("Calendar renders with correct date: invalid date, renders with today's date", function () {
147
169
  var onBlur = jest.fn();
148
170
 
149
- var _render8 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_DateInput["default"], {
171
+ var _render9 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_DateInput["default"], {
150
172
  onBlur: onBlur
151
173
  })),
152
- getByText = _render8.getByText,
153
- getByRole = _render8.getByRole;
174
+ getByText = _render9.getByText,
175
+ getByRole = _render9.getByRole;
154
176
 
155
177
  var calendarAction = getByRole("button");
156
178
  var d = new Date();
@@ -168,8 +190,7 @@ describe("DateInput component tests", function () {
168
190
  expect(onBlur).toHaveBeenCalled();
169
191
  expect(onBlur).toHaveBeenCalledWith({
170
192
  value: "01-01-xxxx",
171
- error: "Invalid date.",
172
- date: null
193
+ error: "Invalid date."
173
194
  });
174
195
 
175
196
  _userEvent["default"].click(calendarAction);
@@ -177,12 +198,12 @@ describe("DateInput component tests", function () {
177
198
  expect(getByText(d.toLocaleString("en-US", options))).toBeTruthy();
178
199
  });
179
200
  test("Selecting a date from the calendar with an specific format", function () {
180
- var _render9 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_DateInput["default"], {
201
+ var _render10 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_DateInput["default"], {
181
202
  label: "With format M-dd-yyyy",
182
203
  format: "M-dd-yyyy"
183
204
  })),
184
- getByText = _render9.getByText,
185
- getByRole = _render9.getByRole;
205
+ getByText = _render10.getByText,
206
+ getByRole = _render10.getByRole;
186
207
 
187
208
  var input = getByRole("textbox");
188
209
  var calendarAction = getByRole("button");
@@ -212,8 +233,8 @@ describe("DateInput component tests", function () {
212
233
  expect(input.value).toBe("".concat(d.getMonth() + 1, "-10-").concat(d.getFullYear()));
213
234
  });
214
235
  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;
236
+ var _render11 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_DateInput["default"], null)),
237
+ getByRole = _render11.getByRole;
217
238
 
218
239
  var calendarAction = getByRole("button");
219
240
  var input = getByRole("textbox");
@@ -263,11 +284,11 @@ describe("DateInput component tests", function () {
263
284
  var onBlur = jest.fn();
264
285
  var onChange = jest.fn();
265
286
 
266
- var _render11 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_DateInput["default"], {
287
+ var _render12 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_DateInput["default"], {
267
288
  onChange: onChange,
268
289
  onBlur: onBlur
269
290
  })),
270
- getByRole = _render11.getByRole;
291
+ getByRole = _render12.getByRole;
271
292
 
272
293
  var input = getByRole("textbox");
273
294
  var d = new Date(2011, 9, 10);
@@ -278,7 +299,6 @@ describe("DateInput component tests", function () {
278
299
  expect(onChange).toHaveBeenCalledTimes(10);
279
300
  expect(onChange).toHaveBeenCalledWith({
280
301
  value: "10-10-2011",
281
- error: null,
282
302
  date: d
283
303
  });
284
304
 
@@ -287,7 +307,6 @@ describe("DateInput component tests", function () {
287
307
  expect(onBlur).toHaveBeenCalled();
288
308
  expect(onBlur).toHaveBeenCalledWith({
289
309
  value: "10-10-2011",
290
- error: null,
291
310
  date: d
292
311
  });
293
312
  });
@@ -295,11 +314,11 @@ describe("DateInput component tests", function () {
295
314
  var onBlur = jest.fn();
296
315
  var onChange = jest.fn();
297
316
 
298
- var _render12 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_DateInput["default"], {
317
+ var _render13 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_DateInput["default"], {
299
318
  onChange: onChange,
300
319
  onBlur: onBlur
301
320
  })),
302
- getByRole = _render12.getByRole;
321
+ getByRole = _render13.getByRole;
303
322
 
304
323
  var input = getByRole("textbox");
305
324
 
@@ -309,8 +328,7 @@ describe("DateInput component tests", function () {
309
328
  expect(onChange).toHaveBeenCalledTimes(6);
310
329
  expect(onChange).toHaveBeenCalledWith({
311
330
  value: "10-10-",
312
- error: "Invalid date.",
313
- date: null
331
+ error: "Invalid date."
314
332
  });
315
333
 
316
334
  _react2.fireEvent.blur(input);
@@ -318,17 +336,16 @@ describe("DateInput component tests", function () {
318
336
  expect(onBlur).toHaveBeenCalled();
319
337
  expect(onBlur).toHaveBeenCalledWith({
320
338
  value: "10-10-",
321
- error: "Invalid date.",
322
- date: null
339
+ error: "Invalid date."
323
340
  });
324
341
  });
325
342
  test("onBlur function removes the error when it is fixed", function () {
326
343
  var onBlur = jest.fn();
327
344
 
328
- var _render13 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_DateInput["default"], {
345
+ var _render14 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_DateInput["default"], {
329
346
  onBlur: onBlur
330
347
  })),
331
- getByRole = _render13.getByRole;
348
+ getByRole = _render14.getByRole;
332
349
 
333
350
  var input = getByRole("textbox");
334
351
  var d = new Date(2002, 1, 20);
@@ -342,8 +359,7 @@ describe("DateInput component tests", function () {
342
359
  expect(onBlur).toHaveBeenCalled();
343
360
  expect(onBlur).toHaveBeenCalledWith({
344
361
  value: "test",
345
- error: "Invalid date.",
346
- date: null
362
+ error: "Invalid date."
347
363
  });
348
364
 
349
365
  _userEvent["default"].clear(input);
@@ -357,18 +373,17 @@ describe("DateInput component tests", function () {
357
373
  expect(onBlur).toHaveBeenCalled();
358
374
  expect(onBlur).toHaveBeenCalledWith({
359
375
  value: "20-02-2002",
360
- error: null,
361
376
  date: d
362
377
  });
363
378
  });
364
379
  test("onBlur function removes the error when the input is empty", function () {
365
380
  var onBlur = jest.fn();
366
381
 
367
- var _render14 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_DateInput["default"], {
382
+ var _render15 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_DateInput["default"], {
368
383
  onBlur: onBlur,
369
384
  optional: true
370
385
  })),
371
- getByRole = _render14.getByRole;
386
+ getByRole = _render15.getByRole;
372
387
 
373
388
  var input = getByRole("textbox");
374
389
 
@@ -381,8 +396,7 @@ describe("DateInput component tests", function () {
381
396
  expect(onBlur).toHaveBeenCalled();
382
397
  expect(onBlur).toHaveBeenCalledWith({
383
398
  value: "test",
384
- error: "Invalid date.",
385
- date: null
399
+ error: "Invalid date."
386
400
  });
387
401
 
388
402
  _userEvent["default"].clear(input);
@@ -391,20 +405,18 @@ describe("DateInput component tests", function () {
391
405
 
392
406
  expect(onBlur).toHaveBeenCalled();
393
407
  expect(onBlur).toHaveBeenCalledWith({
394
- value: "",
395
- error: null,
396
- date: null
408
+ value: ""
397
409
  });
398
410
  });
399
411
  test("onBlur & onChange functions error: required field (not optional)", function () {
400
412
  var onBlur = jest.fn();
401
413
  var onChange = jest.fn();
402
414
 
403
- var _render15 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_DateInput["default"], {
415
+ var _render16 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_DateInput["default"], {
404
416
  onBlur: onBlur,
405
417
  onChange: onChange
406
418
  })),
407
- getByRole = _render15.getByRole;
419
+ getByRole = _render16.getByRole;
408
420
 
409
421
  var date = getByRole("textbox");
410
422
 
@@ -419,22 +431,20 @@ describe("DateInput component tests", function () {
419
431
  expect(onBlur).toHaveBeenCalled();
420
432
  expect(onBlur).toHaveBeenCalledWith({
421
433
  value: "",
422
- error: "This field is required. Please, enter a value.",
423
- date: null
434
+ error: "This field is required. Please, enter a value."
424
435
  });
425
436
  expect(onChange).toHaveBeenCalled();
426
437
  expect(onChange).toHaveBeenCalledWith({
427
438
  value: "",
428
- error: "This field is required. Please, enter a value.",
429
- date: null
439
+ error: "This field is required. Please, enter a value."
430
440
  });
431
441
  });
432
442
  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"], {
443
+ var _render17 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_DateInput["default"], {
434
444
  disabled: true
435
445
  })),
436
- getByRole = _render16.getByRole,
437
- queryByText = _render16.queryByText;
446
+ getByRole = _render17.getByRole,
447
+ queryByText = _render17.queryByText;
438
448
 
439
449
  var calendarAction = getByRole("button");
440
450
  var d = new Date();
@@ -450,10 +460,10 @@ describe("DateInput component tests", function () {
450
460
  expect(queryByText(d.toLocaleString("en-US", options))).toBeFalsy();
451
461
  });
452
462
  test("Input has correct accesibility attributes", function () {
453
- var _render17 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_DateInput["default"], {
463
+ var _render18 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_DateInput["default"], {
454
464
  label: "Date input label"
455
465
  })),
456
- getByRole = _render17.getByRole;
466
+ getByRole = _render18.getByRole;
457
467
 
458
468
  var input = getByRole("textbox");
459
469
  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,9 +13,7 @@ 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
- var _react = _interopRequireWildcard(require("react"));
16
+ var _react = _interopRequireDefault(require("react"));
19
17
 
20
18
  var _styledComponents = _interopRequireWildcard(require("styled-components"));
21
19
 
@@ -45,12 +43,6 @@ var DxcDialog = function DxcDialog(_ref) {
45
43
  padding = _ref$padding === void 0 ? "small" : _ref$padding,
46
44
  _ref$tabIndex = _ref.tabIndex,
47
45
  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
46
  var colorsTheme = (0, _useTheme["default"])();
55
47
 
56
48
  var handleClose = function handleClose() {
@@ -61,21 +53,6 @@ var DxcDialog = function DxcDialog(_ref) {
61
53
  onBackgroundClick === null || onBackgroundClick === void 0 ? void 0 : onBackgroundClick();
62
54
  };
63
55
 
64
- var handleResize = function handleResize(width) {
65
- setIsResponsive(width && width <= _variables.responsiveSizes.tablet);
66
- };
67
-
68
- var handleEventListener = function handleEventListener() {
69
- handleResize(window.innerWidth);
70
- };
71
-
72
- (0, _react.useEffect)(function () {
73
- window.addEventListener("resize", handleEventListener);
74
- handleResize(window.innerWidth);
75
- return function () {
76
- window.removeEventListener("resize", handleEventListener);
77
- };
78
- }, []);
79
56
  return /*#__PURE__*/_react["default"].createElement(_styledComponents.ThemeProvider, {
80
57
  theme: colorsTheme.dialog
81
58
  }, /*#__PURE__*/_react["default"].createElement(DialogContainer, {
@@ -83,8 +60,7 @@ var DxcDialog = function DxcDialog(_ref) {
83
60
  isCloseVisible: isCloseVisible,
84
61
  onClose: handleOverlayClick,
85
62
  overlay: overlay,
86
- padding: padding,
87
- isResponsive: isResponsive
63
+ padding: padding
88
64
  }, isCloseVisible && /*#__PURE__*/_react["default"].createElement(CloseIconContainer, {
89
65
  onClick: handleClose,
90
66
  tabIndex: tabIndex
@@ -104,7 +80,7 @@ var DxcDialog = function DxcDialog(_ref) {
104
80
  }, children))));
105
81
  };
106
82
 
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) {
83
+ 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 @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\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
84
  return props.theme.fontFamily;
109
85
  }, function (props) {
110
86
  return props.overlay === true ? props.theme.overlayColor : "transparent";
@@ -112,11 +88,7 @@ var DialogContainer = (0, _styledComponents["default"])(_Dialog["default"])(_tem
112
88
  return props.overlay === true && props.theme.overlayOpacity;
113
89
  }, function (props) {
114
90
  return props.theme.backgroundColor;
115
- }, function (props) {
116
- return props.isResponsive ? "92%" : "80%";
117
- }, function (props) {
118
- return props.isResponsive ? "92%" : "800px";
119
- }, function (props) {
91
+ }, _variables.responsiveSizes.medium, _variables.responsiveSizes.medium, function (props) {
120
92
  return props.isCloseVisible ? "72px" : "";
121
93
  }, function (props) {
122
94
  return "".concat(props.theme.boxShadowOffsetX, " ").concat(props.theme.boxShadowOffsetY, " ").concat(props.theme.boxShadowBlur, " ").concat(props.theme.boxShadowColor);
@@ -138,6 +138,11 @@ var DxcDropdown = function DxcDropdown(_ref) {
138
138
  }));
139
139
  };
140
140
 
141
+ var labelComponent = /*#__PURE__*/_react["default"].createElement(DropdownTriggerLabel, {
142
+ iconPosition: iconPosition,
143
+ label: label
144
+ }, label);
145
+
141
146
  return /*#__PURE__*/_react["default"].createElement(_styledComponents.ThemeProvider, {
142
147
  theme: colorsTheme.dropdown
143
148
  }, /*#__PURE__*/_react["default"].createElement(DXCDropdownContainer, {
@@ -160,18 +165,14 @@ var DxcDropdown = function DxcDropdown(_ref) {
160
165
  ref: ref,
161
166
  tabIndex: tabIndex
162
167
  }, /*#__PURE__*/_react["default"].createElement(DropdownTriggerContainer, {
163
- iconPosition: iconPosition,
164
168
  caretHidden: caretHidden
165
- }, icon && /*#__PURE__*/_react["default"].createElement(ButtonIconContainer, {
169
+ }, iconPosition === "after" && labelComponent, icon && /*#__PURE__*/_react["default"].createElement(ButtonIconContainer, {
166
170
  label: label,
167
171
  iconPosition: iconPosition,
168
172
  disabled: disabled
169
173
  }, typeof icon === "string" ? /*#__PURE__*/_react["default"].createElement(ButtonIcon, {
170
174
  src: icon
171
- }) : icon), /*#__PURE__*/_react["default"].createElement(DropdownTriggerLabel, {
172
- iconPosition: iconPosition,
173
- label: label
174
- }, label)), /*#__PURE__*/_react["default"].createElement(CaretIconContainer, {
175
+ }) : icon), iconPosition === "before" && labelComponent), /*#__PURE__*/_react["default"].createElement(CaretIconContainer, {
175
176
  caretHidden: caretHidden,
176
177
  disabled: disabled
177
178
  }, !caretHidden && (anchorEl === null ? /*#__PURE__*/_react["default"].createElement(DownArrowIcon, null) : /*#__PURE__*/_react["default"].createElement(UpArrowIcon, null)))), /*#__PURE__*/_react["default"].createElement(DXCMenu, {
@@ -187,7 +188,6 @@ var DxcDropdown = function DxcDropdown(_ref) {
187
188
  vertical: "top",
188
189
  horizontal: "left"
189
190
  },
190
- optionsIconPosition: optionsIconPosition,
191
191
  size: size,
192
192
  width: width,
193
193
  role: undefined,
@@ -209,12 +209,14 @@ var DxcDropdown = function DxcDropdown(_ref) {
209
209
  onClick: function onClick(event) {
210
210
  return handleMenuItemClick(option);
211
211
  }
212
- }, option.icon && /*#__PURE__*/_react["default"].createElement(ListIconContainer, {
212
+ }, optionsIconPosition === "after" && /*#__PURE__*/_react["default"].createElement("span", {
213
+ className: "optionLabel"
214
+ }, option.label), option.icon && /*#__PURE__*/_react["default"].createElement(ListIconContainer, {
213
215
  label: option.label,
214
216
  iconPosition: optionsIconPosition
215
217
  }, typeof option.icon === "string" ? /*#__PURE__*/_react["default"].createElement(ListIcon, {
216
218
  src: option.icon
217
- }) : option.icon), /*#__PURE__*/_react["default"].createElement("span", {
219
+ }) : option.icon), optionsIconPosition === "before" && /*#__PURE__*/_react["default"].createElement("span", {
218
220
  className: "optionLabel"
219
221
  }, option.label));
220
222
  })))));
@@ -251,7 +253,7 @@ var DXCDropdownContainer = _styledComponents["default"].div(_templateObject || (
251
253
  return props.margin && (0, _typeof2["default"])(props.margin) === "object" && props.margin.left ? _variables.spaces[props.margin.left] : "";
252
254
  });
253
255
 
254
- var DXCMenu = (0, _styledComponents["default"])(_Popper["default"])(_templateObject2 || (_templateObject2 = (0, _taggedTemplateLiteral2["default"])(["\n z-index: 1;\n\n .MuiMenuItem-gutters {\n width: ", ";\n }\n .MuiMenuItem-root {\n min-height: 36px;\n padding-top: ", ";\n padding-bottom: ", ";\n padding-left: ", ";\n padding-right: ", ";\n height: auto;\n }\n .MuiPaper-root {\n min-width: ", ";\n border-width: ", ";\n border-style: ", ";\n border-color: ", ";\n border-bottom-left-radius: ", ";\n border-bottom-right-radius: ", ";\n border-top-left-radius: 0px;\n border-top-right-radius: 0px;\n max-height: 230px;\n overflow-y: auto;\n\n ::-webkit-scrollbar {\n width: 3px;\n }\n ::-webkit-scrollbar-track {\n background-color: ", ";\n border-radius: 3px;\n }\n ::-webkit-scrollbar-thumb {\n background-color: ", ";\n border-radius: 3px;\n }\n\n .MuiList-padding {\n padding-top: 0px;\n padding-bottom: 0px;\n }\n .MuiListItem-button {\n display: flex;\n flex-direction: ", ";\n justify-content: ", ";\n background-color: ", ";\n font-family: ", ";\n font-size: ", ";\n font-style: ", ";\n font-weight: ", ";\n color: ", ";\n cursor: pointer;\n }\n .MuiListItem-button:focus {\n outline: ", " solid 2px;\n outline-offset: -2px;\n }\n .MuiListItem-button:hover {\n background-color: ", ";\n }\n .MuiListItem-button:active {\n background-color: ", ";\n outline: ", " solid 2px;\n outline-offset: -2px;\n }\n }\n"])), function (props) {
256
+ var DXCMenu = (0, _styledComponents["default"])(_Popper["default"])(_templateObject2 || (_templateObject2 = (0, _taggedTemplateLiteral2["default"])(["\n z-index: 1;\n\n .MuiMenuItem-gutters {\n width: ", ";\n }\n .MuiMenuItem-root {\n min-height: 36px;\n padding-top: ", ";\n padding-bottom: ", ";\n padding-left: ", ";\n padding-right: ", ";\n height: auto;\n }\n .MuiPaper-root {\n min-width: ", ";\n border-width: ", ";\n border-style: ", ";\n border-color: ", ";\n border-bottom-left-radius: ", ";\n border-bottom-right-radius: ", ";\n border-top-left-radius: 0px;\n border-top-right-radius: 0px;\n max-height: 230px;\n overflow-y: auto;\n\n ::-webkit-scrollbar {\n width: 3px;\n }\n ::-webkit-scrollbar-track {\n background-color: ", ";\n border-radius: 3px;\n }\n ::-webkit-scrollbar-thumb {\n background-color: ", ";\n border-radius: 3px;\n }\n\n .MuiList-padding {\n padding-top: 0px;\n padding-bottom: 0px;\n }\n .MuiListItem-button {\n display: flex;\n background-color: ", ";\n font-family: ", ";\n font-size: ", ";\n font-style: ", ";\n font-weight: ", ";\n color: ", ";\n cursor: pointer;\n }\n .MuiListItem-button:focus {\n outline: ", " solid 2px;\n outline-offset: -2px;\n }\n .MuiListItem-button:hover {\n background-color: ", ";\n }\n .MuiListItem-button:active {\n background-color: ", ";\n outline: ", " solid 2px;\n outline-offset: -2px;\n }\n }\n"])), function (props) {
255
257
  return calculateWidth(props.margin, props.size);
256
258
  }, function (props) {
257
259
  return props.theme.optionPaddingTop;
@@ -277,10 +279,6 @@ var DXCMenu = (0, _styledComponents["default"])(_Popper["default"])(_templateObj
277
279
  return props.theme.scrollBarTrackColor;
278
280
  }, function (props) {
279
281
  return props.theme.scrollBarThumbColor;
280
- }, function (props) {
281
- return props.optionsIconPosition === "after" && "row-reverse" || "row";
282
- }, function (props) {
283
- return props.optionsIconPosition === "after" && "flex-end" || "";
284
282
  }, function (props) {
285
283
  return props.theme.optionBackgroundColor;
286
284
  }, function (props) {
@@ -345,9 +343,7 @@ var DropdownTrigger = _styledComponents["default"].button(_templateObject3 || (_
345
343
 
346
344
  var DropdownTriggerLabel = _styledComponents["default"].span(_templateObject4 || (_templateObject4 = (0, _taggedTemplateLiteral2["default"])(["\n text-align: left;\n text-overflow: ellipsis;\n overflow: hidden;\n"])));
347
345
 
348
- var DropdownTriggerContainer = _styledComponents["default"].span(_templateObject5 || (_templateObject5 = (0, _taggedTemplateLiteral2["default"])(["\n display: flex;\n align-items: center;\n flex-direction: ", ";\n margin-left: 0px;\n margin-right: 0px;\n width: ", ";\n white-space: nowrap;\n"])), function (props) {
349
- return props.iconPosition === "after" && "row-reverse" || "row";
350
- }, function (props) {
346
+ var DropdownTriggerContainer = _styledComponents["default"].span(_templateObject5 || (_templateObject5 = (0, _taggedTemplateLiteral2["default"])(["\n display: flex;\n align-items: center;\n margin-left: 0px;\n margin-right: 0px;\n width: ", ";\n white-space: nowrap;\n"])), function (props) {
351
347
  return props.caretHidden ? "100%" : "calc(100% - 36px)";
352
348
  });
353
349
 
@@ -33,6 +33,8 @@ var _variables = require("../common/variables.js");
33
33
 
34
34
  var _useTheme = _interopRequireDefault(require("../useTheme"));
35
35
 
36
+ var _useTranslatedLabels = _interopRequireDefault(require("../useTranslatedLabels"));
37
+
36
38
  var _Button = _interopRequireDefault(require("../button/Button"));
37
39
 
38
40
  var _FileItem = _interopRequireDefault(require("./FileItem"));
@@ -127,6 +129,7 @@ var DxcFileInput = function DxcFileInput(_ref) {
127
129
  fileInputId = _useState6[0];
128
130
 
129
131
  var colorsTheme = (0, _useTheme["default"])();
132
+ var translatedLabels = (0, _useTranslatedLabels["default"])();
130
133
  (0, _react.useEffect)(function () {
131
134
  var getFiles = /*#__PURE__*/function () {
132
135
  var _ref2 = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee2() {
@@ -204,11 +207,11 @@ var DxcFileInput = function DxcFileInput(_ref) {
204
207
 
205
208
  var checkFileSize = function checkFileSize(file) {
206
209
  if (file.size < minSize) {
207
- return "File size must be greater than min size.";
210
+ return translatedLabels.fileInput.fileSizeGreaterThanErrorMessage;
208
211
  }
209
212
 
210
213
  if (file.size > maxSize) {
211
- return "File size must be less than max size.";
214
+ return translatedLabels.fileInput.fileSizeLessThanErrorMessage;
212
215
  }
213
216
  };
214
217
 
@@ -410,7 +413,7 @@ var DxcFileInput = function DxcFileInput(_ref) {
410
413
  onChange: selectFiles
411
414
  }), /*#__PURE__*/_react["default"].createElement(_Button["default"], {
412
415
  mode: "secondary",
413
- label: buttonLabel !== null && buttonLabel !== void 0 ? buttonLabel : multiple ? "Select files" : "Select file",
416
+ label: buttonLabel !== null && buttonLabel !== void 0 ? buttonLabel : multiple ? translatedLabels.fileInput.multipleButtonLabelDefault : translatedLabels.fileInput.singleButtonLabelDefault,
414
417
  onClick: handleClick,
415
418
  disabled: disabled,
416
419
  size: "medium",
@@ -450,15 +453,15 @@ var DxcFileInput = function DxcFileInput(_ref) {
450
453
  mode: mode
451
454
  }, /*#__PURE__*/_react["default"].createElement(_Button["default"], {
452
455
  mode: "secondary",
453
- label: buttonLabel !== null && buttonLabel !== void 0 ? buttonLabel : "Select",
456
+ label: buttonLabel !== null && buttonLabel !== void 0 ? buttonLabel : translatedLabels.fileInput.dropAreaButtonLabelDefault,
454
457
  onClick: handleClick,
455
458
  disabled: disabled,
456
459
  size: "fitContent"
457
460
  })), mode === "dropzone" ? /*#__PURE__*/_react["default"].createElement(DropzoneLabel, {
458
461
  disabled: disabled
459
- }, dropAreaLabel !== null && dropAreaLabel !== void 0 ? dropAreaLabel : multiple ? "or drop files" : "or drop a file") : /*#__PURE__*/_react["default"].createElement(FiledropLabel, {
462
+ }, dropAreaLabel !== null && dropAreaLabel !== void 0 ? dropAreaLabel : multiple ? translatedLabels.fileInput.multipleDropAreaLabelDefault : translatedLabels.fileInput.singleDropAreaLabelDefault) : /*#__PURE__*/_react["default"].createElement(FiledropLabel, {
460
463
  disabled: disabled
461
- }, dropAreaLabel !== null && dropAreaLabel !== void 0 ? dropAreaLabel : multiple ? "or drop files" : "or drop a file")), files.map(function (file) {
464
+ }, dropAreaLabel !== null && dropAreaLabel !== void 0 ? dropAreaLabel : multiple ? translatedLabels.fileInput.multipleDropAreaLabelDefault : translatedLabels.fileInput.singleDropAreaLabelDefault)), files.map(function (file) {
462
465
  return /*#__PURE__*/_react["default"].createElement(FileItemContainer, {
463
466
  mode: mode,
464
467
  multiple: multiple,