@panneau/medias 3.0.170 → 3.0.172
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 +70 -92
- package/lib/index.js +70 -92
- package/package.json +7 -8
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';
|
@@ -20,10 +22,8 @@ import Icon from '@panneau/element-icon';
|
|
20
22
|
import MediaCard from '@panneau/element-media-card';
|
21
23
|
import Pagination from '@panneau/element-pagination';
|
22
24
|
import Table from '@panneau/element-table';
|
23
|
-
import UploadField from '@panneau/field-upload';
|
24
25
|
import Filters from '@panneau/filter-filters';
|
25
26
|
import { useItems, useData, useApi } from '@panneau/data';
|
26
|
-
import _toConsumableArray from '@babel/runtime/helpers/toConsumableArray';
|
27
27
|
|
28
28
|
/* eslint-disable react/jsx-props-no-spreading */
|
29
29
|
var MediasApiContext = /*#__PURE__*/React.createContext(null);
|
@@ -215,22 +215,18 @@ function MediaFrame(_ref) {
|
|
215
215
|
setShowPlayer(!showPlayer);
|
216
216
|
}, [showPlayer, setShowPlayer]);
|
217
217
|
return /*#__PURE__*/React.createElement("div", {
|
218
|
-
className: classNames([
|
218
|
+
className: classNames([styles.mediaFrame, 'position-relative', 'd-flex', 'flex-grow-1', 'w-100', 'mw-100', _defineProperty({}, className, className != null)])
|
219
219
|
}, showPlayer ? /*#__PURE__*/React.createElement(MediaPlayer, {
|
220
220
|
value: value,
|
221
221
|
width: "100%"
|
222
|
-
}) : /*#__PURE__*/React.createElement(
|
222
|
+
}) : /*#__PURE__*/React.createElement(ImageDisplay, {
|
223
|
+
className: "w-100",
|
223
224
|
value: value,
|
224
|
-
|
225
|
-
|
226
|
-
|
227
|
-
|
228
|
-
|
229
|
-
theme: "secondary",
|
230
|
-
onClick: onClick,
|
231
|
-
icon: "play-fill",
|
232
|
-
size: "lg"
|
233
|
-
}) : null)));
|
225
|
+
maxWidth: "100%",
|
226
|
+
maxHeight: "100%",
|
227
|
+
withoutZoom: true,
|
228
|
+
onClick: type === 'video' || type === 'audio' ? onClick : null
|
229
|
+
}));
|
234
230
|
}
|
235
231
|
MediaFrame.propTypes = propTypes$8;
|
236
232
|
MediaFrame.defaultProps = defaultProps$8;
|
@@ -268,6 +264,7 @@ var defaultFields = [{
|
|
268
264
|
}]
|
269
265
|
}),
|
270
266
|
isList: true,
|
267
|
+
hideWithoutValue: true,
|
271
268
|
fields: [{
|
272
269
|
id: 'user',
|
273
270
|
label: /*#__PURE__*/React.createElement(FormattedMessage, {
|
@@ -309,6 +306,7 @@ var defaultFields = [{
|
|
309
306
|
}]
|
310
307
|
}),
|
311
308
|
isList: true,
|
309
|
+
hideWithoutValue: true,
|
312
310
|
fields: [{
|
313
311
|
id: 'format',
|
314
312
|
label: /*#__PURE__*/React.createElement(FormattedMessage, {
|
@@ -696,6 +694,10 @@ var defaultColumns = [{
|
|
696
694
|
];
|
697
695
|
|
698
696
|
var defaultFilters = [{
|
697
|
+
id: 'search',
|
698
|
+
component: 'search',
|
699
|
+
name: 'search'
|
700
|
+
}, {
|
699
701
|
id: 'types',
|
700
702
|
component: 'select',
|
701
703
|
name: 'types',
|
@@ -744,7 +746,8 @@ var defaultFilters = [{
|
|
744
746
|
value: 'document'
|
745
747
|
}],
|
746
748
|
multiple: true
|
747
|
-
}
|
749
|
+
}
|
750
|
+
|
748
751
|
// {
|
749
752
|
// id: 'author',
|
750
753
|
// component: 'select',
|
@@ -763,20 +766,14 @@ var defaultFilters = [{
|
|
763
766
|
// itemLabelPath: 'label',
|
764
767
|
// multiple: true,
|
765
768
|
// },
|
766
|
-
|
767
|
-
id: 'search',
|
768
|
-
component: 'search',
|
769
|
-
name: 'search'
|
770
|
-
}];
|
769
|
+
];
|
771
770
|
|
772
771
|
var _excluded$5 = ["page", "count"],
|
773
772
|
_excluded2 = ["types"];
|
774
773
|
var propTypes$5 = {
|
775
774
|
items: PropTypes$1.medias,
|
775
|
+
extraItems: PropTypes$1.medias,
|
776
776
|
types: PropTypes.arrayOf(PropTypes.string),
|
777
|
-
uploadButton: PropTypes.shape({
|
778
|
-
value: PropTypes.oneOfType([PropTypes$1.medias, PropTypes$1.media])
|
779
|
-
}),
|
780
777
|
buttons: PropTypes$1.buttons,
|
781
778
|
filters: PropTypes$1.filters,
|
782
779
|
columns: PropTypes$1.tableColumns,
|
@@ -787,18 +784,17 @@ var propTypes$5 = {
|
|
787
784
|
layouts: PropTypes.arrayOf(PropTypes.shape({})),
|
788
785
|
theme: PropTypes.string,
|
789
786
|
tableProps: PropTypes.bool,
|
790
|
-
onSelectItem: PropTypes.func,
|
791
|
-
onSelectItems: PropTypes.func,
|
792
787
|
onItemsChange: PropTypes.func,
|
793
788
|
onLayoutChange: PropTypes.func,
|
794
789
|
selectedCount: PropTypes.number,
|
795
790
|
onClearSelected: PropTypes.func,
|
796
|
-
className: PropTypes.string
|
791
|
+
className: PropTypes.string,
|
792
|
+
buttonsClassName: PropTypes.string
|
797
793
|
};
|
798
794
|
var defaultProps$5 = {
|
799
795
|
items: null,
|
796
|
+
extraItems: null,
|
800
797
|
types: null,
|
801
|
-
uploadButton: null,
|
802
798
|
buttons: null,
|
803
799
|
filters: defaultFilters,
|
804
800
|
columns: defaultColumns,
|
@@ -819,19 +815,18 @@ var defaultProps$5 = {
|
|
819
815
|
}],
|
820
816
|
theme: null,
|
821
817
|
tableProps: null,
|
822
|
-
onSelectItem: null,
|
823
|
-
onSelectItems: null,
|
824
818
|
onItemsChange: null,
|
825
819
|
onLayoutChange: null,
|
826
820
|
selectedCount: null,
|
827
821
|
onClearSelected: null,
|
828
|
-
className: null
|
822
|
+
className: null,
|
823
|
+
buttonsClassName: null
|
829
824
|
};
|
830
825
|
function MediasBrowser(_ref) {
|
831
826
|
var initialItems = _ref.items,
|
827
|
+
extraItems = _ref.extraItems,
|
832
828
|
types = _ref.types,
|
833
829
|
baseUrl = _ref.baseUrl,
|
834
|
-
uploadButton = _ref.uploadButton,
|
835
830
|
buttons = _ref.buttons,
|
836
831
|
filters = _ref.filters,
|
837
832
|
columns = _ref.columns,
|
@@ -841,13 +836,12 @@ function MediasBrowser(_ref) {
|
|
841
836
|
layouts = _ref.layouts,
|
842
837
|
theme = _ref.theme,
|
843
838
|
tableProps = _ref.tableProps,
|
844
|
-
onSelectItem = _ref.onSelectItem,
|
845
|
-
onSelectItems = _ref.onSelectItems,
|
846
839
|
onItemsChange = _ref.onItemsChange,
|
847
840
|
onLayoutChange = _ref.onLayoutChange,
|
848
841
|
selectedCount = _ref.selectedCount,
|
849
842
|
onClearSelected = _ref.onClearSelected,
|
850
|
-
className = _ref.className
|
843
|
+
className = _ref.className,
|
844
|
+
buttonsClassName = _ref.buttonsClassName;
|
851
845
|
var _useState = useState(initialItems || null),
|
852
846
|
_useState2 = _slicedToArray(_useState, 1),
|
853
847
|
baseItems = _useState2[0];
|
@@ -901,7 +895,7 @@ function MediasBrowser(_ref) {
|
|
901
895
|
onItemsChange(items);
|
902
896
|
}
|
903
897
|
}, [items, onItemsChange]);
|
904
|
-
var _useState3 = useState(initialLayout || '
|
898
|
+
var _useState3 = useState(initialLayout || 'table'),
|
905
899
|
_useState4 = _slicedToArray(_useState3, 2),
|
906
900
|
layout = _useState4[0],
|
907
901
|
setLayout = _useState4[1];
|
@@ -925,11 +919,6 @@ function MediasBrowser(_ref) {
|
|
925
919
|
var onCloseMedia = useCallback(function () {
|
926
920
|
setCurrentMedia(null);
|
927
921
|
}, [setCurrentMedia]);
|
928
|
-
var onChangeMedia = useCallback(function () {
|
929
|
-
var media = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : null;
|
930
|
-
onSelectItems(media);
|
931
|
-
onQueryReset();
|
932
|
-
}, [setCurrentMedia, onQueryReset, onSelectItems]);
|
933
922
|
var onSaveMedia = useCallback(function () {
|
934
923
|
setCurrentMedia(null);
|
935
924
|
onQueryReset();
|
@@ -961,13 +950,20 @@ function MediasBrowser(_ref) {
|
|
961
950
|
}
|
962
951
|
return filters;
|
963
952
|
}, [filters, types]);
|
953
|
+
var finalItems = useMemo(function () {
|
954
|
+
if (page === 1 && extraItems !== null) {
|
955
|
+
return uniqBy([].concat(_toConsumableArray(extraItems), _toConsumableArray(items || [])), function (it) {
|
956
|
+
return it === null || it === void 0 ? void 0 : it.id;
|
957
|
+
});
|
958
|
+
}
|
959
|
+
return items;
|
960
|
+
}, [items, page, extraItems]);
|
964
961
|
return /*#__PURE__*/React.createElement("div", {
|
965
962
|
className: classNames([styles.container, className])
|
966
963
|
}, currentMedia !== null ? /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement("div", {
|
967
964
|
className: "mt-2 mb-4"
|
968
965
|
}, /*#__PURE__*/React.createElement(Button, {
|
969
966
|
theme: "primary",
|
970
|
-
outline: true,
|
971
967
|
onClick: onCloseMedia,
|
972
968
|
icon: "arrow-left"
|
973
969
|
}, /*#__PURE__*/React.createElement(FormattedMessage, {
|
@@ -982,29 +978,22 @@ function MediasBrowser(_ref) {
|
|
982
978
|
onChange: setCurrentMedia,
|
983
979
|
onSave: onSaveMedia,
|
984
980
|
onClose: onCloseMedia
|
985
|
-
})) : /*#__PURE__*/React.createElement(React.Fragment, null,
|
986
|
-
items: buttons,
|
987
|
-
className: "mb-2"
|
988
|
-
}) : null, filters !== null ? /*#__PURE__*/React.createElement(Filters, {
|
989
|
-
className: "mt-0 pt-0",
|
981
|
+
})) : /*#__PURE__*/React.createElement(React.Fragment, null, filters !== null ? /*#__PURE__*/React.createElement(Filters, {
|
990
982
|
value: query,
|
991
983
|
clearValue: types !== null ? queryWithoutTypes : null,
|
992
984
|
filters: finalFilters,
|
993
985
|
onChange: onQueryChange,
|
994
986
|
onReset: onQueryReset,
|
995
987
|
theme: theme
|
996
|
-
},
|
997
|
-
|
998
|
-
|
999
|
-
|
1000
|
-
withoutMedia: true
|
1001
|
-
}, uploadButton)) : null) : null, filters === null && uploadButton !== null ? /*#__PURE__*/React.createElement("div", {
|
988
|
+
}, buttons !== null ? /*#__PURE__*/React.createElement(Buttons, {
|
989
|
+
items: buttons,
|
990
|
+
className: buttonsClassName
|
991
|
+
}) : null) : null, filters === null && buttons !== null ? /*#__PURE__*/React.createElement("div", {
|
1002
992
|
className: "mt-2 mb-2"
|
1003
|
-
}, /*#__PURE__*/React.createElement(
|
1004
|
-
|
1005
|
-
|
1006
|
-
|
1007
|
-
}, uploadButton))) : null, /*#__PURE__*/React.createElement("div", {
|
993
|
+
}, buttons !== null ? /*#__PURE__*/React.createElement(Buttons, {
|
994
|
+
items: buttons,
|
995
|
+
className: buttonsClassName
|
996
|
+
}) : null) : null, /*#__PURE__*/React.createElement("div", {
|
1008
997
|
className: classNames(['d-flex', 'mt-1', 'mb-3', {
|
1009
998
|
'justify-content-between': hasLayouts,
|
1010
999
|
'justify-content-end': !hasLayouts
|
@@ -1029,26 +1018,29 @@ function MediasBrowser(_ref) {
|
|
1029
1018
|
componentProps: {
|
1030
1019
|
className: 'd-flex w-100',
|
1031
1020
|
cardClassName: 'flex-grow-1',
|
1032
|
-
vertical: true
|
1033
|
-
|
1034
|
-
|
1035
|
-
|
1036
|
-
|
1037
|
-
onSelectItem:
|
1021
|
+
vertical: true,
|
1022
|
+
onClickDescription: function onClickDescription(it) {
|
1023
|
+
onOpenMedia(it);
|
1024
|
+
}
|
1025
|
+
},
|
1026
|
+
onSelectItem: function onSelectItem(it) {
|
1038
1027
|
return onOpenMedia(it);
|
1039
1028
|
}
|
1029
|
+
}, tableProps, {
|
1030
|
+
items: finalItems || [],
|
1031
|
+
loading: loading
|
1040
1032
|
})) : null, layout === 'table' ? /*#__PURE__*/React.createElement(Table, Object.assign({
|
1041
1033
|
theme: theme,
|
1042
1034
|
columns: columns,
|
1043
1035
|
displayPlaceholder: /*#__PURE__*/React.createElement("span", {
|
1044
1036
|
className: "text-secondary text-opacity-75"
|
1045
|
-
}, "\u2014")
|
1037
|
+
}, "\u2014"),
|
1038
|
+
onSelectItem: function onSelectItem(it) {
|
1039
|
+
return onOpenMedia(it);
|
1040
|
+
}
|
1046
1041
|
}, tableProps, {
|
1047
|
-
items:
|
1042
|
+
items: finalItems,
|
1048
1043
|
loading: loading,
|
1049
|
-
onSelectItem: onSelectItem !== null ? onSelectItem : function (it) {
|
1050
|
-
return onOpenMedia(it);
|
1051
|
-
},
|
1052
1044
|
actionsProps: {
|
1053
1045
|
getEditPropsFromItem: function getEditPropsFromItem(it) {
|
1054
1046
|
return {
|
@@ -1066,13 +1058,12 @@ function MediasBrowser(_ref) {
|
|
1066
1058
|
MediasBrowser.propTypes = propTypes$5;
|
1067
1059
|
MediasBrowser.defaultProps = defaultProps$5;
|
1068
1060
|
|
1069
|
-
var _excluded$4 = ["items", "value", "types", "
|
1061
|
+
var _excluded$4 = ["items", "value", "types", "onChange", "onConfirm", "onClose", "multiple", "withoutButtons", "tableProps", "className"];
|
1070
1062
|
var propTypes$4 = {
|
1071
1063
|
// eslint-disable-next-line react/forbid-prop-types
|
1072
1064
|
items: PropTypes.arrayOf(PropTypes.shape({})),
|
1073
1065
|
value: PropTypes.arrayOf(PropTypes.shape({})),
|
1074
1066
|
types: PropTypes.arrayOf(PropTypes.string),
|
1075
|
-
uploadButton: PropTypes.shape({}),
|
1076
1067
|
onChange: PropTypes.func.isRequired,
|
1077
1068
|
onConfirm: PropTypes.func.isRequired,
|
1078
1069
|
onClose: PropTypes.func,
|
@@ -1087,7 +1078,6 @@ var defaultProps$4 = {
|
|
1087
1078
|
items: null,
|
1088
1079
|
value: null,
|
1089
1080
|
types: null,
|
1090
|
-
uploadButton: null,
|
1091
1081
|
onClose: null,
|
1092
1082
|
multiple: false,
|
1093
1083
|
withoutButtons: false,
|
@@ -1098,7 +1088,6 @@ function MediasPicker(_ref) {
|
|
1098
1088
|
var initialItems = _ref.items,
|
1099
1089
|
initialSelectedItems = _ref.value,
|
1100
1090
|
types = _ref.types,
|
1101
|
-
uploadButton = _ref.uploadButton,
|
1102
1091
|
onChange = _ref.onChange,
|
1103
1092
|
onConfirm = _ref.onConfirm,
|
1104
1093
|
onClose = _ref.onClose,
|
@@ -1107,61 +1096,50 @@ function MediasPicker(_ref) {
|
|
1107
1096
|
tableProps = _ref.tableProps,
|
1108
1097
|
className = _ref.className,
|
1109
1098
|
props = _objectWithoutProperties(_ref, _excluded$4);
|
1099
|
+
// For selection only
|
1110
1100
|
var _useState = useState(initialItems),
|
1111
1101
|
_useState2 = _slicedToArray(_useState, 2),
|
1112
|
-
|
1102
|
+
currentItems = _useState2[0],
|
1113
1103
|
setItems = _useState2[1];
|
1114
1104
|
var onItemsChange = useCallback(function (pageItems) {
|
1115
1105
|
setItems(pageItems);
|
1116
1106
|
}, [setItems]);
|
1117
|
-
var disabled = initialItems === null || initialItems.length < 1;
|
1118
1107
|
var _useMediasForm = useMediasForm(),
|
1119
1108
|
currentMedia = _useMediasForm.media;
|
1120
1109
|
var _useItemSelection = useItemSelection({
|
1121
|
-
|
1110
|
+
currentItems: currentItems,
|
1122
1111
|
selectedItems: initialSelectedItems,
|
1123
1112
|
onSelectionChange: onChange,
|
1124
1113
|
multipleSelection: multiple
|
1125
1114
|
}),
|
1126
1115
|
onSelectItem = _useItemSelection.onSelectItem,
|
1127
|
-
onSelectItems = _useItemSelection.onSelectItems,
|
1128
1116
|
onSelectPage = _useItemSelection.onSelectPage,
|
1129
1117
|
onClearSelected = _useItemSelection.onClearSelected,
|
1130
1118
|
pageSelected = _useItemSelection.pageSelected,
|
1131
1119
|
selectedCount = _useItemSelection.selectedCount,
|
1132
1120
|
selectedItems = _useItemSelection.selectedItems;
|
1121
|
+
var disabled = currentItems === null || currentItems.length < 1;
|
1133
1122
|
var onConfirmSelection = useCallback(function () {
|
1134
1123
|
if (onConfirm !== null) {
|
1135
1124
|
onConfirm(selectedItems);
|
1136
1125
|
}
|
1137
1126
|
}, [selectedItems, onConfirm]);
|
1138
|
-
var finalUploadButton = useMemo(function () {
|
1139
|
-
return _objectSpread(_objectSpread(_objectSpread({}, uploadButton || null), types !== null ? {
|
1140
|
-
types: types
|
1141
|
-
} : null), {}, {
|
1142
|
-
allowMultipleUploads: multiple,
|
1143
|
-
maxNumberOfFiles: multiple ? 10 : 0,
|
1144
|
-
value: selectedItems
|
1145
|
-
});
|
1146
|
-
}, [uploadButton, selectedItems, multiple]);
|
1147
1127
|
return /*#__PURE__*/React.createElement("div", {
|
1148
1128
|
className: className
|
1149
1129
|
}, /*#__PURE__*/React.createElement(MediasBrowser, Object.assign({
|
1150
1130
|
tableProps: _objectSpread({
|
1151
|
-
selectable:
|
1131
|
+
selectable: true,
|
1152
1132
|
multipleSelection: multiple,
|
1153
1133
|
onSelectItem: onSelectItem,
|
1154
1134
|
onSelectPage: onSelectPage,
|
1155
1135
|
selectedItems: selectedItems,
|
1156
1136
|
pageSelected: pageSelected
|
1157
|
-
}, tableProps)
|
1158
|
-
items:
|
1159
|
-
|
1160
|
-
onSelectItems: onSelectItems,
|
1137
|
+
}, tableProps)
|
1138
|
+
// items={initialItems} // TODO: fix useItems if using this
|
1139
|
+
,
|
1161
1140
|
onItemsChange: onItemsChange,
|
1162
1141
|
selectedCount: selectedCount,
|
1163
1142
|
onClearSelected: onClearSelected,
|
1164
|
-
uploadButton: finalUploadButton,
|
1165
1143
|
types: types
|
1166
1144
|
}, props)), multiple && !withoutButtons && currentMedia === null ? /*#__PURE__*/React.createElement("div", {
|
1167
1145
|
className: "d-flex w-100 align-items-end justify-content-end mt-3"
|
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');
|
@@ -22,10 +24,8 @@ var Icon = require('@panneau/element-icon');
|
|
22
24
|
var MediaCard = require('@panneau/element-media-card');
|
23
25
|
var Pagination = require('@panneau/element-pagination');
|
24
26
|
var Table = require('@panneau/element-table');
|
25
|
-
var UploadField = require('@panneau/field-upload');
|
26
27
|
var Filters = require('@panneau/filter-filters');
|
27
28
|
var data = require('@panneau/data');
|
28
|
-
var _toConsumableArray = require('@babel/runtime/helpers/toConsumableArray');
|
29
29
|
|
30
30
|
/* eslint-disable react/jsx-props-no-spreading */
|
31
31
|
var MediasApiContext = /*#__PURE__*/React.createContext(null);
|
@@ -217,22 +217,18 @@ function MediaFrame(_ref) {
|
|
217
217
|
setShowPlayer(!showPlayer);
|
218
218
|
}, [showPlayer, setShowPlayer]);
|
219
219
|
return /*#__PURE__*/React.createElement("div", {
|
220
|
-
className: classNames([
|
220
|
+
className: classNames([styles.mediaFrame, 'position-relative', 'd-flex', 'flex-grow-1', 'w-100', 'mw-100', _defineProperty({}, className, className != null)])
|
221
221
|
}, showPlayer ? /*#__PURE__*/React.createElement(MediaPlayer, {
|
222
222
|
value: value,
|
223
223
|
width: "100%"
|
224
|
-
}) : /*#__PURE__*/React.createElement(
|
224
|
+
}) : /*#__PURE__*/React.createElement(ImageDisplay, {
|
225
|
+
className: "w-100",
|
225
226
|
value: value,
|
226
|
-
|
227
|
-
|
228
|
-
|
229
|
-
|
230
|
-
|
231
|
-
theme: "secondary",
|
232
|
-
onClick: onClick,
|
233
|
-
icon: "play-fill",
|
234
|
-
size: "lg"
|
235
|
-
}) : null)));
|
227
|
+
maxWidth: "100%",
|
228
|
+
maxHeight: "100%",
|
229
|
+
withoutZoom: true,
|
230
|
+
onClick: type === 'video' || type === 'audio' ? onClick : null
|
231
|
+
}));
|
236
232
|
}
|
237
233
|
MediaFrame.propTypes = propTypes$8;
|
238
234
|
MediaFrame.defaultProps = defaultProps$8;
|
@@ -270,6 +266,7 @@ var defaultFields = [{
|
|
270
266
|
}]
|
271
267
|
}),
|
272
268
|
isList: true,
|
269
|
+
hideWithoutValue: true,
|
273
270
|
fields: [{
|
274
271
|
id: 'user',
|
275
272
|
label: /*#__PURE__*/React.createElement(reactIntl.FormattedMessage, {
|
@@ -311,6 +308,7 @@ var defaultFields = [{
|
|
311
308
|
}]
|
312
309
|
}),
|
313
310
|
isList: true,
|
311
|
+
hideWithoutValue: true,
|
314
312
|
fields: [{
|
315
313
|
id: 'format',
|
316
314
|
label: /*#__PURE__*/React.createElement(reactIntl.FormattedMessage, {
|
@@ -698,6 +696,10 @@ var defaultColumns = [{
|
|
698
696
|
];
|
699
697
|
|
700
698
|
var defaultFilters = [{
|
699
|
+
id: 'search',
|
700
|
+
component: 'search',
|
701
|
+
name: 'search'
|
702
|
+
}, {
|
701
703
|
id: 'types',
|
702
704
|
component: 'select',
|
703
705
|
name: 'types',
|
@@ -746,7 +748,8 @@ var defaultFilters = [{
|
|
746
748
|
value: 'document'
|
747
749
|
}],
|
748
750
|
multiple: true
|
749
|
-
}
|
751
|
+
}
|
752
|
+
|
750
753
|
// {
|
751
754
|
// id: 'author',
|
752
755
|
// component: 'select',
|
@@ -765,20 +768,14 @@ var defaultFilters = [{
|
|
765
768
|
// itemLabelPath: 'label',
|
766
769
|
// multiple: true,
|
767
770
|
// },
|
768
|
-
|
769
|
-
id: 'search',
|
770
|
-
component: 'search',
|
771
|
-
name: 'search'
|
772
|
-
}];
|
771
|
+
];
|
773
772
|
|
774
773
|
var _excluded$5 = ["page", "count"],
|
775
774
|
_excluded2 = ["types"];
|
776
775
|
var propTypes$5 = {
|
777
776
|
items: core.PropTypes.medias,
|
777
|
+
extraItems: core.PropTypes.medias,
|
778
778
|
types: PropTypes.arrayOf(PropTypes.string),
|
779
|
-
uploadButton: PropTypes.shape({
|
780
|
-
value: PropTypes.oneOfType([core.PropTypes.medias, core.PropTypes.media])
|
781
|
-
}),
|
782
779
|
buttons: core.PropTypes.buttons,
|
783
780
|
filters: core.PropTypes.filters,
|
784
781
|
columns: core.PropTypes.tableColumns,
|
@@ -789,18 +786,17 @@ var propTypes$5 = {
|
|
789
786
|
layouts: PropTypes.arrayOf(PropTypes.shape({})),
|
790
787
|
theme: PropTypes.string,
|
791
788
|
tableProps: PropTypes.bool,
|
792
|
-
onSelectItem: PropTypes.func,
|
793
|
-
onSelectItems: PropTypes.func,
|
794
789
|
onItemsChange: PropTypes.func,
|
795
790
|
onLayoutChange: PropTypes.func,
|
796
791
|
selectedCount: PropTypes.number,
|
797
792
|
onClearSelected: PropTypes.func,
|
798
|
-
className: PropTypes.string
|
793
|
+
className: PropTypes.string,
|
794
|
+
buttonsClassName: PropTypes.string
|
799
795
|
};
|
800
796
|
var defaultProps$5 = {
|
801
797
|
items: null,
|
798
|
+
extraItems: null,
|
802
799
|
types: null,
|
803
|
-
uploadButton: null,
|
804
800
|
buttons: null,
|
805
801
|
filters: defaultFilters,
|
806
802
|
columns: defaultColumns,
|
@@ -821,19 +817,18 @@ var defaultProps$5 = {
|
|
821
817
|
}],
|
822
818
|
theme: null,
|
823
819
|
tableProps: null,
|
824
|
-
onSelectItem: null,
|
825
|
-
onSelectItems: null,
|
826
820
|
onItemsChange: null,
|
827
821
|
onLayoutChange: null,
|
828
822
|
selectedCount: null,
|
829
823
|
onClearSelected: null,
|
830
|
-
className: null
|
824
|
+
className: null,
|
825
|
+
buttonsClassName: null
|
831
826
|
};
|
832
827
|
function MediasBrowser(_ref) {
|
833
828
|
var initialItems = _ref.items,
|
829
|
+
extraItems = _ref.extraItems,
|
834
830
|
types = _ref.types,
|
835
831
|
baseUrl = _ref.baseUrl,
|
836
|
-
uploadButton = _ref.uploadButton,
|
837
832
|
buttons = _ref.buttons,
|
838
833
|
filters = _ref.filters,
|
839
834
|
columns = _ref.columns,
|
@@ -843,13 +838,12 @@ function MediasBrowser(_ref) {
|
|
843
838
|
layouts = _ref.layouts,
|
844
839
|
theme = _ref.theme,
|
845
840
|
tableProps = _ref.tableProps,
|
846
|
-
onSelectItem = _ref.onSelectItem,
|
847
|
-
onSelectItems = _ref.onSelectItems,
|
848
841
|
onItemsChange = _ref.onItemsChange,
|
849
842
|
onLayoutChange = _ref.onLayoutChange,
|
850
843
|
selectedCount = _ref.selectedCount,
|
851
844
|
onClearSelected = _ref.onClearSelected,
|
852
|
-
className = _ref.className
|
845
|
+
className = _ref.className,
|
846
|
+
buttonsClassName = _ref.buttonsClassName;
|
853
847
|
var _useState = React.useState(initialItems || null),
|
854
848
|
_useState2 = _slicedToArray(_useState, 1),
|
855
849
|
baseItems = _useState2[0];
|
@@ -903,7 +897,7 @@ function MediasBrowser(_ref) {
|
|
903
897
|
onItemsChange(items);
|
904
898
|
}
|
905
899
|
}, [items, onItemsChange]);
|
906
|
-
var _useState3 = React.useState(initialLayout || '
|
900
|
+
var _useState3 = React.useState(initialLayout || 'table'),
|
907
901
|
_useState4 = _slicedToArray(_useState3, 2),
|
908
902
|
layout = _useState4[0],
|
909
903
|
setLayout = _useState4[1];
|
@@ -927,11 +921,6 @@ function MediasBrowser(_ref) {
|
|
927
921
|
var onCloseMedia = React.useCallback(function () {
|
928
922
|
setCurrentMedia(null);
|
929
923
|
}, [setCurrentMedia]);
|
930
|
-
var onChangeMedia = React.useCallback(function () {
|
931
|
-
var media = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : null;
|
932
|
-
onSelectItems(media);
|
933
|
-
onQueryReset();
|
934
|
-
}, [setCurrentMedia, onQueryReset, onSelectItems]);
|
935
924
|
var onSaveMedia = React.useCallback(function () {
|
936
925
|
setCurrentMedia(null);
|
937
926
|
onQueryReset();
|
@@ -963,13 +952,20 @@ function MediasBrowser(_ref) {
|
|
963
952
|
}
|
964
953
|
return filters;
|
965
954
|
}, [filters, types]);
|
955
|
+
var finalItems = React.useMemo(function () {
|
956
|
+
if (page === 1 && extraItems !== null) {
|
957
|
+
return uniqBy([].concat(_toConsumableArray(extraItems), _toConsumableArray(items || [])), function (it) {
|
958
|
+
return it === null || it === void 0 ? void 0 : it.id;
|
959
|
+
});
|
960
|
+
}
|
961
|
+
return items;
|
962
|
+
}, [items, page, extraItems]);
|
966
963
|
return /*#__PURE__*/React.createElement("div", {
|
967
964
|
className: classNames([styles.container, className])
|
968
965
|
}, currentMedia !== null ? /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement("div", {
|
969
966
|
className: "mt-2 mb-4"
|
970
967
|
}, /*#__PURE__*/React.createElement(Button, {
|
971
968
|
theme: "primary",
|
972
|
-
outline: true,
|
973
969
|
onClick: onCloseMedia,
|
974
970
|
icon: "arrow-left"
|
975
971
|
}, /*#__PURE__*/React.createElement(reactIntl.FormattedMessage, {
|
@@ -984,29 +980,22 @@ function MediasBrowser(_ref) {
|
|
984
980
|
onChange: setCurrentMedia,
|
985
981
|
onSave: onSaveMedia,
|
986
982
|
onClose: onCloseMedia
|
987
|
-
})) : /*#__PURE__*/React.createElement(React.Fragment, null,
|
988
|
-
items: buttons,
|
989
|
-
className: "mb-2"
|
990
|
-
}) : null, filters !== null ? /*#__PURE__*/React.createElement(Filters, {
|
991
|
-
className: "mt-0 pt-0",
|
983
|
+
})) : /*#__PURE__*/React.createElement(React.Fragment, null, filters !== null ? /*#__PURE__*/React.createElement(Filters, {
|
992
984
|
value: query,
|
993
985
|
clearValue: types !== null ? queryWithoutTypes : null,
|
994
986
|
filters: finalFilters,
|
995
987
|
onChange: onQueryChange,
|
996
988
|
onReset: onQueryReset,
|
997
989
|
theme: theme
|
998
|
-
},
|
999
|
-
|
1000
|
-
|
1001
|
-
|
1002
|
-
withoutMedia: true
|
1003
|
-
}, uploadButton)) : null) : null, filters === null && uploadButton !== null ? /*#__PURE__*/React.createElement("div", {
|
990
|
+
}, buttons !== null ? /*#__PURE__*/React.createElement(Buttons, {
|
991
|
+
items: buttons,
|
992
|
+
className: buttonsClassName
|
993
|
+
}) : null) : null, filters === null && buttons !== null ? /*#__PURE__*/React.createElement("div", {
|
1004
994
|
className: "mt-2 mb-2"
|
1005
|
-
}, /*#__PURE__*/React.createElement(
|
1006
|
-
|
1007
|
-
|
1008
|
-
|
1009
|
-
}, uploadButton))) : null, /*#__PURE__*/React.createElement("div", {
|
995
|
+
}, buttons !== null ? /*#__PURE__*/React.createElement(Buttons, {
|
996
|
+
items: buttons,
|
997
|
+
className: buttonsClassName
|
998
|
+
}) : null) : null, /*#__PURE__*/React.createElement("div", {
|
1010
999
|
className: classNames(['d-flex', 'mt-1', 'mb-3', {
|
1011
1000
|
'justify-content-between': hasLayouts,
|
1012
1001
|
'justify-content-end': !hasLayouts
|
@@ -1031,26 +1020,29 @@ function MediasBrowser(_ref) {
|
|
1031
1020
|
componentProps: {
|
1032
1021
|
className: 'd-flex w-100',
|
1033
1022
|
cardClassName: 'flex-grow-1',
|
1034
|
-
vertical: true
|
1035
|
-
|
1036
|
-
|
1037
|
-
|
1038
|
-
|
1039
|
-
onSelectItem:
|
1023
|
+
vertical: true,
|
1024
|
+
onClickDescription: function onClickDescription(it) {
|
1025
|
+
onOpenMedia(it);
|
1026
|
+
}
|
1027
|
+
},
|
1028
|
+
onSelectItem: function onSelectItem(it) {
|
1040
1029
|
return onOpenMedia(it);
|
1041
1030
|
}
|
1031
|
+
}, tableProps, {
|
1032
|
+
items: finalItems || [],
|
1033
|
+
loading: loading
|
1042
1034
|
})) : null, layout === 'table' ? /*#__PURE__*/React.createElement(Table, Object.assign({
|
1043
1035
|
theme: theme,
|
1044
1036
|
columns: columns,
|
1045
1037
|
displayPlaceholder: /*#__PURE__*/React.createElement("span", {
|
1046
1038
|
className: "text-secondary text-opacity-75"
|
1047
|
-
}, "\u2014")
|
1039
|
+
}, "\u2014"),
|
1040
|
+
onSelectItem: function onSelectItem(it) {
|
1041
|
+
return onOpenMedia(it);
|
1042
|
+
}
|
1048
1043
|
}, tableProps, {
|
1049
|
-
items:
|
1044
|
+
items: finalItems,
|
1050
1045
|
loading: loading,
|
1051
|
-
onSelectItem: onSelectItem !== null ? onSelectItem : function (it) {
|
1052
|
-
return onOpenMedia(it);
|
1053
|
-
},
|
1054
1046
|
actionsProps: {
|
1055
1047
|
getEditPropsFromItem: function getEditPropsFromItem(it) {
|
1056
1048
|
return {
|
@@ -1068,13 +1060,12 @@ function MediasBrowser(_ref) {
|
|
1068
1060
|
MediasBrowser.propTypes = propTypes$5;
|
1069
1061
|
MediasBrowser.defaultProps = defaultProps$5;
|
1070
1062
|
|
1071
|
-
var _excluded$4 = ["items", "value", "types", "
|
1063
|
+
var _excluded$4 = ["items", "value", "types", "onChange", "onConfirm", "onClose", "multiple", "withoutButtons", "tableProps", "className"];
|
1072
1064
|
var propTypes$4 = {
|
1073
1065
|
// eslint-disable-next-line react/forbid-prop-types
|
1074
1066
|
items: PropTypes.arrayOf(PropTypes.shape({})),
|
1075
1067
|
value: PropTypes.arrayOf(PropTypes.shape({})),
|
1076
1068
|
types: PropTypes.arrayOf(PropTypes.string),
|
1077
|
-
uploadButton: PropTypes.shape({}),
|
1078
1069
|
onChange: PropTypes.func.isRequired,
|
1079
1070
|
onConfirm: PropTypes.func.isRequired,
|
1080
1071
|
onClose: PropTypes.func,
|
@@ -1089,7 +1080,6 @@ var defaultProps$4 = {
|
|
1089
1080
|
items: null,
|
1090
1081
|
value: null,
|
1091
1082
|
types: null,
|
1092
|
-
uploadButton: null,
|
1093
1083
|
onClose: null,
|
1094
1084
|
multiple: false,
|
1095
1085
|
withoutButtons: false,
|
@@ -1100,7 +1090,6 @@ function MediasPicker(_ref) {
|
|
1100
1090
|
var initialItems = _ref.items,
|
1101
1091
|
initialSelectedItems = _ref.value,
|
1102
1092
|
types = _ref.types,
|
1103
|
-
uploadButton = _ref.uploadButton,
|
1104
1093
|
onChange = _ref.onChange,
|
1105
1094
|
onConfirm = _ref.onConfirm,
|
1106
1095
|
onClose = _ref.onClose,
|
@@ -1109,61 +1098,50 @@ function MediasPicker(_ref) {
|
|
1109
1098
|
tableProps = _ref.tableProps,
|
1110
1099
|
className = _ref.className,
|
1111
1100
|
props = _objectWithoutProperties(_ref, _excluded$4);
|
1101
|
+
// For selection only
|
1112
1102
|
var _useState = React.useState(initialItems),
|
1113
1103
|
_useState2 = _slicedToArray(_useState, 2),
|
1114
|
-
|
1104
|
+
currentItems = _useState2[0],
|
1115
1105
|
setItems = _useState2[1];
|
1116
1106
|
var onItemsChange = React.useCallback(function (pageItems) {
|
1117
1107
|
setItems(pageItems);
|
1118
1108
|
}, [setItems]);
|
1119
|
-
var disabled = initialItems === null || initialItems.length < 1;
|
1120
1109
|
var _useMediasForm = useMediasForm(),
|
1121
1110
|
currentMedia = _useMediasForm.media;
|
1122
1111
|
var _useItemSelection = hooks.useItemSelection({
|
1123
|
-
|
1112
|
+
currentItems: currentItems,
|
1124
1113
|
selectedItems: initialSelectedItems,
|
1125
1114
|
onSelectionChange: onChange,
|
1126
1115
|
multipleSelection: multiple
|
1127
1116
|
}),
|
1128
1117
|
onSelectItem = _useItemSelection.onSelectItem,
|
1129
|
-
onSelectItems = _useItemSelection.onSelectItems,
|
1130
1118
|
onSelectPage = _useItemSelection.onSelectPage,
|
1131
1119
|
onClearSelected = _useItemSelection.onClearSelected,
|
1132
1120
|
pageSelected = _useItemSelection.pageSelected,
|
1133
1121
|
selectedCount = _useItemSelection.selectedCount,
|
1134
1122
|
selectedItems = _useItemSelection.selectedItems;
|
1123
|
+
var disabled = currentItems === null || currentItems.length < 1;
|
1135
1124
|
var onConfirmSelection = React.useCallback(function () {
|
1136
1125
|
if (onConfirm !== null) {
|
1137
1126
|
onConfirm(selectedItems);
|
1138
1127
|
}
|
1139
1128
|
}, [selectedItems, onConfirm]);
|
1140
|
-
var finalUploadButton = React.useMemo(function () {
|
1141
|
-
return _objectSpread(_objectSpread(_objectSpread({}, uploadButton || null), types !== null ? {
|
1142
|
-
types: types
|
1143
|
-
} : null), {}, {
|
1144
|
-
allowMultipleUploads: multiple,
|
1145
|
-
maxNumberOfFiles: multiple ? 10 : 0,
|
1146
|
-
value: selectedItems
|
1147
|
-
});
|
1148
|
-
}, [uploadButton, selectedItems, multiple]);
|
1149
1129
|
return /*#__PURE__*/React.createElement("div", {
|
1150
1130
|
className: className
|
1151
1131
|
}, /*#__PURE__*/React.createElement(MediasBrowser, Object.assign({
|
1152
1132
|
tableProps: _objectSpread({
|
1153
|
-
selectable:
|
1133
|
+
selectable: true,
|
1154
1134
|
multipleSelection: multiple,
|
1155
1135
|
onSelectItem: onSelectItem,
|
1156
1136
|
onSelectPage: onSelectPage,
|
1157
1137
|
selectedItems: selectedItems,
|
1158
1138
|
pageSelected: pageSelected
|
1159
|
-
}, tableProps)
|
1160
|
-
items:
|
1161
|
-
|
1162
|
-
onSelectItems: onSelectItems,
|
1139
|
+
}, tableProps)
|
1140
|
+
// items={initialItems} // TODO: fix useItems if using this
|
1141
|
+
,
|
1163
1142
|
onItemsChange: onItemsChange,
|
1164
1143
|
selectedCount: selectedCount,
|
1165
1144
|
onClearSelected: onClearSelected,
|
1166
|
-
uploadButton: finalUploadButton,
|
1167
1145
|
types: types
|
1168
1146
|
}, props)), multiple && !withoutButtons && currentMedia === null ? /*#__PURE__*/React.createElement("div", {
|
1169
1147
|
className: "d-flex w-100 align-items-end justify-content-end mt-3"
|
package/package.json
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
{
|
2
2
|
"name": "@panneau/medias",
|
3
|
-
"version": "3.0.
|
3
|
+
"version": "3.0.172",
|
4
4
|
"description": "",
|
5
5
|
"keywords": [
|
6
6
|
"javascript"
|
@@ -48,19 +48,18 @@
|
|
48
48
|
"@babel/runtime": "^7.12.5",
|
49
49
|
"@panneau/core": "^3.0.169",
|
50
50
|
"@panneau/data": "^3.0.169",
|
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
|
-
"@panneau/
|
63
|
-
"@panneau/filter-filters": "^3.0.169",
|
62
|
+
"@panneau/filter-filters": "^3.0.171",
|
64
63
|
"classnames": "^2.5.1",
|
65
64
|
"lodash": "^4.17.21",
|
66
65
|
"prop-types": "^15.7.2",
|
@@ -69,5 +68,5 @@
|
|
69
68
|
"publishConfig": {
|
70
69
|
"access": "public"
|
71
70
|
},
|
72
|
-
"gitHead": "
|
71
|
+
"gitHead": "74ada3ded1a27ab2d7008d67790d8431f57c5b0a"
|
73
72
|
}
|