@panneau/medias 3.0.172 → 3.0.174
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/es/index.js +241 -122
- package/lib/index.js +241 -121
- package/package.json +16 -16
package/es/index.js
CHANGED
@@ -23,7 +23,7 @@ import MediaCard from '@panneau/element-media-card';
|
|
23
23
|
import Pagination from '@panneau/element-pagination';
|
24
24
|
import Table from '@panneau/element-table';
|
25
25
|
import Filters from '@panneau/filter-filters';
|
26
|
-
import {
|
26
|
+
import { useItemsStore, useData, useApi } from '@panneau/data';
|
27
27
|
|
28
28
|
/* eslint-disable react/jsx-props-no-spreading */
|
29
29
|
var MediasApiContext = /*#__PURE__*/React.createContext(null);
|
@@ -60,60 +60,42 @@ function MediasApiProvider(_ref) {
|
|
60
60
|
MediasApiProvider.propTypes = propTypes$9;
|
61
61
|
MediasApiProvider.defaultProps = defaultProps$9;
|
62
62
|
|
63
|
-
var _excluded$7 = ["items"
|
63
|
+
var _excluded$7 = ["items"];
|
64
64
|
var useMedias = function useMedias() {
|
65
65
|
var query = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : null;
|
66
66
|
var page = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;
|
67
67
|
var count = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : null;
|
68
68
|
var opts = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {};
|
69
69
|
var api = useMediasApi();
|
70
|
+
var trashed = useMemo(function () {
|
71
|
+
var _ref = opts || {},
|
72
|
+
trashedOpt = _ref.trashed;
|
73
|
+
return trashedOpt;
|
74
|
+
}, [opts]);
|
75
|
+
var finalQuery = useMemo(function () {
|
76
|
+
return _objectSpread(_objectSpread({}, query), {}, {
|
77
|
+
trashed: trashed
|
78
|
+
});
|
79
|
+
}, [query, trashed]);
|
70
80
|
var getItems = useCallback(function () {
|
71
81
|
var requestedPage = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : null;
|
72
|
-
return api.get(query, requestedPage, count);
|
73
|
-
}, [api, query, count]);
|
74
|
-
var
|
82
|
+
return trashed ? api.getTrashed(query, requestedPage, count) : api.get(query, requestedPage, count);
|
83
|
+
}, [api, query, count, trashed]);
|
84
|
+
var _useItemsStore = useItemsStore('medias', _objectSpread({
|
75
85
|
getPage: page !== null ? getItems : null,
|
76
86
|
getItems: page === null ? getItems : null,
|
77
|
-
page: page
|
87
|
+
page: page,
|
88
|
+
count: count,
|
89
|
+
query: finalQuery
|
78
90
|
}, opts)),
|
79
|
-
items =
|
80
|
-
|
81
|
-
request = _objectWithoutProperties(_useItems, _excluded$7);
|
91
|
+
items = _useItemsStore.items,
|
92
|
+
props = _objectWithoutProperties(_useItemsStore, _excluded$7);
|
82
93
|
return _objectSpread({
|
83
|
-
|
84
|
-
|
85
|
-
}, request);
|
94
|
+
items: items
|
95
|
+
}, props);
|
86
96
|
};
|
87
97
|
var useMedias$1 = useMedias;
|
88
98
|
|
89
|
-
var useMediasRecent = function useMediasRecent(opts) {
|
90
|
-
var key = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'media-gallery-recent-searches';
|
91
|
-
var addSearchValue = useCallback(function (value) {
|
92
|
-
if (typeof window !== 'undefined' && typeof window.localStorage !== 'undefined' && value) {
|
93
|
-
var recent = window.localStorage.getItem(key) || null;
|
94
|
-
var current = recent !== null ? JSON.parse(recent || '[]') : [];
|
95
|
-
var encoded = JSON.stringify([value].concat(_toConsumableArray(current)));
|
96
|
-
window.localStorage.setItem(key, encoded);
|
97
|
-
return true;
|
98
|
-
}
|
99
|
-
return false;
|
100
|
-
}, [key]);
|
101
|
-
var getSearchValues = useCallback(function () {
|
102
|
-
var count = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 5;
|
103
|
-
if (typeof window !== 'undefined' && typeof window.localStorage !== 'undefined') {
|
104
|
-
var recent = window.localStorage.getItem(key) || null;
|
105
|
-
var current = recent !== null ? JSON.parse(recent || '[]') : [];
|
106
|
-
return current.slice(0, count);
|
107
|
-
}
|
108
|
-
return [];
|
109
|
-
}, [key]);
|
110
|
-
return {
|
111
|
-
addSearchValue: addSearchValue,
|
112
|
-
getSearchValues: getSearchValues
|
113
|
-
};
|
114
|
-
};
|
115
|
-
var useMediasRecent$1 = useMediasRecent;
|
116
|
-
|
117
99
|
var _excluded$6 = ["data"];
|
118
100
|
var useMedia = function useMedia(id, opts) {
|
119
101
|
var api = useMediasApi();
|
@@ -132,19 +114,19 @@ var useMedia$1 = useMedia;
|
|
132
114
|
var useMediaCreate = function useMediaCreate() {
|
133
115
|
var _useState = useState(false),
|
134
116
|
_useState2 = _slicedToArray(_useState, 2),
|
135
|
-
|
136
|
-
|
117
|
+
creating = _useState2[0],
|
118
|
+
setCreating = _useState2[1];
|
137
119
|
var api = useMediasApi();
|
138
120
|
var create = useCallback(function (data) {
|
139
|
-
|
121
|
+
setCreating(true);
|
140
122
|
return api.create(data).then(function (response) {
|
141
|
-
|
123
|
+
setCreating(false);
|
142
124
|
return response;
|
143
125
|
});
|
144
|
-
}, [api,
|
126
|
+
}, [api, setCreating]);
|
145
127
|
return {
|
146
128
|
create: create,
|
147
|
-
|
129
|
+
creating: creating
|
148
130
|
};
|
149
131
|
};
|
150
132
|
var useMediaCreate$1 = useMediaCreate;
|
@@ -152,41 +134,62 @@ var useMediaCreate$1 = useMediaCreate;
|
|
152
134
|
var useMediaUpdate = function useMediaUpdate() {
|
153
135
|
var _useState = useState(false),
|
154
136
|
_useState2 = _slicedToArray(_useState, 2),
|
155
|
-
|
156
|
-
|
137
|
+
updating = _useState2[0],
|
138
|
+
setUpdating = _useState2[1];
|
157
139
|
var api = useMediasApi();
|
158
140
|
var update = useCallback(function (id, data) {
|
159
|
-
|
141
|
+
setUpdating(true);
|
160
142
|
return api.update(id, data).then(function (response) {
|
161
|
-
|
143
|
+
setUpdating(false);
|
162
144
|
return response;
|
163
145
|
});
|
164
|
-
}, [api,
|
146
|
+
}, [api, setUpdating]);
|
165
147
|
return {
|
166
148
|
update: update,
|
167
|
-
|
149
|
+
updating: updating
|
168
150
|
};
|
169
151
|
};
|
170
152
|
var useMediaUpdate$1 = useMediaUpdate;
|
171
153
|
|
172
|
-
var
|
154
|
+
var useMediaDelete = function useMediaDelete() {
|
173
155
|
var _useState = useState(false),
|
174
156
|
_useState2 = _slicedToArray(_useState, 2),
|
175
|
-
|
176
|
-
|
157
|
+
deleting = _useState2[0],
|
158
|
+
setDeleting = _useState2[1];
|
177
159
|
var api = useMediasApi();
|
178
|
-
var
|
179
|
-
|
160
|
+
var mediaDelete = useCallback(function (id, data) {
|
161
|
+
setDeleting(true);
|
180
162
|
return api["delete"](id, data).then(function (response) {
|
181
|
-
|
163
|
+
setDeleting(false);
|
182
164
|
return response;
|
183
165
|
});
|
184
|
-
}, [api,
|
166
|
+
}, [api, setDeleting]);
|
185
167
|
return {
|
186
|
-
|
187
|
-
|
168
|
+
mediaDelete: mediaDelete,
|
169
|
+
deleting: deleting
|
188
170
|
};
|
189
171
|
};
|
172
|
+
var useMediaDelete$1 = useMediaDelete;
|
173
|
+
|
174
|
+
var useMediaTrash = function useMediaTrash() {
|
175
|
+
var _useState = useState(false),
|
176
|
+
_useState2 = _slicedToArray(_useState, 2),
|
177
|
+
trashing = _useState2[0],
|
178
|
+
setTrashing = _useState2[1];
|
179
|
+
var api = useMediasApi();
|
180
|
+
var mediaTrash = useCallback(function (id, data) {
|
181
|
+
setTrashing(true);
|
182
|
+
return api.trash(id, data).then(function (response) {
|
183
|
+
setTrashing(false);
|
184
|
+
return response;
|
185
|
+
});
|
186
|
+
}, [api, setTrashing]);
|
187
|
+
return {
|
188
|
+
mediaTrash: mediaTrash,
|
189
|
+
trashing: trashing
|
190
|
+
};
|
191
|
+
};
|
192
|
+
var useMediaTrash$1 = useMediaTrash;
|
190
193
|
|
191
194
|
var styles = {"mediaFrame":"panneau-medias-mediaFrame","playButton":"panneau-medias-playButton"};
|
192
195
|
|
@@ -381,6 +384,7 @@ var propTypes$7 = {
|
|
381
384
|
onSave: PropTypes.func,
|
382
385
|
onDelete: PropTypes.func,
|
383
386
|
onClose: PropTypes.func,
|
387
|
+
withTrash: PropTypes.bool,
|
384
388
|
className: PropTypes.string,
|
385
389
|
children: PropTypes.node
|
386
390
|
};
|
@@ -391,6 +395,7 @@ var defaultProps$7 = {
|
|
391
395
|
onSave: null,
|
392
396
|
onDelete: null,
|
393
397
|
onClose: null,
|
398
|
+
withTrash: false,
|
394
399
|
className: null,
|
395
400
|
children: null
|
396
401
|
};
|
@@ -401,25 +406,31 @@ function MediaForm(_ref) {
|
|
401
406
|
onSave = _ref.onSave,
|
402
407
|
onDelete = _ref.onDelete,
|
403
408
|
onClose = _ref.onClose,
|
409
|
+
withTrash = _ref.withTrash,
|
404
410
|
className = _ref.className,
|
405
411
|
children = _ref.children;
|
406
412
|
var FieldsComponent = useFieldComponent('fields');
|
407
413
|
var _useMediaUpdate = useMediaUpdate$1(),
|
408
414
|
update = _useMediaUpdate.update,
|
409
|
-
updating = _useMediaUpdate.
|
410
|
-
var
|
411
|
-
|
412
|
-
|
415
|
+
updating = _useMediaUpdate.updating;
|
416
|
+
var _useMediaTrash = useMediaTrash$1(),
|
417
|
+
mediaTrash = _useMediaTrash.mediaTrash,
|
418
|
+
trashing = _useMediaTrash.trashing;
|
419
|
+
var _useMediaDelete = useMediaDelete$1(),
|
420
|
+
mediaDelete = _useMediaDelete.mediaDelete,
|
421
|
+
deleting = _useMediaDelete.deleting;
|
413
422
|
var _useState = useState(false),
|
414
423
|
_useState2 = _slicedToArray(_useState, 2),
|
415
424
|
changed = _useState2[0],
|
416
425
|
setChanged = _useState2[1];
|
417
|
-
var disabled = updating ||
|
426
|
+
var disabled = updating || deleting || trashing || initialValue === null;
|
418
427
|
var _ref2 = initialValue || {},
|
419
428
|
_ref2$name = _ref2.name,
|
420
429
|
name = _ref2$name === void 0 ? null : _ref2$name,
|
421
430
|
_ref2$type = _ref2.type,
|
422
|
-
type = _ref2$type === void 0 ? null : _ref2$type
|
431
|
+
type = _ref2$type === void 0 ? null : _ref2$type,
|
432
|
+
_ref2$deletedAt = _ref2.deletedAt,
|
433
|
+
deletedAt = _ref2$deletedAt === void 0 ? null : _ref2$deletedAt;
|
423
434
|
var onChangeMedia = useCallback(function (newValue) {
|
424
435
|
if (onChange !== null) {
|
425
436
|
onChange(newValue);
|
@@ -433,20 +444,32 @@ function MediaForm(_ref) {
|
|
433
444
|
setChanged(false);
|
434
445
|
}, [onChange, setChanged]);
|
435
446
|
var onDeleteMedia = useCallback(function () {
|
436
|
-
// Destroy
|
437
447
|
var _ref3 = initialValue || {},
|
438
448
|
_ref3$id = _ref3.id,
|
439
449
|
id = _ref3$id === void 0 ? null : _ref3$id;
|
440
|
-
|
441
|
-
|
442
|
-
onDelete
|
443
|
-
|
444
|
-
|
445
|
-
|
446
|
-
onClose
|
447
|
-
|
448
|
-
|
449
|
-
|
450
|
+
if (withTrash && deletedAt !== null) {
|
451
|
+
mediaTrash(id, initialValue).then(function () {
|
452
|
+
if (onDelete !== null) {
|
453
|
+
onDelete();
|
454
|
+
}
|
455
|
+
setChanged(false);
|
456
|
+
if (onClose !== null) {
|
457
|
+
onClose();
|
458
|
+
}
|
459
|
+
});
|
460
|
+
} else {
|
461
|
+
// Destroy
|
462
|
+
mediaDelete(id, initialValue).then(function () {
|
463
|
+
if (onDelete !== null) {
|
464
|
+
onDelete();
|
465
|
+
}
|
466
|
+
setChanged(false);
|
467
|
+
if (onClose !== null) {
|
468
|
+
onClose();
|
469
|
+
}
|
470
|
+
});
|
471
|
+
}
|
472
|
+
}, [initialValue, mediaDelete, mediaTrash, deletedAt, setChanged, withTrash]);
|
450
473
|
var postForm = useCallback(function (action, data) {
|
451
474
|
return initialValue !== null ? update(initialValue.id, data) : new Promise();
|
452
475
|
}, [initialValue, update]);
|
@@ -477,9 +500,17 @@ function MediaForm(_ref) {
|
|
477
500
|
}, type)), /*#__PURE__*/React.createElement("div", null, /*#__PURE__*/React.createElement(Button, {
|
478
501
|
className: "me-2 mb-1 mt-1",
|
479
502
|
theme: "danger",
|
503
|
+
icon: withTrash && deletedAt !== null ? 'trash-fill' : 'trash',
|
504
|
+
iconPosition: "right",
|
480
505
|
onClick: onDeleteMedia,
|
481
|
-
disabled:
|
482
|
-
}, /*#__PURE__*/React.createElement(FormattedMessage, {
|
506
|
+
disabled: deleting || trashing
|
507
|
+
}, withTrash && deletedAt === null ? /*#__PURE__*/React.createElement(FormattedMessage, {
|
508
|
+
id: "PSlT7H",
|
509
|
+
defaultMessage: [{
|
510
|
+
"type": 0,
|
511
|
+
"value": "Trash"
|
512
|
+
}]
|
513
|
+
}) : /*#__PURE__*/React.createElement(FormattedMessage, {
|
483
514
|
id: "Bhu3B2",
|
484
515
|
defaultMessage: [{
|
485
516
|
"type": 0,
|
@@ -488,8 +519,10 @@ function MediaForm(_ref) {
|
|
488
519
|
})), onSave !== null ? /*#__PURE__*/React.createElement(Button, {
|
489
520
|
className: "mb-1 mt-1",
|
490
521
|
theme: "primary",
|
522
|
+
icon: changed ? 'check-all' : 'check',
|
523
|
+
iconPosition: "right",
|
491
524
|
onClick: onSubmit,
|
492
|
-
disabled: !changed || updating ||
|
525
|
+
disabled: !changed || updating || deleting
|
493
526
|
}, /*#__PURE__*/React.createElement(FormattedMessage, {
|
494
527
|
id: "R1HYj0",
|
495
528
|
defaultMessage: [{
|
@@ -680,7 +713,7 @@ var defaultColumns = [{
|
|
680
713
|
"value": "Actions"
|
681
714
|
}]
|
682
715
|
}),
|
683
|
-
actions: ['edit']
|
716
|
+
actions: ['edit', 'delete']
|
684
717
|
// component: ItemActions,
|
685
718
|
// label: 'Edit',
|
686
719
|
// url: '/edit/1',
|
@@ -769,7 +802,7 @@ var defaultFilters = [{
|
|
769
802
|
];
|
770
803
|
|
771
804
|
var _excluded$5 = ["page", "count"],
|
772
|
-
_excluded2 = ["types"];
|
805
|
+
_excluded2 = ["types", "trashed"];
|
773
806
|
var propTypes$5 = {
|
774
807
|
items: PropTypes$1.medias,
|
775
808
|
extraItems: PropTypes$1.medias,
|
@@ -788,8 +821,11 @@ var propTypes$5 = {
|
|
788
821
|
onLayoutChange: PropTypes.func,
|
789
822
|
selectedCount: PropTypes.number,
|
790
823
|
onClearSelected: PropTypes.func,
|
824
|
+
withTrash: PropTypes.bool,
|
825
|
+
withStickySelection: PropTypes.bool,
|
791
826
|
className: PropTypes.string,
|
792
|
-
buttonsClassName: PropTypes.string
|
827
|
+
buttonsClassName: PropTypes.string,
|
828
|
+
formChildren: PropTypes.node
|
793
829
|
};
|
794
830
|
var defaultProps$5 = {
|
795
831
|
items: null,
|
@@ -819,8 +855,11 @@ var defaultProps$5 = {
|
|
819
855
|
onLayoutChange: null,
|
820
856
|
selectedCount: null,
|
821
857
|
onClearSelected: null,
|
858
|
+
withTrash: false,
|
859
|
+
withStickySelection: false,
|
822
860
|
className: null,
|
823
|
-
buttonsClassName: null
|
861
|
+
buttonsClassName: null,
|
862
|
+
formChildren: null
|
824
863
|
};
|
825
864
|
function MediasBrowser(_ref) {
|
826
865
|
var initialItems = _ref.items,
|
@@ -840,8 +879,11 @@ function MediasBrowser(_ref) {
|
|
840
879
|
onLayoutChange = _ref.onLayoutChange,
|
841
880
|
selectedCount = _ref.selectedCount,
|
842
881
|
onClearSelected = _ref.onClearSelected,
|
882
|
+
withTrash = _ref.withTrash,
|
883
|
+
withStickySelection = _ref.withStickySelection,
|
843
884
|
className = _ref.className,
|
844
|
-
buttonsClassName = _ref.buttonsClassName
|
885
|
+
buttonsClassName = _ref.buttonsClassName,
|
886
|
+
formChildren = _ref.formChildren;
|
845
887
|
var _useState = useState(initialItems || null),
|
846
888
|
_useState2 = _slicedToArray(_useState, 1),
|
847
889
|
baseItems = _useState2[0];
|
@@ -880,14 +922,35 @@ function MediasBrowser(_ref) {
|
|
880
922
|
// eslint-disable-next-line no-unused-vars
|
881
923
|
var _ref3 = query || {};
|
882
924
|
_ref3.types;
|
925
|
+
_ref3.trashed;
|
883
926
|
var queryWithoutTypes = _objectWithoutProperties(_ref3, _excluded2);
|
927
|
+
var _useMediaTrash = useMediaTrash$1(),
|
928
|
+
mediaTrash = _useMediaTrash.mediaTrash,
|
929
|
+
trashing = _useMediaTrash.trashing;
|
930
|
+
var _useMediaDelete = useMediaDelete$1(),
|
931
|
+
mediaDelete = _useMediaDelete.mediaDelete,
|
932
|
+
deleting = _useMediaDelete.deleting;
|
933
|
+
var _useState3 = useState(false),
|
934
|
+
_useState4 = _slicedToArray(_useState3, 2),
|
935
|
+
showTrashed = _useState4[0],
|
936
|
+
setShowTrashed = _useState4[1];
|
937
|
+
var onClickTrash = useCallback(function () {
|
938
|
+
setShowTrashed(!showTrashed);
|
939
|
+
}, [showTrashed, setShowTrashed]);
|
884
940
|
var _useMedias = useMedias$1(query, page, count, {
|
885
|
-
items: baseItems
|
941
|
+
items: baseItems,
|
942
|
+
trashed: showTrashed
|
886
943
|
}),
|
887
|
-
items = _useMedias.
|
888
|
-
|
889
|
-
|
890
|
-
|
944
|
+
items = _useMedias.items,
|
945
|
+
allItems = _useMedias.allItems,
|
946
|
+
_useMedias$loading = _useMedias.loading,
|
947
|
+
loading = _useMedias$loading === void 0 ? false : _useMedias$loading,
|
948
|
+
_useMedias$updateItem = _useMedias.updateItem,
|
949
|
+
updateItem = _useMedias$updateItem === void 0 ? null : _useMedias$updateItem,
|
950
|
+
_useMedias$pagination = _useMedias.pagination,
|
951
|
+
_useMedias$pagination2 = _useMedias$pagination === void 0 ? {} : _useMedias$pagination,
|
952
|
+
lastPage = _useMedias$pagination2.lastPage,
|
953
|
+
total = _useMedias$pagination2.total;
|
891
954
|
|
892
955
|
// For picker
|
893
956
|
useEffect(function () {
|
@@ -895,10 +958,10 @@ function MediasBrowser(_ref) {
|
|
895
958
|
onItemsChange(items);
|
896
959
|
}
|
897
960
|
}, [items, onItemsChange]);
|
898
|
-
var
|
899
|
-
|
900
|
-
layout =
|
901
|
-
setLayout =
|
961
|
+
var _useState5 = useState(initialLayout || 'table'),
|
962
|
+
_useState6 = _slicedToArray(_useState5, 2),
|
963
|
+
layout = _useState6[0],
|
964
|
+
setLayout = _useState6[1];
|
902
965
|
var hasLayouts = useMemo(function () {
|
903
966
|
return layouts !== null && layouts.length > 1;
|
904
967
|
}, [layouts]);
|
@@ -919,10 +982,10 @@ function MediasBrowser(_ref) {
|
|
919
982
|
var onCloseMedia = useCallback(function () {
|
920
983
|
setCurrentMedia(null);
|
921
984
|
}, [setCurrentMedia]);
|
922
|
-
var onSaveMedia = useCallback(function () {
|
985
|
+
var onSaveMedia = useCallback(function (item) {
|
923
986
|
setCurrentMedia(null);
|
924
|
-
|
925
|
-
}, [setCurrentMedia,
|
987
|
+
updateItem(item);
|
988
|
+
}, [setCurrentMedia, updateItem]);
|
926
989
|
var pagination = /*#__PURE__*/React.createElement(Pagination, {
|
927
990
|
page: page,
|
928
991
|
lastPage: lastPage,
|
@@ -938,8 +1001,17 @@ function MediasBrowser(_ref) {
|
|
938
1001
|
alwaysShowButtons: true
|
939
1002
|
});
|
940
1003
|
var finalFilters = useMemo(function () {
|
941
|
-
|
942
|
-
|
1004
|
+
var partialFilters = withTrash ? (filters || []).concat([{
|
1005
|
+
name: 'trashed',
|
1006
|
+
component: 'button',
|
1007
|
+
theme: showTrashed ? 'danger' : 'secondary',
|
1008
|
+
outline: !showTrashed,
|
1009
|
+
activeTheme: 'danger',
|
1010
|
+
icon: showTrashed ? 'trash-fill' : 'trash',
|
1011
|
+
onClick: onClickTrash
|
1012
|
+
}]) : filters;
|
1013
|
+
if (types !== null && partialFilters !== null) {
|
1014
|
+
return (partialFilters || []).map(function (filter) {
|
943
1015
|
var _ref4 = filter || {},
|
944
1016
|
_ref4$id = _ref4.id,
|
945
1017
|
id = _ref4$id === void 0 ? null : _ref4$id;
|
@@ -948,16 +1020,47 @@ function MediasBrowser(_ref) {
|
|
948
1020
|
}) : filter;
|
949
1021
|
});
|
950
1022
|
}
|
951
|
-
return
|
952
|
-
}, [filters, types]);
|
1023
|
+
return partialFilters;
|
1024
|
+
}, [filters, types, withTrash, showTrashed, onClickTrash]);
|
1025
|
+
var finalColumns = useMemo(function () {
|
1026
|
+
return withTrash && showTrashed ? (columns || []).map(function (column) {
|
1027
|
+
var _ref5 = column || {},
|
1028
|
+
_ref5$id = _ref5.id,
|
1029
|
+
columnId = _ref5$id === void 0 ? null : _ref5$id;
|
1030
|
+
if (columnId === 'created_at') {
|
1031
|
+
return _objectSpread(_objectSpread({}, column), {}, {
|
1032
|
+
path: 'deleted_at',
|
1033
|
+
label: /*#__PURE__*/React.createElement(FormattedMessage, {
|
1034
|
+
id: "uds4wJ",
|
1035
|
+
defaultMessage: [{
|
1036
|
+
"type": 0,
|
1037
|
+
"value": "Deleted at"
|
1038
|
+
}]
|
1039
|
+
})
|
1040
|
+
});
|
1041
|
+
}
|
1042
|
+
return column;
|
1043
|
+
}) : columns;
|
1044
|
+
}, [columns, withTrash, showTrashed]);
|
953
1045
|
var finalItems = useMemo(function () {
|
954
|
-
if (
|
955
|
-
return uniqBy([].concat(_toConsumableArray(extraItems
|
1046
|
+
if (withStickySelection && extraItems !== null) {
|
1047
|
+
return uniqBy([].concat(_toConsumableArray((extraItems || []).map(function (item) {
|
1048
|
+
var _item$id = item.id,
|
1049
|
+
itemId = _item$id === void 0 ? null : _item$id;
|
1050
|
+
return (allItems || []).find(function () {
|
1051
|
+
var _ref6 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},
|
1052
|
+
_ref6$id = _ref6.id,
|
1053
|
+
otherId = _ref6$id === void 0 ? null : _ref6$id;
|
1054
|
+
return otherId === itemId;
|
1055
|
+
}) || item || null;
|
1056
|
+
}).filter(function (it) {
|
1057
|
+
return it !== null;
|
1058
|
+
})), _toConsumableArray(items || [])), function (it) {
|
956
1059
|
return it === null || it === void 0 ? void 0 : it.id;
|
957
1060
|
});
|
958
1061
|
}
|
959
1062
|
return items;
|
960
|
-
}, [items, page, extraItems]);
|
1063
|
+
}, [items, page, allItems, withStickySelection, extraItems]);
|
961
1064
|
return /*#__PURE__*/React.createElement("div", {
|
962
1065
|
className: classNames([styles.container, className])
|
963
1066
|
}, currentMedia !== null ? /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement("div", {
|
@@ -977,8 +1080,9 @@ function MediasBrowser(_ref) {
|
|
977
1080
|
fields: fields,
|
978
1081
|
onChange: setCurrentMedia,
|
979
1082
|
onSave: onSaveMedia,
|
980
|
-
onClose: onCloseMedia
|
981
|
-
|
1083
|
+
onClose: onCloseMedia,
|
1084
|
+
withTrash: withTrash
|
1085
|
+
}, formChildren)) : /*#__PURE__*/React.createElement(React.Fragment, null, filters !== null ? /*#__PURE__*/React.createElement(Filters, {
|
982
1086
|
value: query,
|
983
1087
|
clearValue: types !== null ? queryWithoutTypes : null,
|
984
1088
|
filters: finalFilters,
|
@@ -990,10 +1094,10 @@ function MediasBrowser(_ref) {
|
|
990
1094
|
className: buttonsClassName
|
991
1095
|
}) : null) : null, filters === null && buttons !== null ? /*#__PURE__*/React.createElement("div", {
|
992
1096
|
className: "mt-2 mb-2"
|
993
|
-
},
|
1097
|
+
}, /*#__PURE__*/React.createElement(Buttons, {
|
994
1098
|
items: buttons,
|
995
1099
|
className: buttonsClassName
|
996
|
-
})
|
1100
|
+
})) : null, /*#__PURE__*/React.createElement("div", {
|
997
1101
|
className: classNames(['d-flex', 'mt-1', 'mb-3', {
|
998
1102
|
'justify-content-between': hasLayouts,
|
999
1103
|
'justify-content-end': !hasLayouts
|
@@ -1031,7 +1135,7 @@ function MediasBrowser(_ref) {
|
|
1031
1135
|
loading: loading
|
1032
1136
|
})) : null, layout === 'table' ? /*#__PURE__*/React.createElement(Table, Object.assign({
|
1033
1137
|
theme: theme,
|
1034
|
-
columns:
|
1138
|
+
columns: finalColumns,
|
1035
1139
|
displayPlaceholder: /*#__PURE__*/React.createElement("span", {
|
1036
1140
|
className: "text-secondary text-opacity-75"
|
1037
1141
|
}, "\u2014"),
|
@@ -1042,6 +1146,19 @@ function MediasBrowser(_ref) {
|
|
1042
1146
|
items: finalItems,
|
1043
1147
|
loading: loading,
|
1044
1148
|
actionsProps: {
|
1149
|
+
getDeletePropsFromItem: function getDeletePropsFromItem() {
|
1150
|
+
var _ref7 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},
|
1151
|
+
_ref7$id = _ref7.id,
|
1152
|
+
id = _ref7$id === void 0 ? null : _ref7$id;
|
1153
|
+
return {
|
1154
|
+
href: null,
|
1155
|
+
onClick: function onClick() {
|
1156
|
+
return showTrashed ? mediaDelete(id) : mediaTrash(id);
|
1157
|
+
},
|
1158
|
+
disabled: trashing || deleting,
|
1159
|
+
icon: showTrashed ? 'trash-fill' : 'trash'
|
1160
|
+
};
|
1161
|
+
},
|
1045
1162
|
getEditPropsFromItem: function getEditPropsFromItem(it) {
|
1046
1163
|
return {
|
1047
1164
|
href: null,
|
@@ -1096,18 +1213,20 @@ function MediasPicker(_ref) {
|
|
1096
1213
|
tableProps = _ref.tableProps,
|
1097
1214
|
className = _ref.className,
|
1098
1215
|
props = _objectWithoutProperties(_ref, _excluded$4);
|
1099
|
-
|
1216
|
+
var _useMediasForm = useMediasForm(),
|
1217
|
+
currentMedia = _useMediasForm.media;
|
1218
|
+
|
1219
|
+
// For selection
|
1100
1220
|
var _useState = useState(initialItems),
|
1101
1221
|
_useState2 = _slicedToArray(_useState, 2),
|
1102
|
-
|
1222
|
+
pageItems = _useState2[0],
|
1103
1223
|
setItems = _useState2[1];
|
1104
|
-
var
|
1105
|
-
|
1224
|
+
var disabled = pageItems === null || pageItems.length < 1;
|
1225
|
+
var onItemsChange = useCallback(function (newPageItems) {
|
1226
|
+
setItems(newPageItems);
|
1106
1227
|
}, [setItems]);
|
1107
|
-
var _useMediasForm = useMediasForm(),
|
1108
|
-
currentMedia = _useMediasForm.media;
|
1109
1228
|
var _useItemSelection = useItemSelection({
|
1110
|
-
|
1229
|
+
items: pageItems,
|
1111
1230
|
selectedItems: initialSelectedItems,
|
1112
1231
|
onSelectionChange: onChange,
|
1113
1232
|
multipleSelection: multiple
|
@@ -1118,7 +1237,6 @@ function MediasPicker(_ref) {
|
|
1118
1237
|
pageSelected = _useItemSelection.pageSelected,
|
1119
1238
|
selectedCount = _useItemSelection.selectedCount,
|
1120
1239
|
selectedItems = _useItemSelection.selectedItems;
|
1121
|
-
var disabled = currentItems === null || currentItems.length < 1;
|
1122
1240
|
var onConfirmSelection = useCallback(function () {
|
1123
1241
|
if (onConfirm !== null) {
|
1124
1242
|
onConfirm(selectedItems);
|
@@ -1134,13 +1252,14 @@ function MediasPicker(_ref) {
|
|
1134
1252
|
onSelectPage: onSelectPage,
|
1135
1253
|
selectedItems: selectedItems,
|
1136
1254
|
pageSelected: pageSelected
|
1137
|
-
}, tableProps)
|
1138
|
-
|
1255
|
+
}, tableProps),
|
1256
|
+
items: initialItems // TODO: fix useItems if actually using this
|
1139
1257
|
,
|
1140
1258
|
onItemsChange: onItemsChange,
|
1141
1259
|
selectedCount: selectedCount,
|
1142
1260
|
onClearSelected: onClearSelected,
|
1143
|
-
types: types
|
1261
|
+
types: types,
|
1262
|
+
extraItems: !multiple && initialSelectedItems !== null ? [initialSelectedItems] : initialSelectedItems
|
1144
1263
|
}, props)), multiple && !withoutButtons && currentMedia === null ? /*#__PURE__*/React.createElement("div", {
|
1145
1264
|
className: "d-flex w-100 align-items-end justify-content-end mt-3"
|
1146
1265
|
}, /*#__PURE__*/React.createElement("div", {
|
@@ -1386,4 +1505,4 @@ function MediasResourcePicker(_ref) {
|
|
1386
1505
|
MediasResourcePicker.propTypes = propTypes;
|
1387
1506
|
MediasResourcePicker.defaultProps = defaultProps;
|
1388
1507
|
|
1389
|
-
export { MediaForm, MediasApiProvider, MediasBrowser, MediasBrowserContainer, MediasPicker, MediasPickerContainer, MediasResourceBrowser, MediasResourcePicker, apiPropTypes, defaultColumns as columns, defaultFields as fields, defaultFilters as filters, useMedia$1 as useMedia, useMediaCreate$1 as useMediaCreate,
|
1508
|
+
export { MediaForm, MediasApiProvider, MediasBrowser, MediasBrowserContainer, MediasPicker, MediasPickerContainer, MediasResourceBrowser, MediasResourcePicker, apiPropTypes, defaultColumns as columns, defaultFields as fields, defaultFilters as filters, useMedia$1 as useMedia, useMediaCreate$1 as useMediaCreate, useMediaDelete$1 as useMediaDelete, useMediaTrash$1 as useMediaTrash, useMediaUpdate$1 as useMediaUpdate, useMedias$1 as useMedias, useMediasApi };
|
package/lib/index.js
CHANGED
@@ -62,60 +62,42 @@ function MediasApiProvider(_ref) {
|
|
62
62
|
MediasApiProvider.propTypes = propTypes$9;
|
63
63
|
MediasApiProvider.defaultProps = defaultProps$9;
|
64
64
|
|
65
|
-
var _excluded$7 = ["items"
|
65
|
+
var _excluded$7 = ["items"];
|
66
66
|
var useMedias = function useMedias() {
|
67
67
|
var query = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : null;
|
68
68
|
var page = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;
|
69
69
|
var count = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : null;
|
70
70
|
var opts = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {};
|
71
71
|
var api = useMediasApi();
|
72
|
+
var trashed = React.useMemo(function () {
|
73
|
+
var _ref = opts || {},
|
74
|
+
trashedOpt = _ref.trashed;
|
75
|
+
return trashedOpt;
|
76
|
+
}, [opts]);
|
77
|
+
var finalQuery = React.useMemo(function () {
|
78
|
+
return _objectSpread(_objectSpread({}, query), {}, {
|
79
|
+
trashed: trashed
|
80
|
+
});
|
81
|
+
}, [query, trashed]);
|
72
82
|
var getItems = React.useCallback(function () {
|
73
83
|
var requestedPage = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : null;
|
74
|
-
return api.get(query, requestedPage, count);
|
75
|
-
}, [api, query, count]);
|
76
|
-
var
|
84
|
+
return trashed ? api.getTrashed(query, requestedPage, count) : api.get(query, requestedPage, count);
|
85
|
+
}, [api, query, count, trashed]);
|
86
|
+
var _useItemsStore = data.useItemsStore('medias', _objectSpread({
|
77
87
|
getPage: page !== null ? getItems : null,
|
78
88
|
getItems: page === null ? getItems : null,
|
79
|
-
page: page
|
89
|
+
page: page,
|
90
|
+
count: count,
|
91
|
+
query: finalQuery
|
80
92
|
}, opts)),
|
81
|
-
items =
|
82
|
-
|
83
|
-
request = _objectWithoutProperties(_useItems, _excluded$7);
|
93
|
+
items = _useItemsStore.items,
|
94
|
+
props = _objectWithoutProperties(_useItemsStore, _excluded$7);
|
84
95
|
return _objectSpread({
|
85
|
-
|
86
|
-
|
87
|
-
}, request);
|
96
|
+
items: items
|
97
|
+
}, props);
|
88
98
|
};
|
89
99
|
var useMedias$1 = useMedias;
|
90
100
|
|
91
|
-
var useMediasRecent = function useMediasRecent(opts) {
|
92
|
-
var key = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'media-gallery-recent-searches';
|
93
|
-
var addSearchValue = React.useCallback(function (value) {
|
94
|
-
if (typeof window !== 'undefined' && typeof window.localStorage !== 'undefined' && value) {
|
95
|
-
var recent = window.localStorage.getItem(key) || null;
|
96
|
-
var current = recent !== null ? JSON.parse(recent || '[]') : [];
|
97
|
-
var encoded = JSON.stringify([value].concat(_toConsumableArray(current)));
|
98
|
-
window.localStorage.setItem(key, encoded);
|
99
|
-
return true;
|
100
|
-
}
|
101
|
-
return false;
|
102
|
-
}, [key]);
|
103
|
-
var getSearchValues = React.useCallback(function () {
|
104
|
-
var count = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 5;
|
105
|
-
if (typeof window !== 'undefined' && typeof window.localStorage !== 'undefined') {
|
106
|
-
var recent = window.localStorage.getItem(key) || null;
|
107
|
-
var current = recent !== null ? JSON.parse(recent || '[]') : [];
|
108
|
-
return current.slice(0, count);
|
109
|
-
}
|
110
|
-
return [];
|
111
|
-
}, [key]);
|
112
|
-
return {
|
113
|
-
addSearchValue: addSearchValue,
|
114
|
-
getSearchValues: getSearchValues
|
115
|
-
};
|
116
|
-
};
|
117
|
-
var useMediasRecent$1 = useMediasRecent;
|
118
|
-
|
119
101
|
var _excluded$6 = ["data"];
|
120
102
|
var useMedia = function useMedia(id, opts) {
|
121
103
|
var api = useMediasApi();
|
@@ -134,19 +116,19 @@ var useMedia$1 = useMedia;
|
|
134
116
|
var useMediaCreate = function useMediaCreate() {
|
135
117
|
var _useState = React.useState(false),
|
136
118
|
_useState2 = _slicedToArray(_useState, 2),
|
137
|
-
|
138
|
-
|
119
|
+
creating = _useState2[0],
|
120
|
+
setCreating = _useState2[1];
|
139
121
|
var api = useMediasApi();
|
140
122
|
var create = React.useCallback(function (data) {
|
141
|
-
|
123
|
+
setCreating(true);
|
142
124
|
return api.create(data).then(function (response) {
|
143
|
-
|
125
|
+
setCreating(false);
|
144
126
|
return response;
|
145
127
|
});
|
146
|
-
}, [api,
|
128
|
+
}, [api, setCreating]);
|
147
129
|
return {
|
148
130
|
create: create,
|
149
|
-
|
131
|
+
creating: creating
|
150
132
|
};
|
151
133
|
};
|
152
134
|
var useMediaCreate$1 = useMediaCreate;
|
@@ -154,41 +136,62 @@ var useMediaCreate$1 = useMediaCreate;
|
|
154
136
|
var useMediaUpdate = function useMediaUpdate() {
|
155
137
|
var _useState = React.useState(false),
|
156
138
|
_useState2 = _slicedToArray(_useState, 2),
|
157
|
-
|
158
|
-
|
139
|
+
updating = _useState2[0],
|
140
|
+
setUpdating = _useState2[1];
|
159
141
|
var api = useMediasApi();
|
160
142
|
var update = React.useCallback(function (id, data) {
|
161
|
-
|
143
|
+
setUpdating(true);
|
162
144
|
return api.update(id, data).then(function (response) {
|
163
|
-
|
145
|
+
setUpdating(false);
|
164
146
|
return response;
|
165
147
|
});
|
166
|
-
}, [api,
|
148
|
+
}, [api, setUpdating]);
|
167
149
|
return {
|
168
150
|
update: update,
|
169
|
-
|
151
|
+
updating: updating
|
170
152
|
};
|
171
153
|
};
|
172
154
|
var useMediaUpdate$1 = useMediaUpdate;
|
173
155
|
|
174
|
-
var
|
156
|
+
var useMediaDelete = function useMediaDelete() {
|
175
157
|
var _useState = React.useState(false),
|
176
158
|
_useState2 = _slicedToArray(_useState, 2),
|
177
|
-
|
178
|
-
|
159
|
+
deleting = _useState2[0],
|
160
|
+
setDeleting = _useState2[1];
|
179
161
|
var api = useMediasApi();
|
180
|
-
var
|
181
|
-
|
162
|
+
var mediaDelete = React.useCallback(function (id, data) {
|
163
|
+
setDeleting(true);
|
182
164
|
return api["delete"](id, data).then(function (response) {
|
183
|
-
|
165
|
+
setDeleting(false);
|
184
166
|
return response;
|
185
167
|
});
|
186
|
-
}, [api,
|
168
|
+
}, [api, setDeleting]);
|
187
169
|
return {
|
188
|
-
|
189
|
-
|
170
|
+
mediaDelete: mediaDelete,
|
171
|
+
deleting: deleting
|
190
172
|
};
|
191
173
|
};
|
174
|
+
var useMediaDelete$1 = useMediaDelete;
|
175
|
+
|
176
|
+
var useMediaTrash = function useMediaTrash() {
|
177
|
+
var _useState = React.useState(false),
|
178
|
+
_useState2 = _slicedToArray(_useState, 2),
|
179
|
+
trashing = _useState2[0],
|
180
|
+
setTrashing = _useState2[1];
|
181
|
+
var api = useMediasApi();
|
182
|
+
var mediaTrash = React.useCallback(function (id, data) {
|
183
|
+
setTrashing(true);
|
184
|
+
return api.trash(id, data).then(function (response) {
|
185
|
+
setTrashing(false);
|
186
|
+
return response;
|
187
|
+
});
|
188
|
+
}, [api, setTrashing]);
|
189
|
+
return {
|
190
|
+
mediaTrash: mediaTrash,
|
191
|
+
trashing: trashing
|
192
|
+
};
|
193
|
+
};
|
194
|
+
var useMediaTrash$1 = useMediaTrash;
|
192
195
|
|
193
196
|
var styles = {"mediaFrame":"panneau-medias-mediaFrame","playButton":"panneau-medias-playButton"};
|
194
197
|
|
@@ -383,6 +386,7 @@ var propTypes$7 = {
|
|
383
386
|
onSave: PropTypes.func,
|
384
387
|
onDelete: PropTypes.func,
|
385
388
|
onClose: PropTypes.func,
|
389
|
+
withTrash: PropTypes.bool,
|
386
390
|
className: PropTypes.string,
|
387
391
|
children: PropTypes.node
|
388
392
|
};
|
@@ -393,6 +397,7 @@ var defaultProps$7 = {
|
|
393
397
|
onSave: null,
|
394
398
|
onDelete: null,
|
395
399
|
onClose: null,
|
400
|
+
withTrash: false,
|
396
401
|
className: null,
|
397
402
|
children: null
|
398
403
|
};
|
@@ -403,25 +408,31 @@ function MediaForm(_ref) {
|
|
403
408
|
onSave = _ref.onSave,
|
404
409
|
onDelete = _ref.onDelete,
|
405
410
|
onClose = _ref.onClose,
|
411
|
+
withTrash = _ref.withTrash,
|
406
412
|
className = _ref.className,
|
407
413
|
children = _ref.children;
|
408
414
|
var FieldsComponent = contexts.useFieldComponent('fields');
|
409
415
|
var _useMediaUpdate = useMediaUpdate$1(),
|
410
416
|
update = _useMediaUpdate.update,
|
411
|
-
updating = _useMediaUpdate.
|
412
|
-
var
|
413
|
-
|
414
|
-
|
417
|
+
updating = _useMediaUpdate.updating;
|
418
|
+
var _useMediaTrash = useMediaTrash$1(),
|
419
|
+
mediaTrash = _useMediaTrash.mediaTrash,
|
420
|
+
trashing = _useMediaTrash.trashing;
|
421
|
+
var _useMediaDelete = useMediaDelete$1(),
|
422
|
+
mediaDelete = _useMediaDelete.mediaDelete,
|
423
|
+
deleting = _useMediaDelete.deleting;
|
415
424
|
var _useState = React.useState(false),
|
416
425
|
_useState2 = _slicedToArray(_useState, 2),
|
417
426
|
changed = _useState2[0],
|
418
427
|
setChanged = _useState2[1];
|
419
|
-
var disabled = updating ||
|
428
|
+
var disabled = updating || deleting || trashing || initialValue === null;
|
420
429
|
var _ref2 = initialValue || {},
|
421
430
|
_ref2$name = _ref2.name,
|
422
431
|
name = _ref2$name === void 0 ? null : _ref2$name,
|
423
432
|
_ref2$type = _ref2.type,
|
424
|
-
type = _ref2$type === void 0 ? null : _ref2$type
|
433
|
+
type = _ref2$type === void 0 ? null : _ref2$type,
|
434
|
+
_ref2$deletedAt = _ref2.deletedAt,
|
435
|
+
deletedAt = _ref2$deletedAt === void 0 ? null : _ref2$deletedAt;
|
425
436
|
var onChangeMedia = React.useCallback(function (newValue) {
|
426
437
|
if (onChange !== null) {
|
427
438
|
onChange(newValue);
|
@@ -435,20 +446,32 @@ function MediaForm(_ref) {
|
|
435
446
|
setChanged(false);
|
436
447
|
}, [onChange, setChanged]);
|
437
448
|
var onDeleteMedia = React.useCallback(function () {
|
438
|
-
// Destroy
|
439
449
|
var _ref3 = initialValue || {},
|
440
450
|
_ref3$id = _ref3.id,
|
441
451
|
id = _ref3$id === void 0 ? null : _ref3$id;
|
442
|
-
|
443
|
-
|
444
|
-
onDelete
|
445
|
-
|
446
|
-
|
447
|
-
|
448
|
-
onClose
|
449
|
-
|
450
|
-
|
451
|
-
|
452
|
+
if (withTrash && deletedAt !== null) {
|
453
|
+
mediaTrash(id, initialValue).then(function () {
|
454
|
+
if (onDelete !== null) {
|
455
|
+
onDelete();
|
456
|
+
}
|
457
|
+
setChanged(false);
|
458
|
+
if (onClose !== null) {
|
459
|
+
onClose();
|
460
|
+
}
|
461
|
+
});
|
462
|
+
} else {
|
463
|
+
// Destroy
|
464
|
+
mediaDelete(id, initialValue).then(function () {
|
465
|
+
if (onDelete !== null) {
|
466
|
+
onDelete();
|
467
|
+
}
|
468
|
+
setChanged(false);
|
469
|
+
if (onClose !== null) {
|
470
|
+
onClose();
|
471
|
+
}
|
472
|
+
});
|
473
|
+
}
|
474
|
+
}, [initialValue, mediaDelete, mediaTrash, deletedAt, setChanged, withTrash]);
|
452
475
|
var postForm = React.useCallback(function (action, data) {
|
453
476
|
return initialValue !== null ? update(initialValue.id, data) : new Promise();
|
454
477
|
}, [initialValue, update]);
|
@@ -479,9 +502,17 @@ function MediaForm(_ref) {
|
|
479
502
|
}, type)), /*#__PURE__*/React.createElement("div", null, /*#__PURE__*/React.createElement(Button, {
|
480
503
|
className: "me-2 mb-1 mt-1",
|
481
504
|
theme: "danger",
|
505
|
+
icon: withTrash && deletedAt !== null ? 'trash-fill' : 'trash',
|
506
|
+
iconPosition: "right",
|
482
507
|
onClick: onDeleteMedia,
|
483
|
-
disabled:
|
484
|
-
}, /*#__PURE__*/React.createElement(reactIntl.FormattedMessage, {
|
508
|
+
disabled: deleting || trashing
|
509
|
+
}, withTrash && deletedAt === null ? /*#__PURE__*/React.createElement(reactIntl.FormattedMessage, {
|
510
|
+
id: "PSlT7H",
|
511
|
+
defaultMessage: [{
|
512
|
+
"type": 0,
|
513
|
+
"value": "Trash"
|
514
|
+
}]
|
515
|
+
}) : /*#__PURE__*/React.createElement(reactIntl.FormattedMessage, {
|
485
516
|
id: "Bhu3B2",
|
486
517
|
defaultMessage: [{
|
487
518
|
"type": 0,
|
@@ -490,8 +521,10 @@ function MediaForm(_ref) {
|
|
490
521
|
})), onSave !== null ? /*#__PURE__*/React.createElement(Button, {
|
491
522
|
className: "mb-1 mt-1",
|
492
523
|
theme: "primary",
|
524
|
+
icon: changed ? 'check-all' : 'check',
|
525
|
+
iconPosition: "right",
|
493
526
|
onClick: onSubmit,
|
494
|
-
disabled: !changed || updating ||
|
527
|
+
disabled: !changed || updating || deleting
|
495
528
|
}, /*#__PURE__*/React.createElement(reactIntl.FormattedMessage, {
|
496
529
|
id: "R1HYj0",
|
497
530
|
defaultMessage: [{
|
@@ -682,7 +715,7 @@ var defaultColumns = [{
|
|
682
715
|
"value": "Actions"
|
683
716
|
}]
|
684
717
|
}),
|
685
|
-
actions: ['edit']
|
718
|
+
actions: ['edit', 'delete']
|
686
719
|
// component: ItemActions,
|
687
720
|
// label: 'Edit',
|
688
721
|
// url: '/edit/1',
|
@@ -771,7 +804,7 @@ var defaultFilters = [{
|
|
771
804
|
];
|
772
805
|
|
773
806
|
var _excluded$5 = ["page", "count"],
|
774
|
-
_excluded2 = ["types"];
|
807
|
+
_excluded2 = ["types", "trashed"];
|
775
808
|
var propTypes$5 = {
|
776
809
|
items: core.PropTypes.medias,
|
777
810
|
extraItems: core.PropTypes.medias,
|
@@ -790,8 +823,11 @@ var propTypes$5 = {
|
|
790
823
|
onLayoutChange: PropTypes.func,
|
791
824
|
selectedCount: PropTypes.number,
|
792
825
|
onClearSelected: PropTypes.func,
|
826
|
+
withTrash: PropTypes.bool,
|
827
|
+
withStickySelection: PropTypes.bool,
|
793
828
|
className: PropTypes.string,
|
794
|
-
buttonsClassName: PropTypes.string
|
829
|
+
buttonsClassName: PropTypes.string,
|
830
|
+
formChildren: PropTypes.node
|
795
831
|
};
|
796
832
|
var defaultProps$5 = {
|
797
833
|
items: null,
|
@@ -821,8 +857,11 @@ var defaultProps$5 = {
|
|
821
857
|
onLayoutChange: null,
|
822
858
|
selectedCount: null,
|
823
859
|
onClearSelected: null,
|
860
|
+
withTrash: false,
|
861
|
+
withStickySelection: false,
|
824
862
|
className: null,
|
825
|
-
buttonsClassName: null
|
863
|
+
buttonsClassName: null,
|
864
|
+
formChildren: null
|
826
865
|
};
|
827
866
|
function MediasBrowser(_ref) {
|
828
867
|
var initialItems = _ref.items,
|
@@ -842,8 +881,11 @@ function MediasBrowser(_ref) {
|
|
842
881
|
onLayoutChange = _ref.onLayoutChange,
|
843
882
|
selectedCount = _ref.selectedCount,
|
844
883
|
onClearSelected = _ref.onClearSelected,
|
884
|
+
withTrash = _ref.withTrash,
|
885
|
+
withStickySelection = _ref.withStickySelection,
|
845
886
|
className = _ref.className,
|
846
|
-
buttonsClassName = _ref.buttonsClassName
|
887
|
+
buttonsClassName = _ref.buttonsClassName,
|
888
|
+
formChildren = _ref.formChildren;
|
847
889
|
var _useState = React.useState(initialItems || null),
|
848
890
|
_useState2 = _slicedToArray(_useState, 1),
|
849
891
|
baseItems = _useState2[0];
|
@@ -882,14 +924,35 @@ function MediasBrowser(_ref) {
|
|
882
924
|
// eslint-disable-next-line no-unused-vars
|
883
925
|
var _ref3 = query || {};
|
884
926
|
_ref3.types;
|
927
|
+
_ref3.trashed;
|
885
928
|
var queryWithoutTypes = _objectWithoutProperties(_ref3, _excluded2);
|
929
|
+
var _useMediaTrash = useMediaTrash$1(),
|
930
|
+
mediaTrash = _useMediaTrash.mediaTrash,
|
931
|
+
trashing = _useMediaTrash.trashing;
|
932
|
+
var _useMediaDelete = useMediaDelete$1(),
|
933
|
+
mediaDelete = _useMediaDelete.mediaDelete,
|
934
|
+
deleting = _useMediaDelete.deleting;
|
935
|
+
var _useState3 = React.useState(false),
|
936
|
+
_useState4 = _slicedToArray(_useState3, 2),
|
937
|
+
showTrashed = _useState4[0],
|
938
|
+
setShowTrashed = _useState4[1];
|
939
|
+
var onClickTrash = React.useCallback(function () {
|
940
|
+
setShowTrashed(!showTrashed);
|
941
|
+
}, [showTrashed, setShowTrashed]);
|
886
942
|
var _useMedias = useMedias$1(query, page, count, {
|
887
|
-
items: baseItems
|
943
|
+
items: baseItems,
|
944
|
+
trashed: showTrashed
|
888
945
|
}),
|
889
|
-
items = _useMedias.
|
890
|
-
|
891
|
-
|
892
|
-
|
946
|
+
items = _useMedias.items,
|
947
|
+
allItems = _useMedias.allItems,
|
948
|
+
_useMedias$loading = _useMedias.loading,
|
949
|
+
loading = _useMedias$loading === void 0 ? false : _useMedias$loading,
|
950
|
+
_useMedias$updateItem = _useMedias.updateItem,
|
951
|
+
updateItem = _useMedias$updateItem === void 0 ? null : _useMedias$updateItem,
|
952
|
+
_useMedias$pagination = _useMedias.pagination,
|
953
|
+
_useMedias$pagination2 = _useMedias$pagination === void 0 ? {} : _useMedias$pagination,
|
954
|
+
lastPage = _useMedias$pagination2.lastPage,
|
955
|
+
total = _useMedias$pagination2.total;
|
893
956
|
|
894
957
|
// For picker
|
895
958
|
React.useEffect(function () {
|
@@ -897,10 +960,10 @@ function MediasBrowser(_ref) {
|
|
897
960
|
onItemsChange(items);
|
898
961
|
}
|
899
962
|
}, [items, onItemsChange]);
|
900
|
-
var
|
901
|
-
|
902
|
-
layout =
|
903
|
-
setLayout =
|
963
|
+
var _useState5 = React.useState(initialLayout || 'table'),
|
964
|
+
_useState6 = _slicedToArray(_useState5, 2),
|
965
|
+
layout = _useState6[0],
|
966
|
+
setLayout = _useState6[1];
|
904
967
|
var hasLayouts = React.useMemo(function () {
|
905
968
|
return layouts !== null && layouts.length > 1;
|
906
969
|
}, [layouts]);
|
@@ -921,10 +984,10 @@ function MediasBrowser(_ref) {
|
|
921
984
|
var onCloseMedia = React.useCallback(function () {
|
922
985
|
setCurrentMedia(null);
|
923
986
|
}, [setCurrentMedia]);
|
924
|
-
var onSaveMedia = React.useCallback(function () {
|
987
|
+
var onSaveMedia = React.useCallback(function (item) {
|
925
988
|
setCurrentMedia(null);
|
926
|
-
|
927
|
-
}, [setCurrentMedia,
|
989
|
+
updateItem(item);
|
990
|
+
}, [setCurrentMedia, updateItem]);
|
928
991
|
var pagination = /*#__PURE__*/React.createElement(Pagination, {
|
929
992
|
page: page,
|
930
993
|
lastPage: lastPage,
|
@@ -940,8 +1003,17 @@ function MediasBrowser(_ref) {
|
|
940
1003
|
alwaysShowButtons: true
|
941
1004
|
});
|
942
1005
|
var finalFilters = React.useMemo(function () {
|
943
|
-
|
944
|
-
|
1006
|
+
var partialFilters = withTrash ? (filters || []).concat([{
|
1007
|
+
name: 'trashed',
|
1008
|
+
component: 'button',
|
1009
|
+
theme: showTrashed ? 'danger' : 'secondary',
|
1010
|
+
outline: !showTrashed,
|
1011
|
+
activeTheme: 'danger',
|
1012
|
+
icon: showTrashed ? 'trash-fill' : 'trash',
|
1013
|
+
onClick: onClickTrash
|
1014
|
+
}]) : filters;
|
1015
|
+
if (types !== null && partialFilters !== null) {
|
1016
|
+
return (partialFilters || []).map(function (filter) {
|
945
1017
|
var _ref4 = filter || {},
|
946
1018
|
_ref4$id = _ref4.id,
|
947
1019
|
id = _ref4$id === void 0 ? null : _ref4$id;
|
@@ -950,16 +1022,47 @@ function MediasBrowser(_ref) {
|
|
950
1022
|
}) : filter;
|
951
1023
|
});
|
952
1024
|
}
|
953
|
-
return
|
954
|
-
}, [filters, types]);
|
1025
|
+
return partialFilters;
|
1026
|
+
}, [filters, types, withTrash, showTrashed, onClickTrash]);
|
1027
|
+
var finalColumns = React.useMemo(function () {
|
1028
|
+
return withTrash && showTrashed ? (columns || []).map(function (column) {
|
1029
|
+
var _ref5 = column || {},
|
1030
|
+
_ref5$id = _ref5.id,
|
1031
|
+
columnId = _ref5$id === void 0 ? null : _ref5$id;
|
1032
|
+
if (columnId === 'created_at') {
|
1033
|
+
return _objectSpread(_objectSpread({}, column), {}, {
|
1034
|
+
path: 'deleted_at',
|
1035
|
+
label: /*#__PURE__*/React.createElement(reactIntl.FormattedMessage, {
|
1036
|
+
id: "uds4wJ",
|
1037
|
+
defaultMessage: [{
|
1038
|
+
"type": 0,
|
1039
|
+
"value": "Deleted at"
|
1040
|
+
}]
|
1041
|
+
})
|
1042
|
+
});
|
1043
|
+
}
|
1044
|
+
return column;
|
1045
|
+
}) : columns;
|
1046
|
+
}, [columns, withTrash, showTrashed]);
|
955
1047
|
var finalItems = React.useMemo(function () {
|
956
|
-
if (
|
957
|
-
return uniqBy([].concat(_toConsumableArray(extraItems
|
1048
|
+
if (withStickySelection && extraItems !== null) {
|
1049
|
+
return uniqBy([].concat(_toConsumableArray((extraItems || []).map(function (item) {
|
1050
|
+
var _item$id = item.id,
|
1051
|
+
itemId = _item$id === void 0 ? null : _item$id;
|
1052
|
+
return (allItems || []).find(function () {
|
1053
|
+
var _ref6 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},
|
1054
|
+
_ref6$id = _ref6.id,
|
1055
|
+
otherId = _ref6$id === void 0 ? null : _ref6$id;
|
1056
|
+
return otherId === itemId;
|
1057
|
+
}) || item || null;
|
1058
|
+
}).filter(function (it) {
|
1059
|
+
return it !== null;
|
1060
|
+
})), _toConsumableArray(items || [])), function (it) {
|
958
1061
|
return it === null || it === void 0 ? void 0 : it.id;
|
959
1062
|
});
|
960
1063
|
}
|
961
1064
|
return items;
|
962
|
-
}, [items, page, extraItems]);
|
1065
|
+
}, [items, page, allItems, withStickySelection, extraItems]);
|
963
1066
|
return /*#__PURE__*/React.createElement("div", {
|
964
1067
|
className: classNames([styles.container, className])
|
965
1068
|
}, currentMedia !== null ? /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement("div", {
|
@@ -979,8 +1082,9 @@ function MediasBrowser(_ref) {
|
|
979
1082
|
fields: fields,
|
980
1083
|
onChange: setCurrentMedia,
|
981
1084
|
onSave: onSaveMedia,
|
982
|
-
onClose: onCloseMedia
|
983
|
-
|
1085
|
+
onClose: onCloseMedia,
|
1086
|
+
withTrash: withTrash
|
1087
|
+
}, formChildren)) : /*#__PURE__*/React.createElement(React.Fragment, null, filters !== null ? /*#__PURE__*/React.createElement(Filters, {
|
984
1088
|
value: query,
|
985
1089
|
clearValue: types !== null ? queryWithoutTypes : null,
|
986
1090
|
filters: finalFilters,
|
@@ -992,10 +1096,10 @@ function MediasBrowser(_ref) {
|
|
992
1096
|
className: buttonsClassName
|
993
1097
|
}) : null) : null, filters === null && buttons !== null ? /*#__PURE__*/React.createElement("div", {
|
994
1098
|
className: "mt-2 mb-2"
|
995
|
-
},
|
1099
|
+
}, /*#__PURE__*/React.createElement(Buttons, {
|
996
1100
|
items: buttons,
|
997
1101
|
className: buttonsClassName
|
998
|
-
})
|
1102
|
+
})) : null, /*#__PURE__*/React.createElement("div", {
|
999
1103
|
className: classNames(['d-flex', 'mt-1', 'mb-3', {
|
1000
1104
|
'justify-content-between': hasLayouts,
|
1001
1105
|
'justify-content-end': !hasLayouts
|
@@ -1033,7 +1137,7 @@ function MediasBrowser(_ref) {
|
|
1033
1137
|
loading: loading
|
1034
1138
|
})) : null, layout === 'table' ? /*#__PURE__*/React.createElement(Table, Object.assign({
|
1035
1139
|
theme: theme,
|
1036
|
-
columns:
|
1140
|
+
columns: finalColumns,
|
1037
1141
|
displayPlaceholder: /*#__PURE__*/React.createElement("span", {
|
1038
1142
|
className: "text-secondary text-opacity-75"
|
1039
1143
|
}, "\u2014"),
|
@@ -1044,6 +1148,19 @@ function MediasBrowser(_ref) {
|
|
1044
1148
|
items: finalItems,
|
1045
1149
|
loading: loading,
|
1046
1150
|
actionsProps: {
|
1151
|
+
getDeletePropsFromItem: function getDeletePropsFromItem() {
|
1152
|
+
var _ref7 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},
|
1153
|
+
_ref7$id = _ref7.id,
|
1154
|
+
id = _ref7$id === void 0 ? null : _ref7$id;
|
1155
|
+
return {
|
1156
|
+
href: null,
|
1157
|
+
onClick: function onClick() {
|
1158
|
+
return showTrashed ? mediaDelete(id) : mediaTrash(id);
|
1159
|
+
},
|
1160
|
+
disabled: trashing || deleting,
|
1161
|
+
icon: showTrashed ? 'trash-fill' : 'trash'
|
1162
|
+
};
|
1163
|
+
},
|
1047
1164
|
getEditPropsFromItem: function getEditPropsFromItem(it) {
|
1048
1165
|
return {
|
1049
1166
|
href: null,
|
@@ -1098,18 +1215,20 @@ function MediasPicker(_ref) {
|
|
1098
1215
|
tableProps = _ref.tableProps,
|
1099
1216
|
className = _ref.className,
|
1100
1217
|
props = _objectWithoutProperties(_ref, _excluded$4);
|
1101
|
-
|
1218
|
+
var _useMediasForm = useMediasForm(),
|
1219
|
+
currentMedia = _useMediasForm.media;
|
1220
|
+
|
1221
|
+
// For selection
|
1102
1222
|
var _useState = React.useState(initialItems),
|
1103
1223
|
_useState2 = _slicedToArray(_useState, 2),
|
1104
|
-
|
1224
|
+
pageItems = _useState2[0],
|
1105
1225
|
setItems = _useState2[1];
|
1106
|
-
var
|
1107
|
-
|
1226
|
+
var disabled = pageItems === null || pageItems.length < 1;
|
1227
|
+
var onItemsChange = React.useCallback(function (newPageItems) {
|
1228
|
+
setItems(newPageItems);
|
1108
1229
|
}, [setItems]);
|
1109
|
-
var _useMediasForm = useMediasForm(),
|
1110
|
-
currentMedia = _useMediasForm.media;
|
1111
1230
|
var _useItemSelection = hooks.useItemSelection({
|
1112
|
-
|
1231
|
+
items: pageItems,
|
1113
1232
|
selectedItems: initialSelectedItems,
|
1114
1233
|
onSelectionChange: onChange,
|
1115
1234
|
multipleSelection: multiple
|
@@ -1120,7 +1239,6 @@ function MediasPicker(_ref) {
|
|
1120
1239
|
pageSelected = _useItemSelection.pageSelected,
|
1121
1240
|
selectedCount = _useItemSelection.selectedCount,
|
1122
1241
|
selectedItems = _useItemSelection.selectedItems;
|
1123
|
-
var disabled = currentItems === null || currentItems.length < 1;
|
1124
1242
|
var onConfirmSelection = React.useCallback(function () {
|
1125
1243
|
if (onConfirm !== null) {
|
1126
1244
|
onConfirm(selectedItems);
|
@@ -1136,13 +1254,14 @@ function MediasPicker(_ref) {
|
|
1136
1254
|
onSelectPage: onSelectPage,
|
1137
1255
|
selectedItems: selectedItems,
|
1138
1256
|
pageSelected: pageSelected
|
1139
|
-
}, tableProps)
|
1140
|
-
|
1257
|
+
}, tableProps),
|
1258
|
+
items: initialItems // TODO: fix useItems if actually using this
|
1141
1259
|
,
|
1142
1260
|
onItemsChange: onItemsChange,
|
1143
1261
|
selectedCount: selectedCount,
|
1144
1262
|
onClearSelected: onClearSelected,
|
1145
|
-
types: types
|
1263
|
+
types: types,
|
1264
|
+
extraItems: !multiple && initialSelectedItems !== null ? [initialSelectedItems] : initialSelectedItems
|
1146
1265
|
}, props)), multiple && !withoutButtons && currentMedia === null ? /*#__PURE__*/React.createElement("div", {
|
1147
1266
|
className: "d-flex w-100 align-items-end justify-content-end mt-3"
|
1148
1267
|
}, /*#__PURE__*/React.createElement("div", {
|
@@ -1402,7 +1521,8 @@ exports.fields = defaultFields;
|
|
1402
1521
|
exports.filters = defaultFilters;
|
1403
1522
|
exports.useMedia = useMedia$1;
|
1404
1523
|
exports.useMediaCreate = useMediaCreate$1;
|
1524
|
+
exports.useMediaDelete = useMediaDelete$1;
|
1525
|
+
exports.useMediaTrash = useMediaTrash$1;
|
1405
1526
|
exports.useMediaUpdate = useMediaUpdate$1;
|
1406
1527
|
exports.useMedias = useMedias$1;
|
1407
1528
|
exports.useMediasApi = useMediasApi;
|
1408
|
-
exports.useMediasRecentSearches = useMediasRecent$1;
|
package/package.json
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
{
|
2
2
|
"name": "@panneau/medias",
|
3
|
-
"version": "3.0.
|
3
|
+
"version": "3.0.174",
|
4
4
|
"description": "",
|
5
5
|
"keywords": [
|
6
6
|
"javascript"
|
@@ -46,20 +46,20 @@
|
|
46
46
|
},
|
47
47
|
"dependencies": {
|
48
48
|
"@babel/runtime": "^7.12.5",
|
49
|
-
"@panneau/core": "^3.0.
|
50
|
-
"@panneau/data": "^3.0.
|
51
|
-
"@panneau/display-image": "^3.0.
|
52
|
-
"@panneau/element-button": "^3.0.
|
53
|
-
"@panneau/element-buttons": "^3.0.
|
54
|
-
"@panneau/element-form": "^3.0.
|
55
|
-
"@panneau/element-form-status": "^3.0.
|
56
|
-
"@panneau/element-grid": "^3.0.
|
57
|
-
"@panneau/element-icon": "^3.0.
|
58
|
-
"@panneau/element-media-card": "^3.0.
|
59
|
-
"@panneau/element-media-player": "^3.0.
|
60
|
-
"@panneau/element-pagination": "^3.0.
|
61
|
-
"@panneau/element-table": "^3.0.
|
62
|
-
"@panneau/filter-filters": "^3.0.
|
49
|
+
"@panneau/core": "^3.0.174",
|
50
|
+
"@panneau/data": "^3.0.174",
|
51
|
+
"@panneau/display-image": "^3.0.174",
|
52
|
+
"@panneau/element-button": "^3.0.174",
|
53
|
+
"@panneau/element-buttons": "^3.0.174",
|
54
|
+
"@panneau/element-form": "^3.0.174",
|
55
|
+
"@panneau/element-form-status": "^3.0.174",
|
56
|
+
"@panneau/element-grid": "^3.0.174",
|
57
|
+
"@panneau/element-icon": "^3.0.174",
|
58
|
+
"@panneau/element-media-card": "^3.0.174",
|
59
|
+
"@panneau/element-media-player": "^3.0.174",
|
60
|
+
"@panneau/element-pagination": "^3.0.174",
|
61
|
+
"@panneau/element-table": "^3.0.174",
|
62
|
+
"@panneau/filter-filters": "^3.0.174",
|
63
63
|
"classnames": "^2.5.1",
|
64
64
|
"lodash": "^4.17.21",
|
65
65
|
"prop-types": "^15.7.2",
|
@@ -68,5 +68,5 @@
|
|
68
68
|
"publishConfig": {
|
69
69
|
"access": "public"
|
70
70
|
},
|
71
|
-
"gitHead": "
|
71
|
+
"gitHead": "0b3a328b97ef9e9c02f8cfe731ac50a1611dc854"
|
72
72
|
}
|