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

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 (201) hide show
  1. package/BackgroundColorContext.d.ts +2 -2
  2. package/BackgroundColorContext.js +1 -1
  3. package/HalstackContext.d.ts +1329 -5
  4. package/HalstackContext.js +117 -77
  5. package/accordion/Accordion.js +13 -24
  6. package/accordion/Accordion.stories.tsx +102 -13
  7. package/accordion/Accordion.test.js +1 -1
  8. package/accordion/types.d.ts +3 -3
  9. package/accordion-group/AccordionGroup.d.ts +4 -3
  10. package/accordion-group/AccordionGroup.js +23 -44
  11. package/accordion-group/AccordionGroup.test.js +1 -1
  12. package/accordion-group/AccordionGroupAccordion.d.ts +4 -0
  13. package/accordion-group/AccordionGroupAccordion.js +43 -0
  14. package/accordion-group/types.d.ts +2 -2
  15. package/alert/Alert.js +4 -8
  16. package/alert/Alert.stories.tsx +28 -0
  17. package/alert/Alert.test.js +1 -1
  18. package/bleed/Bleed.stories.tsx +1 -0
  19. package/box/Box.js +3 -5
  20. package/box/Box.stories.tsx +15 -0
  21. package/box/Box.test.js +1 -1
  22. package/bulleted-list/BulletedList.js +4 -2
  23. package/bulleted-list/BulletedList.stories.tsx +7 -1
  24. package/bulleted-list/types.d.ts +31 -4
  25. package/button/Button.js +13 -16
  26. package/button/Button.stories.tsx +151 -9
  27. package/button/Button.test.js +1 -1
  28. package/button/types.d.ts +3 -3
  29. package/card/Card.js +12 -13
  30. package/card/Card.stories.tsx +12 -13
  31. package/card/Card.test.js +1 -1
  32. package/checkbox/Checkbox.d.ts +2 -2
  33. package/checkbox/Checkbox.js +18 -17
  34. package/checkbox/Checkbox.stories.tsx +131 -59
  35. package/checkbox/Checkbox.test.js +1 -1
  36. package/checkbox/types.d.ts +6 -2
  37. package/chip/Chip.js +28 -49
  38. package/chip/Chip.stories.tsx +121 -26
  39. package/chip/Chip.test.js +3 -5
  40. package/common/OpenSans.css +68 -80
  41. package/common/coreTokens.d.ts +146 -0
  42. package/common/coreTokens.js +167 -0
  43. package/common/utils.d.ts +1 -0
  44. package/common/utils.js +4 -4
  45. package/common/variables.d.ts +1482 -0
  46. package/common/variables.js +981 -1129
  47. package/date-input/Calendar.d.ts +4 -0
  48. package/date-input/Calendar.js +258 -0
  49. package/date-input/DateInput.js +134 -237
  50. package/date-input/DateInput.stories.tsx +199 -33
  51. package/date-input/DateInput.test.js +494 -138
  52. package/date-input/DatePicker.d.ts +4 -0
  53. package/date-input/DatePicker.js +146 -0
  54. package/date-input/Icons.d.ts +6 -0
  55. package/date-input/Icons.js +75 -0
  56. package/date-input/YearPicker.d.ts +4 -0
  57. package/date-input/YearPicker.js +126 -0
  58. package/date-input/types.d.ts +51 -0
  59. package/dialog/Dialog.js +61 -74
  60. package/dialog/Dialog.stories.tsx +211 -159
  61. package/dialog/Dialog.test.js +302 -3
  62. package/dialog/types.d.ts +2 -2
  63. package/dropdown/Dropdown.js +37 -37
  64. package/dropdown/Dropdown.stories.tsx +210 -84
  65. package/dropdown/Dropdown.test.js +20 -24
  66. package/dropdown/DropdownMenu.js +12 -18
  67. package/dropdown/DropdownMenuItem.js +4 -17
  68. package/dropdown/types.d.ts +3 -3
  69. package/file-input/FileInput.d.ts +2 -2
  70. package/file-input/FileInput.js +28 -52
  71. package/file-input/FileInput.stories.tsx +96 -17
  72. package/file-input/FileInput.test.js +14 -55
  73. package/file-input/FileItem.d.ts +2 -12
  74. package/file-input/FileItem.js +29 -41
  75. package/file-input/types.d.ts +17 -0
  76. package/flex/Flex.js +4 -2
  77. package/flex/Flex.stories.tsx +35 -26
  78. package/flex/types.d.ts +70 -5
  79. package/footer/Footer.js +6 -8
  80. package/footer/Footer.stories.tsx +91 -0
  81. package/footer/Footer.test.js +14 -26
  82. package/grid/Grid.d.ts +7 -0
  83. package/grid/Grid.js +91 -0
  84. package/grid/Grid.stories.tsx +219 -0
  85. package/grid/types.d.ts +115 -0
  86. package/header/Header.d.ts +3 -2
  87. package/header/Header.js +21 -23
  88. package/header/Header.stories.tsx +149 -6
  89. package/header/Header.test.js +2 -2
  90. package/header/types.d.ts +2 -2
  91. package/heading/Heading.js +1 -1
  92. package/heading/Heading.test.js +1 -1
  93. package/inset/Inset.stories.tsx +2 -1
  94. package/layout/ApplicationLayout.d.ts +3 -3
  95. package/layout/ApplicationLayout.js +1 -1
  96. package/layout/types.d.ts +2 -3
  97. package/link/Link.js +4 -4
  98. package/link/Link.stories.tsx +60 -0
  99. package/link/Link.test.js +2 -4
  100. package/link/types.d.ts +2 -2
  101. package/main.d.ts +3 -2
  102. package/main.js +9 -1
  103. package/{tabs-nav → nav-tabs}/NavTabs.js +1 -1
  104. package/{tabs-nav → nav-tabs}/NavTabs.stories.tsx +96 -6
  105. package/{tabs-nav → nav-tabs}/NavTabs.test.js +1 -1
  106. package/{tabs-nav → nav-tabs}/Tab.js +37 -17
  107. package/nav-tabs/types.js +5 -0
  108. package/number-input/NumberInput.test.js +6 -7
  109. package/package.json +8 -13
  110. package/paginator/Icons.d.ts +5 -0
  111. package/paginator/Icons.js +16 -28
  112. package/paginator/Paginator.js +6 -14
  113. package/paginator/Paginator.stories.tsx +24 -0
  114. package/paginator/Paginator.test.js +44 -47
  115. package/paragraph/Paragraph.d.ts +3 -4
  116. package/paragraph/Paragraph.js +5 -5
  117. package/password-input/PasswordInput.test.js +1 -1
  118. package/progress-bar/ProgressBar.d.ts +2 -2
  119. package/progress-bar/ProgressBar.js +5 -5
  120. package/progress-bar/ProgressBar.stories.jsx +35 -2
  121. package/progress-bar/ProgressBar.test.js +1 -1
  122. package/progress-bar/types.d.ts +4 -3
  123. package/quick-nav/QuickNav.stories.tsx +14 -0
  124. package/radio-group/Radio.js +10 -10
  125. package/radio-group/RadioGroup.js +8 -10
  126. package/radio-group/RadioGroup.stories.tsx +131 -18
  127. package/radio-group/RadioGroup.test.js +1 -1
  128. package/resultsetTable/Icons.d.ts +7 -0
  129. package/resultsetTable/Icons.js +51 -0
  130. package/resultsetTable/ResultsetTable.js +49 -106
  131. package/resultsetTable/ResultsetTable.stories.tsx +50 -25
  132. package/resultsetTable/ResultsetTable.test.js +41 -64
  133. package/resultsetTable/types.d.ts +1 -1
  134. package/select/Listbox.d.ts +1 -1
  135. package/select/Listbox.js +5 -34
  136. package/select/Option.js +11 -24
  137. package/select/Select.js +56 -35
  138. package/select/Select.stories.tsx +494 -150
  139. package/select/Select.test.js +76 -81
  140. package/select/types.d.ts +2 -2
  141. package/sidenav/Icons.d.ts +7 -0
  142. package/sidenav/Icons.js +51 -0
  143. package/sidenav/Sidenav.d.ts +2 -2
  144. package/sidenav/Sidenav.js +66 -96
  145. package/sidenav/Sidenav.stories.tsx +165 -63
  146. package/sidenav/types.d.ts +21 -18
  147. package/slider/Slider.d.ts +2 -2
  148. package/slider/Slider.js +11 -11
  149. package/slider/Slider.stories.tsx +57 -0
  150. package/slider/Slider.test.js +1 -1
  151. package/slider/types.d.ts +6 -2
  152. package/spinner/Spinner.js +17 -23
  153. package/spinner/Spinner.stories.jsx +53 -27
  154. package/spinner/Spinner.test.js +1 -1
  155. package/switch/Switch.d.ts +3 -3
  156. package/switch/Switch.js +7 -6
  157. package/switch/Switch.stories.tsx +33 -0
  158. package/switch/Switch.test.js +1 -1
  159. package/switch/types.d.ts +8 -3
  160. package/table/Table.js +2 -2
  161. package/table/Table.stories.jsx +80 -1
  162. package/table/Table.test.js +2 -2
  163. package/tabs/Tab.js +12 -15
  164. package/tabs/Tabs.js +11 -17
  165. package/tabs/Tabs.stories.tsx +45 -5
  166. package/tabs/Tabs.test.js +4 -5
  167. package/tabs/types.d.ts +2 -2
  168. package/tag/Tag.js +7 -9
  169. package/tag/Tag.stories.tsx +14 -1
  170. package/tag/Tag.test.js +1 -1
  171. package/text-input/Suggestion.js +34 -7
  172. package/text-input/TextInput.js +11 -15
  173. package/text-input/TextInput.stories.tsx +93 -5
  174. package/text-input/TextInput.test.js +587 -635
  175. package/textarea/Textarea.js +3 -4
  176. package/textarea/Textarea.stories.jsx +60 -1
  177. package/textarea/Textarea.test.js +2 -4
  178. package/toggle-group/ToggleGroup.d.ts +2 -2
  179. package/toggle-group/ToggleGroup.js +7 -4
  180. package/toggle-group/ToggleGroup.stories.tsx +42 -0
  181. package/toggle-group/ToggleGroup.test.js +1 -1
  182. package/toggle-group/types.d.ts +1 -1
  183. package/typography/Typography.d.ts +2 -2
  184. package/typography/Typography.js +14 -113
  185. package/typography/Typography.stories.tsx +1 -1
  186. package/useTheme.d.ts +1234 -1
  187. package/useTheme.js +1 -1
  188. package/useTranslatedLabels.d.ts +84 -1
  189. package/utils/BaseTypography.d.ts +21 -0
  190. package/utils/BaseTypography.js +108 -0
  191. package/utils/FocusLock.d.ts +13 -0
  192. package/utils/FocusLock.js +138 -0
  193. package/wizard/Wizard.js +2 -2
  194. package/wizard/Wizard.stories.tsx +20 -0
  195. package/wizard/Wizard.test.js +1 -1
  196. package/wizard/types.d.ts +5 -6
  197. package/common/RequiredComponent.js +0 -32
  198. /package/{tabs-nav → grid}/types.js +0 -0
  199. /package/{tabs-nav → nav-tabs}/NavTabs.d.ts +0 -0
  200. /package/{tabs-nav → nav-tabs}/Tab.d.ts +0 -0
  201. /package/{tabs-nav → nav-tabs}/types.d.ts +0 -0
@@ -29,7 +29,7 @@ var _styledComponents = _interopRequireWildcard(require("styled-components"));
29
29
 
30
30
  var _uuid = require("uuid");
31
31
 
32
- var _variables = require("../common/variables.js");
32
+ var _variables = require("../common/variables");
33
33
 
34
34
  var _useTheme = _interopRequireDefault(require("../useTheme"));
35
35
 
@@ -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
 
@@ -99,7 +99,7 @@ var getFilePreview = function getFilePreview(file) {
99
99
  });else return fileIcon;
100
100
  };
101
101
 
102
- var DxcFileInput = function DxcFileInput(_ref) {
102
+ var DxcFileInput = /*#__PURE__*/_react["default"].forwardRef(function (_ref, ref) {
103
103
  var _ref$name = _ref.name,
104
104
  name = _ref$name === void 0 ? "" : _ref$name,
105
105
  _ref$mode = _ref.mode,
@@ -250,6 +250,7 @@ var DxcFileInput = function DxcFileInput(_ref) {
250
250
  return selectedFiles[key];
251
251
  });
252
252
  addFile(filesArray);
253
+ e.target.value = null;
253
254
  };
254
255
 
255
256
  var onDelete = (0, _react.useCallback)(function (fileName) {
@@ -370,25 +371,22 @@ var DxcFileInput = function DxcFileInput(_ref) {
370
371
  theme: colorsTheme.fileInput
371
372
  }, /*#__PURE__*/_react["default"].createElement(FileInputContainer, {
372
373
  margin: margin,
373
- name: name
374
+ ref: ref
374
375
  }, /*#__PURE__*/_react["default"].createElement(Label, {
375
376
  htmlFor: fileInputId,
376
377
  disabled: disabled
377
378
  }, label), /*#__PURE__*/_react["default"].createElement(HelperText, {
378
379
  disabled: disabled
379
380
  }, helperText), mode === "file" ? /*#__PURE__*/_react["default"].createElement(FileContainer, {
380
- multiple: multiple,
381
- files: files
381
+ singleFileMode: !multiple && files.length === 1
382
382
  }, /*#__PURE__*/_react["default"].createElement(ValueInput, {
383
383
  id: fileInputId,
384
384
  type: "file",
385
385
  accept: accept,
386
386
  multiple: multiple,
387
387
  onChange: selectFiles,
388
- name: name,
389
388
  disabled: disabled,
390
- readOnly: true,
391
- "aria-hidden": "true"
389
+ readOnly: true
392
390
  }), /*#__PURE__*/_react["default"].createElement(_Button["default"], {
393
391
  mode: "secondary",
394
392
  label: buttonLabel !== null && buttonLabel !== void 0 ? buttonLabel : multiple ? translatedLabels.fileInput.multipleButtonLabelDefault : translatedLabels.fileInput.singleButtonLabelDefault,
@@ -396,22 +394,17 @@ var DxcFileInput = function DxcFileInput(_ref) {
396
394
  disabled: disabled,
397
395
  size: "fitContent",
398
396
  tabIndex: tabIndex
399
- }), /*#__PURE__*/_react["default"].createElement(FileItemListContainer, {
400
- mode: mode,
401
- multiple: multiple,
402
- files: files
403
- }, files.map(function (file) {
397
+ }), files.length > 0 && /*#__PURE__*/_react["default"].createElement(FileItemListContainer, null, files.map(function (file, index) {
404
398
  return /*#__PURE__*/_react["default"].createElement(_FileItem["default"], {
405
- mode: mode,
406
- multiple: multiple,
407
- name: file.file.name,
399
+ fileName: file.file.name,
408
400
  error: file.error,
401
+ singleFileMode: !multiple && files.length === 1,
409
402
  showPreview: mode === "file" && !multiple ? false : showPreview,
410
- numFiles: files.length,
411
403
  preview: file.preview,
412
404
  type: file.file.type,
413
405
  onDelete: onDelete,
414
- tabIndex: tabIndex
406
+ tabIndex: tabIndex,
407
+ key: "file-".concat(index)
415
408
  });
416
409
  }))) : /*#__PURE__*/_react["default"].createElement(Container, null, /*#__PURE__*/_react["default"].createElement(ValueInput, {
417
410
  id: fileInputId,
@@ -419,10 +412,8 @@ var DxcFileInput = function DxcFileInput(_ref) {
419
412
  accept: accept,
420
413
  multiple: multiple,
421
414
  onChange: selectFiles,
422
- name: name,
423
415
  disabled: disabled,
424
- readOnly: true,
425
- "aria-hidden": "true"
416
+ readOnly: true
426
417
  }), /*#__PURE__*/_react["default"].createElement(DragDropArea, {
427
418
  isDragging: isDragging,
428
419
  disabled: disabled,
@@ -431,39 +422,30 @@ var DxcFileInput = function DxcFileInput(_ref) {
431
422
  onDragEnter: handleDragIn,
432
423
  onDragOver: handleDrag,
433
424
  onDragLeave: handleDragOut
434
- }, /*#__PURE__*/_react["default"].createElement(ButtonContainer, {
435
- mode: mode
436
425
  }, /*#__PURE__*/_react["default"].createElement(_Button["default"], {
437
426
  mode: "secondary",
438
427
  label: buttonLabel !== null && buttonLabel !== void 0 ? buttonLabel : translatedLabels.fileInput.dropAreaButtonLabelDefault,
439
428
  onClick: handleClick,
440
429
  disabled: disabled,
441
430
  size: "fitContent"
442
- })), mode === "dropzone" ? /*#__PURE__*/_react["default"].createElement(DropzoneLabel, {
431
+ }), mode === "dropzone" ? /*#__PURE__*/_react["default"].createElement(DropzoneLabel, {
443
432
  disabled: disabled
444
433
  }, dropAreaLabel !== null && dropAreaLabel !== void 0 ? dropAreaLabel : multiple ? translatedLabels.fileInput.multipleDropAreaLabelDefault : translatedLabels.fileInput.singleDropAreaLabelDefault) : /*#__PURE__*/_react["default"].createElement(FiledropLabel, {
445
434
  disabled: disabled
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) {
435
+ }, 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) {
451
436
  return /*#__PURE__*/_react["default"].createElement(_FileItem["default"], {
452
- mode: mode,
453
- multiple: multiple,
454
- name: file.file.name,
437
+ fileName: file.file.name,
455
438
  error: file.error,
439
+ singleFileMode: false,
456
440
  showPreview: showPreview,
457
- numFiles: files.length,
458
441
  preview: file.preview,
459
442
  type: file.file.type,
460
443
  onDelete: onDelete,
461
- tabIndex: tabIndex
444
+ tabIndex: tabIndex,
445
+ key: "file-".concat(index)
462
446
  });
463
- }))), files.length === 1 && files.map(function (file) {
464
- return file.error && mode === "file" && !multiple && /*#__PURE__*/_react["default"].createElement(ErrorMessage, null, file.error);
465
- })));
466
- };
447
+ }))), mode === "file" && !multiple && files.length === 1 && files[0].error && /*#__PURE__*/_react["default"].createElement(ErrorMessage, null, files[0].error)));
448
+ });
467
449
 
468
450
  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) {
469
451
  return props.margin && (0, _typeof2["default"])(props.margin) !== "object" ? _variables.spaces[props.margin] : "0px";
@@ -502,7 +484,7 @@ var HelperText = _styledComponents["default"].span(_templateObject3 || (_templat
502
484
  });
503
485
 
504
486
  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;";
487
+ return props.singleFileMode ? "flex-direction: row; column-gap: 0.25rem;" : "flex-direction: column; row-gap: 0.25rem;";
506
488
  });
507
489
 
508
490
  var ValueInput = _styledComponents["default"].input(_templateObject5 || (_templateObject5 = (0, _taggedTemplateLiteral2["default"])(["\n display: none;\n"])));
@@ -511,12 +493,10 @@ var FileItemListContainer = _styledComponents["default"].div(_templateObject6 ||
511
493
 
512
494
  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
495
 
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) {
515
- return props.mode === "filedrop" ? "row" : "column";
516
- }, function (props) {
517
- return props.mode === "dropzone" && "justify-content: center; padding: 1rem;";
496
+ 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) {
497
+ 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;";
518
498
  }, function (props) {
519
- return props.mode === "filedrop" ? "48px" : "160px";
499
+ return props.mode === "filedrop" ? "calc(4px - ".concat(props.theme.dropBorderThickness, ") 1rem calc(4px - ").concat(props.theme.dropBorderThickness, ") calc(4px - ").concat(props.theme.dropBorderThickness, ")") : "1rem";
520
500
  }, function (props) {
521
501
  return props.theme.dropBorderRadius;
522
502
  }, function (props) {
@@ -531,11 +511,7 @@ var DragDropArea = _styledComponents["default"].div(_templateObject8 || (_templa
531
511
  return props.disabled && "not-allowed";
532
512
  });
533
513
 
534
- var ButtonContainer = _styledComponents["default"].div(_templateObject9 || (_templateObject9 = (0, _taggedTemplateLiteral2["default"])(["\n ", ";\n"])), function (props) {
535
- return props.mode === "filedrop" && "padding: 2px 12px 2px 3px";
536
- });
537
-
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) {
514
+ 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) {
539
515
  return props.disabled ? props.theme.disabledDropLabelFontColor : props.theme.dropLabelFontColor;
540
516
  }, function (props) {
541
517
  return props.theme.dropLabelFontFamily;
@@ -545,7 +521,7 @@ var DropzoneLabel = _styledComponents["default"].div(_templateObject10 || (_temp
545
521
  return props.theme.dropLabelFontWeight;
546
522
  });
547
523
 
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) {
524
+ 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) {
549
525
  return props.disabled ? props.theme.disabledDropLabelFontColor : props.theme.dropLabelFontColor;
550
526
  }, function (props) {
551
527
  return props.theme.dropLabelFontFamily;
@@ -555,7 +531,7 @@ var FiledropLabel = _styledComponents["default"].span(_templateObject11 || (_tem
555
531
  return props.theme.dropLabelFontWeight;
556
532
  });
557
533
 
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) {
534
+ 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) {
559
535
  return props.theme.errorMessageFontColor;
560
536
  }, function (props) {
561
537
  return props.theme.errorMessageFontFamily;
@@ -3,14 +3,14 @@ import DxcFileInput from "./FileInput";
3
3
  import Title from "../../.storybook/components/Title";
4
4
  import ExampleContainer from "../../.storybook/components/ExampleContainer";
5
5
  import FileItem from "./FileItem";
6
+ import { HalstackProvider } from "../HalstackContext";
6
7
 
7
8
  export default {
8
9
  title: "File input",
9
10
  component: DxcFileInput,
10
11
  };
11
12
 
12
- const picPreview =
13
- "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADIAAAAyCAYAAAAeP4ixAAAABmJLR0QA/wD/AP+gvaeTAAAEDklEQVRogdXaXaxcUxQH8J/etloajVT1I9qgCbdIUB8PXPeKBJHgsV5ExAuVivBUgtSDxgNBVMVHxEeRUhIhkpJ40BYhoTShaQglQtA2VR+ttjMe1j45c6cztzNnzszc+09Ocs/Za+39/++zzt5rr7l0D1diA35P14b0bMJgAE+g2uR6FpP7xq4NZCL2YjlOSNdt6VkVj/eNXYu4VhD9G+c3aL8gtVWS7bjEsfhRCFk2ht2yZPNT8hl3WCUIfoZJY9gdhY+T7QM94NUWFmEfDuHCFuyXJNv9OL2LvNrGO2KGn2rD55nks6ErjAog+8B3YXYbfrPwR/Lt+4d/NLYLMrcW8F+efL/DtBJ5tY17EpEvxEbYLgawJfVxXxObRZhbiF2LWCjfE4Y66OeS1Mc/OLnm+Uw8ggP4oYP+j4hHxUy+VEJfL6e+3hTL8/X4RZ7W/FvCGE1xOdZp7wNvhvny9CULtSo+1QMhZWImPpQL+A03YbouCpkqXn8ZqA+jg1iD41P7NF0QMiAy2N0ipDrFWUa/hU9wXp1N6UIuEktsNug3HfY3gD2pr4rYTxrlZ6UJmY3n0mBZ7JYhhDi3ZP1+i6sb2HQsZBJuEEfUqljjV+Ic5QkhzifZylTF+xisae9IyBIRr1nnb+PU1DaoXCHkk5blXfvxGGYoKGQWnhbpdZb/XFNn0w0hGebgBXm4fY/rtClkOn6Wz8j96Vk9uikkw5DRm2JLQrKV4hB2pr+niJznuPI5toRN4rx/u1jZiLfUMqZiBf4Ss7Bb7Bu1WW0v3kgt5mA17i7iPB8vymN1Cy5Obb0W0jFm4Fd5jFbEfjJsggl5UBDeiLvk4bZP/4RcJj76W1p1OE2sXAfFBkgcotYrL0UpghF5BfOkVhzeTQ5rGrRdIXbiVWWxaxNvCG6vHckwq4jsFPXa8YYF8gPYVc2MaisiN/eGVyGsEBy3C86H4d5k8LliFZFeYSq+FlwP218WiJWpIpbY8Y5heeXllNqGdcqriPQKrwrO67MHZwh1ezGvT6SKIKu8VLCYWGareKgPZEZECrS5oP/Dgvtq2Jpuzi6FWmuYh7XyfK5asJ9zk++X5EWARuePsjEZd9SM+afOhBwjz9TtSDeDY3mUgBH526/gFRHnnQhZLD9NejLdvG7sn8yKoj6MtuLSmvaiQibJ8781RNl+V3rwEZaKpGxKQeIZ6sNoD+5s0G87QqYkbksT1yydWpQZDMl/kS16bawb9AN5GK3VfGnvZMwd0qEv+w+ETTgTN4rEcRAninSgVdTP6oE2fFvFf6JIuA1v4XmRkXQVk+UFhGoacKXDJ6eTj72nmGt0DWCbONdkmDBCMgzjK6MrmAtNQCGUvyH2HfXhNmGFZBgRNYD3Ou3ofwlpcfptqgzTAAAAAElFTkSuQmCC";
13
+ const picPreview = "https://cdn.mos.cms.futurecdn.net/CAZ6JXi6huSuN4QGE627NR.jpg";
14
14
 
15
15
  const file1 = new File(["file1"], "file.pdf", { type: "text/plain" });
16
16
  const file2 = new File(["file2"], "file2.mp3", {
@@ -22,7 +22,7 @@ const file3 = new File(["file3"], "file3.png", {
22
22
  const file4 = new File(["file4"], "file4file4file4file4file4file4file4file4file4.mp4", {
23
23
  type: "video",
24
24
  });
25
- const file5 = new File(["file4"], "file5file5file5file5file5file5file5file5file5.mp4", {
25
+ const file5 = new File(["file5"], "file5file5file5file5file5file5file5file5file5.mp4", {
26
26
  type: "video",
27
27
  });
28
28
 
@@ -54,7 +54,7 @@ const filesExamples = [
54
54
  file: file4,
55
55
  },
56
56
  {
57
- error: "Error message error message error message error message",
57
+ error: "This error message is a multiline paragraph for testing.",
58
58
  file: file5,
59
59
  },
60
60
  {
@@ -64,17 +64,22 @@ const filesExamples = [
64
64
  },
65
65
  ];
66
66
 
67
+ const opinionatedTheme = {
68
+ fileInput: {
69
+ fontColor: "#000000",
70
+ },
71
+ };
72
+
67
73
  export const Chromatic = () => (
68
74
  <>
69
75
  <Title title="File item states" theme="light" level={2} />
70
76
  <ExampleContainer pseudoState="pseudo-hover">
71
77
  <Title title="Hovered" theme="light" level={4} />
72
78
  <FileItem
73
- mode="dropzone"
74
- multiple={true}
75
- name="file"
79
+ fileName="file"
80
+ error=""
81
+ singleFileMode={false}
76
82
  showPreview={false}
77
- numFiles={1}
78
83
  preview={picPreview}
79
84
  type="image/png"
80
85
  onDelete={() => {}}
@@ -84,11 +89,10 @@ export const Chromatic = () => (
84
89
  <ExampleContainer pseudoState="pseudo-focus">
85
90
  <Title title="Focused" theme="light" level={4} />
86
91
  <FileItem
87
- mode="dropzone"
88
- multiple={true}
89
- name="file"
92
+ fileName="file"
93
+ error=""
94
+ singleFileMode={false}
90
95
  showPreview={false}
91
- numFiles={1}
92
96
  preview={picPreview}
93
97
  type="image/png"
94
98
  onDelete={() => {}}
@@ -98,11 +102,10 @@ export const Chromatic = () => (
98
102
  <ExampleContainer pseudoState="pseudo-active">
99
103
  <Title title="Actived" theme="light" level={4} />
100
104
  <FileItem
101
- mode="dropzone"
102
- multiple={true}
103
- name="file"
105
+ fileName="file"
106
+ error=""
107
+ singleFileMode={false}
104
108
  showPreview={false}
105
- numFiles={1}
106
109
  preview={picPreview}
107
110
  type="image/png"
108
111
  onDelete={() => {}}
@@ -533,7 +536,83 @@ export const Chromatic = () => (
533
536
  mode="dropzone"
534
537
  margin="xxlarge"
535
538
  />
536
- <hr />
539
+ </ExampleContainer>
540
+ <Title title="Opinionated theme" theme="light" level={2} />
541
+ <ExampleContainer>
542
+ <HalstackProvider theme={opinionatedTheme}>
543
+ <Title title="Single file" theme="light" level={4} />
544
+ <DxcFileInput
545
+ label="File input"
546
+ helperText="Please select files"
547
+ value={fileExample}
548
+ multiple={false}
549
+ callbackFile={() => {}}
550
+ />
551
+ </HalstackProvider>
552
+ </ExampleContainer>
553
+ <ExampleContainer>
554
+ <HalstackProvider theme={opinionatedTheme}>
555
+ <Title title="Invalid single file" theme="light" level={4} />
556
+ <DxcFileInput
557
+ label="File input"
558
+ helperText="Please select files"
559
+ value={fileExampleError}
560
+ multiple={false}
561
+ callbackFile={() => {}}
562
+ />
563
+ </HalstackProvider>
564
+ </ExampleContainer>
565
+ <ExampleContainer>
566
+ <Title title="Single file" theme="light" level={4} />
567
+ <HalstackProvider theme={opinionatedTheme}>
568
+ <DxcFileInput
569
+ mode="filedrop"
570
+ label="File input"
571
+ helperText="Please select files"
572
+ value={fileExample}
573
+ multiple={false}
574
+ callbackFile={() => {}}
575
+ />
576
+ </HalstackProvider>
577
+ </ExampleContainer>
578
+ <ExampleContainer>
579
+ <Title title="Invalid single file" theme="light" level={4} />
580
+ <HalstackProvider theme={opinionatedTheme}>
581
+ <DxcFileInput
582
+ mode="filedrop"
583
+ label="File input"
584
+ helperText="Please select files"
585
+ value={fileExampleError}
586
+ multiple={false}
587
+ callbackFile={() => {}}
588
+ />
589
+ </HalstackProvider>
590
+ </ExampleContainer>
591
+ <ExampleContainer>
592
+ <Title title="Single file" theme="light" level={4} />
593
+ <HalstackProvider theme={opinionatedTheme}>
594
+ <DxcFileInput
595
+ label="File input"
596
+ helperText="Please select files"
597
+ mode="dropzone"
598
+ value={fileExample}
599
+ callbackFile={() => {}}
600
+ multiple={false}
601
+ />
602
+ </HalstackProvider>
603
+ </ExampleContainer>
604
+ <ExampleContainer>
605
+ <Title title="Invalid single file" theme="light" level={4} />{" "}
606
+ <HalstackProvider theme={opinionatedTheme}>
607
+ <DxcFileInput
608
+ label="File input"
609
+ helperText="Please select files"
610
+ mode="dropzone"
611
+ value={fileExampleError}
612
+ callbackFile={() => {}}
613
+ multiple={false}
614
+ />
615
+ </HalstackProvider>
537
616
  </ExampleContainer>
538
617
  </>
539
618
  );
@@ -12,21 +12,21 @@ var _react2 = require("@testing-library/react");
12
12
 
13
13
  var _userEvent = _interopRequireDefault(require("@testing-library/user-event"));
14
14
 
15
- var _FileInput = _interopRequireDefault(require("./FileInput"));
16
-
15
+ var _FileInput = _interopRequireDefault(require("./FileInput.tsx"));
16
+
17
+ var file1 = new File(["file1"], "file1.png", {
18
+ type: "image/png"
19
+ });
20
+ var file2 = new File(["file2"], "file2.txt", {
21
+ type: "text/plain"
22
+ });
23
+ var allFiles = [{
24
+ file: file1
25
+ }, {
26
+ error: "Error message",
27
+ file: file2
28
+ }];
17
29
  describe("FileInput component tests", function () {
18
- var file1 = new File(["file1"], "file1.png", {
19
- type: "image/png"
20
- });
21
- var file2 = new File(["file2"], "file2.txt", {
22
- type: "text/plain"
23
- });
24
- var allFiles = [{
25
- file: file1
26
- }, {
27
- error: "Error message",
28
- file: file2
29
- }];
30
30
  test("Renders with correct labels and helper text in file mode", function () {
31
31
  var _render = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_FileInput["default"], {
32
32
  label: "File input label",
@@ -454,45 +454,4 @@ 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
- });
498
457
  });
@@ -1,14 +1,4 @@
1
1
  import React from "react";
2
- declare const _default: React.MemoExoticComponent<({ mode, multiple, name, error, showPreview, preview, type, numFiles, onDelete, tabIndex, }: {
3
- mode: any;
4
- multiple: any;
5
- name?: string;
6
- error?: string;
7
- showPreview: any;
8
- preview: any;
9
- type: any;
10
- numFiles: any;
11
- onDelete: any;
12
- tabIndex: any;
13
- }) => JSX.Element>;
2
+ import { FileItemProps } from "./types";
3
+ declare const _default: React.MemoExoticComponent<({ fileName, error, singleFileMode, showPreview, preview, type, onDelete, tabIndex, }: FileItemProps) => JSX.Element>;
14
4
  export default _default;
@@ -15,11 +15,13 @@ var _react = _interopRequireDefault(require("react"));
15
15
 
16
16
  var _styledComponents = _interopRequireWildcard(require("styled-components"));
17
17
 
18
+ var _main = require("../main");
19
+
18
20
  var _useTheme = _interopRequireDefault(require("../useTheme"));
19
21
 
20
22
  var _useTranslatedLabels = _interopRequireDefault(require("../useTranslatedLabels"));
21
23
 
22
- var _templateObject, _templateObject2, _templateObject3, _templateObject4, _templateObject5, _templateObject6, _templateObject7, _templateObject8, _templateObject9;
24
+ var _templateObject, _templateObject2, _templateObject3, _templateObject4, _templateObject5, _templateObject6, _templateObject7, _templateObject8;
23
25
 
24
26
  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); }
25
27
 
@@ -49,16 +51,14 @@ var errorIcon = /*#__PURE__*/_react["default"].createElement("svg", {
49
51
  }));
50
52
 
51
53
  var FileItem = function FileItem(_ref) {
52
- var mode = _ref.mode,
53
- multiple = _ref.multiple,
54
- _ref$name = _ref.name,
55
- name = _ref$name === void 0 ? "" : _ref$name,
54
+ var _ref$fileName = _ref.fileName,
55
+ fileName = _ref$fileName === void 0 ? "" : _ref$fileName,
56
56
  _ref$error = _ref.error,
57
57
  error = _ref$error === void 0 ? "" : _ref$error,
58
+ singleFileMode = _ref.singleFileMode,
58
59
  showPreview = _ref.showPreview,
59
60
  preview = _ref.preview,
60
61
  type = _ref.type,
61
- numFiles = _ref.numFiles,
62
62
  onDelete = _ref.onDelete,
63
63
  tabIndex = _ref.tabIndex;
64
64
  var colorsTheme = (0, _useTheme["default"])();
@@ -70,43 +70,35 @@ var FileItem = function FileItem(_ref) {
70
70
 
71
71
  return /*#__PURE__*/_react["default"].createElement(_styledComponents.ThemeProvider, {
72
72
  theme: colorsTheme.fileInput
73
- }, /*#__PURE__*/_react["default"].createElement(Container, {
74
- mode: mode,
75
- multiple: multiple,
73
+ }, /*#__PURE__*/_react["default"].createElement(MainContainer, {
76
74
  error: error,
77
- showPreview: showPreview,
78
- numFiles: numFiles
75
+ singleFileMode: singleFileMode,
76
+ showPreview: showPreview
79
77
  }, showPreview && (type.includes("image") ? /*#__PURE__*/_react["default"].createElement(ImagePreview, {
80
78
  src: preview,
81
- alt: name
82
- }) : /*#__PURE__*/_react["default"].createElement(IconPreviewContainer, {
79
+ alt: fileName
80
+ }) : /*#__PURE__*/_react["default"].createElement(IconPreview, {
83
81
  error: error,
84
82
  "aria-label": getIconAriaLabel()
85
- }, preview)), /*#__PURE__*/_react["default"].createElement(FileItemContent, null, /*#__PURE__*/_react["default"].createElement(FileItemContainer, null, /*#__PURE__*/_react["default"].createElement(FileName, {
86
- mode: mode,
87
- multiple: multiple,
88
- error: error,
89
- showPreview: showPreview,
90
- numFiles: numFiles
91
- }, name), error && /*#__PURE__*/_react["default"].createElement(ErrorIcon, null, errorIcon), /*#__PURE__*/_react["default"].createElement(DeleteFileAction, {
92
- error: error,
83
+ }, preview)), /*#__PURE__*/_react["default"].createElement(FileItemContent, null, /*#__PURE__*/_react["default"].createElement(FileName, null, fileName), /*#__PURE__*/_react["default"].createElement(_main.DxcFlex, {
84
+ gap: "0.25rem"
85
+ }, error && /*#__PURE__*/_react["default"].createElement(ErrorIcon, null, errorIcon), /*#__PURE__*/_react["default"].createElement(DeleteFileAction, {
93
86
  onClick: function onClick() {
94
- onDelete(name);
87
+ onDelete(fileName);
95
88
  },
89
+ type: "button",
96
90
  title: translatedLabels.fileInput.deleteFileActionTitle,
97
91
  "aria-label": translatedLabels.fileInput.deleteFileActionTitle,
98
92
  tabIndex: tabIndex
99
- }, deleteIcon)), error && (multiple || numFiles > 1) && /*#__PURE__*/_react["default"].createElement(ErrorMessage, null, error))));
93
+ }, deleteIcon)), error && !singleFileMode && /*#__PURE__*/_react["default"].createElement(ErrorMessage, null, error))));
100
94
  };
101
95
 
102
- var Container = _styledComponents["default"].div(_templateObject || (_templateObject = (0, _taggedTemplateLiteral2["default"])(["\n display: flex;\n flex-direction: row;\n justify-content: center;\n gap: 12px;\n padding: ", ";\n width: ", ";\n min-height: ", ";\n background-color: ", ";\n border-color: ", ";\n border-width: ", ";\n border-style: ", ";\n border-radius: ", ";\n"])), function (props) {
103
- return props.showPreview ? "calc(8px - ".concat(props.theme.fileItemBorderThickness, ") 8px") : "calc(8px - ".concat(props.theme.fileItemBorderThickness, ") 8px calc(8px - ").concat(props.theme.fileItemBorderThickness, ") 16px");
104
- }, function (props) {
105
- return props.mode === "file" && !props.multiple && props.numFiles === 1 ? "calc(230px - 26px)" : !props.showPreview ? "calc(320px - 26px)" : props.showPreview && "calc(320px - 18px)";
96
+ var MainContainer = _styledComponents["default"].div(_templateObject || (_templateObject = (0, _taggedTemplateLiteral2["default"])(["\n box-sizing: border-box;\n display: flex;\n justify-content: center;\n gap: 0.75rem;\n width: ", ";\n padding: ", ";\n ", ";\n border-color: ", ";\n border-width: ", ";\n border-style: ", ";\n border-radius: ", ";\n"])), function (props) {
97
+ return props.singleFileMode ? "230px" : "320px";
106
98
  }, function (props) {
107
- return props.mode === "file" && !props.multiple && props.numFiles === 1 || !props.showPreview && !props.error ? "calc(40px - 18px)" : !props.showPreview && props.error ? "calc(59px - 18px)" : "calc(64px - 18px)";
99
+ return props.showPreview ? "calc(8px - ".concat(props.theme.fileItemBorderThickness, ")") : "calc(8px - ".concat(props.theme.fileItemBorderThickness, ") calc(8px - ").concat(props.theme.fileItemBorderThickness, ") calc(8px - ").concat(props.theme.fileItemBorderThickness, ") 16px");
108
100
  }, function (props) {
109
- return props.error && props.theme.errorFileItemBackgroundColor;
101
+ return props.error ? "background-color: ".concat(props.theme.errorFileItemBackgroundColor, ";") : "";
110
102
  }, function (props) {
111
103
  return props.error ? props.theme.errorFileItemBorderColor : props.theme.fileItemBorderColor;
112
104
  }, function (props) {
@@ -117,22 +109,18 @@ var Container = _styledComponents["default"].div(_templateObject || (_templateOb
117
109
  return props.theme.fileItemBorderRadius;
118
110
  });
119
111
 
120
- var FileItemContent = _styledComponents["default"].div(_templateObject2 || (_templateObject2 = (0, _taggedTemplateLiteral2["default"])(["\n display: flex;\n flex-direction: column;\n"])));
112
+ var ImagePreview = _styledComponents["default"].img(_templateObject2 || (_templateObject2 = (0, _taggedTemplateLiteral2["default"])(["\n width: 48px;\n height: 48px;\n border-radius: 2px;\n object-fit: contain;\n"])));
121
113
 
122
- var FileItemContainer = _styledComponents["default"].div(_templateObject3 || (_templateObject3 = (0, _taggedTemplateLiteral2["default"])(["\n display: flex;\n flex-direction: row;\n align-items: center;\n"])));
123
-
124
- var ImagePreview = _styledComponents["default"].img(_templateObject4 || (_templateObject4 = (0, _taggedTemplateLiteral2["default"])(["\n width: 48px;\n height: 48px;\n object-fit: contain;\n border-radius: 2px;\n"])));
125
-
126
- var IconPreviewContainer = _styledComponents["default"].div(_templateObject5 || (_templateObject5 = (0, _taggedTemplateLiteral2["default"])(["\n display: flex;\n align-items: center;\n justify-content: center;\n background-color: ", ";\n width: 48px;\n height: 48px;\n border-radius: 2px;\n color: ", ";\n"])), function (props) {
114
+ var IconPreview = _styledComponents["default"].span(_templateObject3 || (_templateObject3 = (0, _taggedTemplateLiteral2["default"])(["\n box-sizing: border-box;\n display: flex;\n align-items: center;\n justify-content: center;\n background-color: ", ";\n width: 48px;\n height: 48px;\n padding: 15px;\n border-radius: 2px;\n color: ", ";\n\n svg {\n height: 18px;\n width: 18px;\n }\n"])), function (props) {
127
115
  return props.error ? props.theme.errorFilePreviewBackgroundColor : props.theme.filePreviewBackgroundColor;
128
116
  }, function (props) {
129
117
  return props.error ? props.theme.errorFilePreviewIconColor : props.theme.filePreviewIconColor;
130
118
  });
131
119
 
132
- var FileName = _styledComponents["default"].span(_templateObject6 || (_templateObject6 = (0, _taggedTemplateLiteral2["default"])(["\n color: ", ";\n width: ", ";\n text-overflow: ellipsis;\n overflow: hidden;\n white-space: nowrap;\n font-family: ", ";\n font-size: ", ";\n font-weight: ", ";\n line-height: ", ";\n"])), function (props) {
120
+ var FileItemContent = _styledComponents["default"].div(_templateObject4 || (_templateObject4 = (0, _taggedTemplateLiteral2["default"])(["\n flex-grow: 1;\n display: grid;\n grid-template-columns: auto min-content;\n grid-template-rows: min-content auto;\n column-gap: 0.25rem;\n"])));
121
+
122
+ var FileName = _styledComponents["default"].span(_templateObject5 || (_templateObject5 = (0, _taggedTemplateLiteral2["default"])(["\n align-self: center;\n color: ", ";\n font-family: ", ";\n font-size: ", ";\n font-weight: ", ";\n line-height: ", ";\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n"])), function (props) {
133
123
  return props.theme.fileNameFontColor;
134
- }, function (props) {
135
- return props.mode === "file" && !props.multiple && props.error && props.numFiles === 1 ? "calc(230px - 76px)" : props.mode === "file" && !props.multiple && !props.error && props.numFiles === 1 ? "calc(230px - 50px)" : !props.showPreview && !props.error ? "calc(320px - 52px)" : !props.showPreview && props.error ? "calc(320px - 76px)" : props.showPreview && props.error ? "calc(320px - 128px)" : props.showPreview && !props.error && "calc(320px - 102px)";
136
124
  }, function (props) {
137
125
  return props.theme.fileItemFontFamily;
138
126
  }, function (props) {
@@ -143,9 +131,9 @@ var FileName = _styledComponents["default"].span(_templateObject6 || (_templateO
143
131
  return props.theme.fileItemLineHeight;
144
132
  });
145
133
 
146
- var ErrorIcon = _styledComponents["default"].span(_templateObject7 || (_templateObject7 = (0, _taggedTemplateLiteral2["default"])(["\n display: flex;\n flex-wrap: wrap;\n align-content: center;\n padding: 3px;\n height: 18px;\n width: 18px;\n color: #d0011b;\n"])));
134
+ var ErrorIcon = _styledComponents["default"].span(_templateObject6 || (_templateObject6 = (0, _taggedTemplateLiteral2["default"])(["\n display: flex;\n flex-wrap: wrap;\n align-content: center;\n padding: 3px;\n height: 18px;\n width: 18px;\n color: #d0011b;\n"])));
147
135
 
148
- var DeleteFileAction = _styledComponents["default"].button(_templateObject8 || (_templateObject8 = (0, _taggedTemplateLiteral2["default"])(["\n display: flex;\n flex-wrap: wrap;\n align-content: center;\n height: 24px;\n width: 24px;\n font-size: 1rem;\n font-family: ", ";\n border: 1px solid transparent;\n border-radius: 2px;\n margin-left: 4px;\n background-color: transparent;\n box-shadow: 0 0 0 2px transparent;\n padding: 3px;\n cursor: pointer;\n color: ", ";\n\n svg {\n line-height: 18px;\n }\n &:hover {\n background-color: ", ";\n }\n &:focus, &:focus-visible {\n outline: none;\n box-shadow: 0 0 0 2px ", ";\n }\n &:active {\n background-color: ", ";\n }\n"])), function (props) {
136
+ var DeleteFileAction = _styledComponents["default"].button(_templateObject7 || (_templateObject7 = (0, _taggedTemplateLiteral2["default"])(["\n display: flex;\n flex-wrap: wrap;\n align-content: center;\n height: 24px;\n width: 24px;\n font-size: 1rem;\n font-family: ", ";\n border: 1px solid transparent;\n border-radius: 2px;\n background-color: transparent;\n box-shadow: 0 0 0 2px transparent;\n padding: 3px;\n cursor: pointer;\n color: ", ";\n\n svg {\n line-height: 18px;\n }\n &:hover {\n background-color: ", ";\n }\n &:focus,\n &:focus-visible {\n outline: none;\n box-shadow: 0 0 0 2px ", ";\n }\n &:active {\n background-color: ", ";\n }\n"])), function (props) {
149
137
  return props.theme.fontFamily;
150
138
  }, function (props) {
151
139
  return props.theme.deleteFileItemColor;
@@ -157,7 +145,7 @@ var DeleteFileAction = _styledComponents["default"].button(_templateObject8 || (
157
145
  return props.theme.activeDeleteFileItemBackgroundColor;
158
146
  });
159
147
 
160
- var ErrorMessage = _styledComponents["default"].span(_templateObject9 || (_templateObject9 = (0, _taggedTemplateLiteral2["default"])(["\n color: ", ";\n font-family: ", ";\n font-size: ", ";\n font-weight: ", ";\n line-height: ", ";\n"])), function (props) {
148
+ var ErrorMessage = _styledComponents["default"].span(_templateObject8 || (_templateObject8 = (0, _taggedTemplateLiteral2["default"])(["\n color: ", ";\n font-family: ", ";\n font-size: ", ";\n font-weight: ", ";\n line-height: ", ";\n"])), function (props) {
161
149
  return props.theme.errorMessageFontColor;
162
150
  }, function (props) {
163
151
  return props.theme.errorMessageFontFamily;