@panneau/field-upload 2.0.64 → 2.0.69

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 +51 -27
  2. package/lib/index.js +52 -26
  3. package/package.json +9 -7
package/es/index.js CHANGED
@@ -10,12 +10,14 @@ import isArray from 'lodash/isArray';
10
10
  import isObject from 'lodash/isObject';
11
11
  import prettyBytes from 'pretty-bytes';
12
12
  import PropTypes from 'prop-types';
13
- import React, { useState, useCallback, useMemo } from 'react';
13
+ import React, { useCallback, useMemo, useState } from 'react';
14
14
  import { FormattedMessage } from 'react-intl';
15
15
  import { PropTypes as PropTypes$1 } from '@panneau/core';
16
16
  import { useUppy } from '@panneau/core/contexts';
17
17
  import Button from '@panneau/element-button';
18
18
  import Label from '@panneau/element-label';
19
+ import ResourceItemsList from '@panneau/list-resource-items';
20
+ import Dialog from '@panneau/modal-dialog';
19
21
  import '@uppy/core/dist/style.min.css';
20
22
  import '@uppy/dashboard/dist/style.min.css';
21
23
  import '@uppy/drag-drop/dist/style.min.css';
@@ -33,7 +35,7 @@ var propTypes = {
33
35
  fileTypes: PropTypes.arrayOf(PropTypes.string),
34
36
  sources: PropTypes.arrayOf(PropTypes.oneOf(['webcam', 'facebook', 'instagram', 'dropbox', 'google-drive'])),
35
37
  withButton: PropTypes.bool,
36
- withSearchModal: PropTypes.bool,
38
+ withResourceList: PropTypes.bool,
37
39
  addButtonLabel: PropTypes$1.label,
38
40
  searchButtonLabel: PropTypes$1.label,
39
41
  allowMultipleUploads: PropTypes.bool,
@@ -52,7 +54,7 @@ var defaultProps = {
52
54
  fileTypes: null,
53
55
  sources: ['webcam', 'facebook', 'instagram', 'dropbox', 'google-drive'],
54
56
  withButton: false,
55
- withSearchModal: false,
57
+ withResourceList: false,
56
58
  addButtonLabel: /*#__PURE__*/React.createElement(FormattedMessage, {
57
59
  id: "NI9440",
58
60
  defaultMessage: [{
@@ -83,7 +85,7 @@ var UploadField = function UploadField(_ref) {
83
85
  fileTypes = _ref.fileTypes,
84
86
  sources = _ref.sources,
85
87
  withButton = _ref.withButton,
86
- withSearchModal = _ref.withSearchModal,
88
+ withResourceList = _ref.withResourceList,
87
89
  addButtonLabel = _ref.addButtonLabel,
88
90
  searchButtonLabel = _ref.searchButtonLabel,
89
91
  allowMultipleUploads = _ref.allowMultipleUploads,
@@ -99,14 +101,6 @@ var UploadField = function UploadField(_ref) {
99
101
  // const { contentRect } = entry || {};
100
102
  // const { width: containerWidth = null } = contentRect || {};
101
103
 
102
- var _useState = useState(false),
103
- _useState2 = _slicedToArray(_useState, 2),
104
- mediaModalOpen = _useState2[0],
105
- setMediaModalOpen = _useState2[1];
106
- var showMediaModal = withSearchModal && mediaModalOpen;
107
- var toggleSearchModal = useCallback(function () {
108
- setMediaModalOpen(!mediaModalOpen);
109
- }, [mediaModalOpen, setMediaModalOpen]);
110
104
  var onComplete = useCallback(function (response) {
111
105
  console.log('upload complete', response); // eslint-disable-line
112
106
  var newValue = null;
@@ -148,6 +142,16 @@ var UploadField = function UploadField(_ref) {
148
142
  autoProceed: true,
149
143
  onComplete: onComplete
150
144
  });
145
+ var _useState = useState(false),
146
+ _useState2 = _slicedToArray(_useState, 2),
147
+ modalOpened = _useState2[0],
148
+ setModalOpened = _useState2[1];
149
+ var openModal = useCallback(function () {
150
+ setModalOpened(true);
151
+ }, [setModalOpened]);
152
+ var closeModal = useCallback(function () {
153
+ setModalOpened(false);
154
+ }, [setModalOpened]);
151
155
  var onClickRemove = useCallback(function (idx) {
152
156
  if (onChange !== null && isArray(value) && value.length > 1) {
153
157
  onChange(value.filter(function (v, i) {
@@ -157,16 +161,6 @@ var UploadField = function UploadField(_ref) {
157
161
  onChange(null);
158
162
  }
159
163
  }, [value, onChange]);
160
- var _useState3 = useState(false),
161
- _useState4 = _slicedToArray(_useState3, 2),
162
- modalOpened = _useState4[0],
163
- setModalOpened = _useState4[1];
164
- var openModal = useCallback(function () {
165
- setModalOpened(true);
166
- }, [setModalOpened]);
167
- var closeModal = useCallback(function () {
168
- setModalOpened(false);
169
- }, [setModalOpened]);
170
164
  var values = useMemo(function () {
171
165
  if (isArray(value)) {
172
166
  return value;
@@ -174,6 +168,24 @@ var UploadField = function UploadField(_ref) {
174
168
  return value !== null ? [value] : null;
175
169
  }, [value]);
176
170
  var hasMedia = values !== null && values.length > 0;
171
+ var _useState3 = useState(false),
172
+ _useState4 = _slicedToArray(_useState3, 2),
173
+ resourceModalOpen = _useState4[0],
174
+ setResourceModalOpen = _useState4[1];
175
+ var showResourceModal = withResourceList && resourceModalOpen;
176
+ var toggleResourceModal = useCallback(function () {
177
+ setResourceModalOpen(!resourceModalOpen);
178
+ }, [resourceModalOpen, setResourceModalOpen]);
179
+ var closeResourceModal = useCallback(function () {
180
+ setResourceModalOpen(false);
181
+ }, [resourceModalOpen, setResourceModalOpen]);
182
+ var onClickSelect = useCallback(function (newValue) {
183
+ if (onChange !== null) {
184
+ console.log(newValue, onChange);
185
+ onChange(newValue);
186
+ setResourceModalOpen(false);
187
+ }
188
+ }, [onChange, setResourceModalOpen]);
177
189
  return /*#__PURE__*/React.createElement("div", {
178
190
  className: classNames([styles.container, _defineProperty({}, className, className !== null)])
179
191
  // ref={containerRef}
@@ -272,14 +284,14 @@ var UploadField = function UploadField(_ref) {
272
284
  theme: "primary",
273
285
  onClick: openModal,
274
286
  disabled: disabled
275
- }, /*#__PURE__*/React.createElement(Label, null, addButtonLabel))), withSearchModal ? /*#__PURE__*/React.createElement("div", {
287
+ }, /*#__PURE__*/React.createElement(Label, null, addButtonLabel))), withResourceList ? /*#__PURE__*/React.createElement("div", {
276
288
  className: "col-auto ps-0"
277
289
  }, /*#__PURE__*/React.createElement(Button, {
278
290
  type: "button",
279
291
  theme: "primary",
280
- onClick: toggleSearchModal,
292
+ onClick: toggleResourceModal,
281
293
  disabled: disabled
282
- }, /*#__PURE__*/React.createElement(Label, null, searchButtonLabel))) : null) : null, !showMediaModal && !disabled && !hasMedia && !withButton && uppy !== null ? /*#__PURE__*/React.createElement("div", {
294
+ }, /*#__PURE__*/React.createElement(Label, null, searchButtonLabel))) : null) : null, !showResourceModal && !disabled && !hasMedia && !withButton && uppy !== null ? /*#__PURE__*/React.createElement("div", {
283
295
  className: styles.dashboard
284
296
  }, /*#__PURE__*/React.createElement(Dashboard, Object.assign({
285
297
  uppy: uppy
@@ -296,13 +308,25 @@ var UploadField = function UploadField(_ref) {
296
308
  areInsidesReadyToBeVisible: true,
297
309
  proudlyDisplayPoweredByUppy: false,
298
310
  showProgressDetails: true
299
- }))) : null, !showMediaModal && !disabled && withButton && uppy !== null ? /*#__PURE__*/React.createElement(DashboardModal, {
311
+ }))) : null, !showResourceModal && !disabled && withButton && uppy !== null ? /*#__PURE__*/React.createElement(DashboardModal, {
300
312
  uppy: uppy,
301
313
  plugins: sources,
302
314
  open: modalOpened,
303
315
  onRequestClose: closeModal,
304
316
  closeModalOnClickOutside: true
305
- }) : null, showMediaModal ? 'Hello' : null);
317
+ }) : null, showResourceModal ? /*#__PURE__*/React.createElement(Dialog, {
318
+ title: /*#__PURE__*/React.createElement(Label, null, searchButtonLabel),
319
+ size: "lg",
320
+ onClickClose: closeResourceModal
321
+ }, /*#__PURE__*/React.createElement(ResourceItemsList, {
322
+ resource: "medias",
323
+ listProps: {
324
+ actions: ['select'],
325
+ actionsProps: {
326
+ onClickSelect: onClickSelect
327
+ }
328
+ }
329
+ })) : null);
306
330
  };
307
331
  UploadField.propTypes = propTypes;
308
332
  UploadField.defaultProps = defaultProps;
package/lib/index.js CHANGED
@@ -20,6 +20,8 @@ var core = require('@panneau/core');
20
20
  var contexts = require('@panneau/core/contexts');
21
21
  var Button = require('@panneau/element-button');
22
22
  var Label = require('@panneau/element-label');
23
+ var ResourceItemsList = require('@panneau/list-resource-items');
24
+ var Dialog = require('@panneau/modal-dialog');
23
25
  require('@uppy/core/dist/style.min.css');
24
26
  require('@uppy/dashboard/dist/style.min.css');
25
27
  require('@uppy/drag-drop/dist/style.min.css');
@@ -39,6 +41,8 @@ var PropTypes__default = /*#__PURE__*/_interopDefaultLegacy(PropTypes);
39
41
  var React__default = /*#__PURE__*/_interopDefaultLegacy(React);
40
42
  var Button__default = /*#__PURE__*/_interopDefaultLegacy(Button);
41
43
  var Label__default = /*#__PURE__*/_interopDefaultLegacy(Label);
44
+ var ResourceItemsList__default = /*#__PURE__*/_interopDefaultLegacy(ResourceItemsList);
45
+ var Dialog__default = /*#__PURE__*/_interopDefaultLegacy(Dialog);
42
46
 
43
47
  var styles = {"container":"panneau-field-upload-container","dashboard":"panneau-field-upload-dashboard"};
44
48
 
@@ -52,7 +56,7 @@ var propTypes = {
52
56
  fileTypes: PropTypes__default["default"].arrayOf(PropTypes__default["default"].string),
53
57
  sources: PropTypes__default["default"].arrayOf(PropTypes__default["default"].oneOf(['webcam', 'facebook', 'instagram', 'dropbox', 'google-drive'])),
54
58
  withButton: PropTypes__default["default"].bool,
55
- withSearchModal: PropTypes__default["default"].bool,
59
+ withResourceList: PropTypes__default["default"].bool,
56
60
  addButtonLabel: core.PropTypes.label,
57
61
  searchButtonLabel: core.PropTypes.label,
58
62
  allowMultipleUploads: PropTypes__default["default"].bool,
@@ -71,7 +75,7 @@ var defaultProps = {
71
75
  fileTypes: null,
72
76
  sources: ['webcam', 'facebook', 'instagram', 'dropbox', 'google-drive'],
73
77
  withButton: false,
74
- withSearchModal: false,
78
+ withResourceList: false,
75
79
  addButtonLabel: /*#__PURE__*/React__default["default"].createElement(reactIntl.FormattedMessage, {
76
80
  id: "NI9440",
77
81
  defaultMessage: [{
@@ -102,7 +106,7 @@ var UploadField = function UploadField(_ref) {
102
106
  fileTypes = _ref.fileTypes,
103
107
  sources = _ref.sources,
104
108
  withButton = _ref.withButton,
105
- withSearchModal = _ref.withSearchModal,
109
+ withResourceList = _ref.withResourceList,
106
110
  addButtonLabel = _ref.addButtonLabel,
107
111
  searchButtonLabel = _ref.searchButtonLabel,
108
112
  allowMultipleUploads = _ref.allowMultipleUploads,
@@ -118,14 +122,6 @@ var UploadField = function UploadField(_ref) {
118
122
  // const { contentRect } = entry || {};
119
123
  // const { width: containerWidth = null } = contentRect || {};
120
124
 
121
- var _useState = React.useState(false),
122
- _useState2 = _slicedToArray__default["default"](_useState, 2),
123
- mediaModalOpen = _useState2[0],
124
- setMediaModalOpen = _useState2[1];
125
- var showMediaModal = withSearchModal && mediaModalOpen;
126
- var toggleSearchModal = React.useCallback(function () {
127
- setMediaModalOpen(!mediaModalOpen);
128
- }, [mediaModalOpen, setMediaModalOpen]);
129
125
  var onComplete = React.useCallback(function (response) {
130
126
  console.log('upload complete', response); // eslint-disable-line
131
127
  var newValue = null;
@@ -167,6 +163,16 @@ var UploadField = function UploadField(_ref) {
167
163
  autoProceed: true,
168
164
  onComplete: onComplete
169
165
  });
166
+ var _useState = React.useState(false),
167
+ _useState2 = _slicedToArray__default["default"](_useState, 2),
168
+ modalOpened = _useState2[0],
169
+ setModalOpened = _useState2[1];
170
+ var openModal = React.useCallback(function () {
171
+ setModalOpened(true);
172
+ }, [setModalOpened]);
173
+ var closeModal = React.useCallback(function () {
174
+ setModalOpened(false);
175
+ }, [setModalOpened]);
170
176
  var onClickRemove = React.useCallback(function (idx) {
171
177
  if (onChange !== null && isArray__default["default"](value) && value.length > 1) {
172
178
  onChange(value.filter(function (v, i) {
@@ -176,16 +182,6 @@ var UploadField = function UploadField(_ref) {
176
182
  onChange(null);
177
183
  }
178
184
  }, [value, onChange]);
179
- var _useState3 = React.useState(false),
180
- _useState4 = _slicedToArray__default["default"](_useState3, 2),
181
- modalOpened = _useState4[0],
182
- setModalOpened = _useState4[1];
183
- var openModal = React.useCallback(function () {
184
- setModalOpened(true);
185
- }, [setModalOpened]);
186
- var closeModal = React.useCallback(function () {
187
- setModalOpened(false);
188
- }, [setModalOpened]);
189
185
  var values = React.useMemo(function () {
190
186
  if (isArray__default["default"](value)) {
191
187
  return value;
@@ -193,6 +189,24 @@ var UploadField = function UploadField(_ref) {
193
189
  return value !== null ? [value] : null;
194
190
  }, [value]);
195
191
  var hasMedia = values !== null && values.length > 0;
192
+ var _useState3 = React.useState(false),
193
+ _useState4 = _slicedToArray__default["default"](_useState3, 2),
194
+ resourceModalOpen = _useState4[0],
195
+ setResourceModalOpen = _useState4[1];
196
+ var showResourceModal = withResourceList && resourceModalOpen;
197
+ var toggleResourceModal = React.useCallback(function () {
198
+ setResourceModalOpen(!resourceModalOpen);
199
+ }, [resourceModalOpen, setResourceModalOpen]);
200
+ var closeResourceModal = React.useCallback(function () {
201
+ setResourceModalOpen(false);
202
+ }, [resourceModalOpen, setResourceModalOpen]);
203
+ var onClickSelect = React.useCallback(function (newValue) {
204
+ if (onChange !== null) {
205
+ console.log(newValue, onChange);
206
+ onChange(newValue);
207
+ setResourceModalOpen(false);
208
+ }
209
+ }, [onChange, setResourceModalOpen]);
196
210
  return /*#__PURE__*/React__default["default"].createElement("div", {
197
211
  className: classNames__default["default"]([styles.container, _defineProperty__default["default"]({}, className, className !== null)])
198
212
  // ref={containerRef}
@@ -291,14 +305,14 @@ var UploadField = function UploadField(_ref) {
291
305
  theme: "primary",
292
306
  onClick: openModal,
293
307
  disabled: disabled
294
- }, /*#__PURE__*/React__default["default"].createElement(Label__default["default"], null, addButtonLabel))), withSearchModal ? /*#__PURE__*/React__default["default"].createElement("div", {
308
+ }, /*#__PURE__*/React__default["default"].createElement(Label__default["default"], null, addButtonLabel))), withResourceList ? /*#__PURE__*/React__default["default"].createElement("div", {
295
309
  className: "col-auto ps-0"
296
310
  }, /*#__PURE__*/React__default["default"].createElement(Button__default["default"], {
297
311
  type: "button",
298
312
  theme: "primary",
299
- onClick: toggleSearchModal,
313
+ onClick: toggleResourceModal,
300
314
  disabled: disabled
301
- }, /*#__PURE__*/React__default["default"].createElement(Label__default["default"], null, searchButtonLabel))) : null) : null, !showMediaModal && !disabled && !hasMedia && !withButton && uppy !== null ? /*#__PURE__*/React__default["default"].createElement("div", {
315
+ }, /*#__PURE__*/React__default["default"].createElement(Label__default["default"], null, searchButtonLabel))) : null) : null, !showResourceModal && !disabled && !hasMedia && !withButton && uppy !== null ? /*#__PURE__*/React__default["default"].createElement("div", {
302
316
  className: styles.dashboard
303
317
  }, /*#__PURE__*/React__default["default"].createElement(react.Dashboard, Object.assign({
304
318
  uppy: uppy
@@ -315,13 +329,25 @@ var UploadField = function UploadField(_ref) {
315
329
  areInsidesReadyToBeVisible: true,
316
330
  proudlyDisplayPoweredByUppy: false,
317
331
  showProgressDetails: true
318
- }))) : null, !showMediaModal && !disabled && withButton && uppy !== null ? /*#__PURE__*/React__default["default"].createElement(react.DashboardModal, {
332
+ }))) : null, !showResourceModal && !disabled && withButton && uppy !== null ? /*#__PURE__*/React__default["default"].createElement(react.DashboardModal, {
319
333
  uppy: uppy,
320
334
  plugins: sources,
321
335
  open: modalOpened,
322
336
  onRequestClose: closeModal,
323
337
  closeModalOnClickOutside: true
324
- }) : null, showMediaModal ? 'Hello' : null);
338
+ }) : null, showResourceModal ? /*#__PURE__*/React__default["default"].createElement(Dialog__default["default"], {
339
+ title: /*#__PURE__*/React__default["default"].createElement(Label__default["default"], null, searchButtonLabel),
340
+ size: "lg",
341
+ onClickClose: closeResourceModal
342
+ }, /*#__PURE__*/React__default["default"].createElement(ResourceItemsList__default["default"], {
343
+ resource: "medias",
344
+ listProps: {
345
+ actions: ['select'],
346
+ actionsProps: {
347
+ onClickSelect: onClickSelect
348
+ }
349
+ }
350
+ })) : null);
325
351
  };
326
352
  UploadField.propTypes = propTypes;
327
353
  UploadField.defaultProps = defaultProps;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@panneau/field-upload",
3
- "version": "2.0.64",
3
+ "version": "2.0.69",
4
4
  "description": "An Upload field",
5
5
  "keywords": [
6
6
  "javascript"
@@ -56,11 +56,13 @@
56
56
  "@fortawesome/fontawesome-svg-core": "^1.2.35",
57
57
  "@fortawesome/free-solid-svg-icons": "^5.15.3",
58
58
  "@fortawesome/react-fontawesome": "^0.1.14",
59
- "@panneau/core": "^2.0.58",
60
- "@panneau/element-button": "^2.0.59",
61
- "@panneau/element-card": "^2.0.59",
62
- "@panneau/element-label": "^2.0.58",
63
- "@panneau/themes": "^2.0.58",
59
+ "@panneau/core": "^2.0.69",
60
+ "@panneau/element-button": "^2.0.69",
61
+ "@panneau/element-card": "^2.0.69",
62
+ "@panneau/element-label": "^2.0.69",
63
+ "@panneau/list-resource-items": "^2.0.69",
64
+ "@panneau/modal-dialog": "^2.0.69",
65
+ "@panneau/themes": "^2.0.69",
64
66
  "@uppy/core": "^3.2.0",
65
67
  "@uppy/dashboard": "^3.4.0",
66
68
  "@uppy/drag-drop": "^3.0.2",
@@ -78,5 +80,5 @@
78
80
  "publishConfig": {
79
81
  "access": "public"
80
82
  },
81
- "gitHead": "10acd524fa622688b6d6598c3258b21abd375b36"
83
+ "gitHead": "270c1e84966861e94a390d20ee525c33f7edadb0"
82
84
  }