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