@panneau/medias 3.0.245 → 3.0.247

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.
Files changed (2) hide show
  1. package/es/index.js +107 -51
  2. package/package.json +4 -4
package/es/index.js CHANGED
@@ -263,7 +263,22 @@ var defaultFields = [{
263
263
  }),
264
264
  type: 'text',
265
265
  component: 'text'
266
- }, {
266
+ },
267
+ // Creatable example
268
+ // {
269
+ // name: 'tags',
270
+ // label: <FormattedMessage defaultMessage="Tags" description="Field name" />,
271
+ // type: 'array',
272
+ // component: 'select',
273
+ // requestUrl: '/api/tags',
274
+ // optionLabelPath: 'label',
275
+ // optionValuePath: 'id', // Uses taggable so change the logic here
276
+ // valueIsOption: true,
277
+ // multiple: true,
278
+ // paginated: false,
279
+ // creatable: true, // TODO
280
+ // },
281
+ {
267
282
  id: 'info',
268
283
  component: 'fields',
269
284
  label: /*#__PURE__*/React.createElement(FormattedMessage, {
@@ -578,6 +593,25 @@ function MediaForm(_ref) {
578
593
  MediaForm.propTypes = propTypes$7;
579
594
  MediaForm.defaultProps = defaultProps$7;
580
595
 
596
+ var useMediaRestore = function useMediaRestore() {
597
+ var _useState = useState(false),
598
+ _useState2 = _slicedToArray(_useState, 2),
599
+ restoring = _useState2[0],
600
+ setRestoring = _useState2[1];
601
+ var api = useMediasApi();
602
+ var mediaRestore = useCallback(function (id, data) {
603
+ setRestoring(true);
604
+ return api.restore(id, data).then(function (response) {
605
+ setRestoring(false);
606
+ return response;
607
+ });
608
+ }, [api, setRestoring]);
609
+ return {
610
+ mediaRestore: mediaRestore,
611
+ restoring: restoring
612
+ };
613
+ };
614
+
581
615
  var MediaContext = /*#__PURE__*/React.createContext(null);
582
616
  var useCurrentMedia = function useCurrentMedia() {
583
617
  return useContext(MediaContext);
@@ -821,31 +855,17 @@ var defaultFilters = [{
821
855
  // },
822
856
  ];
823
857
 
824
- var useMediaRestore = function useMediaRestore() {
825
- var _useState = useState(false),
826
- _useState2 = _slicedToArray(_useState, 2),
827
- restoring = _useState2[0],
828
- setRestoring = _useState2[1];
829
- var api = useMediasApi();
830
- var mediaRestore = useCallback(function (id, data) {
831
- setRestoring(true);
832
- return api.restore(id, data).then(function (response) {
833
- setRestoring(false);
834
- return response;
835
- });
836
- }, [api, setRestoring]);
837
- return {
838
- mediaRestore: mediaRestore,
839
- restoring: restoring
840
- };
841
- };
842
-
843
858
  var _excluded$5 = ["page", "count"],
844
859
  _excluded2 = ["types", "trashed"];
845
860
  var propTypes$5 = {
846
861
  items: PropTypes$1.medias,
847
862
  extraItems: PropTypes$1.medias,
848
863
  types: PropTypes.arrayOf(PropTypes.string),
864
+ permissions: PropTypes.shape({
865
+ create: PropTypes.bool,
866
+ edit: PropTypes.bool,
867
+ "delete": PropTypes.bool
868
+ }),
849
869
  filters: PropTypes$1.filters,
850
870
  columns: PropTypes$1.tableColumns,
851
871
  query: PropTypes.shape({}),
@@ -875,6 +895,7 @@ var defaultProps$5 = {
875
895
  items: null,
876
896
  extraItems: null,
877
897
  types: null,
898
+ permissions: null,
878
899
  filters: defaultFilters,
879
900
  columns: defaultColumns,
880
901
  fields: defaultFields,
@@ -914,6 +935,7 @@ function MediasBrowser(_ref) {
914
935
  var initialItems = _ref.items,
915
936
  extraItems = _ref.extraItems,
916
937
  types = _ref.types,
938
+ permissions = _ref.permissions,
917
939
  baseUrl = _ref.baseUrl,
918
940
  filters = _ref.filters,
919
941
  columns = _ref.columns,
@@ -972,13 +994,21 @@ function MediasBrowser(_ref) {
972
994
  count = _useMemo$count === void 0 ? null : _useMemo$count,
973
995
  _useMemo$query = _useMemo.query,
974
996
  query = _useMemo$query === void 0 ? null : _useMemo$query;
997
+ var _ref3 = permissions || {},
998
+ _ref3$create = _ref3.create,
999
+ canCreate = _ref3$create === void 0 ? true : _ref3$create,
1000
+ _ref3$edit = _ref3.edit,
1001
+ canEdit = _ref3$edit === void 0 ? true : _ref3$edit,
1002
+ _ref3$delete = _ref3["delete"],
1003
+ canDelete = _ref3$delete === void 0 ? true : _ref3$delete;
1004
+ var canUpload = canCreate && !withoutUpload;
975
1005
 
976
1006
  // eslint-disable-next-line no-unused-vars
977
- var _ref3 = query || {};
978
- _ref3.types;
979
- var _ref3$trashed = _ref3.trashed,
980
- trashed = _ref3$trashed === void 0 ? null : _ref3$trashed,
981
- queryWithoutTypes = _objectWithoutProperties(_ref3, _excluded2);
1007
+ var _ref4 = query || {};
1008
+ _ref4.types;
1009
+ var _ref4$trashed = _ref4.trashed,
1010
+ trashed = _ref4$trashed === void 0 ? null : _ref4$trashed,
1011
+ queryWithoutTypes = _objectWithoutProperties(_ref4, _excluded2);
982
1012
  var _useMediaTrash = useMediaTrash$1(),
983
1013
  mediaTrash = _useMediaTrash.mediaTrash,
984
1014
  trashing = _useMediaTrash.trashing;
@@ -1061,9 +1091,9 @@ function MediasBrowser(_ref) {
1061
1091
  var onTrashMedia = useCallback(function (id) {
1062
1092
  return !showTrashed && withTrash ? mediaTrash(id).then(function () {
1063
1093
  if (!multipleSelection) {
1064
- var _ref4 = selectedItems || {},
1065
- _ref4$id = _ref4.id,
1066
- selectedId = _ref4$id === void 0 ? null : _ref4$id;
1094
+ var _ref5 = selectedItems || {},
1095
+ _ref5$id = _ref5.id,
1096
+ selectedId = _ref5$id === void 0 ? null : _ref5$id;
1067
1097
  if (selectedId !== null && selectedId === id) {
1068
1098
  onSelectionChange(null);
1069
1099
  }
@@ -1071,9 +1101,9 @@ function MediasBrowser(_ref) {
1071
1101
  // Todo remove from mult selection
1072
1102
  }).then(reload) : mediaDelete(id).then(function () {
1073
1103
  if (!multipleSelection) {
1074
- var _ref5 = selectedItems || {},
1075
- _ref5$id = _ref5.id,
1076
- selectedId = _ref5$id === void 0 ? null : _ref5$id;
1104
+ var _ref6 = selectedItems || {},
1105
+ _ref6$id = _ref6.id,
1106
+ selectedId = _ref6$id === void 0 ? null : _ref6$id;
1077
1107
  if (selectedId !== null && selectedId === id) {
1078
1108
  onSelectionChange(null);
1079
1109
  }
@@ -1095,10 +1125,10 @@ function MediasBrowser(_ref) {
1095
1125
  });
1096
1126
  setUploadedMedias(uploadedNewMedias);
1097
1127
  if (onSelectionChange !== null) {
1098
- var _ref6 = newMedias || [],
1099
- _ref7 = _slicedToArray(_ref6, 1),
1100
- _ref7$ = _ref7[0],
1101
- firstMedia = _ref7$ === void 0 ? null : _ref7$;
1128
+ var _ref7 = newMedias || [],
1129
+ _ref8 = _slicedToArray(_ref7, 1),
1130
+ _ref8$ = _ref8[0],
1131
+ firstMedia = _ref8$ === void 0 ? null : _ref8$;
1102
1132
  onSelectionChange(multipleSelection && isArray(newMedias) ? newMedias : firstMedia);
1103
1133
  onQueryReset();
1104
1134
  reload();
@@ -1151,9 +1181,9 @@ function MediasBrowser(_ref) {
1151
1181
  }]) : filters;
1152
1182
  if (types !== null && partialFilters !== null) {
1153
1183
  return (partialFilters || []).map(function (filter) {
1154
- var _ref8 = filter || {},
1155
- _ref8$id = _ref8.id,
1156
- id = _ref8$id === void 0 ? null : _ref8$id;
1184
+ var _ref9 = filter || {},
1185
+ _ref9$id = _ref9.id,
1186
+ id = _ref9$id === void 0 ? null : _ref9$id;
1157
1187
  return id === 'types' ? _objectSpread(_objectSpread({}, filter), {}, {
1158
1188
  disabled: true
1159
1189
  }) : filter;
@@ -1161,11 +1191,11 @@ function MediasBrowser(_ref) {
1161
1191
  }
1162
1192
  return partialFilters;
1163
1193
  }, [filters, types, withTrash, showTrashed, onClickTrash]);
1164
- var finalColumns = useMemo(function () {
1194
+ var partialColumns = useMemo(function () {
1165
1195
  return withTrash && showTrashed ? (columns || []).map(function (column) {
1166
- var _ref9 = column || {},
1167
- _ref9$id = _ref9.id,
1168
- columnId = _ref9$id === void 0 ? null : _ref9$id;
1196
+ var _ref10 = column || {},
1197
+ _ref10$id = _ref10.id,
1198
+ columnId = _ref10$id === void 0 ? null : _ref10$id;
1169
1199
  if (columnId === 'created_at') {
1170
1200
  return _objectSpread(_objectSpread({}, column), {}, {
1171
1201
  path: 'deleted_at',
@@ -1179,9 +1209,9 @@ function MediasBrowser(_ref) {
1179
1209
  });
1180
1210
  }
1181
1211
  if (columnId === 'actions') {
1182
- var _ref10 = column || {},
1183
- _ref10$actions = _ref10.actions,
1184
- actions = _ref10$actions === void 0 ? [] : _ref10$actions;
1212
+ var _ref11 = column || {},
1213
+ _ref11$actions = _ref11.actions,
1214
+ actions = _ref11$actions === void 0 ? [] : _ref11$actions;
1185
1215
  return _objectSpread(_objectSpread({}, column), {}, {
1186
1216
  actions: (actions || []).reduce(function (acc, action) {
1187
1217
  if (action === 'delete') {
@@ -1204,6 +1234,32 @@ function MediasBrowser(_ref) {
1204
1234
  return column;
1205
1235
  }) : columns;
1206
1236
  }, [columns, withTrash, showTrashed]);
1237
+ var finalColumns = useMemo(function () {
1238
+ return (partialColumns || []).map(function (column) {
1239
+ var _ref12 = column || {},
1240
+ _ref12$id = _ref12.id,
1241
+ columnId = _ref12$id === void 0 ? null : _ref12$id;
1242
+ if (columnId === 'actions') {
1243
+ var _ref13 = column || {},
1244
+ _ref13$actions = _ref13.actions,
1245
+ actions = _ref13$actions === void 0 ? [] : _ref13$actions;
1246
+ var availableActions = actions.filter(function (act) {
1247
+ return act !== 'delete' || canDelete;
1248
+ }).filter(function (act) {
1249
+ return act !== 'edit' || canEdit;
1250
+ });
1251
+ if (availableActions.length === 0) {
1252
+ return null;
1253
+ }
1254
+ return _objectSpread(_objectSpread({}, column), {}, {
1255
+ actions: availableActions
1256
+ });
1257
+ }
1258
+ return column;
1259
+ }).filter(function (act) {
1260
+ return act !== null;
1261
+ });
1262
+ }, [partialColumns, canEdit, canDelete]);
1207
1263
  var hasQueryItem = useMemo(function () {
1208
1264
  var showOnTopQuery = types === null ? query : queryWithoutTypes;
1209
1265
  return showOnTopQuery !== null && !trashed ? Object.keys(showOnTopQuery).length > 0 : false;
@@ -1219,9 +1275,9 @@ function MediasBrowser(_ref) {
1219
1275
  var _item$id = item.id,
1220
1276
  itemId = _item$id === void 0 ? null : _item$id;
1221
1277
  return (allItems || []).find(function () {
1222
- var _ref11 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},
1223
- _ref11$id = _ref11.id,
1224
- otherId = _ref11$id === void 0 ? null : _ref11$id;
1278
+ var _ref14 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},
1279
+ _ref14$id = _ref14.id,
1280
+ otherId = _ref14$id === void 0 ? null : _ref14$id;
1225
1281
  return otherId === itemId;
1226
1282
  }) || item || null;
1227
1283
  }).filter(function (it) {
@@ -1258,7 +1314,7 @@ function MediasBrowser(_ref) {
1258
1314
  onChange: onQueryChange,
1259
1315
  onReset: onQueryReset,
1260
1316
  theme: theme
1261
- }) : null, !withoutUpload ? /*#__PURE__*/React.createElement(UploadField, {
1317
+ }) : null, canUpload ? /*#__PURE__*/React.createElement(UploadField, {
1262
1318
  className: "ms-auto w-auto text-nowrap mt-2 mb-2 ps-2",
1263
1319
  withButton: true,
1264
1320
  withoutMedia: true,
@@ -1331,8 +1387,8 @@ function MediasBrowser(_ref) {
1331
1387
  ,
1332
1388
  actionsProps: {
1333
1389
  getDeletePropsFromItem: function getDeletePropsFromItem() {
1334
- var _ref12 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
1335
- _ref12.id;
1390
+ var _ref15 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
1391
+ _ref15.id;
1336
1392
  return {
1337
1393
  href: null,
1338
1394
  withConfirmation: true,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@panneau/medias",
3
- "version": "3.0.245",
3
+ "version": "3.0.247",
4
4
  "description": "",
5
5
  "keywords": [
6
6
  "javascript"
@@ -64,8 +64,8 @@
64
64
  "@panneau/element-media-player": "^3.0.244",
65
65
  "@panneau/element-pagination": "^3.0.244",
66
66
  "@panneau/element-table": "^3.0.244",
67
- "@panneau/field-upload": "^3.0.245",
68
- "@panneau/filter-filters": "^3.0.244",
67
+ "@panneau/field-upload": "^3.0.247",
68
+ "@panneau/filter-filters": "^3.0.247",
69
69
  "classnames": "^2.5.1",
70
70
  "lodash": "^4.17.21",
71
71
  "prop-types": "^15.7.2",
@@ -74,5 +74,5 @@
74
74
  "publishConfig": {
75
75
  "access": "public"
76
76
  },
77
- "gitHead": "9365cf9236eaa94e879099b12cccb5cf22645e1e"
77
+ "gitHead": "a8c051170781e27da715dcd48d808c0468cc5367"
78
78
  }