@dxc-technology/halstack-react 0.0.0-7604f1d → 0.0.0-76b7408

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 (309) hide show
  1. package/BackgroundColorContext.d.ts +10 -0
  2. package/BackgroundColorContext.js +1 -4
  3. package/HalstackContext.d.ts +12 -0
  4. package/HalstackContext.js +343 -0
  5. package/accordion/Accordion.d.ts +1 -1
  6. package/accordion/Accordion.js +119 -138
  7. package/accordion/Accordion.stories.tsx +395 -0
  8. package/accordion/Accordion.test.js +71 -0
  9. package/accordion/types.d.ts +12 -11
  10. package/accordion-group/AccordionGroup.d.ts +1 -1
  11. package/accordion-group/AccordionGroup.js +16 -37
  12. package/accordion-group/AccordionGroup.stories.tsx +251 -0
  13. package/accordion-group/AccordionGroup.test.js +126 -0
  14. package/accordion-group/types.d.ts +17 -10
  15. package/alert/Alert.js +7 -4
  16. package/alert/Alert.stories.tsx +28 -0
  17. package/alert/Alert.test.js +92 -0
  18. package/alert/types.d.ts +1 -1
  19. package/badge/Badge.d.ts +4 -0
  20. package/badge/Badge.js +6 -4
  21. package/badge/types.d.ts +5 -0
  22. package/bleed/Bleed.d.ts +3 -0
  23. package/bleed/Bleed.js +51 -0
  24. package/bleed/Bleed.stories.tsx +341 -0
  25. package/bleed/types.d.ts +37 -0
  26. package/bleed/types.js +5 -0
  27. package/box/Box.js +25 -35
  28. package/box/Box.stories.tsx +15 -0
  29. package/box/Box.test.js +18 -0
  30. package/box/types.d.ts +1 -0
  31. package/bulleted-list/BulletedList.d.ts +7 -0
  32. package/bulleted-list/BulletedList.js +123 -0
  33. package/bulleted-list/BulletedList.stories.tsx +200 -0
  34. package/bulleted-list/types.d.ts +11 -0
  35. package/bulleted-list/types.js +5 -0
  36. package/button/Button.d.ts +1 -1
  37. package/button/Button.js +59 -82
  38. package/button/Button.stories.tsx +163 -14
  39. package/button/Button.test.js +35 -0
  40. package/button/types.d.ts +10 -14
  41. package/card/Card.js +26 -30
  42. package/card/Card.stories.tsx +201 -0
  43. package/card/Card.test.js +50 -0
  44. package/card/ice-cream.jpg +0 -0
  45. package/card/types.d.ts +5 -6
  46. package/checkbox/Checkbox.d.ts +2 -2
  47. package/checkbox/Checkbox.js +108 -111
  48. package/checkbox/Checkbox.stories.tsx +198 -130
  49. package/checkbox/Checkbox.test.js +155 -0
  50. package/checkbox/types.d.ts +15 -7
  51. package/chip/Chip.d.ts +4 -0
  52. package/chip/Chip.js +22 -88
  53. package/chip/Chip.stories.tsx +98 -13
  54. package/chip/Chip.test.js +56 -0
  55. package/chip/types.d.ts +45 -0
  56. package/chip/types.js +5 -0
  57. package/common/variables.js +536 -575
  58. package/date-input/Calendar.d.ts +4 -0
  59. package/date-input/Calendar.js +258 -0
  60. package/date-input/DateInput.js +174 -266
  61. package/date-input/DateInput.stories.tsx +199 -33
  62. package/date-input/DateInput.test.js +835 -0
  63. package/date-input/DatePicker.d.ts +4 -0
  64. package/date-input/DatePicker.js +146 -0
  65. package/date-input/Icons.d.ts +6 -0
  66. package/date-input/Icons.js +75 -0
  67. package/date-input/YearPicker.d.ts +4 -0
  68. package/date-input/YearPicker.js +126 -0
  69. package/date-input/types.d.ts +67 -9
  70. package/dialog/Dialog.js +79 -95
  71. package/dialog/Dialog.stories.tsx +230 -123
  72. package/dialog/Dialog.test.js +369 -0
  73. package/dialog/types.d.ts +3 -2
  74. package/dropdown/Dropdown.d.ts +1 -1
  75. package/dropdown/Dropdown.js +248 -277
  76. package/dropdown/Dropdown.stories.tsx +438 -0
  77. package/dropdown/Dropdown.test.js +585 -0
  78. package/dropdown/DropdownMenu.d.ts +4 -0
  79. package/dropdown/DropdownMenu.js +70 -0
  80. package/dropdown/DropdownMenuItem.d.ts +4 -0
  81. package/dropdown/DropdownMenuItem.js +81 -0
  82. package/dropdown/types.d.ts +30 -19
  83. package/file-input/FileInput.d.ts +2 -2
  84. package/file-input/FileInput.js +179 -142
  85. package/file-input/FileInput.stories.tsx +618 -0
  86. package/file-input/FileInput.test.js +457 -0
  87. package/file-input/FileItem.d.ts +4 -14
  88. package/file-input/FileItem.js +47 -67
  89. package/file-input/types.d.ts +49 -7
  90. package/flex/Flex.d.ts +4 -0
  91. package/flex/Flex.js +69 -0
  92. package/flex/Flex.stories.tsx +103 -0
  93. package/flex/types.d.ts +32 -0
  94. package/flex/types.js +5 -0
  95. package/footer/Footer.d.ts +1 -1
  96. package/footer/Footer.js +32 -113
  97. package/footer/Footer.stories.tsx +228 -0
  98. package/footer/Footer.test.js +109 -0
  99. package/footer/Icons.d.ts +2 -0
  100. package/footer/Icons.js +4 -4
  101. package/footer/types.d.ts +22 -17
  102. package/header/Header.js +109 -130
  103. package/header/Header.stories.tsx +189 -36
  104. package/header/Header.test.js +79 -0
  105. package/header/Icons.d.ts +2 -0
  106. package/header/Icons.js +2 -2
  107. package/header/types.d.ts +7 -4
  108. package/heading/Heading.js +1 -1
  109. package/heading/Heading.stories.tsx +54 -0
  110. package/heading/Heading.test.js +186 -0
  111. package/inset/Inset.d.ts +3 -0
  112. package/inset/Inset.js +51 -0
  113. package/inset/Inset.stories.tsx +229 -0
  114. package/inset/types.d.ts +37 -0
  115. package/inset/types.js +5 -0
  116. package/layout/ApplicationLayout.d.ts +20 -0
  117. package/layout/ApplicationLayout.js +71 -135
  118. package/layout/ApplicationLayout.stories.tsx +162 -0
  119. package/layout/Icons.d.ts +5 -0
  120. package/layout/Icons.js +13 -2
  121. package/layout/SidenavContext.d.ts +5 -0
  122. package/layout/SidenavContext.js +19 -0
  123. package/layout/types.d.ts +42 -0
  124. package/layout/types.js +5 -0
  125. package/link/Link.d.ts +3 -2
  126. package/link/Link.js +62 -87
  127. package/link/Link.stories.tsx +159 -52
  128. package/link/Link.test.js +83 -0
  129. package/link/types.d.ts +9 -29
  130. package/main.d.ts +12 -12
  131. package/main.js +64 -58
  132. package/nav-tabs/NavTabs.d.ts +8 -0
  133. package/nav-tabs/NavTabs.js +125 -0
  134. package/nav-tabs/NavTabs.stories.tsx +260 -0
  135. package/nav-tabs/NavTabs.test.js +82 -0
  136. package/nav-tabs/Tab.d.ts +4 -0
  137. package/nav-tabs/Tab.js +150 -0
  138. package/nav-tabs/types.d.ts +53 -0
  139. package/nav-tabs/types.js +5 -0
  140. package/number-input/NumberInput.js +14 -24
  141. package/number-input/NumberInput.stories.tsx +5 -5
  142. package/number-input/NumberInput.test.js +542 -0
  143. package/number-input/NumberInputContext.d.ts +4 -0
  144. package/number-input/NumberInputContext.js +5 -2
  145. package/number-input/numberInputContextTypes.d.ts +19 -0
  146. package/number-input/numberInputContextTypes.js +5 -0
  147. package/number-input/types.d.ts +17 -10
  148. package/package.json +21 -22
  149. package/paginator/Icons.d.ts +5 -0
  150. package/paginator/Icons.js +16 -28
  151. package/paginator/Paginator.js +21 -54
  152. package/paginator/Paginator.stories.tsx +24 -0
  153. package/paginator/Paginator.test.js +315 -0
  154. package/paragraph/Paragraph.d.ts +6 -0
  155. package/paragraph/Paragraph.js +38 -0
  156. package/paragraph/Paragraph.stories.tsx +44 -0
  157. package/password-input/PasswordInput.js +23 -19
  158. package/password-input/PasswordInput.stories.tsx +3 -3
  159. package/password-input/PasswordInput.test.js +181 -0
  160. package/password-input/types.d.ts +29 -19
  161. package/progress-bar/ProgressBar.d.ts +2 -2
  162. package/progress-bar/ProgressBar.js +62 -56
  163. package/progress-bar/ProgressBar.stories.jsx +47 -12
  164. package/progress-bar/ProgressBar.test.js +110 -0
  165. package/progress-bar/types.d.ts +3 -4
  166. package/quick-nav/QuickNav.d.ts +4 -0
  167. package/quick-nav/QuickNav.js +117 -0
  168. package/quick-nav/QuickNav.stories.tsx +356 -0
  169. package/quick-nav/types.d.ts +21 -0
  170. package/quick-nav/types.js +5 -0
  171. package/radio-group/Radio.d.ts +4 -0
  172. package/radio-group/Radio.js +156 -0
  173. package/radio-group/RadioGroup.d.ts +4 -0
  174. package/radio-group/RadioGroup.js +283 -0
  175. package/radio-group/RadioGroup.stories.tsx +214 -0
  176. package/radio-group/RadioGroup.test.js +722 -0
  177. package/radio-group/types.d.ts +114 -0
  178. package/radio-group/types.js +5 -0
  179. package/resultsetTable/Icons.d.ts +7 -0
  180. package/resultsetTable/Icons.js +51 -0
  181. package/resultsetTable/ResultsetTable.d.ts +4 -0
  182. package/resultsetTable/ResultsetTable.js +53 -132
  183. package/resultsetTable/ResultsetTable.stories.tsx +300 -0
  184. package/resultsetTable/ResultsetTable.test.js +325 -0
  185. package/resultsetTable/types.d.ts +67 -0
  186. package/resultsetTable/types.js +5 -0
  187. package/select/Icons.d.ts +10 -0
  188. package/select/Icons.js +93 -0
  189. package/select/Listbox.d.ts +4 -0
  190. package/select/Listbox.js +169 -0
  191. package/select/Option.d.ts +4 -0
  192. package/select/Option.js +97 -0
  193. package/select/Select.d.ts +4 -0
  194. package/select/Select.js +196 -397
  195. package/select/Select.stories.tsx +600 -201
  196. package/select/Select.test.js +2228 -0
  197. package/select/types.d.ts +210 -0
  198. package/select/types.js +5 -0
  199. package/sidenav/Sidenav.d.ts +6 -5
  200. package/sidenav/Sidenav.js +184 -54
  201. package/sidenav/Sidenav.stories.tsx +282 -0
  202. package/sidenav/Sidenav.test.js +44 -0
  203. package/sidenav/types.d.ts +50 -27
  204. package/slider/Slider.d.ts +2 -2
  205. package/slider/Slider.js +123 -97
  206. package/slider/Slider.stories.tsx +72 -9
  207. package/slider/Slider.test.js +250 -0
  208. package/slider/types.d.ts +10 -2
  209. package/spinner/Spinner.js +5 -5
  210. package/spinner/Spinner.stories.jsx +27 -0
  211. package/spinner/Spinner.test.js +64 -0
  212. package/switch/Switch.d.ts +2 -2
  213. package/switch/Switch.js +152 -69
  214. package/switch/Switch.stories.tsx +54 -43
  215. package/switch/Switch.test.js +225 -0
  216. package/switch/types.d.ts +12 -4
  217. package/table/Table.js +4 -4
  218. package/table/Table.stories.jsx +81 -1
  219. package/table/Table.test.js +26 -0
  220. package/tabs/Tab.d.ts +4 -0
  221. package/tabs/Tab.js +133 -0
  222. package/tabs/Tabs.d.ts +1 -1
  223. package/tabs/Tabs.js +364 -108
  224. package/tabs/Tabs.stories.tsx +226 -0
  225. package/tabs/Tabs.test.js +351 -0
  226. package/tabs/types.d.ts +41 -20
  227. package/tag/Tag.d.ts +1 -1
  228. package/tag/Tag.js +19 -29
  229. package/tag/Tag.stories.tsx +38 -28
  230. package/tag/Tag.test.js +60 -0
  231. package/tag/types.d.ts +23 -14
  232. package/text-input/Icons.d.ts +8 -0
  233. package/text-input/Icons.js +60 -0
  234. package/text-input/Suggestion.d.ts +4 -0
  235. package/text-input/Suggestion.js +84 -0
  236. package/text-input/Suggestions.d.ts +4 -0
  237. package/text-input/Suggestions.js +134 -0
  238. package/text-input/TextInput.d.ts +4 -0
  239. package/text-input/TextInput.js +233 -385
  240. package/text-input/TextInput.stories.tsx +569 -0
  241. package/text-input/TextInput.test.js +1724 -0
  242. package/text-input/types.d.ts +197 -0
  243. package/text-input/types.js +5 -0
  244. package/textarea/Textarea.d.ts +4 -0
  245. package/textarea/Textarea.js +39 -79
  246. package/textarea/Textarea.stories.jsx +96 -15
  247. package/textarea/Textarea.test.js +437 -0
  248. package/textarea/types.d.ts +137 -0
  249. package/textarea/types.js +5 -0
  250. package/toggle-group/ToggleGroup.d.ts +4 -0
  251. package/toggle-group/ToggleGroup.js +18 -46
  252. package/toggle-group/ToggleGroup.stories.tsx +69 -32
  253. package/toggle-group/ToggleGroup.test.js +156 -0
  254. package/toggle-group/types.d.ts +105 -0
  255. package/toggle-group/types.js +5 -0
  256. package/typography/Typography.d.ts +4 -0
  257. package/typography/Typography.js +131 -0
  258. package/typography/Typography.stories.tsx +198 -0
  259. package/typography/types.d.ts +18 -0
  260. package/typography/types.js +5 -0
  261. package/useTheme.d.ts +2 -0
  262. package/useTheme.js +2 -2
  263. package/useTranslatedLabels.d.ts +2 -0
  264. package/useTranslatedLabels.js +20 -0
  265. package/utils/FocusLock.d.ts +13 -0
  266. package/utils/FocusLock.js +139 -0
  267. package/wizard/Wizard.d.ts +1 -1
  268. package/wizard/Wizard.js +112 -58
  269. package/wizard/{Wizard.stories.jsx → Wizard.stories.tsx} +48 -19
  270. package/wizard/Wizard.test.js +141 -0
  271. package/wizard/types.d.ts +13 -12
  272. package/ThemeContext.js +0 -246
  273. package/V3Select/V3Select.js +0 -455
  274. package/V3Select/index.d.ts +0 -27
  275. package/V3Textarea/V3Textarea.js +0 -260
  276. package/V3Textarea/index.d.ts +0 -27
  277. package/chip/index.d.ts +0 -22
  278. package/common/RequiredComponent.js +0 -32
  279. package/date/Date.js +0 -373
  280. package/date/index.d.ts +0 -27
  281. package/footer/Footer.stories.jsx +0 -151
  282. package/input-text/Icons.js +0 -22
  283. package/input-text/InputText.js +0 -611
  284. package/input-text/index.d.ts +0 -36
  285. package/radio/Radio.d.ts +0 -4
  286. package/radio/Radio.js +0 -174
  287. package/radio/Radio.stories.tsx +0 -192
  288. package/radio/types.d.ts +0 -54
  289. package/resultsetTable/index.d.ts +0 -19
  290. package/select/index.d.ts +0 -131
  291. package/text-input/index.d.ts +0 -135
  292. package/textarea/index.d.ts +0 -117
  293. package/toggle/Toggle.js +0 -186
  294. package/toggle/index.d.ts +0 -21
  295. package/toggle-group/index.d.ts +0 -21
  296. package/upload/Upload.js +0 -201
  297. package/upload/buttons-upload/ButtonsUpload.js +0 -111
  298. package/upload/buttons-upload/Icons.js +0 -40
  299. package/upload/dragAndDropArea/DragAndDropArea.js +0 -225
  300. package/upload/dragAndDropArea/Icons.js +0 -39
  301. package/upload/file-upload/FileToUpload.js +0 -115
  302. package/upload/file-upload/Icons.js +0 -66
  303. package/upload/files-upload/FilesToUpload.js +0 -109
  304. package/upload/index.d.ts +0 -15
  305. package/upload/transaction/Icons.js +0 -160
  306. package/upload/transaction/Transaction.js +0 -104
  307. package/upload/transactions/Transactions.js +0 -94
  308. package/wizard/Icons.js +0 -65
  309. /package/{radio → badge}/types.js +0 -0
@@ -15,6 +15,8 @@ var _taggedTemplateLiteral2 = _interopRequireDefault(require("@babel/runtime/hel
15
15
 
16
16
  var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
17
17
 
18
+ var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
19
+
18
20
  var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));
19
21
 
20
22
  var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
@@ -29,7 +31,9 @@ var _uuid = require("uuid");
29
31
 
30
32
  var _variables = require("../common/variables.js");
31
33
 
32
- var _useTheme = _interopRequireDefault(require("../useTheme.js"));
34
+ var _useTheme = _interopRequireDefault(require("../useTheme"));
35
+
36
+ var _useTranslatedLabels = _interopRequireDefault(require("../useTranslatedLabels"));
33
37
 
34
38
  var _Button = _interopRequireDefault(require("../button/Button"));
35
39
 
@@ -41,6 +45,10 @@ function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "functio
41
45
 
42
46
  function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof3(obj) !== "object" && typeof obj !== "function") { return { "default": obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj["default"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
43
47
 
48
+ function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
49
+
50
+ function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { (0, _defineProperty2["default"])(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
51
+
44
52
  var audioIcon = /*#__PURE__*/_react["default"].createElement("svg", {
45
53
  xmlns: "http://www.w3.org/2000/svg",
46
54
  width: "24",
@@ -80,13 +88,26 @@ var fileIcon = /*#__PURE__*/_react["default"].createElement("svg", {
80
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"
81
89
  }));
82
90
 
83
- 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) {
84
103
  var _ref$name = _ref.name,
85
104
  name = _ref$name === void 0 ? "" : _ref$name,
86
105
  _ref$mode = _ref.mode,
87
106
  mode = _ref$mode === void 0 ? "file" : _ref$mode,
88
107
  _ref$label = _ref.label,
89
108
  label = _ref$label === void 0 ? "" : _ref$label,
109
+ buttonLabel = _ref.buttonLabel,
110
+ dropAreaLabel = _ref.dropAreaLabel,
90
111
  _ref$helperText = _ref.helperText,
91
112
  helperText = _ref$helperText === void 0 ? "" : _ref$helperText,
92
113
  accept = _ref.accept,
@@ -119,49 +140,10 @@ var DxcFileInput = function DxcFileInput(_ref) {
119
140
  fileInputId = _useState6[0];
120
141
 
121
142
  var colorsTheme = (0, _useTheme["default"])();
122
- (0, _react.useEffect)(function () {
123
- if (value) {
124
- setFiles(value);
125
- } else {
126
- setFiles([]);
127
- }
128
- }, [value]);
129
-
130
- var handleClick = function handleClick() {
131
- document.getElementById(fileInputId).click();
132
- };
143
+ var translatedLabels = (0, _useTranslatedLabels["default"])();
133
144
 
134
145
  var checkFileSize = function checkFileSize(file) {
135
- if (file.size < minSize) {
136
- return "File size must be greater than min size.";
137
- }
138
-
139
- if (file.size > maxSize) {
140
- return "File size must be less than max size.";
141
- }
142
- };
143
-
144
- var getFilePreview = function getFilePreview(file) {
145
- if (file.type.includes("video")) {
146
- return videoIcon;
147
- }
148
-
149
- if (file.type.includes("audio")) {
150
- return audioIcon;
151
- }
152
-
153
- if (file.type.includes("image")) {
154
- return new Promise(function (resolve) {
155
- var reader = new FileReader();
156
- reader.readAsDataURL(file);
157
-
158
- reader.onload = function (e) {
159
- resolve(e.target.result);
160
- };
161
- });
162
- }
163
-
164
- return fileIcon;
146
+ if (file.size < minSize) return translatedLabels.fileInput.fileSizeGreaterThanErrorMessage;else if (file.size > maxSize) return translatedLabels.fileInput.fileSizeLessThanErrorMessage;
165
147
  };
166
148
 
167
149
  var getFilesToAdd = /*#__PURE__*/function () {
@@ -175,10 +157,10 @@ var DxcFileInput = function DxcFileInput(_ref) {
175
157
  return Promise.all(selectedFiles.map(function (selectedFile) {
176
158
  return getFilePreview(selectedFile);
177
159
  })).then(function (previews) {
178
- return selectedFiles.map(function (selectedFile, index) {
160
+ return selectedFiles.map(function (file, index) {
179
161
  var fileInfo = {
180
- file: selectedFile,
181
- error: checkFileSize(selectedFile),
162
+ file: file,
163
+ error: checkFileSize(file),
182
164
  preview: previews[index]
183
165
  };
184
166
  return fileInfo;
@@ -220,11 +202,7 @@ var DxcFileInput = function DxcFileInput(_ref) {
220
202
  case 3:
221
203
  filesToAdd = _context2.sent;
222
204
  finalFiles = [].concat((0, _toConsumableArray2["default"])(files), (0, _toConsumableArray2["default"])(filesToAdd));
223
-
224
- if (typeof callbackFile === "function") {
225
- callbackFile(finalFiles);
226
- }
227
-
205
+ callbackFile === null || callbackFile === void 0 ? void 0 : callbackFile(finalFiles);
228
206
  _context2.next = 19;
229
207
  break;
230
208
 
@@ -251,10 +229,7 @@ var DxcFileInput = function DxcFileInput(_ref) {
251
229
 
252
230
  case 17:
253
231
  fileToAdd = _context2.t0;
254
-
255
- if (typeof callbackFile === "function") {
256
- callbackFile(fileToAdd);
257
- }
232
+ callbackFile === null || callbackFile === void 0 ? void 0 : callbackFile(fileToAdd);
258
233
 
259
234
  case 19:
260
235
  case "end":
@@ -275,19 +250,21 @@ var DxcFileInput = function DxcFileInput(_ref) {
275
250
  return selectedFiles[key];
276
251
  });
277
252
  addFile(filesArray);
253
+ e.target.value = null;
278
254
  };
279
255
 
280
- var onDelete = function onDelete(fileName) {
256
+ var onDelete = (0, _react.useCallback)(function (fileName) {
281
257
  var filesCopy = (0, _toConsumableArray2["default"])(files);
282
258
  var fileToRemove = filesCopy.find(function (file) {
283
259
  return file.file.name === fileName;
284
260
  });
285
261
  var fileIndex = filesCopy.indexOf(fileToRemove);
286
262
  filesCopy.splice(fileIndex, 1);
263
+ callbackFile === null || callbackFile === void 0 ? void 0 : callbackFile(filesCopy);
264
+ }, [files, callbackFile]);
287
265
 
288
- if (typeof callbackFile === "function") {
289
- callbackFile(filesCopy);
290
- }
266
+ var handleClick = function handleClick() {
267
+ document.getElementById(fileInputId).click();
291
268
  };
292
269
 
293
270
  var handleDrag = function handleDrag(e) {
@@ -296,18 +273,14 @@ var DxcFileInput = function DxcFileInput(_ref) {
296
273
  };
297
274
 
298
275
  var handleDragIn = function handleDragIn(e) {
299
- e.preventDefault();
300
- e.stopPropagation();
276
+ var _e$dataTransfer$items;
301
277
 
302
- if (e.dataTransfer.items && e.dataTransfer.items.length > 0) {
303
- setIsDragging(true);
304
- }
278
+ if (((_e$dataTransfer$items = e.dataTransfer.items) === null || _e$dataTransfer$items === void 0 ? void 0 : _e$dataTransfer$items.length) > 0) setIsDragging(true);
305
279
  };
306
280
 
307
281
  var handleDragOut = function handleDragOut(e) {
308
- e.preventDefault();
309
- e.stopPropagation();
310
- setIsDragging(false);
282
+ // only if dragged items leave container (outside, not to childs)
283
+ if (!e.currentTarget.contains(e.relatedTarget)) setIsDragging(false);
311
284
  };
312
285
 
313
286
  var handleDrop = function handleDrop(e) {
@@ -316,7 +289,7 @@ var DxcFileInput = function DxcFileInput(_ref) {
316
289
  setIsDragging(false);
317
290
  var filesObject = e.dataTransfer.files;
318
291
 
319
- if (filesObject && filesObject.length > 0) {
292
+ if ((filesObject === null || filesObject === void 0 ? void 0 : filesObject.length) > 0) {
320
293
  var filesArray = Object.keys(filesObject).map(function (key) {
321
294
  return filesObject[key];
322
295
  });
@@ -324,52 +297,125 @@ var DxcFileInput = function DxcFileInput(_ref) {
324
297
  }
325
298
  };
326
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]);
327
370
  return /*#__PURE__*/_react["default"].createElement(_styledComponents.ThemeProvider, {
328
371
  theme: colorsTheme.fileInput
329
372
  }, /*#__PURE__*/_react["default"].createElement(FileInputContainer, {
330
373
  margin: margin,
331
- name: name
374
+ name: name,
375
+ ref: ref
332
376
  }, /*#__PURE__*/_react["default"].createElement(Label, {
333
377
  htmlFor: fileInputId,
334
378
  disabled: disabled
335
379
  }, label), /*#__PURE__*/_react["default"].createElement(HelperText, {
336
380
  disabled: disabled
337
381
  }, helperText), mode === "file" ? /*#__PURE__*/_react["default"].createElement(FileContainer, {
382
+ singleFileMode: !multiple && files.length === 1
383
+ }, /*#__PURE__*/_react["default"].createElement(ValueInput, {
384
+ id: fileInputId,
385
+ type: "file",
386
+ accept: accept,
338
387
  multiple: multiple,
339
- files: files
340
- }, /*#__PURE__*/_react["default"].createElement(ButtonErrorContainer, null, /*#__PURE__*/_react["default"].createElement(_Button["default"], {
388
+ onChange: selectFiles,
389
+ disabled: disabled,
390
+ readOnly: true
391
+ }), /*#__PURE__*/_react["default"].createElement(_Button["default"], {
341
392
  mode: "secondary",
342
- label: "Select files",
393
+ label: buttonLabel !== null && buttonLabel !== void 0 ? buttonLabel : multiple ? translatedLabels.fileInput.multipleButtonLabelDefault : translatedLabels.fileInput.singleButtonLabelDefault,
343
394
  onClick: handleClick,
344
395
  disabled: disabled,
345
- size: "medium",
396
+ size: "fitContent",
346
397
  tabIndex: tabIndex
347
- }), /*#__PURE__*/_react["default"].createElement("input", {
348
- id: fileInputId,
349
- type: "file",
350
- accept: accept,
351
- multiple: multiple,
352
- onChange: selectFiles
353
- }), files.length === 1 && files.map(function (file) {
354
- return file.error && mode === "file" && !multiple && /*#__PURE__*/_react["default"].createElement(ErrorMessage, null, file.error);
355
- })), files.map(function (file) {
356
- return /*#__PURE__*/_react["default"].createElement(_react["default"].Fragment, null, /*#__PURE__*/_react["default"].createElement(FileItemContainer, {
357
- mode: mode,
358
- multiple: multiple,
359
- files: files
360
- }, /*#__PURE__*/_react["default"].createElement(_FileItem["default"], {
361
- mode: mode,
362
- multiple: multiple,
363
- 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,
364
401
  error: file.error,
402
+ singleFileMode: !multiple && files.length === 1,
365
403
  showPreview: mode === "file" && !multiple ? false : showPreview,
366
- numFiles: files.length,
367
404
  preview: file.preview,
368
405
  type: file.file.type,
369
406
  onDelete: onDelete,
370
- tabIndex: tabIndex
371
- })));
372
- })) : /*#__PURE__*/_react["default"].createElement(Container, null, /*#__PURE__*/_react["default"].createElement(DragDropArea, {
407
+ tabIndex: tabIndex,
408
+ key: "file-".concat(index)
409
+ });
410
+ }))) : /*#__PURE__*/_react["default"].createElement(Container, null, /*#__PURE__*/_react["default"].createElement(ValueInput, {
411
+ id: fileInputId,
412
+ type: "file",
413
+ accept: accept,
414
+ multiple: multiple,
415
+ onChange: selectFiles,
416
+ disabled: disabled,
417
+ readOnly: true
418
+ }), /*#__PURE__*/_react["default"].createElement(DragDropArea, {
373
419
  isDragging: isDragging,
374
420
  disabled: disabled,
375
421
  mode: mode,
@@ -377,41 +423,30 @@ var DxcFileInput = function DxcFileInput(_ref) {
377
423
  onDragEnter: handleDragIn,
378
424
  onDragOver: handleDrag,
379
425
  onDragLeave: handleDragOut
380
- }, /*#__PURE__*/_react["default"].createElement(ButtonContainer, {
381
- mode: mode
382
426
  }, /*#__PURE__*/_react["default"].createElement(_Button["default"], {
383
427
  mode: "secondary",
384
- label: "Select",
428
+ label: buttonLabel !== null && buttonLabel !== void 0 ? buttonLabel : translatedLabels.fileInput.dropAreaButtonLabelDefault,
385
429
  onClick: handleClick,
386
430
  disabled: disabled,
387
431
  size: "fitContent"
388
- }), /*#__PURE__*/_react["default"].createElement("input", {
389
- id: fileInputId,
390
- type: "file",
391
- accept: accept,
392
- multiple: multiple,
393
- onChange: selectFiles
394
- })), /*#__PURE__*/_react["default"].createElement(DropLabel, {
432
+ }), mode === "dropzone" ? /*#__PURE__*/_react["default"].createElement(DropzoneLabel, {
395
433
  disabled: disabled
396
- }, "or drop files")), files.map(function (file) {
397
- return /*#__PURE__*/_react["default"].createElement(FileItemContainer, {
398
- mode: mode,
399
- multiple: multiple,
400
- files: files
401
- }, /*#__PURE__*/_react["default"].createElement(_FileItem["default"], {
402
- mode: mode,
403
- multiple: multiple,
404
- name: file.file.name,
434
+ }, dropAreaLabel !== null && dropAreaLabel !== void 0 ? dropAreaLabel : multiple ? translatedLabels.fileInput.multipleDropAreaLabelDefault : translatedLabels.fileInput.singleDropAreaLabelDefault) : /*#__PURE__*/_react["default"].createElement(FiledropLabel, {
435
+ disabled: disabled
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,
405
439
  error: file.error,
440
+ singleFileMode: false,
406
441
  showPreview: showPreview,
407
- numFiles: files.length,
408
442
  preview: file.preview,
409
443
  type: file.file.type,
410
444
  onDelete: onDelete,
411
- tabIndex: tabIndex
412
- }));
413
- }))));
414
- };
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
+ });
415
450
 
416
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) {
417
452
  return props.margin && (0, _typeof2["default"])(props.margin) !== "object" ? _variables.spaces[props.margin] : "0px";
@@ -449,35 +484,35 @@ var HelperText = _styledComponents["default"].span(_templateObject3 || (_templat
449
484
  return props.theme.helperTextLineHeight;
450
485
  });
451
486
 
452
- var DragDropArea = _styledComponents["default"].div(_templateObject4 || (_templateObject4 = (0, _taggedTemplateLiteral2["default"])(["\n height: ", ";\n width: calc(320px - 2px);\n display: flex;\n flex-direction: ", ";\n align-items: center;\n border-radius: ", ";\n border-width: ", ";\n border-style: ", ";\n background-color: ", ";\n border-color: ", ";\n cursor: ", ";\n"])), function (props) {
453
- return props.mode === "filedrop" ? "calc(48px - 2px)" : "calc(160px - 2px)";
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;";
454
499
  }, function (props) {
455
- return props.mode === "filedrop" ? "row" : "column";
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";
456
501
  }, function (props) {
457
502
  return props.theme.dropBorderRadius;
458
503
  }, function (props) {
459
- return !props.isDragging ? props.theme.dropBorderThickness : "2px";
504
+ return props.theme.dropBorderThickness;
460
505
  }, function (props) {
461
- return !props.isDragging ? props.theme.dropBorderStyle : "solid";
506
+ return props.theme.dropBorderStyle;
462
507
  }, function (props) {
463
- return props.isDragging && props.theme.dragoverDropBackgroundColor;
508
+ return props.disabled ? props.theme.disabledDropBorderColor : props.theme.dropBorderColor;
464
509
  }, function (props) {
465
- return props.disabled ? props.theme.disabledDropBorderColor : props.isDragging ? props.theme.focusDropBorderColor : props.theme.dropBorderColor;
510
+ return props.isDragging && "\n background-color: ".concat(props.theme.dragoverDropBackgroundColor, ";\n border-color: transparent;\n box-shadow: 0 0 0 2px ").concat(props.theme.focusDropBorderColor, ";\n ");
466
511
  }, function (props) {
467
512
  return props.disabled && "not-allowed";
468
513
  });
469
514
 
470
- var FileContainer = _styledComponents["default"].div(_templateObject5 || (_templateObject5 = (0, _taggedTemplateLiteral2["default"])(["\n display: flex;\n flex-direction: ", ";\n"])), function (props) {
471
- return props.multiple || props.files.length > 1 ? "column" : "row";
472
- });
473
-
474
- var ButtonErrorContainer = _styledComponents["default"].div(_templateObject6 || (_templateObject6 = (0, _taggedTemplateLiteral2["default"])(["\n display: flex;\n flex-direction: column;\n margin-top: 0.25rem;\n\n input[type=\"file\"] {\n visibility: hidden;\n position: absolute;\n width: 0px;\n height: 0px;\n }\n"])));
475
-
476
- var ButtonContainer = _styledComponents["default"].div(_templateObject7 || (_templateObject7 = (0, _taggedTemplateLiteral2["default"])(["\n padding: ", ";\n input[type=\"file\"] {\n visibility: hidden;\n position: absolute;\n width: 0px;\n height: 0px;\n }\n"])), function (props) {
477
- return props.mode === "filedrop" ? "2px 12px 2px 2px" : "47px 122px 8px 122px";
478
- });
479
-
480
- var DropLabel = _styledComponents["default"].span(_templateObject8 || (_templateObject8 = (0, _taggedTemplateLiteral2["default"])(["\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) {
481
516
  return props.disabled ? props.theme.disabledDropLabelFontColor : props.theme.dropLabelFontColor;
482
517
  }, function (props) {
483
518
  return props.theme.dropLabelFontFamily;
@@ -487,15 +522,17 @@ var DropLabel = _styledComponents["default"].span(_templateObject8 || (_template
487
522
  return props.theme.dropLabelFontWeight;
488
523
  });
489
524
 
490
- var Container = _styledComponents["default"].div(_templateObject9 || (_templateObject9 = (0, _taggedTemplateLiteral2["default"])(["\n display: flex;\n flex-direction: column;\n margin-top: 0.25rem;\n"])));
491
-
492
- var FileItemContainer = _styledComponents["default"].div(_templateObject10 || (_templateObject10 = (0, _taggedTemplateLiteral2["default"])(["\n margin-top: ", ";\n margin-left: ", ";\n"])), function (props) {
493
- return (props.multiple || props.files.length > 1 || props.mode !== "file") && "4px";
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) {
526
+ return props.disabled ? props.theme.disabledDropLabelFontColor : props.theme.dropLabelFontColor;
494
527
  }, function (props) {
495
- return props.mode === "file" && props.files.length === 1 && !props.multiple && "4px";
528
+ return props.theme.dropLabelFontFamily;
529
+ }, function (props) {
530
+ return props.theme.dropLabelFontSize;
531
+ }, function (props) {
532
+ return props.theme.dropLabelFontWeight;
496
533
  });
497
534
 
498
- 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"])), 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) {
499
536
  return props.theme.errorMessageFontColor;
500
537
  }, function (props) {
501
538
  return props.theme.errorMessageFontFamily;