@panneau/medias 3.0.139 → 3.0.142
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/assets/css/styles.css +1 -0
- package/es/index.js +536 -61
- package/lib/index.js +534 -58
- package/package.json +14 -12
package/lib/index.js
CHANGED
@@ -8,8 +8,10 @@ var PropTypes = require('prop-types');
|
|
8
8
|
var _objectSpread = require('@babel/runtime/helpers/objectSpread2');
|
9
9
|
var _slicedToArray = require('@babel/runtime/helpers/slicedToArray');
|
10
10
|
var classNames = require('classnames');
|
11
|
+
var reactIntl = require('react-intl');
|
11
12
|
var core = require('@panneau/core');
|
12
13
|
var hooks = require('@panneau/core/hooks');
|
14
|
+
var Button = require('@panneau/element-button');
|
13
15
|
var Buttons = require('@panneau/element-buttons');
|
14
16
|
var Grid = require('@panneau/element-grid');
|
15
17
|
var Icon = require('@panneau/element-icon');
|
@@ -17,10 +19,13 @@ var MediaCard = require('@panneau/element-media-card');
|
|
17
19
|
var Pagination = require('@panneau/element-pagination');
|
18
20
|
var Table = require('@panneau/element-table');
|
19
21
|
var Filters = require('@panneau/filter-filters');
|
20
|
-
var
|
21
|
-
var data = require('@panneau/data');
|
22
|
-
var Button = require('@panneau/element-button');
|
22
|
+
var _defineProperty = require('@babel/runtime/helpers/defineProperty');
|
23
23
|
var contexts = require('@panneau/core/contexts');
|
24
|
+
var Form = require('@panneau/element-form');
|
25
|
+
var MediaPlayer = require('@panneau/element-media-player');
|
26
|
+
var MediaPreview = require('@panneau/element-media-preview');
|
27
|
+
var lodash = require('lodash');
|
28
|
+
var data = require('@panneau/data');
|
24
29
|
var _toConsumableArray = require('@babel/runtime/helpers/toConsumableArray');
|
25
30
|
|
26
31
|
/* eslint-disable react/jsx-props-no-spreading */
|
@@ -35,11 +40,11 @@ var apiPropTypes = PropTypes.shape({
|
|
35
40
|
update: PropTypes.func.isRequired,
|
36
41
|
"delete": PropTypes.func.isRequired
|
37
42
|
});
|
38
|
-
var propTypes$
|
43
|
+
var propTypes$8 = {
|
39
44
|
api: apiPropTypes,
|
40
45
|
children: PropTypes.node.isRequired
|
41
46
|
};
|
42
|
-
var defaultProps$
|
47
|
+
var defaultProps$8 = {
|
43
48
|
api: null
|
44
49
|
};
|
45
50
|
function MediasApiProvider(_ref) {
|
@@ -53,10 +58,10 @@ function MediasApiProvider(_ref) {
|
|
53
58
|
value: api
|
54
59
|
}, children);
|
55
60
|
}
|
56
|
-
MediasApiProvider.propTypes = propTypes$
|
57
|
-
MediasApiProvider.defaultProps = defaultProps$
|
61
|
+
MediasApiProvider.propTypes = propTypes$8;
|
62
|
+
MediasApiProvider.defaultProps = defaultProps$8;
|
58
63
|
|
59
|
-
var _excluded$
|
64
|
+
var _excluded$7 = ["items", "pageItems"];
|
60
65
|
var useMedias = function useMedias() {
|
61
66
|
var query = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : null;
|
62
67
|
var page = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;
|
@@ -74,7 +79,7 @@ var useMedias = function useMedias() {
|
|
74
79
|
}, opts)),
|
75
80
|
items = _useItems.items,
|
76
81
|
pageItems = _useItems.pageItems,
|
77
|
-
request = _objectWithoutProperties(_useItems, _excluded$
|
82
|
+
request = _objectWithoutProperties(_useItems, _excluded$7);
|
78
83
|
return _objectSpread({
|
79
84
|
medias: page !== null ? pageItems : items,
|
80
85
|
allMedias: items
|
@@ -110,7 +115,7 @@ var useMediasRecent = function useMediasRecent(opts) {
|
|
110
115
|
};
|
111
116
|
var useMediasRecent$1 = useMediasRecent;
|
112
117
|
|
113
|
-
var _excluded$
|
118
|
+
var _excluded$6 = ["data"];
|
114
119
|
var useMedia = function useMedia(id, opts) {
|
115
120
|
var api = useMediasApi();
|
116
121
|
var loader = React.useCallback(function () {
|
@@ -118,7 +123,7 @@ var useMedia = function useMedia(id, opts) {
|
|
118
123
|
}, [api, id]);
|
119
124
|
var _useData = data.useData(loader, opts),
|
120
125
|
data$1 = _useData.data,
|
121
|
-
request = _objectWithoutProperties(_useData, _excluded$
|
126
|
+
request = _objectWithoutProperties(_useData, _excluded$6);
|
122
127
|
return _objectSpread({
|
123
128
|
story: data$1
|
124
129
|
}, request);
|
@@ -165,6 +170,406 @@ var useMediaUpdate = function useMediaUpdate() {
|
|
165
170
|
};
|
166
171
|
var useMediaUpdate$1 = useMediaUpdate;
|
167
172
|
|
173
|
+
var useMediaDestroy = function useMediaDestroy() {
|
174
|
+
var _useState = React.useState(false),
|
175
|
+
_useState2 = _slicedToArray(_useState, 2),
|
176
|
+
loading = _useState2[0],
|
177
|
+
setLoading = _useState2[1];
|
178
|
+
var api = useMediasApi();
|
179
|
+
var destroy = React.useCallback(function (id, data) {
|
180
|
+
setLoading(true);
|
181
|
+
return api["delete"](id, data).then(function (response) {
|
182
|
+
setLoading(false);
|
183
|
+
return response;
|
184
|
+
});
|
185
|
+
}, [api, setLoading]);
|
186
|
+
return {
|
187
|
+
destroy: destroy,
|
188
|
+
loading: loading
|
189
|
+
};
|
190
|
+
};
|
191
|
+
|
192
|
+
var styles = {"mediaFrame":"panneau-medias-mediaFrame","playButton":"panneau-medias-playButton"};
|
193
|
+
|
194
|
+
var propTypes$7 = {
|
195
|
+
value: PropTypes.shape({
|
196
|
+
id: PropTypes.string,
|
197
|
+
type: PropTypes.string
|
198
|
+
}),
|
199
|
+
className: PropTypes.string
|
200
|
+
};
|
201
|
+
var defaultProps$7 = {
|
202
|
+
value: null,
|
203
|
+
className: null
|
204
|
+
};
|
205
|
+
function MediaFrame(_ref) {
|
206
|
+
var value = _ref.value,
|
207
|
+
className = _ref.className;
|
208
|
+
var _useState = React.useState(false),
|
209
|
+
_useState2 = _slicedToArray(_useState, 2),
|
210
|
+
showPlayer = _useState2[0],
|
211
|
+
setShowPlayer = _useState2[1];
|
212
|
+
var _ref2 = value || {},
|
213
|
+
_ref2$type = _ref2.type,
|
214
|
+
type = _ref2$type === void 0 ? null : _ref2$type;
|
215
|
+
var onClick = React.useCallback(function () {
|
216
|
+
setShowPlayer(!showPlayer);
|
217
|
+
}, [showPlayer, setShowPlayer]);
|
218
|
+
return /*#__PURE__*/React.createElement("div", {
|
219
|
+
className: classNames([className, _defineProperty({}, className, className != null)])
|
220
|
+
}, showPlayer ? /*#__PURE__*/React.createElement(MediaPlayer, {
|
221
|
+
value: value
|
222
|
+
}) : /*#__PURE__*/React.createElement(MediaPreview, {
|
223
|
+
value: value,
|
224
|
+
width: "100%"
|
225
|
+
}), /*#__PURE__*/React.createElement("div", {
|
226
|
+
className: styles.playButton
|
227
|
+
}, !showPlayer && (type === 'video' || type === 'embed') ? /*#__PURE__*/React.createElement(Button, {
|
228
|
+
className: "rounded-circle",
|
229
|
+
theme: "secondary",
|
230
|
+
onClick: onClick,
|
231
|
+
icon: "play-fill"
|
232
|
+
}) : null));
|
233
|
+
}
|
234
|
+
MediaFrame.propTypes = propTypes$7;
|
235
|
+
MediaFrame.defaultProps = defaultProps$7;
|
236
|
+
|
237
|
+
var defaultMetadata = [{
|
238
|
+
title: /*#__PURE__*/React.createElement(reactIntl.FormattedMessage, {
|
239
|
+
id: "3RT69u",
|
240
|
+
defaultMessage: [{
|
241
|
+
"type": 0,
|
242
|
+
"value": "Informations"
|
243
|
+
}]
|
244
|
+
}),
|
245
|
+
items: [{
|
246
|
+
id: 'user',
|
247
|
+
label: /*#__PURE__*/React.createElement(reactIntl.FormattedMessage, {
|
248
|
+
id: "yByaBh",
|
249
|
+
defaultMessage: [{
|
250
|
+
"type": 0,
|
251
|
+
"value": "Added by"
|
252
|
+
}]
|
253
|
+
}),
|
254
|
+
component: 'avatar',
|
255
|
+
path: 'user'
|
256
|
+
}, {
|
257
|
+
id: 'created_at',
|
258
|
+
label: /*#__PURE__*/React.createElement(reactIntl.FormattedMessage, {
|
259
|
+
id: "PN+75e",
|
260
|
+
defaultMessage: [{
|
261
|
+
"type": 0,
|
262
|
+
"value": "Created at"
|
263
|
+
}]
|
264
|
+
}),
|
265
|
+
component: 'date',
|
266
|
+
path: 'created_at',
|
267
|
+
format: 'yyyy-MM-dd hh:ss'
|
268
|
+
}]
|
269
|
+
}, {
|
270
|
+
title: /*#__PURE__*/React.createElement(reactIntl.FormattedMessage, {
|
271
|
+
id: "xKUOLG",
|
272
|
+
defaultMessage: [{
|
273
|
+
"type": 0,
|
274
|
+
"value": "Technical details"
|
275
|
+
}]
|
276
|
+
}),
|
277
|
+
items: [{
|
278
|
+
id: 'format',
|
279
|
+
label: /*#__PURE__*/React.createElement(reactIntl.FormattedMessage, {
|
280
|
+
id: "JuxiUN",
|
281
|
+
defaultMessage: [{
|
282
|
+
"type": 0,
|
283
|
+
"value": "Format"
|
284
|
+
}]
|
285
|
+
}),
|
286
|
+
component: 'unit',
|
287
|
+
format: 'format',
|
288
|
+
path: 'format'
|
289
|
+
}, {
|
290
|
+
id: 'dimensions',
|
291
|
+
label: /*#__PURE__*/React.createElement(reactIntl.FormattedMessage, {
|
292
|
+
id: "rmJBin",
|
293
|
+
defaultMessage: [{
|
294
|
+
"type": 0,
|
295
|
+
"value": "Dimensions"
|
296
|
+
}]
|
297
|
+
}),
|
298
|
+
component: 'unit',
|
299
|
+
format: 'dimensions',
|
300
|
+
path: 'metadata'
|
301
|
+
}, {
|
302
|
+
id: 'size',
|
303
|
+
label: /*#__PURE__*/React.createElement(reactIntl.FormattedMessage, {
|
304
|
+
id: "g2CRt5",
|
305
|
+
defaultMessage: [{
|
306
|
+
"type": 0,
|
307
|
+
"value": "Size"
|
308
|
+
}]
|
309
|
+
}),
|
310
|
+
component: 'unit',
|
311
|
+
format: 'bytes',
|
312
|
+
path: 'metadata.size'
|
313
|
+
}, {
|
314
|
+
id: 'duration',
|
315
|
+
label: /*#__PURE__*/React.createElement(reactIntl.FormattedMessage, {
|
316
|
+
id: "wU++NJ",
|
317
|
+
defaultMessage: [{
|
318
|
+
"type": 0,
|
319
|
+
"value": "Duration"
|
320
|
+
}]
|
321
|
+
}),
|
322
|
+
component: 'unit',
|
323
|
+
format: 'duration',
|
324
|
+
path: 'metadata.duration'
|
325
|
+
}]
|
326
|
+
}];
|
327
|
+
|
328
|
+
var _excluded$5 = ["label", "path", "component"];
|
329
|
+
var propTypes$6 = {
|
330
|
+
value: PropTypes.shape({
|
331
|
+
metadata: PropTypes.shape({}),
|
332
|
+
user: PropTypes.shape({}),
|
333
|
+
createdAt: PropTypes.string
|
334
|
+
}),
|
335
|
+
sections: PropTypes.arrayOf(PropTypes.shape({
|
336
|
+
title: PropTypes.node,
|
337
|
+
items: PropTypes.arrayOf(PropTypes.shape({})) // displays
|
338
|
+
})),
|
339
|
+
className: PropTypes.string
|
340
|
+
};
|
341
|
+
var defaultProps$6 = {
|
342
|
+
value: null,
|
343
|
+
sections: defaultMetadata,
|
344
|
+
className: null
|
345
|
+
};
|
346
|
+
function MediaMetadata(_ref) {
|
347
|
+
var sections = _ref.sections,
|
348
|
+
value = _ref.value,
|
349
|
+
className = _ref.className;
|
350
|
+
var displayComponents = contexts.useDisplaysComponentsManager();
|
351
|
+
return /*#__PURE__*/React.createElement("div", {
|
352
|
+
className: classNames(['px-2', _defineProperty({}, className, className !== null)])
|
353
|
+
}, (sections || []).map(function (_ref3, i) {
|
354
|
+
var title = _ref3.title,
|
355
|
+
items = _ref3.items;
|
356
|
+
return /*#__PURE__*/React.createElement("div", {
|
357
|
+
className: "mb-5",
|
358
|
+
key: "section-".concat(i + 1)
|
359
|
+
}, /*#__PURE__*/React.createElement("h6", {
|
360
|
+
className: "px-1"
|
361
|
+
}, title), /*#__PURE__*/React.createElement("ul", {
|
362
|
+
className: "list-group list-group-flush"
|
363
|
+
}, (items || []).map(function (_ref4, index) {
|
364
|
+
var label = _ref4.label,
|
365
|
+
path = _ref4.path,
|
366
|
+
_ref4$component = _ref4.component,
|
367
|
+
component = _ref4$component === void 0 ? null : _ref4$component,
|
368
|
+
props = _objectWithoutProperties(_ref4, _excluded$5);
|
369
|
+
var Component = displayComponents.getComponent(component || 'text');
|
370
|
+
var itemValue = lodash.get(value, path, null);
|
371
|
+
return Component !== null && itemValue !== null ? /*#__PURE__*/React.createElement("li", {
|
372
|
+
className: classNames(['row', 'd-flex', 'align-items-center', 'justify-content-between', 'p-1', 'border-secondary-1', 'border-1', 'border-bottom', 'text-small', {
|
373
|
+
'border-top': index === 0
|
374
|
+
}]),
|
375
|
+
key: "item-".concat(index + 1)
|
376
|
+
}, /*#__PURE__*/React.createElement("div", {
|
377
|
+
className: "col-auto"
|
378
|
+
}, label), /*#__PURE__*/React.createElement("div", {
|
379
|
+
className: "col-auto align-right"
|
380
|
+
}, /*#__PURE__*/React.createElement(Component, Object.assign({}, props, {
|
381
|
+
value: itemValue
|
382
|
+
})))) : null;
|
383
|
+
})));
|
384
|
+
}));
|
385
|
+
}
|
386
|
+
MediaMetadata.propTypes = propTypes$6;
|
387
|
+
MediaMetadata.defaultProps = defaultProps$6;
|
388
|
+
|
389
|
+
var defaultFields = [
|
390
|
+
// { name: 'type', label: 'Type', type: 'string', component: 'text', disabled: true },
|
391
|
+
{
|
392
|
+
name: 'name',
|
393
|
+
label: /*#__PURE__*/React.createElement(reactIntl.FormattedMessage, {
|
394
|
+
id: "WX83V9",
|
395
|
+
defaultMessage: [{
|
396
|
+
"type": 0,
|
397
|
+
"value": "File name"
|
398
|
+
}]
|
399
|
+
}),
|
400
|
+
type: 'text',
|
401
|
+
component: 'text'
|
402
|
+
}, {
|
403
|
+
name: 'description',
|
404
|
+
label: /*#__PURE__*/React.createElement(reactIntl.FormattedMessage, {
|
405
|
+
id: "ygNvmz",
|
406
|
+
defaultMessage: [{
|
407
|
+
"type": 0,
|
408
|
+
"value": "Description"
|
409
|
+
}]
|
410
|
+
}),
|
411
|
+
type: 'text',
|
412
|
+
component: 'text'
|
413
|
+
}
|
414
|
+
// {
|
415
|
+
// name: 'url',
|
416
|
+
// label: <FormattedMessage defaultMessage="URL" description="Field name" />,
|
417
|
+
// type: 'text',
|
418
|
+
// component: 'url',
|
419
|
+
// },
|
420
|
+
// {
|
421
|
+
// name: 'thumbnail_url',
|
422
|
+
// label: <FormattedMessage defaultMessage="Thumbnail URL" description="Field name" />,
|
423
|
+
// type: 'text',
|
424
|
+
// component: 'url',
|
425
|
+
// },
|
426
|
+
];
|
427
|
+
|
428
|
+
var propTypes$5 = {
|
429
|
+
value: PropTypes.shape({
|
430
|
+
id: PropTypes.string
|
431
|
+
}),
|
432
|
+
fields: PropTypes.arrayOf(PropTypes.shape({
|
433
|
+
name: PropTypes.string
|
434
|
+
})),
|
435
|
+
displays: PropTypes.arrayOf(PropTypes.shape({
|
436
|
+
name: PropTypes.string
|
437
|
+
})),
|
438
|
+
onChange: PropTypes.func.isRequired,
|
439
|
+
onConfirm: PropTypes.func.isRequired,
|
440
|
+
onDelete: PropTypes.func,
|
441
|
+
onClose: PropTypes.func,
|
442
|
+
className: PropTypes.string
|
443
|
+
};
|
444
|
+
var defaultProps$5 = {
|
445
|
+
value: null,
|
446
|
+
fields: defaultFields,
|
447
|
+
displays: null,
|
448
|
+
onClose: null,
|
449
|
+
onDelete: null,
|
450
|
+
className: null
|
451
|
+
};
|
452
|
+
function MediaForm(_ref) {
|
453
|
+
var initialValue = _ref.value,
|
454
|
+
initialFields = _ref.fields,
|
455
|
+
displays = _ref.displays,
|
456
|
+
onChange = _ref.onChange,
|
457
|
+
onConfirm = _ref.onConfirm;
|
458
|
+
_ref.onDelete;
|
459
|
+
var onClose = _ref.onClose,
|
460
|
+
className = _ref.className;
|
461
|
+
var FieldsComponent = contexts.useFieldComponent('fields');
|
462
|
+
var _useMediaUpdate = useMediaUpdate$1(),
|
463
|
+
update = _useMediaUpdate.update,
|
464
|
+
updating = _useMediaUpdate.loading;
|
465
|
+
var _useMediaDestroy = useMediaDestroy(),
|
466
|
+
destroy = _useMediaDestroy.destroy,
|
467
|
+
destroying = _useMediaDestroy.loading;
|
468
|
+
var _useState = React.useState(false),
|
469
|
+
_useState2 = _slicedToArray(_useState, 2);
|
470
|
+
_useState2[0];
|
471
|
+
var setChanged = _useState2[1];
|
472
|
+
var disabled = updating || destroying || initialValue === null;
|
473
|
+
var _ref2 = initialValue || {},
|
474
|
+
_ref2$name = _ref2.name,
|
475
|
+
name = _ref2$name === void 0 ? null : _ref2$name,
|
476
|
+
_ref2$type = _ref2.type,
|
477
|
+
type = _ref2$type === void 0 ? null : _ref2$type;
|
478
|
+
var onChangeMedia = React.useCallback(function (newValue) {
|
479
|
+
if (onChange !== null) {
|
480
|
+
onChange(newValue);
|
481
|
+
}
|
482
|
+
setChanged(true);
|
483
|
+
}, [onChange, setChanged]);
|
484
|
+
var onMediaSaved = React.useCallback(function (newValue) {
|
485
|
+
if (onConfirm !== null) {
|
486
|
+
onConfirm(newValue);
|
487
|
+
}
|
488
|
+
setChanged(false);
|
489
|
+
}, [onChange, setChanged]);
|
490
|
+
var onDeleteMedia = React.useCallback(function () {
|
491
|
+
// Destroy
|
492
|
+
if (onClose !== null) {
|
493
|
+
onClose();
|
494
|
+
}
|
495
|
+
setChanged(false);
|
496
|
+
}, [destroy, setChanged]);
|
497
|
+
var postForm = React.useCallback(function (action, data) {
|
498
|
+
return initialValue !== null ? update(initialValue.id, data) : new Promise();
|
499
|
+
}, [initialValue, update]);
|
500
|
+
var _useForm = hooks.useForm({
|
501
|
+
fields: initialFields,
|
502
|
+
postForm: postForm,
|
503
|
+
onComplete: onMediaSaved,
|
504
|
+
value: initialValue,
|
505
|
+
setValue: onChange
|
506
|
+
}),
|
507
|
+
value = _useForm.value,
|
508
|
+
setValue = _useForm.setValue,
|
509
|
+
fields = _useForm.fields;
|
510
|
+
_useForm.onSubmit;
|
511
|
+
_useForm.status;
|
512
|
+
_useForm.generalError;
|
513
|
+
_useForm.errors;
|
514
|
+
return /*#__PURE__*/React.createElement("div", {
|
515
|
+
className: classNames([className, _defineProperty({}, className, className != null)])
|
516
|
+
}, /*#__PURE__*/React.createElement("div", {
|
517
|
+
className: "d-flex w-100 justify-content-between mb-2 pb-2 border-bottom"
|
518
|
+
}, /*#__PURE__*/React.createElement("div", null, /*#__PURE__*/React.createElement("h4", {
|
519
|
+
className: "d-inline"
|
520
|
+
}, name), /*#__PURE__*/React.createElement("span", {
|
521
|
+
className: "mx-2"
|
522
|
+
}, type)), /*#__PURE__*/React.createElement("div", null, /*#__PURE__*/React.createElement(Button, {
|
523
|
+
className: "me-2",
|
524
|
+
theme: "danger",
|
525
|
+
onClick: onDeleteMedia
|
526
|
+
}, /*#__PURE__*/React.createElement(reactIntl.FormattedMessage, {
|
527
|
+
id: "Bhu3B2",
|
528
|
+
defaultMessage: [{
|
529
|
+
"type": 0,
|
530
|
+
"value": "Delete"
|
531
|
+
}]
|
532
|
+
})), onConfirm !== null ? /*#__PURE__*/React.createElement(Button, {
|
533
|
+
theme: "primary",
|
534
|
+
onClick: onConfirm
|
535
|
+
}, /*#__PURE__*/React.createElement(reactIntl.FormattedMessage, {
|
536
|
+
id: "R1HYj0",
|
537
|
+
defaultMessage: [{
|
538
|
+
"type": 0,
|
539
|
+
"value": "Save"
|
540
|
+
}]
|
541
|
+
})) : null)), /*#__PURE__*/React.createElement("div", {
|
542
|
+
className: "row"
|
543
|
+
}, /*#__PURE__*/React.createElement("div", {
|
544
|
+
className: "col-md-6"
|
545
|
+
}, /*#__PURE__*/React.createElement("div", {
|
546
|
+
className: "position-relative w-100",
|
547
|
+
style: {
|
548
|
+
height: 400
|
549
|
+
}
|
550
|
+
}, /*#__PURE__*/React.createElement("div", {
|
551
|
+
className: styles.mediaFrame
|
552
|
+
}, /*#__PURE__*/React.createElement(MediaFrame, {
|
553
|
+
value: value
|
554
|
+
})))), /*#__PURE__*/React.createElement("div", {
|
555
|
+
className: "col-md-6"
|
556
|
+
}, /*#__PURE__*/React.createElement(Form, {
|
557
|
+
onChange: onChangeMedia,
|
558
|
+
withoutActions: true
|
559
|
+
}, /*#__PURE__*/React.createElement(FieldsComponent, {
|
560
|
+
fields: fields,
|
561
|
+
value: value,
|
562
|
+
onChange: setValue,
|
563
|
+
disabled: disabled
|
564
|
+
})), /*#__PURE__*/React.createElement(MediaMetadata, {
|
565
|
+
className: "mt-5",
|
566
|
+
value: value,
|
567
|
+
displays: displays
|
568
|
+
}))));
|
569
|
+
}
|
570
|
+
MediaForm.propTypes = propTypes$5;
|
571
|
+
MediaForm.defaultProps = defaultProps$5;
|
572
|
+
|
168
573
|
var defaultColumns = [{
|
169
574
|
id: 'image',
|
170
575
|
label: /*#__PURE__*/React.createElement(reactIntl.FormattedMessage, {
|
@@ -362,8 +767,6 @@ var defaultFilters = [{
|
|
362
767
|
name: 'search'
|
363
768
|
}];
|
364
769
|
|
365
|
-
var styles = {};
|
366
|
-
|
367
770
|
var _excluded$4 = ["page", "count"];
|
368
771
|
var propTypes$4 = {
|
369
772
|
items: core.PropTypes.medias,
|
@@ -371,21 +774,25 @@ var propTypes$4 = {
|
|
371
774
|
columns: core.PropTypes.tableColumns,
|
372
775
|
query: PropTypes.shape({}),
|
373
776
|
baseUrl: PropTypes.string,
|
374
|
-
|
777
|
+
fields: core.PropTypes.fields,
|
375
778
|
layout: PropTypes.string,
|
376
779
|
layouts: PropTypes.arrayOf(PropTypes.shape({})),
|
377
780
|
theme: PropTypes.string,
|
378
781
|
tableProps: PropTypes.bool,
|
782
|
+
onSelectItem: PropTypes.func,
|
783
|
+
onItemsChange: PropTypes.func,
|
784
|
+
selectedCount: PropTypes.number,
|
785
|
+
onClearSelected: PropTypes.func,
|
379
786
|
className: PropTypes.string
|
380
787
|
};
|
381
788
|
var defaultProps$4 = {
|
382
789
|
items: null,
|
383
790
|
filters: defaultFilters,
|
384
791
|
columns: defaultColumns,
|
385
|
-
|
792
|
+
fields: defaultFields,
|
386
793
|
query: null,
|
387
794
|
baseUrl: null,
|
388
|
-
layout:
|
795
|
+
layout: 'table',
|
389
796
|
layouts: [{
|
390
797
|
id: 'table',
|
391
798
|
label: /*#__PURE__*/React.createElement(Icon, {
|
@@ -399,6 +806,10 @@ var defaultProps$4 = {
|
|
399
806
|
}],
|
400
807
|
theme: null,
|
401
808
|
tableProps: null,
|
809
|
+
onSelectItem: null,
|
810
|
+
onItemsChange: null,
|
811
|
+
selectedCount: null,
|
812
|
+
onClearSelected: null,
|
402
813
|
className: null
|
403
814
|
};
|
404
815
|
function MediasBrowser(_ref) {
|
@@ -411,6 +822,10 @@ function MediasBrowser(_ref) {
|
|
411
822
|
layouts = _ref.layouts,
|
412
823
|
theme = _ref.theme,
|
413
824
|
tableProps = _ref.tableProps,
|
825
|
+
onSelectItem = _ref.onSelectItem,
|
826
|
+
onItemsChange = _ref.onItemsChange,
|
827
|
+
selectedCount = _ref.selectedCount,
|
828
|
+
onClearSelected = _ref.onClearSelected,
|
414
829
|
className = _ref.className;
|
415
830
|
var baseQuery = React.useMemo(function () {
|
416
831
|
return initialQuery;
|
@@ -446,6 +861,11 @@ function MediasBrowser(_ref) {
|
|
446
861
|
loading = _useMedias.loading,
|
447
862
|
lastPage = _useMedias.lastPage,
|
448
863
|
total = _useMedias.total;
|
864
|
+
React.useEffect(function () {
|
865
|
+
if (onItemsChange !== null) {
|
866
|
+
onItemsChange(items);
|
867
|
+
}
|
868
|
+
}, [items, onItemsChange]);
|
449
869
|
var _useState = React.useState(initialLayout || 'grid'),
|
450
870
|
_useState2 = _slicedToArray(_useState, 2),
|
451
871
|
layout = _useState2[0],
|
@@ -456,9 +876,49 @@ function MediasBrowser(_ref) {
|
|
456
876
|
var onClickLayout = React.useCallback(function (lay) {
|
457
877
|
setLayout(lay);
|
458
878
|
}, [setLayout]);
|
879
|
+
var _useState3 = React.useState(null),
|
880
|
+
_useState4 = _slicedToArray(_useState3, 2),
|
881
|
+
media = _useState4[0],
|
882
|
+
setMedia = _useState4[1];
|
883
|
+
var onOpenMedia = React.useCallback(function (currentMedia) {
|
884
|
+
setMedia(currentMedia);
|
885
|
+
}, [setMedia]);
|
886
|
+
var onCloseMedia = React.useCallback(function () {
|
887
|
+
setMedia(null);
|
888
|
+
}, [setMedia]);
|
889
|
+
var pagination = /*#__PURE__*/React.createElement(Pagination, {
|
890
|
+
page: page,
|
891
|
+
lastPage: lastPage,
|
892
|
+
total: total,
|
893
|
+
url: baseUrl,
|
894
|
+
query: query,
|
895
|
+
onClickPage: onPageChange,
|
896
|
+
theme: theme,
|
897
|
+
loading: loading,
|
898
|
+
selectedCount: selectedCount,
|
899
|
+
onClearSelected: onClearSelected,
|
900
|
+
withPreviousNext: true,
|
901
|
+
alwaysShowButtons: true
|
902
|
+
});
|
459
903
|
return /*#__PURE__*/React.createElement("div", {
|
460
904
|
className: classNames([styles.container, className])
|
461
|
-
}, /*#__PURE__*/React.createElement(
|
905
|
+
}, media !== null ? /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement("div", {
|
906
|
+
className: "mt-2 mb-4"
|
907
|
+
}, /*#__PURE__*/React.createElement(Button, {
|
908
|
+
theme: "primary",
|
909
|
+
outline: true,
|
910
|
+
onClick: onCloseMedia,
|
911
|
+
icon: "arrow-left"
|
912
|
+
}, /*#__PURE__*/React.createElement(reactIntl.FormattedMessage, {
|
913
|
+
id: "ac4218",
|
914
|
+
defaultMessage: [{
|
915
|
+
"type": 0,
|
916
|
+
"value": "Back to files"
|
917
|
+
}]
|
918
|
+
}))), /*#__PURE__*/React.createElement(MediaForm, {
|
919
|
+
value: media,
|
920
|
+
onClose: onCloseMedia
|
921
|
+
})) : /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(Filters, {
|
462
922
|
value: query,
|
463
923
|
filters: filters,
|
464
924
|
onChange: onQueryChange,
|
@@ -482,44 +942,30 @@ function MediasBrowser(_ref) {
|
|
482
942
|
className: 'px-3'
|
483
943
|
});
|
484
944
|
})
|
485
|
-
}) : null, /*#__PURE__*/React.createElement(
|
486
|
-
|
487
|
-
lastPage: lastPage,
|
488
|
-
total: total,
|
489
|
-
url: baseUrl,
|
490
|
-
query: query,
|
491
|
-
onClickPage: onPageChange,
|
492
|
-
theme: theme,
|
493
|
-
loading: loading,
|
494
|
-
withPreviousNext: true,
|
495
|
-
alwaysShowButtons: true
|
496
|
-
})), layout === 'grid' ? /*#__PURE__*/React.createElement(Grid, Object.assign({}, tableProps, {
|
945
|
+
}) : null, pagination), layout === 'grid' ? /*#__PURE__*/React.createElement(Grid, Object.assign({}, tableProps, {
|
946
|
+
size: "xsmall",
|
497
947
|
items: items || [],
|
498
948
|
component: MediaCard,
|
499
949
|
componentProps: {
|
500
950
|
className: 'd-flex w-100',
|
501
|
-
cardClassName: 'flex-grow-1'
|
951
|
+
cardClassName: 'flex-grow-1',
|
952
|
+
vertical: true
|
953
|
+
},
|
954
|
+
onSelectItem: onSelectItem !== null ? onSelectItem : function (it) {
|
955
|
+
return onOpenMedia(it);
|
502
956
|
}
|
503
|
-
})) : /*#__PURE__*/React.createElement(Table, Object.assign({}, tableProps, {
|
957
|
+
})) : null, layout === 'table' ? /*#__PURE__*/React.createElement(Table, Object.assign({}, tableProps, {
|
504
958
|
columns: columns,
|
505
959
|
items: items,
|
506
960
|
displayPlaceholder: /*#__PURE__*/React.createElement("span", {
|
507
961
|
className: "text-secondary text-opacity-75"
|
508
|
-
}, "\u2014")
|
509
|
-
|
962
|
+
}, "\u2014"),
|
963
|
+
onSelectItem: onSelectItem !== null ? onSelectItem : function (it) {
|
964
|
+
return onOpenMedia(it);
|
965
|
+
}
|
966
|
+
})) : null, /*#__PURE__*/React.createElement("div", {
|
510
967
|
className: classNames(['d-flex', 'mt-3', 'mb-1', 'justify-content-end'])
|
511
|
-
},
|
512
|
-
page: page,
|
513
|
-
lastPage: lastPage,
|
514
|
-
total: total,
|
515
|
-
url: baseUrl,
|
516
|
-
query: query,
|
517
|
-
onClickPage: onPageChange,
|
518
|
-
theme: theme,
|
519
|
-
loading: loading,
|
520
|
-
withPreviousNext: true,
|
521
|
-
alwaysShowButtons: true
|
522
|
-
})));
|
968
|
+
}, pagination)));
|
523
969
|
}
|
524
970
|
MediasBrowser.propTypes = propTypes$4;
|
525
971
|
MediasBrowser.defaultProps = defaultProps$4;
|
@@ -541,46 +987,75 @@ function MediasBrowserContainer(_ref) {
|
|
541
987
|
MediasBrowserContainer.propTypes = propTypes$3;
|
542
988
|
MediasBrowserContainer.defaultProps = defaultProps$3;
|
543
989
|
|
544
|
-
var _excluded$2 = ["value", "onChange", "onConfirm", "onClose", "multiple", "className"];
|
990
|
+
var _excluded$2 = ["value", "selectedItems", "onChange", "onConfirm", "onClose", "multiple", "withoutButtons", "className"];
|
545
991
|
var propTypes$2 = {
|
546
992
|
// eslint-disable-next-line react/forbid-prop-types
|
547
|
-
value: PropTypes.
|
993
|
+
value: PropTypes.arrayOf(PropTypes.shape({})),
|
994
|
+
selectedItems: PropTypes.arrayOf(PropTypes.shape({})),
|
548
995
|
onChange: PropTypes.func.isRequired,
|
549
996
|
onConfirm: PropTypes.func.isRequired,
|
550
997
|
onClose: PropTypes.func,
|
551
998
|
multiple: PropTypes.bool,
|
999
|
+
withoutButtons: PropTypes.bool,
|
552
1000
|
className: PropTypes.string
|
553
1001
|
};
|
554
1002
|
var defaultProps$2 = {
|
555
1003
|
value: null,
|
1004
|
+
selectedItems: null,
|
556
1005
|
onClose: null,
|
557
1006
|
multiple: false,
|
1007
|
+
withoutButtons: false,
|
558
1008
|
className: null
|
559
1009
|
};
|
560
1010
|
function MediasPicker(_ref) {
|
561
1011
|
var value = _ref.value,
|
1012
|
+
initialSelectedItems = _ref.selectedItems,
|
562
1013
|
onChange = _ref.onChange,
|
563
1014
|
onConfirm = _ref.onConfirm,
|
564
1015
|
onClose = _ref.onClose,
|
565
1016
|
multiple = _ref.multiple,
|
1017
|
+
withoutButtons = _ref.withoutButtons,
|
566
1018
|
className = _ref.className,
|
567
1019
|
props = _objectWithoutProperties(_ref, _excluded$2);
|
568
|
-
var
|
569
|
-
|
570
|
-
|
571
|
-
|
572
|
-
|
1020
|
+
var _useState = React.useState(value),
|
1021
|
+
_useState2 = _slicedToArray(_useState, 2),
|
1022
|
+
items = _useState2[0],
|
1023
|
+
setItems = _useState2[1];
|
1024
|
+
var onItemsChange = React.useCallback(function (pageItems) {
|
1025
|
+
setItems(pageItems);
|
1026
|
+
}, [setItems]);
|
573
1027
|
var disabled = value === null || value.length < 1;
|
1028
|
+
var _useItemSelection = hooks.useItemSelection({
|
1029
|
+
items: items,
|
1030
|
+
selectedItems: initialSelectedItems,
|
1031
|
+
onSelectionChange: onChange,
|
1032
|
+
multipleSelection: multiple
|
1033
|
+
}),
|
1034
|
+
onSelectItem = _useItemSelection.onSelectItem,
|
1035
|
+
onSelectPage = _useItemSelection.onSelectPage,
|
1036
|
+
onClearSelected = _useItemSelection.onClearSelected,
|
1037
|
+
pageSelected = _useItemSelection.pageSelected,
|
1038
|
+
selectedCount = _useItemSelection.selectedCount,
|
1039
|
+
selectedItems = _useItemSelection.selectedItems;
|
574
1040
|
return /*#__PURE__*/React.createElement("div", {
|
575
1041
|
className: className
|
576
1042
|
}, /*#__PURE__*/React.createElement(MediasBrowser, Object.assign({
|
577
1043
|
tableProps: {
|
578
1044
|
selectable: true,
|
579
1045
|
multipleSelection: multiple,
|
580
|
-
|
581
|
-
|
582
|
-
|
1046
|
+
onSelectItem: onSelectItem,
|
1047
|
+
onSelectPage: onSelectPage,
|
1048
|
+
selectedItems: selectedItems,
|
1049
|
+
pageSelected: pageSelected
|
1050
|
+
},
|
1051
|
+
onSelectItem: onSelectItem,
|
1052
|
+
onItemsChange: onItemsChange,
|
1053
|
+
selectedCount: selectedCount,
|
1054
|
+
onClearSelected: onClearSelected
|
1055
|
+
}, props)), multiple && !withoutButtons ? /*#__PURE__*/React.createElement("div", {
|
583
1056
|
className: "d-flex w-100 align-items-end justify-content-end mt-3"
|
1057
|
+
}, /*#__PURE__*/React.createElement("div", {
|
1058
|
+
className: "btn-group"
|
584
1059
|
}, onClose !== null ? /*#__PURE__*/React.createElement(Button, {
|
585
1060
|
type: "button",
|
586
1061
|
theme: "secondary",
|
@@ -600,12 +1075,12 @@ function MediasPicker(_ref) {
|
|
600
1075
|
outline: disabled,
|
601
1076
|
className: "d-block"
|
602
1077
|
}, /*#__PURE__*/React.createElement(reactIntl.FormattedMessage, {
|
603
|
-
id: "
|
1078
|
+
id: "rvOVCV",
|
604
1079
|
defaultMessage: [{
|
605
1080
|
"type": 0,
|
606
|
-
"value": "Confirm"
|
1081
|
+
"value": "Confirm selection"
|
607
1082
|
}]
|
608
|
-
}))) : null);
|
1083
|
+
})))) : null);
|
609
1084
|
}
|
610
1085
|
MediasPicker.propTypes = propTypes$2;
|
611
1086
|
MediasPicker.defaultProps = defaultProps$2;
|
@@ -689,6 +1164,7 @@ function MediasResourceBrowser(_ref) {
|
|
689
1164
|
MediasResourceBrowser.propTypes = propTypes;
|
690
1165
|
MediasResourceBrowser.defaultProps = defaultProps;
|
691
1166
|
|
1167
|
+
exports.MediaForm = MediaForm;
|
692
1168
|
exports.MediasApiProvider = MediasApiProvider;
|
693
1169
|
exports.MediasBrowser = MediasBrowser;
|
694
1170
|
exports.MediasPicker = MediasPicker;
|