@dxc-technology/halstack-react 0.0.0-b22e2a8 → 0.0.0-b230d97

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 (294) 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 +300 -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.test.js +92 -0
  17. package/badge/Badge.d.ts +4 -0
  18. package/badge/Badge.js +6 -4
  19. package/badge/types.d.ts +5 -0
  20. package/{radio → badge}/types.js +0 -0
  21. package/bleed/Bleed.d.ts +3 -0
  22. package/bleed/Bleed.js +51 -0
  23. package/bleed/Bleed.stories.tsx +341 -0
  24. package/bleed/types.d.ts +37 -0
  25. package/bleed/types.js +5 -0
  26. package/box/Box.js +25 -35
  27. package/box/Box.test.js +18 -0
  28. package/box/types.d.ts +1 -0
  29. package/bulleted-list/BulletedList.d.ts +7 -0
  30. package/bulleted-list/BulletedList.js +123 -0
  31. package/bulleted-list/BulletedList.stories.tsx +200 -0
  32. package/bulleted-list/types.d.ts +11 -0
  33. package/bulleted-list/types.js +5 -0
  34. package/button/Button.d.ts +1 -1
  35. package/button/Button.js +59 -82
  36. package/button/Button.stories.tsx +163 -14
  37. package/button/Button.test.js +35 -0
  38. package/button/types.d.ts +10 -14
  39. package/card/Card.js +25 -28
  40. package/card/Card.stories.tsx +1 -1
  41. package/card/Card.test.js +50 -0
  42. package/card/types.d.ts +1 -0
  43. package/checkbox/Checkbox.d.ts +2 -2
  44. package/checkbox/Checkbox.js +108 -111
  45. package/checkbox/Checkbox.stories.tsx +198 -130
  46. package/checkbox/Checkbox.test.js +155 -0
  47. package/checkbox/types.d.ts +14 -6
  48. package/chip/Chip.d.ts +4 -0
  49. package/chip/Chip.js +22 -88
  50. package/chip/Chip.stories.tsx +98 -13
  51. package/chip/Chip.test.js +56 -0
  52. package/chip/types.d.ts +45 -0
  53. package/chip/types.js +5 -0
  54. package/common/variables.js +511 -569
  55. package/date-input/Calendar.d.ts +4 -0
  56. package/date-input/Calendar.js +258 -0
  57. package/date-input/DateInput.js +174 -266
  58. package/date-input/DateInput.stories.tsx +137 -38
  59. package/date-input/DateInput.test.js +835 -0
  60. package/date-input/DatePicker.d.ts +4 -0
  61. package/date-input/DatePicker.js +146 -0
  62. package/date-input/Icons.d.ts +6 -0
  63. package/date-input/Icons.js +75 -0
  64. package/date-input/YearPicker.d.ts +4 -0
  65. package/date-input/YearPicker.js +126 -0
  66. package/date-input/types.d.ts +67 -9
  67. package/dialog/Dialog.js +50 -53
  68. package/dialog/Dialog.stories.tsx +57 -2
  69. package/dialog/Dialog.test.js +70 -0
  70. package/dialog/types.d.ts +3 -2
  71. package/dropdown/Dropdown.d.ts +1 -1
  72. package/dropdown/Dropdown.js +248 -277
  73. package/dropdown/Dropdown.stories.tsx +438 -0
  74. package/dropdown/Dropdown.test.js +585 -0
  75. package/dropdown/DropdownMenu.d.ts +4 -0
  76. package/dropdown/DropdownMenu.js +70 -0
  77. package/dropdown/DropdownMenuItem.d.ts +4 -0
  78. package/dropdown/DropdownMenuItem.js +81 -0
  79. package/dropdown/types.d.ts +30 -19
  80. package/file-input/FileInput.d.ts +2 -2
  81. package/file-input/FileInput.js +182 -142
  82. package/file-input/FileInput.stories.tsx +618 -0
  83. package/file-input/FileInput.test.js +498 -0
  84. package/file-input/FileItem.d.ts +4 -14
  85. package/file-input/FileItem.js +46 -67
  86. package/file-input/types.d.ts +49 -7
  87. package/flex/Flex.d.ts +4 -0
  88. package/flex/Flex.js +69 -0
  89. package/flex/Flex.stories.tsx +103 -0
  90. package/flex/types.d.ts +32 -0
  91. package/flex/types.js +5 -0
  92. package/footer/Footer.d.ts +1 -1
  93. package/footer/Footer.js +32 -113
  94. package/footer/Footer.stories.tsx +228 -0
  95. package/footer/Footer.test.js +109 -0
  96. package/footer/Icons.d.ts +2 -0
  97. package/footer/Icons.js +4 -4
  98. package/footer/types.d.ts +22 -17
  99. package/header/Header.js +109 -130
  100. package/header/Header.stories.tsx +167 -36
  101. package/header/Header.test.js +79 -0
  102. package/header/Icons.d.ts +2 -0
  103. package/header/Icons.js +2 -2
  104. package/header/types.d.ts +3 -2
  105. package/heading/Heading.js +1 -1
  106. package/heading/Heading.stories.tsx +3 -2
  107. package/heading/Heading.test.js +186 -0
  108. package/inset/Inset.d.ts +3 -0
  109. package/inset/Inset.js +51 -0
  110. package/inset/Inset.stories.tsx +229 -0
  111. package/inset/types.d.ts +37 -0
  112. package/inset/types.js +5 -0
  113. package/layout/ApplicationLayout.d.ts +20 -0
  114. package/layout/ApplicationLayout.js +71 -135
  115. package/layout/ApplicationLayout.stories.tsx +162 -0
  116. package/layout/Icons.d.ts +5 -0
  117. package/layout/Icons.js +13 -2
  118. package/layout/SidenavContext.d.ts +5 -0
  119. package/layout/SidenavContext.js +19 -0
  120. package/layout/types.d.ts +42 -0
  121. package/layout/types.js +5 -0
  122. package/link/Link.d.ts +3 -2
  123. package/link/Link.js +62 -87
  124. package/link/Link.stories.tsx +99 -52
  125. package/link/Link.test.js +83 -0
  126. package/link/types.d.ts +9 -29
  127. package/main.d.ts +12 -12
  128. package/main.js +64 -58
  129. package/number-input/NumberInput.js +14 -24
  130. package/number-input/NumberInput.stories.tsx +5 -5
  131. package/number-input/NumberInput.test.js +542 -0
  132. package/number-input/types.d.ts +17 -10
  133. package/package.json +21 -22
  134. package/paginator/Icons.d.ts +5 -0
  135. package/paginator/Icons.js +16 -28
  136. package/paginator/Paginator.js +21 -54
  137. package/paginator/Paginator.stories.tsx +24 -0
  138. package/paginator/Paginator.test.js +315 -0
  139. package/paragraph/Paragraph.d.ts +6 -0
  140. package/paragraph/Paragraph.js +38 -0
  141. package/paragraph/Paragraph.stories.tsx +44 -0
  142. package/password-input/PasswordInput.js +23 -19
  143. package/password-input/PasswordInput.stories.tsx +3 -3
  144. package/password-input/PasswordInput.test.js +181 -0
  145. package/password-input/types.d.ts +26 -21
  146. package/progress-bar/ProgressBar.d.ts +2 -2
  147. package/progress-bar/ProgressBar.js +59 -53
  148. package/progress-bar/ProgressBar.stories.jsx +45 -12
  149. package/progress-bar/ProgressBar.test.js +110 -0
  150. package/progress-bar/types.d.ts +3 -4
  151. package/quick-nav/QuickNav.d.ts +4 -0
  152. package/quick-nav/QuickNav.js +117 -0
  153. package/quick-nav/QuickNav.stories.tsx +356 -0
  154. package/quick-nav/types.d.ts +21 -0
  155. package/quick-nav/types.js +5 -0
  156. package/radio-group/Radio.d.ts +4 -0
  157. package/radio-group/Radio.js +156 -0
  158. package/radio-group/RadioGroup.d.ts +4 -0
  159. package/radio-group/RadioGroup.js +283 -0
  160. package/radio-group/RadioGroup.stories.tsx +214 -0
  161. package/radio-group/RadioGroup.test.js +722 -0
  162. package/radio-group/types.d.ts +114 -0
  163. package/radio-group/types.js +5 -0
  164. package/resultsetTable/Icons.d.ts +7 -0
  165. package/resultsetTable/Icons.js +51 -0
  166. package/resultsetTable/ResultsetTable.d.ts +1 -1
  167. package/resultsetTable/ResultsetTable.js +53 -107
  168. package/resultsetTable/ResultsetTable.stories.tsx +300 -0
  169. package/resultsetTable/ResultsetTable.test.js +325 -0
  170. package/resultsetTable/types.d.ts +8 -4
  171. package/select/Icons.d.ts +10 -0
  172. package/select/Icons.js +93 -0
  173. package/select/Listbox.d.ts +4 -0
  174. package/select/Listbox.js +169 -0
  175. package/select/Option.d.ts +4 -0
  176. package/select/Option.js +97 -0
  177. package/select/Select.d.ts +4 -0
  178. package/select/Select.js +196 -397
  179. package/select/Select.stories.tsx +600 -201
  180. package/select/Select.test.js +2228 -0
  181. package/select/types.d.ts +210 -0
  182. package/select/types.js +5 -0
  183. package/sidenav/Sidenav.d.ts +6 -5
  184. package/sidenav/Sidenav.js +184 -54
  185. package/sidenav/Sidenav.stories.tsx +249 -132
  186. package/sidenav/Sidenav.test.js +44 -0
  187. package/sidenav/types.d.ts +50 -27
  188. package/slider/Slider.d.ts +2 -2
  189. package/slider/Slider.js +124 -98
  190. package/slider/Slider.stories.tsx +72 -9
  191. package/slider/Slider.test.js +250 -0
  192. package/slider/types.d.ts +10 -2
  193. package/spinner/Spinner.js +5 -5
  194. package/spinner/Spinner.stories.jsx +27 -0
  195. package/spinner/Spinner.test.js +64 -0
  196. package/switch/Switch.d.ts +2 -2
  197. package/switch/Switch.js +152 -69
  198. package/switch/Switch.stories.tsx +54 -43
  199. package/switch/Switch.test.js +225 -0
  200. package/switch/types.d.ts +12 -4
  201. package/table/Table.js +3 -3
  202. package/table/Table.stories.jsx +81 -1
  203. package/table/Table.test.js +26 -0
  204. package/tabs/Tab.d.ts +4 -0
  205. package/tabs/Tab.js +133 -0
  206. package/tabs/Tabs.d.ts +1 -1
  207. package/tabs/Tabs.js +364 -110
  208. package/tabs/Tabs.stories.tsx +226 -0
  209. package/tabs/Tabs.test.js +351 -0
  210. package/tabs/types.d.ts +39 -17
  211. package/tabs-nav/NavTabs.d.ts +8 -0
  212. package/tabs-nav/NavTabs.js +125 -0
  213. package/tabs-nav/NavTabs.stories.tsx +172 -0
  214. package/tabs-nav/NavTabs.test.js +82 -0
  215. package/tabs-nav/Tab.d.ts +4 -0
  216. package/tabs-nav/Tab.js +128 -0
  217. package/tabs-nav/types.d.ts +53 -0
  218. package/tabs-nav/types.js +5 -0
  219. package/tag/Tag.d.ts +1 -1
  220. package/tag/Tag.js +19 -29
  221. package/tag/Tag.stories.tsx +26 -29
  222. package/tag/Tag.test.js +60 -0
  223. package/tag/types.d.ts +23 -14
  224. package/text-input/Icons.d.ts +8 -0
  225. package/text-input/Icons.js +60 -0
  226. package/text-input/Suggestion.d.ts +4 -0
  227. package/text-input/Suggestion.js +84 -0
  228. package/text-input/Suggestions.d.ts +4 -0
  229. package/text-input/Suggestions.js +134 -0
  230. package/text-input/TextInput.js +231 -343
  231. package/text-input/TextInput.stories.tsx +569 -0
  232. package/text-input/TextInput.test.js +1724 -0
  233. package/text-input/types.d.ts +63 -23
  234. package/textarea/Textarea.d.ts +4 -0
  235. package/textarea/Textarea.js +39 -79
  236. package/textarea/Textarea.stories.jsx +37 -15
  237. package/textarea/Textarea.test.js +437 -0
  238. package/textarea/types.d.ts +137 -0
  239. package/textarea/types.js +5 -0
  240. package/toggle-group/ToggleGroup.d.ts +4 -0
  241. package/toggle-group/ToggleGroup.js +18 -46
  242. package/toggle-group/ToggleGroup.stories.tsx +69 -32
  243. package/toggle-group/ToggleGroup.test.js +156 -0
  244. package/toggle-group/types.d.ts +105 -0
  245. package/toggle-group/types.js +5 -0
  246. package/typography/Typography.d.ts +4 -0
  247. package/typography/Typography.js +131 -0
  248. package/typography/Typography.stories.tsx +198 -0
  249. package/typography/types.d.ts +18 -0
  250. package/typography/types.js +5 -0
  251. package/useTheme.d.ts +2 -0
  252. package/useTheme.js +2 -2
  253. package/useTranslatedLabels.d.ts +2 -0
  254. package/useTranslatedLabels.js +20 -0
  255. package/wizard/Wizard.d.ts +1 -1
  256. package/wizard/Wizard.js +112 -58
  257. package/wizard/{Wizard.stories.jsx → Wizard.stories.tsx} +48 -19
  258. package/wizard/Wizard.test.js +141 -0
  259. package/wizard/types.d.ts +13 -12
  260. package/ThemeContext.js +0 -246
  261. package/V3Select/V3Select.js +0 -455
  262. package/V3Select/index.d.ts +0 -27
  263. package/V3Textarea/V3Textarea.js +0 -260
  264. package/V3Textarea/index.d.ts +0 -27
  265. package/chip/index.d.ts +0 -22
  266. package/common/RequiredComponent.js +0 -32
  267. package/date/Date.js +0 -373
  268. package/date/index.d.ts +0 -27
  269. package/footer/Footer.stories.jsx +0 -151
  270. package/input-text/Icons.js +0 -22
  271. package/input-text/InputText.js +0 -611
  272. package/input-text/index.d.ts +0 -36
  273. package/radio/Radio.d.ts +0 -4
  274. package/radio/Radio.js +0 -174
  275. package/radio/Radio.stories.tsx +0 -192
  276. package/radio/types.d.ts +0 -54
  277. package/select/index.d.ts +0 -131
  278. package/textarea/index.d.ts +0 -117
  279. package/toggle/Toggle.js +0 -186
  280. package/toggle/index.d.ts +0 -21
  281. package/toggle-group/index.d.ts +0 -21
  282. package/upload/Upload.js +0 -201
  283. package/upload/buttons-upload/ButtonsUpload.js +0 -111
  284. package/upload/buttons-upload/Icons.js +0 -40
  285. package/upload/dragAndDropArea/DragAndDropArea.js +0 -225
  286. package/upload/dragAndDropArea/Icons.js +0 -39
  287. package/upload/file-upload/FileToUpload.js +0 -115
  288. package/upload/file-upload/Icons.js +0 -66
  289. package/upload/files-upload/FilesToUpload.js +0 -109
  290. package/upload/index.d.ts +0 -15
  291. package/upload/transaction/Icons.js +0 -160
  292. package/upload/transaction/Transaction.js +0 -104
  293. package/upload/transactions/Transactions.js +0 -94
  294. package/wizard/Icons.js +0 -65
@@ -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":
@@ -277,17 +252,18 @@ var DxcFileInput = function DxcFileInput(_ref) {
277
252
  addFile(filesArray);
278
253
  };
279
254
 
280
- var onDelete = function onDelete(fileName) {
255
+ var onDelete = (0, _react.useCallback)(function (fileName) {
281
256
  var filesCopy = (0, _toConsumableArray2["default"])(files);
282
257
  var fileToRemove = filesCopy.find(function (file) {
283
258
  return file.file.name === fileName;
284
259
  });
285
260
  var fileIndex = filesCopy.indexOf(fileToRemove);
286
261
  filesCopy.splice(fileIndex, 1);
262
+ callbackFile === null || callbackFile === void 0 ? void 0 : callbackFile(filesCopy);
263
+ }, [files, callbackFile]);
287
264
 
288
- if (typeof callbackFile === "function") {
289
- callbackFile(filesCopy);
290
- }
265
+ var handleClick = function handleClick() {
266
+ document.getElementById(fileInputId).click();
291
267
  };
292
268
 
293
269
  var handleDrag = function handleDrag(e) {
@@ -296,18 +272,14 @@ var DxcFileInput = function DxcFileInput(_ref) {
296
272
  };
297
273
 
298
274
  var handleDragIn = function handleDragIn(e) {
299
- e.preventDefault();
300
- e.stopPropagation();
275
+ var _e$dataTransfer$items;
301
276
 
302
- if (e.dataTransfer.items && e.dataTransfer.items.length > 0) {
303
- setIsDragging(true);
304
- }
277
+ if (((_e$dataTransfer$items = e.dataTransfer.items) === null || _e$dataTransfer$items === void 0 ? void 0 : _e$dataTransfer$items.length) > 0) setIsDragging(true);
305
278
  };
306
279
 
307
280
  var handleDragOut = function handleDragOut(e) {
308
- e.preventDefault();
309
- e.stopPropagation();
310
- setIsDragging(false);
281
+ // only if dragged items leave container (outside, not to childs)
282
+ if (!e.currentTarget.contains(e.relatedTarget)) setIsDragging(false);
311
283
  };
312
284
 
313
285
  var handleDrop = function handleDrop(e) {
@@ -316,7 +288,7 @@ var DxcFileInput = function DxcFileInput(_ref) {
316
288
  setIsDragging(false);
317
289
  var filesObject = e.dataTransfer.files;
318
290
 
319
- if (filesObject && filesObject.length > 0) {
291
+ if ((filesObject === null || filesObject === void 0 ? void 0 : filesObject.length) > 0) {
320
292
  var filesArray = Object.keys(filesObject).map(function (key) {
321
293
  return filesObject[key];
322
294
  });
@@ -324,52 +296,129 @@ var DxcFileInput = function DxcFileInput(_ref) {
324
296
  }
325
297
  };
326
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]);
327
369
  return /*#__PURE__*/_react["default"].createElement(_styledComponents.ThemeProvider, {
328
370
  theme: colorsTheme.fileInput
329
371
  }, /*#__PURE__*/_react["default"].createElement(FileInputContainer, {
330
372
  margin: margin,
331
- name: name
373
+ name: name,
374
+ ref: ref
332
375
  }, /*#__PURE__*/_react["default"].createElement(Label, {
333
376
  htmlFor: fileInputId,
334
377
  disabled: disabled
335
378
  }, label), /*#__PURE__*/_react["default"].createElement(HelperText, {
336
379
  disabled: disabled
337
380
  }, helperText), mode === "file" ? /*#__PURE__*/_react["default"].createElement(FileContainer, {
381
+ singleFileMode: !multiple && files.length === 1
382
+ }, /*#__PURE__*/_react["default"].createElement(ValueInput, {
383
+ id: fileInputId,
384
+ type: "file",
385
+ accept: accept,
338
386
  multiple: multiple,
339
- files: files
340
- }, /*#__PURE__*/_react["default"].createElement(ButtonErrorContainer, null, /*#__PURE__*/_react["default"].createElement(_Button["default"], {
387
+ onChange: selectFiles,
388
+ name: name,
389
+ disabled: disabled,
390
+ readOnly: true,
391
+ "aria-hidden": "true"
392
+ }), /*#__PURE__*/_react["default"].createElement(_Button["default"], {
341
393
  mode: "secondary",
342
- label: "Select files",
394
+ label: buttonLabel !== null && buttonLabel !== void 0 ? buttonLabel : multiple ? translatedLabels.fileInput.multipleButtonLabelDefault : translatedLabels.fileInput.singleButtonLabelDefault,
343
395
  onClick: handleClick,
344
396
  disabled: disabled,
345
- size: "medium",
397
+ size: "fitContent",
346
398
  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,
399
+ }), files.length > 0 && /*#__PURE__*/_react["default"].createElement(FileItemListContainer, null, files.map(function (file, index) {
400
+ return /*#__PURE__*/_react["default"].createElement(_FileItem["default"], {
401
+ fileName: file.file.name,
364
402
  error: file.error,
403
+ singleFileMode: !multiple && files.length === 1,
365
404
  showPreview: mode === "file" && !multiple ? false : showPreview,
366
- numFiles: files.length,
367
405
  preview: file.preview,
368
406
  type: file.file.type,
369
407
  onDelete: onDelete,
370
- tabIndex: tabIndex
371
- })));
372
- })) : /*#__PURE__*/_react["default"].createElement(Container, null, /*#__PURE__*/_react["default"].createElement(DragDropArea, {
408
+ tabIndex: tabIndex,
409
+ key: "file-".concat(index)
410
+ });
411
+ }))) : /*#__PURE__*/_react["default"].createElement(Container, null, /*#__PURE__*/_react["default"].createElement(ValueInput, {
412
+ id: fileInputId,
413
+ type: "file",
414
+ accept: accept,
415
+ multiple: multiple,
416
+ onChange: selectFiles,
417
+ name: name,
418
+ disabled: disabled,
419
+ readOnly: true,
420
+ "aria-hidden": "true"
421
+ }), /*#__PURE__*/_react["default"].createElement(DragDropArea, {
373
422
  isDragging: isDragging,
374
423
  disabled: disabled,
375
424
  mode: mode,
@@ -377,41 +426,30 @@ var DxcFileInput = function DxcFileInput(_ref) {
377
426
  onDragEnter: handleDragIn,
378
427
  onDragOver: handleDrag,
379
428
  onDragLeave: handleDragOut
380
- }, /*#__PURE__*/_react["default"].createElement(ButtonContainer, {
381
- mode: mode
382
429
  }, /*#__PURE__*/_react["default"].createElement(_Button["default"], {
383
430
  mode: "secondary",
384
- label: "Select",
431
+ label: buttonLabel !== null && buttonLabel !== void 0 ? buttonLabel : translatedLabels.fileInput.dropAreaButtonLabelDefault,
385
432
  onClick: handleClick,
386
433
  disabled: disabled,
387
434
  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, {
435
+ }), mode === "dropzone" ? /*#__PURE__*/_react["default"].createElement(DropzoneLabel, {
395
436
  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,
437
+ }, dropAreaLabel !== null && dropAreaLabel !== void 0 ? dropAreaLabel : multiple ? translatedLabels.fileInput.multipleDropAreaLabelDefault : translatedLabels.fileInput.singleDropAreaLabelDefault) : /*#__PURE__*/_react["default"].createElement(FiledropLabel, {
438
+ disabled: disabled
439
+ }, 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) {
440
+ return /*#__PURE__*/_react["default"].createElement(_FileItem["default"], {
441
+ fileName: file.file.name,
405
442
  error: file.error,
443
+ singleFileMode: false,
406
444
  showPreview: showPreview,
407
- numFiles: files.length,
408
445
  preview: file.preview,
409
446
  type: file.file.type,
410
447
  onDelete: onDelete,
411
- tabIndex: tabIndex
412
- }));
413
- }))));
414
- };
448
+ tabIndex: tabIndex,
449
+ key: "file-".concat(index)
450
+ });
451
+ }))), mode === "file" && !multiple && files.length === 1 && files[0].error && /*#__PURE__*/_react["default"].createElement(ErrorMessage, null, files[0].error)));
452
+ });
415
453
 
416
454
  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
455
  return props.margin && (0, _typeof2["default"])(props.margin) !== "object" ? _variables.spaces[props.margin] : "0px";
@@ -449,35 +487,35 @@ var HelperText = _styledComponents["default"].span(_templateObject3 || (_templat
449
487
  return props.theme.helperTextLineHeight;
450
488
  });
451
489
 
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)";
490
+ var FileContainer = _styledComponents["default"].div(_templateObject4 || (_templateObject4 = (0, _taggedTemplateLiteral2["default"])(["\n display: flex;\n ", "\n margin-top: 0.25rem;\n"])), function (props) {
491
+ return props.singleFileMode ? "flex-direction: row; column-gap: 0.25rem;" : "flex-direction: column; row-gap: 0.25rem;";
492
+ });
493
+
494
+ var ValueInput = _styledComponents["default"].input(_templateObject5 || (_templateObject5 = (0, _taggedTemplateLiteral2["default"])(["\n display: none;\n"])));
495
+
496
+ var FileItemListContainer = _styledComponents["default"].div(_templateObject6 || (_templateObject6 = (0, _taggedTemplateLiteral2["default"])(["\n display: flex;\n flex-direction: column;\n row-gap: 0.25rem;\n"])));
497
+
498
+ 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"])));
499
+
500
+ 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) {
501
+ 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
502
  }, function (props) {
455
- return props.mode === "filedrop" ? "row" : "column";
503
+ 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
504
  }, function (props) {
457
505
  return props.theme.dropBorderRadius;
458
506
  }, function (props) {
459
- return !props.isDragging ? props.theme.dropBorderThickness : "2px";
507
+ return props.theme.dropBorderThickness;
460
508
  }, function (props) {
461
- return !props.isDragging ? props.theme.dropBorderStyle : "solid";
509
+ return props.theme.dropBorderStyle;
462
510
  }, function (props) {
463
- return props.isDragging && props.theme.dragoverDropBackgroundColor;
511
+ return props.disabled ? props.theme.disabledDropBorderColor : props.theme.dropBorderColor;
464
512
  }, function (props) {
465
- return props.disabled ? props.theme.disabledDropBorderColor : props.isDragging ? props.theme.focusDropBorderColor : props.theme.dropBorderColor;
513
+ 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
514
  }, function (props) {
467
515
  return props.disabled && "not-allowed";
468
516
  });
469
517
 
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) {
518
+ 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
519
  return props.disabled ? props.theme.disabledDropLabelFontColor : props.theme.dropLabelFontColor;
482
520
  }, function (props) {
483
521
  return props.theme.dropLabelFontFamily;
@@ -487,15 +525,17 @@ var DropLabel = _styledComponents["default"].span(_templateObject8 || (_template
487
525
  return props.theme.dropLabelFontWeight;
488
526
  });
489
527
 
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";
528
+ 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) {
529
+ return props.disabled ? props.theme.disabledDropLabelFontColor : props.theme.dropLabelFontColor;
494
530
  }, function (props) {
495
- return props.mode === "file" && props.files.length === 1 && !props.multiple && "4px";
531
+ return props.theme.dropLabelFontFamily;
532
+ }, function (props) {
533
+ return props.theme.dropLabelFontSize;
534
+ }, function (props) {
535
+ return props.theme.dropLabelFontWeight;
496
536
  });
497
537
 
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) {
538
+ 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
539
  return props.theme.errorMessageFontColor;
500
540
  }, function (props) {
501
541
  return props.theme.errorMessageFontFamily;