@panneau/medias 3.0.171 → 3.0.173
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 -1
- package/es/index.js +91 -90
- package/lib/index.js +90 -89
- package/package.json +7 -7
package/assets/css/styles.css
CHANGED
@@ -1 +1 @@
|
|
1
|
-
.panneau-medias-mediaFrame{margin-bottom:10px;position:relative}.panneau-medias-playButton{left:50%;position:absolute;top:50%;-webkit-transform:translate(-50%,-50%);-ms-transform:translate(-50%,-50%);transform:translate(-50%,-50%)}
|
1
|
+
.panneau-medias-mediaFrame{aspect-ratio:1/1;margin-bottom:10px;position:relative}.panneau-medias-playButton{left:50%;position:absolute;top:50%;-webkit-transform:translate(-50%,-50%);-ms-transform:translate(-50%,-50%);transform:translate(-50%,-50%)}
|
package/es/index.js
CHANGED
@@ -9,10 +9,12 @@ import { useForm, useQuery, useItemSelection } from '@panneau/core/hooks';
|
|
9
9
|
import Button from '@panneau/element-button';
|
10
10
|
import Form from '@panneau/element-form';
|
11
11
|
import FormStatus from '@panneau/element-form-status';
|
12
|
+
import ImageDisplay from '@panneau/display-image';
|
12
13
|
import MediaPlayer from '@panneau/element-media-player';
|
13
|
-
import
|
14
|
+
import _toConsumableArray from '@babel/runtime/helpers/toConsumableArray';
|
14
15
|
import _objectWithoutProperties from '@babel/runtime/helpers/objectWithoutProperties';
|
15
16
|
import _objectSpread from '@babel/runtime/helpers/objectSpread2';
|
17
|
+
import uniqBy from 'lodash/uniqBy';
|
16
18
|
import { PropTypes as PropTypes$1 } from '@panneau/core';
|
17
19
|
import Buttons from '@panneau/element-buttons';
|
18
20
|
import Grid from '@panneau/element-grid';
|
@@ -21,8 +23,7 @@ import MediaCard from '@panneau/element-media-card';
|
|
21
23
|
import Pagination from '@panneau/element-pagination';
|
22
24
|
import Table from '@panneau/element-table';
|
23
25
|
import Filters from '@panneau/filter-filters';
|
24
|
-
import {
|
25
|
-
import _toConsumableArray from '@babel/runtime/helpers/toConsumableArray';
|
26
|
+
import { useItemsStore, useData, useApi } from '@panneau/data';
|
26
27
|
|
27
28
|
/* eslint-disable react/jsx-props-no-spreading */
|
28
29
|
var MediasApiContext = /*#__PURE__*/React.createContext(null);
|
@@ -59,7 +60,7 @@ function MediasApiProvider(_ref) {
|
|
59
60
|
MediasApiProvider.propTypes = propTypes$9;
|
60
61
|
MediasApiProvider.defaultProps = defaultProps$9;
|
61
62
|
|
62
|
-
var _excluded$7 = ["items"
|
63
|
+
var _excluded$7 = ["items"];
|
63
64
|
var useMedias = function useMedias() {
|
64
65
|
var query = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : null;
|
65
66
|
var page = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;
|
@@ -70,18 +71,18 @@ var useMedias = function useMedias() {
|
|
70
71
|
var requestedPage = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : null;
|
71
72
|
return api.get(query, requestedPage, count);
|
72
73
|
}, [api, query, count]);
|
73
|
-
var
|
74
|
+
var _useItemsStore = useItemsStore('medias', _objectSpread({
|
74
75
|
getPage: page !== null ? getItems : null,
|
75
76
|
getItems: page === null ? getItems : null,
|
76
|
-
page: page
|
77
|
+
page: page,
|
78
|
+
count: count,
|
79
|
+
query: query
|
77
80
|
}, opts)),
|
78
|
-
items =
|
79
|
-
|
80
|
-
request = _objectWithoutProperties(_useItems, _excluded$7);
|
81
|
+
items = _useItemsStore.items,
|
82
|
+
props = _objectWithoutProperties(_useItemsStore, _excluded$7);
|
81
83
|
return _objectSpread({
|
82
|
-
|
83
|
-
|
84
|
-
}, request);
|
84
|
+
items: items
|
85
|
+
}, props);
|
85
86
|
};
|
86
87
|
var useMedias$1 = useMedias;
|
87
88
|
|
@@ -214,22 +215,18 @@ function MediaFrame(_ref) {
|
|
214
215
|
setShowPlayer(!showPlayer);
|
215
216
|
}, [showPlayer, setShowPlayer]);
|
216
217
|
return /*#__PURE__*/React.createElement("div", {
|
217
|
-
className: classNames([
|
218
|
+
className: classNames([styles.mediaFrame, 'position-relative', 'd-flex', 'flex-grow-1', 'w-100', 'mw-100', _defineProperty({}, className, className != null)])
|
218
219
|
}, showPlayer ? /*#__PURE__*/React.createElement(MediaPlayer, {
|
219
220
|
value: value,
|
220
221
|
width: "100%"
|
221
|
-
}) : /*#__PURE__*/React.createElement(
|
222
|
+
}) : /*#__PURE__*/React.createElement(ImageDisplay, {
|
223
|
+
className: "w-100",
|
222
224
|
value: value,
|
223
|
-
|
224
|
-
|
225
|
-
|
226
|
-
|
227
|
-
|
228
|
-
theme: "secondary",
|
229
|
-
onClick: onClick,
|
230
|
-
icon: "play-fill",
|
231
|
-
size: "lg"
|
232
|
-
}) : null)));
|
225
|
+
maxWidth: "100%",
|
226
|
+
maxHeight: "100%",
|
227
|
+
withoutZoom: true,
|
228
|
+
onClick: type === 'video' || type === 'audio' ? onClick : null
|
229
|
+
}));
|
233
230
|
}
|
234
231
|
MediaFrame.propTypes = propTypes$8;
|
235
232
|
MediaFrame.defaultProps = defaultProps$8;
|
@@ -775,10 +772,8 @@ var _excluded$5 = ["page", "count"],
|
|
775
772
|
_excluded2 = ["types"];
|
776
773
|
var propTypes$5 = {
|
777
774
|
items: PropTypes$1.medias,
|
775
|
+
extraItems: PropTypes$1.medias,
|
778
776
|
types: PropTypes.arrayOf(PropTypes.string),
|
779
|
-
// uploadButton: PropTypes.shape({
|
780
|
-
// value: PropTypes.oneOfType([PanneauPropTypes.medias, PanneauPropTypes.media]),
|
781
|
-
// }),
|
782
777
|
buttons: PropTypes$1.buttons,
|
783
778
|
filters: PropTypes$1.filters,
|
784
779
|
columns: PropTypes$1.tableColumns,
|
@@ -789,16 +784,17 @@ var propTypes$5 = {
|
|
789
784
|
layouts: PropTypes.arrayOf(PropTypes.shape({})),
|
790
785
|
theme: PropTypes.string,
|
791
786
|
tableProps: PropTypes.bool,
|
792
|
-
onSelectItem: PropTypes.func,
|
793
|
-
onSelectItems: PropTypes.func,
|
794
787
|
onItemsChange: PropTypes.func,
|
795
788
|
onLayoutChange: PropTypes.func,
|
796
789
|
selectedCount: PropTypes.number,
|
797
790
|
onClearSelected: PropTypes.func,
|
798
|
-
|
791
|
+
withStickySelection: PropTypes.bool,
|
792
|
+
className: PropTypes.string,
|
793
|
+
buttonsClassName: PropTypes.string
|
799
794
|
};
|
800
795
|
var defaultProps$5 = {
|
801
796
|
items: null,
|
797
|
+
extraItems: null,
|
802
798
|
types: null,
|
803
799
|
buttons: null,
|
804
800
|
filters: defaultFilters,
|
@@ -820,16 +816,17 @@ var defaultProps$5 = {
|
|
820
816
|
}],
|
821
817
|
theme: null,
|
822
818
|
tableProps: null,
|
823
|
-
onSelectItem: null,
|
824
|
-
onSelectItems: null,
|
825
819
|
onItemsChange: null,
|
826
820
|
onLayoutChange: null,
|
827
821
|
selectedCount: null,
|
828
822
|
onClearSelected: null,
|
829
|
-
|
823
|
+
withStickySelection: false,
|
824
|
+
className: null,
|
825
|
+
buttonsClassName: null
|
830
826
|
};
|
831
827
|
function MediasBrowser(_ref) {
|
832
828
|
var initialItems = _ref.items,
|
829
|
+
extraItems = _ref.extraItems,
|
833
830
|
types = _ref.types,
|
834
831
|
baseUrl = _ref.baseUrl,
|
835
832
|
buttons = _ref.buttons,
|
@@ -841,13 +838,13 @@ function MediasBrowser(_ref) {
|
|
841
838
|
layouts = _ref.layouts,
|
842
839
|
theme = _ref.theme,
|
843
840
|
tableProps = _ref.tableProps,
|
844
|
-
onSelectItem = _ref.onSelectItem,
|
845
|
-
onSelectItems = _ref.onSelectItems,
|
846
841
|
onItemsChange = _ref.onItemsChange,
|
847
842
|
onLayoutChange = _ref.onLayoutChange,
|
848
843
|
selectedCount = _ref.selectedCount,
|
849
844
|
onClearSelected = _ref.onClearSelected,
|
850
|
-
|
845
|
+
withStickySelection = _ref.withStickySelection,
|
846
|
+
className = _ref.className,
|
847
|
+
buttonsClassName = _ref.buttonsClassName;
|
851
848
|
var _useState = useState(initialItems || null),
|
852
849
|
_useState2 = _slicedToArray(_useState, 1),
|
853
850
|
baseItems = _useState2[0];
|
@@ -890,10 +887,16 @@ function MediasBrowser(_ref) {
|
|
890
887
|
var _useMedias = useMedias$1(query, page, count, {
|
891
888
|
items: baseItems
|
892
889
|
}),
|
893
|
-
items = _useMedias.
|
894
|
-
|
895
|
-
|
896
|
-
|
890
|
+
items = _useMedias.items,
|
891
|
+
allItems = _useMedias.allItems,
|
892
|
+
_useMedias$loading = _useMedias.loading,
|
893
|
+
loading = _useMedias$loading === void 0 ? false : _useMedias$loading,
|
894
|
+
_useMedias$updateItem = _useMedias.updateItem,
|
895
|
+
updateItem = _useMedias$updateItem === void 0 ? null : _useMedias$updateItem,
|
896
|
+
_useMedias$pagination = _useMedias.pagination,
|
897
|
+
_useMedias$pagination2 = _useMedias$pagination === void 0 ? {} : _useMedias$pagination,
|
898
|
+
lastPage = _useMedias$pagination2.lastPage,
|
899
|
+
total = _useMedias$pagination2.total;
|
897
900
|
|
898
901
|
// For picker
|
899
902
|
useEffect(function () {
|
@@ -925,17 +928,10 @@ function MediasBrowser(_ref) {
|
|
925
928
|
var onCloseMedia = useCallback(function () {
|
926
929
|
setCurrentMedia(null);
|
927
930
|
}, [setCurrentMedia]);
|
928
|
-
|
929
|
-
// TODO: context for this?
|
930
|
-
useCallback(function () {
|
931
|
-
var media = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : null;
|
932
|
-
onSelectItems(media);
|
933
|
-
onQueryReset();
|
934
|
-
}, [setCurrentMedia, onQueryReset, onSelectItems]);
|
935
|
-
var onSaveMedia = useCallback(function () {
|
931
|
+
var onSaveMedia = useCallback(function (item) {
|
936
932
|
setCurrentMedia(null);
|
937
|
-
|
938
|
-
}, [setCurrentMedia,
|
933
|
+
updateItem(item);
|
934
|
+
}, [setCurrentMedia, updateItem]);
|
939
935
|
var pagination = /*#__PURE__*/React.createElement(Pagination, {
|
940
936
|
page: page,
|
941
937
|
lastPage: lastPage,
|
@@ -963,13 +959,31 @@ function MediasBrowser(_ref) {
|
|
963
959
|
}
|
964
960
|
return filters;
|
965
961
|
}, [filters, types]);
|
962
|
+
var finalItems = useMemo(function () {
|
963
|
+
if (withStickySelection && extraItems !== null) {
|
964
|
+
return uniqBy([].concat(_toConsumableArray((extraItems || []).map(function (item) {
|
965
|
+
var _item$id = item.id,
|
966
|
+
itemId = _item$id === void 0 ? null : _item$id;
|
967
|
+
return (allItems || []).find(function () {
|
968
|
+
var _ref5 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},
|
969
|
+
_ref5$id = _ref5.id,
|
970
|
+
otherId = _ref5$id === void 0 ? null : _ref5$id;
|
971
|
+
return otherId === itemId;
|
972
|
+
}) || item || null;
|
973
|
+
}).filter(function (it) {
|
974
|
+
return it !== null;
|
975
|
+
})), _toConsumableArray(items || [])), function (it) {
|
976
|
+
return it === null || it === void 0 ? void 0 : it.id;
|
977
|
+
});
|
978
|
+
}
|
979
|
+
return items;
|
980
|
+
}, [items, page, allItems, withStickySelection, extraItems]);
|
966
981
|
return /*#__PURE__*/React.createElement("div", {
|
967
982
|
className: classNames([styles.container, className])
|
968
983
|
}, currentMedia !== null ? /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement("div", {
|
969
984
|
className: "mt-2 mb-4"
|
970
985
|
}, /*#__PURE__*/React.createElement(Button, {
|
971
986
|
theme: "primary",
|
972
|
-
outline: true,
|
973
987
|
onClick: onCloseMedia,
|
974
988
|
icon: "arrow-left"
|
975
989
|
}, /*#__PURE__*/React.createElement(FormattedMessage, {
|
@@ -985,7 +999,6 @@ function MediasBrowser(_ref) {
|
|
985
999
|
onSave: onSaveMedia,
|
986
1000
|
onClose: onCloseMedia
|
987
1001
|
})) : /*#__PURE__*/React.createElement(React.Fragment, null, filters !== null ? /*#__PURE__*/React.createElement(Filters, {
|
988
|
-
className: "mt-0 pt-0",
|
989
1002
|
value: query,
|
990
1003
|
clearValue: types !== null ? queryWithoutTypes : null,
|
991
1004
|
filters: finalFilters,
|
@@ -994,12 +1007,12 @@ function MediasBrowser(_ref) {
|
|
994
1007
|
theme: theme
|
995
1008
|
}, buttons !== null ? /*#__PURE__*/React.createElement(Buttons, {
|
996
1009
|
items: buttons,
|
997
|
-
className:
|
1010
|
+
className: buttonsClassName
|
998
1011
|
}) : null) : null, filters === null && buttons !== null ? /*#__PURE__*/React.createElement("div", {
|
999
1012
|
className: "mt-2 mb-2"
|
1000
1013
|
}, buttons !== null ? /*#__PURE__*/React.createElement(Buttons, {
|
1001
1014
|
items: buttons,
|
1002
|
-
className:
|
1015
|
+
className: buttonsClassName
|
1003
1016
|
}) : null) : null, /*#__PURE__*/React.createElement("div", {
|
1004
1017
|
className: classNames(['d-flex', 'mt-1', 'mb-3', {
|
1005
1018
|
'justify-content-between': hasLayouts,
|
@@ -1026,29 +1039,28 @@ function MediasBrowser(_ref) {
|
|
1026
1039
|
className: 'd-flex w-100',
|
1027
1040
|
cardClassName: 'flex-grow-1',
|
1028
1041
|
vertical: true,
|
1029
|
-
selectable: onSelectItem !== null,
|
1030
1042
|
onClickDescription: function onClickDescription(it) {
|
1031
1043
|
onOpenMedia(it);
|
1032
1044
|
}
|
1033
|
-
}
|
1034
|
-
|
1035
|
-
items: items || [],
|
1036
|
-
loading: loading,
|
1037
|
-
onSelectItem: onSelectItem !== null ? onSelectItem : function (it) {
|
1045
|
+
},
|
1046
|
+
onSelectItem: function onSelectItem(it) {
|
1038
1047
|
return onOpenMedia(it);
|
1039
1048
|
}
|
1049
|
+
}, tableProps, {
|
1050
|
+
items: finalItems || [],
|
1051
|
+
loading: loading
|
1040
1052
|
})) : null, layout === 'table' ? /*#__PURE__*/React.createElement(Table, Object.assign({
|
1041
1053
|
theme: theme,
|
1042
1054
|
columns: columns,
|
1043
1055
|
displayPlaceholder: /*#__PURE__*/React.createElement("span", {
|
1044
1056
|
className: "text-secondary text-opacity-75"
|
1045
|
-
}, "\u2014")
|
1057
|
+
}, "\u2014"),
|
1058
|
+
onSelectItem: function onSelectItem(it) {
|
1059
|
+
return onOpenMedia(it);
|
1060
|
+
}
|
1046
1061
|
}, tableProps, {
|
1047
|
-
items:
|
1062
|
+
items: finalItems,
|
1048
1063
|
loading: loading,
|
1049
|
-
onSelectItem: onSelectItem !== null ? onSelectItem : function (it) {
|
1050
|
-
return onOpenMedia(it);
|
1051
|
-
},
|
1052
1064
|
actionsProps: {
|
1053
1065
|
getEditPropsFromItem: function getEditPropsFromItem(it) {
|
1054
1066
|
return {
|
@@ -1104,24 +1116,25 @@ function MediasPicker(_ref) {
|
|
1104
1116
|
tableProps = _ref.tableProps,
|
1105
1117
|
className = _ref.className,
|
1106
1118
|
props = _objectWithoutProperties(_ref, _excluded$4);
|
1119
|
+
var _useMediasForm = useMediasForm(),
|
1120
|
+
currentMedia = _useMediasForm.media;
|
1121
|
+
|
1122
|
+
// For selection
|
1107
1123
|
var _useState = useState(initialItems),
|
1108
1124
|
_useState2 = _slicedToArray(_useState, 2),
|
1109
|
-
|
1125
|
+
pageItems = _useState2[0],
|
1110
1126
|
setItems = _useState2[1];
|
1111
|
-
var
|
1112
|
-
|
1127
|
+
var disabled = pageItems === null || pageItems.length < 1;
|
1128
|
+
var onItemsChange = useCallback(function (newPageItems) {
|
1129
|
+
setItems(newPageItems);
|
1113
1130
|
}, [setItems]);
|
1114
|
-
var disabled = initialItems === null || initialItems.length < 1;
|
1115
|
-
var _useMediasForm = useMediasForm(),
|
1116
|
-
currentMedia = _useMediasForm.media;
|
1117
1131
|
var _useItemSelection = useItemSelection({
|
1118
|
-
items:
|
1132
|
+
items: pageItems,
|
1119
1133
|
selectedItems: initialSelectedItems,
|
1120
1134
|
onSelectionChange: onChange,
|
1121
1135
|
multipleSelection: multiple
|
1122
1136
|
}),
|
1123
1137
|
onSelectItem = _useItemSelection.onSelectItem,
|
1124
|
-
onSelectItems = _useItemSelection.onSelectItems,
|
1125
1138
|
onSelectPage = _useItemSelection.onSelectPage,
|
1126
1139
|
onClearSelected = _useItemSelection.onClearSelected,
|
1127
1140
|
pageSelected = _useItemSelection.pageSelected,
|
@@ -1132,36 +1145,24 @@ function MediasPicker(_ref) {
|
|
1132
1145
|
onConfirm(selectedItems);
|
1133
1146
|
}
|
1134
1147
|
}, [selectedItems, onConfirm]);
|
1135
|
-
|
1136
|
-
// const finalUploadButton = useMemo(
|
1137
|
-
// () => ({
|
1138
|
-
// ...(uploadButton || null),
|
1139
|
-
// ...(types !== null ? { types } : null),
|
1140
|
-
// allowMultipleUploads: multiple,
|
1141
|
-
// maxNumberOfFiles: multiple ? 10 : 0,
|
1142
|
-
// value: selectedItems,
|
1143
|
-
// }),
|
1144
|
-
// [uploadButton, selectedItems, multiple],
|
1145
|
-
// );
|
1146
|
-
|
1147
1148
|
return /*#__PURE__*/React.createElement("div", {
|
1148
1149
|
className: className
|
1149
1150
|
}, /*#__PURE__*/React.createElement(MediasBrowser, Object.assign({
|
1150
1151
|
tableProps: _objectSpread({
|
1151
|
-
selectable:
|
1152
|
+
selectable: true,
|
1152
1153
|
multipleSelection: multiple,
|
1153
1154
|
onSelectItem: onSelectItem,
|
1154
1155
|
onSelectPage: onSelectPage,
|
1155
1156
|
selectedItems: selectedItems,
|
1156
1157
|
pageSelected: pageSelected
|
1157
1158
|
}, tableProps),
|
1158
|
-
items:
|
1159
|
-
|
1160
|
-
onSelectItems: onSelectItems,
|
1159
|
+
items: initialItems // TODO: fix useItems if actually using this
|
1160
|
+
,
|
1161
1161
|
onItemsChange: onItemsChange,
|
1162
1162
|
selectedCount: selectedCount,
|
1163
1163
|
onClearSelected: onClearSelected,
|
1164
|
-
types: types
|
1164
|
+
types: types,
|
1165
|
+
extraItems: !multiple && initialSelectedItems !== null ? [initialSelectedItems] : initialSelectedItems
|
1165
1166
|
}, props)), multiple && !withoutButtons && currentMedia === null ? /*#__PURE__*/React.createElement("div", {
|
1166
1167
|
className: "d-flex w-100 align-items-end justify-content-end mt-3"
|
1167
1168
|
}, /*#__PURE__*/React.createElement("div", {
|
package/lib/index.js
CHANGED
@@ -11,10 +11,12 @@ var hooks = require('@panneau/core/hooks');
|
|
11
11
|
var Button = require('@panneau/element-button');
|
12
12
|
var Form = require('@panneau/element-form');
|
13
13
|
var FormStatus = require('@panneau/element-form-status');
|
14
|
+
var ImageDisplay = require('@panneau/display-image');
|
14
15
|
var MediaPlayer = require('@panneau/element-media-player');
|
15
|
-
var
|
16
|
+
var _toConsumableArray = require('@babel/runtime/helpers/toConsumableArray');
|
16
17
|
var _objectWithoutProperties = require('@babel/runtime/helpers/objectWithoutProperties');
|
17
18
|
var _objectSpread = require('@babel/runtime/helpers/objectSpread2');
|
19
|
+
var uniqBy = require('lodash/uniqBy');
|
18
20
|
var core = require('@panneau/core');
|
19
21
|
var Buttons = require('@panneau/element-buttons');
|
20
22
|
var Grid = require('@panneau/element-grid');
|
@@ -24,7 +26,6 @@ var Pagination = require('@panneau/element-pagination');
|
|
24
26
|
var Table = require('@panneau/element-table');
|
25
27
|
var Filters = require('@panneau/filter-filters');
|
26
28
|
var data = require('@panneau/data');
|
27
|
-
var _toConsumableArray = require('@babel/runtime/helpers/toConsumableArray');
|
28
29
|
|
29
30
|
/* eslint-disable react/jsx-props-no-spreading */
|
30
31
|
var MediasApiContext = /*#__PURE__*/React.createContext(null);
|
@@ -61,7 +62,7 @@ function MediasApiProvider(_ref) {
|
|
61
62
|
MediasApiProvider.propTypes = propTypes$9;
|
62
63
|
MediasApiProvider.defaultProps = defaultProps$9;
|
63
64
|
|
64
|
-
var _excluded$7 = ["items"
|
65
|
+
var _excluded$7 = ["items"];
|
65
66
|
var useMedias = function useMedias() {
|
66
67
|
var query = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : null;
|
67
68
|
var page = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;
|
@@ -72,18 +73,18 @@ var useMedias = function useMedias() {
|
|
72
73
|
var requestedPage = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : null;
|
73
74
|
return api.get(query, requestedPage, count);
|
74
75
|
}, [api, query, count]);
|
75
|
-
var
|
76
|
+
var _useItemsStore = data.useItemsStore('medias', _objectSpread({
|
76
77
|
getPage: page !== null ? getItems : null,
|
77
78
|
getItems: page === null ? getItems : null,
|
78
|
-
page: page
|
79
|
+
page: page,
|
80
|
+
count: count,
|
81
|
+
query: query
|
79
82
|
}, opts)),
|
80
|
-
items =
|
81
|
-
|
82
|
-
request = _objectWithoutProperties(_useItems, _excluded$7);
|
83
|
+
items = _useItemsStore.items,
|
84
|
+
props = _objectWithoutProperties(_useItemsStore, _excluded$7);
|
83
85
|
return _objectSpread({
|
84
|
-
|
85
|
-
|
86
|
-
}, request);
|
86
|
+
items: items
|
87
|
+
}, props);
|
87
88
|
};
|
88
89
|
var useMedias$1 = useMedias;
|
89
90
|
|
@@ -216,22 +217,18 @@ function MediaFrame(_ref) {
|
|
216
217
|
setShowPlayer(!showPlayer);
|
217
218
|
}, [showPlayer, setShowPlayer]);
|
218
219
|
return /*#__PURE__*/React.createElement("div", {
|
219
|
-
className: classNames([
|
220
|
+
className: classNames([styles.mediaFrame, 'position-relative', 'd-flex', 'flex-grow-1', 'w-100', 'mw-100', _defineProperty({}, className, className != null)])
|
220
221
|
}, showPlayer ? /*#__PURE__*/React.createElement(MediaPlayer, {
|
221
222
|
value: value,
|
222
223
|
width: "100%"
|
223
|
-
}) : /*#__PURE__*/React.createElement(
|
224
|
+
}) : /*#__PURE__*/React.createElement(ImageDisplay, {
|
225
|
+
className: "w-100",
|
224
226
|
value: value,
|
225
|
-
|
226
|
-
|
227
|
-
|
228
|
-
|
229
|
-
|
230
|
-
theme: "secondary",
|
231
|
-
onClick: onClick,
|
232
|
-
icon: "play-fill",
|
233
|
-
size: "lg"
|
234
|
-
}) : null)));
|
227
|
+
maxWidth: "100%",
|
228
|
+
maxHeight: "100%",
|
229
|
+
withoutZoom: true,
|
230
|
+
onClick: type === 'video' || type === 'audio' ? onClick : null
|
231
|
+
}));
|
235
232
|
}
|
236
233
|
MediaFrame.propTypes = propTypes$8;
|
237
234
|
MediaFrame.defaultProps = defaultProps$8;
|
@@ -777,10 +774,8 @@ var _excluded$5 = ["page", "count"],
|
|
777
774
|
_excluded2 = ["types"];
|
778
775
|
var propTypes$5 = {
|
779
776
|
items: core.PropTypes.medias,
|
777
|
+
extraItems: core.PropTypes.medias,
|
780
778
|
types: PropTypes.arrayOf(PropTypes.string),
|
781
|
-
// uploadButton: PropTypes.shape({
|
782
|
-
// value: PropTypes.oneOfType([PanneauPropTypes.medias, PanneauPropTypes.media]),
|
783
|
-
// }),
|
784
779
|
buttons: core.PropTypes.buttons,
|
785
780
|
filters: core.PropTypes.filters,
|
786
781
|
columns: core.PropTypes.tableColumns,
|
@@ -791,16 +786,17 @@ var propTypes$5 = {
|
|
791
786
|
layouts: PropTypes.arrayOf(PropTypes.shape({})),
|
792
787
|
theme: PropTypes.string,
|
793
788
|
tableProps: PropTypes.bool,
|
794
|
-
onSelectItem: PropTypes.func,
|
795
|
-
onSelectItems: PropTypes.func,
|
796
789
|
onItemsChange: PropTypes.func,
|
797
790
|
onLayoutChange: PropTypes.func,
|
798
791
|
selectedCount: PropTypes.number,
|
799
792
|
onClearSelected: PropTypes.func,
|
800
|
-
|
793
|
+
withStickySelection: PropTypes.bool,
|
794
|
+
className: PropTypes.string,
|
795
|
+
buttonsClassName: PropTypes.string
|
801
796
|
};
|
802
797
|
var defaultProps$5 = {
|
803
798
|
items: null,
|
799
|
+
extraItems: null,
|
804
800
|
types: null,
|
805
801
|
buttons: null,
|
806
802
|
filters: defaultFilters,
|
@@ -822,16 +818,17 @@ var defaultProps$5 = {
|
|
822
818
|
}],
|
823
819
|
theme: null,
|
824
820
|
tableProps: null,
|
825
|
-
onSelectItem: null,
|
826
|
-
onSelectItems: null,
|
827
821
|
onItemsChange: null,
|
828
822
|
onLayoutChange: null,
|
829
823
|
selectedCount: null,
|
830
824
|
onClearSelected: null,
|
831
|
-
|
825
|
+
withStickySelection: false,
|
826
|
+
className: null,
|
827
|
+
buttonsClassName: null
|
832
828
|
};
|
833
829
|
function MediasBrowser(_ref) {
|
834
830
|
var initialItems = _ref.items,
|
831
|
+
extraItems = _ref.extraItems,
|
835
832
|
types = _ref.types,
|
836
833
|
baseUrl = _ref.baseUrl,
|
837
834
|
buttons = _ref.buttons,
|
@@ -843,13 +840,13 @@ function MediasBrowser(_ref) {
|
|
843
840
|
layouts = _ref.layouts,
|
844
841
|
theme = _ref.theme,
|
845
842
|
tableProps = _ref.tableProps,
|
846
|
-
onSelectItem = _ref.onSelectItem,
|
847
|
-
onSelectItems = _ref.onSelectItems,
|
848
843
|
onItemsChange = _ref.onItemsChange,
|
849
844
|
onLayoutChange = _ref.onLayoutChange,
|
850
845
|
selectedCount = _ref.selectedCount,
|
851
846
|
onClearSelected = _ref.onClearSelected,
|
852
|
-
|
847
|
+
withStickySelection = _ref.withStickySelection,
|
848
|
+
className = _ref.className,
|
849
|
+
buttonsClassName = _ref.buttonsClassName;
|
853
850
|
var _useState = React.useState(initialItems || null),
|
854
851
|
_useState2 = _slicedToArray(_useState, 1),
|
855
852
|
baseItems = _useState2[0];
|
@@ -892,10 +889,16 @@ function MediasBrowser(_ref) {
|
|
892
889
|
var _useMedias = useMedias$1(query, page, count, {
|
893
890
|
items: baseItems
|
894
891
|
}),
|
895
|
-
items = _useMedias.
|
896
|
-
|
897
|
-
|
898
|
-
|
892
|
+
items = _useMedias.items,
|
893
|
+
allItems = _useMedias.allItems,
|
894
|
+
_useMedias$loading = _useMedias.loading,
|
895
|
+
loading = _useMedias$loading === void 0 ? false : _useMedias$loading,
|
896
|
+
_useMedias$updateItem = _useMedias.updateItem,
|
897
|
+
updateItem = _useMedias$updateItem === void 0 ? null : _useMedias$updateItem,
|
898
|
+
_useMedias$pagination = _useMedias.pagination,
|
899
|
+
_useMedias$pagination2 = _useMedias$pagination === void 0 ? {} : _useMedias$pagination,
|
900
|
+
lastPage = _useMedias$pagination2.lastPage,
|
901
|
+
total = _useMedias$pagination2.total;
|
899
902
|
|
900
903
|
// For picker
|
901
904
|
React.useEffect(function () {
|
@@ -927,17 +930,10 @@ function MediasBrowser(_ref) {
|
|
927
930
|
var onCloseMedia = React.useCallback(function () {
|
928
931
|
setCurrentMedia(null);
|
929
932
|
}, [setCurrentMedia]);
|
930
|
-
|
931
|
-
// TODO: context for this?
|
932
|
-
React.useCallback(function () {
|
933
|
-
var media = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : null;
|
934
|
-
onSelectItems(media);
|
935
|
-
onQueryReset();
|
936
|
-
}, [setCurrentMedia, onQueryReset, onSelectItems]);
|
937
|
-
var onSaveMedia = React.useCallback(function () {
|
933
|
+
var onSaveMedia = React.useCallback(function (item) {
|
938
934
|
setCurrentMedia(null);
|
939
|
-
|
940
|
-
}, [setCurrentMedia,
|
935
|
+
updateItem(item);
|
936
|
+
}, [setCurrentMedia, updateItem]);
|
941
937
|
var pagination = /*#__PURE__*/React.createElement(Pagination, {
|
942
938
|
page: page,
|
943
939
|
lastPage: lastPage,
|
@@ -965,13 +961,31 @@ function MediasBrowser(_ref) {
|
|
965
961
|
}
|
966
962
|
return filters;
|
967
963
|
}, [filters, types]);
|
964
|
+
var finalItems = React.useMemo(function () {
|
965
|
+
if (withStickySelection && extraItems !== null) {
|
966
|
+
return uniqBy([].concat(_toConsumableArray((extraItems || []).map(function (item) {
|
967
|
+
var _item$id = item.id,
|
968
|
+
itemId = _item$id === void 0 ? null : _item$id;
|
969
|
+
return (allItems || []).find(function () {
|
970
|
+
var _ref5 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},
|
971
|
+
_ref5$id = _ref5.id,
|
972
|
+
otherId = _ref5$id === void 0 ? null : _ref5$id;
|
973
|
+
return otherId === itemId;
|
974
|
+
}) || item || null;
|
975
|
+
}).filter(function (it) {
|
976
|
+
return it !== null;
|
977
|
+
})), _toConsumableArray(items || [])), function (it) {
|
978
|
+
return it === null || it === void 0 ? void 0 : it.id;
|
979
|
+
});
|
980
|
+
}
|
981
|
+
return items;
|
982
|
+
}, [items, page, allItems, withStickySelection, extraItems]);
|
968
983
|
return /*#__PURE__*/React.createElement("div", {
|
969
984
|
className: classNames([styles.container, className])
|
970
985
|
}, currentMedia !== null ? /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement("div", {
|
971
986
|
className: "mt-2 mb-4"
|
972
987
|
}, /*#__PURE__*/React.createElement(Button, {
|
973
988
|
theme: "primary",
|
974
|
-
outline: true,
|
975
989
|
onClick: onCloseMedia,
|
976
990
|
icon: "arrow-left"
|
977
991
|
}, /*#__PURE__*/React.createElement(reactIntl.FormattedMessage, {
|
@@ -987,7 +1001,6 @@ function MediasBrowser(_ref) {
|
|
987
1001
|
onSave: onSaveMedia,
|
988
1002
|
onClose: onCloseMedia
|
989
1003
|
})) : /*#__PURE__*/React.createElement(React.Fragment, null, filters !== null ? /*#__PURE__*/React.createElement(Filters, {
|
990
|
-
className: "mt-0 pt-0",
|
991
1004
|
value: query,
|
992
1005
|
clearValue: types !== null ? queryWithoutTypes : null,
|
993
1006
|
filters: finalFilters,
|
@@ -996,12 +1009,12 @@ function MediasBrowser(_ref) {
|
|
996
1009
|
theme: theme
|
997
1010
|
}, buttons !== null ? /*#__PURE__*/React.createElement(Buttons, {
|
998
1011
|
items: buttons,
|
999
|
-
className:
|
1012
|
+
className: buttonsClassName
|
1000
1013
|
}) : null) : null, filters === null && buttons !== null ? /*#__PURE__*/React.createElement("div", {
|
1001
1014
|
className: "mt-2 mb-2"
|
1002
1015
|
}, buttons !== null ? /*#__PURE__*/React.createElement(Buttons, {
|
1003
1016
|
items: buttons,
|
1004
|
-
className:
|
1017
|
+
className: buttonsClassName
|
1005
1018
|
}) : null) : null, /*#__PURE__*/React.createElement("div", {
|
1006
1019
|
className: classNames(['d-flex', 'mt-1', 'mb-3', {
|
1007
1020
|
'justify-content-between': hasLayouts,
|
@@ -1028,29 +1041,28 @@ function MediasBrowser(_ref) {
|
|
1028
1041
|
className: 'd-flex w-100',
|
1029
1042
|
cardClassName: 'flex-grow-1',
|
1030
1043
|
vertical: true,
|
1031
|
-
selectable: onSelectItem !== null,
|
1032
1044
|
onClickDescription: function onClickDescription(it) {
|
1033
1045
|
onOpenMedia(it);
|
1034
1046
|
}
|
1035
|
-
}
|
1036
|
-
|
1037
|
-
items: items || [],
|
1038
|
-
loading: loading,
|
1039
|
-
onSelectItem: onSelectItem !== null ? onSelectItem : function (it) {
|
1047
|
+
},
|
1048
|
+
onSelectItem: function onSelectItem(it) {
|
1040
1049
|
return onOpenMedia(it);
|
1041
1050
|
}
|
1051
|
+
}, tableProps, {
|
1052
|
+
items: finalItems || [],
|
1053
|
+
loading: loading
|
1042
1054
|
})) : null, layout === 'table' ? /*#__PURE__*/React.createElement(Table, Object.assign({
|
1043
1055
|
theme: theme,
|
1044
1056
|
columns: columns,
|
1045
1057
|
displayPlaceholder: /*#__PURE__*/React.createElement("span", {
|
1046
1058
|
className: "text-secondary text-opacity-75"
|
1047
|
-
}, "\u2014")
|
1059
|
+
}, "\u2014"),
|
1060
|
+
onSelectItem: function onSelectItem(it) {
|
1061
|
+
return onOpenMedia(it);
|
1062
|
+
}
|
1048
1063
|
}, tableProps, {
|
1049
|
-
items:
|
1064
|
+
items: finalItems,
|
1050
1065
|
loading: loading,
|
1051
|
-
onSelectItem: onSelectItem !== null ? onSelectItem : function (it) {
|
1052
|
-
return onOpenMedia(it);
|
1053
|
-
},
|
1054
1066
|
actionsProps: {
|
1055
1067
|
getEditPropsFromItem: function getEditPropsFromItem(it) {
|
1056
1068
|
return {
|
@@ -1106,24 +1118,25 @@ function MediasPicker(_ref) {
|
|
1106
1118
|
tableProps = _ref.tableProps,
|
1107
1119
|
className = _ref.className,
|
1108
1120
|
props = _objectWithoutProperties(_ref, _excluded$4);
|
1121
|
+
var _useMediasForm = useMediasForm(),
|
1122
|
+
currentMedia = _useMediasForm.media;
|
1123
|
+
|
1124
|
+
// For selection
|
1109
1125
|
var _useState = React.useState(initialItems),
|
1110
1126
|
_useState2 = _slicedToArray(_useState, 2),
|
1111
|
-
|
1127
|
+
pageItems = _useState2[0],
|
1112
1128
|
setItems = _useState2[1];
|
1113
|
-
var
|
1114
|
-
|
1129
|
+
var disabled = pageItems === null || pageItems.length < 1;
|
1130
|
+
var onItemsChange = React.useCallback(function (newPageItems) {
|
1131
|
+
setItems(newPageItems);
|
1115
1132
|
}, [setItems]);
|
1116
|
-
var disabled = initialItems === null || initialItems.length < 1;
|
1117
|
-
var _useMediasForm = useMediasForm(),
|
1118
|
-
currentMedia = _useMediasForm.media;
|
1119
1133
|
var _useItemSelection = hooks.useItemSelection({
|
1120
|
-
items:
|
1134
|
+
items: pageItems,
|
1121
1135
|
selectedItems: initialSelectedItems,
|
1122
1136
|
onSelectionChange: onChange,
|
1123
1137
|
multipleSelection: multiple
|
1124
1138
|
}),
|
1125
1139
|
onSelectItem = _useItemSelection.onSelectItem,
|
1126
|
-
onSelectItems = _useItemSelection.onSelectItems,
|
1127
1140
|
onSelectPage = _useItemSelection.onSelectPage,
|
1128
1141
|
onClearSelected = _useItemSelection.onClearSelected,
|
1129
1142
|
pageSelected = _useItemSelection.pageSelected,
|
@@ -1134,36 +1147,24 @@ function MediasPicker(_ref) {
|
|
1134
1147
|
onConfirm(selectedItems);
|
1135
1148
|
}
|
1136
1149
|
}, [selectedItems, onConfirm]);
|
1137
|
-
|
1138
|
-
// const finalUploadButton = useMemo(
|
1139
|
-
// () => ({
|
1140
|
-
// ...(uploadButton || null),
|
1141
|
-
// ...(types !== null ? { types } : null),
|
1142
|
-
// allowMultipleUploads: multiple,
|
1143
|
-
// maxNumberOfFiles: multiple ? 10 : 0,
|
1144
|
-
// value: selectedItems,
|
1145
|
-
// }),
|
1146
|
-
// [uploadButton, selectedItems, multiple],
|
1147
|
-
// );
|
1148
|
-
|
1149
1150
|
return /*#__PURE__*/React.createElement("div", {
|
1150
1151
|
className: className
|
1151
1152
|
}, /*#__PURE__*/React.createElement(MediasBrowser, Object.assign({
|
1152
1153
|
tableProps: _objectSpread({
|
1153
|
-
selectable:
|
1154
|
+
selectable: true,
|
1154
1155
|
multipleSelection: multiple,
|
1155
1156
|
onSelectItem: onSelectItem,
|
1156
1157
|
onSelectPage: onSelectPage,
|
1157
1158
|
selectedItems: selectedItems,
|
1158
1159
|
pageSelected: pageSelected
|
1159
1160
|
}, tableProps),
|
1160
|
-
items:
|
1161
|
-
|
1162
|
-
onSelectItems: onSelectItems,
|
1161
|
+
items: initialItems // TODO: fix useItems if actually using this
|
1162
|
+
,
|
1163
1163
|
onItemsChange: onItemsChange,
|
1164
1164
|
selectedCount: selectedCount,
|
1165
1165
|
onClearSelected: onClearSelected,
|
1166
|
-
types: types
|
1166
|
+
types: types,
|
1167
|
+
extraItems: !multiple && initialSelectedItems !== null ? [initialSelectedItems] : initialSelectedItems
|
1167
1168
|
}, props)), multiple && !withoutButtons && currentMedia === null ? /*#__PURE__*/React.createElement("div", {
|
1168
1169
|
className: "d-flex w-100 align-items-end justify-content-end mt-3"
|
1169
1170
|
}, /*#__PURE__*/React.createElement("div", {
|
package/package.json
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
{
|
2
2
|
"name": "@panneau/medias",
|
3
|
-
"version": "3.0.
|
3
|
+
"version": "3.0.173",
|
4
4
|
"description": "",
|
5
5
|
"keywords": [
|
6
6
|
"javascript"
|
@@ -47,16 +47,16 @@
|
|
47
47
|
"dependencies": {
|
48
48
|
"@babel/runtime": "^7.12.5",
|
49
49
|
"@panneau/core": "^3.0.169",
|
50
|
-
"@panneau/data": "^3.0.
|
50
|
+
"@panneau/data": "^3.0.173",
|
51
|
+
"@panneau/display-image": "^3.0.172",
|
51
52
|
"@panneau/element-button": "^3.0.169",
|
52
53
|
"@panneau/element-buttons": "^3.0.169",
|
53
54
|
"@panneau/element-form": "^3.0.169",
|
54
55
|
"@panneau/element-form-status": "^3.0.169",
|
55
|
-
"@panneau/element-grid": "^3.0.
|
56
|
+
"@panneau/element-grid": "^3.0.172",
|
56
57
|
"@panneau/element-icon": "^3.0.169",
|
57
|
-
"@panneau/element-media-card": "^3.0.
|
58
|
-
"@panneau/element-media-player": "^3.0.
|
59
|
-
"@panneau/element-media-preview": "^3.0.169",
|
58
|
+
"@panneau/element-media-card": "^3.0.172",
|
59
|
+
"@panneau/element-media-player": "^3.0.172",
|
60
60
|
"@panneau/element-pagination": "^3.0.169",
|
61
61
|
"@panneau/element-table": "^3.0.170",
|
62
62
|
"@panneau/filter-filters": "^3.0.171",
|
@@ -68,5 +68,5 @@
|
|
68
68
|
"publishConfig": {
|
69
69
|
"access": "public"
|
70
70
|
},
|
71
|
-
"gitHead": "
|
71
|
+
"gitHead": "29037e4f0ed74d81586442a76daffcfb6d062200"
|
72
72
|
}
|