@paprika/uploader 3.0.15-next.1 → 4.0.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/CHANGELOG.md +82 -0
- package/README.md +2 -1
- package/lib/Uploader.js +21 -14
- package/lib/Uploader.js.map +1 -1
- package/lib/components/DropZone/DropZone.js +5 -2
- package/lib/components/DropZone/DropZone.js.map +1 -1
- package/lib/components/File/File.js +6 -3
- package/lib/components/File/File.js.map +1 -1
- package/lib/index.d.ts +4 -2
- package/lib/useDragAndDropEvents.js +2 -3
- package/lib/useDragAndDropEvents.js.map +1 -1
- package/lib/useProcessFiles.js +8 -9
- package/lib/useProcessFiles.js.map +1 -1
- package/package.json +8 -8
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,87 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## 4.0.0
|
|
4
|
+
|
|
5
|
+
### Major Changes
|
|
6
|
+
|
|
7
|
+
- da0d2bc: - Replaced `defaultIsDisabled` prop by `isDisabled` prop
|
|
8
|
+
|
|
9
|
+
- Added `zIndex` prop
|
|
10
|
+
|
|
11
|
+
#### why the change was made:
|
|
12
|
+
|
|
13
|
+
`defaultIsDisabled` can't be changed once mount.
|
|
14
|
+
|
|
15
|
+
#### 👷 Moving from 3.x.x to 4.x.x:
|
|
16
|
+
|
|
17
|
+
If you didn't use `defaultIsDisabled`, you don't need to do anything. Otherwise:
|
|
18
|
+
|
|
19
|
+
Before:
|
|
20
|
+
|
|
21
|
+
```jsx
|
|
22
|
+
<Uploader defaultIsDisabled={true} />
|
|
23
|
+
```
|
|
24
|
+
|
|
25
|
+
After:
|
|
26
|
+
|
|
27
|
+
```jsx
|
|
28
|
+
<Uploader isDisabled={true} />
|
|
29
|
+
```
|
|
30
|
+
|
|
31
|
+
### Patch Changes
|
|
32
|
+
|
|
33
|
+
- Updated dependencies [0dcf307]
|
|
34
|
+
- Updated dependencies [0bf34d9]
|
|
35
|
+
- Updated dependencies [0dcf307]
|
|
36
|
+
- Updated dependencies [9ac6aca]
|
|
37
|
+
- @paprika/popover@2.0.4
|
|
38
|
+
- @paprika/helpers@2.3.0
|
|
39
|
+
- @paprika/tokens@2.0.0
|
|
40
|
+
- @paprika/button@1.1.12
|
|
41
|
+
- @paprika/icon@2.1.7
|
|
42
|
+
- @paprika/raw-button@1.0.12
|
|
43
|
+
- @paprika/stylers@1.1.6
|
|
44
|
+
|
|
45
|
+
## 4.0.0-next.3
|
|
46
|
+
|
|
47
|
+
### Patch Changes
|
|
48
|
+
|
|
49
|
+
- Updated dependencies [9ac6aca]
|
|
50
|
+
- @paprika/tokens@2.0.0-next.1
|
|
51
|
+
- @paprika/button@1.1.12-next.2
|
|
52
|
+
- @paprika/icon@2.1.7-next.1
|
|
53
|
+
- @paprika/popover@2.0.4-next.2
|
|
54
|
+
- @paprika/raw-button@1.0.12-next.1
|
|
55
|
+
- @paprika/stylers@1.1.6-next.1
|
|
56
|
+
|
|
57
|
+
## 4.0.0-next.2
|
|
58
|
+
|
|
59
|
+
### Major Changes
|
|
60
|
+
|
|
61
|
+
- da0d2bc: - Replaced `defaultIsDisabled` prop by `isDisabled` prop
|
|
62
|
+
|
|
63
|
+
- Added `zIndex` prop
|
|
64
|
+
|
|
65
|
+
#### why the change was made:
|
|
66
|
+
|
|
67
|
+
`defaultIsDisabled` can't be changed once mount.
|
|
68
|
+
|
|
69
|
+
#### 👷 Moving from 3.x.x to 4.x.x:
|
|
70
|
+
|
|
71
|
+
If you didn't use `defaultIsDisabled`, you don't need to do anything. Otherwise:
|
|
72
|
+
|
|
73
|
+
Before:
|
|
74
|
+
|
|
75
|
+
```jsx
|
|
76
|
+
<Uploader defaultIsDisabled={true} />
|
|
77
|
+
```
|
|
78
|
+
|
|
79
|
+
After:
|
|
80
|
+
|
|
81
|
+
```jsx
|
|
82
|
+
<Uploader isDisabled={true} />
|
|
83
|
+
```
|
|
84
|
+
|
|
3
85
|
## 3.0.15-next.1
|
|
4
86
|
|
|
5
87
|
### Patch Changes
|
package/README.md
CHANGED
|
@@ -28,7 +28,7 @@ npm install @paprika/uploader
|
|
|
28
28
|
| supportedMimeTypes | arrayOf | false | ["*/*"] | An array of accepted file extensions and/or MIME types. Note that Microsoft MIME types don't seem to be enforced. |
|
|
29
29
|
| canChooseMultiple | bool | false | true | When false the uploader only accept one file per upload. |
|
|
30
30
|
| children | node | true | - | children nodes |
|
|
31
|
-
|
|
|
31
|
+
| isDisabled | bool | false | false | Is uploader disabled. |
|
|
32
32
|
| endpoint | string | true | - | The url that will be use to upload the files. |
|
|
33
33
|
| hasAutoUpload | bool | false | true | On true will upload the file as soon they are selected or dropped |
|
|
34
34
|
| isBodyDroppable | bool | false | true | When true the user will be able to drop files at any part of the document.body. On false will only receive files dropped exactly on the FileInput area. |
|
|
@@ -40,6 +40,7 @@ npm install @paprika/uploader
|
|
|
40
40
|
| onRequest | func | false | null | Let you to take over the request method |
|
|
41
41
|
| onError | func | false | null | Callback fired whenever an error occurs while uploading a file. It receives the raw server error as an argument. Whatever this function returns is what is displayed in the UI. If nothing is returned, it will display the raw server error. |
|
|
42
42
|
| onCancel | func | false | () => {} | Callback fired when the user cancels an uploading file. |
|
|
43
|
+
| zIndex | number | false | 1 | z-index for popovers inside the uploader. |
|
|
43
44
|
|
|
44
45
|
<!-- end: Autogenerated - do not modify -->
|
|
45
46
|
<!-- content -->
|
package/lib/Uploader.js
CHANGED
|
@@ -40,7 +40,7 @@ var _useProcessFiles2 = _interopRequireDefault(require("./useProcessFiles"));
|
|
|
40
40
|
|
|
41
41
|
var _UploaderInputPropsCollector = _interopRequireDefault(require("./components/UploaderInputPropsCollector"));
|
|
42
42
|
|
|
43
|
-
var _excluded = ["a11yText", "canChooseMultiple", "children", "
|
|
43
|
+
var _excluded = ["a11yText", "canChooseMultiple", "children", "endpoint", "hasAutoUpload", "headers", "isBodyDroppable", "isDisabled", "maxFileSize", "onCancel", "onChange", "onCompleted", "onError", "onProcessed", "onRequest", "supportedMimeTypes", "zIndex"];
|
|
44
44
|
|
|
45
45
|
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); }
|
|
46
46
|
|
|
@@ -73,9 +73,9 @@ var propTypes = {
|
|
|
73
73
|
children: _propTypes["default"].node.isRequired,
|
|
74
74
|
|
|
75
75
|
/**
|
|
76
|
-
|
|
76
|
+
Is uploader disabled.
|
|
77
77
|
*/
|
|
78
|
-
|
|
78
|
+
isDisabled: _propTypes["default"].bool,
|
|
79
79
|
|
|
80
80
|
/**
|
|
81
81
|
The url that will be use to upload the files.
|
|
@@ -130,12 +130,17 @@ var propTypes = {
|
|
|
130
130
|
/**
|
|
131
131
|
* Callback fired when the user cancels an uploading file.
|
|
132
132
|
*/
|
|
133
|
-
onCancel: _propTypes["default"].func
|
|
133
|
+
onCancel: _propTypes["default"].func,
|
|
134
|
+
|
|
135
|
+
/**
|
|
136
|
+
* z-index for popovers inside the uploader.
|
|
137
|
+
*/
|
|
138
|
+
zIndex: _propTypes["default"].number
|
|
134
139
|
};
|
|
135
140
|
var defaultProps = {
|
|
136
141
|
a11yText: null,
|
|
137
142
|
canChooseMultiple: true,
|
|
138
|
-
|
|
143
|
+
isDisabled: false,
|
|
139
144
|
hasAutoUpload: true,
|
|
140
145
|
headers: [],
|
|
141
146
|
isBodyDroppable: true,
|
|
@@ -147,7 +152,8 @@ var defaultProps = {
|
|
|
147
152
|
onError: null,
|
|
148
153
|
onProcessed: function onProcessed() {},
|
|
149
154
|
onRequest: null,
|
|
150
|
-
supportedMimeTypes: ["*/*"]
|
|
155
|
+
supportedMimeTypes: ["*/*"],
|
|
156
|
+
zIndex: 1
|
|
151
157
|
};
|
|
152
158
|
|
|
153
159
|
function getDocumentBody() {
|
|
@@ -164,11 +170,11 @@ var Uploader = /*#__PURE__*/_react["default"].forwardRef(function (props, ref) {
|
|
|
164
170
|
var a11yText = props.a11yText,
|
|
165
171
|
canChooseMultiple = props.canChooseMultiple,
|
|
166
172
|
children = props.children,
|
|
167
|
-
defaultIsDisabled = props.defaultIsDisabled,
|
|
168
173
|
endpoint = props.endpoint,
|
|
169
174
|
hasAutoUpload = props.hasAutoUpload,
|
|
170
175
|
headers = props.headers,
|
|
171
176
|
isBodyDroppable = props.isBodyDroppable,
|
|
177
|
+
isDisabled = props.isDisabled,
|
|
172
178
|
maxFileSize = props.maxFileSize,
|
|
173
179
|
onCancel = props.onCancel,
|
|
174
180
|
onChange = props.onChange,
|
|
@@ -177,6 +183,7 @@ var Uploader = /*#__PURE__*/_react["default"].forwardRef(function (props, ref) {
|
|
|
177
183
|
onProcessed = props.onProcessed,
|
|
178
184
|
onRequest = props.onRequest,
|
|
179
185
|
supportedMimeTypes = props.supportedMimeTypes,
|
|
186
|
+
zIndex = props.zIndex,
|
|
180
187
|
morePropsOnUploaderWrapper = (0, _objectWithoutProperties2["default"])(props, _excluded);
|
|
181
188
|
|
|
182
189
|
var refInput = _react["default"].useRef();
|
|
@@ -196,7 +203,6 @@ var Uploader = /*#__PURE__*/_react["default"].forwardRef(function (props, ref) {
|
|
|
196
203
|
});
|
|
197
204
|
|
|
198
205
|
var _useProcessFiles = (0, _useProcessFiles2["default"])({
|
|
199
|
-
defaultIsDisabled: defaultIsDisabled,
|
|
200
206
|
endpoint: endpoint,
|
|
201
207
|
hasAutoUpload: hasAutoUpload,
|
|
202
208
|
headers: headers,
|
|
@@ -206,14 +212,14 @@ var Uploader = /*#__PURE__*/_react["default"].forwardRef(function (props, ref) {
|
|
|
206
212
|
}),
|
|
207
213
|
files = _useProcessFiles.files,
|
|
208
214
|
isCompleted = _useProcessFiles.isCompleted,
|
|
209
|
-
|
|
215
|
+
isBusy = _useProcessFiles.isBusy,
|
|
210
216
|
removeFile = _useProcessFiles.removeFile,
|
|
211
217
|
cancelFile = _useProcessFiles.cancelFile,
|
|
212
218
|
setFiles = _useProcessFiles.setFiles,
|
|
213
219
|
upload = _useProcessFiles.upload;
|
|
214
220
|
|
|
215
221
|
var handleChange = _react["default"].useCallback(function (event) {
|
|
216
|
-
if (isDisabled) return;
|
|
222
|
+
if (isDisabled || isBusy) return;
|
|
217
223
|
var files = (0, _helpers2.getFiles)({
|
|
218
224
|
event: event,
|
|
219
225
|
maxFileSize: maxFileSize,
|
|
@@ -228,12 +234,11 @@ var Uploader = /*#__PURE__*/_react["default"].forwardRef(function (props, ref) {
|
|
|
228
234
|
return canChooseMultiple ? files : [files[0]]; // in case only allow one file per upload
|
|
229
235
|
});
|
|
230
236
|
onChange(files);
|
|
231
|
-
}, [canChooseMultiple, endpoint, isDisabled, maxFileSize, setFiles, supportedMimeTypes, onChange]);
|
|
237
|
+
}, [canChooseMultiple, endpoint, isDisabled, isBusy, maxFileSize, setFiles, supportedMimeTypes, onChange]);
|
|
232
238
|
|
|
233
239
|
var _useDragAndDropEvents = (0, _useDragAndDropEvents2["default"])({
|
|
234
240
|
dropArea: isBodyDroppable ? getDocumentBody : getContainer(refContainer),
|
|
235
|
-
handleChange: handleChange
|
|
236
|
-
defaultIsDisabled: defaultIsDisabled
|
|
241
|
+
handleChange: handleChange
|
|
237
242
|
}),
|
|
238
243
|
isDragLeave = _useDragAndDropEvents.isDragLeave,
|
|
239
244
|
isDraggingOver = _useDragAndDropEvents.isDraggingOver;
|
|
@@ -244,6 +249,7 @@ var Uploader = /*#__PURE__*/_react["default"].forwardRef(function (props, ref) {
|
|
|
244
249
|
extendedInputProps: extendedInputProps,
|
|
245
250
|
files: files,
|
|
246
251
|
handleChange: handleChange,
|
|
252
|
+
isBusy: isBusy,
|
|
247
253
|
isCompleted: isCompleted,
|
|
248
254
|
isDisabled: isDisabled,
|
|
249
255
|
isDraggingOver: isDraggingOver,
|
|
@@ -257,7 +263,8 @@ var Uploader = /*#__PURE__*/_react["default"].forwardRef(function (props, ref) {
|
|
|
257
263
|
refInput: refInput,
|
|
258
264
|
removeFile: removeFile,
|
|
259
265
|
supportedMimeTypes: supportedMimeTypes,
|
|
260
|
-
upload: upload
|
|
266
|
+
upload: upload,
|
|
267
|
+
zIndex: zIndex
|
|
261
268
|
};
|
|
262
269
|
return /*#__PURE__*/_react["default"].createElement(UploaderContext.Provider, {
|
|
263
270
|
value: value
|
package/lib/Uploader.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/Uploader.js"],"names":["oneMebibyte","UploaderContext","React","createContext","propTypes","a11yText","PropTypes","string","supportedMimeTypes","arrayOf","canChooseMultiple","bool","children","node","isRequired","defaultIsDisabled","endpoint","hasAutoUpload","isBodyDroppable","maxFileSize","number","onChange","func","onCompleted","headers","object","onProcessed","onRequest","onError","onCancel","defaultProps","getDocumentBody","document","body","getContainer","refContainer","findContainer","current","Uploader","forwardRef","props","ref","morePropsOnUploaderWrapper","refInput","useRef","i18n","label","t","extendedInputProps","UploaderInputPropsCollector","useImperativeHandle","focus","files","isCompleted","isDisabled","removeFile","cancelFile","setFiles","upload","handleChange","useCallback","event","value","dropArea","isDragLeave","isDraggingOver","displayName","types","DropZone","FileList","Input","convertUnitsToMebibytes","MiB"],"mappings":"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","sourcesContent":["import React from \"react\";\nimport PropTypes from \"prop-types\";\nimport useI18n from \"@paprika/l10n/lib/useI18n\";\nimport { extractChildrenProps } from \"@paprika/helpers\";\nimport { getFiles } from \"./helpers\";\nimport FileList from \"./components/FileList\";\nimport DropZone from \"./components/DropZone\";\nimport * as types from \"./types\";\nimport useDragAndDropEvents from \"./useDragAndDropEvents\";\nimport useProcessFiles from \"./useProcessFiles\";\nimport UploaderInputPropsCollector from \"./components/UploaderInputPropsCollector\";\n\nconst oneMebibyte = 1048576;\n\nexport const UploaderContext = React.createContext(null);\n\nconst propTypes = {\n /**\n Accessible message for the input[type=\"file\"].\n */\n a11yText: PropTypes.string,\n /**\n An array of accepted file extensions and/or MIME types. Note that Microsoft MIME types don't seem to be enforced.\n */\n supportedMimeTypes: PropTypes.arrayOf(PropTypes.string),\n /**\n When false the uploader only accept one file per upload.\n */\n canChooseMultiple: PropTypes.bool,\n /**\n children nodes\n */\n children: PropTypes.node.isRequired,\n /**\n initial disable state for the uploader\n */\n defaultIsDisabled: PropTypes.bool,\n /**\n The url that will be use to upload the files.\n */\n endpoint: PropTypes.string.isRequired,\n /**\n On true will upload the file as soon they are selected or dropped\n */\n hasAutoUpload: PropTypes.bool,\n /**\n When true the user will be able to drop files at any part of the document.body. On false will only receive files dropped exactly on the FileInput area.\n */\n isBodyDroppable: PropTypes.bool,\n /**\n Size in Mebibytes which is used for comparing each file that will be uploaded.\n */\n maxFileSize: PropTypes.number,\n /**\n This callback fires every time the input value has been changed.\n */\n onChange: PropTypes.func,\n /**\n Will fire once all files have been processed with the files as parameter.\n */\n onCompleted: PropTypes.func,\n /**\n you can pass an array of header objects.\n */\n headers: PropTypes.arrayOf(PropTypes.object),\n /**\n This callback fires when uploading is about to start (all files have been processed to see if they are valid type/size).\n */\n onProcessed: PropTypes.func,\n /**\n * Let you to take over the request method\n */\n onRequest: PropTypes.func,\n /**\n * Callback fired whenever an error occurs while uploading a file. It receives the raw server error as an argument. Whatever this function returns is what is displayed in the UI. If nothing is returned, it will display the raw server error.\n */\n onError: PropTypes.func,\n /**\n * Callback fired when the user cancels an uploading file.\n */\n onCancel: PropTypes.func,\n};\n\nconst defaultProps = {\n a11yText: null,\n canChooseMultiple: true,\n defaultIsDisabled: false,\n hasAutoUpload: true,\n headers: [],\n isBodyDroppable: true,\n maxFileSize: oneMebibyte * 10, // 1048576bytes * 10 = 10,485,760 Mebibytes\n onCancel: () => {},\n onChange: () => {},\n onCompleted: () => {},\n onError: null,\n onProcessed: () => {},\n onRequest: null,\n supportedMimeTypes: [\"*/*\"],\n};\n\nfunction getDocumentBody() {\n return document.body;\n}\n\nfunction getContainer(refContainer) {\n return function findContainer() {\n return refContainer.current;\n };\n}\n\nconst Uploader = React.forwardRef((props, ref) => {\n const {\n a11yText,\n canChooseMultiple,\n children,\n defaultIsDisabled,\n endpoint,\n hasAutoUpload,\n headers,\n isBodyDroppable,\n maxFileSize,\n onCancel,\n onChange,\n onCompleted,\n onError,\n onProcessed,\n onRequest,\n supportedMimeTypes,\n ...morePropsOnUploaderWrapper\n } = props;\n\n const refInput = React.useRef();\n const refContainer = React.useRef(null);\n const i18n = useI18n();\n const label = a11yText || i18n.t(\"uploader.choose_from_computer_a11y\");\n const extendedInputProps = extractChildrenProps(children, UploaderInputPropsCollector);\n\n React.useImperativeHandle(ref, () => ({\n focus: () => {\n refInput.current.focus();\n },\n }));\n\n const { files, isCompleted, isDisabled, removeFile, cancelFile, setFiles, upload } = useProcessFiles({\n defaultIsDisabled,\n endpoint,\n hasAutoUpload,\n headers,\n onCompleted,\n onProcessed,\n onRequest,\n });\n\n const handleChange = React.useCallback(\n event => {\n if (isDisabled) return;\n\n const files = getFiles({ event, maxFileSize, supportedMimeTypes, endpoint });\n setFiles(() => {\n if (refInput.current) {\n refInput.current.value = \"\";\n }\n return canChooseMultiple ? files : [files[0]]; // in case only allow one file per upload\n });\n onChange(files);\n },\n [canChooseMultiple, endpoint, isDisabled, maxFileSize, setFiles, supportedMimeTypes, onChange]\n );\n\n const { isDragLeave, isDraggingOver } = useDragAndDropEvents({\n dropArea: isBodyDroppable ? getDocumentBody : getContainer(refContainer),\n handleChange,\n defaultIsDisabled,\n });\n\n const value = {\n cancelFile,\n canChooseMultiple,\n extendedInputProps,\n files,\n handleChange,\n isCompleted,\n isDisabled,\n isDraggingOver,\n isDragLeave,\n label,\n maxFileSize,\n morePropsOnUploaderWrapper,\n onCancel,\n onError,\n refContainer,\n refInput,\n removeFile,\n supportedMimeTypes,\n upload,\n };\n\n return <UploaderContext.Provider value={value}>{children}</UploaderContext.Provider>;\n});\n\nUploader.defaultProps = defaultProps;\nUploader.propTypes = propTypes;\nUploader.displayName = \"Uploader\";\nUploader.types = types;\n\nUploader.DropZone = DropZone;\nUploader.FileList = FileList;\nUploader.Input = UploaderInputPropsCollector;\n\n// utility tool to help creating a maximum desirable size for files\nUploader.convertUnitsToMebibytes = (MiB = 1) => oneMebibyte * MiB;\n\nexport default Uploader;\n"],"file":"Uploader.js"}
|
|
1
|
+
{"version":3,"sources":["../src/Uploader.js"],"names":["oneMebibyte","UploaderContext","React","createContext","propTypes","a11yText","PropTypes","string","supportedMimeTypes","arrayOf","canChooseMultiple","bool","children","node","isRequired","isDisabled","endpoint","hasAutoUpload","isBodyDroppable","maxFileSize","number","onChange","func","onCompleted","headers","object","onProcessed","onRequest","onError","onCancel","zIndex","defaultProps","getDocumentBody","document","body","getContainer","refContainer","findContainer","current","Uploader","forwardRef","props","ref","morePropsOnUploaderWrapper","refInput","useRef","i18n","label","t","extendedInputProps","UploaderInputPropsCollector","useImperativeHandle","focus","files","isCompleted","isBusy","removeFile","cancelFile","setFiles","upload","handleChange","useCallback","event","value","dropArea","isDragLeave","isDraggingOver","displayName","types","DropZone","FileList","Input","convertUnitsToMebibytes","MiB"],"mappings":"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","sourcesContent":["import React from \"react\";\nimport PropTypes from \"prop-types\";\nimport useI18n from \"@paprika/l10n/lib/useI18n\";\nimport { extractChildrenProps } from \"@paprika/helpers\";\nimport { getFiles } from \"./helpers\";\nimport FileList from \"./components/FileList\";\nimport DropZone from \"./components/DropZone\";\nimport * as types from \"./types\";\nimport useDragAndDropEvents from \"./useDragAndDropEvents\";\nimport useProcessFiles from \"./useProcessFiles\";\nimport UploaderInputPropsCollector from \"./components/UploaderInputPropsCollector\";\n\nconst oneMebibyte = 1048576;\n\nexport const UploaderContext = React.createContext(null);\n\nconst propTypes = {\n /**\n Accessible message for the input[type=\"file\"].\n */\n a11yText: PropTypes.string,\n /**\n An array of accepted file extensions and/or MIME types. Note that Microsoft MIME types don't seem to be enforced.\n */\n supportedMimeTypes: PropTypes.arrayOf(PropTypes.string),\n /**\n When false the uploader only accept one file per upload.\n */\n canChooseMultiple: PropTypes.bool,\n /**\n children nodes\n */\n children: PropTypes.node.isRequired,\n /**\n Is uploader disabled.\n */\n isDisabled: PropTypes.bool,\n /**\n The url that will be use to upload the files.\n */\n endpoint: PropTypes.string.isRequired,\n /**\n On true will upload the file as soon they are selected or dropped\n */\n hasAutoUpload: PropTypes.bool,\n /**\n When true the user will be able to drop files at any part of the document.body. On false will only receive files dropped exactly on the FileInput area.\n */\n isBodyDroppable: PropTypes.bool,\n /**\n Size in Mebibytes which is used for comparing each file that will be uploaded.\n */\n maxFileSize: PropTypes.number,\n /**\n This callback fires every time the input value has been changed.\n */\n onChange: PropTypes.func,\n /**\n Will fire once all files have been processed with the files as parameter.\n */\n onCompleted: PropTypes.func,\n /**\n you can pass an array of header objects.\n */\n headers: PropTypes.arrayOf(PropTypes.object),\n /**\n This callback fires when uploading is about to start (all files have been processed to see if they are valid type/size).\n */\n onProcessed: PropTypes.func,\n /**\n * Let you to take over the request method\n */\n onRequest: PropTypes.func,\n /**\n * Callback fired whenever an error occurs while uploading a file. It receives the raw server error as an argument. Whatever this function returns is what is displayed in the UI. If nothing is returned, it will display the raw server error.\n */\n onError: PropTypes.func,\n /**\n * Callback fired when the user cancels an uploading file.\n */\n onCancel: PropTypes.func,\n /**\n * z-index for popovers inside the uploader.\n */\n zIndex: PropTypes.number,\n};\n\nconst defaultProps = {\n a11yText: null,\n canChooseMultiple: true,\n isDisabled: false,\n hasAutoUpload: true,\n headers: [],\n isBodyDroppable: true,\n maxFileSize: oneMebibyte * 10, // 1048576bytes * 10 = 10,485,760 Mebibytes\n onCancel: () => {},\n onChange: () => {},\n onCompleted: () => {},\n onError: null,\n onProcessed: () => {},\n onRequest: null,\n supportedMimeTypes: [\"*/*\"],\n zIndex: 1,\n};\n\nfunction getDocumentBody() {\n return document.body;\n}\n\nfunction getContainer(refContainer) {\n return function findContainer() {\n return refContainer.current;\n };\n}\n\nconst Uploader = React.forwardRef((props, ref) => {\n const {\n a11yText,\n canChooseMultiple,\n children,\n endpoint,\n hasAutoUpload,\n headers,\n isBodyDroppable,\n isDisabled,\n maxFileSize,\n onCancel,\n onChange,\n onCompleted,\n onError,\n onProcessed,\n onRequest,\n supportedMimeTypes,\n zIndex,\n ...morePropsOnUploaderWrapper\n } = props;\n\n const refInput = React.useRef();\n const refContainer = React.useRef(null);\n const i18n = useI18n();\n const label = a11yText || i18n.t(\"uploader.choose_from_computer_a11y\");\n const extendedInputProps = extractChildrenProps(children, UploaderInputPropsCollector);\n\n React.useImperativeHandle(ref, () => ({\n focus: () => {\n refInput.current.focus();\n },\n }));\n\n const { files, isCompleted, isBusy, removeFile, cancelFile, setFiles, upload } = useProcessFiles({\n endpoint,\n hasAutoUpload,\n headers,\n onCompleted,\n onProcessed,\n onRequest,\n });\n\n const handleChange = React.useCallback(\n event => {\n if (isDisabled || isBusy) return;\n\n const files = getFiles({ event, maxFileSize, supportedMimeTypes, endpoint });\n setFiles(() => {\n if (refInput.current) {\n refInput.current.value = \"\";\n }\n return canChooseMultiple ? files : [files[0]]; // in case only allow one file per upload\n });\n onChange(files);\n },\n [canChooseMultiple, endpoint, isDisabled, isBusy, maxFileSize, setFiles, supportedMimeTypes, onChange]\n );\n\n const { isDragLeave, isDraggingOver } = useDragAndDropEvents({\n dropArea: isBodyDroppable ? getDocumentBody : getContainer(refContainer),\n handleChange,\n });\n\n const value = {\n cancelFile,\n canChooseMultiple,\n extendedInputProps,\n files,\n handleChange,\n isBusy,\n isCompleted,\n isDisabled,\n isDraggingOver,\n isDragLeave,\n label,\n maxFileSize,\n morePropsOnUploaderWrapper,\n onCancel,\n onError,\n refContainer,\n refInput,\n removeFile,\n supportedMimeTypes,\n upload,\n zIndex,\n };\n\n return <UploaderContext.Provider value={value}>{children}</UploaderContext.Provider>;\n});\n\nUploader.defaultProps = defaultProps;\nUploader.propTypes = propTypes;\nUploader.displayName = \"Uploader\";\nUploader.types = types;\n\nUploader.DropZone = DropZone;\nUploader.FileList = FileList;\nUploader.Input = UploaderInputPropsCollector;\n\n// utility tool to help creating a maximum desirable size for files\nUploader.convertUnitsToMebibytes = (MiB = 1) => oneMebibyte * MiB;\n\nexport default Uploader;\n"],"file":"Uploader.js"}
|
|
@@ -50,7 +50,9 @@ var DropZone = /*#__PURE__*/_react["default"].memo(function () {
|
|
|
50
50
|
morePropsOnUploaderWrapper = _React$useContext.morePropsOnUploaderWrapper,
|
|
51
51
|
refContainer = _React$useContext.refContainer,
|
|
52
52
|
refInput = _React$useContext.refInput,
|
|
53
|
-
supportedMimeTypes = _React$useContext.supportedMimeTypes
|
|
53
|
+
supportedMimeTypes = _React$useContext.supportedMimeTypes,
|
|
54
|
+
isBusy = _React$useContext.isBusy,
|
|
55
|
+
isDisabled = _React$useContext.isDisabled;
|
|
54
56
|
|
|
55
57
|
var uploadIconColor = isDraggingOver ? _tokens["default"].color.purpleDarken10 : _tokens["default"].color.blackLighten50;
|
|
56
58
|
var body = isDraggingOver ? I18n.t("uploader.drop_files") : /*#__PURE__*/_react["default"].createElement(_react["default"].Fragment, null, I18n.t("uploader.drop_files_here_or"), "\xA0", /*#__PURE__*/_react["default"].createElement(sc.DropZoneButton, {
|
|
@@ -60,7 +62,8 @@ var DropZone = /*#__PURE__*/_react["default"].memo(function () {
|
|
|
60
62
|
refInput.current.click();
|
|
61
63
|
},
|
|
62
64
|
isSemantic: false,
|
|
63
|
-
tabIndex: -1
|
|
65
|
+
tabIndex: -1,
|
|
66
|
+
isDisabled: isDisabled || isBusy
|
|
64
67
|
}, I18n.t("uploader.choose_from_computer")));
|
|
65
68
|
return /*#__PURE__*/_react["default"].createElement("div", (0, _extends2["default"])({
|
|
66
69
|
ref: refContainer,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/components/DropZone/DropZone.js"],"names":["DropZone","React","memo","I18n","useContext","UploaderContext","canChooseMultiple","extendedInputProps","handleChange","isDraggingOver","label","morePropsOnUploaderWrapper","refContainer","refInput","supportedMimeTypes","uploadIconColor","tokens","color","purpleDarken10","blackLighten50","body","t","Button","types","kind","LINK","current","click","join","stylers","spacer"],"mappings":";;;;;;;;;;;;;;;;;;;;AAAA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;;;;;AAEA,IAAMA,QAAQ,gBAAGC,kBAAMC,IAAN,CAAW,YAAM;AAChC,MAAMC,IAAI,GAAG,0BAAb;;AACA,
|
|
1
|
+
{"version":3,"sources":["../../../src/components/DropZone/DropZone.js"],"names":["DropZone","React","memo","I18n","useContext","UploaderContext","canChooseMultiple","extendedInputProps","handleChange","isDraggingOver","label","morePropsOnUploaderWrapper","refContainer","refInput","supportedMimeTypes","isBusy","isDisabled","uploadIconColor","tokens","color","purpleDarken10","blackLighten50","body","t","Button","types","kind","LINK","current","click","join","stylers","spacer"],"mappings":";;;;;;;;;;;;;;;;;;;;AAAA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;;;;;AAEA,IAAMA,QAAQ,gBAAGC,kBAAMC,IAAN,CAAW,YAAM;AAChC,MAAMC,IAAI,GAAG,0BAAb;;AACA,0BAYIF,kBAAMG,UAAN,CAAiBC,yBAAjB,CAZJ;AAAA,MACEC,iBADF,qBACEA,iBADF;AAAA,MAEEC,kBAFF,qBAEEA,kBAFF;AAAA,MAGEC,YAHF,qBAGEA,YAHF;AAAA,MAIEC,cAJF,qBAIEA,cAJF;AAAA,MAKEC,KALF,qBAKEA,KALF;AAAA,MAMEC,0BANF,qBAMEA,0BANF;AAAA,MAOEC,YAPF,qBAOEA,YAPF;AAAA,MAQEC,QARF,qBAQEA,QARF;AAAA,MASEC,kBATF,qBASEA,kBATF;AAAA,MAUEC,MAVF,qBAUEA,MAVF;AAAA,MAWEC,UAXF,qBAWEA,UAXF;;AAaA,MAAMC,eAAe,GAAGR,cAAc,GAAGS,mBAAOC,KAAP,CAAaC,cAAhB,GAAiCF,mBAAOC,KAAP,CAAaE,cAApF;AAEA,MAAMC,IAAI,GAAGb,cAAc,GACzBN,IAAI,CAACoB,CAAL,CAAO,qBAAP,CADyB,gBAGzB,kEACGpB,IAAI,CAACoB,CAAL,CAAO,6BAAP,CADH,uBAEE,gCAAC,EAAD,CAAI,cAAJ;AACE,uBAAgB,wBADlB;AAEE,IAAA,IAAI,EAAEC,mBAAOC,KAAP,CAAaC,IAAb,CAAkBC,IAF1B;AAGE,IAAA,OAAO,EAAE,mBAAM;AACbd,MAAAA,QAAQ,CAACe,OAAT,CAAiBC,KAAjB;AACD,KALH;AAME,IAAA,UAAU,EAAE,KANd;AAOE,IAAA,QAAQ,EAAE,CAAC,CAPb;AAQE,IAAA,UAAU,EAAEb,UAAU,IAAID;AAR5B,KAUGZ,IAAI,CAACoB,CAAL,CAAO,+BAAP,CAVH,CAFF,CAHF;AAoBA,sBACE;AAAK,IAAA,GAAG,EAAEX,YAAV;AAAwB,uBAAgB;AAAxC,KAAuDD,0BAAvD,gBACE,gCAAC,EAAD,CAAI,KAAJ;AACE,uBAAgB,gBADlB;AAEE,IAAA,QAAQ,EAAEL,iBAFZ;AAGE,IAAA,QAAQ,EAAEE,YAHZ;AAIE,IAAA,GAAG,EAAEK,QAJP;AAKE,IAAA,IAAI,EAAC,MALP;AAME,IAAA,MAAM,EAAEC,kBAAkB,CAACgB,IAAnB,CAAwB,GAAxB,CANV;AAOE,kBAAYpB;AAPd,KAQMH,kBARN,EADF,eAWE,gCAAC,EAAD,CAAI,QAAJ;AAAa,uBAAb;AAAyB,IAAA,cAAc,EAAEE;AAAzC,kBACE,gCAAC,EAAD,CAAI,YAAJ,qBACE,gCAAC,kBAAD;AAAY,uBAAgB,8BAA5B;AAA2D,IAAA,IAAI,EAAEsB,oBAAQC,MAAR,CAAe,CAAf,CAAjE;AAAoF,IAAA,KAAK,EAAEf;AAA3F,IADF,CADF,eAIE,gCAAC,EAAD,CAAI,IAAJ,QAAUK,IAAV,CAJF,CAXF,CADF;AAoBD,CAzDgB,CAAjB;;eA2DetB,Q","sourcesContent":["import React from \"react\";\nimport tokens from \"@paprika/tokens\";\nimport stylers from \"@paprika/stylers\";\nimport useI18n from \"@paprika/l10n/lib/useI18n\";\nimport Button from \"@paprika/button/lib/Button\";\nimport UploadIcon from \"@paprika/icon/lib/Upload\";\nimport { UploaderContext } from \"../../Uploader\";\nimport * as sc from \"./DropZone.styles\";\n\nconst DropZone = React.memo(() => {\n const I18n = useI18n();\n const {\n canChooseMultiple,\n extendedInputProps,\n handleChange,\n isDraggingOver,\n label,\n morePropsOnUploaderWrapper,\n refContainer,\n refInput,\n supportedMimeTypes,\n isBusy,\n isDisabled,\n } = React.useContext(UploaderContext);\n const uploadIconColor = isDraggingOver ? tokens.color.purpleDarken10 : tokens.color.blackLighten50;\n\n const body = isDraggingOver ? (\n I18n.t(\"uploader.drop_files\")\n ) : (\n <>\n {I18n.t(\"uploader.drop_files_here_or\")} \n <sc.DropZoneButton\n data-pka-anchor=\"uploader-dropZone-link\"\n kind={Button.types.kind.LINK}\n onClick={() => {\n refInput.current.click();\n }}\n isSemantic={false}\n tabIndex={-1}\n isDisabled={isDisabled || isBusy}\n >\n {I18n.t(\"uploader.choose_from_computer\")}\n </sc.DropZoneButton>\n </>\n );\n\n return (\n <div ref={refContainer} data-pka-anchor=\"uploader\" {...morePropsOnUploaderWrapper}>\n <sc.Input\n data-pka-anchor=\"uploader.input\"\n multiple={canChooseMultiple}\n onChange={handleChange}\n ref={refInput}\n type=\"file\"\n accept={supportedMimeTypes.join(\",\")}\n aria-label={label}\n {...extendedInputProps}\n />\n <sc.DropZone aria-hidden isDraggingOver={isDraggingOver}>\n <sc.DropZoneIcon>\n <UploadIcon data-pka-anchor=\"uploader-dropZone-uploadIcon\" size={stylers.spacer(4)} color={uploadIconColor} />\n </sc.DropZoneIcon>\n <sc.Body>{body}</sc.Body>\n </sc.DropZone>\n </div>\n );\n});\n\nexport default DropZone;\n"],"file":"DropZone.js"}
|
|
@@ -85,7 +85,8 @@ function File(props) {
|
|
|
85
85
|
onCancel = props.onCancel;
|
|
86
86
|
|
|
87
87
|
var _React$useContext = _react["default"].useContext(_Uploader.UploaderContext),
|
|
88
|
-
cancelFile = _React$useContext.cancelFile
|
|
88
|
+
cancelFile = _React$useContext.cancelFile,
|
|
89
|
+
zIndex = _React$useContext.zIndex;
|
|
89
90
|
|
|
90
91
|
var I18n = (0, _useI18n["default"])();
|
|
91
92
|
var sizeWithUnits = (0, _helpers.getNumberWithUnits)(I18n, size);
|
|
@@ -97,7 +98,8 @@ function File(props) {
|
|
|
97
98
|
case types.status.ERROR:
|
|
98
99
|
return /*#__PURE__*/_react["default"].createElement(_popover["default"], {
|
|
99
100
|
isDark: true,
|
|
100
|
-
isEager: true
|
|
101
|
+
isEager: true,
|
|
102
|
+
zIndex: zIndex
|
|
101
103
|
}, /*#__PURE__*/_react["default"].createElement(_popover["default"].Tip, null), /*#__PURE__*/_react["default"].createElement(_popover["default"].Trigger, {
|
|
102
104
|
"aria-label": I18n.t("uploader.restart_upload", {
|
|
103
105
|
name: name
|
|
@@ -120,7 +122,8 @@ function File(props) {
|
|
|
120
122
|
default:
|
|
121
123
|
return /*#__PURE__*/_react["default"].createElement(_popover["default"], {
|
|
122
124
|
isDark: true,
|
|
123
|
-
isEager: true
|
|
125
|
+
isEager: true,
|
|
126
|
+
zIndex: zIndex
|
|
124
127
|
}, /*#__PURE__*/_react["default"].createElement(_popover["default"].Tip, null), /*#__PURE__*/_react["default"].createElement(_popover["default"].Trigger, null, function (handler, a11yAttributes) {
|
|
125
128
|
return /*#__PURE__*/_react["default"].createElement(_button["default"].Icon, (0, _extends2["default"])({
|
|
126
129
|
onMouseOver: handler,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/components/File/File.js"],"names":["File","defaultProps","propTypes","types","status","error","PropTypes","string","fileKey","isRequired","name","onError","func","onCancel","progress","number","size","oneOf","map","key","props","React","useContext","UploaderContext","cancelFile","I18n","sizeWithUnits","progressWithUnits","a11yProgress","Math","floor","abs","renderIcon","ERROR","t","tokens","color","orange","CANCEL","SUCCESS","green","handler","a11yAttributes","Button","Icon","kind","MINOR","SMALL","textColor","icon","getProgressText","showA11yProgress","errorMessage","IDLE"],"mappings":"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","sourcesContent":["import React from \"react\";\nimport PropTypes from \"prop-types\";\nimport CheckIcon from \"@paprika/icon/lib/Check\";\nimport TimesIcon from \"@paprika/icon/lib/Times\";\nimport Caution from \"@paprika/icon/lib/Caution\";\n\nimport Button from \"@paprika/button\";\nimport useI18n from \"@paprika/l10n/lib/useI18n\";\nimport Popover from \"@paprika/popover\";\nimport tokens from \"@paprika/tokens\";\nimport { UploaderContext } from \"../../Uploader\";\nimport { getNumberWithUnits } from \"../../helpers\";\nimport * as types from \"../../types\";\nimport * as sc from \"./File.styles\";\n\nFile.defaultProps = defaultProps;\nFile.propTypes = propTypes;\n\nFile.types = {\n status: types.status,\n};\n\nconst propTypes = {\n error: PropTypes.string,\n fileKey: PropTypes.string.isRequired,\n name: PropTypes.string.isRequired,\n onError: PropTypes.func,\n onCancel: PropTypes.func,\n progress: PropTypes.number,\n size: PropTypes.number.isRequired,\n status: PropTypes.oneOf(Object.keys(File.types.status).map(key => File.types.status[key])).isRequired,\n};\n\nconst defaultProps = {\n error: \"\",\n onError: null,\n onCancel: null,\n progress: 0,\n};\n\nfunction File(props) {\n const { error, fileKey, name, progress, size, status, onError, onCancel } = props;\n\n const { cancelFile } = React.useContext(UploaderContext);\n const I18n = useI18n();\n const sizeWithUnits = getNumberWithUnits(I18n, size);\n const progressWithUnits = getNumberWithUnits(I18n, (size * progress) / 100);\n const a11yProgress = 25 * Math.floor(Math.abs(progress / 25)); // announce in 25% increments for screen reader\n\n function renderIcon() {\n switch (status) {\n case types.status.ERROR:\n return (\n <Popover isDark isEager>\n <Popover.Tip />\n <Popover.Trigger aria-label={I18n.t(\"uploader.restart_upload\", { name })}>\n <Caution color={tokens.color.orange} />\n </Popover.Trigger>\n <Popover.Content>\n <Popover.Card>{I18n.t(\"uploader.restart_upload\", { name })}</Popover.Card>\n </Popover.Content>\n </Popover>\n );\n case types.status.CANCEL:\n return null;\n case types.status.SUCCESS:\n return <CheckIcon color={tokens.color.green} aria-hidden />;\n default:\n return (\n <Popover isDark isEager>\n <Popover.Tip />\n <Popover.Trigger>\n {(handler, a11yAttributes) => (\n <Button.Icon\n onMouseOver={handler}\n onMouseOut={handler}\n onFocus={handler}\n onBlur={handler}\n aria-label={I18n.t(\"uploader.cancel_upload\", { name })}\n kind={Button.Icon.types.kind.MINOR}\n onClick={() => {\n cancelFile(fileKey, onCancel);\n }}\n size={Button.Icon.types.size.SMALL}\n {...a11yAttributes}\n >\n <TimesIcon color={tokens.textColor.icon} />\n </Button.Icon>\n )}\n </Popover.Trigger>\n <Popover.Content>\n <Popover.Card>{I18n.t(\"uploader.cancel_upload\", { name })}</Popover.Card>\n </Popover.Content>\n </Popover>\n );\n }\n }\n\n function getProgressText(showA11yProgress) {\n const errorMessage = typeof onError === \"function\" ? onError(error) : error;\n switch (status) {\n case types.status.ERROR:\n return showA11yProgress ? I18n.t(\"uploader.progress.error\", { name, error: errorMessage }) : errorMessage;\n case types.status.SUCCESS:\n return showA11yProgress\n ? I18n.t(\"uploader.progress.file_progress\", { name, progress: I18n.t(\"uploader.progress.complete\") })\n : I18n.t(\"uploader.progress.complete\");\n case types.status.CANCEL:\n return showA11yProgress\n ? I18n.t(\"uploader.progress.file_progress\", { name, progress: I18n.t(\"uploader.progress.cancelled\") })\n : I18n.t(\"uploader.progress.cancelled\");\n case types.status.IDLE:\n return showA11yProgress\n ? I18n.t(\"uploader.progress.file_progress\", { name, progress: I18n.t(\"uploader.progress.idle\") })\n : I18n.t(\"uploader.progress.idle\");\n default:\n return showA11yProgress\n ? I18n.t(\"uploader.progress.file_progress\", {\n name,\n progress: I18n.t(\"uploader.progress.uploading_percent\", { a11yProgress }),\n })\n : I18n.t(\"uploader.progress.uploading\", { progressWithUnits, sizeWithUnits });\n }\n }\n\n return (\n <sc.FileListItem>\n <div\n aria-label={getProgressText(true)}\n aria-valuemin={0}\n aria-valuemax={100}\n aria-valuenow={progress}\n role=\"progressbar\"\n />\n <sc.File>\n <sc.Left aria-hidden>\n <sc.Info>\n <sc.Name>{name}</sc.Name>\n <sc.ProgressText status={status}>{getProgressText(false)}</sc.ProgressText>\n </sc.Info>\n <sc.ProgressBarWrapper>\n <sc.ProgressBar data-pka-anchor=\"uploader-file-progressBar\" progress={progress} status={status} />\n </sc.ProgressBarWrapper>\n </sc.Left>\n <sc.Right status={status}>{renderIcon()}</sc.Right>\n </sc.File>\n </sc.FileListItem>\n );\n}\n\nexport default File;\n"],"file":"File.js"}
|
|
1
|
+
{"version":3,"sources":["../../../src/components/File/File.js"],"names":["File","defaultProps","propTypes","types","status","error","PropTypes","string","fileKey","isRequired","name","onError","func","onCancel","progress","number","size","oneOf","map","key","props","React","useContext","UploaderContext","cancelFile","zIndex","I18n","sizeWithUnits","progressWithUnits","a11yProgress","Math","floor","abs","renderIcon","ERROR","t","tokens","color","orange","CANCEL","SUCCESS","green","handler","a11yAttributes","Button","Icon","kind","MINOR","SMALL","textColor","icon","getProgressText","showA11yProgress","errorMessage","IDLE"],"mappings":"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","sourcesContent":["import React from \"react\";\nimport PropTypes from \"prop-types\";\nimport CheckIcon from \"@paprika/icon/lib/Check\";\nimport TimesIcon from \"@paprika/icon/lib/Times\";\nimport Caution from \"@paprika/icon/lib/Caution\";\n\nimport Button from \"@paprika/button\";\nimport useI18n from \"@paprika/l10n/lib/useI18n\";\nimport Popover from \"@paprika/popover\";\nimport tokens from \"@paprika/tokens\";\nimport { UploaderContext } from \"../../Uploader\";\nimport { getNumberWithUnits } from \"../../helpers\";\nimport * as types from \"../../types\";\nimport * as sc from \"./File.styles\";\n\nFile.defaultProps = defaultProps;\nFile.propTypes = propTypes;\n\nFile.types = {\n status: types.status,\n};\n\nconst propTypes = {\n error: PropTypes.string,\n fileKey: PropTypes.string.isRequired,\n name: PropTypes.string.isRequired,\n onError: PropTypes.func,\n onCancel: PropTypes.func,\n progress: PropTypes.number,\n size: PropTypes.number.isRequired,\n status: PropTypes.oneOf(Object.keys(File.types.status).map(key => File.types.status[key])).isRequired,\n};\n\nconst defaultProps = {\n error: \"\",\n onError: null,\n onCancel: null,\n progress: 0,\n};\n\nfunction File(props) {\n const { error, fileKey, name, progress, size, status, onError, onCancel } = props;\n\n const { cancelFile, zIndex } = React.useContext(UploaderContext);\n const I18n = useI18n();\n const sizeWithUnits = getNumberWithUnits(I18n, size);\n const progressWithUnits = getNumberWithUnits(I18n, (size * progress) / 100);\n const a11yProgress = 25 * Math.floor(Math.abs(progress / 25)); // announce in 25% increments for screen reader\n\n function renderIcon() {\n switch (status) {\n case types.status.ERROR:\n return (\n <Popover isDark isEager zIndex={zIndex}>\n <Popover.Tip />\n <Popover.Trigger aria-label={I18n.t(\"uploader.restart_upload\", { name })}>\n <Caution color={tokens.color.orange} />\n </Popover.Trigger>\n <Popover.Content>\n <Popover.Card>{I18n.t(\"uploader.restart_upload\", { name })}</Popover.Card>\n </Popover.Content>\n </Popover>\n );\n case types.status.CANCEL:\n return null;\n case types.status.SUCCESS:\n return <CheckIcon color={tokens.color.green} aria-hidden />;\n default:\n return (\n <Popover isDark isEager zIndex={zIndex}>\n <Popover.Tip />\n <Popover.Trigger>\n {(handler, a11yAttributes) => (\n <Button.Icon\n onMouseOver={handler}\n onMouseOut={handler}\n onFocus={handler}\n onBlur={handler}\n aria-label={I18n.t(\"uploader.cancel_upload\", { name })}\n kind={Button.Icon.types.kind.MINOR}\n onClick={() => {\n cancelFile(fileKey, onCancel);\n }}\n size={Button.Icon.types.size.SMALL}\n {...a11yAttributes}\n >\n <TimesIcon color={tokens.textColor.icon} />\n </Button.Icon>\n )}\n </Popover.Trigger>\n <Popover.Content>\n <Popover.Card>{I18n.t(\"uploader.cancel_upload\", { name })}</Popover.Card>\n </Popover.Content>\n </Popover>\n );\n }\n }\n\n function getProgressText(showA11yProgress) {\n const errorMessage = typeof onError === \"function\" ? onError(error) : error;\n switch (status) {\n case types.status.ERROR:\n return showA11yProgress ? I18n.t(\"uploader.progress.error\", { name, error: errorMessage }) : errorMessage;\n case types.status.SUCCESS:\n return showA11yProgress\n ? I18n.t(\"uploader.progress.file_progress\", { name, progress: I18n.t(\"uploader.progress.complete\") })\n : I18n.t(\"uploader.progress.complete\");\n case types.status.CANCEL:\n return showA11yProgress\n ? I18n.t(\"uploader.progress.file_progress\", { name, progress: I18n.t(\"uploader.progress.cancelled\") })\n : I18n.t(\"uploader.progress.cancelled\");\n case types.status.IDLE:\n return showA11yProgress\n ? I18n.t(\"uploader.progress.file_progress\", { name, progress: I18n.t(\"uploader.progress.idle\") })\n : I18n.t(\"uploader.progress.idle\");\n default:\n return showA11yProgress\n ? I18n.t(\"uploader.progress.file_progress\", {\n name,\n progress: I18n.t(\"uploader.progress.uploading_percent\", { a11yProgress }),\n })\n : I18n.t(\"uploader.progress.uploading\", { progressWithUnits, sizeWithUnits });\n }\n }\n\n return (\n <sc.FileListItem>\n <div\n aria-label={getProgressText(true)}\n aria-valuemin={0}\n aria-valuemax={100}\n aria-valuenow={progress}\n role=\"progressbar\"\n />\n <sc.File>\n <sc.Left aria-hidden>\n <sc.Info>\n <sc.Name>{name}</sc.Name>\n <sc.ProgressText status={status}>{getProgressText(false)}</sc.ProgressText>\n </sc.Info>\n <sc.ProgressBarWrapper>\n <sc.ProgressBar data-pka-anchor=\"uploader-file-progressBar\" progress={progress} status={status} />\n </sc.ProgressBarWrapper>\n </sc.Left>\n <sc.Right status={status}>{renderIcon()}</sc.Right>\n </sc.File>\n </sc.FileListItem>\n );\n}\n\nexport default File;\n"],"file":"File.js"}
|
package/lib/index.d.ts
CHANGED
|
@@ -11,8 +11,8 @@ interface UploaderProps {
|
|
|
11
11
|
canChooseMultiple?: boolean;
|
|
12
12
|
/** children nodes */
|
|
13
13
|
children: React.ReactNode;
|
|
14
|
-
/**
|
|
15
|
-
|
|
14
|
+
/** Is uploader disabled. */
|
|
15
|
+
isDisabled?: boolean;
|
|
16
16
|
/** The url that will be use to upload the files. */
|
|
17
17
|
endpoint: string;
|
|
18
18
|
/** On true will upload the file as soon they are selected or dropped */
|
|
@@ -35,4 +35,6 @@ interface UploaderProps {
|
|
|
35
35
|
onError?: (...args: any[]) => any;
|
|
36
36
|
/** Callback fired when the user cancels an uploading file. */
|
|
37
37
|
onCancel?: (...args: any[]) => any;
|
|
38
|
+
/** z-index for popovers inside the uploader. */
|
|
39
|
+
zIndex?: number;
|
|
38
40
|
}
|
|
@@ -19,15 +19,14 @@ function useDragAndDropZoneEvents(_ref) {
|
|
|
19
19
|
dropArea = _ref$dropArea === void 0 ? function () {
|
|
20
20
|
return document.body;
|
|
21
21
|
} : _ref$dropArea,
|
|
22
|
-
defaultIsDisabled = _ref.defaultIsDisabled,
|
|
23
22
|
handleChange = _ref.handleChange;
|
|
24
23
|
|
|
25
|
-
var _React$useState = _react["default"].useState(
|
|
24
|
+
var _React$useState = _react["default"].useState(false),
|
|
26
25
|
_React$useState2 = (0, _slicedToArray2["default"])(_React$useState, 2),
|
|
27
26
|
isDraggingOver = _React$useState2[0],
|
|
28
27
|
setisDraggingOver = _React$useState2[1];
|
|
29
28
|
|
|
30
|
-
var _React$useState3 = _react["default"].useState(
|
|
29
|
+
var _React$useState3 = _react["default"].useState(false),
|
|
31
30
|
_React$useState4 = (0, _slicedToArray2["default"])(_React$useState3, 2),
|
|
32
31
|
isDragLeave = _React$useState4[0],
|
|
33
32
|
setIsDragLeave = _React$useState4[1];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/useDragAndDropEvents.js"],"names":["useDragAndDropZoneEvents","dropArea","document","body","
|
|
1
|
+
{"version":3,"sources":["../src/useDragAndDropEvents.js"],"names":["useDragAndDropZoneEvents","dropArea","document","body","handleChange","React","useState","isDraggingOver","setisDraggingOver","isDragLeave","setIsDragLeave","useEffect","onDragOver","event","preventDefault","onDragLeave","onDrop","element","addEventListener","cleanup","removeEventListener"],"mappings":";;;;;;;;;;;;;;AAAA;;AAEe,SAASA,wBAAT,OAAoF;AAAA,2BAAhDC,QAAgD;AAAA,MAAhDA,QAAgD,8BAArC;AAAA,WAAMC,QAAQ,CAACC,IAAf;AAAA,GAAqC;AAAA,MAAhBC,YAAgB,QAAhBA,YAAgB;;AACjG,wBAA4CC,kBAAMC,QAAN,CAAe,KAAf,CAA5C;AAAA;AAAA,MAAOC,cAAP;AAAA,MAAuBC,iBAAvB;;AACA,yBAAsCH,kBAAMC,QAAN,CAAe,KAAf,CAAtC;AAAA;AAAA,MAAOG,WAAP;AAAA,MAAoBC,cAApB;;AAEAL,oBAAMM,SAAN,CAAgB,YAAM;AACpB,aAASC,UAAT,CAAoBC,KAApB,EAA2B;AACzBL,MAAAA,iBAAiB,CAAC;AAAA,eAAM,IAAN;AAAA,OAAD,CAAjB;AACAE,MAAAA,cAAc,CAAC;AAAA,eAAM,KAAN;AAAA,OAAD,CAAd,CAFyB,CAGzB;;AACAG,MAAAA,KAAK,CAACC,cAAN;AACD;;AAED,aAASC,WAAT,GAAuB;AACrBP,MAAAA,iBAAiB,CAAC;AAAA,eAAM,KAAN;AAAA,OAAD,CAAjB;AACAE,MAAAA,cAAc,CAAC;AAAA,eAAM,IAAN;AAAA,OAAD,CAAd;AACD;;AAED,aAASM,MAAT,CAAgBH,KAAhB,EAAuB;AACrB;AACAL,MAAAA,iBAAiB,CAAC;AAAA,eAAM,KAAN;AAAA,OAAD,CAAjB;AACAE,MAAAA,cAAc,CAAC;AAAA,eAAM,IAAN;AAAA,OAAD,CAAd;AACAG,MAAAA,KAAK,CAACC,cAAN;AACAV,MAAAA,YAAY,CAACS,KAAD,CAAZ;AACD;;AAED,QAAMI,OAAO,GAAGhB,QAAQ,EAAxB;AACAgB,IAAAA,OAAO,CAACC,gBAAR,CAAyB,UAAzB,EAAqCN,UAArC,EAAiD,KAAjD;AACAK,IAAAA,OAAO,CAACC,gBAAR,CAAyB,WAAzB,EAAsCH,WAAtC,EAAmD,KAAnD;AACAE,IAAAA,OAAO,CAACC,gBAAR,CAAyB,MAAzB,EAAiCF,MAAjC,EAAyC,KAAzC;AAEA,WAAO,SAASG,OAAT,GAAmB;AACxBF,MAAAA,OAAO,CAACG,mBAAR,CAA4B,UAA5B,EAAwCR,UAAxC,EAAoD,KAApD;AACAK,MAAAA,OAAO,CAACG,mBAAR,CAA4B,WAA5B,EAAyCL,WAAzC,EAAsD,KAAtD;AACAE,MAAAA,OAAO,CAACG,mBAAR,CAA4B,MAA5B,EAAoCJ,MAApC,EAA4C,KAA5C;AACD,KAJD;AAKD,GA/BD,EA+BG,CAACf,QAAD,EAAWG,YAAX,CA/BH;;AAiCA,SAAO;AAAEG,IAAAA,cAAc,EAAdA,cAAF;AAAkBE,IAAAA,WAAW,EAAXA;AAAlB,GAAP;AACD","sourcesContent":["import React from \"react\";\n\nexport default function useDragAndDropZoneEvents({ dropArea = () => document.body, handleChange }) {\n const [isDraggingOver, setisDraggingOver] = React.useState(false);\n const [isDragLeave, setIsDragLeave] = React.useState(false);\n\n React.useEffect(() => {\n function onDragOver(event) {\n setisDraggingOver(() => true);\n setIsDragLeave(() => false);\n // this prevent images from rendering on the browser\n event.preventDefault();\n }\n\n function onDragLeave() {\n setisDraggingOver(() => false);\n setIsDragLeave(() => true);\n }\n\n function onDrop(event) {\n // this prevent images from rendering on the browser\n setisDraggingOver(() => false);\n setIsDragLeave(() => true);\n event.preventDefault();\n handleChange(event);\n }\n\n const element = dropArea();\n element.addEventListener(\"dragover\", onDragOver, false);\n element.addEventListener(\"dragleave\", onDragLeave, false);\n element.addEventListener(\"drop\", onDrop, false);\n\n return function cleanup() {\n element.removeEventListener(\"dragover\", onDragOver, false);\n element.removeEventListener(\"dragleave\", onDragLeave, false);\n element.removeEventListener(\"drop\", onDrop, false);\n };\n }, [dropArea, handleChange]);\n\n return { isDraggingOver, isDragLeave };\n}\n"],"file":"useDragAndDropEvents.js"}
|
package/lib/useProcessFiles.js
CHANGED
|
@@ -70,7 +70,6 @@ function useProcessFiles(_ref) {
|
|
|
70
70
|
onProcessed = _ref.onProcessed,
|
|
71
71
|
onCompleted = _ref.onCompleted,
|
|
72
72
|
endpoint = _ref.endpoint,
|
|
73
|
-
defaultIsDisabled = _ref.defaultIsDisabled,
|
|
74
73
|
headers = _ref.headers,
|
|
75
74
|
onRequest = _ref.onRequest;
|
|
76
75
|
|
|
@@ -79,10 +78,10 @@ function useProcessFiles(_ref) {
|
|
|
79
78
|
uploadingFileList = _React$useState2[0],
|
|
80
79
|
setUploadingFileList = _React$useState2[1];
|
|
81
80
|
|
|
82
|
-
var _React$useState3 = _react["default"].useState(
|
|
81
|
+
var _React$useState3 = _react["default"].useState(false),
|
|
83
82
|
_React$useState4 = (0, _slicedToArray2["default"])(_React$useState3, 2),
|
|
84
|
-
|
|
85
|
-
|
|
83
|
+
isBusy = _React$useState4[0],
|
|
84
|
+
setIsBusy = _React$useState4[1];
|
|
86
85
|
|
|
87
86
|
var _React$useState5 = _react["default"].useState(null),
|
|
88
87
|
_React$useState6 = (0, _slicedToArray2["default"])(_React$useState5, 2),
|
|
@@ -153,7 +152,7 @@ function useProcessFiles(_ref) {
|
|
|
153
152
|
if (files.every(function (file) {
|
|
154
153
|
return file.processed;
|
|
155
154
|
})) {
|
|
156
|
-
|
|
155
|
+
setIsBusy(function () {
|
|
157
156
|
return false;
|
|
158
157
|
});
|
|
159
158
|
setisCompleted(function () {
|
|
@@ -208,7 +207,7 @@ function useProcessFiles(_ref) {
|
|
|
208
207
|
}));
|
|
209
208
|
}
|
|
210
209
|
|
|
211
|
-
if (files.length && !isSameList(files, uploadingFileList) && !
|
|
210
|
+
if (files.length && !isSameList(files, uploadingFileList) && !isBusy) {
|
|
212
211
|
if (files.every(function (file) {
|
|
213
212
|
return !file.isValid || file.status === types.status.SUCCESS;
|
|
214
213
|
})) {
|
|
@@ -218,7 +217,7 @@ function useProcessFiles(_ref) {
|
|
|
218
217
|
setUploadingFileList(function () {
|
|
219
218
|
return JSON.parse((0, _stringify["default"])(files));
|
|
220
219
|
});
|
|
221
|
-
|
|
220
|
+
setIsBusy(function () {
|
|
222
221
|
return true;
|
|
223
222
|
});
|
|
224
223
|
setisCompleted(function () {
|
|
@@ -239,7 +238,7 @@ function useProcessFiles(_ref) {
|
|
|
239
238
|
}
|
|
240
239
|
});
|
|
241
240
|
}
|
|
242
|
-
}, [files, uploadingFileList,
|
|
241
|
+
}, [files, uploadingFileList, isBusy, onCompleted, endpoint, headers, onRequest, onProcessed]);
|
|
243
242
|
|
|
244
243
|
_react["default"].useEffect(function () {
|
|
245
244
|
if (hasAutoUpload) {
|
|
@@ -250,7 +249,7 @@ function useProcessFiles(_ref) {
|
|
|
250
249
|
return {
|
|
251
250
|
files: files,
|
|
252
251
|
setFiles: setFiles,
|
|
253
|
-
|
|
252
|
+
isBusy: isBusy,
|
|
254
253
|
isCompleted: isCompleted,
|
|
255
254
|
upload: upload,
|
|
256
255
|
removeFile: removeFile,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/useProcessFiles.js"],"names":["getFileByIndex","key","files","index","some","file","i","setFile","callback","cloneFiles","slice","f","updatedFile","useProcessFiles","hasAutoUpload","onProcessed","onCompleted","endpoint","defaultIsDisabled","headers","onRequest","React","useState","uploadingFileList","setUploadingFileList","isDisabled","setIsDisabled","isCompleted","setisCompleted","setFiles","cancelFile","onCancelProp","status","types","PROCESSING","WAITINGFORSERVER","request","abort","fileItem","CANCEL","processed","removeFile","IDLE","ERROR","fileClones","splice","uploadingFileListClone","upload","useCallback","isSameList","sameList","length","every","areAllFilesProccessed","onSuccess","response","isValid","SUCCESS","onError","error","isServerValid","onProgress","percent","progress","JSON","parse","forEach","useEffect"],"mappings":"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","sourcesContent":["import React from \"react\";\nimport * as types from \"./types\";\nimport { uploadToServer } from \"./helpers\";\n\nfunction getFileByIndex(key, files) {\n let index = null;\n\n files.some((file, i) => {\n if (file.key === key) {\n index = i;\n return true;\n }\n return false;\n });\n\n return index !== null ? index : null;\n}\n\nconst setFile = (file, callback) => files => {\n const cloneFiles = files.slice(0);\n let index = null;\n files.some((f, i) => {\n if (f.key === file.key) {\n index = i;\n return true;\n }\n return false;\n });\n\n if (index !== null) {\n const updatedFile = callback(cloneFiles[index]);\n cloneFiles[index] = updatedFile;\n }\n\n return cloneFiles;\n};\n\nexport default function useProcessFiles({\n hasAutoUpload,\n onProcessed,\n onCompleted,\n endpoint,\n defaultIsDisabled,\n headers,\n onRequest,\n}) {\n const [uploadingFileList, setUploadingFileList] = React.useState([]);\n const [isDisabled, setIsDisabled] = React.useState(defaultIsDisabled);\n const [isCompleted, setisCompleted] = React.useState(null);\n const [files, setFiles] = React.useState([]);\n\n function cancelFile(key, onCancelProp = null) {\n const index = getFileByIndex(key, files);\n if (index !== null) {\n if (files[index].status === types.status.PROCESSING || files[index].status === types.status.WAITINGFORSERVER) {\n const file = files[index];\n\n // will stop the uploading\n file.request.abort();\n\n setFiles(\n setFile(file, fileItem => {\n const file = fileItem;\n file.status = types.status.CANCEL;\n file.processed = true;\n return fileItem;\n })\n );\n\n if (typeof onCancelProp === \"function\") {\n onCancelProp(file);\n }\n }\n }\n }\n\n function removeFile(key) {\n const index = getFileByIndex(key, files);\n\n if (index !== null) {\n /*\n Removing a file while is been uploaded mess with areAllFilesProccessed() function,\n as well give a wrong impression the request has been cancel to the server.\n Therefore is only possible to remove files once they were processed or on idle status.\n */\n if (isCompleted || files[index].status === types.status.IDLE || files[index].status === types.status.ERROR) {\n const fileClones = files.slice(0);\n fileClones.splice(index, 1);\n\n const uploadingFileListClone = uploadingFileList.slice(0);\n uploadingFileListClone.splice(index, 1);\n\n setFiles(() => fileClones);\n setUploadingFileList(() => uploadingFileListClone);\n }\n }\n }\n\n const upload = React.useCallback(() => {\n const isSameList = (files, uploadingFileList) => {\n const sameList =\n files.length === uploadingFileList.length &&\n files.every((file, index) => file.key === uploadingFileList[index].key);\n\n return sameList;\n };\n\n function areAllFilesProccessed() {\n if (files.every(file => file.processed)) {\n setIsDisabled(() => false);\n setisCompleted(() => true);\n onCompleted(files);\n }\n }\n\n function onSuccess({ file, response }) {\n setFiles(\n setFile(file, fileItem => {\n const file = fileItem;\n file.isValid = true;\n file.processed = true;\n file.response = response;\n file.status = types.status.SUCCESS;\n return fileItem;\n })\n );\n\n areAllFilesProccessed();\n }\n\n function onError({ file, error }) {\n setFiles(\n setFile(file, fileItem => {\n const file = fileItem;\n file.status = types.status.ERROR;\n file.error = error;\n file.processed = true;\n file.isValid = false;\n file.isServerValid = false;\n return fileItem;\n })\n );\n\n areAllFilesProccessed();\n }\n\n function onProgress({ file, percent }) {\n setFiles(\n setFile(file, fileItem => {\n const file = fileItem;\n file.progress = percent;\n file.status = types.status.PROCESSING;\n\n if (percent === 100) {\n file.status = types.status.WAITINGFORSERVER;\n }\n return fileItem;\n })\n );\n }\n\n if (files.length && !isSameList(files, uploadingFileList) && !isDisabled) {\n if (files.every(file => !file.isValid || file.status === types.status.SUCCESS)) {\n return;\n }\n\n setUploadingFileList(() => JSON.parse(JSON.stringify(files)));\n setIsDisabled(() => true);\n setisCompleted(() => null);\n onProcessed(files);\n\n files.forEach(file => {\n if (file.isValid && file.status !== types.status.SUCCESS) {\n uploadToServer({ file, endpoint, onProgress, onSuccess, onError, headers, onRequest });\n }\n });\n }\n }, [files, uploadingFileList, isDisabled, onCompleted, endpoint, headers, onRequest, onProcessed]);\n\n React.useEffect(() => {\n if (hasAutoUpload) {\n upload();\n }\n }, [files, hasAutoUpload, upload]);\n\n return { files, setFiles, isDisabled, isCompleted, upload, removeFile, cancelFile };\n}\n"],"file":"useProcessFiles.js"}
|
|
1
|
+
{"version":3,"sources":["../src/useProcessFiles.js"],"names":["getFileByIndex","key","files","index","some","file","i","setFile","callback","cloneFiles","slice","f","updatedFile","useProcessFiles","hasAutoUpload","onProcessed","onCompleted","endpoint","headers","onRequest","React","useState","uploadingFileList","setUploadingFileList","isBusy","setIsBusy","isCompleted","setisCompleted","setFiles","cancelFile","onCancelProp","status","types","PROCESSING","WAITINGFORSERVER","request","abort","fileItem","CANCEL","processed","removeFile","IDLE","ERROR","fileClones","splice","uploadingFileListClone","upload","useCallback","isSameList","sameList","length","every","areAllFilesProccessed","onSuccess","response","isValid","SUCCESS","onError","error","isServerValid","onProgress","percent","progress","JSON","parse","forEach","useEffect"],"mappings":"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","sourcesContent":["import React from \"react\";\nimport * as types from \"./types\";\nimport { uploadToServer } from \"./helpers\";\n\nfunction getFileByIndex(key, files) {\n let index = null;\n\n files.some((file, i) => {\n if (file.key === key) {\n index = i;\n return true;\n }\n return false;\n });\n\n return index !== null ? index : null;\n}\n\nconst setFile = (file, callback) => files => {\n const cloneFiles = files.slice(0);\n let index = null;\n files.some((f, i) => {\n if (f.key === file.key) {\n index = i;\n return true;\n }\n return false;\n });\n\n if (index !== null) {\n const updatedFile = callback(cloneFiles[index]);\n cloneFiles[index] = updatedFile;\n }\n\n return cloneFiles;\n};\n\nexport default function useProcessFiles({ hasAutoUpload, onProcessed, onCompleted, endpoint, headers, onRequest }) {\n const [uploadingFileList, setUploadingFileList] = React.useState([]);\n const [isBusy, setIsBusy] = React.useState(false);\n const [isCompleted, setisCompleted] = React.useState(null);\n const [files, setFiles] = React.useState([]);\n\n function cancelFile(key, onCancelProp = null) {\n const index = getFileByIndex(key, files);\n if (index !== null) {\n if (files[index].status === types.status.PROCESSING || files[index].status === types.status.WAITINGFORSERVER) {\n const file = files[index];\n\n // will stop the uploading\n file.request.abort();\n\n setFiles(\n setFile(file, fileItem => {\n const file = fileItem;\n file.status = types.status.CANCEL;\n file.processed = true;\n return fileItem;\n })\n );\n\n if (typeof onCancelProp === \"function\") {\n onCancelProp(file);\n }\n }\n }\n }\n\n function removeFile(key) {\n const index = getFileByIndex(key, files);\n\n if (index !== null) {\n /*\n Removing a file while is been uploaded mess with areAllFilesProccessed() function,\n as well give a wrong impression the request has been cancel to the server.\n Therefore is only possible to remove files once they were processed or on idle status.\n */\n if (isCompleted || files[index].status === types.status.IDLE || files[index].status === types.status.ERROR) {\n const fileClones = files.slice(0);\n fileClones.splice(index, 1);\n\n const uploadingFileListClone = uploadingFileList.slice(0);\n uploadingFileListClone.splice(index, 1);\n\n setFiles(() => fileClones);\n setUploadingFileList(() => uploadingFileListClone);\n }\n }\n }\n\n const upload = React.useCallback(() => {\n const isSameList = (files, uploadingFileList) => {\n const sameList =\n files.length === uploadingFileList.length &&\n files.every((file, index) => file.key === uploadingFileList[index].key);\n\n return sameList;\n };\n\n function areAllFilesProccessed() {\n if (files.every(file => file.processed)) {\n setIsBusy(() => false);\n setisCompleted(() => true);\n onCompleted(files);\n }\n }\n\n function onSuccess({ file, response }) {\n setFiles(\n setFile(file, fileItem => {\n const file = fileItem;\n file.isValid = true;\n file.processed = true;\n file.response = response;\n file.status = types.status.SUCCESS;\n return fileItem;\n })\n );\n\n areAllFilesProccessed();\n }\n\n function onError({ file, error }) {\n setFiles(\n setFile(file, fileItem => {\n const file = fileItem;\n file.status = types.status.ERROR;\n file.error = error;\n file.processed = true;\n file.isValid = false;\n file.isServerValid = false;\n return fileItem;\n })\n );\n\n areAllFilesProccessed();\n }\n\n function onProgress({ file, percent }) {\n setFiles(\n setFile(file, fileItem => {\n const file = fileItem;\n file.progress = percent;\n file.status = types.status.PROCESSING;\n\n if (percent === 100) {\n file.status = types.status.WAITINGFORSERVER;\n }\n return fileItem;\n })\n );\n }\n\n if (files.length && !isSameList(files, uploadingFileList) && !isBusy) {\n if (files.every(file => !file.isValid || file.status === types.status.SUCCESS)) {\n return;\n }\n\n setUploadingFileList(() => JSON.parse(JSON.stringify(files)));\n setIsBusy(() => true);\n setisCompleted(() => null);\n onProcessed(files);\n\n files.forEach(file => {\n if (file.isValid && file.status !== types.status.SUCCESS) {\n uploadToServer({ file, endpoint, onProgress, onSuccess, onError, headers, onRequest });\n }\n });\n }\n }, [files, uploadingFileList, isBusy, onCompleted, endpoint, headers, onRequest, onProcessed]);\n\n React.useEffect(() => {\n if (hasAutoUpload) {\n upload();\n }\n }, [files, hasAutoUpload, upload]);\n\n return { files, setFiles, isBusy, isCompleted, upload, removeFile, cancelFile };\n}\n"],"file":"useProcessFiles.js"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@paprika/uploader",
|
|
3
|
-
"version": "
|
|
3
|
+
"version": "4.0.0",
|
|
4
4
|
"description": "The Uploader component lets you upload files and see progress.",
|
|
5
5
|
"author": "@paprika",
|
|
6
6
|
"main": "lib/index.js",
|
|
@@ -16,13 +16,13 @@
|
|
|
16
16
|
},
|
|
17
17
|
"dependencies": {
|
|
18
18
|
"@babel/runtime-corejs2": "^7.3.1",
|
|
19
|
-
"@paprika/button": "^1.1.12
|
|
20
|
-
"@paprika/helpers": "^2.3.0
|
|
21
|
-
"@paprika/icon": "^2.1.7
|
|
22
|
-
"@paprika/popover": "^2.0.4
|
|
23
|
-
"@paprika/raw-button": "^1.0.12
|
|
24
|
-
"@paprika/stylers": "^1.1.6
|
|
25
|
-
"@paprika/tokens": "^
|
|
19
|
+
"@paprika/button": "^1.1.12",
|
|
20
|
+
"@paprika/helpers": "^2.3.0",
|
|
21
|
+
"@paprika/icon": "^2.1.7",
|
|
22
|
+
"@paprika/popover": "^2.0.4",
|
|
23
|
+
"@paprika/raw-button": "^1.0.12",
|
|
24
|
+
"@paprika/stylers": "^1.1.6",
|
|
25
|
+
"@paprika/tokens": "^2.0.0",
|
|
26
26
|
"prop-types": "^15.7.2",
|
|
27
27
|
"superagent": "^5.1.0",
|
|
28
28
|
"uuid": "^8.3.2"
|