@panneau/field-upload 3.0.9 → 3.0.11

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (3) hide show
  1. package/es/index.js +59 -14
  2. package/lib/index.js +61 -15
  3. package/package.json +4 -4
package/es/index.js CHANGED
@@ -1,7 +1,7 @@
1
1
  import _defineProperty from '@babel/runtime/helpers/defineProperty';
2
- import _objectSpread from '@babel/runtime/helpers/objectSpread2';
2
+ import _toConsumableArray from '@babel/runtime/helpers/toConsumableArray';
3
3
  import _slicedToArray from '@babel/runtime/helpers/slicedToArray';
4
- import { useLocation } from '@folklore/routes';
4
+ import _objectSpread from '@babel/runtime/helpers/objectSpread2';
5
5
  import { faTimes, faFileVideo, faFileImage, faFileAudio } from '@fortawesome/free-solid-svg-icons';
6
6
  import { FontAwesomeIcon } from '@fortawesome/react-fontawesome';
7
7
  import { Dashboard, DashboardModal } from '@uppy/react';
@@ -40,6 +40,7 @@ var propTypes = {
40
40
  withFind: PropTypes.bool,
41
41
  addButtonLabel: PropTypes$1.label,
42
42
  searchButtonLabel: PropTypes$1.label,
43
+ confirmButtonLabel: PropTypes$1.label,
43
44
  allowMultipleUploads: PropTypes.bool,
44
45
  maxNumberOfFiles: PropTypes.number,
45
46
  namePath: PropTypes.string,
@@ -75,6 +76,13 @@ var defaultProps = {
75
76
  "value": "Find a file"
76
77
  }]
77
78
  }),
79
+ confirmButtonLabel: /*#__PURE__*/React.createElement(FormattedMessage, {
80
+ id: "UaVu03",
81
+ defaultMessage: [{
82
+ "type": 0,
83
+ "value": "Confirm"
84
+ }]
85
+ }),
78
86
  allowMultipleUploads: false,
79
87
  maxNumberOfFiles: 1,
80
88
  namePath: null,
@@ -96,6 +104,7 @@ var UploadField = function UploadField(_ref) {
96
104
  withFind = _ref.withFind,
97
105
  addButtonLabel = _ref.addButtonLabel,
98
106
  searchButtonLabel = _ref.searchButtonLabel,
107
+ confirmButtonLabel = _ref.confirmButtonLabel,
99
108
  allowMultipleUploads = _ref.allowMultipleUploads,
100
109
  maxNumberOfFiles = _ref.maxNumberOfFiles,
101
110
  namePath = _ref.namePath,
@@ -107,10 +116,7 @@ var UploadField = function UploadField(_ref) {
107
116
  disabled = _ref.disabled,
108
117
  onChange = _ref.onChange,
109
118
  className = _ref.className;
110
- var _useLocation = useLocation(),
111
- _useLocation2 = _slicedToArray(_useLocation, 1),
112
- _useLocation2$0$pathn = _useLocation2[0].pathname,
113
- pathname = _useLocation2$0$pathn === void 0 ? null : _useLocation2$0$pathn;
119
+ // const [{ pathname = null }] = useLocation();
114
120
  // const { ref: containerRef, entry = null } = useResizeObserver();
115
121
  // const { contentRect } = entry || {};
116
122
  // const { width: containerWidth = null } = contentRect || {};
@@ -208,12 +214,45 @@ var UploadField = function UploadField(_ref) {
208
214
  var closeResourceModal = useCallback(function () {
209
215
  setResourceModalOpen(false);
210
216
  }, [resourceModalOpen, setResourceModalOpen]);
217
+ var _useState5 = useState([]),
218
+ _useState6 = _slicedToArray(_useState5, 2),
219
+ modalItems = _useState6[0],
220
+ setModalItems = _useState6[1];
211
221
  var onClickSelect = useCallback(function (newValue) {
212
- if (onChange !== null) {
222
+ if (allowMultipleUploads) {
223
+ if (newValue !== null) {
224
+ var _ref2 = newValue || {},
225
+ _ref2$id = _ref2.id,
226
+ id = _ref2$id === void 0 ? null : _ref2$id;
227
+ if (id !== null) {
228
+ var previous = (modalItems || []).find(function (_ref3) {
229
+ var _ref3$id = _ref3.id,
230
+ itemId = _ref3$id === void 0 ? null : _ref3$id;
231
+ return id === itemId;
232
+ });
233
+ if (previous) {
234
+ setModalItems((modalItems || []).filter(function (_ref4) {
235
+ var _ref4$id = _ref4.id,
236
+ itemId = _ref4$id === void 0 ? null : _ref4$id;
237
+ return id !== itemId;
238
+ }));
239
+ } else {
240
+ setModalItems([].concat(_toConsumableArray(modalItems), [newValue]));
241
+ }
242
+ }
243
+ }
244
+ } else if (onChange !== null) {
213
245
  onChange(newValue);
214
246
  setResourceModalOpen(false);
215
247
  }
216
- }, [onChange, setResourceModalOpen]);
248
+ }, [onChange, setResourceModalOpen, allowMultipleUploads, modalItems, setModalItems]);
249
+ console.log(modalItems);
250
+ var confirmResourceModal = useCallback(function () {
251
+ if (onChange !== null) {
252
+ onChange(modalItems);
253
+ setResourceModalOpen(false);
254
+ }
255
+ }, [onChange, setResourceModalOpen, allowMultipleUploads]);
217
256
  var initialQuery = useMemo(function () {
218
257
  return {
219
258
  types: types
@@ -241,9 +280,9 @@ var UploadField = function UploadField(_ref) {
241
280
  _media$data = media.data,
242
281
  data = _media$data === void 0 ? {} : _media$data,
243
282
  type = media.type;
244
- var _ref3 = data || {},
245
- _ref3$file = _ref3.file,
246
- file = _ref3$file === void 0 ? null : _ref3$file;
283
+ var _ref6 = data || {},
284
+ _ref6$file = _ref6.file,
285
+ file = _ref6$file === void 0 ? null : _ref6$file;
247
286
  var faIcon = null;
248
287
  switch (type) {
249
288
  case 'audio':
@@ -313,7 +352,7 @@ var UploadField = function UploadField(_ref) {
313
352
  }, /*#__PURE__*/React.createElement(FontAwesomeIcon, {
314
353
  icon: faTimes
315
354
  })))));
316
- }) : null, !hasMedia && withButton ? /*#__PURE__*/React.createElement("div", {
355
+ }) : null, (!hasMedia || allowMultipleUploads) && withButton ? /*#__PURE__*/React.createElement("div", {
317
356
  className: "row"
318
357
  }, /*#__PURE__*/React.createElement("div", {
319
358
  className: "col-auto"
@@ -364,7 +403,7 @@ var UploadField = function UploadField(_ref) {
364
403
  onPageChange: onListPageChange,
365
404
  onQueryChange: onListQueryChange,
366
405
  onQueryReset: onListQueryReset,
367
- baseUrl: pathname,
406
+ baseUrl: null,
368
407
  listProps: {
369
408
  actions: ['select'],
370
409
  actionsProps: {
@@ -372,7 +411,13 @@ var UploadField = function UploadField(_ref) {
372
411
  },
373
412
  withoutActionsColumn: true
374
413
  }
375
- })) : null);
414
+ }), allowMultipleUploads ? /*#__PURE__*/React.createElement(Button, {
415
+ type: "button",
416
+ theme: "primary",
417
+ onClick: confirmResourceModal,
418
+ disabled: disabled,
419
+ className: "d-block ms-auto mt-2"
420
+ }, /*#__PURE__*/React.createElement(Label, null, confirmButtonLabel)) : null) : null);
376
421
  };
377
422
  UploadField.propTypes = propTypes;
378
423
  UploadField.defaultProps = defaultProps;
package/lib/index.js CHANGED
@@ -3,9 +3,9 @@
3
3
  Object.defineProperty(exports, '__esModule', { value: true });
4
4
 
5
5
  var _defineProperty = require('@babel/runtime/helpers/defineProperty');
6
- var _objectSpread = require('@babel/runtime/helpers/objectSpread2');
6
+ var _toConsumableArray = require('@babel/runtime/helpers/toConsumableArray');
7
7
  var _slicedToArray = require('@babel/runtime/helpers/slicedToArray');
8
- var routes = require('@folklore/routes');
8
+ var _objectSpread = require('@babel/runtime/helpers/objectSpread2');
9
9
  var freeSolidSvgIcons = require('@fortawesome/free-solid-svg-icons');
10
10
  var reactFontawesome = require('@fortawesome/react-fontawesome');
11
11
  var react = require('@uppy/react');
@@ -32,8 +32,9 @@ require('@uppy/status-bar/dist/style.min.css');
32
32
  function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
33
33
 
34
34
  var _defineProperty__default = /*#__PURE__*/_interopDefaultLegacy(_defineProperty);
35
- var _objectSpread__default = /*#__PURE__*/_interopDefaultLegacy(_objectSpread);
35
+ var _toConsumableArray__default = /*#__PURE__*/_interopDefaultLegacy(_toConsumableArray);
36
36
  var _slicedToArray__default = /*#__PURE__*/_interopDefaultLegacy(_slicedToArray);
37
+ var _objectSpread__default = /*#__PURE__*/_interopDefaultLegacy(_objectSpread);
37
38
  var classNames__default = /*#__PURE__*/_interopDefaultLegacy(classNames);
38
39
  var get__default = /*#__PURE__*/_interopDefaultLegacy(get);
39
40
  var isArray__default = /*#__PURE__*/_interopDefaultLegacy(isArray);
@@ -61,6 +62,7 @@ var propTypes = {
61
62
  withFind: PropTypes__default["default"].bool,
62
63
  addButtonLabel: core.PropTypes.label,
63
64
  searchButtonLabel: core.PropTypes.label,
65
+ confirmButtonLabel: core.PropTypes.label,
64
66
  allowMultipleUploads: PropTypes__default["default"].bool,
65
67
  maxNumberOfFiles: PropTypes__default["default"].number,
66
68
  namePath: PropTypes__default["default"].string,
@@ -96,6 +98,13 @@ var defaultProps = {
96
98
  "value": "Find a file"
97
99
  }]
98
100
  }),
101
+ confirmButtonLabel: /*#__PURE__*/React__default["default"].createElement(reactIntl.FormattedMessage, {
102
+ id: "UaVu03",
103
+ defaultMessage: [{
104
+ "type": 0,
105
+ "value": "Confirm"
106
+ }]
107
+ }),
99
108
  allowMultipleUploads: false,
100
109
  maxNumberOfFiles: 1,
101
110
  namePath: null,
@@ -117,6 +126,7 @@ var UploadField = function UploadField(_ref) {
117
126
  withFind = _ref.withFind,
118
127
  addButtonLabel = _ref.addButtonLabel,
119
128
  searchButtonLabel = _ref.searchButtonLabel,
129
+ confirmButtonLabel = _ref.confirmButtonLabel,
120
130
  allowMultipleUploads = _ref.allowMultipleUploads,
121
131
  maxNumberOfFiles = _ref.maxNumberOfFiles,
122
132
  namePath = _ref.namePath,
@@ -128,10 +138,7 @@ var UploadField = function UploadField(_ref) {
128
138
  disabled = _ref.disabled,
129
139
  onChange = _ref.onChange,
130
140
  className = _ref.className;
131
- var _useLocation = routes.useLocation(),
132
- _useLocation2 = _slicedToArray__default["default"](_useLocation, 1),
133
- _useLocation2$0$pathn = _useLocation2[0].pathname,
134
- pathname = _useLocation2$0$pathn === void 0 ? null : _useLocation2$0$pathn;
141
+ // const [{ pathname = null }] = useLocation();
135
142
  // const { ref: containerRef, entry = null } = useResizeObserver();
136
143
  // const { contentRect } = entry || {};
137
144
  // const { width: containerWidth = null } = contentRect || {};
@@ -229,12 +236,45 @@ var UploadField = function UploadField(_ref) {
229
236
  var closeResourceModal = React.useCallback(function () {
230
237
  setResourceModalOpen(false);
231
238
  }, [resourceModalOpen, setResourceModalOpen]);
239
+ var _useState5 = React.useState([]),
240
+ _useState6 = _slicedToArray__default["default"](_useState5, 2),
241
+ modalItems = _useState6[0],
242
+ setModalItems = _useState6[1];
232
243
  var onClickSelect = React.useCallback(function (newValue) {
233
- if (onChange !== null) {
244
+ if (allowMultipleUploads) {
245
+ if (newValue !== null) {
246
+ var _ref2 = newValue || {},
247
+ _ref2$id = _ref2.id,
248
+ id = _ref2$id === void 0 ? null : _ref2$id;
249
+ if (id !== null) {
250
+ var previous = (modalItems || []).find(function (_ref3) {
251
+ var _ref3$id = _ref3.id,
252
+ itemId = _ref3$id === void 0 ? null : _ref3$id;
253
+ return id === itemId;
254
+ });
255
+ if (previous) {
256
+ setModalItems((modalItems || []).filter(function (_ref4) {
257
+ var _ref4$id = _ref4.id,
258
+ itemId = _ref4$id === void 0 ? null : _ref4$id;
259
+ return id !== itemId;
260
+ }));
261
+ } else {
262
+ setModalItems([].concat(_toConsumableArray__default["default"](modalItems), [newValue]));
263
+ }
264
+ }
265
+ }
266
+ } else if (onChange !== null) {
234
267
  onChange(newValue);
235
268
  setResourceModalOpen(false);
236
269
  }
237
- }, [onChange, setResourceModalOpen]);
270
+ }, [onChange, setResourceModalOpen, allowMultipleUploads, modalItems, setModalItems]);
271
+ console.log(modalItems);
272
+ var confirmResourceModal = React.useCallback(function () {
273
+ if (onChange !== null) {
274
+ onChange(modalItems);
275
+ setResourceModalOpen(false);
276
+ }
277
+ }, [onChange, setResourceModalOpen, allowMultipleUploads]);
238
278
  var initialQuery = React.useMemo(function () {
239
279
  return {
240
280
  types: types
@@ -262,9 +302,9 @@ var UploadField = function UploadField(_ref) {
262
302
  _media$data = media.data,
263
303
  data = _media$data === void 0 ? {} : _media$data,
264
304
  type = media.type;
265
- var _ref3 = data || {},
266
- _ref3$file = _ref3.file,
267
- file = _ref3$file === void 0 ? null : _ref3$file;
305
+ var _ref6 = data || {},
306
+ _ref6$file = _ref6.file,
307
+ file = _ref6$file === void 0 ? null : _ref6$file;
268
308
  var faIcon = null;
269
309
  switch (type) {
270
310
  case 'audio':
@@ -334,7 +374,7 @@ var UploadField = function UploadField(_ref) {
334
374
  }, /*#__PURE__*/React__default["default"].createElement(reactFontawesome.FontAwesomeIcon, {
335
375
  icon: freeSolidSvgIcons.faTimes
336
376
  })))));
337
- }) : null, !hasMedia && withButton ? /*#__PURE__*/React__default["default"].createElement("div", {
377
+ }) : null, (!hasMedia || allowMultipleUploads) && withButton ? /*#__PURE__*/React__default["default"].createElement("div", {
338
378
  className: "row"
339
379
  }, /*#__PURE__*/React__default["default"].createElement("div", {
340
380
  className: "col-auto"
@@ -385,7 +425,7 @@ var UploadField = function UploadField(_ref) {
385
425
  onPageChange: onListPageChange,
386
426
  onQueryChange: onListQueryChange,
387
427
  onQueryReset: onListQueryReset,
388
- baseUrl: pathname,
428
+ baseUrl: null,
389
429
  listProps: {
390
430
  actions: ['select'],
391
431
  actionsProps: {
@@ -393,7 +433,13 @@ var UploadField = function UploadField(_ref) {
393
433
  },
394
434
  withoutActionsColumn: true
395
435
  }
396
- })) : null);
436
+ }), allowMultipleUploads ? /*#__PURE__*/React__default["default"].createElement(Button__default["default"], {
437
+ type: "button",
438
+ theme: "primary",
439
+ onClick: confirmResourceModal,
440
+ disabled: disabled,
441
+ className: "d-block ms-auto mt-2"
442
+ }, /*#__PURE__*/React__default["default"].createElement(Label__default["default"], null, confirmButtonLabel)) : null) : null);
397
443
  };
398
444
  UploadField.propTypes = propTypes;
399
445
  UploadField.defaultProps = defaultProps;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@panneau/field-upload",
3
- "version": "3.0.9",
3
+ "version": "3.0.11",
4
4
  "description": "An Upload field",
5
5
  "keywords": [
6
6
  "javascript"
@@ -59,9 +59,9 @@
59
59
  "@fortawesome/react-fontawesome": "^0.1.14",
60
60
  "@panneau/core": "^3.0.9",
61
61
  "@panneau/element-button": "^3.0.9",
62
- "@panneau/element-card": "^3.0.9",
62
+ "@panneau/element-card": "^3.0.11",
63
63
  "@panneau/element-label": "^3.0.9",
64
- "@panneau/list-resource-items": "^3.0.9",
64
+ "@panneau/list-resource-items": "^3.0.11",
65
65
  "@panneau/modal-dialog": "^3.0.9",
66
66
  "@panneau/themes": "^3.0.9",
67
67
  "@uppy/core": "^3.2.0",
@@ -81,5 +81,5 @@
81
81
  "publishConfig": {
82
82
  "access": "public"
83
83
  },
84
- "gitHead": "5725a31a8f873f1ae84c6df3ac712baf75be15b5"
84
+ "gitHead": "828edc2a1e178e890c49c6ea24d9370d4f07c554"
85
85
  }