@panneau/medias 3.0.182 → 3.0.184

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 (3) hide show
  1. package/es/index.js +37 -22
  2. package/lib/index.js +37 -22
  3. package/package.json +2 -2
package/es/index.js CHANGED
@@ -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';
@@ -733,7 +734,8 @@ var defaultColumns = [{
733
734
  var defaultFilters = [{
734
735
  id: 'search',
735
736
  component: 'search',
736
- name: 'search'
737
+ name: 'search',
738
+ width: 220
737
739
  }, {
738
740
  id: 'types',
739
741
  component: 'select',
@@ -818,6 +820,7 @@ var propTypes$5 = {
818
820
  layout: PropTypes.string,
819
821
  layouts: PropTypes.arrayOf(PropTypes.shape({})),
820
822
  theme: PropTypes.string,
823
+ onUpload: PropTypes.func,
821
824
  onItemsChange: PropTypes.func,
822
825
  onLayoutChange: PropTypes.func,
823
826
  selectable: PropTypes.bool,
@@ -835,7 +838,6 @@ var defaultProps$5 = {
835
838
  items: null,
836
839
  extraItems: null,
837
840
  types: null,
838
- buttons: null,
839
841
  filters: defaultFilters,
840
842
  columns: defaultColumns,
841
843
  fields: defaultFields,
@@ -854,6 +856,7 @@ var defaultProps$5 = {
854
856
  })
855
857
  }],
856
858
  theme: null,
859
+ onUpload: null,
857
860
  onItemsChange: null,
858
861
  onLayoutChange: null,
859
862
  selectable: null,
@@ -879,6 +882,7 @@ function MediasBrowser(_ref) {
879
882
  initialLayout = _ref.layout,
880
883
  layouts = _ref.layouts,
881
884
  theme = _ref.theme,
885
+ onUpload = _ref.onUpload,
882
886
  onItemsChange = _ref.onItemsChange,
883
887
  onLayoutChange = _ref.onLayoutChange,
884
888
  selectable = _ref.selectable,
@@ -959,7 +963,8 @@ function MediasBrowser(_ref) {
959
963
  lastPage = _useMedias$pagination2.lastPage,
960
964
  total = _useMedias$pagination2.total,
961
965
  _useMedias$pages = _useMedias.pages,
962
- pages = _useMedias$pages === void 0 ? null : _useMedias$pages;
966
+ pages = _useMedias$pages === void 0 ? null : _useMedias$pages,
967
+ reload = _useMedias.reload;
963
968
 
964
969
  // For picker
965
970
  useEffect(function () {
@@ -995,6 +1000,21 @@ function MediasBrowser(_ref) {
995
1000
  setCurrentMedia(null);
996
1001
  updateItem(item);
997
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]);
998
1018
  var pagination = /*#__PURE__*/React.createElement(Pagination, {
999
1019
  page: page,
1000
1020
  lastPage: lastPage,
@@ -1106,7 +1126,8 @@ function MediasBrowser(_ref) {
1106
1126
  className: "ms-auto w-auto text-nowrap mt-2",
1107
1127
  withButton: true,
1108
1128
  withoutMedia: true,
1109
- uppyConfig: uppyConfig
1129
+ uppyConfig: uppyConfig,
1130
+ onChange: onMediaUploaded
1110
1131
  }) : null), /*#__PURE__*/React.createElement("div", {
1111
1132
  className: classNames(['d-flex', 'mt-1', 'mb-3', {
1112
1133
  'justify-content-between': hasLayouts,
@@ -1221,20 +1242,10 @@ function MediasPicker(_ref) {
1221
1242
  props = _objectWithoutProperties(_ref, _excluded$4);
1222
1243
  var _useMediasForm = useMediasForm(),
1223
1244
  currentMedia = _useMediasForm.media;
1224
-
1225
- // For selection
1226
- var _useState = useState(initialItems),
1245
+ var _useState = useState(initialSelectedItems || null),
1227
1246
  _useState2 = _slicedToArray(_useState, 2),
1228
- pageItems = _useState2[0],
1229
- setItems = _useState2[1];
1230
- var disabled = pageItems === null || pageItems.length < 1;
1231
- var onItemsChange = useCallback(function (newPageItems) {
1232
- setItems(newPageItems);
1233
- }, [setItems]);
1234
- var _useState3 = useState(initialSelectedItems || null),
1235
- _useState4 = _slicedToArray(_useState3, 2),
1236
- selectedItems = _useState4[0],
1237
- setSelectedItems = _useState4[1];
1247
+ selectedItems = _useState2[0],
1248
+ setSelectedItems = _useState2[1];
1238
1249
  var onSelectionChange = useCallback(function (newSelection) {
1239
1250
  setSelectedItems(newSelection);
1240
1251
  }, [setSelectedItems]);
@@ -1249,9 +1260,10 @@ function MediasPicker(_ref) {
1249
1260
  }, [selectedItems, parentOnSelectionChange]);
1250
1261
  var onConfirmSelection = useCallback(function () {
1251
1262
  if (onChange !== null) {
1252
- onChange(selectedItems);
1263
+ onChange(selectedItems || null);
1253
1264
  }
1254
1265
  }, [selectedItems, onChange]);
1266
+ var empty = selectedItems === null || isArray(selectedItems) && selectedItems.length === 0;
1255
1267
  return /*#__PURE__*/React.createElement("div", {
1256
1268
  className: className
1257
1269
  }, /*#__PURE__*/React.createElement(MediasBrowser, Object.assign({
@@ -1261,7 +1273,6 @@ function MediasPicker(_ref) {
1261
1273
  selectedItems: selectedItems,
1262
1274
  onSelectionChange: onSelectionChange,
1263
1275
  multipleSelection: multipleSelection,
1264
- onItemsChange: onItemsChange,
1265
1276
  types: types
1266
1277
  // extraItems={
1267
1278
  // !multiple && initialSelectedItems !== null
@@ -1287,10 +1298,14 @@ function MediasPicker(_ref) {
1287
1298
  type: "button",
1288
1299
  theme: "primary",
1289
1300
  onClick: onConfirmSelection,
1290
- disabled: disabled,
1291
- outline: disabled,
1292
1301
  className: "d-block"
1293
- }, /*#__PURE__*/React.createElement(FormattedMessage, {
1302
+ }, empty ? /*#__PURE__*/React.createElement(FormattedMessage, {
1303
+ id: "Krgf6j",
1304
+ defaultMessage: [{
1305
+ "type": 0,
1306
+ "value": "Clear selection"
1307
+ }]
1308
+ }) : /*#__PURE__*/React.createElement(FormattedMessage, {
1294
1309
  id: "rvOVCV",
1295
1310
  defaultMessage: [{
1296
1311
  "type": 0,
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');
@@ -735,7 +736,8 @@ var defaultColumns = [{
735
736
  var defaultFilters = [{
736
737
  id: 'search',
737
738
  component: 'search',
738
- name: 'search'
739
+ name: 'search',
740
+ width: 220
739
741
  }, {
740
742
  id: 'types',
741
743
  component: 'select',
@@ -820,6 +822,7 @@ var propTypes$5 = {
820
822
  layout: PropTypes.string,
821
823
  layouts: PropTypes.arrayOf(PropTypes.shape({})),
822
824
  theme: PropTypes.string,
825
+ onUpload: PropTypes.func,
823
826
  onItemsChange: PropTypes.func,
824
827
  onLayoutChange: PropTypes.func,
825
828
  selectable: PropTypes.bool,
@@ -837,7 +840,6 @@ var defaultProps$5 = {
837
840
  items: null,
838
841
  extraItems: null,
839
842
  types: null,
840
- buttons: null,
841
843
  filters: defaultFilters,
842
844
  columns: defaultColumns,
843
845
  fields: defaultFields,
@@ -856,6 +858,7 @@ var defaultProps$5 = {
856
858
  })
857
859
  }],
858
860
  theme: null,
861
+ onUpload: null,
859
862
  onItemsChange: null,
860
863
  onLayoutChange: null,
861
864
  selectable: null,
@@ -881,6 +884,7 @@ function MediasBrowser(_ref) {
881
884
  initialLayout = _ref.layout,
882
885
  layouts = _ref.layouts,
883
886
  theme = _ref.theme,
887
+ onUpload = _ref.onUpload,
884
888
  onItemsChange = _ref.onItemsChange,
885
889
  onLayoutChange = _ref.onLayoutChange,
886
890
  selectable = _ref.selectable,
@@ -961,7 +965,8 @@ function MediasBrowser(_ref) {
961
965
  lastPage = _useMedias$pagination2.lastPage,
962
966
  total = _useMedias$pagination2.total,
963
967
  _useMedias$pages = _useMedias.pages,
964
- pages = _useMedias$pages === void 0 ? null : _useMedias$pages;
968
+ pages = _useMedias$pages === void 0 ? null : _useMedias$pages,
969
+ reload = _useMedias.reload;
965
970
 
966
971
  // For picker
967
972
  React.useEffect(function () {
@@ -997,6 +1002,21 @@ function MediasBrowser(_ref) {
997
1002
  setCurrentMedia(null);
998
1003
  updateItem(item);
999
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]);
1000
1020
  var pagination = /*#__PURE__*/React.createElement(Pagination, {
1001
1021
  page: page,
1002
1022
  lastPage: lastPage,
@@ -1108,7 +1128,8 @@ function MediasBrowser(_ref) {
1108
1128
  className: "ms-auto w-auto text-nowrap mt-2",
1109
1129
  withButton: true,
1110
1130
  withoutMedia: true,
1111
- uppyConfig: uppyConfig
1131
+ uppyConfig: uppyConfig,
1132
+ onChange: onMediaUploaded
1112
1133
  }) : null), /*#__PURE__*/React.createElement("div", {
1113
1134
  className: classNames(['d-flex', 'mt-1', 'mb-3', {
1114
1135
  'justify-content-between': hasLayouts,
@@ -1223,20 +1244,10 @@ function MediasPicker(_ref) {
1223
1244
  props = _objectWithoutProperties(_ref, _excluded$4);
1224
1245
  var _useMediasForm = useMediasForm(),
1225
1246
  currentMedia = _useMediasForm.media;
1226
-
1227
- // For selection
1228
- var _useState = React.useState(initialItems),
1247
+ var _useState = React.useState(initialSelectedItems || null),
1229
1248
  _useState2 = _slicedToArray(_useState, 2),
1230
- pageItems = _useState2[0],
1231
- setItems = _useState2[1];
1232
- var disabled = pageItems === null || pageItems.length < 1;
1233
- var onItemsChange = React.useCallback(function (newPageItems) {
1234
- setItems(newPageItems);
1235
- }, [setItems]);
1236
- var _useState3 = React.useState(initialSelectedItems || null),
1237
- _useState4 = _slicedToArray(_useState3, 2),
1238
- selectedItems = _useState4[0],
1239
- setSelectedItems = _useState4[1];
1249
+ selectedItems = _useState2[0],
1250
+ setSelectedItems = _useState2[1];
1240
1251
  var onSelectionChange = React.useCallback(function (newSelection) {
1241
1252
  setSelectedItems(newSelection);
1242
1253
  }, [setSelectedItems]);
@@ -1251,9 +1262,10 @@ function MediasPicker(_ref) {
1251
1262
  }, [selectedItems, parentOnSelectionChange]);
1252
1263
  var onConfirmSelection = React.useCallback(function () {
1253
1264
  if (onChange !== null) {
1254
- onChange(selectedItems);
1265
+ onChange(selectedItems || null);
1255
1266
  }
1256
1267
  }, [selectedItems, onChange]);
1268
+ var empty = selectedItems === null || isArray(selectedItems) && selectedItems.length === 0;
1257
1269
  return /*#__PURE__*/React.createElement("div", {
1258
1270
  className: className
1259
1271
  }, /*#__PURE__*/React.createElement(MediasBrowser, Object.assign({
@@ -1263,7 +1275,6 @@ function MediasPicker(_ref) {
1263
1275
  selectedItems: selectedItems,
1264
1276
  onSelectionChange: onSelectionChange,
1265
1277
  multipleSelection: multipleSelection,
1266
- onItemsChange: onItemsChange,
1267
1278
  types: types
1268
1279
  // extraItems={
1269
1280
  // !multiple && initialSelectedItems !== null
@@ -1289,10 +1300,14 @@ function MediasPicker(_ref) {
1289
1300
  type: "button",
1290
1301
  theme: "primary",
1291
1302
  onClick: onConfirmSelection,
1292
- disabled: disabled,
1293
- outline: disabled,
1294
1303
  className: "d-block"
1295
- }, /*#__PURE__*/React.createElement(reactIntl.FormattedMessage, {
1304
+ }, empty ? /*#__PURE__*/React.createElement(reactIntl.FormattedMessage, {
1305
+ id: "Krgf6j",
1306
+ defaultMessage: [{
1307
+ "type": 0,
1308
+ "value": "Clear selection"
1309
+ }]
1310
+ }) : /*#__PURE__*/React.createElement(reactIntl.FormattedMessage, {
1296
1311
  id: "rvOVCV",
1297
1312
  defaultMessage: [{
1298
1313
  "type": 0,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@panneau/medias",
3
- "version": "3.0.182",
3
+ "version": "3.0.184",
4
4
  "description": "",
5
5
  "keywords": [
6
6
  "javascript"
@@ -69,5 +69,5 @@
69
69
  "publishConfig": {
70
70
  "access": "public"
71
71
  },
72
- "gitHead": "27626681ce1bcf3e4779ecabeb5d69c58df4d351"
72
+ "gitHead": "1d2948618d41595e4c6a40a72f1d9f196cf369ef"
73
73
  }