@panneau/field-upload 3.0.175 → 3.0.176

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 +35 -22
  2. package/lib/index.js +35 -22
  3. package/package.json +12 -12
package/es/index.js CHANGED
@@ -10,6 +10,7 @@ import PropTypes from 'prop-types';
10
10
  import React, { useCallback, useMemo, useState, useRef, useEffect } from 'react';
11
11
  import { FormattedMessage } from 'react-intl';
12
12
  import { PropTypes as PropTypes$1 } from '@panneau/core';
13
+ import { useModal } from '@panneau/core/contexts';
13
14
  import Button from '@panneau/element-button';
14
15
  import Label from '@panneau/element-label';
15
16
  import MediaCard, { MediaCards } from '@panneau/element-media-card';
@@ -30,6 +31,7 @@ var propTypes$1 = {
30
31
  size: PropTypes.number,
31
32
  url: PropTypes.string
32
33
  })]),
34
+ name: PropTypes.string,
33
35
  types: PropTypes.arrayOf(PropTypes.oneOf(['audio', 'image', 'video', 'document'])),
34
36
  fileTypes: PropTypes.arrayOf(PropTypes.string),
35
37
  sources: PropTypes.arrayOf(PropTypes.oneOf(['webcam', 'facebook', 'instagram', 'dropbox', 'google-drive'])),
@@ -61,6 +63,7 @@ var propTypes$1 = {
61
63
  var defaultProps$1 = {
62
64
  resource: 'medias',
63
65
  value: null,
66
+ name: null,
64
67
  types: ['audio', 'image', 'video'],
65
68
  fileTypes: null,
66
69
  sources: ['webcam', 'facebook', 'instagram', 'dropbox', 'google-drive'],
@@ -108,6 +111,7 @@ var defaultProps$1 = {
108
111
  var UploadField = function UploadField(_ref) {
109
112
  var resource = _ref.resource,
110
113
  value = _ref.value,
114
+ name = _ref.name,
111
115
  types = _ref.types,
112
116
  fileTypes = _ref.fileTypes,
113
117
  sources = _ref.sources,
@@ -232,27 +236,35 @@ var UploadField = function UploadField(_ref) {
232
236
  return value !== null ? [value] : null;
233
237
  }, [value]);
234
238
  var hasMedia = values !== null && values.length > 0;
235
- var _useState3 = useState(false),
236
- _useState4 = _slicedToArray(_useState3, 2),
237
- resourceModalOpen = _useState4[0],
238
- setResourceModalOpen = _useState4[1];
239
+
240
+ // Resource-modal-picker
241
+ var _useModal = useModal(),
242
+ register = _useModal.register,
243
+ unregister = _useModal.unregister,
244
+ modalIsOpen = _useModal.modalIsOpen;
245
+ var modalKey = "upload-field-".concat(name);
246
+ var resourceModalOpen = modalIsOpen(modalKey);
239
247
  var showResourceModal = withFind && resourceModalOpen;
240
248
  var toggleResourceModal = useCallback(function () {
241
- setResourceModalOpen(!resourceModalOpen);
242
- }, [resourceModalOpen, setResourceModalOpen]);
243
- var _useState5 = useState([]),
244
- _useState6 = _slicedToArray(_useState5, 2),
245
- modalItems = _useState6[0],
246
- setModalItems = _useState6[1];
249
+ if (resourceModalOpen) {
250
+ unregister(modalKey);
251
+ } else {
252
+ register(modalKey);
253
+ }
254
+ }, [resourceModalOpen, register, unregister, modalKey]);
255
+ var _useState3 = useState([]),
256
+ _useState4 = _slicedToArray(_useState3, 2),
257
+ modalItems = _useState4[0],
258
+ setModalItems = _useState4[1];
247
259
  var closeResourceModal = useCallback(function () {
248
- setResourceModalOpen(false);
260
+ unregister(modalKey);
249
261
  setModalItems(null);
250
- }, [resourceModalOpen, setResourceModalOpen, setModalItems]);
262
+ }, [resourceModalOpen, unregister, modalKey, setModalItems]);
251
263
  var openModalInResource = useCallback(function () {
252
- setResourceModalOpen(false);
264
+ unregister(modalKey);
253
265
  setModalItems(null);
254
266
  setModalOpened(true);
255
- }, [modalOpened, setModalOpened]);
267
+ }, [modalOpened, unregister, modalKey, setModalOpened]);
256
268
  var onChangeSelection = useCallback(function (newValue) {
257
269
  if (allowMultipleUploads) {
258
270
  if (newValue !== null && !isArray(newValue)) {
@@ -287,22 +299,22 @@ var UploadField = function UploadField(_ref) {
287
299
  _ref6$ = _ref6[0],
288
300
  finalValue = _ref6$ === void 0 ? null : _ref6$;
289
301
  onChange(finalValue);
290
- setResourceModalOpen(false);
302
+ unregister(modalKey);
291
303
  }
292
- }, [onChange, setResourceModalOpen, allowMultipleUploads, modalItems, setModalItems]);
304
+ }, [onChange, unregister, modalKey, allowMultipleUploads, modalItems, setModalItems]);
293
305
  var onConfirmSelection = useCallback(function () {
294
306
  if (onChange !== null) {
295
307
  onChange(modalItems);
296
- setResourceModalOpen(false);
308
+ unregister(modalKey);
297
309
  }
298
- }, [onChange, modalItems, setResourceModalOpen, allowMultipleUploads]);
310
+ }, [onChange, modalItems, unregister, modalKey, allowMultipleUploads]);
299
311
  var containerRef = useRef(null);
300
312
 
301
313
  // Keep this stable, uppy doesnt like
302
- var _useState7 = useState(null),
303
- _useState8 = _slicedToArray(_useState7, 2),
304
- finalUppy = _useState8[0],
305
- setFinalUppy = _useState8[1];
314
+ var _useState5 = useState(null),
315
+ _useState6 = _slicedToArray(_useState5, 2),
316
+ finalUppy = _useState6[0],
317
+ setFinalUppy = _useState6[1];
306
318
  useEffect(function () {
307
319
  if (uppy !== null && finalUppy === null) {
308
320
  setFinalUppy(uppy);
@@ -378,6 +390,7 @@ var UploadField = function UploadField(_ref) {
378
390
  showAddFilesPanel: true,
379
391
  doneButtonHandler: closeModal
380
392
  }) : null, showResourceModal ? /*#__PURE__*/React.createElement(ModalPicker, {
393
+ id: modalKey,
381
394
  value: value,
382
395
  resource: resource,
383
396
  types: types,
package/lib/index.js CHANGED
@@ -14,6 +14,7 @@ var PropTypes = require('prop-types');
14
14
  var React = require('react');
15
15
  var reactIntl = require('react-intl');
16
16
  var core = require('@panneau/core');
17
+ var contexts = require('@panneau/core/contexts');
17
18
  var Button = require('@panneau/element-button');
18
19
  var Label = require('@panneau/element-label');
19
20
  var MediaCard = require('@panneau/element-media-card');
@@ -34,6 +35,7 @@ var propTypes$1 = {
34
35
  size: PropTypes.number,
35
36
  url: PropTypes.string
36
37
  })]),
38
+ name: PropTypes.string,
37
39
  types: PropTypes.arrayOf(PropTypes.oneOf(['audio', 'image', 'video', 'document'])),
38
40
  fileTypes: PropTypes.arrayOf(PropTypes.string),
39
41
  sources: PropTypes.arrayOf(PropTypes.oneOf(['webcam', 'facebook', 'instagram', 'dropbox', 'google-drive'])),
@@ -65,6 +67,7 @@ var propTypes$1 = {
65
67
  var defaultProps$1 = {
66
68
  resource: 'medias',
67
69
  value: null,
70
+ name: null,
68
71
  types: ['audio', 'image', 'video'],
69
72
  fileTypes: null,
70
73
  sources: ['webcam', 'facebook', 'instagram', 'dropbox', 'google-drive'],
@@ -112,6 +115,7 @@ var defaultProps$1 = {
112
115
  var UploadField = function UploadField(_ref) {
113
116
  var resource = _ref.resource,
114
117
  value = _ref.value,
118
+ name = _ref.name,
115
119
  types = _ref.types,
116
120
  fileTypes = _ref.fileTypes,
117
121
  sources = _ref.sources,
@@ -236,27 +240,35 @@ var UploadField = function UploadField(_ref) {
236
240
  return value !== null ? [value] : null;
237
241
  }, [value]);
238
242
  var hasMedia = values !== null && values.length > 0;
239
- var _useState3 = React.useState(false),
240
- _useState4 = _slicedToArray(_useState3, 2),
241
- resourceModalOpen = _useState4[0],
242
- setResourceModalOpen = _useState4[1];
243
+
244
+ // Resource-modal-picker
245
+ var _useModal = contexts.useModal(),
246
+ register = _useModal.register,
247
+ unregister = _useModal.unregister,
248
+ modalIsOpen = _useModal.modalIsOpen;
249
+ var modalKey = "upload-field-".concat(name);
250
+ var resourceModalOpen = modalIsOpen(modalKey);
243
251
  var showResourceModal = withFind && resourceModalOpen;
244
252
  var toggleResourceModal = React.useCallback(function () {
245
- setResourceModalOpen(!resourceModalOpen);
246
- }, [resourceModalOpen, setResourceModalOpen]);
247
- var _useState5 = React.useState([]),
248
- _useState6 = _slicedToArray(_useState5, 2),
249
- modalItems = _useState6[0],
250
- setModalItems = _useState6[1];
253
+ if (resourceModalOpen) {
254
+ unregister(modalKey);
255
+ } else {
256
+ register(modalKey);
257
+ }
258
+ }, [resourceModalOpen, register, unregister, modalKey]);
259
+ var _useState3 = React.useState([]),
260
+ _useState4 = _slicedToArray(_useState3, 2),
261
+ modalItems = _useState4[0],
262
+ setModalItems = _useState4[1];
251
263
  var closeResourceModal = React.useCallback(function () {
252
- setResourceModalOpen(false);
264
+ unregister(modalKey);
253
265
  setModalItems(null);
254
- }, [resourceModalOpen, setResourceModalOpen, setModalItems]);
266
+ }, [resourceModalOpen, unregister, modalKey, setModalItems]);
255
267
  var openModalInResource = React.useCallback(function () {
256
- setResourceModalOpen(false);
268
+ unregister(modalKey);
257
269
  setModalItems(null);
258
270
  setModalOpened(true);
259
- }, [modalOpened, setModalOpened]);
271
+ }, [modalOpened, unregister, modalKey, setModalOpened]);
260
272
  var onChangeSelection = React.useCallback(function (newValue) {
261
273
  if (allowMultipleUploads) {
262
274
  if (newValue !== null && !isArray(newValue)) {
@@ -291,22 +303,22 @@ var UploadField = function UploadField(_ref) {
291
303
  _ref6$ = _ref6[0],
292
304
  finalValue = _ref6$ === void 0 ? null : _ref6$;
293
305
  onChange(finalValue);
294
- setResourceModalOpen(false);
306
+ unregister(modalKey);
295
307
  }
296
- }, [onChange, setResourceModalOpen, allowMultipleUploads, modalItems, setModalItems]);
308
+ }, [onChange, unregister, modalKey, allowMultipleUploads, modalItems, setModalItems]);
297
309
  var onConfirmSelection = React.useCallback(function () {
298
310
  if (onChange !== null) {
299
311
  onChange(modalItems);
300
- setResourceModalOpen(false);
312
+ unregister(modalKey);
301
313
  }
302
- }, [onChange, modalItems, setResourceModalOpen, allowMultipleUploads]);
314
+ }, [onChange, modalItems, unregister, modalKey, allowMultipleUploads]);
303
315
  var containerRef = React.useRef(null);
304
316
 
305
317
  // Keep this stable, uppy doesnt like
306
- var _useState7 = React.useState(null),
307
- _useState8 = _slicedToArray(_useState7, 2),
308
- finalUppy = _useState8[0],
309
- setFinalUppy = _useState8[1];
318
+ var _useState5 = React.useState(null),
319
+ _useState6 = _slicedToArray(_useState5, 2),
320
+ finalUppy = _useState6[0],
321
+ setFinalUppy = _useState6[1];
310
322
  React.useEffect(function () {
311
323
  if (uppy$1 !== null && finalUppy === null) {
312
324
  setFinalUppy(uppy$1);
@@ -382,6 +394,7 @@ var UploadField = function UploadField(_ref) {
382
394
  showAddFilesPanel: true,
383
395
  doneButtonHandler: closeModal
384
396
  }) : null, showResourceModal ? /*#__PURE__*/React.createElement(ModalPicker, {
397
+ id: modalKey,
385
398
  value: value,
386
399
  resource: resource,
387
400
  types: types,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@panneau/field-upload",
3
- "version": "3.0.175",
3
+ "version": "3.0.176",
4
4
  "description": "An Upload field",
5
5
  "keywords": [
6
6
  "javascript"
@@ -57,16 +57,16 @@
57
57
  "@fortawesome/fontawesome-svg-core": "^6.5.1",
58
58
  "@fortawesome/free-solid-svg-icons": "^6.5.1",
59
59
  "@fortawesome/react-fontawesome": "^0.2.0",
60
- "@panneau/core": "^3.0.175",
61
- "@panneau/element-button": "^3.0.175",
62
- "@panneau/element-label": "^3.0.175",
63
- "@panneau/element-media-card": "^3.0.175",
64
- "@panneau/list-resource-items": "^3.0.175",
65
- "@panneau/modal-dialog": "^3.0.175",
66
- "@panneau/modal-medias-picker": "^3.0.175",
67
- "@panneau/modal-upload": "^3.0.175",
68
- "@panneau/themes": "^3.0.175",
69
- "@panneau/uppy": "^3.0.175",
60
+ "@panneau/core": "^3.0.176",
61
+ "@panneau/element-button": "^3.0.176",
62
+ "@panneau/element-label": "^3.0.176",
63
+ "@panneau/element-media-card": "^3.0.176",
64
+ "@panneau/list-resource-items": "^3.0.176",
65
+ "@panneau/modal-dialog": "^3.0.176",
66
+ "@panneau/modal-medias-picker": "^3.0.176",
67
+ "@panneau/modal-upload": "^3.0.176",
68
+ "@panneau/themes": "^3.0.176",
69
+ "@panneau/uppy": "^3.0.176",
70
70
  "@uppy/core": "^3.9.1",
71
71
  "@uppy/dashboard": "^3.7.3",
72
72
  "@uppy/drag-drop": "^3.0.3",
@@ -83,5 +83,5 @@
83
83
  "publishConfig": {
84
84
  "access": "public"
85
85
  },
86
- "gitHead": "cb8320f1041e7ced6bcf77dd6d32661950215a92"
86
+ "gitHead": "ddd1878318abbb8da545c1883a50bf49c89ae9c5"
87
87
  }