@dxc-technology/halstack-react 0.0.0-c1253f5 → 0.0.0-c18d61a
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/accordion/Accordion.js +122 -103
- package/accordion/Accordion.stories.tsx +1 -2
- package/accordion/Accordion.test.js +9 -10
- package/accordion/types.d.ts +5 -4
- package/accordion-group/AccordionGroup.js +1 -21
- package/accordion-group/AccordionGroup.stories.tsx +27 -1
- package/accordion-group/AccordionGroup.test.js +20 -45
- package/accordion-group/types.d.ts +10 -3
- package/alert/Alert.js +1 -1
- package/box/Box.js +1 -1
- package/box/types.d.ts +1 -0
- package/bulleted-list/types.d.ts +1 -1
- package/button/types.d.ts +1 -1
- package/card/types.d.ts +1 -0
- package/checkbox/Checkbox.js +87 -95
- package/checkbox/Checkbox.test.js +93 -16
- package/checkbox/types.d.ts +2 -2
- package/chip/types.d.ts +1 -1
- package/common/variables.js +26 -14
- package/date-input/DateInput.js +3 -3
- package/dialog/Dialog.js +52 -28
- package/dialog/Dialog.stories.tsx +57 -2
- package/dialog/Dialog.test.js +34 -4
- package/dialog/types.d.ts +3 -2
- package/dropdown/Dropdown.d.ts +1 -1
- package/dropdown/Dropdown.js +244 -247
- package/dropdown/Dropdown.stories.tsx +126 -63
- package/dropdown/Dropdown.test.js +509 -108
- package/dropdown/DropdownMenu.d.ts +4 -0
- package/dropdown/DropdownMenu.js +80 -0
- package/dropdown/DropdownMenuItem.d.ts +4 -0
- package/dropdown/DropdownMenuItem.js +92 -0
- package/dropdown/types.d.ts +25 -5
- package/file-input/FileInput.js +168 -190
- package/file-input/FileInput.stories.tsx +38 -6
- package/file-input/FileInput.test.js +41 -0
- package/file-input/FileItem.d.ts +4 -4
- package/file-input/FileItem.js +24 -36
- package/flex/Flex.d.ts +1 -1
- package/flex/Flex.js +31 -19
- package/flex/types.d.ts +14 -3
- package/footer/Footer.stories.tsx +8 -1
- package/footer/types.d.ts +2 -1
- package/header/Header.js +74 -72
- package/header/Header.stories.tsx +4 -4
- package/header/Icons.js +2 -2
- package/header/types.d.ts +3 -2
- package/layout/ApplicationLayout.stories.tsx +1 -0
- package/link/types.d.ts +1 -1
- package/number-input/NumberInput.test.js +38 -1
- package/package.json +10 -10
- package/paginator/Paginator.js +2 -2
- package/paginator/Paginator.test.js +1 -1
- package/password-input/PasswordInput.test.js +13 -12
- package/progress-bar/ProgressBar.d.ts +2 -2
- package/progress-bar/ProgressBar.js +56 -50
- package/progress-bar/ProgressBar.stories.jsx +3 -1
- package/progress-bar/ProgressBar.test.js +67 -22
- package/progress-bar/types.d.ts +3 -4
- package/quick-nav/QuickNav.js +11 -12
- package/quick-nav/QuickNav.stories.tsx +97 -19
- package/radio-group/Radio.d.ts +1 -1
- package/radio-group/Radio.js +43 -28
- package/radio-group/RadioGroup.js +24 -24
- package/radio-group/RadioGroup.stories.tsx +1 -0
- package/radio-group/RadioGroup.test.js +123 -96
- package/radio-group/types.d.ts +2 -2
- package/resultsetTable/ResultsetTable.js +1 -3
- package/select/Listbox.d.ts +1 -1
- package/select/Listbox.js +25 -2
- package/select/Select.js +17 -32
- package/select/Select.stories.tsx +6 -5
- package/select/Select.test.js +321 -250
- package/select/types.d.ts +2 -4
- package/sidenav/types.d.ts +1 -1
- package/slider/Slider.js +116 -92
- package/slider/Slider.stories.tsx +7 -1
- package/slider/Slider.test.js +121 -21
- package/slider/types.d.ts +2 -2
- package/switch/Switch.d.ts +1 -1
- package/switch/Switch.js +132 -66
- package/switch/Switch.stories.tsx +8 -30
- package/switch/Switch.test.js +144 -17
- package/switch/types.d.ts +3 -4
- package/table/Table.js +1 -1
- package/tabs/Tab.d.ts +4 -0
- package/tabs/Tab.js +135 -0
- package/tabs/Tabs.js +360 -104
- package/tabs/Tabs.stories.tsx +74 -0
- package/tabs/Tabs.test.js +217 -6
- package/tabs/types.d.ts +15 -5
- package/tabs-nav/NavTabs.js +5 -5
- package/tabs-nav/Tab.js +3 -5
- package/tabs-nav/types.d.ts +1 -1
- package/tag/Tag.js +1 -1
- package/tag/types.d.ts +1 -1
- package/text-input/Icons.d.ts +8 -0
- package/text-input/Icons.js +60 -0
- package/text-input/Suggestion.js +7 -5
- package/text-input/Suggestions.d.ts +4 -0
- package/text-input/Suggestions.js +134 -0
- package/text-input/TextInput.js +189 -282
- package/text-input/TextInput.stories.tsx +189 -182
- package/text-input/TextInput.test.js +222 -163
- package/text-input/types.d.ts +22 -3
- package/toggle-group/types.d.ts +1 -1
- package/wizard/types.d.ts +1 -1
package/file-input/FileInput.js
CHANGED
|
@@ -15,10 +15,10 @@ var _taggedTemplateLiteral2 = _interopRequireDefault(require("@babel/runtime/hel
|
|
|
15
15
|
|
|
16
16
|
var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
|
|
17
17
|
|
|
18
|
-
var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));
|
|
19
|
-
|
|
20
18
|
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
|
|
21
19
|
|
|
20
|
+
var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));
|
|
21
|
+
|
|
22
22
|
var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
|
|
23
23
|
|
|
24
24
|
var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
|
|
@@ -88,6 +88,17 @@ var fileIcon = /*#__PURE__*/_react["default"].createElement("svg", {
|
|
|
88
88
|
d: "M14 2H6c-1.1 0-1.99.9-1.99 2L4 20c0 1.1.89 2 1.99 2H18c1.1 0 2-.9 2-2V8l-6-6zM6 20V4h7v5h5v11H6z"
|
|
89
89
|
}));
|
|
90
90
|
|
|
91
|
+
var getFilePreview = function getFilePreview(file) {
|
|
92
|
+
if (file.type.includes("video")) return videoIcon;else if (file.type.includes("audio")) return audioIcon;else if (file.type.includes("image")) return new Promise(function (resolve) {
|
|
93
|
+
var reader = new FileReader();
|
|
94
|
+
reader.readAsDataURL(file);
|
|
95
|
+
|
|
96
|
+
reader.onload = function (e) {
|
|
97
|
+
resolve(e.target.result);
|
|
98
|
+
};
|
|
99
|
+
});else return fileIcon;
|
|
100
|
+
};
|
|
101
|
+
|
|
91
102
|
var DxcFileInput = function DxcFileInput(_ref) {
|
|
92
103
|
var _ref$name = _ref.name,
|
|
93
104
|
name = _ref$name === void 0 ? "" : _ref$name,
|
|
@@ -130,129 +141,26 @@ var DxcFileInput = function DxcFileInput(_ref) {
|
|
|
130
141
|
|
|
131
142
|
var colorsTheme = (0, _useTheme["default"])();
|
|
132
143
|
var translatedLabels = (0, _useTranslatedLabels["default"])();
|
|
133
|
-
(0, _react.useEffect)(function () {
|
|
134
|
-
var getFiles = /*#__PURE__*/function () {
|
|
135
|
-
var _ref2 = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee2() {
|
|
136
|
-
var valueFiles;
|
|
137
|
-
return _regenerator["default"].wrap(function _callee2$(_context2) {
|
|
138
|
-
while (1) {
|
|
139
|
-
switch (_context2.prev = _context2.next) {
|
|
140
|
-
case 0:
|
|
141
|
-
if (!value) {
|
|
142
|
-
_context2.next = 5;
|
|
143
|
-
break;
|
|
144
|
-
}
|
|
145
|
-
|
|
146
|
-
_context2.next = 3;
|
|
147
|
-
return Promise.all(value.map( /*#__PURE__*/function () {
|
|
148
|
-
var _ref3 = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee(file) {
|
|
149
|
-
var preview;
|
|
150
|
-
return _regenerator["default"].wrap(function _callee$(_context) {
|
|
151
|
-
while (1) {
|
|
152
|
-
switch (_context.prev = _context.next) {
|
|
153
|
-
case 0:
|
|
154
|
-
if (!file.preview) {
|
|
155
|
-
_context.next = 4;
|
|
156
|
-
break;
|
|
157
|
-
}
|
|
158
|
-
|
|
159
|
-
return _context.abrupt("return", file);
|
|
160
|
-
|
|
161
|
-
case 4:
|
|
162
|
-
_context.next = 6;
|
|
163
|
-
return getFilePreview(file.file);
|
|
164
|
-
|
|
165
|
-
case 6:
|
|
166
|
-
preview = _context.sent;
|
|
167
|
-
return _context.abrupt("return", _objectSpread(_objectSpread({}, file), {}, {
|
|
168
|
-
preview: preview
|
|
169
|
-
}));
|
|
170
|
-
|
|
171
|
-
case 8:
|
|
172
|
-
case "end":
|
|
173
|
-
return _context.stop();
|
|
174
|
-
}
|
|
175
|
-
}
|
|
176
|
-
}, _callee);
|
|
177
|
-
}));
|
|
178
|
-
|
|
179
|
-
return function (_x) {
|
|
180
|
-
return _ref3.apply(this, arguments);
|
|
181
|
-
};
|
|
182
|
-
}()));
|
|
183
|
-
|
|
184
|
-
case 3:
|
|
185
|
-
valueFiles = _context2.sent;
|
|
186
|
-
setFiles(valueFiles);
|
|
187
|
-
|
|
188
|
-
case 5:
|
|
189
|
-
case "end":
|
|
190
|
-
return _context2.stop();
|
|
191
|
-
}
|
|
192
|
-
}
|
|
193
|
-
}, _callee2);
|
|
194
|
-
}));
|
|
195
|
-
|
|
196
|
-
return function getFiles() {
|
|
197
|
-
return _ref2.apply(this, arguments);
|
|
198
|
-
};
|
|
199
|
-
}();
|
|
200
|
-
|
|
201
|
-
getFiles();
|
|
202
|
-
}, [value]);
|
|
203
|
-
|
|
204
|
-
var handleClick = function handleClick() {
|
|
205
|
-
document.getElementById(fileInputId).click();
|
|
206
|
-
};
|
|
207
144
|
|
|
208
145
|
var checkFileSize = function checkFileSize(file) {
|
|
209
|
-
if (file.size < minSize)
|
|
210
|
-
return translatedLabels.fileInput.fileSizeGreaterThanErrorMessage;
|
|
211
|
-
}
|
|
212
|
-
|
|
213
|
-
if (file.size > maxSize) {
|
|
214
|
-
return translatedLabels.fileInput.fileSizeLessThanErrorMessage;
|
|
215
|
-
}
|
|
216
|
-
};
|
|
217
|
-
|
|
218
|
-
var getFilePreview = function getFilePreview(file) {
|
|
219
|
-
if (file.type.includes("video")) {
|
|
220
|
-
return videoIcon;
|
|
221
|
-
}
|
|
222
|
-
|
|
223
|
-
if (file.type.includes("audio")) {
|
|
224
|
-
return audioIcon;
|
|
225
|
-
}
|
|
226
|
-
|
|
227
|
-
if (file.type.includes("image")) {
|
|
228
|
-
return new Promise(function (resolve) {
|
|
229
|
-
var reader = new FileReader();
|
|
230
|
-
reader.readAsDataURL(file);
|
|
231
|
-
|
|
232
|
-
reader.onload = function (e) {
|
|
233
|
-
resolve(e.target.result);
|
|
234
|
-
};
|
|
235
|
-
});
|
|
236
|
-
}
|
|
237
|
-
|
|
238
|
-
return fileIcon;
|
|
146
|
+
if (file.size < minSize) return translatedLabels.fileInput.fileSizeGreaterThanErrorMessage;else if (file.size > maxSize) return translatedLabels.fileInput.fileSizeLessThanErrorMessage;
|
|
239
147
|
};
|
|
240
148
|
|
|
241
149
|
var getFilesToAdd = /*#__PURE__*/function () {
|
|
242
|
-
var
|
|
150
|
+
var _ref2 = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee(selectedFiles) {
|
|
243
151
|
var filesToAdd;
|
|
244
|
-
return _regenerator["default"].wrap(function
|
|
152
|
+
return _regenerator["default"].wrap(function _callee$(_context) {
|
|
245
153
|
while (1) {
|
|
246
|
-
switch (
|
|
154
|
+
switch (_context.prev = _context.next) {
|
|
247
155
|
case 0:
|
|
248
|
-
|
|
156
|
+
_context.next = 2;
|
|
249
157
|
return Promise.all(selectedFiles.map(function (selectedFile) {
|
|
250
158
|
return getFilePreview(selectedFile);
|
|
251
159
|
})).then(function (previews) {
|
|
252
|
-
return selectedFiles.map(function (
|
|
160
|
+
return selectedFiles.map(function (file, index) {
|
|
253
161
|
var fileInfo = {
|
|
254
|
-
file:
|
|
255
|
-
error: checkFileSize(
|
|
162
|
+
file: file,
|
|
163
|
+
error: checkFileSize(file),
|
|
256
164
|
preview: previews[index]
|
|
257
165
|
};
|
|
258
166
|
return fileInfo;
|
|
@@ -260,86 +168,79 @@ var DxcFileInput = function DxcFileInput(_ref) {
|
|
|
260
168
|
});
|
|
261
169
|
|
|
262
170
|
case 2:
|
|
263
|
-
filesToAdd =
|
|
264
|
-
return
|
|
171
|
+
filesToAdd = _context.sent;
|
|
172
|
+
return _context.abrupt("return", filesToAdd);
|
|
265
173
|
|
|
266
174
|
case 4:
|
|
267
175
|
case "end":
|
|
268
|
-
return
|
|
176
|
+
return _context.stop();
|
|
269
177
|
}
|
|
270
178
|
}
|
|
271
|
-
},
|
|
179
|
+
}, _callee);
|
|
272
180
|
}));
|
|
273
181
|
|
|
274
|
-
return function getFilesToAdd(
|
|
275
|
-
return
|
|
182
|
+
return function getFilesToAdd(_x) {
|
|
183
|
+
return _ref2.apply(this, arguments);
|
|
276
184
|
};
|
|
277
185
|
}();
|
|
278
186
|
|
|
279
187
|
var addFile = /*#__PURE__*/function () {
|
|
280
|
-
var
|
|
188
|
+
var _ref3 = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee2(selectedFiles) {
|
|
281
189
|
var filesToAdd, finalFiles, fileToAdd;
|
|
282
|
-
return _regenerator["default"].wrap(function
|
|
190
|
+
return _regenerator["default"].wrap(function _callee2$(_context2) {
|
|
283
191
|
while (1) {
|
|
284
|
-
switch (
|
|
192
|
+
switch (_context2.prev = _context2.next) {
|
|
285
193
|
case 0:
|
|
286
194
|
if (!multiple) {
|
|
287
|
-
|
|
195
|
+
_context2.next = 8;
|
|
288
196
|
break;
|
|
289
197
|
}
|
|
290
198
|
|
|
291
|
-
|
|
199
|
+
_context2.next = 3;
|
|
292
200
|
return getFilesToAdd(selectedFiles);
|
|
293
201
|
|
|
294
202
|
case 3:
|
|
295
|
-
filesToAdd =
|
|
203
|
+
filesToAdd = _context2.sent;
|
|
296
204
|
finalFiles = [].concat((0, _toConsumableArray2["default"])(files), (0, _toConsumableArray2["default"])(filesToAdd));
|
|
297
|
-
|
|
298
|
-
|
|
299
|
-
callbackFile(finalFiles);
|
|
300
|
-
}
|
|
301
|
-
|
|
302
|
-
_context4.next = 19;
|
|
205
|
+
callbackFile === null || callbackFile === void 0 ? void 0 : callbackFile(finalFiles);
|
|
206
|
+
_context2.next = 19;
|
|
303
207
|
break;
|
|
304
208
|
|
|
305
209
|
case 8:
|
|
306
210
|
if (!(selectedFiles.length === 1)) {
|
|
307
|
-
|
|
211
|
+
_context2.next = 14;
|
|
308
212
|
break;
|
|
309
213
|
}
|
|
310
214
|
|
|
311
|
-
|
|
215
|
+
_context2.next = 11;
|
|
312
216
|
return getFilesToAdd(selectedFiles);
|
|
313
217
|
|
|
314
218
|
case 11:
|
|
315
|
-
|
|
316
|
-
|
|
219
|
+
_context2.t0 = _context2.sent;
|
|
220
|
+
_context2.next = 17;
|
|
317
221
|
break;
|
|
318
222
|
|
|
319
223
|
case 14:
|
|
320
|
-
|
|
224
|
+
_context2.next = 16;
|
|
321
225
|
return getFilesToAdd([selectedFiles[0]]);
|
|
322
226
|
|
|
323
227
|
case 16:
|
|
324
|
-
|
|
228
|
+
_context2.t0 = _context2.sent;
|
|
325
229
|
|
|
326
230
|
case 17:
|
|
327
|
-
fileToAdd =
|
|
328
|
-
|
|
329
|
-
if (typeof callbackFile === "function") {
|
|
330
|
-
callbackFile(fileToAdd);
|
|
331
|
-
}
|
|
231
|
+
fileToAdd = _context2.t0;
|
|
232
|
+
callbackFile === null || callbackFile === void 0 ? void 0 : callbackFile(fileToAdd);
|
|
332
233
|
|
|
333
234
|
case 19:
|
|
334
235
|
case "end":
|
|
335
|
-
return
|
|
236
|
+
return _context2.stop();
|
|
336
237
|
}
|
|
337
238
|
}
|
|
338
|
-
},
|
|
239
|
+
}, _callee2);
|
|
339
240
|
}));
|
|
340
241
|
|
|
341
|
-
return function addFile(
|
|
342
|
-
return
|
|
242
|
+
return function addFile(_x2) {
|
|
243
|
+
return _ref3.apply(this, arguments);
|
|
343
244
|
};
|
|
344
245
|
}();
|
|
345
246
|
|
|
@@ -351,17 +252,18 @@ var DxcFileInput = function DxcFileInput(_ref) {
|
|
|
351
252
|
addFile(filesArray);
|
|
352
253
|
};
|
|
353
254
|
|
|
354
|
-
var onDelete = function
|
|
255
|
+
var onDelete = (0, _react.useCallback)(function (fileName) {
|
|
355
256
|
var filesCopy = (0, _toConsumableArray2["default"])(files);
|
|
356
257
|
var fileToRemove = filesCopy.find(function (file) {
|
|
357
258
|
return file.file.name === fileName;
|
|
358
259
|
});
|
|
359
260
|
var fileIndex = filesCopy.indexOf(fileToRemove);
|
|
360
261
|
filesCopy.splice(fileIndex, 1);
|
|
262
|
+
callbackFile === null || callbackFile === void 0 ? void 0 : callbackFile(filesCopy);
|
|
263
|
+
}, [files, callbackFile]);
|
|
361
264
|
|
|
362
|
-
|
|
363
|
-
|
|
364
|
-
}
|
|
265
|
+
var handleClick = function handleClick() {
|
|
266
|
+
document.getElementById(fileInputId).click();
|
|
365
267
|
};
|
|
366
268
|
|
|
367
269
|
var handleDrag = function handleDrag(e) {
|
|
@@ -370,7 +272,9 @@ var DxcFileInput = function DxcFileInput(_ref) {
|
|
|
370
272
|
};
|
|
371
273
|
|
|
372
274
|
var handleDragIn = function handleDragIn(e) {
|
|
373
|
-
|
|
275
|
+
var _e$dataTransfer$items;
|
|
276
|
+
|
|
277
|
+
if (((_e$dataTransfer$items = e.dataTransfer.items) === null || _e$dataTransfer$items === void 0 ? void 0 : _e$dataTransfer$items.length) > 0) setIsDragging(true);
|
|
374
278
|
};
|
|
375
279
|
|
|
376
280
|
var handleDragOut = function handleDragOut(e) {
|
|
@@ -384,7 +288,7 @@ var DxcFileInput = function DxcFileInput(_ref) {
|
|
|
384
288
|
setIsDragging(false);
|
|
385
289
|
var filesObject = e.dataTransfer.files;
|
|
386
290
|
|
|
387
|
-
if (filesObject
|
|
291
|
+
if ((filesObject === null || filesObject === void 0 ? void 0 : filesObject.length) > 0) {
|
|
388
292
|
var filesArray = Object.keys(filesObject).map(function (key) {
|
|
389
293
|
return filesObject[key];
|
|
390
294
|
});
|
|
@@ -392,6 +296,76 @@ var DxcFileInput = function DxcFileInput(_ref) {
|
|
|
392
296
|
}
|
|
393
297
|
};
|
|
394
298
|
|
|
299
|
+
(0, _react.useEffect)(function () {
|
|
300
|
+
var getFiles = /*#__PURE__*/function () {
|
|
301
|
+
var _ref4 = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee4() {
|
|
302
|
+
var valueFiles;
|
|
303
|
+
return _regenerator["default"].wrap(function _callee4$(_context4) {
|
|
304
|
+
while (1) {
|
|
305
|
+
switch (_context4.prev = _context4.next) {
|
|
306
|
+
case 0:
|
|
307
|
+
if (!value) {
|
|
308
|
+
_context4.next = 5;
|
|
309
|
+
break;
|
|
310
|
+
}
|
|
311
|
+
|
|
312
|
+
_context4.next = 3;
|
|
313
|
+
return Promise.all(value.map( /*#__PURE__*/function () {
|
|
314
|
+
var _ref5 = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee3(file) {
|
|
315
|
+
var preview;
|
|
316
|
+
return _regenerator["default"].wrap(function _callee3$(_context3) {
|
|
317
|
+
while (1) {
|
|
318
|
+
switch (_context3.prev = _context3.next) {
|
|
319
|
+
case 0:
|
|
320
|
+
if (!file.preview) {
|
|
321
|
+
_context3.next = 4;
|
|
322
|
+
break;
|
|
323
|
+
}
|
|
324
|
+
|
|
325
|
+
return _context3.abrupt("return", file);
|
|
326
|
+
|
|
327
|
+
case 4:
|
|
328
|
+
_context3.next = 6;
|
|
329
|
+
return getFilePreview(file.file);
|
|
330
|
+
|
|
331
|
+
case 6:
|
|
332
|
+
preview = _context3.sent;
|
|
333
|
+
return _context3.abrupt("return", _objectSpread(_objectSpread({}, file), {}, {
|
|
334
|
+
preview: preview
|
|
335
|
+
}));
|
|
336
|
+
|
|
337
|
+
case 8:
|
|
338
|
+
case "end":
|
|
339
|
+
return _context3.stop();
|
|
340
|
+
}
|
|
341
|
+
}
|
|
342
|
+
}, _callee3);
|
|
343
|
+
}));
|
|
344
|
+
|
|
345
|
+
return function (_x3) {
|
|
346
|
+
return _ref5.apply(this, arguments);
|
|
347
|
+
};
|
|
348
|
+
}()));
|
|
349
|
+
|
|
350
|
+
case 3:
|
|
351
|
+
valueFiles = _context4.sent;
|
|
352
|
+
setFiles(valueFiles);
|
|
353
|
+
|
|
354
|
+
case 5:
|
|
355
|
+
case "end":
|
|
356
|
+
return _context4.stop();
|
|
357
|
+
}
|
|
358
|
+
}
|
|
359
|
+
}, _callee4);
|
|
360
|
+
}));
|
|
361
|
+
|
|
362
|
+
return function getFiles() {
|
|
363
|
+
return _ref4.apply(this, arguments);
|
|
364
|
+
};
|
|
365
|
+
}();
|
|
366
|
+
|
|
367
|
+
getFiles();
|
|
368
|
+
}, [value]);
|
|
395
369
|
return /*#__PURE__*/_react["default"].createElement(_styledComponents.ThemeProvider, {
|
|
396
370
|
theme: colorsTheme.fileInput
|
|
397
371
|
}, /*#__PURE__*/_react["default"].createElement(FileInputContainer, {
|
|
@@ -405,25 +379,29 @@ var DxcFileInput = function DxcFileInput(_ref) {
|
|
|
405
379
|
}, helperText), mode === "file" ? /*#__PURE__*/_react["default"].createElement(FileContainer, {
|
|
406
380
|
multiple: multiple,
|
|
407
381
|
files: files
|
|
408
|
-
}, /*#__PURE__*/_react["default"].createElement(
|
|
382
|
+
}, /*#__PURE__*/_react["default"].createElement(ValueInput, {
|
|
409
383
|
id: fileInputId,
|
|
410
384
|
type: "file",
|
|
411
385
|
accept: accept,
|
|
412
386
|
multiple: multiple,
|
|
413
|
-
onChange: selectFiles
|
|
387
|
+
onChange: selectFiles,
|
|
388
|
+
name: name,
|
|
389
|
+
disabled: disabled,
|
|
390
|
+
readOnly: true,
|
|
391
|
+
"aria-hidden": "true"
|
|
414
392
|
}), /*#__PURE__*/_react["default"].createElement(_Button["default"], {
|
|
415
393
|
mode: "secondary",
|
|
416
394
|
label: buttonLabel !== null && buttonLabel !== void 0 ? buttonLabel : multiple ? translatedLabels.fileInput.multipleButtonLabelDefault : translatedLabels.fileInput.singleButtonLabelDefault,
|
|
417
395
|
onClick: handleClick,
|
|
418
396
|
disabled: disabled,
|
|
419
|
-
size: "
|
|
397
|
+
size: "fitContent",
|
|
420
398
|
tabIndex: tabIndex
|
|
421
|
-
}),
|
|
422
|
-
|
|
423
|
-
|
|
424
|
-
|
|
425
|
-
|
|
426
|
-
|
|
399
|
+
}), /*#__PURE__*/_react["default"].createElement(FileItemListContainer, {
|
|
400
|
+
mode: mode,
|
|
401
|
+
multiple: multiple,
|
|
402
|
+
files: files
|
|
403
|
+
}, files.map(function (file) {
|
|
404
|
+
return /*#__PURE__*/_react["default"].createElement(_FileItem["default"], {
|
|
427
405
|
mode: mode,
|
|
428
406
|
multiple: multiple,
|
|
429
407
|
name: file.file.name,
|
|
@@ -434,13 +412,17 @@ var DxcFileInput = function DxcFileInput(_ref) {
|
|
|
434
412
|
type: file.file.type,
|
|
435
413
|
onDelete: onDelete,
|
|
436
414
|
tabIndex: tabIndex
|
|
437
|
-
})
|
|
438
|
-
})) : /*#__PURE__*/_react["default"].createElement(Container, null, /*#__PURE__*/_react["default"].createElement(
|
|
415
|
+
});
|
|
416
|
+
}))) : /*#__PURE__*/_react["default"].createElement(Container, null, /*#__PURE__*/_react["default"].createElement(ValueInput, {
|
|
439
417
|
id: fileInputId,
|
|
440
418
|
type: "file",
|
|
441
419
|
accept: accept,
|
|
442
420
|
multiple: multiple,
|
|
443
|
-
onChange: selectFiles
|
|
421
|
+
onChange: selectFiles,
|
|
422
|
+
name: name,
|
|
423
|
+
disabled: disabled,
|
|
424
|
+
readOnly: true,
|
|
425
|
+
"aria-hidden": "true"
|
|
444
426
|
}), /*#__PURE__*/_react["default"].createElement(DragDropArea, {
|
|
445
427
|
isDragging: isDragging,
|
|
446
428
|
disabled: disabled,
|
|
@@ -461,12 +443,12 @@ var DxcFileInput = function DxcFileInput(_ref) {
|
|
|
461
443
|
disabled: disabled
|
|
462
444
|
}, dropAreaLabel !== null && dropAreaLabel !== void 0 ? dropAreaLabel : multiple ? translatedLabels.fileInput.multipleDropAreaLabelDefault : translatedLabels.fileInput.singleDropAreaLabelDefault) : /*#__PURE__*/_react["default"].createElement(FiledropLabel, {
|
|
463
445
|
disabled: disabled
|
|
464
|
-
}, dropAreaLabel !== null && dropAreaLabel !== void 0 ? dropAreaLabel : multiple ? translatedLabels.fileInput.multipleDropAreaLabelDefault : translatedLabels.fileInput.singleDropAreaLabelDefault)),
|
|
465
|
-
|
|
466
|
-
|
|
467
|
-
|
|
468
|
-
|
|
469
|
-
|
|
446
|
+
}, dropAreaLabel !== null && dropAreaLabel !== void 0 ? dropAreaLabel : multiple ? translatedLabels.fileInput.multipleDropAreaLabelDefault : translatedLabels.fileInput.singleDropAreaLabelDefault)), /*#__PURE__*/_react["default"].createElement(FileItemListContainer, {
|
|
447
|
+
mode: mode,
|
|
448
|
+
multiple: multiple,
|
|
449
|
+
files: files
|
|
450
|
+
}, files.map(function (file) {
|
|
451
|
+
return /*#__PURE__*/_react["default"].createElement(_FileItem["default"], {
|
|
470
452
|
mode: mode,
|
|
471
453
|
multiple: multiple,
|
|
472
454
|
name: file.file.name,
|
|
@@ -477,8 +459,8 @@ var DxcFileInput = function DxcFileInput(_ref) {
|
|
|
477
459
|
type: file.file.type,
|
|
478
460
|
onDelete: onDelete,
|
|
479
461
|
tabIndex: tabIndex
|
|
480
|
-
})
|
|
481
|
-
})), files.length === 1 && files.map(function (file) {
|
|
462
|
+
});
|
|
463
|
+
}))), files.length === 1 && files.map(function (file) {
|
|
482
464
|
return file.error && mode === "file" && !multiple && /*#__PURE__*/_react["default"].createElement(ErrorMessage, null, file.error);
|
|
483
465
|
})));
|
|
484
466
|
};
|
|
@@ -519,7 +501,17 @@ var HelperText = _styledComponents["default"].span(_templateObject3 || (_templat
|
|
|
519
501
|
return props.theme.helperTextLineHeight;
|
|
520
502
|
});
|
|
521
503
|
|
|
522
|
-
var
|
|
504
|
+
var FileContainer = _styledComponents["default"].div(_templateObject4 || (_templateObject4 = (0, _taggedTemplateLiteral2["default"])(["\n display: flex;\n ", "\n margin-top: 0.25rem;\n"])), function (props) {
|
|
505
|
+
return props.multiple || props.files.length > 1 ? "flex-direction: column; row-gap: 0.25rem;" : "flex-direction: row; column-gap: 0.25rem;";
|
|
506
|
+
});
|
|
507
|
+
|
|
508
|
+
var ValueInput = _styledComponents["default"].input(_templateObject5 || (_templateObject5 = (0, _taggedTemplateLiteral2["default"])(["\n display: none;\n"])));
|
|
509
|
+
|
|
510
|
+
var FileItemListContainer = _styledComponents["default"].div(_templateObject6 || (_templateObject6 = (0, _taggedTemplateLiteral2["default"])(["\n display: flex;\n flex-direction: column;\n row-gap: 0.25rem;\n"])));
|
|
511
|
+
|
|
512
|
+
var Container = _styledComponents["default"].div(_templateObject7 || (_templateObject7 = (0, _taggedTemplateLiteral2["default"])(["\n display: flex;\n flex-direction: column;\n row-gap: 0.25rem;\n margin-top: 0.25rem;\n"])));
|
|
513
|
+
|
|
514
|
+
var DragDropArea = _styledComponents["default"].div(_templateObject8 || (_templateObject8 = (0, _taggedTemplateLiteral2["default"])(["\n box-sizing: border-box;\n display: flex;\n flex-direction: ", ";\n ", ";\n align-items: center;\n height: ", ";\n width: 320px;\n overflow: hidden;\n box-shadow: 0 0 0 2px transparent;\n border-radius: ", ";\n border-width: ", ";\n border-style: ", ";\n border-color: ", ";\n\n ", "\n\n cursor: ", ";\n"])), function (props) {
|
|
523
515
|
return props.mode === "filedrop" ? "row" : "column";
|
|
524
516
|
}, function (props) {
|
|
525
517
|
return props.mode === "dropzone" && "justify-content: center; padding: 1rem;";
|
|
@@ -539,17 +531,11 @@ var DragDropArea = _styledComponents["default"].div(_templateObject4 || (_templa
|
|
|
539
531
|
return props.disabled && "not-allowed";
|
|
540
532
|
});
|
|
541
533
|
|
|
542
|
-
var
|
|
543
|
-
return props.multiple || props.files.length > 1 ? "column" : "row";
|
|
544
|
-
});
|
|
545
|
-
|
|
546
|
-
var HiddenInputFile = _styledComponents["default"].input(_templateObject6 || (_templateObject6 = (0, _taggedTemplateLiteral2["default"])(["\n visibility: hidden;\n position: absolute;\n width: 0px;\n height: 0px;\n"])));
|
|
547
|
-
|
|
548
|
-
var ButtonContainer = _styledComponents["default"].div(_templateObject7 || (_templateObject7 = (0, _taggedTemplateLiteral2["default"])(["\n ", ";\n"])), function (props) {
|
|
534
|
+
var ButtonContainer = _styledComponents["default"].div(_templateObject9 || (_templateObject9 = (0, _taggedTemplateLiteral2["default"])(["\n ", ";\n"])), function (props) {
|
|
549
535
|
return props.mode === "filedrop" && "padding: 2px 12px 2px 3px";
|
|
550
536
|
});
|
|
551
537
|
|
|
552
|
-
var DropzoneLabel = _styledComponents["default"].div(
|
|
538
|
+
var DropzoneLabel = _styledComponents["default"].div(_templateObject10 || (_templateObject10 = (0, _taggedTemplateLiteral2["default"])(["\n display: -webkit-box;\n -webkit-box-orient: vertical;\n overflow: hidden;\n text-overflow: ellipsis;\n -webkit-line-clamp: 3;\n text-align: center;\n margin-top: 0.5rem;\n color: ", ";\n font-family: ", ";\n font-size: ", ";\n font-weight: ", ";\n"])), function (props) {
|
|
553
539
|
return props.disabled ? props.theme.disabledDropLabelFontColor : props.theme.dropLabelFontColor;
|
|
554
540
|
}, function (props) {
|
|
555
541
|
return props.theme.dropLabelFontFamily;
|
|
@@ -559,7 +545,7 @@ var DropzoneLabel = _styledComponents["default"].div(_templateObject8 || (_templ
|
|
|
559
545
|
return props.theme.dropLabelFontWeight;
|
|
560
546
|
});
|
|
561
547
|
|
|
562
|
-
var FiledropLabel = _styledComponents["default"].span(
|
|
548
|
+
var FiledropLabel = _styledComponents["default"].span(_templateObject11 || (_templateObject11 = (0, _taggedTemplateLiteral2["default"])(["\n overflow: hidden;\n white-space: nowrap;\n text-overflow: ellipsis;\n color: ", ";\n font-family: ", ";\n font-size: ", ";\n font-weight: ", ";\n margin-right: 1rem;\n"])), function (props) {
|
|
563
549
|
return props.disabled ? props.theme.disabledDropLabelFontColor : props.theme.dropLabelFontColor;
|
|
564
550
|
}, function (props) {
|
|
565
551
|
return props.theme.dropLabelFontFamily;
|
|
@@ -569,14 +555,6 @@ var FiledropLabel = _styledComponents["default"].span(_templateObject9 || (_temp
|
|
|
569
555
|
return props.theme.dropLabelFontWeight;
|
|
570
556
|
});
|
|
571
557
|
|
|
572
|
-
var Container = _styledComponents["default"].div(_templateObject10 || (_templateObject10 = (0, _taggedTemplateLiteral2["default"])(["\n display: flex;\n flex-direction: column;\n margin-top: 0.25rem;\n"])));
|
|
573
|
-
|
|
574
|
-
var FileItemContainer = _styledComponents["default"].div(_templateObject11 || (_templateObject11 = (0, _taggedTemplateLiteral2["default"])(["\n margin-top: ", ";\n margin-left: ", ";\n"])), function (props) {
|
|
575
|
-
return (props.multiple || props.files.length > 1 || props.mode !== "file") && "4px";
|
|
576
|
-
}, function (props) {
|
|
577
|
-
return props.mode === "file" && props.files.length === 1 && !props.multiple && "4px";
|
|
578
|
-
});
|
|
579
|
-
|
|
580
558
|
var ErrorMessage = _styledComponents["default"].div(_templateObject12 || (_templateObject12 = (0, _taggedTemplateLiteral2["default"])(["\n color: ", ";\n font-family: ", ";\n font-size: ", ";\n font-weight: ", ";\n line-height: ", ";\n margin-top: 0.25rem;\n"])), function (props) {
|
|
581
559
|
return props.theme.errorMessageFontColor;
|
|
582
560
|
}, function (props) {
|
|
@@ -2,6 +2,7 @@ import React from "react";
|
|
|
2
2
|
import DxcFileInput from "./FileInput";
|
|
3
3
|
import Title from "../../.storybook/components/Title";
|
|
4
4
|
import ExampleContainer from "../../.storybook/components/ExampleContainer";
|
|
5
|
+
import FileItem from "./FileItem";
|
|
5
6
|
|
|
6
7
|
export default {
|
|
7
8
|
title: "File input",
|
|
@@ -65,17 +66,48 @@ const filesExamples = [
|
|
|
65
66
|
|
|
66
67
|
export const Chromatic = () => (
|
|
67
68
|
<>
|
|
69
|
+
<Title title="File item states" theme="light" level={2} />
|
|
68
70
|
<ExampleContainer pseudoState="pseudo-hover">
|
|
69
|
-
<Title title="
|
|
70
|
-
<
|
|
71
|
+
<Title title="Hovered" theme="light" level={4} />
|
|
72
|
+
<FileItem
|
|
73
|
+
mode="dropzone"
|
|
74
|
+
multiple={true}
|
|
75
|
+
name="file"
|
|
76
|
+
showPreview={false}
|
|
77
|
+
numFiles={1}
|
|
78
|
+
preview={picPreview}
|
|
79
|
+
type="image/png"
|
|
80
|
+
onDelete={() => {}}
|
|
81
|
+
tabIndex={0}
|
|
82
|
+
/>
|
|
71
83
|
</ExampleContainer>
|
|
72
84
|
<ExampleContainer pseudoState="pseudo-focus">
|
|
73
|
-
<Title title="
|
|
74
|
-
<
|
|
85
|
+
<Title title="Focused" theme="light" level={4} />
|
|
86
|
+
<FileItem
|
|
87
|
+
mode="dropzone"
|
|
88
|
+
multiple={true}
|
|
89
|
+
name="file"
|
|
90
|
+
showPreview={false}
|
|
91
|
+
numFiles={1}
|
|
92
|
+
preview={picPreview}
|
|
93
|
+
type="image/png"
|
|
94
|
+
onDelete={() => {}}
|
|
95
|
+
tabIndex={0}
|
|
96
|
+
/>
|
|
75
97
|
</ExampleContainer>
|
|
76
98
|
<ExampleContainer pseudoState="pseudo-active">
|
|
77
|
-
<Title title="
|
|
78
|
-
<
|
|
99
|
+
<Title title="Actived" theme="light" level={4} />
|
|
100
|
+
<FileItem
|
|
101
|
+
mode="dropzone"
|
|
102
|
+
multiple={true}
|
|
103
|
+
name="file"
|
|
104
|
+
showPreview={false}
|
|
105
|
+
numFiles={1}
|
|
106
|
+
preview={picPreview}
|
|
107
|
+
type="image/png"
|
|
108
|
+
onDelete={() => {}}
|
|
109
|
+
tabIndex={0}
|
|
110
|
+
/>
|
|
79
111
|
</ExampleContainer>
|
|
80
112
|
<Title title="File" theme="light" level={2} />
|
|
81
113
|
<ExampleContainer>
|
|
@@ -454,4 +454,45 @@ describe("FileInput component tests", function () {
|
|
|
454
454
|
}
|
|
455
455
|
}, _callee6);
|
|
456
456
|
})));
|
|
457
|
+
test("File input sends value when submitted in a form", function () {
|
|
458
|
+
var newFile = new File(["newFile"], "newFile.pdf", {
|
|
459
|
+
type: "pdf"
|
|
460
|
+
});
|
|
461
|
+
var handlerOnSubmit = jest.fn(function (e) {
|
|
462
|
+
e.preventDefault();
|
|
463
|
+
var formData = new FormData(e.target);
|
|
464
|
+
var formProps = Object.fromEntries(formData);
|
|
465
|
+
expect(formProps).toStrictEqual({
|
|
466
|
+
file: newFile
|
|
467
|
+
});
|
|
468
|
+
});
|
|
469
|
+
|
|
470
|
+
var _render17 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement("form", {
|
|
471
|
+
onSubmit: handlerOnSubmit
|
|
472
|
+
}, /*#__PURE__*/_react["default"].createElement(_FileInput["default"], {
|
|
473
|
+
label: "File input label",
|
|
474
|
+
name: "file",
|
|
475
|
+
helperText: "File input helper text",
|
|
476
|
+
mode: "filedrop",
|
|
477
|
+
buttonLabel: "Choose",
|
|
478
|
+
dropAreaLabel: "(or drop the files)"
|
|
479
|
+
}), /*#__PURE__*/_react["default"].createElement("button", {
|
|
480
|
+
type: "submit"
|
|
481
|
+
}, "Submit"))),
|
|
482
|
+
getByText = _render17.getByText,
|
|
483
|
+
getByLabelText = _render17.getByLabelText;
|
|
484
|
+
|
|
485
|
+
var inputFile = getByLabelText("File input label", {
|
|
486
|
+
hidden: true
|
|
487
|
+
});
|
|
488
|
+
var submit = getByText("Submit");
|
|
489
|
+
|
|
490
|
+
_react2.fireEvent.change(inputFile, {
|
|
491
|
+
target: {
|
|
492
|
+
files: [newFile]
|
|
493
|
+
}
|
|
494
|
+
});
|
|
495
|
+
|
|
496
|
+
_userEvent["default"].click(submit);
|
|
497
|
+
});
|
|
457
498
|
});
|