@panneau/medias 3.0.181 → 3.0.183
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 +114 -86
- package/lib/index.js +113 -85
- package/package.json +17 -16
package/es/index.js
CHANGED
@@ -5,7 +5,7 @@ import PropTypes from 'prop-types';
|
|
5
5
|
import React, { useContext, useMemo, useCallback, useState, useEffect } from 'react';
|
6
6
|
import { FormattedMessage } from 'react-intl';
|
7
7
|
import { useFieldComponent, usePanneauResource } from '@panneau/core/contexts';
|
8
|
-
import { useForm, useQuery
|
8
|
+
import { useForm, useQuery } 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';
|
@@ -14,6 +14,7 @@ import MediaPlayer from '@panneau/element-media-player';
|
|
14
14
|
import _toConsumableArray from '@babel/runtime/helpers/toConsumableArray';
|
15
15
|
import _objectWithoutProperties from '@babel/runtime/helpers/objectWithoutProperties';
|
16
16
|
import _objectSpread from '@babel/runtime/helpers/objectSpread2';
|
17
|
+
import isArray from 'lodash/isArray';
|
17
18
|
import uniqBy from 'lodash/uniqBy';
|
18
19
|
import { PropTypes as PropTypes$1 } from '@panneau/core';
|
19
20
|
import Buttons from '@panneau/element-buttons';
|
@@ -22,6 +23,7 @@ import Icon from '@panneau/element-icon';
|
|
22
23
|
import MediaCard from '@panneau/element-media-card';
|
23
24
|
import Pagination from '@panneau/element-pagination';
|
24
25
|
import Table from '@panneau/element-table';
|
26
|
+
import UploadField from '@panneau/field-upload';
|
25
27
|
import Filters from '@panneau/filter-filters';
|
26
28
|
import { useItemsStore, useData, useApi } from '@panneau/data';
|
27
29
|
|
@@ -486,9 +488,12 @@ function MediaForm(_ref) {
|
|
486
488
|
}, /*#__PURE__*/React.createElement("nav", {
|
487
489
|
className: "navbar d-flex w-100 align-items-end justify-content-between border-bottom mb-3"
|
488
490
|
}, /*#__PURE__*/React.createElement("div", {
|
489
|
-
className: "d-flex align-items-end justify-content-
|
491
|
+
className: "d-flex align-items-end justify-content-start mb-1",
|
492
|
+
style: {
|
493
|
+
maxWidth: '66%'
|
494
|
+
}
|
490
495
|
}, /*#__PURE__*/React.createElement("h4", {
|
491
|
-
className: "d-inline text-
|
496
|
+
className: "d-inline text-truncate mb-0"
|
492
497
|
}, name), /*#__PURE__*/React.createElement("span", {
|
493
498
|
className: "mx-2"
|
494
499
|
}, type)), /*#__PURE__*/React.createElement("div", null, /*#__PURE__*/React.createElement(Button, {
|
@@ -513,7 +518,7 @@ function MediaForm(_ref) {
|
|
513
518
|
})), onSave !== null ? /*#__PURE__*/React.createElement(Button, {
|
514
519
|
className: "mb-1 mt-1",
|
515
520
|
theme: "primary",
|
516
|
-
icon: changed ? 'check
|
521
|
+
icon: changed ? 'check' : 'check',
|
517
522
|
iconPosition: "right",
|
518
523
|
onClick: onSubmit,
|
519
524
|
disabled: !changed || updating || deleting
|
@@ -729,7 +734,8 @@ var defaultColumns = [{
|
|
729
734
|
var defaultFilters = [{
|
730
735
|
id: 'search',
|
731
736
|
component: 'search',
|
732
|
-
name: 'search'
|
737
|
+
name: 'search',
|
738
|
+
width: 220
|
733
739
|
}, {
|
734
740
|
id: 'types',
|
735
741
|
component: 'select',
|
@@ -806,7 +812,6 @@ var propTypes$5 = {
|
|
806
812
|
items: PropTypes$1.medias,
|
807
813
|
extraItems: PropTypes$1.medias,
|
808
814
|
types: PropTypes.arrayOf(PropTypes.string),
|
809
|
-
buttons: PropTypes$1.buttons,
|
810
815
|
filters: PropTypes$1.filters,
|
811
816
|
columns: PropTypes$1.tableColumns,
|
812
817
|
query: PropTypes.shape({}),
|
@@ -815,22 +820,24 @@ var propTypes$5 = {
|
|
815
820
|
layout: PropTypes.string,
|
816
821
|
layouts: PropTypes.arrayOf(PropTypes.shape({})),
|
817
822
|
theme: PropTypes.string,
|
818
|
-
|
823
|
+
onUpload: PropTypes.func,
|
819
824
|
onItemsChange: PropTypes.func,
|
820
825
|
onLayoutChange: PropTypes.func,
|
821
|
-
|
822
|
-
|
826
|
+
selectable: PropTypes.bool,
|
827
|
+
selectedItems: PropTypes.arrayOf(PropTypes.shape({})),
|
828
|
+
onSelectionChange: PropTypes.func,
|
829
|
+
multipleSelection: PropTypes.bool,
|
830
|
+
uppyConfig: PropTypes.shape({}),
|
823
831
|
withTrash: PropTypes.bool,
|
824
832
|
withStickySelection: PropTypes.bool,
|
833
|
+
withoutUpload: PropTypes.bool,
|
825
834
|
className: PropTypes.string,
|
826
|
-
buttonsClassName: PropTypes.string,
|
827
835
|
formChildren: PropTypes.node
|
828
836
|
};
|
829
837
|
var defaultProps$5 = {
|
830
838
|
items: null,
|
831
839
|
extraItems: null,
|
832
840
|
types: null,
|
833
|
-
buttons: null,
|
834
841
|
filters: defaultFilters,
|
835
842
|
columns: defaultColumns,
|
836
843
|
fields: defaultFields,
|
@@ -849,15 +856,18 @@ var defaultProps$5 = {
|
|
849
856
|
})
|
850
857
|
}],
|
851
858
|
theme: null,
|
852
|
-
|
859
|
+
onUpload: null,
|
853
860
|
onItemsChange: null,
|
854
861
|
onLayoutChange: null,
|
855
|
-
|
856
|
-
|
862
|
+
selectable: null,
|
863
|
+
selectedItems: null,
|
864
|
+
onSelectionChange: null,
|
865
|
+
multipleSelection: false,
|
866
|
+
uppyConfig: null,
|
857
867
|
withTrash: false,
|
858
868
|
withStickySelection: false,
|
869
|
+
withoutUpload: false,
|
859
870
|
className: null,
|
860
|
-
buttonsClassName: null,
|
861
871
|
formChildren: null
|
862
872
|
};
|
863
873
|
function MediasBrowser(_ref) {
|
@@ -865,7 +875,6 @@ function MediasBrowser(_ref) {
|
|
865
875
|
extraItems = _ref.extraItems,
|
866
876
|
types = _ref.types,
|
867
877
|
baseUrl = _ref.baseUrl,
|
868
|
-
buttons = _ref.buttons,
|
869
878
|
filters = _ref.filters,
|
870
879
|
columns = _ref.columns,
|
871
880
|
fields = _ref.fields,
|
@@ -873,15 +882,18 @@ function MediasBrowser(_ref) {
|
|
873
882
|
initialLayout = _ref.layout,
|
874
883
|
layouts = _ref.layouts,
|
875
884
|
theme = _ref.theme,
|
876
|
-
|
885
|
+
onUpload = _ref.onUpload,
|
877
886
|
onItemsChange = _ref.onItemsChange,
|
878
887
|
onLayoutChange = _ref.onLayoutChange,
|
879
|
-
|
880
|
-
|
888
|
+
selectable = _ref.selectable,
|
889
|
+
selectedItems = _ref.selectedItems,
|
890
|
+
onSelectionChange = _ref.onSelectionChange,
|
891
|
+
multipleSelection = _ref.multipleSelection,
|
892
|
+
uppyConfig = _ref.uppyConfig,
|
881
893
|
withTrash = _ref.withTrash,
|
882
894
|
withStickySelection = _ref.withStickySelection,
|
895
|
+
withoutUpload = _ref.withoutUpload,
|
883
896
|
className = _ref.className,
|
884
|
-
buttonsClassName = _ref.buttonsClassName,
|
885
897
|
formChildren = _ref.formChildren;
|
886
898
|
var _useState = useState(initialItems || null),
|
887
899
|
_useState2 = _slicedToArray(_useState, 1),
|
@@ -951,7 +963,8 @@ function MediasBrowser(_ref) {
|
|
951
963
|
lastPage = _useMedias$pagination2.lastPage,
|
952
964
|
total = _useMedias$pagination2.total,
|
953
965
|
_useMedias$pages = _useMedias.pages,
|
954
|
-
pages = _useMedias$pages === void 0 ? null : _useMedias$pages
|
966
|
+
pages = _useMedias$pages === void 0 ? null : _useMedias$pages,
|
967
|
+
reload = _useMedias.reload;
|
955
968
|
|
956
969
|
// For picker
|
957
970
|
useEffect(function () {
|
@@ -987,6 +1000,21 @@ function MediasBrowser(_ref) {
|
|
987
1000
|
setCurrentMedia(null);
|
988
1001
|
updateItem(item);
|
989
1002
|
}, [setCurrentMedia, updateItem]);
|
1003
|
+
var onMediaUploaded = useCallback(function (medias) {
|
1004
|
+
var rawMedias = isArray(medias) ? medias : [medias];
|
1005
|
+
if (onUpload !== null) {
|
1006
|
+
onUpload(rawMedias).then(function (newMedias) {
|
1007
|
+
if (onSelectionChange !== null) {
|
1008
|
+
onSelectionChange(newMedias);
|
1009
|
+
reload();
|
1010
|
+
}
|
1011
|
+
});
|
1012
|
+
}
|
1013
|
+
if (onSelectionChange !== null) {
|
1014
|
+
onSelectionChange(rawMedias);
|
1015
|
+
reload();
|
1016
|
+
}
|
1017
|
+
}, [onUpload]);
|
990
1018
|
var pagination = /*#__PURE__*/React.createElement(Pagination, {
|
991
1019
|
page: page,
|
992
1020
|
lastPage: lastPage,
|
@@ -996,8 +1024,10 @@ function MediasBrowser(_ref) {
|
|
996
1024
|
onClickPage: onPageChange,
|
997
1025
|
theme: theme,
|
998
1026
|
loading: loading && pages !== null,
|
999
|
-
|
1000
|
-
|
1027
|
+
selectable: selectable,
|
1028
|
+
selectedItems: selectedItems,
|
1029
|
+
onSelectionChange: onSelectionChange,
|
1030
|
+
multipleSelection: multipleSelection,
|
1001
1031
|
withPreviousNext: true,
|
1002
1032
|
alwaysShowButtons: true
|
1003
1033
|
});
|
@@ -1065,7 +1095,7 @@ function MediasBrowser(_ref) {
|
|
1065
1095
|
return /*#__PURE__*/React.createElement("div", {
|
1066
1096
|
className: className
|
1067
1097
|
}, currentMedia !== null ? /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement("div", {
|
1068
|
-
className: "mt-2 mb-
|
1098
|
+
className: "mt-2 mb-0"
|
1069
1099
|
}, /*#__PURE__*/React.createElement(Button, {
|
1070
1100
|
theme: "primary",
|
1071
1101
|
onClick: onCloseMedia,
|
@@ -1083,29 +1113,29 @@ function MediasBrowser(_ref) {
|
|
1083
1113
|
onSave: onSaveMedia,
|
1084
1114
|
onClose: onCloseMedia,
|
1085
1115
|
withTrash: withTrash
|
1086
|
-
}, formChildren)) : /*#__PURE__*/React.createElement(React.Fragment, null,
|
1116
|
+
}, formChildren)) : /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement("div", {
|
1117
|
+
className: classNames(['d-flex', 'justify-content-between'])
|
1118
|
+
}, filters !== null ? /*#__PURE__*/React.createElement(Filters, {
|
1087
1119
|
value: query,
|
1088
1120
|
clearValue: types !== null ? queryWithoutTypes : null,
|
1089
1121
|
filters: finalFilters,
|
1090
1122
|
onChange: onQueryChange,
|
1091
1123
|
onReset: onQueryReset,
|
1092
1124
|
theme: theme
|
1093
|
-
}
|
1094
|
-
|
1095
|
-
|
1096
|
-
|
1097
|
-
|
1098
|
-
|
1099
|
-
|
1100
|
-
className: buttonsClassName
|
1101
|
-
})) : null, /*#__PURE__*/React.createElement("div", {
|
1125
|
+
}) : null, !withoutUpload ? /*#__PURE__*/React.createElement(UploadField, {
|
1126
|
+
className: "ms-auto w-auto text-nowrap mt-2",
|
1127
|
+
withButton: true,
|
1128
|
+
withoutMedia: true,
|
1129
|
+
uppyConfig: uppyConfig,
|
1130
|
+
onChange: onMediaUploaded
|
1131
|
+
}) : null), /*#__PURE__*/React.createElement("div", {
|
1102
1132
|
className: classNames(['d-flex', 'mt-1', 'mb-3', {
|
1103
1133
|
'justify-content-between': hasLayouts,
|
1104
1134
|
'justify-content-end': !hasLayouts
|
1105
1135
|
}])
|
1106
1136
|
}, hasLayouts ? /*#__PURE__*/React.createElement(Buttons, {
|
1107
1137
|
size: "sm",
|
1108
|
-
theme: "
|
1138
|
+
theme: "secondary",
|
1109
1139
|
outline: true,
|
1110
1140
|
items: (layouts || []).map(function (lay) {
|
1111
1141
|
return _objectSpread(_objectSpread({}, lay), {}, {
|
@@ -1116,7 +1146,7 @@ function MediasBrowser(_ref) {
|
|
1116
1146
|
className: 'px-3'
|
1117
1147
|
});
|
1118
1148
|
})
|
1119
|
-
}) : null, pagination), layout === 'grid' ? /*#__PURE__*/React.createElement(Grid,
|
1149
|
+
}) : null, pagination), layout === 'grid' ? /*#__PURE__*/React.createElement(Grid, {
|
1120
1150
|
size: "small",
|
1121
1151
|
theme: theme,
|
1122
1152
|
component: MediaCard,
|
@@ -1128,22 +1158,22 @@ function MediasBrowser(_ref) {
|
|
1128
1158
|
onOpenMedia(it);
|
1129
1159
|
}
|
1130
1160
|
},
|
1131
|
-
|
1132
|
-
|
1133
|
-
|
1134
|
-
|
1161
|
+
selectable: selectable,
|
1162
|
+
selectedItems: selectedItems,
|
1163
|
+
onSelectionChange: onSelectionChange,
|
1164
|
+
multipleSelection: multipleSelection,
|
1135
1165
|
items: finalItems || [],
|
1136
1166
|
loading: loading
|
1137
|
-
})
|
1167
|
+
}) : null, layout === 'table' ? /*#__PURE__*/React.createElement(Table, {
|
1138
1168
|
theme: theme,
|
1139
1169
|
columns: finalColumns,
|
1140
1170
|
displayPlaceholder: /*#__PURE__*/React.createElement("span", {
|
1141
1171
|
className: "text-secondary text-opacity-75"
|
1142
1172
|
}, "\u2014"),
|
1143
|
-
|
1144
|
-
|
1145
|
-
|
1146
|
-
|
1173
|
+
selectable: selectable,
|
1174
|
+
selectedItems: selectedItems,
|
1175
|
+
onSelectionChange: onSelectionChange,
|
1176
|
+
multipleSelection: multipleSelection,
|
1147
1177
|
items: finalItems,
|
1148
1178
|
loading: loading,
|
1149
1179
|
actionsProps: {
|
@@ -1169,49 +1199,45 @@ function MediasBrowser(_ref) {
|
|
1169
1199
|
};
|
1170
1200
|
}
|
1171
1201
|
}
|
1172
|
-
})
|
1202
|
+
}) : null, /*#__PURE__*/React.createElement("div", {
|
1173
1203
|
className: classNames(['d-flex', 'mt-3', 'mb-1', 'justify-content-end'])
|
1174
1204
|
}, pagination)));
|
1175
1205
|
}
|
1176
1206
|
MediasBrowser.propTypes = propTypes$5;
|
1177
1207
|
MediasBrowser.defaultProps = defaultProps$5;
|
1178
1208
|
|
1179
|
-
var _excluded$4 = ["items", "value", "
|
1209
|
+
var _excluded$4 = ["items", "value", "onSelectionChange", "multipleSelection", "types", "onChange", "onClose", "withoutButtons", "className"];
|
1180
1210
|
var propTypes$4 = {
|
1181
1211
|
// eslint-disable-next-line react/forbid-prop-types
|
1182
1212
|
items: PropTypes.arrayOf(PropTypes.shape({})),
|
1183
1213
|
value: PropTypes.arrayOf(PropTypes.shape({})),
|
1214
|
+
onSelectionChange: PropTypes.func,
|
1215
|
+
multipleSelection: PropTypes.bool,
|
1184
1216
|
types: PropTypes.arrayOf(PropTypes.string),
|
1185
1217
|
onChange: PropTypes.func.isRequired,
|
1186
|
-
onConfirm: PropTypes.func.isRequired,
|
1187
1218
|
onClose: PropTypes.func,
|
1188
|
-
multiple: PropTypes.bool,
|
1189
1219
|
withoutButtons: PropTypes.bool,
|
1190
|
-
tableProps: PropTypes.shape({
|
1191
|
-
theme: PropTypes.string
|
1192
|
-
}),
|
1193
1220
|
className: PropTypes.string
|
1194
1221
|
};
|
1195
1222
|
var defaultProps$4 = {
|
1196
1223
|
items: null,
|
1197
1224
|
value: null,
|
1225
|
+
onSelectionChange: null,
|
1226
|
+
multipleSelection: false,
|
1198
1227
|
types: null,
|
1199
1228
|
onClose: null,
|
1200
|
-
multiple: false,
|
1201
1229
|
withoutButtons: false,
|
1202
|
-
tableProps: null,
|
1203
1230
|
className: null
|
1204
1231
|
};
|
1205
1232
|
function MediasPicker(_ref) {
|
1206
1233
|
var initialItems = _ref.items,
|
1207
1234
|
initialSelectedItems = _ref.value,
|
1235
|
+
parentOnSelectionChange = _ref.onSelectionChange,
|
1236
|
+
multipleSelection = _ref.multipleSelection,
|
1208
1237
|
types = _ref.types,
|
1209
1238
|
onChange = _ref.onChange,
|
1210
|
-
onConfirm = _ref.onConfirm,
|
1211
1239
|
onClose = _ref.onClose,
|
1212
|
-
multiple = _ref.multiple,
|
1213
1240
|
withoutButtons = _ref.withoutButtons,
|
1214
|
-
tableProps = _ref.tableProps,
|
1215
1241
|
className = _ref.className,
|
1216
1242
|
props = _objectWithoutProperties(_ref, _excluded$4);
|
1217
1243
|
var _useMediasForm = useMediasForm(),
|
@@ -1226,42 +1252,44 @@ function MediasPicker(_ref) {
|
|
1226
1252
|
var onItemsChange = useCallback(function (newPageItems) {
|
1227
1253
|
setItems(newPageItems);
|
1228
1254
|
}, [setItems]);
|
1229
|
-
var
|
1230
|
-
|
1231
|
-
|
1232
|
-
|
1233
|
-
|
1234
|
-
|
1235
|
-
|
1236
|
-
|
1237
|
-
|
1238
|
-
|
1239
|
-
|
1240
|
-
|
1255
|
+
var _useState3 = useState(initialSelectedItems || null),
|
1256
|
+
_useState4 = _slicedToArray(_useState3, 2),
|
1257
|
+
selectedItems = _useState4[0],
|
1258
|
+
setSelectedItems = _useState4[1];
|
1259
|
+
var onSelectionChange = useCallback(function (newSelection) {
|
1260
|
+
setSelectedItems(newSelection);
|
1261
|
+
}, [setSelectedItems]);
|
1262
|
+
// Sync from the top
|
1263
|
+
useEffect(function () {
|
1264
|
+
setSelectedItems(initialSelectedItems);
|
1265
|
+
}, [initialSelectedItems, setSelectedItems]);
|
1266
|
+
useEffect(function () {
|
1267
|
+
if (parentOnSelectionChange !== null) {
|
1268
|
+
parentOnSelectionChange(selectedItems);
|
1269
|
+
}
|
1270
|
+
}, [selectedItems, parentOnSelectionChange]);
|
1241
1271
|
var onConfirmSelection = useCallback(function () {
|
1242
|
-
if (
|
1243
|
-
|
1272
|
+
if (onChange !== null) {
|
1273
|
+
onChange(selectedItems);
|
1244
1274
|
}
|
1245
|
-
}, [selectedItems,
|
1275
|
+
}, [selectedItems, onChange]);
|
1246
1276
|
return /*#__PURE__*/React.createElement("div", {
|
1247
1277
|
className: className
|
1248
1278
|
}, /*#__PURE__*/React.createElement(MediasBrowser, Object.assign({
|
1249
|
-
|
1250
|
-
selectable: true,
|
1251
|
-
multipleSelection: multiple,
|
1252
|
-
onSelectItem: onSelectItem,
|
1253
|
-
onSelectPage: onSelectPage,
|
1254
|
-
selectedItems: selectedItems,
|
1255
|
-
pageSelected: pageSelected
|
1256
|
-
}, tableProps)
|
1257
|
-
// items={initialItems} // TODO: fix useItems if actually using this
|
1279
|
+
items: initialItems // TODO: fix useItems if actually using this
|
1258
1280
|
,
|
1281
|
+
selectable: true,
|
1282
|
+
selectedItems: selectedItems,
|
1283
|
+
onSelectionChange: onSelectionChange,
|
1284
|
+
multipleSelection: multipleSelection,
|
1259
1285
|
onItemsChange: onItemsChange,
|
1260
|
-
|
1261
|
-
|
1262
|
-
|
1263
|
-
|
1264
|
-
|
1286
|
+
types: types
|
1287
|
+
// extraItems={
|
1288
|
+
// !multiple && initialSelectedItems !== null
|
1289
|
+
// ? [initialSelectedItems]
|
1290
|
+
// : initialSelectedItems
|
1291
|
+
// }
|
1292
|
+
}, props)), !withoutButtons && currentMedia === null ? /*#__PURE__*/React.createElement("div", {
|
1265
1293
|
className: "d-flex w-100 align-items-end justify-content-end mt-3"
|
1266
1294
|
}, /*#__PURE__*/React.createElement("div", {
|
1267
1295
|
className: "btn-group"
|
package/lib/index.js
CHANGED
@@ -16,6 +16,7 @@ var MediaPlayer = require('@panneau/element-media-player');
|
|
16
16
|
var _toConsumableArray = require('@babel/runtime/helpers/toConsumableArray');
|
17
17
|
var _objectWithoutProperties = require('@babel/runtime/helpers/objectWithoutProperties');
|
18
18
|
var _objectSpread = require('@babel/runtime/helpers/objectSpread2');
|
19
|
+
var isArray = require('lodash/isArray');
|
19
20
|
var uniqBy = require('lodash/uniqBy');
|
20
21
|
var core = require('@panneau/core');
|
21
22
|
var Buttons = require('@panneau/element-buttons');
|
@@ -24,6 +25,7 @@ var Icon = require('@panneau/element-icon');
|
|
24
25
|
var MediaCard = require('@panneau/element-media-card');
|
25
26
|
var Pagination = require('@panneau/element-pagination');
|
26
27
|
var Table = require('@panneau/element-table');
|
28
|
+
var UploadField = require('@panneau/field-upload');
|
27
29
|
var Filters = require('@panneau/filter-filters');
|
28
30
|
var data = require('@panneau/data');
|
29
31
|
|
@@ -488,9 +490,12 @@ function MediaForm(_ref) {
|
|
488
490
|
}, /*#__PURE__*/React.createElement("nav", {
|
489
491
|
className: "navbar d-flex w-100 align-items-end justify-content-between border-bottom mb-3"
|
490
492
|
}, /*#__PURE__*/React.createElement("div", {
|
491
|
-
className: "d-flex align-items-end justify-content-
|
493
|
+
className: "d-flex align-items-end justify-content-start mb-1",
|
494
|
+
style: {
|
495
|
+
maxWidth: '66%'
|
496
|
+
}
|
492
497
|
}, /*#__PURE__*/React.createElement("h4", {
|
493
|
-
className: "d-inline text-
|
498
|
+
className: "d-inline text-truncate mb-0"
|
494
499
|
}, name), /*#__PURE__*/React.createElement("span", {
|
495
500
|
className: "mx-2"
|
496
501
|
}, type)), /*#__PURE__*/React.createElement("div", null, /*#__PURE__*/React.createElement(Button, {
|
@@ -515,7 +520,7 @@ function MediaForm(_ref) {
|
|
515
520
|
})), onSave !== null ? /*#__PURE__*/React.createElement(Button, {
|
516
521
|
className: "mb-1 mt-1",
|
517
522
|
theme: "primary",
|
518
|
-
icon: changed ? 'check
|
523
|
+
icon: changed ? 'check' : 'check',
|
519
524
|
iconPosition: "right",
|
520
525
|
onClick: onSubmit,
|
521
526
|
disabled: !changed || updating || deleting
|
@@ -731,7 +736,8 @@ var defaultColumns = [{
|
|
731
736
|
var defaultFilters = [{
|
732
737
|
id: 'search',
|
733
738
|
component: 'search',
|
734
|
-
name: 'search'
|
739
|
+
name: 'search',
|
740
|
+
width: 220
|
735
741
|
}, {
|
736
742
|
id: 'types',
|
737
743
|
component: 'select',
|
@@ -808,7 +814,6 @@ var propTypes$5 = {
|
|
808
814
|
items: core.PropTypes.medias,
|
809
815
|
extraItems: core.PropTypes.medias,
|
810
816
|
types: PropTypes.arrayOf(PropTypes.string),
|
811
|
-
buttons: core.PropTypes.buttons,
|
812
817
|
filters: core.PropTypes.filters,
|
813
818
|
columns: core.PropTypes.tableColumns,
|
814
819
|
query: PropTypes.shape({}),
|
@@ -817,22 +822,24 @@ var propTypes$5 = {
|
|
817
822
|
layout: PropTypes.string,
|
818
823
|
layouts: PropTypes.arrayOf(PropTypes.shape({})),
|
819
824
|
theme: PropTypes.string,
|
820
|
-
|
825
|
+
onUpload: PropTypes.func,
|
821
826
|
onItemsChange: PropTypes.func,
|
822
827
|
onLayoutChange: PropTypes.func,
|
823
|
-
|
824
|
-
|
828
|
+
selectable: PropTypes.bool,
|
829
|
+
selectedItems: PropTypes.arrayOf(PropTypes.shape({})),
|
830
|
+
onSelectionChange: PropTypes.func,
|
831
|
+
multipleSelection: PropTypes.bool,
|
832
|
+
uppyConfig: PropTypes.shape({}),
|
825
833
|
withTrash: PropTypes.bool,
|
826
834
|
withStickySelection: PropTypes.bool,
|
835
|
+
withoutUpload: PropTypes.bool,
|
827
836
|
className: PropTypes.string,
|
828
|
-
buttonsClassName: PropTypes.string,
|
829
837
|
formChildren: PropTypes.node
|
830
838
|
};
|
831
839
|
var defaultProps$5 = {
|
832
840
|
items: null,
|
833
841
|
extraItems: null,
|
834
842
|
types: null,
|
835
|
-
buttons: null,
|
836
843
|
filters: defaultFilters,
|
837
844
|
columns: defaultColumns,
|
838
845
|
fields: defaultFields,
|
@@ -851,15 +858,18 @@ var defaultProps$5 = {
|
|
851
858
|
})
|
852
859
|
}],
|
853
860
|
theme: null,
|
854
|
-
|
861
|
+
onUpload: null,
|
855
862
|
onItemsChange: null,
|
856
863
|
onLayoutChange: null,
|
857
|
-
|
858
|
-
|
864
|
+
selectable: null,
|
865
|
+
selectedItems: null,
|
866
|
+
onSelectionChange: null,
|
867
|
+
multipleSelection: false,
|
868
|
+
uppyConfig: null,
|
859
869
|
withTrash: false,
|
860
870
|
withStickySelection: false,
|
871
|
+
withoutUpload: false,
|
861
872
|
className: null,
|
862
|
-
buttonsClassName: null,
|
863
873
|
formChildren: null
|
864
874
|
};
|
865
875
|
function MediasBrowser(_ref) {
|
@@ -867,7 +877,6 @@ function MediasBrowser(_ref) {
|
|
867
877
|
extraItems = _ref.extraItems,
|
868
878
|
types = _ref.types,
|
869
879
|
baseUrl = _ref.baseUrl,
|
870
|
-
buttons = _ref.buttons,
|
871
880
|
filters = _ref.filters,
|
872
881
|
columns = _ref.columns,
|
873
882
|
fields = _ref.fields,
|
@@ -875,15 +884,18 @@ function MediasBrowser(_ref) {
|
|
875
884
|
initialLayout = _ref.layout,
|
876
885
|
layouts = _ref.layouts,
|
877
886
|
theme = _ref.theme,
|
878
|
-
|
887
|
+
onUpload = _ref.onUpload,
|
879
888
|
onItemsChange = _ref.onItemsChange,
|
880
889
|
onLayoutChange = _ref.onLayoutChange,
|
881
|
-
|
882
|
-
|
890
|
+
selectable = _ref.selectable,
|
891
|
+
selectedItems = _ref.selectedItems,
|
892
|
+
onSelectionChange = _ref.onSelectionChange,
|
893
|
+
multipleSelection = _ref.multipleSelection,
|
894
|
+
uppyConfig = _ref.uppyConfig,
|
883
895
|
withTrash = _ref.withTrash,
|
884
896
|
withStickySelection = _ref.withStickySelection,
|
897
|
+
withoutUpload = _ref.withoutUpload,
|
885
898
|
className = _ref.className,
|
886
|
-
buttonsClassName = _ref.buttonsClassName,
|
887
899
|
formChildren = _ref.formChildren;
|
888
900
|
var _useState = React.useState(initialItems || null),
|
889
901
|
_useState2 = _slicedToArray(_useState, 1),
|
@@ -953,7 +965,8 @@ function MediasBrowser(_ref) {
|
|
953
965
|
lastPage = _useMedias$pagination2.lastPage,
|
954
966
|
total = _useMedias$pagination2.total,
|
955
967
|
_useMedias$pages = _useMedias.pages,
|
956
|
-
pages = _useMedias$pages === void 0 ? null : _useMedias$pages
|
968
|
+
pages = _useMedias$pages === void 0 ? null : _useMedias$pages,
|
969
|
+
reload = _useMedias.reload;
|
957
970
|
|
958
971
|
// For picker
|
959
972
|
React.useEffect(function () {
|
@@ -989,6 +1002,21 @@ function MediasBrowser(_ref) {
|
|
989
1002
|
setCurrentMedia(null);
|
990
1003
|
updateItem(item);
|
991
1004
|
}, [setCurrentMedia, updateItem]);
|
1005
|
+
var onMediaUploaded = React.useCallback(function (medias) {
|
1006
|
+
var rawMedias = isArray(medias) ? medias : [medias];
|
1007
|
+
if (onUpload !== null) {
|
1008
|
+
onUpload(rawMedias).then(function (newMedias) {
|
1009
|
+
if (onSelectionChange !== null) {
|
1010
|
+
onSelectionChange(newMedias);
|
1011
|
+
reload();
|
1012
|
+
}
|
1013
|
+
});
|
1014
|
+
}
|
1015
|
+
if (onSelectionChange !== null) {
|
1016
|
+
onSelectionChange(rawMedias);
|
1017
|
+
reload();
|
1018
|
+
}
|
1019
|
+
}, [onUpload]);
|
992
1020
|
var pagination = /*#__PURE__*/React.createElement(Pagination, {
|
993
1021
|
page: page,
|
994
1022
|
lastPage: lastPage,
|
@@ -998,8 +1026,10 @@ function MediasBrowser(_ref) {
|
|
998
1026
|
onClickPage: onPageChange,
|
999
1027
|
theme: theme,
|
1000
1028
|
loading: loading && pages !== null,
|
1001
|
-
|
1002
|
-
|
1029
|
+
selectable: selectable,
|
1030
|
+
selectedItems: selectedItems,
|
1031
|
+
onSelectionChange: onSelectionChange,
|
1032
|
+
multipleSelection: multipleSelection,
|
1003
1033
|
withPreviousNext: true,
|
1004
1034
|
alwaysShowButtons: true
|
1005
1035
|
});
|
@@ -1067,7 +1097,7 @@ function MediasBrowser(_ref) {
|
|
1067
1097
|
return /*#__PURE__*/React.createElement("div", {
|
1068
1098
|
className: className
|
1069
1099
|
}, currentMedia !== null ? /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement("div", {
|
1070
|
-
className: "mt-2 mb-
|
1100
|
+
className: "mt-2 mb-0"
|
1071
1101
|
}, /*#__PURE__*/React.createElement(Button, {
|
1072
1102
|
theme: "primary",
|
1073
1103
|
onClick: onCloseMedia,
|
@@ -1085,29 +1115,29 @@ function MediasBrowser(_ref) {
|
|
1085
1115
|
onSave: onSaveMedia,
|
1086
1116
|
onClose: onCloseMedia,
|
1087
1117
|
withTrash: withTrash
|
1088
|
-
}, formChildren)) : /*#__PURE__*/React.createElement(React.Fragment, null,
|
1118
|
+
}, formChildren)) : /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement("div", {
|
1119
|
+
className: classNames(['d-flex', 'justify-content-between'])
|
1120
|
+
}, filters !== null ? /*#__PURE__*/React.createElement(Filters, {
|
1089
1121
|
value: query,
|
1090
1122
|
clearValue: types !== null ? queryWithoutTypes : null,
|
1091
1123
|
filters: finalFilters,
|
1092
1124
|
onChange: onQueryChange,
|
1093
1125
|
onReset: onQueryReset,
|
1094
1126
|
theme: theme
|
1095
|
-
}
|
1096
|
-
|
1097
|
-
|
1098
|
-
|
1099
|
-
|
1100
|
-
|
1101
|
-
|
1102
|
-
className: buttonsClassName
|
1103
|
-
})) : null, /*#__PURE__*/React.createElement("div", {
|
1127
|
+
}) : null, !withoutUpload ? /*#__PURE__*/React.createElement(UploadField, {
|
1128
|
+
className: "ms-auto w-auto text-nowrap mt-2",
|
1129
|
+
withButton: true,
|
1130
|
+
withoutMedia: true,
|
1131
|
+
uppyConfig: uppyConfig,
|
1132
|
+
onChange: onMediaUploaded
|
1133
|
+
}) : null), /*#__PURE__*/React.createElement("div", {
|
1104
1134
|
className: classNames(['d-flex', 'mt-1', 'mb-3', {
|
1105
1135
|
'justify-content-between': hasLayouts,
|
1106
1136
|
'justify-content-end': !hasLayouts
|
1107
1137
|
}])
|
1108
1138
|
}, hasLayouts ? /*#__PURE__*/React.createElement(Buttons, {
|
1109
1139
|
size: "sm",
|
1110
|
-
theme: "
|
1140
|
+
theme: "secondary",
|
1111
1141
|
outline: true,
|
1112
1142
|
items: (layouts || []).map(function (lay) {
|
1113
1143
|
return _objectSpread(_objectSpread({}, lay), {}, {
|
@@ -1118,7 +1148,7 @@ function MediasBrowser(_ref) {
|
|
1118
1148
|
className: 'px-3'
|
1119
1149
|
});
|
1120
1150
|
})
|
1121
|
-
}) : null, pagination), layout === 'grid' ? /*#__PURE__*/React.createElement(Grid,
|
1151
|
+
}) : null, pagination), layout === 'grid' ? /*#__PURE__*/React.createElement(Grid, {
|
1122
1152
|
size: "small",
|
1123
1153
|
theme: theme,
|
1124
1154
|
component: MediaCard,
|
@@ -1130,22 +1160,22 @@ function MediasBrowser(_ref) {
|
|
1130
1160
|
onOpenMedia(it);
|
1131
1161
|
}
|
1132
1162
|
},
|
1133
|
-
|
1134
|
-
|
1135
|
-
|
1136
|
-
|
1163
|
+
selectable: selectable,
|
1164
|
+
selectedItems: selectedItems,
|
1165
|
+
onSelectionChange: onSelectionChange,
|
1166
|
+
multipleSelection: multipleSelection,
|
1137
1167
|
items: finalItems || [],
|
1138
1168
|
loading: loading
|
1139
|
-
})
|
1169
|
+
}) : null, layout === 'table' ? /*#__PURE__*/React.createElement(Table, {
|
1140
1170
|
theme: theme,
|
1141
1171
|
columns: finalColumns,
|
1142
1172
|
displayPlaceholder: /*#__PURE__*/React.createElement("span", {
|
1143
1173
|
className: "text-secondary text-opacity-75"
|
1144
1174
|
}, "\u2014"),
|
1145
|
-
|
1146
|
-
|
1147
|
-
|
1148
|
-
|
1175
|
+
selectable: selectable,
|
1176
|
+
selectedItems: selectedItems,
|
1177
|
+
onSelectionChange: onSelectionChange,
|
1178
|
+
multipleSelection: multipleSelection,
|
1149
1179
|
items: finalItems,
|
1150
1180
|
loading: loading,
|
1151
1181
|
actionsProps: {
|
@@ -1171,49 +1201,45 @@ function MediasBrowser(_ref) {
|
|
1171
1201
|
};
|
1172
1202
|
}
|
1173
1203
|
}
|
1174
|
-
})
|
1204
|
+
}) : null, /*#__PURE__*/React.createElement("div", {
|
1175
1205
|
className: classNames(['d-flex', 'mt-3', 'mb-1', 'justify-content-end'])
|
1176
1206
|
}, pagination)));
|
1177
1207
|
}
|
1178
1208
|
MediasBrowser.propTypes = propTypes$5;
|
1179
1209
|
MediasBrowser.defaultProps = defaultProps$5;
|
1180
1210
|
|
1181
|
-
var _excluded$4 = ["items", "value", "
|
1211
|
+
var _excluded$4 = ["items", "value", "onSelectionChange", "multipleSelection", "types", "onChange", "onClose", "withoutButtons", "className"];
|
1182
1212
|
var propTypes$4 = {
|
1183
1213
|
// eslint-disable-next-line react/forbid-prop-types
|
1184
1214
|
items: PropTypes.arrayOf(PropTypes.shape({})),
|
1185
1215
|
value: PropTypes.arrayOf(PropTypes.shape({})),
|
1216
|
+
onSelectionChange: PropTypes.func,
|
1217
|
+
multipleSelection: PropTypes.bool,
|
1186
1218
|
types: PropTypes.arrayOf(PropTypes.string),
|
1187
1219
|
onChange: PropTypes.func.isRequired,
|
1188
|
-
onConfirm: PropTypes.func.isRequired,
|
1189
1220
|
onClose: PropTypes.func,
|
1190
|
-
multiple: PropTypes.bool,
|
1191
1221
|
withoutButtons: PropTypes.bool,
|
1192
|
-
tableProps: PropTypes.shape({
|
1193
|
-
theme: PropTypes.string
|
1194
|
-
}),
|
1195
1222
|
className: PropTypes.string
|
1196
1223
|
};
|
1197
1224
|
var defaultProps$4 = {
|
1198
1225
|
items: null,
|
1199
1226
|
value: null,
|
1227
|
+
onSelectionChange: null,
|
1228
|
+
multipleSelection: false,
|
1200
1229
|
types: null,
|
1201
1230
|
onClose: null,
|
1202
|
-
multiple: false,
|
1203
1231
|
withoutButtons: false,
|
1204
|
-
tableProps: null,
|
1205
1232
|
className: null
|
1206
1233
|
};
|
1207
1234
|
function MediasPicker(_ref) {
|
1208
1235
|
var initialItems = _ref.items,
|
1209
1236
|
initialSelectedItems = _ref.value,
|
1237
|
+
parentOnSelectionChange = _ref.onSelectionChange,
|
1238
|
+
multipleSelection = _ref.multipleSelection,
|
1210
1239
|
types = _ref.types,
|
1211
1240
|
onChange = _ref.onChange,
|
1212
|
-
onConfirm = _ref.onConfirm,
|
1213
1241
|
onClose = _ref.onClose,
|
1214
|
-
multiple = _ref.multiple,
|
1215
1242
|
withoutButtons = _ref.withoutButtons,
|
1216
|
-
tableProps = _ref.tableProps,
|
1217
1243
|
className = _ref.className,
|
1218
1244
|
props = _objectWithoutProperties(_ref, _excluded$4);
|
1219
1245
|
var _useMediasForm = useMediasForm(),
|
@@ -1228,42 +1254,44 @@ function MediasPicker(_ref) {
|
|
1228
1254
|
var onItemsChange = React.useCallback(function (newPageItems) {
|
1229
1255
|
setItems(newPageItems);
|
1230
1256
|
}, [setItems]);
|
1231
|
-
var
|
1232
|
-
|
1233
|
-
|
1234
|
-
|
1235
|
-
|
1236
|
-
|
1237
|
-
|
1238
|
-
|
1239
|
-
|
1240
|
-
|
1241
|
-
|
1242
|
-
|
1257
|
+
var _useState3 = React.useState(initialSelectedItems || null),
|
1258
|
+
_useState4 = _slicedToArray(_useState3, 2),
|
1259
|
+
selectedItems = _useState4[0],
|
1260
|
+
setSelectedItems = _useState4[1];
|
1261
|
+
var onSelectionChange = React.useCallback(function (newSelection) {
|
1262
|
+
setSelectedItems(newSelection);
|
1263
|
+
}, [setSelectedItems]);
|
1264
|
+
// Sync from the top
|
1265
|
+
React.useEffect(function () {
|
1266
|
+
setSelectedItems(initialSelectedItems);
|
1267
|
+
}, [initialSelectedItems, setSelectedItems]);
|
1268
|
+
React.useEffect(function () {
|
1269
|
+
if (parentOnSelectionChange !== null) {
|
1270
|
+
parentOnSelectionChange(selectedItems);
|
1271
|
+
}
|
1272
|
+
}, [selectedItems, parentOnSelectionChange]);
|
1243
1273
|
var onConfirmSelection = React.useCallback(function () {
|
1244
|
-
if (
|
1245
|
-
|
1274
|
+
if (onChange !== null) {
|
1275
|
+
onChange(selectedItems);
|
1246
1276
|
}
|
1247
|
-
}, [selectedItems,
|
1277
|
+
}, [selectedItems, onChange]);
|
1248
1278
|
return /*#__PURE__*/React.createElement("div", {
|
1249
1279
|
className: className
|
1250
1280
|
}, /*#__PURE__*/React.createElement(MediasBrowser, Object.assign({
|
1251
|
-
|
1252
|
-
selectable: true,
|
1253
|
-
multipleSelection: multiple,
|
1254
|
-
onSelectItem: onSelectItem,
|
1255
|
-
onSelectPage: onSelectPage,
|
1256
|
-
selectedItems: selectedItems,
|
1257
|
-
pageSelected: pageSelected
|
1258
|
-
}, tableProps)
|
1259
|
-
// items={initialItems} // TODO: fix useItems if actually using this
|
1281
|
+
items: initialItems // TODO: fix useItems if actually using this
|
1260
1282
|
,
|
1283
|
+
selectable: true,
|
1284
|
+
selectedItems: selectedItems,
|
1285
|
+
onSelectionChange: onSelectionChange,
|
1286
|
+
multipleSelection: multipleSelection,
|
1261
1287
|
onItemsChange: onItemsChange,
|
1262
|
-
|
1263
|
-
|
1264
|
-
|
1265
|
-
|
1266
|
-
|
1288
|
+
types: types
|
1289
|
+
// extraItems={
|
1290
|
+
// !multiple && initialSelectedItems !== null
|
1291
|
+
// ? [initialSelectedItems]
|
1292
|
+
// : initialSelectedItems
|
1293
|
+
// }
|
1294
|
+
}, props)), !withoutButtons && currentMedia === null ? /*#__PURE__*/React.createElement("div", {
|
1267
1295
|
className: "d-flex w-100 align-items-end justify-content-end mt-3"
|
1268
1296
|
}, /*#__PURE__*/React.createElement("div", {
|
1269
1297
|
className: "btn-group"
|
package/package.json
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
{
|
2
2
|
"name": "@panneau/medias",
|
3
|
-
"version": "3.0.
|
3
|
+
"version": "3.0.183",
|
4
4
|
"description": "",
|
5
5
|
"keywords": [
|
6
6
|
"javascript"
|
@@ -46,20 +46,21 @@
|
|
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/
|
49
|
+
"@panneau/core": "^3.0.182",
|
50
|
+
"@panneau/data": "^3.0.182",
|
51
|
+
"@panneau/display-image": "^3.0.182",
|
52
|
+
"@panneau/element-button": "^3.0.182",
|
53
|
+
"@panneau/element-buttons": "^3.0.182",
|
54
|
+
"@panneau/element-form": "^3.0.182",
|
55
|
+
"@panneau/element-form-status": "^3.0.182",
|
56
|
+
"@panneau/element-grid": "^3.0.182",
|
57
|
+
"@panneau/element-icon": "^3.0.182",
|
58
|
+
"@panneau/element-media-card": "^3.0.182",
|
59
|
+
"@panneau/element-media-player": "^3.0.182",
|
60
|
+
"@panneau/element-pagination": "^3.0.182",
|
61
|
+
"@panneau/element-table": "^3.0.182",
|
62
|
+
"@panneau/field-upload": "^3.0.182",
|
63
|
+
"@panneau/filter-filters": "^3.0.182",
|
63
64
|
"classnames": "^2.5.1",
|
64
65
|
"lodash": "^4.17.21",
|
65
66
|
"prop-types": "^15.7.2",
|
@@ -68,5 +69,5 @@
|
|
68
69
|
"publishConfig": {
|
69
70
|
"access": "public"
|
70
71
|
},
|
71
|
-
"gitHead": "
|
72
|
+
"gitHead": "1a43436f1a5e0db3a0b2951138e9280b21220467"
|
72
73
|
}
|