@panneau/medias 3.0.172 → 3.0.173

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (3) hide show
  1. package/es/index.js +53 -31
  2. package/lib/index.js +52 -30
  3. package/package.json +3 -3
package/es/index.js CHANGED
@@ -23,7 +23,7 @@ import MediaCard from '@panneau/element-media-card';
23
23
  import Pagination from '@panneau/element-pagination';
24
24
  import Table from '@panneau/element-table';
25
25
  import Filters from '@panneau/filter-filters';
26
- import { useItems, useData, useApi } from '@panneau/data';
26
+ import { useItemsStore, useData, useApi } from '@panneau/data';
27
27
 
28
28
  /* eslint-disable react/jsx-props-no-spreading */
29
29
  var MediasApiContext = /*#__PURE__*/React.createContext(null);
@@ -60,7 +60,7 @@ function MediasApiProvider(_ref) {
60
60
  MediasApiProvider.propTypes = propTypes$9;
61
61
  MediasApiProvider.defaultProps = defaultProps$9;
62
62
 
63
- var _excluded$7 = ["items", "pageItems"];
63
+ var _excluded$7 = ["items"];
64
64
  var useMedias = function useMedias() {
65
65
  var query = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : null;
66
66
  var page = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;
@@ -71,18 +71,18 @@ var useMedias = function useMedias() {
71
71
  var requestedPage = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : null;
72
72
  return api.get(query, requestedPage, count);
73
73
  }, [api, query, count]);
74
- var _useItems = useItems(_objectSpread({
74
+ var _useItemsStore = useItemsStore('medias', _objectSpread({
75
75
  getPage: page !== null ? getItems : null,
76
76
  getItems: page === null ? getItems : null,
77
- page: page
77
+ page: page,
78
+ count: count,
79
+ query: query
78
80
  }, opts)),
79
- items = _useItems.items,
80
- pageItems = _useItems.pageItems,
81
- request = _objectWithoutProperties(_useItems, _excluded$7);
81
+ items = _useItemsStore.items,
82
+ props = _objectWithoutProperties(_useItemsStore, _excluded$7);
82
83
  return _objectSpread({
83
- medias: page !== null ? pageItems : items,
84
- allMedias: items
85
- }, request);
84
+ items: items
85
+ }, props);
86
86
  };
87
87
  var useMedias$1 = useMedias;
88
88
 
@@ -788,6 +788,7 @@ var propTypes$5 = {
788
788
  onLayoutChange: PropTypes.func,
789
789
  selectedCount: PropTypes.number,
790
790
  onClearSelected: PropTypes.func,
791
+ withStickySelection: PropTypes.bool,
791
792
  className: PropTypes.string,
792
793
  buttonsClassName: PropTypes.string
793
794
  };
@@ -819,6 +820,7 @@ var defaultProps$5 = {
819
820
  onLayoutChange: null,
820
821
  selectedCount: null,
821
822
  onClearSelected: null,
823
+ withStickySelection: false,
822
824
  className: null,
823
825
  buttonsClassName: null
824
826
  };
@@ -840,6 +842,7 @@ function MediasBrowser(_ref) {
840
842
  onLayoutChange = _ref.onLayoutChange,
841
843
  selectedCount = _ref.selectedCount,
842
844
  onClearSelected = _ref.onClearSelected,
845
+ withStickySelection = _ref.withStickySelection,
843
846
  className = _ref.className,
844
847
  buttonsClassName = _ref.buttonsClassName;
845
848
  var _useState = useState(initialItems || null),
@@ -884,10 +887,16 @@ function MediasBrowser(_ref) {
884
887
  var _useMedias = useMedias$1(query, page, count, {
885
888
  items: baseItems
886
889
  }),
887
- items = _useMedias.medias,
888
- loading = _useMedias.loading,
889
- lastPage = _useMedias.lastPage,
890
- total = _useMedias.total;
890
+ items = _useMedias.items,
891
+ allItems = _useMedias.allItems,
892
+ _useMedias$loading = _useMedias.loading,
893
+ loading = _useMedias$loading === void 0 ? false : _useMedias$loading,
894
+ _useMedias$updateItem = _useMedias.updateItem,
895
+ updateItem = _useMedias$updateItem === void 0 ? null : _useMedias$updateItem,
896
+ _useMedias$pagination = _useMedias.pagination,
897
+ _useMedias$pagination2 = _useMedias$pagination === void 0 ? {} : _useMedias$pagination,
898
+ lastPage = _useMedias$pagination2.lastPage,
899
+ total = _useMedias$pagination2.total;
891
900
 
892
901
  // For picker
893
902
  useEffect(function () {
@@ -919,10 +928,10 @@ function MediasBrowser(_ref) {
919
928
  var onCloseMedia = useCallback(function () {
920
929
  setCurrentMedia(null);
921
930
  }, [setCurrentMedia]);
922
- var onSaveMedia = useCallback(function () {
931
+ var onSaveMedia = useCallback(function (item) {
923
932
  setCurrentMedia(null);
924
- onQueryReset();
925
- }, [setCurrentMedia, onQueryReset]);
933
+ updateItem(item);
934
+ }, [setCurrentMedia, updateItem]);
926
935
  var pagination = /*#__PURE__*/React.createElement(Pagination, {
927
936
  page: page,
928
937
  lastPage: lastPage,
@@ -951,13 +960,24 @@ function MediasBrowser(_ref) {
951
960
  return filters;
952
961
  }, [filters, types]);
953
962
  var finalItems = useMemo(function () {
954
- if (page === 1 && extraItems !== null) {
955
- return uniqBy([].concat(_toConsumableArray(extraItems), _toConsumableArray(items || [])), function (it) {
963
+ if (withStickySelection && extraItems !== null) {
964
+ return uniqBy([].concat(_toConsumableArray((extraItems || []).map(function (item) {
965
+ var _item$id = item.id,
966
+ itemId = _item$id === void 0 ? null : _item$id;
967
+ return (allItems || []).find(function () {
968
+ var _ref5 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},
969
+ _ref5$id = _ref5.id,
970
+ otherId = _ref5$id === void 0 ? null : _ref5$id;
971
+ return otherId === itemId;
972
+ }) || item || null;
973
+ }).filter(function (it) {
974
+ return it !== null;
975
+ })), _toConsumableArray(items || [])), function (it) {
956
976
  return it === null || it === void 0 ? void 0 : it.id;
957
977
  });
958
978
  }
959
979
  return items;
960
- }, [items, page, extraItems]);
980
+ }, [items, page, allItems, withStickySelection, extraItems]);
961
981
  return /*#__PURE__*/React.createElement("div", {
962
982
  className: classNames([styles.container, className])
963
983
  }, currentMedia !== null ? /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement("div", {
@@ -1096,18 +1116,20 @@ function MediasPicker(_ref) {
1096
1116
  tableProps = _ref.tableProps,
1097
1117
  className = _ref.className,
1098
1118
  props = _objectWithoutProperties(_ref, _excluded$4);
1099
- // For selection only
1119
+ var _useMediasForm = useMediasForm(),
1120
+ currentMedia = _useMediasForm.media;
1121
+
1122
+ // For selection
1100
1123
  var _useState = useState(initialItems),
1101
1124
  _useState2 = _slicedToArray(_useState, 2),
1102
- currentItems = _useState2[0],
1125
+ pageItems = _useState2[0],
1103
1126
  setItems = _useState2[1];
1104
- var onItemsChange = useCallback(function (pageItems) {
1105
- setItems(pageItems);
1127
+ var disabled = pageItems === null || pageItems.length < 1;
1128
+ var onItemsChange = useCallback(function (newPageItems) {
1129
+ setItems(newPageItems);
1106
1130
  }, [setItems]);
1107
- var _useMediasForm = useMediasForm(),
1108
- currentMedia = _useMediasForm.media;
1109
1131
  var _useItemSelection = useItemSelection({
1110
- currentItems: currentItems,
1132
+ items: pageItems,
1111
1133
  selectedItems: initialSelectedItems,
1112
1134
  onSelectionChange: onChange,
1113
1135
  multipleSelection: multiple
@@ -1118,7 +1140,6 @@ function MediasPicker(_ref) {
1118
1140
  pageSelected = _useItemSelection.pageSelected,
1119
1141
  selectedCount = _useItemSelection.selectedCount,
1120
1142
  selectedItems = _useItemSelection.selectedItems;
1121
- var disabled = currentItems === null || currentItems.length < 1;
1122
1143
  var onConfirmSelection = useCallback(function () {
1123
1144
  if (onConfirm !== null) {
1124
1145
  onConfirm(selectedItems);
@@ -1134,13 +1155,14 @@ function MediasPicker(_ref) {
1134
1155
  onSelectPage: onSelectPage,
1135
1156
  selectedItems: selectedItems,
1136
1157
  pageSelected: pageSelected
1137
- }, tableProps)
1138
- // items={initialItems} // TODO: fix useItems if using this
1158
+ }, tableProps),
1159
+ items: initialItems // TODO: fix useItems if actually using this
1139
1160
  ,
1140
1161
  onItemsChange: onItemsChange,
1141
1162
  selectedCount: selectedCount,
1142
1163
  onClearSelected: onClearSelected,
1143
- types: types
1164
+ types: types,
1165
+ extraItems: !multiple && initialSelectedItems !== null ? [initialSelectedItems] : initialSelectedItems
1144
1166
  }, props)), multiple && !withoutButtons && currentMedia === null ? /*#__PURE__*/React.createElement("div", {
1145
1167
  className: "d-flex w-100 align-items-end justify-content-end mt-3"
1146
1168
  }, /*#__PURE__*/React.createElement("div", {
package/lib/index.js CHANGED
@@ -62,7 +62,7 @@ function MediasApiProvider(_ref) {
62
62
  MediasApiProvider.propTypes = propTypes$9;
63
63
  MediasApiProvider.defaultProps = defaultProps$9;
64
64
 
65
- var _excluded$7 = ["items", "pageItems"];
65
+ var _excluded$7 = ["items"];
66
66
  var useMedias = function useMedias() {
67
67
  var query = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : null;
68
68
  var page = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;
@@ -73,18 +73,18 @@ var useMedias = function useMedias() {
73
73
  var requestedPage = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : null;
74
74
  return api.get(query, requestedPage, count);
75
75
  }, [api, query, count]);
76
- var _useItems = data.useItems(_objectSpread({
76
+ var _useItemsStore = data.useItemsStore('medias', _objectSpread({
77
77
  getPage: page !== null ? getItems : null,
78
78
  getItems: page === null ? getItems : null,
79
- page: page
79
+ page: page,
80
+ count: count,
81
+ query: query
80
82
  }, opts)),
81
- items = _useItems.items,
82
- pageItems = _useItems.pageItems,
83
- request = _objectWithoutProperties(_useItems, _excluded$7);
83
+ items = _useItemsStore.items,
84
+ props = _objectWithoutProperties(_useItemsStore, _excluded$7);
84
85
  return _objectSpread({
85
- medias: page !== null ? pageItems : items,
86
- allMedias: items
87
- }, request);
86
+ items: items
87
+ }, props);
88
88
  };
89
89
  var useMedias$1 = useMedias;
90
90
 
@@ -790,6 +790,7 @@ var propTypes$5 = {
790
790
  onLayoutChange: PropTypes.func,
791
791
  selectedCount: PropTypes.number,
792
792
  onClearSelected: PropTypes.func,
793
+ withStickySelection: PropTypes.bool,
793
794
  className: PropTypes.string,
794
795
  buttonsClassName: PropTypes.string
795
796
  };
@@ -821,6 +822,7 @@ var defaultProps$5 = {
821
822
  onLayoutChange: null,
822
823
  selectedCount: null,
823
824
  onClearSelected: null,
825
+ withStickySelection: false,
824
826
  className: null,
825
827
  buttonsClassName: null
826
828
  };
@@ -842,6 +844,7 @@ function MediasBrowser(_ref) {
842
844
  onLayoutChange = _ref.onLayoutChange,
843
845
  selectedCount = _ref.selectedCount,
844
846
  onClearSelected = _ref.onClearSelected,
847
+ withStickySelection = _ref.withStickySelection,
845
848
  className = _ref.className,
846
849
  buttonsClassName = _ref.buttonsClassName;
847
850
  var _useState = React.useState(initialItems || null),
@@ -886,10 +889,16 @@ function MediasBrowser(_ref) {
886
889
  var _useMedias = useMedias$1(query, page, count, {
887
890
  items: baseItems
888
891
  }),
889
- items = _useMedias.medias,
890
- loading = _useMedias.loading,
891
- lastPage = _useMedias.lastPage,
892
- total = _useMedias.total;
892
+ items = _useMedias.items,
893
+ allItems = _useMedias.allItems,
894
+ _useMedias$loading = _useMedias.loading,
895
+ loading = _useMedias$loading === void 0 ? false : _useMedias$loading,
896
+ _useMedias$updateItem = _useMedias.updateItem,
897
+ updateItem = _useMedias$updateItem === void 0 ? null : _useMedias$updateItem,
898
+ _useMedias$pagination = _useMedias.pagination,
899
+ _useMedias$pagination2 = _useMedias$pagination === void 0 ? {} : _useMedias$pagination,
900
+ lastPage = _useMedias$pagination2.lastPage,
901
+ total = _useMedias$pagination2.total;
893
902
 
894
903
  // For picker
895
904
  React.useEffect(function () {
@@ -921,10 +930,10 @@ function MediasBrowser(_ref) {
921
930
  var onCloseMedia = React.useCallback(function () {
922
931
  setCurrentMedia(null);
923
932
  }, [setCurrentMedia]);
924
- var onSaveMedia = React.useCallback(function () {
933
+ var onSaveMedia = React.useCallback(function (item) {
925
934
  setCurrentMedia(null);
926
- onQueryReset();
927
- }, [setCurrentMedia, onQueryReset]);
935
+ updateItem(item);
936
+ }, [setCurrentMedia, updateItem]);
928
937
  var pagination = /*#__PURE__*/React.createElement(Pagination, {
929
938
  page: page,
930
939
  lastPage: lastPage,
@@ -953,13 +962,24 @@ function MediasBrowser(_ref) {
953
962
  return filters;
954
963
  }, [filters, types]);
955
964
  var finalItems = React.useMemo(function () {
956
- if (page === 1 && extraItems !== null) {
957
- return uniqBy([].concat(_toConsumableArray(extraItems), _toConsumableArray(items || [])), function (it) {
965
+ if (withStickySelection && extraItems !== null) {
966
+ return uniqBy([].concat(_toConsumableArray((extraItems || []).map(function (item) {
967
+ var _item$id = item.id,
968
+ itemId = _item$id === void 0 ? null : _item$id;
969
+ return (allItems || []).find(function () {
970
+ var _ref5 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},
971
+ _ref5$id = _ref5.id,
972
+ otherId = _ref5$id === void 0 ? null : _ref5$id;
973
+ return otherId === itemId;
974
+ }) || item || null;
975
+ }).filter(function (it) {
976
+ return it !== null;
977
+ })), _toConsumableArray(items || [])), function (it) {
958
978
  return it === null || it === void 0 ? void 0 : it.id;
959
979
  });
960
980
  }
961
981
  return items;
962
- }, [items, page, extraItems]);
982
+ }, [items, page, allItems, withStickySelection, extraItems]);
963
983
  return /*#__PURE__*/React.createElement("div", {
964
984
  className: classNames([styles.container, className])
965
985
  }, currentMedia !== null ? /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement("div", {
@@ -1098,18 +1118,20 @@ function MediasPicker(_ref) {
1098
1118
  tableProps = _ref.tableProps,
1099
1119
  className = _ref.className,
1100
1120
  props = _objectWithoutProperties(_ref, _excluded$4);
1101
- // For selection only
1121
+ var _useMediasForm = useMediasForm(),
1122
+ currentMedia = _useMediasForm.media;
1123
+
1124
+ // For selection
1102
1125
  var _useState = React.useState(initialItems),
1103
1126
  _useState2 = _slicedToArray(_useState, 2),
1104
- currentItems = _useState2[0],
1127
+ pageItems = _useState2[0],
1105
1128
  setItems = _useState2[1];
1106
- var onItemsChange = React.useCallback(function (pageItems) {
1107
- setItems(pageItems);
1129
+ var disabled = pageItems === null || pageItems.length < 1;
1130
+ var onItemsChange = React.useCallback(function (newPageItems) {
1131
+ setItems(newPageItems);
1108
1132
  }, [setItems]);
1109
- var _useMediasForm = useMediasForm(),
1110
- currentMedia = _useMediasForm.media;
1111
1133
  var _useItemSelection = hooks.useItemSelection({
1112
- currentItems: currentItems,
1134
+ items: pageItems,
1113
1135
  selectedItems: initialSelectedItems,
1114
1136
  onSelectionChange: onChange,
1115
1137
  multipleSelection: multiple
@@ -1120,7 +1142,6 @@ function MediasPicker(_ref) {
1120
1142
  pageSelected = _useItemSelection.pageSelected,
1121
1143
  selectedCount = _useItemSelection.selectedCount,
1122
1144
  selectedItems = _useItemSelection.selectedItems;
1123
- var disabled = currentItems === null || currentItems.length < 1;
1124
1145
  var onConfirmSelection = React.useCallback(function () {
1125
1146
  if (onConfirm !== null) {
1126
1147
  onConfirm(selectedItems);
@@ -1136,13 +1157,14 @@ function MediasPicker(_ref) {
1136
1157
  onSelectPage: onSelectPage,
1137
1158
  selectedItems: selectedItems,
1138
1159
  pageSelected: pageSelected
1139
- }, tableProps)
1140
- // items={initialItems} // TODO: fix useItems if using this
1160
+ }, tableProps),
1161
+ items: initialItems // TODO: fix useItems if actually using this
1141
1162
  ,
1142
1163
  onItemsChange: onItemsChange,
1143
1164
  selectedCount: selectedCount,
1144
1165
  onClearSelected: onClearSelected,
1145
- types: types
1166
+ types: types,
1167
+ extraItems: !multiple && initialSelectedItems !== null ? [initialSelectedItems] : initialSelectedItems
1146
1168
  }, props)), multiple && !withoutButtons && currentMedia === null ? /*#__PURE__*/React.createElement("div", {
1147
1169
  className: "d-flex w-100 align-items-end justify-content-end mt-3"
1148
1170
  }, /*#__PURE__*/React.createElement("div", {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@panneau/medias",
3
- "version": "3.0.172",
3
+ "version": "3.0.173",
4
4
  "description": "",
5
5
  "keywords": [
6
6
  "javascript"
@@ -47,7 +47,7 @@
47
47
  "dependencies": {
48
48
  "@babel/runtime": "^7.12.5",
49
49
  "@panneau/core": "^3.0.169",
50
- "@panneau/data": "^3.0.169",
50
+ "@panneau/data": "^3.0.173",
51
51
  "@panneau/display-image": "^3.0.172",
52
52
  "@panneau/element-button": "^3.0.169",
53
53
  "@panneau/element-buttons": "^3.0.169",
@@ -68,5 +68,5 @@
68
68
  "publishConfig": {
69
69
  "access": "public"
70
70
  },
71
- "gitHead": "74ada3ded1a27ab2d7008d67790d8431f57c5b0a"
71
+ "gitHead": "29037e4f0ed74d81586442a76daffcfb6d062200"
72
72
  }