@pingux/astro 2.148.1-alpha.0 → 2.149.0
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/lib/cjs/components/FileInputField/FileInputField.js +27 -13
- package/lib/cjs/components/FileInputField/FileInputField.stories.js +9 -2
- package/lib/cjs/components/FileInputField/FileInputField.test.js +56 -2
- package/lib/components/FileInputField/FileInputField.js +30 -17
- package/lib/components/FileInputField/FileInputField.stories.js +6 -0
- package/lib/components/FileInputField/FileInputField.test.js +52 -2
- package/package.json +1 -1
|
@@ -14,18 +14,19 @@ var _interopRequireDefault = require("@babel/runtime-corejs3/helpers/interopRequ
|
|
|
14
14
|
_Object$defineProperty(exports, "__esModule", {
|
|
15
15
|
value: true
|
|
16
16
|
});
|
|
17
|
-
exports["default"] = void 0;
|
|
17
|
+
exports.filterFileTypes = exports["default"] = void 0;
|
|
18
|
+
var _extends2 = _interopRequireDefault(require("@babel/runtime-corejs3/helpers/extends"));
|
|
19
|
+
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime-corejs3/helpers/defineProperty"));
|
|
20
|
+
var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime-corejs3/helpers/slicedToArray"));
|
|
21
|
+
var _objectWithoutProperties2 = _interopRequireDefault(require("@babel/runtime-corejs3/helpers/objectWithoutProperties"));
|
|
22
|
+
var _filter = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/instance/filter"));
|
|
23
|
+
var _includes = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/instance/includes"));
|
|
24
|
+
var _some = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/instance/some"));
|
|
18
25
|
var _concat = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/instance/concat"));
|
|
19
26
|
var _from = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/array/from"));
|
|
20
27
|
var _slice = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/instance/slice"));
|
|
21
28
|
var _map = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/instance/map"));
|
|
22
|
-
var _filter = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/instance/filter"));
|
|
23
|
-
var _some = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/instance/some"));
|
|
24
29
|
var _url = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/url"));
|
|
25
|
-
var _extends2 = _interopRequireDefault(require("@babel/runtime-corejs3/helpers/extends"));
|
|
26
|
-
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime-corejs3/helpers/defineProperty"));
|
|
27
|
-
var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime-corejs3/helpers/slicedToArray"));
|
|
28
|
-
var _objectWithoutProperties2 = _interopRequireDefault(require("@babel/runtime-corejs3/helpers/objectWithoutProperties"));
|
|
29
30
|
var _react = _interopRequireWildcard(require("react"));
|
|
30
31
|
var _reactAria = require("react-aria");
|
|
31
32
|
var _reactDropzone = require("react-dropzone");
|
|
@@ -54,6 +55,20 @@ var FILE_CHANGE_STATUS = {
|
|
|
54
55
|
ADDED: 'added',
|
|
55
56
|
DELETED: 'deleted'
|
|
56
57
|
};
|
|
58
|
+
var getFileExtension = function getFileExtension(file) {
|
|
59
|
+
var extension = file.name.split('.')[file.name.split('.').length - 1];
|
|
60
|
+
return ".".concat(extension);
|
|
61
|
+
};
|
|
62
|
+
var filterFileTypes = function filterFileTypes(_ref) {
|
|
63
|
+
var arrayWithNewFiles = _ref.arrayWithNewFiles,
|
|
64
|
+
fileTypes = _ref.fileTypes;
|
|
65
|
+
return (0, _filter["default"])(arrayWithNewFiles).call(arrayWithNewFiles, function (newFile) {
|
|
66
|
+
return !(fileTypes !== null && fileTypes !== void 0 && fileTypes.length) || (0, _includes["default"])(fileTypes).call(fileTypes, getFileExtension(newFile)) || (0, _some["default"])(fileTypes).call(fileTypes, function (fileType) {
|
|
67
|
+
return newFile.type.search(fileType) !== -1;
|
|
68
|
+
});
|
|
69
|
+
});
|
|
70
|
+
};
|
|
71
|
+
exports.filterFileTypes = filterFileTypes;
|
|
57
72
|
var FileInputField = /*#__PURE__*/(0, _react.forwardRef)(function (props, ref) {
|
|
58
73
|
var buttonProps = props.buttonProps,
|
|
59
74
|
defaultButtonText = props.defaultButtonText,
|
|
@@ -133,10 +148,9 @@ var FileInputField = /*#__PURE__*/(0, _react.forwardRef)(function (props, ref) {
|
|
|
133
148
|
if (!isMultiple) {
|
|
134
149
|
arrayWithNewFiles = (0, _slice["default"])(arrayWithNewFiles).call(arrayWithNewFiles, 0, 1);
|
|
135
150
|
}
|
|
136
|
-
var filesWithIdAndLink = (0, _map["default"])(_context2 = (
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
});
|
|
151
|
+
var filesWithIdAndLink = (0, _map["default"])(_context2 = filterFileTypes({
|
|
152
|
+
arrayWithNewFiles: arrayWithNewFiles,
|
|
153
|
+
fileTypes: fileTypes
|
|
140
154
|
})).call(_context2, function (newFile) {
|
|
141
155
|
return {
|
|
142
156
|
fileObj: newFile,
|
|
@@ -180,8 +194,8 @@ var FileInputField = /*#__PURE__*/(0, _react.forwardRef)(function (props, ref) {
|
|
|
180
194
|
onRemove(e, fileId);
|
|
181
195
|
}
|
|
182
196
|
setUploadedFiles(function (prevFiles) {
|
|
183
|
-
return (0, _filter["default"])(prevFiles).call(prevFiles, function (
|
|
184
|
-
var id =
|
|
197
|
+
return (0, _filter["default"])(prevFiles).call(prevFiles, function (_ref2) {
|
|
198
|
+
var id = _ref2.id;
|
|
185
199
|
return id !== fileId;
|
|
186
200
|
});
|
|
187
201
|
});
|
|
@@ -14,7 +14,7 @@ var _interopRequireDefault = require("@babel/runtime-corejs3/helpers/interopRequ
|
|
|
14
14
|
_Object$defineProperty(exports, "__esModule", {
|
|
15
15
|
value: true
|
|
16
16
|
});
|
|
17
|
-
exports["default"] = exports.WithFileTypePdfAndImage = exports.WithCustomWidth = exports.ErrorWithMultipleFiles = exports.ErrorStatusSingleFile = exports.DefaultFileListUncontrolled = exports.Default = exports.CustomButtonText = exports.ControlledState = void 0;
|
|
17
|
+
exports["default"] = exports.WithFileTypePdfAndImage = exports.WithCustomWidth = exports.WithCustomFileTypes = exports.ErrorWithMultipleFiles = exports.ErrorStatusSingleFile = exports.DefaultFileListUncontrolled = exports.Default = exports.CustomButtonText = exports.ControlledState = void 0;
|
|
18
18
|
var _some = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/instance/some"));
|
|
19
19
|
var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime-corejs3/helpers/slicedToArray"));
|
|
20
20
|
var _extends2 = _interopRequireDefault(require("@babel/runtime-corejs3/helpers/extends"));
|
|
@@ -261,4 +261,11 @@ var WithFileTypePdfAndImage = function WithFileTypePdfAndImage() {
|
|
|
261
261
|
helperText: error
|
|
262
262
|
});
|
|
263
263
|
};
|
|
264
|
-
exports.WithFileTypePdfAndImage = WithFileTypePdfAndImage;
|
|
264
|
+
exports.WithFileTypePdfAndImage = WithFileTypePdfAndImage;
|
|
265
|
+
var WithCustomFileTypes = function WithCustomFileTypes() {
|
|
266
|
+
return (0, _react2.jsx)(_index.FileInputField, {
|
|
267
|
+
fileTypes: ['.p8'],
|
|
268
|
+
sx: fitContentWidthSx
|
|
269
|
+
});
|
|
270
|
+
};
|
|
271
|
+
exports.WithCustomFileTypes = WithCustomFileTypes;
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
+
var _typeof = require("@babel/runtime-corejs3/helpers/typeof");
|
|
3
4
|
var _Object$keys = require("@babel/runtime-corejs3/core-js-stable/object/keys");
|
|
4
5
|
var _Object$getOwnPropertySymbols = require("@babel/runtime-corejs3/core-js-stable/object/get-own-property-symbols");
|
|
5
6
|
var _filterInstanceProperty = require("@babel/runtime-corejs3/core-js-stable/instance/filter");
|
|
@@ -8,6 +9,7 @@ var _forEachInstanceProperty = require("@babel/runtime-corejs3/core-js-stable/in
|
|
|
8
9
|
var _Object$getOwnPropertyDescriptors = require("@babel/runtime-corejs3/core-js-stable/object/get-own-property-descriptors");
|
|
9
10
|
var _Object$defineProperties = require("@babel/runtime-corejs3/core-js-stable/object/define-properties");
|
|
10
11
|
var _Object$defineProperty = require("@babel/runtime-corejs3/core-js-stable/object/define-property");
|
|
12
|
+
var _WeakMap = require("@babel/runtime-corejs3/core-js-stable/weak-map");
|
|
11
13
|
var _interopRequireDefault = require("@babel/runtime-corejs3/helpers/interopRequireDefault");
|
|
12
14
|
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime-corejs3/helpers/defineProperty"));
|
|
13
15
|
var _extends2 = _interopRequireDefault(require("@babel/runtime-corejs3/helpers/extends"));
|
|
@@ -18,8 +20,10 @@ var _userEvent = _interopRequireDefault(require("@testing-library/user-event"));
|
|
|
18
20
|
var _statuses = _interopRequireDefault(require("../../utils/devUtils/constants/statuses"));
|
|
19
21
|
var _universalComponentTest = require("../../utils/testUtils/universalComponentTest");
|
|
20
22
|
var _universalFormSubmitTest = require("../../utils/testUtils/universalFormSubmitTest");
|
|
21
|
-
var _FileInputField =
|
|
23
|
+
var _FileInputField = _interopRequireWildcard(require("./FileInputField"));
|
|
22
24
|
var _react3 = require("@emotion/react");
|
|
25
|
+
function _getRequireWildcardCache(nodeInterop) { if (typeof _WeakMap !== "function") return null; var cacheBabelInterop = new _WeakMap(); var cacheNodeInterop = new _WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
|
|
26
|
+
function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(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; }
|
|
23
27
|
function ownKeys(object, enumerableOnly) { var keys = _Object$keys(object); if (_Object$getOwnPropertySymbols) { var symbols = _Object$getOwnPropertySymbols(object); enumerableOnly && (symbols = _filterInstanceProperty(symbols).call(symbols, function (sym) { return _Object$getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
|
|
24
28
|
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var _context, _context2; var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? _forEachInstanceProperty(_context = ownKeys(Object(source), !0)).call(_context, function (key) { (0, _defineProperty2["default"])(target, key, source[key]); }) : _Object$getOwnPropertyDescriptors ? _Object$defineProperties(target, _Object$getOwnPropertyDescriptors(source)) : _forEachInstanceProperty(_context2 = ownKeys(Object(source))).call(_context2, function (key) { _Object$defineProperty(target, key, _Object$getOwnPropertyDescriptor(source, key)); }); } return target; }
|
|
25
29
|
var fileInputFieldTestId = 'file-input-test-id';
|
|
@@ -36,7 +40,7 @@ var testFileName = 'chucknorris.png';
|
|
|
36
40
|
var testFileName2 = 'chucknorris222.png';
|
|
37
41
|
var testFileName3 = 'document.pdf';
|
|
38
42
|
var testFile = new File(['(⌐□_□)'], testFileName, {
|
|
39
|
-
type: '
|
|
43
|
+
type: 'text/plain'
|
|
40
44
|
});
|
|
41
45
|
var testFile2 = new File(['(⌐□_□)'], testFileName2, {
|
|
42
46
|
type: 'image/png'
|
|
@@ -243,4 +247,54 @@ test('File upload should allow only image', function () {
|
|
|
243
247
|
var val = _react2.screen.queryByText('document');
|
|
244
248
|
expect(val).not.toBeInTheDocument();
|
|
245
249
|
expect(setStateMock).toHaveBeenCalled();
|
|
250
|
+
});
|
|
251
|
+
describe('filterFileTypes', function () {
|
|
252
|
+
it('returns a list of files', function () {
|
|
253
|
+
var results = (0, _FileInputField.filterFileTypes)({
|
|
254
|
+
arrayWithNewFiles: [testFile, testFile2]
|
|
255
|
+
});
|
|
256
|
+
expect(results.length).toBe(2);
|
|
257
|
+
});
|
|
258
|
+
it('filters file types', function () {
|
|
259
|
+
var results = (0, _FileInputField.filterFileTypes)({
|
|
260
|
+
arrayWithNewFiles: [{
|
|
261
|
+
name: 'shark',
|
|
262
|
+
type: 'text/plain'
|
|
263
|
+
}, {
|
|
264
|
+
name: 'shark',
|
|
265
|
+
type: 'image/png'
|
|
266
|
+
}],
|
|
267
|
+
fileTypes: ['text/plain']
|
|
268
|
+
});
|
|
269
|
+
expect(results.length).toBe(1);
|
|
270
|
+
});
|
|
271
|
+
it('filters file image types', function () {
|
|
272
|
+
var results = (0, _FileInputField.filterFileTypes)({
|
|
273
|
+
arrayWithNewFiles: [{
|
|
274
|
+
name: 'shark',
|
|
275
|
+
type: 'text/plain'
|
|
276
|
+
}, {
|
|
277
|
+
name: 'shark',
|
|
278
|
+
type: 'image/png'
|
|
279
|
+
}],
|
|
280
|
+
fileTypes: ['image']
|
|
281
|
+
});
|
|
282
|
+
expect(results.length).toBe(1);
|
|
283
|
+
});
|
|
284
|
+
it('filters custom file types', function () {
|
|
285
|
+
var results = (0, _FileInputField.filterFileTypes)({
|
|
286
|
+
arrayWithNewFiles: [{
|
|
287
|
+
name: 'shark',
|
|
288
|
+
type: '.p8'
|
|
289
|
+
}, {
|
|
290
|
+
name: 'shark',
|
|
291
|
+
type: '.xml'
|
|
292
|
+
}, {
|
|
293
|
+
name: 'shark',
|
|
294
|
+
type: '.xml'
|
|
295
|
+
}],
|
|
296
|
+
fileTypes: ['.p8']
|
|
297
|
+
});
|
|
298
|
+
expect(results.length).toBe(1);
|
|
299
|
+
});
|
|
246
300
|
});
|
|
@@ -1,24 +1,25 @@
|
|
|
1
|
-
import _Object$keys from "@babel/runtime-corejs3/core-js-stable/object/keys";
|
|
2
|
-
import _Object$getOwnPropertySymbols from "@babel/runtime-corejs3/core-js-stable/object/get-own-property-symbols";
|
|
3
|
-
import _Object$getOwnPropertyDescriptor from "@babel/runtime-corejs3/core-js-stable/object/get-own-property-descriptor";
|
|
4
|
-
import _forEachInstanceProperty from "@babel/runtime-corejs3/core-js-stable/instance/for-each";
|
|
5
|
-
import _Object$getOwnPropertyDescriptors from "@babel/runtime-corejs3/core-js-stable/object/get-own-property-descriptors";
|
|
6
|
-
import _Object$defineProperties from "@babel/runtime-corejs3/core-js-stable/object/define-properties";
|
|
7
|
-
import _Object$defineProperty from "@babel/runtime-corejs3/core-js-stable/object/define-property";
|
|
8
1
|
import _extends from "@babel/runtime-corejs3/helpers/esm/extends";
|
|
9
2
|
import _defineProperty from "@babel/runtime-corejs3/helpers/esm/defineProperty";
|
|
10
3
|
import _slicedToArray from "@babel/runtime-corejs3/helpers/esm/slicedToArray";
|
|
11
4
|
import _objectWithoutProperties from "@babel/runtime-corejs3/helpers/esm/objectWithoutProperties";
|
|
12
5
|
var _excluded = ["buttonProps", "defaultButtonText", "defaultFileList", "fileList", "helperText", "iconContainerProps", "iconProps", "isDisabled", "isIconButton", "isLoading", "isMultiple", "label", "onFileSelect", "onRemove", "status", "textProps", "fileTypes"];
|
|
6
|
+
function ownKeys(object, enumerableOnly) { var keys = _Object$keys(object); if (_Object$getOwnPropertySymbols) { var symbols = _Object$getOwnPropertySymbols(object); enumerableOnly && (symbols = _filterInstanceProperty(symbols).call(symbols, function (sym) { return _Object$getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
|
|
7
|
+
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var _context4, _context5; var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? _forEachInstanceProperty(_context4 = ownKeys(Object(source), !0)).call(_context4, function (key) { _defineProperty(target, key, source[key]); }) : _Object$getOwnPropertyDescriptors ? _Object$defineProperties(target, _Object$getOwnPropertyDescriptors(source)) : _forEachInstanceProperty(_context5 = ownKeys(Object(source))).call(_context5, function (key) { _Object$defineProperty(target, key, _Object$getOwnPropertyDescriptor(source, key)); }); } return target; }
|
|
8
|
+
import _filterInstanceProperty from "@babel/runtime-corejs3/core-js-stable/instance/filter";
|
|
9
|
+
import _includesInstanceProperty from "@babel/runtime-corejs3/core-js-stable/instance/includes";
|
|
10
|
+
import _someInstanceProperty from "@babel/runtime-corejs3/core-js-stable/instance/some";
|
|
13
11
|
import _concatInstanceProperty from "@babel/runtime-corejs3/core-js-stable/instance/concat";
|
|
14
12
|
import _Array$from from "@babel/runtime-corejs3/core-js-stable/array/from";
|
|
15
13
|
import _sliceInstanceProperty from "@babel/runtime-corejs3/core-js-stable/instance/slice";
|
|
16
14
|
import _mapInstanceProperty from "@babel/runtime-corejs3/core-js-stable/instance/map";
|
|
17
|
-
import _filterInstanceProperty from "@babel/runtime-corejs3/core-js-stable/instance/filter";
|
|
18
|
-
import _someInstanceProperty from "@babel/runtime-corejs3/core-js-stable/instance/some";
|
|
19
15
|
import _URL from "@babel/runtime-corejs3/core-js-stable/url";
|
|
20
|
-
|
|
21
|
-
|
|
16
|
+
import _Object$keys from "@babel/runtime-corejs3/core-js-stable/object/keys";
|
|
17
|
+
import _Object$getOwnPropertySymbols from "@babel/runtime-corejs3/core-js-stable/object/get-own-property-symbols";
|
|
18
|
+
import _Object$getOwnPropertyDescriptor from "@babel/runtime-corejs3/core-js-stable/object/get-own-property-descriptor";
|
|
19
|
+
import _forEachInstanceProperty from "@babel/runtime-corejs3/core-js-stable/instance/for-each";
|
|
20
|
+
import _Object$getOwnPropertyDescriptors from "@babel/runtime-corejs3/core-js-stable/object/get-own-property-descriptors";
|
|
21
|
+
import _Object$defineProperties from "@babel/runtime-corejs3/core-js-stable/object/define-properties";
|
|
22
|
+
import _Object$defineProperty from "@babel/runtime-corejs3/core-js-stable/object/define-property";
|
|
22
23
|
import React, { forwardRef, useCallback, useEffect, useImperativeHandle, useMemo, useRef, useState } from 'react';
|
|
23
24
|
import { mergeProps, useVisuallyHidden, VisuallyHidden } from 'react-aria';
|
|
24
25
|
import { useDropzone } from 'react-dropzone';
|
|
@@ -42,6 +43,19 @@ var FILE_CHANGE_STATUS = {
|
|
|
42
43
|
ADDED: 'added',
|
|
43
44
|
DELETED: 'deleted'
|
|
44
45
|
};
|
|
46
|
+
var getFileExtension = function getFileExtension(file) {
|
|
47
|
+
var extension = file.name.split('.')[file.name.split('.').length - 1];
|
|
48
|
+
return ".".concat(extension);
|
|
49
|
+
};
|
|
50
|
+
export var filterFileTypes = function filterFileTypes(_ref) {
|
|
51
|
+
var arrayWithNewFiles = _ref.arrayWithNewFiles,
|
|
52
|
+
fileTypes = _ref.fileTypes;
|
|
53
|
+
return _filterInstanceProperty(arrayWithNewFiles).call(arrayWithNewFiles, function (newFile) {
|
|
54
|
+
return !(fileTypes !== null && fileTypes !== void 0 && fileTypes.length) || _includesInstanceProperty(fileTypes).call(fileTypes, getFileExtension(newFile)) || _someInstanceProperty(fileTypes).call(fileTypes, function (fileType) {
|
|
55
|
+
return newFile.type.search(fileType) !== -1;
|
|
56
|
+
});
|
|
57
|
+
});
|
|
58
|
+
};
|
|
45
59
|
var FileInputField = /*#__PURE__*/forwardRef(function (props, ref) {
|
|
46
60
|
var buttonProps = props.buttonProps,
|
|
47
61
|
defaultButtonText = props.defaultButtonText,
|
|
@@ -121,10 +135,9 @@ var FileInputField = /*#__PURE__*/forwardRef(function (props, ref) {
|
|
|
121
135
|
if (!isMultiple) {
|
|
122
136
|
arrayWithNewFiles = _sliceInstanceProperty(arrayWithNewFiles).call(arrayWithNewFiles, 0, 1);
|
|
123
137
|
}
|
|
124
|
-
var filesWithIdAndLink = _mapInstanceProperty(_context2 =
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
});
|
|
138
|
+
var filesWithIdAndLink = _mapInstanceProperty(_context2 = filterFileTypes({
|
|
139
|
+
arrayWithNewFiles: arrayWithNewFiles,
|
|
140
|
+
fileTypes: fileTypes
|
|
128
141
|
})).call(_context2, function (newFile) {
|
|
129
142
|
return {
|
|
130
143
|
fileObj: newFile,
|
|
@@ -168,8 +181,8 @@ var FileInputField = /*#__PURE__*/forwardRef(function (props, ref) {
|
|
|
168
181
|
onRemove(e, fileId);
|
|
169
182
|
}
|
|
170
183
|
setUploadedFiles(function (prevFiles) {
|
|
171
|
-
return _filterInstanceProperty(prevFiles).call(prevFiles, function (
|
|
172
|
-
var id =
|
|
184
|
+
return _filterInstanceProperty(prevFiles).call(prevFiles, function (_ref2) {
|
|
185
|
+
var id = _ref2.id;
|
|
173
186
|
return id !== fileId;
|
|
174
187
|
});
|
|
175
188
|
});
|
|
@@ -241,4 +241,10 @@ export var WithFileTypePdfAndImage = function WithFileTypePdfAndImage() {
|
|
|
241
241
|
status: error && statuses.ERROR,
|
|
242
242
|
helperText: error
|
|
243
243
|
});
|
|
244
|
+
};
|
|
245
|
+
export var WithCustomFileTypes = function WithCustomFileTypes() {
|
|
246
|
+
return ___EmotionJSX(FileInputField, {
|
|
247
|
+
fileTypes: ['.p8'],
|
|
248
|
+
sx: fitContentWidthSx
|
|
249
|
+
});
|
|
244
250
|
};
|
|
@@ -17,7 +17,7 @@ import userEvent from '@testing-library/user-event';
|
|
|
17
17
|
import statuses from '../../utils/devUtils/constants/statuses';
|
|
18
18
|
import { universalComponentTests } from '../../utils/testUtils/universalComponentTest';
|
|
19
19
|
import { universalFieldComponentTests } from '../../utils/testUtils/universalFormSubmitTest';
|
|
20
|
-
import FileInputField from './FileInputField';
|
|
20
|
+
import FileInputField, { filterFileTypes } from './FileInputField';
|
|
21
21
|
import { jsx as ___EmotionJSX } from "@emotion/react";
|
|
22
22
|
var fileInputFieldTestId = 'file-input-test-id';
|
|
23
23
|
var testLabel = 'file-input-test-label';
|
|
@@ -33,7 +33,7 @@ var testFileName = 'chucknorris.png';
|
|
|
33
33
|
var testFileName2 = 'chucknorris222.png';
|
|
34
34
|
var testFileName3 = 'document.pdf';
|
|
35
35
|
var testFile = new File(['(⌐□_□)'], testFileName, {
|
|
36
|
-
type: '
|
|
36
|
+
type: 'text/plain'
|
|
37
37
|
});
|
|
38
38
|
var testFile2 = new File(['(⌐□_□)'], testFileName2, {
|
|
39
39
|
type: 'image/png'
|
|
@@ -240,4 +240,54 @@ test('File upload should allow only image', function () {
|
|
|
240
240
|
var val = screen.queryByText('document');
|
|
241
241
|
expect(val).not.toBeInTheDocument();
|
|
242
242
|
expect(setStateMock).toHaveBeenCalled();
|
|
243
|
+
});
|
|
244
|
+
describe('filterFileTypes', function () {
|
|
245
|
+
it('returns a list of files', function () {
|
|
246
|
+
var results = filterFileTypes({
|
|
247
|
+
arrayWithNewFiles: [testFile, testFile2]
|
|
248
|
+
});
|
|
249
|
+
expect(results.length).toBe(2);
|
|
250
|
+
});
|
|
251
|
+
it('filters file types', function () {
|
|
252
|
+
var results = filterFileTypes({
|
|
253
|
+
arrayWithNewFiles: [{
|
|
254
|
+
name: 'shark',
|
|
255
|
+
type: 'text/plain'
|
|
256
|
+
}, {
|
|
257
|
+
name: 'shark',
|
|
258
|
+
type: 'image/png'
|
|
259
|
+
}],
|
|
260
|
+
fileTypes: ['text/plain']
|
|
261
|
+
});
|
|
262
|
+
expect(results.length).toBe(1);
|
|
263
|
+
});
|
|
264
|
+
it('filters file image types', function () {
|
|
265
|
+
var results = filterFileTypes({
|
|
266
|
+
arrayWithNewFiles: [{
|
|
267
|
+
name: 'shark',
|
|
268
|
+
type: 'text/plain'
|
|
269
|
+
}, {
|
|
270
|
+
name: 'shark',
|
|
271
|
+
type: 'image/png'
|
|
272
|
+
}],
|
|
273
|
+
fileTypes: ['image']
|
|
274
|
+
});
|
|
275
|
+
expect(results.length).toBe(1);
|
|
276
|
+
});
|
|
277
|
+
it('filters custom file types', function () {
|
|
278
|
+
var results = filterFileTypes({
|
|
279
|
+
arrayWithNewFiles: [{
|
|
280
|
+
name: 'shark',
|
|
281
|
+
type: '.p8'
|
|
282
|
+
}, {
|
|
283
|
+
name: 'shark',
|
|
284
|
+
type: '.xml'
|
|
285
|
+
}, {
|
|
286
|
+
name: 'shark',
|
|
287
|
+
type: '.xml'
|
|
288
|
+
}],
|
|
289
|
+
fileTypes: ['.p8']
|
|
290
|
+
});
|
|
291
|
+
expect(results.length).toBe(1);
|
|
292
|
+
});
|
|
243
293
|
});
|