@dxc-technology/halstack-react 7.0.0 → 9.0.0

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 (109) hide show
  1. package/HalstackContext.js +98 -50
  2. package/accordion/Accordion.js +7 -13
  3. package/accordion/Accordion.stories.tsx +102 -13
  4. package/alert/Alert.stories.tsx +28 -0
  5. package/box/Box.js +1 -3
  6. package/box/Box.stories.tsx +15 -0
  7. package/button/Button.js +11 -13
  8. package/button/Button.stories.tsx +150 -8
  9. package/checkbox/Checkbox.d.ts +2 -2
  10. package/checkbox/Checkbox.js +16 -15
  11. package/checkbox/Checkbox.stories.tsx +131 -59
  12. package/checkbox/types.d.ts +4 -0
  13. package/chip/Chip.js +16 -22
  14. package/chip/Chip.stories.tsx +96 -9
  15. package/common/variables.js +286 -290
  16. package/date-input/Calendar.d.ts +4 -0
  17. package/date-input/Calendar.js +258 -0
  18. package/date-input/DateInput.js +134 -237
  19. package/date-input/DateInput.stories.tsx +199 -33
  20. package/date-input/DateInput.test.js +494 -138
  21. package/date-input/DatePicker.d.ts +4 -0
  22. package/date-input/DatePicker.js +146 -0
  23. package/date-input/Icons.d.ts +6 -0
  24. package/date-input/Icons.js +75 -0
  25. package/date-input/YearPicker.d.ts +4 -0
  26. package/date-input/YearPicker.js +126 -0
  27. package/date-input/types.d.ts +51 -0
  28. package/dialog/Dialog.js +60 -73
  29. package/dialog/Dialog.stories.tsx +211 -159
  30. package/dialog/Dialog.test.js +301 -2
  31. package/dropdown/Dropdown.js +35 -35
  32. package/dropdown/Dropdown.stories.tsx +210 -84
  33. package/dropdown/Dropdown.test.js +17 -22
  34. package/dropdown/DropdownMenu.js +8 -18
  35. package/dropdown/DropdownMenuItem.js +4 -15
  36. package/file-input/FileInput.d.ts +2 -2
  37. package/file-input/FileInput.js +169 -222
  38. package/file-input/FileInput.stories.tsx +122 -11
  39. package/file-input/FileInput.test.js +12 -53
  40. package/file-input/FileItem.d.ts +4 -14
  41. package/file-input/FileItem.js +39 -63
  42. package/file-input/types.d.ts +17 -0
  43. package/footer/Footer.stories.tsx +91 -0
  44. package/header/Header.js +18 -20
  45. package/header/Header.stories.tsx +149 -6
  46. package/link/Link.js +1 -1
  47. package/link/Link.stories.tsx +60 -0
  48. package/main.d.ts +1 -1
  49. package/main.js +1 -1
  50. package/{tabs-nav → nav-tabs}/NavTabs.js +1 -1
  51. package/{tabs-nav → nav-tabs}/NavTabs.stories.tsx +96 -6
  52. package/{tabs-nav → nav-tabs}/Tab.js +35 -15
  53. package/number-input/NumberInput.test.js +5 -6
  54. package/package.json +7 -12
  55. package/paginator/Icons.d.ts +5 -0
  56. package/paginator/Icons.js +16 -28
  57. package/paginator/Paginator.js +5 -11
  58. package/paginator/Paginator.stories.tsx +24 -0
  59. package/paginator/Paginator.test.js +17 -10
  60. package/progress-bar/ProgressBar.js +4 -4
  61. package/progress-bar/ProgressBar.stories.jsx +35 -2
  62. package/quick-nav/QuickNav.stories.tsx +14 -0
  63. package/radio-group/RadioGroup.stories.tsx +131 -18
  64. package/resultsetTable/Icons.d.ts +7 -0
  65. package/resultsetTable/Icons.js +51 -0
  66. package/resultsetTable/ResultsetTable.js +48 -105
  67. package/resultsetTable/ResultsetTable.stories.tsx +50 -25
  68. package/resultsetTable/ResultsetTable.test.js +40 -63
  69. package/resultsetTable/types.d.ts +2 -2
  70. package/select/Listbox.d.ts +1 -1
  71. package/select/Listbox.js +5 -34
  72. package/select/Option.js +11 -24
  73. package/select/Select.js +43 -24
  74. package/select/Select.stories.tsx +494 -150
  75. package/select/Select.test.js +17 -22
  76. package/select/types.d.ts +2 -2
  77. package/sidenav/Sidenav.js +8 -10
  78. package/sidenav/Sidenav.stories.tsx +148 -46
  79. package/slider/Slider.d.ts +2 -2
  80. package/slider/Slider.js +9 -8
  81. package/slider/Slider.stories.tsx +57 -0
  82. package/slider/types.d.ts +4 -0
  83. package/spinner/Spinner.js +2 -2
  84. package/spinner/Spinner.stories.jsx +27 -1
  85. package/switch/Switch.d.ts +3 -3
  86. package/switch/Switch.js +5 -4
  87. package/switch/Switch.stories.tsx +33 -0
  88. package/switch/types.d.ts +6 -1
  89. package/table/Table.stories.jsx +80 -1
  90. package/table/Table.test.js +1 -1
  91. package/tabs/Tab.js +3 -5
  92. package/tabs/Tabs.js +3 -3
  93. package/tabs/Tabs.stories.tsx +45 -5
  94. package/tag/Tag.stories.tsx +14 -1
  95. package/text-input/Suggestion.js +32 -5
  96. package/text-input/TextInput.js +7 -11
  97. package/text-input/TextInput.stories.tsx +92 -4
  98. package/text-input/TextInput.test.js +587 -634
  99. package/textarea/Textarea.stories.jsx +60 -1
  100. package/toggle-group/ToggleGroup.stories.tsx +42 -0
  101. package/utils/FocusLock.d.ts +13 -0
  102. package/utils/FocusLock.js +139 -0
  103. package/wizard/Wizard.stories.tsx +20 -0
  104. package/common/RequiredComponent.js +0 -32
  105. /package/{tabs-nav → nav-tabs}/NavTabs.d.ts +0 -0
  106. /package/{tabs-nav → nav-tabs}/NavTabs.test.js +0 -0
  107. /package/{tabs-nav → nav-tabs}/Tab.d.ts +0 -0
  108. /package/{tabs-nav → nav-tabs}/types.d.ts +0 -0
  109. /package/{tabs-nav → nav-tabs}/types.js +0 -0
@@ -15,10 +15,10 @@ var _taggedTemplateLiteral2 = _interopRequireDefault(require("@babel/runtime/hel
15
15
 
16
16
  var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
17
17
 
18
- var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));
19
-
20
18
  var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
21
19
 
20
+ var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));
21
+
22
22
  var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
23
23
 
24
24
  var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
@@ -39,7 +39,7 @@ var _Button = _interopRequireDefault(require("../button/Button"));
39
39
 
40
40
  var _FileItem = _interopRequireDefault(require("./FileItem"));
41
41
 
42
- var _templateObject, _templateObject2, _templateObject3, _templateObject4, _templateObject5, _templateObject6, _templateObject7, _templateObject8, _templateObject9, _templateObject10, _templateObject11, _templateObject12;
42
+ var _templateObject, _templateObject2, _templateObject3, _templateObject4, _templateObject5, _templateObject6, _templateObject7, _templateObject8, _templateObject9, _templateObject10, _templateObject11;
43
43
 
44
44
  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); }
45
45
 
@@ -88,7 +88,18 @@ var fileIcon = /*#__PURE__*/_react["default"].createElement("svg", {
88
88
  d: "M14 2H6c-1.1 0-1.99.9-1.99 2L4 20c0 1.1.89 2 1.99 2H18c1.1 0 2-.9 2-2V8l-6-6zM6 20V4h7v5h5v11H6z"
89
89
  }));
90
90
 
91
- var DxcFileInput = function DxcFileInput(_ref) {
91
+ var getFilePreview = function getFilePreview(file) {
92
+ if (file.type.includes("video")) return videoIcon;else if (file.type.includes("audio")) return audioIcon;else if (file.type.includes("image")) return new Promise(function (resolve) {
93
+ var reader = new FileReader();
94
+ reader.readAsDataURL(file);
95
+
96
+ reader.onload = function (e) {
97
+ resolve(e.target.result);
98
+ };
99
+ });else return fileIcon;
100
+ };
101
+
102
+ var DxcFileInput = /*#__PURE__*/_react["default"].forwardRef(function (_ref, ref) {
92
103
  var _ref$name = _ref.name,
93
104
  name = _ref$name === void 0 ? "" : _ref$name,
94
105
  _ref$mode = _ref.mode,
@@ -130,129 +141,26 @@ var DxcFileInput = function DxcFileInput(_ref) {
130
141
 
131
142
  var colorsTheme = (0, _useTheme["default"])();
132
143
  var translatedLabels = (0, _useTranslatedLabels["default"])();
133
- (0, _react.useEffect)(function () {
134
- var getFiles = /*#__PURE__*/function () {
135
- var _ref2 = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee2() {
136
- var valueFiles;
137
- return _regenerator["default"].wrap(function _callee2$(_context2) {
138
- while (1) {
139
- switch (_context2.prev = _context2.next) {
140
- case 0:
141
- if (!value) {
142
- _context2.next = 5;
143
- break;
144
- }
145
-
146
- _context2.next = 3;
147
- return Promise.all(value.map( /*#__PURE__*/function () {
148
- var _ref3 = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee(file) {
149
- var preview;
150
- return _regenerator["default"].wrap(function _callee$(_context) {
151
- while (1) {
152
- switch (_context.prev = _context.next) {
153
- case 0:
154
- if (!file.preview) {
155
- _context.next = 4;
156
- break;
157
- }
158
-
159
- return _context.abrupt("return", file);
160
-
161
- case 4:
162
- _context.next = 6;
163
- return getFilePreview(file.file);
164
-
165
- case 6:
166
- preview = _context.sent;
167
- return _context.abrupt("return", _objectSpread(_objectSpread({}, file), {}, {
168
- preview: preview
169
- }));
170
-
171
- case 8:
172
- case "end":
173
- return _context.stop();
174
- }
175
- }
176
- }, _callee);
177
- }));
178
-
179
- return function (_x) {
180
- return _ref3.apply(this, arguments);
181
- };
182
- }()));
183
-
184
- case 3:
185
- valueFiles = _context2.sent;
186
- setFiles(valueFiles);
187
-
188
- case 5:
189
- case "end":
190
- return _context2.stop();
191
- }
192
- }
193
- }, _callee2);
194
- }));
195
-
196
- return function getFiles() {
197
- return _ref2.apply(this, arguments);
198
- };
199
- }();
200
-
201
- getFiles();
202
- }, [value]);
203
-
204
- var handleClick = function handleClick() {
205
- document.getElementById(fileInputId).click();
206
- };
207
144
 
208
145
  var checkFileSize = function checkFileSize(file) {
209
- if (file.size < minSize) {
210
- return translatedLabels.fileInput.fileSizeGreaterThanErrorMessage;
211
- }
212
-
213
- if (file.size > maxSize) {
214
- return translatedLabels.fileInput.fileSizeLessThanErrorMessage;
215
- }
216
- };
217
-
218
- var getFilePreview = function getFilePreview(file) {
219
- if (file.type.includes("video")) {
220
- return videoIcon;
221
- }
222
-
223
- if (file.type.includes("audio")) {
224
- return audioIcon;
225
- }
226
-
227
- if (file.type.includes("image")) {
228
- return new Promise(function (resolve) {
229
- var reader = new FileReader();
230
- reader.readAsDataURL(file);
231
-
232
- reader.onload = function (e) {
233
- resolve(e.target.result);
234
- };
235
- });
236
- }
237
-
238
- return fileIcon;
146
+ if (file.size < minSize) return translatedLabels.fileInput.fileSizeGreaterThanErrorMessage;else if (file.size > maxSize) return translatedLabels.fileInput.fileSizeLessThanErrorMessage;
239
147
  };
240
148
 
241
149
  var getFilesToAdd = /*#__PURE__*/function () {
242
- var _ref4 = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee3(selectedFiles) {
150
+ var _ref2 = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee(selectedFiles) {
243
151
  var filesToAdd;
244
- return _regenerator["default"].wrap(function _callee3$(_context3) {
152
+ return _regenerator["default"].wrap(function _callee$(_context) {
245
153
  while (1) {
246
- switch (_context3.prev = _context3.next) {
154
+ switch (_context.prev = _context.next) {
247
155
  case 0:
248
- _context3.next = 2;
156
+ _context.next = 2;
249
157
  return Promise.all(selectedFiles.map(function (selectedFile) {
250
158
  return getFilePreview(selectedFile);
251
159
  })).then(function (previews) {
252
- return selectedFiles.map(function (selectedFile, index) {
160
+ return selectedFiles.map(function (file, index) {
253
161
  var fileInfo = {
254
- file: selectedFile,
255
- error: checkFileSize(selectedFile),
162
+ file: file,
163
+ error: checkFileSize(file),
256
164
  preview: previews[index]
257
165
  };
258
166
  return fileInfo;
@@ -260,86 +168,79 @@ var DxcFileInput = function DxcFileInput(_ref) {
260
168
  });
261
169
 
262
170
  case 2:
263
- filesToAdd = _context3.sent;
264
- return _context3.abrupt("return", filesToAdd);
171
+ filesToAdd = _context.sent;
172
+ return _context.abrupt("return", filesToAdd);
265
173
 
266
174
  case 4:
267
175
  case "end":
268
- return _context3.stop();
176
+ return _context.stop();
269
177
  }
270
178
  }
271
- }, _callee3);
179
+ }, _callee);
272
180
  }));
273
181
 
274
- return function getFilesToAdd(_x2) {
275
- return _ref4.apply(this, arguments);
182
+ return function getFilesToAdd(_x) {
183
+ return _ref2.apply(this, arguments);
276
184
  };
277
185
  }();
278
186
 
279
187
  var addFile = /*#__PURE__*/function () {
280
- var _ref5 = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee4(selectedFiles) {
188
+ var _ref3 = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee2(selectedFiles) {
281
189
  var filesToAdd, finalFiles, fileToAdd;
282
- return _regenerator["default"].wrap(function _callee4$(_context4) {
190
+ return _regenerator["default"].wrap(function _callee2$(_context2) {
283
191
  while (1) {
284
- switch (_context4.prev = _context4.next) {
192
+ switch (_context2.prev = _context2.next) {
285
193
  case 0:
286
194
  if (!multiple) {
287
- _context4.next = 8;
195
+ _context2.next = 8;
288
196
  break;
289
197
  }
290
198
 
291
- _context4.next = 3;
199
+ _context2.next = 3;
292
200
  return getFilesToAdd(selectedFiles);
293
201
 
294
202
  case 3:
295
- filesToAdd = _context4.sent;
203
+ filesToAdd = _context2.sent;
296
204
  finalFiles = [].concat((0, _toConsumableArray2["default"])(files), (0, _toConsumableArray2["default"])(filesToAdd));
297
-
298
- if (typeof callbackFile === "function") {
299
- callbackFile(finalFiles);
300
- }
301
-
302
- _context4.next = 19;
205
+ callbackFile === null || callbackFile === void 0 ? void 0 : callbackFile(finalFiles);
206
+ _context2.next = 19;
303
207
  break;
304
208
 
305
209
  case 8:
306
210
  if (!(selectedFiles.length === 1)) {
307
- _context4.next = 14;
211
+ _context2.next = 14;
308
212
  break;
309
213
  }
310
214
 
311
- _context4.next = 11;
215
+ _context2.next = 11;
312
216
  return getFilesToAdd(selectedFiles);
313
217
 
314
218
  case 11:
315
- _context4.t0 = _context4.sent;
316
- _context4.next = 17;
219
+ _context2.t0 = _context2.sent;
220
+ _context2.next = 17;
317
221
  break;
318
222
 
319
223
  case 14:
320
- _context4.next = 16;
224
+ _context2.next = 16;
321
225
  return getFilesToAdd([selectedFiles[0]]);
322
226
 
323
227
  case 16:
324
- _context4.t0 = _context4.sent;
228
+ _context2.t0 = _context2.sent;
325
229
 
326
230
  case 17:
327
- fileToAdd = _context4.t0;
328
-
329
- if (typeof callbackFile === "function") {
330
- callbackFile(fileToAdd);
331
- }
231
+ fileToAdd = _context2.t0;
232
+ callbackFile === null || callbackFile === void 0 ? void 0 : callbackFile(fileToAdd);
332
233
 
333
234
  case 19:
334
235
  case "end":
335
- return _context4.stop();
236
+ return _context2.stop();
336
237
  }
337
238
  }
338
- }, _callee4);
239
+ }, _callee2);
339
240
  }));
340
241
 
341
- return function addFile(_x3) {
342
- return _ref5.apply(this, arguments);
242
+ return function addFile(_x2) {
243
+ return _ref3.apply(this, arguments);
343
244
  };
344
245
  }();
345
246
 
@@ -349,19 +250,21 @@ var DxcFileInput = function DxcFileInput(_ref) {
349
250
  return selectedFiles[key];
350
251
  });
351
252
  addFile(filesArray);
253
+ e.target.value = null;
352
254
  };
353
255
 
354
- var onDelete = function onDelete(fileName) {
256
+ var onDelete = (0, _react.useCallback)(function (fileName) {
355
257
  var filesCopy = (0, _toConsumableArray2["default"])(files);
356
258
  var fileToRemove = filesCopy.find(function (file) {
357
259
  return file.file.name === fileName;
358
260
  });
359
261
  var fileIndex = filesCopy.indexOf(fileToRemove);
360
262
  filesCopy.splice(fileIndex, 1);
263
+ callbackFile === null || callbackFile === void 0 ? void 0 : callbackFile(filesCopy);
264
+ }, [files, callbackFile]);
361
265
 
362
- if (typeof callbackFile === "function") {
363
- callbackFile(filesCopy);
364
- }
266
+ var handleClick = function handleClick() {
267
+ document.getElementById(fileInputId).click();
365
268
  };
366
269
 
367
270
  var handleDrag = function handleDrag(e) {
@@ -370,7 +273,9 @@ var DxcFileInput = function DxcFileInput(_ref) {
370
273
  };
371
274
 
372
275
  var handleDragIn = function handleDragIn(e) {
373
- if (e.dataTransfer.items && e.dataTransfer.items.length > 0) setIsDragging(true);
276
+ var _e$dataTransfer$items;
277
+
278
+ if (((_e$dataTransfer$items = e.dataTransfer.items) === null || _e$dataTransfer$items === void 0 ? void 0 : _e$dataTransfer$items.length) > 0) setIsDragging(true);
374
279
  };
375
280
 
376
281
  var handleDragOut = function handleDragOut(e) {
@@ -384,7 +289,7 @@ var DxcFileInput = function DxcFileInput(_ref) {
384
289
  setIsDragging(false);
385
290
  var filesObject = e.dataTransfer.files;
386
291
 
387
- if (filesObject && filesObject.length > 0) {
292
+ if ((filesObject === null || filesObject === void 0 ? void 0 : filesObject.length) > 0) {
388
293
  var filesArray = Object.keys(filesObject).map(function (key) {
389
294
  return filesObject[key];
390
295
  });
@@ -392,63 +297,124 @@ var DxcFileInput = function DxcFileInput(_ref) {
392
297
  }
393
298
  };
394
299
 
300
+ (0, _react.useEffect)(function () {
301
+ var getFiles = /*#__PURE__*/function () {
302
+ var _ref4 = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee4() {
303
+ var valueFiles;
304
+ return _regenerator["default"].wrap(function _callee4$(_context4) {
305
+ while (1) {
306
+ switch (_context4.prev = _context4.next) {
307
+ case 0:
308
+ if (!value) {
309
+ _context4.next = 5;
310
+ break;
311
+ }
312
+
313
+ _context4.next = 3;
314
+ return Promise.all(value.map( /*#__PURE__*/function () {
315
+ var _ref5 = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee3(file) {
316
+ var preview;
317
+ return _regenerator["default"].wrap(function _callee3$(_context3) {
318
+ while (1) {
319
+ switch (_context3.prev = _context3.next) {
320
+ case 0:
321
+ if (!file.preview) {
322
+ _context3.next = 4;
323
+ break;
324
+ }
325
+
326
+ return _context3.abrupt("return", file);
327
+
328
+ case 4:
329
+ _context3.next = 6;
330
+ return getFilePreview(file.file);
331
+
332
+ case 6:
333
+ preview = _context3.sent;
334
+ return _context3.abrupt("return", _objectSpread(_objectSpread({}, file), {}, {
335
+ preview: preview
336
+ }));
337
+
338
+ case 8:
339
+ case "end":
340
+ return _context3.stop();
341
+ }
342
+ }
343
+ }, _callee3);
344
+ }));
345
+
346
+ return function (_x3) {
347
+ return _ref5.apply(this, arguments);
348
+ };
349
+ }()));
350
+
351
+ case 3:
352
+ valueFiles = _context4.sent;
353
+ setFiles(valueFiles);
354
+
355
+ case 5:
356
+ case "end":
357
+ return _context4.stop();
358
+ }
359
+ }
360
+ }, _callee4);
361
+ }));
362
+
363
+ return function getFiles() {
364
+ return _ref4.apply(this, arguments);
365
+ };
366
+ }();
367
+
368
+ getFiles();
369
+ }, [value]);
395
370
  return /*#__PURE__*/_react["default"].createElement(_styledComponents.ThemeProvider, {
396
371
  theme: colorsTheme.fileInput
397
372
  }, /*#__PURE__*/_react["default"].createElement(FileInputContainer, {
398
373
  margin: margin,
399
- name: name
374
+ name: name,
375
+ ref: ref
400
376
  }, /*#__PURE__*/_react["default"].createElement(Label, {
401
377
  htmlFor: fileInputId,
402
378
  disabled: disabled
403
379
  }, label), /*#__PURE__*/_react["default"].createElement(HelperText, {
404
380
  disabled: disabled
405
381
  }, helperText), mode === "file" ? /*#__PURE__*/_react["default"].createElement(FileContainer, {
406
- multiple: multiple,
407
- files: files
382
+ singleFileMode: !multiple && files.length === 1
408
383
  }, /*#__PURE__*/_react["default"].createElement(ValueInput, {
409
384
  id: fileInputId,
410
385
  type: "file",
411
386
  accept: accept,
412
387
  multiple: multiple,
413
388
  onChange: selectFiles,
414
- name: name,
415
389
  disabled: disabled,
416
- readOnly: true,
417
- "aria-hidden": "true"
390
+ readOnly: true
418
391
  }), /*#__PURE__*/_react["default"].createElement(_Button["default"], {
419
392
  mode: "secondary",
420
393
  label: buttonLabel !== null && buttonLabel !== void 0 ? buttonLabel : multiple ? translatedLabels.fileInput.multipleButtonLabelDefault : translatedLabels.fileInput.singleButtonLabelDefault,
421
394
  onClick: handleClick,
422
395
  disabled: disabled,
423
- size: "medium",
396
+ size: "fitContent",
424
397
  tabIndex: tabIndex
425
- }), files.map(function (file) {
426
- return /*#__PURE__*/_react["default"].createElement(_react["default"].Fragment, null, /*#__PURE__*/_react["default"].createElement(FileItemContainer, {
427
- mode: mode,
428
- multiple: multiple,
429
- files: files
430
- }, /*#__PURE__*/_react["default"].createElement(_FileItem["default"], {
431
- mode: mode,
432
- multiple: multiple,
433
- name: file.file.name,
398
+ }), files.length > 0 && /*#__PURE__*/_react["default"].createElement(FileItemListContainer, null, files.map(function (file, index) {
399
+ return /*#__PURE__*/_react["default"].createElement(_FileItem["default"], {
400
+ fileName: file.file.name,
434
401
  error: file.error,
402
+ singleFileMode: !multiple && files.length === 1,
435
403
  showPreview: mode === "file" && !multiple ? false : showPreview,
436
- numFiles: files.length,
437
404
  preview: file.preview,
438
405
  type: file.file.type,
439
406
  onDelete: onDelete,
440
- tabIndex: tabIndex
441
- })));
442
- })) : /*#__PURE__*/_react["default"].createElement(Container, null, /*#__PURE__*/_react["default"].createElement(ValueInput, {
407
+ tabIndex: tabIndex,
408
+ key: "file-".concat(index)
409
+ });
410
+ }))) : /*#__PURE__*/_react["default"].createElement(Container, null, /*#__PURE__*/_react["default"].createElement(ValueInput, {
443
411
  id: fileInputId,
444
412
  type: "file",
445
413
  accept: accept,
446
414
  multiple: multiple,
447
415
  onChange: selectFiles,
448
- name: name,
449
416
  disabled: disabled,
450
- readOnly: true,
451
- "aria-hidden": "true"
417
+ readOnly: true
452
418
  }), /*#__PURE__*/_react["default"].createElement(DragDropArea, {
453
419
  isDragging: isDragging,
454
420
  disabled: disabled,
@@ -457,39 +423,30 @@ var DxcFileInput = function DxcFileInput(_ref) {
457
423
  onDragEnter: handleDragIn,
458
424
  onDragOver: handleDrag,
459
425
  onDragLeave: handleDragOut
460
- }, /*#__PURE__*/_react["default"].createElement(ButtonContainer, {
461
- mode: mode
462
426
  }, /*#__PURE__*/_react["default"].createElement(_Button["default"], {
463
427
  mode: "secondary",
464
428
  label: buttonLabel !== null && buttonLabel !== void 0 ? buttonLabel : translatedLabels.fileInput.dropAreaButtonLabelDefault,
465
429
  onClick: handleClick,
466
430
  disabled: disabled,
467
431
  size: "fitContent"
468
- })), mode === "dropzone" ? /*#__PURE__*/_react["default"].createElement(DropzoneLabel, {
432
+ }), mode === "dropzone" ? /*#__PURE__*/_react["default"].createElement(DropzoneLabel, {
469
433
  disabled: disabled
470
434
  }, dropAreaLabel !== null && dropAreaLabel !== void 0 ? dropAreaLabel : multiple ? translatedLabels.fileInput.multipleDropAreaLabelDefault : translatedLabels.fileInput.singleDropAreaLabelDefault) : /*#__PURE__*/_react["default"].createElement(FiledropLabel, {
471
435
  disabled: disabled
472
- }, dropAreaLabel !== null && dropAreaLabel !== void 0 ? dropAreaLabel : multiple ? translatedLabels.fileInput.multipleDropAreaLabelDefault : translatedLabels.fileInput.singleDropAreaLabelDefault)), files.map(function (file) {
473
- return /*#__PURE__*/_react["default"].createElement(FileItemContainer, {
474
- mode: mode,
475
- multiple: multiple,
476
- files: files
477
- }, /*#__PURE__*/_react["default"].createElement(_FileItem["default"], {
478
- mode: mode,
479
- multiple: multiple,
480
- name: file.file.name,
436
+ }, dropAreaLabel !== null && dropAreaLabel !== void 0 ? dropAreaLabel : multiple ? translatedLabels.fileInput.multipleDropAreaLabelDefault : translatedLabels.fileInput.singleDropAreaLabelDefault)), files.length > 0 && /*#__PURE__*/_react["default"].createElement(FileItemListContainer, null, files.map(function (file, index) {
437
+ return /*#__PURE__*/_react["default"].createElement(_FileItem["default"], {
438
+ fileName: file.file.name,
481
439
  error: file.error,
440
+ singleFileMode: false,
482
441
  showPreview: showPreview,
483
- numFiles: files.length,
484
442
  preview: file.preview,
485
443
  type: file.file.type,
486
444
  onDelete: onDelete,
487
- tabIndex: tabIndex
488
- }));
489
- })), files.length === 1 && files.map(function (file) {
490
- return file.error && mode === "file" && !multiple && /*#__PURE__*/_react["default"].createElement(ErrorMessage, null, file.error);
491
- })));
492
- };
445
+ tabIndex: tabIndex,
446
+ key: "file-".concat(index)
447
+ });
448
+ }))), mode === "file" && !multiple && files.length === 1 && files[0].error && /*#__PURE__*/_react["default"].createElement(ErrorMessage, null, files[0].error)));
449
+ });
493
450
 
494
451
  var FileInputContainer = _styledComponents["default"].div(_templateObject || (_templateObject = (0, _taggedTemplateLiteral2["default"])(["\n display: flex;\n flex-direction: column;\n margin: ", ";\n margin-top: ", ";\n margin-right: ", ";\n margin-bottom: ", ";\n margin-left: ", ";\n width: fit-content;\n"])), function (props) {
495
452
  return props.margin && (0, _typeof2["default"])(props.margin) !== "object" ? _variables.spaces[props.margin] : "0px";
@@ -527,12 +484,20 @@ var HelperText = _styledComponents["default"].span(_templateObject3 || (_templat
527
484
  return props.theme.helperTextLineHeight;
528
485
  });
529
486
 
530
- var DragDropArea = _styledComponents["default"].div(_templateObject4 || (_templateObject4 = (0, _taggedTemplateLiteral2["default"])(["\n display: flex;\n overflow: hidden;\n box-sizing: border-box;\n flex-direction: ", ";\n ", ";\n align-items: center;\n height: ", ";\n width: 320px;\n\n box-shadow: 0 0 0 2px transparent;\n border-radius: ", ";\n border-width: ", ";\n border-style: ", ";\n border-color: ", ";\n\n ", "\n\n cursor: ", ";\n"])), function (props) {
531
- return props.mode === "filedrop" ? "row" : "column";
532
- }, function (props) {
533
- return props.mode === "dropzone" && "justify-content: center; padding: 1rem;";
487
+ var FileContainer = _styledComponents["default"].div(_templateObject4 || (_templateObject4 = (0, _taggedTemplateLiteral2["default"])(["\n display: flex;\n ", "\n margin-top: 0.25rem;\n"])), function (props) {
488
+ return props.singleFileMode ? "flex-direction: row; column-gap: 0.25rem;" : "flex-direction: column; row-gap: 0.25rem;";
489
+ });
490
+
491
+ var ValueInput = _styledComponents["default"].input(_templateObject5 || (_templateObject5 = (0, _taggedTemplateLiteral2["default"])(["\n display: none;\n"])));
492
+
493
+ var FileItemListContainer = _styledComponents["default"].div(_templateObject6 || (_templateObject6 = (0, _taggedTemplateLiteral2["default"])(["\n display: flex;\n flex-direction: column;\n row-gap: 0.25rem;\n"])));
494
+
495
+ var Container = _styledComponents["default"].div(_templateObject7 || (_templateObject7 = (0, _taggedTemplateLiteral2["default"])(["\n display: flex;\n flex-direction: column;\n row-gap: 0.25rem;\n margin-top: 0.25rem;\n"])));
496
+
497
+ var DragDropArea = _styledComponents["default"].div(_templateObject8 || (_templateObject8 = (0, _taggedTemplateLiteral2["default"])(["\n box-sizing: border-box;\n display: flex;\n ", "\n align-items: center;\n width: 320px;\n padding: ", ";\n overflow: hidden;\n box-shadow: 0 0 0 2px transparent;\n border-radius: ", ";\n border-width: ", ";\n border-style: ", ";\n border-color: ", ";\n ", "\n cursor: ", ";\n"])), function (props) {
498
+ return props.mode === "filedrop" ? "flex-direction: row; column-gap: 0.75rem; height: 48px;" : "justify-content: center; flex-direction: column; row-gap: 0.5rem; height: 160px;";
534
499
  }, function (props) {
535
- return props.mode === "filedrop" ? "48px" : "160px";
500
+ return props.mode === "filedrop" ? "calc(4px - ".concat(props.theme.dropBorderThickness, ") 1rem calc(4px - ").concat(props.theme.dropBorderThickness, ") calc(4px - ").concat(props.theme.dropBorderThickness, ")") : "1rem";
536
501
  }, function (props) {
537
502
  return props.theme.dropBorderRadius;
538
503
  }, function (props) {
@@ -547,17 +512,7 @@ var DragDropArea = _styledComponents["default"].div(_templateObject4 || (_templa
547
512
  return props.disabled && "not-allowed";
548
513
  });
549
514
 
550
- var FileContainer = _styledComponents["default"].div(_templateObject5 || (_templateObject5 = (0, _taggedTemplateLiteral2["default"])(["\n display: flex;\n flex-direction: ", ";\n margin-top: 0.25rem;\n"])), function (props) {
551
- return props.multiple || props.files.length > 1 ? "column" : "row";
552
- });
553
-
554
- var ValueInput = _styledComponents["default"].input(_templateObject6 || (_templateObject6 = (0, _taggedTemplateLiteral2["default"])(["\n display: none;\n"])));
555
-
556
- var ButtonContainer = _styledComponents["default"].div(_templateObject7 || (_templateObject7 = (0, _taggedTemplateLiteral2["default"])(["\n ", ";\n"])), function (props) {
557
- return props.mode === "filedrop" && "padding: 2px 12px 2px 3px";
558
- });
559
-
560
- var DropzoneLabel = _styledComponents["default"].div(_templateObject8 || (_templateObject8 = (0, _taggedTemplateLiteral2["default"])(["\n display: -webkit-box;\n -webkit-box-orient: vertical;\n overflow: hidden;\n text-overflow: ellipsis;\n -webkit-line-clamp: 3;\n text-align: center;\n margin-top: 0.5rem;\n color: ", ";\n font-family: ", ";\n font-size: ", ";\n font-weight: ", ";\n"])), function (props) {
515
+ var DropzoneLabel = _styledComponents["default"].div(_templateObject9 || (_templateObject9 = (0, _taggedTemplateLiteral2["default"])(["\n display: -webkit-box;\n -webkit-box-orient: vertical;\n overflow: hidden;\n text-overflow: ellipsis;\n -webkit-line-clamp: 3;\n text-align: center;\n color: ", ";\n font-family: ", ";\n font-size: ", ";\n font-weight: ", ";\n"])), function (props) {
561
516
  return props.disabled ? props.theme.disabledDropLabelFontColor : props.theme.dropLabelFontColor;
562
517
  }, function (props) {
563
518
  return props.theme.dropLabelFontFamily;
@@ -567,7 +522,7 @@ var DropzoneLabel = _styledComponents["default"].div(_templateObject8 || (_templ
567
522
  return props.theme.dropLabelFontWeight;
568
523
  });
569
524
 
570
- var FiledropLabel = _styledComponents["default"].span(_templateObject9 || (_templateObject9 = (0, _taggedTemplateLiteral2["default"])(["\n overflow: hidden;\n white-space: nowrap;\n text-overflow: ellipsis;\n color: ", ";\n font-family: ", ";\n font-size: ", ";\n font-weight: ", ";\n margin-right: 1rem;\n"])), function (props) {
525
+ var FiledropLabel = _styledComponents["default"].span(_templateObject10 || (_templateObject10 = (0, _taggedTemplateLiteral2["default"])(["\n overflow: hidden;\n white-space: nowrap;\n text-overflow: ellipsis;\n color: ", ";\n font-family: ", ";\n font-size: ", ";\n font-weight: ", ";\n"])), function (props) {
571
526
  return props.disabled ? props.theme.disabledDropLabelFontColor : props.theme.dropLabelFontColor;
572
527
  }, function (props) {
573
528
  return props.theme.dropLabelFontFamily;
@@ -577,15 +532,7 @@ var FiledropLabel = _styledComponents["default"].span(_templateObject9 || (_temp
577
532
  return props.theme.dropLabelFontWeight;
578
533
  });
579
534
 
580
- var Container = _styledComponents["default"].div(_templateObject10 || (_templateObject10 = (0, _taggedTemplateLiteral2["default"])(["\n display: flex;\n flex-direction: column;\n margin-top: 0.25rem;\n"])));
581
-
582
- var FileItemContainer = _styledComponents["default"].div(_templateObject11 || (_templateObject11 = (0, _taggedTemplateLiteral2["default"])(["\n margin-top: ", ";\n margin-left: ", ";\n"])), function (props) {
583
- return (props.multiple || props.files.length > 1 || props.mode !== "file") && "4px";
584
- }, function (props) {
585
- return props.mode === "file" && props.files.length === 1 && !props.multiple && "4px";
586
- });
587
-
588
- var ErrorMessage = _styledComponents["default"].div(_templateObject12 || (_templateObject12 = (0, _taggedTemplateLiteral2["default"])(["\n color: ", ";\n font-family: ", ";\n font-size: ", ";\n font-weight: ", ";\n line-height: ", ";\n margin-top: 0.25rem;\n"])), function (props) {
535
+ var ErrorMessage = _styledComponents["default"].div(_templateObject11 || (_templateObject11 = (0, _taggedTemplateLiteral2["default"])(["\n color: ", ";\n font-family: ", ";\n font-size: ", ";\n font-weight: ", ";\n line-height: ", ";\n margin-top: 0.25rem;\n"])), function (props) {
589
536
  return props.theme.errorMessageFontColor;
590
537
  }, function (props) {
591
538
  return props.theme.errorMessageFontFamily;