@dxc-technology/halstack-react 0.0.0-c1253f5 → 0.0.0-c18d61a

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 (107) hide show
  1. package/accordion/Accordion.js +122 -103
  2. package/accordion/Accordion.stories.tsx +1 -2
  3. package/accordion/Accordion.test.js +9 -10
  4. package/accordion/types.d.ts +5 -4
  5. package/accordion-group/AccordionGroup.js +1 -21
  6. package/accordion-group/AccordionGroup.stories.tsx +27 -1
  7. package/accordion-group/AccordionGroup.test.js +20 -45
  8. package/accordion-group/types.d.ts +10 -3
  9. package/alert/Alert.js +1 -1
  10. package/box/Box.js +1 -1
  11. package/box/types.d.ts +1 -0
  12. package/bulleted-list/types.d.ts +1 -1
  13. package/button/types.d.ts +1 -1
  14. package/card/types.d.ts +1 -0
  15. package/checkbox/Checkbox.js +87 -95
  16. package/checkbox/Checkbox.test.js +93 -16
  17. package/checkbox/types.d.ts +2 -2
  18. package/chip/types.d.ts +1 -1
  19. package/common/variables.js +26 -14
  20. package/date-input/DateInput.js +3 -3
  21. package/dialog/Dialog.js +52 -28
  22. package/dialog/Dialog.stories.tsx +57 -2
  23. package/dialog/Dialog.test.js +34 -4
  24. package/dialog/types.d.ts +3 -2
  25. package/dropdown/Dropdown.d.ts +1 -1
  26. package/dropdown/Dropdown.js +244 -247
  27. package/dropdown/Dropdown.stories.tsx +126 -63
  28. package/dropdown/Dropdown.test.js +509 -108
  29. package/dropdown/DropdownMenu.d.ts +4 -0
  30. package/dropdown/DropdownMenu.js +80 -0
  31. package/dropdown/DropdownMenuItem.d.ts +4 -0
  32. package/dropdown/DropdownMenuItem.js +92 -0
  33. package/dropdown/types.d.ts +25 -5
  34. package/file-input/FileInput.js +168 -190
  35. package/file-input/FileInput.stories.tsx +38 -6
  36. package/file-input/FileInput.test.js +41 -0
  37. package/file-input/FileItem.d.ts +4 -4
  38. package/file-input/FileItem.js +24 -36
  39. package/flex/Flex.d.ts +1 -1
  40. package/flex/Flex.js +31 -19
  41. package/flex/types.d.ts +14 -3
  42. package/footer/Footer.stories.tsx +8 -1
  43. package/footer/types.d.ts +2 -1
  44. package/header/Header.js +74 -72
  45. package/header/Header.stories.tsx +4 -4
  46. package/header/Icons.js +2 -2
  47. package/header/types.d.ts +3 -2
  48. package/layout/ApplicationLayout.stories.tsx +1 -0
  49. package/link/types.d.ts +1 -1
  50. package/number-input/NumberInput.test.js +38 -1
  51. package/package.json +10 -10
  52. package/paginator/Paginator.js +2 -2
  53. package/paginator/Paginator.test.js +1 -1
  54. package/password-input/PasswordInput.test.js +13 -12
  55. package/progress-bar/ProgressBar.d.ts +2 -2
  56. package/progress-bar/ProgressBar.js +56 -50
  57. package/progress-bar/ProgressBar.stories.jsx +3 -1
  58. package/progress-bar/ProgressBar.test.js +67 -22
  59. package/progress-bar/types.d.ts +3 -4
  60. package/quick-nav/QuickNav.js +11 -12
  61. package/quick-nav/QuickNav.stories.tsx +97 -19
  62. package/radio-group/Radio.d.ts +1 -1
  63. package/radio-group/Radio.js +43 -28
  64. package/radio-group/RadioGroup.js +24 -24
  65. package/radio-group/RadioGroup.stories.tsx +1 -0
  66. package/radio-group/RadioGroup.test.js +123 -96
  67. package/radio-group/types.d.ts +2 -2
  68. package/resultsetTable/ResultsetTable.js +1 -3
  69. package/select/Listbox.d.ts +1 -1
  70. package/select/Listbox.js +25 -2
  71. package/select/Select.js +17 -32
  72. package/select/Select.stories.tsx +6 -5
  73. package/select/Select.test.js +321 -250
  74. package/select/types.d.ts +2 -4
  75. package/sidenav/types.d.ts +1 -1
  76. package/slider/Slider.js +116 -92
  77. package/slider/Slider.stories.tsx +7 -1
  78. package/slider/Slider.test.js +121 -21
  79. package/slider/types.d.ts +2 -2
  80. package/switch/Switch.d.ts +1 -1
  81. package/switch/Switch.js +132 -66
  82. package/switch/Switch.stories.tsx +8 -30
  83. package/switch/Switch.test.js +144 -17
  84. package/switch/types.d.ts +3 -4
  85. package/table/Table.js +1 -1
  86. package/tabs/Tab.d.ts +4 -0
  87. package/tabs/Tab.js +135 -0
  88. package/tabs/Tabs.js +360 -104
  89. package/tabs/Tabs.stories.tsx +74 -0
  90. package/tabs/Tabs.test.js +217 -6
  91. package/tabs/types.d.ts +15 -5
  92. package/tabs-nav/NavTabs.js +5 -5
  93. package/tabs-nav/Tab.js +3 -5
  94. package/tabs-nav/types.d.ts +1 -1
  95. package/tag/Tag.js +1 -1
  96. package/tag/types.d.ts +1 -1
  97. package/text-input/Icons.d.ts +8 -0
  98. package/text-input/Icons.js +60 -0
  99. package/text-input/Suggestion.js +7 -5
  100. package/text-input/Suggestions.d.ts +4 -0
  101. package/text-input/Suggestions.js +134 -0
  102. package/text-input/TextInput.js +189 -282
  103. package/text-input/TextInput.stories.tsx +189 -182
  104. package/text-input/TextInput.test.js +222 -163
  105. package/text-input/types.d.ts +22 -3
  106. package/toggle-group/types.d.ts +1 -1
  107. package/wizard/types.d.ts +1 -1
@@ -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"));
@@ -88,6 +88,17 @@ 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 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
+
91
102
  var DxcFileInput = function DxcFileInput(_ref) {
92
103
  var _ref$name = _ref.name,
93
104
  name = _ref$name === void 0 ? "" : _ref$name,
@@ -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
 
@@ -351,17 +252,18 @@ var DxcFileInput = function DxcFileInput(_ref) {
351
252
  addFile(filesArray);
352
253
  };
353
254
 
354
- var onDelete = function onDelete(fileName) {
255
+ var onDelete = (0, _react.useCallback)(function (fileName) {
355
256
  var filesCopy = (0, _toConsumableArray2["default"])(files);
356
257
  var fileToRemove = filesCopy.find(function (file) {
357
258
  return file.file.name === fileName;
358
259
  });
359
260
  var fileIndex = filesCopy.indexOf(fileToRemove);
360
261
  filesCopy.splice(fileIndex, 1);
262
+ callbackFile === null || callbackFile === void 0 ? void 0 : callbackFile(filesCopy);
263
+ }, [files, callbackFile]);
361
264
 
362
- if (typeof callbackFile === "function") {
363
- callbackFile(filesCopy);
364
- }
265
+ var handleClick = function handleClick() {
266
+ document.getElementById(fileInputId).click();
365
267
  };
366
268
 
367
269
  var handleDrag = function handleDrag(e) {
@@ -370,7 +272,9 @@ var DxcFileInput = function DxcFileInput(_ref) {
370
272
  };
371
273
 
372
274
  var handleDragIn = function handleDragIn(e) {
373
- if (e.dataTransfer.items && e.dataTransfer.items.length > 0) setIsDragging(true);
275
+ var _e$dataTransfer$items;
276
+
277
+ if (((_e$dataTransfer$items = e.dataTransfer.items) === null || _e$dataTransfer$items === void 0 ? void 0 : _e$dataTransfer$items.length) > 0) setIsDragging(true);
374
278
  };
375
279
 
376
280
  var handleDragOut = function handleDragOut(e) {
@@ -384,7 +288,7 @@ var DxcFileInput = function DxcFileInput(_ref) {
384
288
  setIsDragging(false);
385
289
  var filesObject = e.dataTransfer.files;
386
290
 
387
- if (filesObject && filesObject.length > 0) {
291
+ if ((filesObject === null || filesObject === void 0 ? void 0 : filesObject.length) > 0) {
388
292
  var filesArray = Object.keys(filesObject).map(function (key) {
389
293
  return filesObject[key];
390
294
  });
@@ -392,6 +296,76 @@ var DxcFileInput = function DxcFileInput(_ref) {
392
296
  }
393
297
  };
394
298
 
299
+ (0, _react.useEffect)(function () {
300
+ var getFiles = /*#__PURE__*/function () {
301
+ var _ref4 = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee4() {
302
+ var valueFiles;
303
+ return _regenerator["default"].wrap(function _callee4$(_context4) {
304
+ while (1) {
305
+ switch (_context4.prev = _context4.next) {
306
+ case 0:
307
+ if (!value) {
308
+ _context4.next = 5;
309
+ break;
310
+ }
311
+
312
+ _context4.next = 3;
313
+ return Promise.all(value.map( /*#__PURE__*/function () {
314
+ var _ref5 = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee3(file) {
315
+ var preview;
316
+ return _regenerator["default"].wrap(function _callee3$(_context3) {
317
+ while (1) {
318
+ switch (_context3.prev = _context3.next) {
319
+ case 0:
320
+ if (!file.preview) {
321
+ _context3.next = 4;
322
+ break;
323
+ }
324
+
325
+ return _context3.abrupt("return", file);
326
+
327
+ case 4:
328
+ _context3.next = 6;
329
+ return getFilePreview(file.file);
330
+
331
+ case 6:
332
+ preview = _context3.sent;
333
+ return _context3.abrupt("return", _objectSpread(_objectSpread({}, file), {}, {
334
+ preview: preview
335
+ }));
336
+
337
+ case 8:
338
+ case "end":
339
+ return _context3.stop();
340
+ }
341
+ }
342
+ }, _callee3);
343
+ }));
344
+
345
+ return function (_x3) {
346
+ return _ref5.apply(this, arguments);
347
+ };
348
+ }()));
349
+
350
+ case 3:
351
+ valueFiles = _context4.sent;
352
+ setFiles(valueFiles);
353
+
354
+ case 5:
355
+ case "end":
356
+ return _context4.stop();
357
+ }
358
+ }
359
+ }, _callee4);
360
+ }));
361
+
362
+ return function getFiles() {
363
+ return _ref4.apply(this, arguments);
364
+ };
365
+ }();
366
+
367
+ getFiles();
368
+ }, [value]);
395
369
  return /*#__PURE__*/_react["default"].createElement(_styledComponents.ThemeProvider, {
396
370
  theme: colorsTheme.fileInput
397
371
  }, /*#__PURE__*/_react["default"].createElement(FileInputContainer, {
@@ -405,25 +379,29 @@ var DxcFileInput = function DxcFileInput(_ref) {
405
379
  }, helperText), mode === "file" ? /*#__PURE__*/_react["default"].createElement(FileContainer, {
406
380
  multiple: multiple,
407
381
  files: files
408
- }, /*#__PURE__*/_react["default"].createElement(HiddenInputFile, {
382
+ }, /*#__PURE__*/_react["default"].createElement(ValueInput, {
409
383
  id: fileInputId,
410
384
  type: "file",
411
385
  accept: accept,
412
386
  multiple: multiple,
413
- onChange: selectFiles
387
+ onChange: selectFiles,
388
+ name: name,
389
+ disabled: disabled,
390
+ readOnly: true,
391
+ "aria-hidden": "true"
414
392
  }), /*#__PURE__*/_react["default"].createElement(_Button["default"], {
415
393
  mode: "secondary",
416
394
  label: buttonLabel !== null && buttonLabel !== void 0 ? buttonLabel : multiple ? translatedLabels.fileInput.multipleButtonLabelDefault : translatedLabels.fileInput.singleButtonLabelDefault,
417
395
  onClick: handleClick,
418
396
  disabled: disabled,
419
- size: "medium",
397
+ size: "fitContent",
420
398
  tabIndex: tabIndex
421
- }), files.map(function (file) {
422
- return /*#__PURE__*/_react["default"].createElement(_react["default"].Fragment, null, /*#__PURE__*/_react["default"].createElement(FileItemContainer, {
423
- mode: mode,
424
- multiple: multiple,
425
- files: files
426
- }, /*#__PURE__*/_react["default"].createElement(_FileItem["default"], {
399
+ }), /*#__PURE__*/_react["default"].createElement(FileItemListContainer, {
400
+ mode: mode,
401
+ multiple: multiple,
402
+ files: files
403
+ }, files.map(function (file) {
404
+ return /*#__PURE__*/_react["default"].createElement(_FileItem["default"], {
427
405
  mode: mode,
428
406
  multiple: multiple,
429
407
  name: file.file.name,
@@ -434,13 +412,17 @@ var DxcFileInput = function DxcFileInput(_ref) {
434
412
  type: file.file.type,
435
413
  onDelete: onDelete,
436
414
  tabIndex: tabIndex
437
- })));
438
- })) : /*#__PURE__*/_react["default"].createElement(Container, null, /*#__PURE__*/_react["default"].createElement(HiddenInputFile, {
415
+ });
416
+ }))) : /*#__PURE__*/_react["default"].createElement(Container, null, /*#__PURE__*/_react["default"].createElement(ValueInput, {
439
417
  id: fileInputId,
440
418
  type: "file",
441
419
  accept: accept,
442
420
  multiple: multiple,
443
- onChange: selectFiles
421
+ onChange: selectFiles,
422
+ name: name,
423
+ disabled: disabled,
424
+ readOnly: true,
425
+ "aria-hidden": "true"
444
426
  }), /*#__PURE__*/_react["default"].createElement(DragDropArea, {
445
427
  isDragging: isDragging,
446
428
  disabled: disabled,
@@ -461,12 +443,12 @@ var DxcFileInput = function DxcFileInput(_ref) {
461
443
  disabled: disabled
462
444
  }, dropAreaLabel !== null && dropAreaLabel !== void 0 ? dropAreaLabel : multiple ? translatedLabels.fileInput.multipleDropAreaLabelDefault : translatedLabels.fileInput.singleDropAreaLabelDefault) : /*#__PURE__*/_react["default"].createElement(FiledropLabel, {
463
445
  disabled: disabled
464
- }, dropAreaLabel !== null && dropAreaLabel !== void 0 ? dropAreaLabel : multiple ? translatedLabels.fileInput.multipleDropAreaLabelDefault : translatedLabels.fileInput.singleDropAreaLabelDefault)), files.map(function (file) {
465
- return /*#__PURE__*/_react["default"].createElement(FileItemContainer, {
466
- mode: mode,
467
- multiple: multiple,
468
- files: files
469
- }, /*#__PURE__*/_react["default"].createElement(_FileItem["default"], {
446
+ }, dropAreaLabel !== null && dropAreaLabel !== void 0 ? dropAreaLabel : multiple ? translatedLabels.fileInput.multipleDropAreaLabelDefault : translatedLabels.fileInput.singleDropAreaLabelDefault)), /*#__PURE__*/_react["default"].createElement(FileItemListContainer, {
447
+ mode: mode,
448
+ multiple: multiple,
449
+ files: files
450
+ }, files.map(function (file) {
451
+ return /*#__PURE__*/_react["default"].createElement(_FileItem["default"], {
470
452
  mode: mode,
471
453
  multiple: multiple,
472
454
  name: file.file.name,
@@ -477,8 +459,8 @@ var DxcFileInput = function DxcFileInput(_ref) {
477
459
  type: file.file.type,
478
460
  onDelete: onDelete,
479
461
  tabIndex: tabIndex
480
- }));
481
- })), files.length === 1 && files.map(function (file) {
462
+ });
463
+ }))), files.length === 1 && files.map(function (file) {
482
464
  return file.error && mode === "file" && !multiple && /*#__PURE__*/_react["default"].createElement(ErrorMessage, null, file.error);
483
465
  })));
484
466
  };
@@ -519,7 +501,17 @@ var HelperText = _styledComponents["default"].span(_templateObject3 || (_templat
519
501
  return props.theme.helperTextLineHeight;
520
502
  });
521
503
 
522
- 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) {
504
+ var FileContainer = _styledComponents["default"].div(_templateObject4 || (_templateObject4 = (0, _taggedTemplateLiteral2["default"])(["\n display: flex;\n ", "\n margin-top: 0.25rem;\n"])), function (props) {
505
+ return props.multiple || props.files.length > 1 ? "flex-direction: column; row-gap: 0.25rem;" : "flex-direction: row; column-gap: 0.25rem;";
506
+ });
507
+
508
+ var ValueInput = _styledComponents["default"].input(_templateObject5 || (_templateObject5 = (0, _taggedTemplateLiteral2["default"])(["\n display: none;\n"])));
509
+
510
+ var FileItemListContainer = _styledComponents["default"].div(_templateObject6 || (_templateObject6 = (0, _taggedTemplateLiteral2["default"])(["\n display: flex;\n flex-direction: column;\n row-gap: 0.25rem;\n"])));
511
+
512
+ 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"])));
513
+
514
+ var DragDropArea = _styledComponents["default"].div(_templateObject8 || (_templateObject8 = (0, _taggedTemplateLiteral2["default"])(["\n box-sizing: border-box;\n display: flex;\n flex-direction: ", ";\n ", ";\n align-items: center;\n height: ", ";\n width: 320px;\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 ", "\n\n cursor: ", ";\n"])), function (props) {
523
515
  return props.mode === "filedrop" ? "row" : "column";
524
516
  }, function (props) {
525
517
  return props.mode === "dropzone" && "justify-content: center; padding: 1rem;";
@@ -539,17 +531,11 @@ var DragDropArea = _styledComponents["default"].div(_templateObject4 || (_templa
539
531
  return props.disabled && "not-allowed";
540
532
  });
541
533
 
542
- var FileContainer = _styledComponents["default"].div(_templateObject5 || (_templateObject5 = (0, _taggedTemplateLiteral2["default"])(["\n display: flex;\n flex-direction: ", ";\n margin-top: 0.25rem;\n"])), function (props) {
543
- return props.multiple || props.files.length > 1 ? "column" : "row";
544
- });
545
-
546
- var HiddenInputFile = _styledComponents["default"].input(_templateObject6 || (_templateObject6 = (0, _taggedTemplateLiteral2["default"])(["\n visibility: hidden;\n position: absolute;\n width: 0px;\n height: 0px;\n"])));
547
-
548
- var ButtonContainer = _styledComponents["default"].div(_templateObject7 || (_templateObject7 = (0, _taggedTemplateLiteral2["default"])(["\n ", ";\n"])), function (props) {
534
+ var ButtonContainer = _styledComponents["default"].div(_templateObject9 || (_templateObject9 = (0, _taggedTemplateLiteral2["default"])(["\n ", ";\n"])), function (props) {
549
535
  return props.mode === "filedrop" && "padding: 2px 12px 2px 3px";
550
536
  });
551
537
 
552
- 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) {
538
+ var DropzoneLabel = _styledComponents["default"].div(_templateObject10 || (_templateObject10 = (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) {
553
539
  return props.disabled ? props.theme.disabledDropLabelFontColor : props.theme.dropLabelFontColor;
554
540
  }, function (props) {
555
541
  return props.theme.dropLabelFontFamily;
@@ -559,7 +545,7 @@ var DropzoneLabel = _styledComponents["default"].div(_templateObject8 || (_templ
559
545
  return props.theme.dropLabelFontWeight;
560
546
  });
561
547
 
562
- 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) {
548
+ var FiledropLabel = _styledComponents["default"].span(_templateObject11 || (_templateObject11 = (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) {
563
549
  return props.disabled ? props.theme.disabledDropLabelFontColor : props.theme.dropLabelFontColor;
564
550
  }, function (props) {
565
551
  return props.theme.dropLabelFontFamily;
@@ -569,14 +555,6 @@ var FiledropLabel = _styledComponents["default"].span(_templateObject9 || (_temp
569
555
  return props.theme.dropLabelFontWeight;
570
556
  });
571
557
 
572
- var Container = _styledComponents["default"].div(_templateObject10 || (_templateObject10 = (0, _taggedTemplateLiteral2["default"])(["\n display: flex;\n flex-direction: column;\n margin-top: 0.25rem;\n"])));
573
-
574
- var FileItemContainer = _styledComponents["default"].div(_templateObject11 || (_templateObject11 = (0, _taggedTemplateLiteral2["default"])(["\n margin-top: ", ";\n margin-left: ", ";\n"])), function (props) {
575
- return (props.multiple || props.files.length > 1 || props.mode !== "file") && "4px";
576
- }, function (props) {
577
- return props.mode === "file" && props.files.length === 1 && !props.multiple && "4px";
578
- });
579
-
580
558
  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) {
581
559
  return props.theme.errorMessageFontColor;
582
560
  }, function (props) {
@@ -2,6 +2,7 @@ import React from "react";
2
2
  import DxcFileInput from "./FileInput";
3
3
  import Title from "../../.storybook/components/Title";
4
4
  import ExampleContainer from "../../.storybook/components/ExampleContainer";
5
+ import FileItem from "./FileItem";
5
6
 
6
7
  export default {
7
8
  title: "File input",
@@ -65,17 +66,48 @@ const filesExamples = [
65
66
 
66
67
  export const Chromatic = () => (
67
68
  <>
69
+ <Title title="File item states" theme="light" level={2} />
68
70
  <ExampleContainer pseudoState="pseudo-hover">
69
- <Title title="File item hovered" theme="light" level={4} />
70
- <DxcFileInput value={fileExample} callbackFile={() => {}} />
71
+ <Title title="Hovered" theme="light" level={4} />
72
+ <FileItem
73
+ mode="dropzone"
74
+ multiple={true}
75
+ name="file"
76
+ showPreview={false}
77
+ numFiles={1}
78
+ preview={picPreview}
79
+ type="image/png"
80
+ onDelete={() => {}}
81
+ tabIndex={0}
82
+ />
71
83
  </ExampleContainer>
72
84
  <ExampleContainer pseudoState="pseudo-focus">
73
- <Title title="File item focused" theme="light" level={4} />
74
- <DxcFileInput value={fileExample} callbackFile={() => {}} />
85
+ <Title title="Focused" theme="light" level={4} />
86
+ <FileItem
87
+ mode="dropzone"
88
+ multiple={true}
89
+ name="file"
90
+ showPreview={false}
91
+ numFiles={1}
92
+ preview={picPreview}
93
+ type="image/png"
94
+ onDelete={() => {}}
95
+ tabIndex={0}
96
+ />
75
97
  </ExampleContainer>
76
98
  <ExampleContainer pseudoState="pseudo-active">
77
- <Title title="File item actived" theme="light" level={4} />
78
- <DxcFileInput value={fileExample} callbackFile={() => {}} />
99
+ <Title title="Actived" theme="light" level={4} />
100
+ <FileItem
101
+ mode="dropzone"
102
+ multiple={true}
103
+ name="file"
104
+ showPreview={false}
105
+ numFiles={1}
106
+ preview={picPreview}
107
+ type="image/png"
108
+ onDelete={() => {}}
109
+ tabIndex={0}
110
+ />
79
111
  </ExampleContainer>
80
112
  <Title title="File" theme="light" level={2} />
81
113
  <ExampleContainer>
@@ -454,4 +454,45 @@ describe("FileInput component tests", function () {
454
454
  }
455
455
  }, _callee6);
456
456
  })));
457
+ test("File input sends value when submitted in a form", function () {
458
+ var newFile = new File(["newFile"], "newFile.pdf", {
459
+ type: "pdf"
460
+ });
461
+ var handlerOnSubmit = jest.fn(function (e) {
462
+ e.preventDefault();
463
+ var formData = new FormData(e.target);
464
+ var formProps = Object.fromEntries(formData);
465
+ expect(formProps).toStrictEqual({
466
+ file: newFile
467
+ });
468
+ });
469
+
470
+ var _render17 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement("form", {
471
+ onSubmit: handlerOnSubmit
472
+ }, /*#__PURE__*/_react["default"].createElement(_FileInput["default"], {
473
+ label: "File input label",
474
+ name: "file",
475
+ helperText: "File input helper text",
476
+ mode: "filedrop",
477
+ buttonLabel: "Choose",
478
+ dropAreaLabel: "(or drop the files)"
479
+ }), /*#__PURE__*/_react["default"].createElement("button", {
480
+ type: "submit"
481
+ }, "Submit"))),
482
+ getByText = _render17.getByText,
483
+ getByLabelText = _render17.getByLabelText;
484
+
485
+ var inputFile = getByLabelText("File input label", {
486
+ hidden: true
487
+ });
488
+ var submit = getByText("Submit");
489
+
490
+ _react2.fireEvent.change(inputFile, {
491
+ target: {
492
+ files: [newFile]
493
+ }
494
+ });
495
+
496
+ _userEvent["default"].click(submit);
497
+ });
457
498
  });