@panneau/core 3.0.158 → 3.0.160

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/contexts.js CHANGED
@@ -300,7 +300,8 @@ var routes = PropTypes.shape({
300
300
  'resources.edit': PropTypes.string.isRequired,
301
301
  'resources.update': PropTypes.string.isRequired,
302
302
  'resources.delete': PropTypes.string.isRequired,
303
- 'resources.destroy': PropTypes.string.isRequired
303
+ 'resources.destroy': PropTypes.string.isRequired,
304
+ 'resources.duplicate': PropTypes.string.isRequired
304
305
  });
305
306
  var intl = PropTypes.shape({
306
307
  locale: PropTypes.string,
package/es/hooks.js CHANGED
@@ -1,22 +1,134 @@
1
+ import _objectSpread from '@babel/runtime/helpers/objectSpread2';
2
+ import isString from 'lodash/isString';
1
3
  import { useRef, useEffect, useCallback, useState, useMemo } from 'react';
2
4
  import { EventsManager, MediasParser } from '@panneau/core';
3
5
  import { createUseEvent, loadPackage } from '@panneau/core/utils';
4
6
  import _defineProperty from '@babel/runtime/helpers/defineProperty';
5
7
  import _slicedToArray from '@babel/runtime/helpers/slicedToArray';
6
- import _objectSpread from '@babel/runtime/helpers/objectSpread2';
7
8
  import _toConsumableArray from '@babel/runtime/helpers/toConsumableArray';
8
9
  import _objectWithoutProperties from '@babel/runtime/helpers/objectWithoutProperties';
9
10
  import { getCsrfToken, postJSON, getCSRFHeaders } from '@folklore/fetch';
10
11
  import get from 'lodash/get';
11
12
  import isArray from 'lodash/isArray';
12
13
  import isObject from 'lodash/isObject';
13
- import isString from 'lodash/isString';
14
- import { useFieldsManager, usePanneauResources, useResource, useUrlGenerator } from '@panneau/core/contexts';
15
14
  import uniqBy from 'lodash/uniqBy';
15
+ import { useFieldsManager, usePanneauResources, useResource, useUrlGenerator } from '@panneau/core/contexts';
16
16
  import { useIntl } from 'react-intl';
17
17
  import dayjs from 'dayjs';
18
18
  import { match } from 'css-mediaquery';
19
19
 
20
+ var useActions = function useActions() {
21
+ var item = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : null;
22
+ var actions = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : [];
23
+ var urlGenerator = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : null;
24
+ var _ref = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {},
25
+ _ref$iconsOnly = _ref.iconsOnly,
26
+ iconsOnly = _ref$iconsOnly === void 0 ? true : _ref$iconsOnly,
27
+ _ref$showLabel = _ref.showLabel,
28
+ showLabel = _ref$showLabel === void 0 ? null : _ref$showLabel,
29
+ _ref$editLabel = _ref.editLabel,
30
+ editLabel = _ref$editLabel === void 0 ? null : _ref$editLabel,
31
+ _ref$deleteLabel = _ref.deleteLabel,
32
+ deleteLabel = _ref$deleteLabel === void 0 ? null : _ref$deleteLabel,
33
+ _ref$duplicateLabel = _ref.duplicateLabel,
34
+ duplicateLabel = _ref$duplicateLabel === void 0 ? null : _ref$duplicateLabel,
35
+ _ref$onClickShow = _ref.onClickShow,
36
+ onClickShow = _ref$onClickShow === void 0 ? null : _ref$onClickShow,
37
+ _ref$onClickEdit = _ref.onClickEdit,
38
+ onClickEdit = _ref$onClickEdit === void 0 ? null : _ref$onClickEdit,
39
+ _ref$onClickDelete = _ref.onClickDelete,
40
+ onClickDelete = _ref$onClickDelete === void 0 ? null : _ref$onClickDelete,
41
+ _ref$onClickDuplicate = _ref.onClickDuplicate,
42
+ onClickDuplicate = _ref$onClickDuplicate === void 0 ? null : _ref$onClickDuplicate,
43
+ _ref$getShowPropsFrom = _ref.getShowPropsFromItem,
44
+ getShowPropsFromItem = _ref$getShowPropsFrom === void 0 ? null : _ref$getShowPropsFrom,
45
+ _ref$getEditPropsFrom = _ref.getEditPropsFromItem,
46
+ getEditPropsFromItem = _ref$getEditPropsFrom === void 0 ? null : _ref$getEditPropsFrom,
47
+ _ref$getDeletePropsFr = _ref.getDeletePropsFromItem,
48
+ getDeletePropsFromItem = _ref$getDeletePropsFr === void 0 ? null : _ref$getDeletePropsFr,
49
+ _ref$getDuplicateProp = _ref.getDuplicatePropsFromItem,
50
+ getDuplicatePropsFromItem = _ref$getDuplicateProp === void 0 ? null : _ref$getDuplicateProp,
51
+ _ref$showUrl = _ref.showUrl,
52
+ showUrl = _ref$showUrl === void 0 ? null : _ref$showUrl,
53
+ _ref$withoutItemShowU = _ref.withoutItemShowUrl,
54
+ withoutItemShowUrl = _ref$withoutItemShowU === void 0 ? null : _ref$withoutItemShowU,
55
+ _ref$preferDeleteModa = _ref.preferDeleteModal,
56
+ preferDeleteModal = _ref$preferDeleteModa === void 0 ? true : _ref$preferDeleteModa,
57
+ _ref$preferDuplicateM = _ref.preferDuplicateModal,
58
+ preferDuplicateModal = _ref$preferDuplicateM === void 0 ? true : _ref$preferDuplicateM;
59
+ var _ref2 = item || {},
60
+ id = _ref2.id,
61
+ _ref2$url = _ref2.url,
62
+ url = _ref2$url === void 0 ? null : _ref2$url;
63
+ var hasCustomShowUrl = showUrl !== null || url !== null;
64
+ return (actions || []).map(function (action) {
65
+ if (isString(action)) {
66
+ switch (action) {
67
+ case 'show':
68
+ return _objectSpread({
69
+ id: 'show',
70
+ component: 'show',
71
+ label: iconsOnly ? null : showLabel,
72
+ icon: iconsOnly ? 'eye-fill' : null,
73
+ href: urlGenerator !== null && (!hasCustomShowUrl || withoutItemShowUrl) ? urlGenerator('show', {
74
+ id: id
75
+ }) || null : showUrl || url,
76
+ external: hasCustomShowUrl,
77
+ theme: 'info',
78
+ target: '_blank',
79
+ onClick: onClickShow
80
+ }, getShowPropsFromItem !== null ? getShowPropsFromItem(item) : null);
81
+ case 'edit':
82
+ return _objectSpread({
83
+ id: 'edit',
84
+ component: 'edit',
85
+ label: iconsOnly ? null : editLabel,
86
+ icon: iconsOnly ? 'pencil-square' : null,
87
+ href: urlGenerator !== null ? urlGenerator('edit', {
88
+ id: id
89
+ }) || null : null,
90
+ theme: 'primary',
91
+ onClick: onClickEdit
92
+ }, getEditPropsFromItem !== null ? getEditPropsFromItem(item) : null);
93
+ case 'duplicate':
94
+ return _objectSpread({
95
+ id: 'duplicate',
96
+ component: 'duplicate',
97
+ label: iconsOnly ? null : duplicateLabel,
98
+ icon: iconsOnly ? 'copy' : null,
99
+ href: urlGenerator !== null && !preferDuplicateModal ? urlGenerator('duplicate', {
100
+ id: id
101
+ }) || null : null,
102
+ theme: 'warning',
103
+ onClick: onClickDuplicate,
104
+ endpoint: urlGenerator !== null && preferDeleteModal ? urlGenerator('duplicate', {
105
+ id: id
106
+ }) || null : null
107
+ }, getDuplicatePropsFromItem !== null ? getDuplicatePropsFromItem(item) : null);
108
+ case 'delete':
109
+ return _objectSpread({
110
+ id: 'delete',
111
+ component: 'delete',
112
+ label: iconsOnly ? null : deleteLabel,
113
+ icon: iconsOnly ? 'trash3' : null,
114
+ href: urlGenerator !== null && !preferDeleteModal ? urlGenerator('delete', {
115
+ id: id
116
+ }) || null : null,
117
+ theme: 'danger',
118
+ onClick: onClickDelete,
119
+ endpoint: urlGenerator !== null && preferDeleteModal ? urlGenerator('destroy', {
120
+ id: id
121
+ }) || null : null
122
+ }, getDeletePropsFromItem !== null ? getDeletePropsFromItem(item) : null);
123
+ }
124
+ }
125
+ return action;
126
+ }).filter(function (action) {
127
+ return action !== null;
128
+ });
129
+ };
130
+ var useActions$1 = useActions;
131
+
20
132
  var useAnimationFrame = function useAnimationFrame(onFrame) {
21
133
  var _ref = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {},
22
134
  _ref$disabled = _ref.disabled,
@@ -552,6 +664,156 @@ var useIsVisible = function useIsVisible() {
552
664
  };
553
665
  var useIsVisible$1 = useIsVisible;
554
666
 
667
+ function filterNullItems(items) {
668
+ return isArray(items) ? items.filter(function (it) {
669
+ return it !== null;
670
+ }) : items;
671
+ }
672
+ function getItemsArray(items) {
673
+ return filterNullItems(!isArray(items) && items !== null ? [items] : items);
674
+ }
675
+ var useItemSelection = function useItemSelection(_ref) {
676
+ var _ref$items = _ref.items,
677
+ items = _ref$items === void 0 ? null : _ref$items,
678
+ _ref$selectedItems = _ref.selectedItems,
679
+ initialSelectedItems = _ref$selectedItems === void 0 ? null : _ref$selectedItems,
680
+ _ref$multipleSelectio = _ref.multipleSelection,
681
+ multipleSelection = _ref$multipleSelectio === void 0 ? false : _ref$multipleSelectio,
682
+ _ref$onSelectionChang = _ref.onSelectionChange,
683
+ onSelectionChange = _ref$onSelectionChang === void 0 ? null : _ref$onSelectionChang;
684
+ var initialItems = getItemsArray(initialSelectedItems);
685
+ var _useState = useState(initialItems),
686
+ _useState2 = _slicedToArray(_useState, 2),
687
+ selectedItems = _useState2[0],
688
+ setSelectedItems = _useState2[1];
689
+ var onSelectItem = useCallback(function (item, index) {
690
+ var _ref2 = item || {},
691
+ _ref2$id = _ref2.id,
692
+ itemId = _ref2$id === void 0 ? null : _ref2$id;
693
+ var oldItem = (selectedItems || []).find(function (_ref3) {
694
+ var id = _ref3.id;
695
+ return id === itemId;
696
+ }) || null;
697
+ var newItems = [];
698
+ if (oldItem === null) {
699
+ newItems = selectedItems !== null && multipleSelection ? [].concat(_toConsumableArray(selectedItems), [item]) : [item];
700
+ } else {
701
+ newItems = (selectedItems || []).filter(function (_ref4) {
702
+ var id = _ref4.id;
703
+ return id !== itemId;
704
+ });
705
+ }
706
+ setSelectedItems(filterNullItems(newItems));
707
+ if (onSelectionChange !== null) {
708
+ var _ref5 = newItems || [],
709
+ _ref6 = _slicedToArray(_ref5, 1),
710
+ _ref6$ = _ref6[0],
711
+ firstItem = _ref6$ === void 0 ? null : _ref6$;
712
+ var finalValue = multipleSelection ? newItems : firstItem;
713
+ onSelectionChange(finalValue, item, index);
714
+ }
715
+ }, [selectedItems, onSelectionChange, multipleSelection]);
716
+ var onSelectItems = useCallback(function (newItems, index) {
717
+ var finalNewItems = filterNullItems(newItems);
718
+ setSelectedItems(finalNewItems);
719
+ if (onSelectionChange !== null) {
720
+ var _ref7 = finalNewItems || [],
721
+ _ref8 = _slicedToArray(_ref7, 1),
722
+ _ref8$ = _ref8[0],
723
+ firstItem = _ref8$ === void 0 ? null : _ref8$;
724
+ var finalValue = multipleSelection ? finalNewItems : firstItem;
725
+ onSelectionChange(finalValue, null, index);
726
+ }
727
+ }, [selectedItems, onSelectionChange, multipleSelection]);
728
+ var onSelectPage = useCallback(function () {
729
+ var pageSelected = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;
730
+ var nextItems = [];
731
+ if (!pageSelected) {
732
+ nextItems = uniqBy([].concat(_toConsumableArray(items || []), _toConsumableArray(selectedItems || [])), function () {
733
+ var _ref9 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},
734
+ _ref9$id = _ref9.id,
735
+ id = _ref9$id === void 0 ? null : _ref9$id;
736
+ return id;
737
+ });
738
+ } else {
739
+ var ids = (items || []).map(function () {
740
+ var _ref10 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},
741
+ _ref10$id = _ref10.id,
742
+ id = _ref10$id === void 0 ? null : _ref10$id;
743
+ return id;
744
+ }).filter(function (id) {
745
+ return id !== null;
746
+ });
747
+ nextItems = uniqBy((selectedItems || []).filter(function (it) {
748
+ var _ref11 = it || {},
749
+ _ref11$id = _ref11.id,
750
+ id = _ref11$id === void 0 ? null : _ref11$id;
751
+ return ids.indexOf(id) === -1;
752
+ }), function () {
753
+ var _ref12 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},
754
+ _ref12$id = _ref12.id,
755
+ id = _ref12$id === void 0 ? null : _ref12$id;
756
+ return id;
757
+ });
758
+ }
759
+ var finalNextItems = filterNullItems(nextItems);
760
+ setSelectedItems(finalNextItems);
761
+ if (onSelectionChange !== null) {
762
+ onSelectionChange(finalNextItems);
763
+ }
764
+ }, [items, selectedItems, setSelectedItems, onSelectionChange]);
765
+ var onClearSelected = useCallback(function () {
766
+ setSelectedItems([]);
767
+ if (onSelectionChange !== null) {
768
+ onSelectionChange(multipleSelection ? [] : null);
769
+ }
770
+ }, [setSelectedItems, onSelectionChange, multipleSelection]);
771
+ useEffect(function () {
772
+ setSelectedItems(getItemsArray(initialSelectedItems));
773
+ }, [initialSelectedItems]);
774
+ var pageSelected = useMemo(function () {
775
+ if (items === null || selectedItems === null) {
776
+ return false;
777
+ }
778
+ var ids = (items || []).map(function () {
779
+ var _ref13 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},
780
+ _ref13$id = _ref13.id,
781
+ id = _ref13$id === void 0 ? null : _ref13$id;
782
+ return id;
783
+ }).filter(function (id) {
784
+ return id !== null;
785
+ }) || [];
786
+ if (ids === null || ids.length === 0) {
787
+ return false;
788
+ }
789
+ var currentPageItems = (selectedItems || []).filter(function (it) {
790
+ var _ref14 = it || {},
791
+ _ref14$id = _ref14.id,
792
+ id = _ref14$id === void 0 ? null : _ref14$id;
793
+ return (ids || []).indexOf(id) !== -1;
794
+ }) || [];
795
+ return currentPageItems.length > 0 && currentPageItems.length === (items || []).length;
796
+ }, [selectedItems, items]);
797
+ var allSelected = useMemo(function () {
798
+ return selectedItems !== null && items !== null && selectedItems.length === items.length;
799
+ }, [selectedItems, items]);
800
+ var selectedCount = useMemo(function () {
801
+ return selectedItems !== null && selectedItems.length > 0 ? selectedItems.length : null;
802
+ }, [selectedItems]);
803
+ return {
804
+ onSelectItem: onSelectItem,
805
+ onSelectItems: onSelectItems,
806
+ onSelectPage: onSelectPage,
807
+ onClearSelected: onClearSelected,
808
+ pageSelected: pageSelected,
809
+ allSelected: allSelected,
810
+ selectedCount: selectedCount,
811
+ selectedItems: selectedItems,
812
+ setSelectedItems: setSelectedItems
813
+ };
814
+ };
815
+ var useItemSelection$1 = useItemSelection;
816
+
555
817
  var fontsMap = {
556
818
  loading: [],
557
819
  active: []
@@ -1104,154 +1366,4 @@ var eventsManager = typeof window !== 'undefined' ? new EventsManager(window) :
1104
1366
  var useWindowEvent = createUseEvent(eventsManager);
1105
1367
  var useWindowEvent$1 = useWindowEvent;
1106
1368
 
1107
- function filterNullItems(items) {
1108
- return isArray(items) ? items.filter(function (it) {
1109
- return it !== null;
1110
- }) : items;
1111
- }
1112
- function getItemsArray(items) {
1113
- return filterNullItems(!isArray(items) && items !== null ? [items] : items);
1114
- }
1115
- var useItemSelection = function useItemSelection(_ref) {
1116
- var _ref$items = _ref.items,
1117
- items = _ref$items === void 0 ? null : _ref$items,
1118
- _ref$selectedItems = _ref.selectedItems,
1119
- initialSelectedItems = _ref$selectedItems === void 0 ? null : _ref$selectedItems,
1120
- _ref$multipleSelectio = _ref.multipleSelection,
1121
- multipleSelection = _ref$multipleSelectio === void 0 ? false : _ref$multipleSelectio,
1122
- _ref$onSelectionChang = _ref.onSelectionChange,
1123
- onSelectionChange = _ref$onSelectionChang === void 0 ? null : _ref$onSelectionChang;
1124
- var initialItems = getItemsArray(initialSelectedItems);
1125
- var _useState = useState(initialItems),
1126
- _useState2 = _slicedToArray(_useState, 2),
1127
- selectedItems = _useState2[0],
1128
- setSelectedItems = _useState2[1];
1129
- var onSelectItem = useCallback(function (item, index) {
1130
- var _ref2 = item || {},
1131
- _ref2$id = _ref2.id,
1132
- itemId = _ref2$id === void 0 ? null : _ref2$id;
1133
- var oldItem = (selectedItems || []).find(function (_ref3) {
1134
- var id = _ref3.id;
1135
- return id === itemId;
1136
- }) || null;
1137
- var newItems = [];
1138
- if (oldItem === null) {
1139
- newItems = selectedItems !== null && multipleSelection ? [].concat(_toConsumableArray(selectedItems), [item]) : [item];
1140
- } else {
1141
- newItems = (selectedItems || []).filter(function (_ref4) {
1142
- var id = _ref4.id;
1143
- return id !== itemId;
1144
- });
1145
- }
1146
- setSelectedItems(filterNullItems(newItems));
1147
- if (onSelectionChange !== null) {
1148
- var _ref5 = newItems || [],
1149
- _ref6 = _slicedToArray(_ref5, 1),
1150
- _ref6$ = _ref6[0],
1151
- firstItem = _ref6$ === void 0 ? null : _ref6$;
1152
- var finalValue = multipleSelection ? newItems : firstItem;
1153
- onSelectionChange(finalValue, item, index);
1154
- }
1155
- }, [selectedItems, onSelectionChange, multipleSelection]);
1156
- var onSelectItems = useCallback(function (newItems, index) {
1157
- var finalNewItems = filterNullItems(newItems);
1158
- setSelectedItems(finalNewItems);
1159
- if (onSelectionChange !== null) {
1160
- var _ref7 = finalNewItems || [],
1161
- _ref8 = _slicedToArray(_ref7, 1),
1162
- _ref8$ = _ref8[0],
1163
- firstItem = _ref8$ === void 0 ? null : _ref8$;
1164
- var finalValue = multipleSelection ? finalNewItems : firstItem;
1165
- onSelectionChange(finalValue, null, index);
1166
- }
1167
- }, [selectedItems, onSelectionChange, multipleSelection]);
1168
- var onSelectPage = useCallback(function () {
1169
- var pageSelected = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;
1170
- var nextItems = [];
1171
- if (!pageSelected) {
1172
- nextItems = uniqBy([].concat(_toConsumableArray(items || []), _toConsumableArray(selectedItems || [])), function () {
1173
- var _ref9 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},
1174
- _ref9$id = _ref9.id,
1175
- id = _ref9$id === void 0 ? null : _ref9$id;
1176
- return id;
1177
- });
1178
- } else {
1179
- var ids = (items || []).map(function () {
1180
- var _ref10 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},
1181
- _ref10$id = _ref10.id,
1182
- id = _ref10$id === void 0 ? null : _ref10$id;
1183
- return id;
1184
- }).filter(function (id) {
1185
- return id !== null;
1186
- });
1187
- nextItems = uniqBy((selectedItems || []).filter(function (it) {
1188
- var _ref11 = it || {},
1189
- _ref11$id = _ref11.id,
1190
- id = _ref11$id === void 0 ? null : _ref11$id;
1191
- return ids.indexOf(id) === -1;
1192
- }), function () {
1193
- var _ref12 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},
1194
- _ref12$id = _ref12.id,
1195
- id = _ref12$id === void 0 ? null : _ref12$id;
1196
- return id;
1197
- });
1198
- }
1199
- var finalNextItems = filterNullItems(nextItems);
1200
- setSelectedItems(finalNextItems);
1201
- if (onSelectionChange !== null) {
1202
- onSelectionChange(finalNextItems);
1203
- }
1204
- }, [items, selectedItems, setSelectedItems, onSelectionChange]);
1205
- var onClearSelected = useCallback(function () {
1206
- setSelectedItems([]);
1207
- if (onSelectionChange !== null) {
1208
- onSelectionChange(multipleSelection ? [] : null);
1209
- }
1210
- }, [setSelectedItems, onSelectionChange, multipleSelection]);
1211
- useEffect(function () {
1212
- setSelectedItems(getItemsArray(initialSelectedItems));
1213
- }, [initialSelectedItems]);
1214
- var pageSelected = useMemo(function () {
1215
- if (items === null || selectedItems === null) {
1216
- return false;
1217
- }
1218
- var ids = (items || []).map(function () {
1219
- var _ref13 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},
1220
- _ref13$id = _ref13.id,
1221
- id = _ref13$id === void 0 ? null : _ref13$id;
1222
- return id;
1223
- }).filter(function (id) {
1224
- return id !== null;
1225
- }) || [];
1226
- if (ids === null || ids.length === 0) {
1227
- return false;
1228
- }
1229
- var currentPageItems = (selectedItems || []).filter(function (it) {
1230
- var _ref14 = it || {},
1231
- _ref14$id = _ref14.id,
1232
- id = _ref14$id === void 0 ? null : _ref14$id;
1233
- return (ids || []).indexOf(id) !== -1;
1234
- }) || [];
1235
- return currentPageItems.length > 0 && currentPageItems.length === (items || []).length;
1236
- }, [selectedItems, items]);
1237
- var allSelected = useMemo(function () {
1238
- return selectedItems !== null && items !== null && selectedItems.length === items.length;
1239
- }, [selectedItems, items]);
1240
- var selectedCount = useMemo(function () {
1241
- return selectedItems !== null && selectedItems.length > 0 ? selectedItems.length : null;
1242
- }, [selectedItems]);
1243
- return {
1244
- onSelectItem: onSelectItem,
1245
- onSelectItems: onSelectItems,
1246
- onSelectPage: onSelectPage,
1247
- onClearSelected: onClearSelected,
1248
- pageSelected: pageSelected,
1249
- allSelected: allSelected,
1250
- selectedCount: selectedCount,
1251
- selectedItems: selectedItems,
1252
- setSelectedItems: setSelectedItems
1253
- };
1254
- };
1255
- var useItemSelection$1 = useItemSelection;
1256
-
1257
- export { getObserver, useAnimationFrame$1 as useAnimationFrame, useDocumentEvent$1 as useDocumentEvent, useForm$1 as useForm, useFormattedDate, useFormattedTime, useIntersectionObserver, useIsVisible$1 as useIsVisible, useItemSelection$1 as useItemSelection, useLoadedFonts$1 as useLoadedFonts, useMediaApi$1 as useMediaApi, useMediasParser$1 as useMediasParser, useObserver, useQuery$1 as useQuery, useResizeObserver, useResourceTypeName$1 as useResourceTypeName, useResourceUrlGenerator$1 as useResourceUrlGenerator, useScreenSizeFromElement, useScreenSizeFromWindow, useWindowEvent$1 as useWindowEvent };
1369
+ export { getObserver, useActions$1 as useActions, useAnimationFrame$1 as useAnimationFrame, useDocumentEvent$1 as useDocumentEvent, useForm$1 as useForm, useFormattedDate, useFormattedTime, useIntersectionObserver, useIsVisible$1 as useIsVisible, useItemSelection$1 as useItemSelection, useLoadedFonts$1 as useLoadedFonts, useMediaApi$1 as useMediaApi, useMediasParser$1 as useMediasParser, useObserver, useQuery$1 as useQuery, useResizeObserver, useResourceTypeName$1 as useResourceTypeName, useResourceUrlGenerator$1 as useResourceUrlGenerator, useScreenSizeFromElement, useScreenSizeFromWindow, useWindowEvent$1 as useWindowEvent };
package/es/index.js CHANGED
@@ -76,7 +76,8 @@ var routes = PropTypes$1.shape({
76
76
  'resources.edit': PropTypes$1.string.isRequired,
77
77
  'resources.update': PropTypes$1.string.isRequired,
78
78
  'resources.delete': PropTypes$1.string.isRequired,
79
- 'resources.destroy': PropTypes$1.string.isRequired
79
+ 'resources.destroy': PropTypes$1.string.isRequired,
80
+ 'resources.duplicate': PropTypes$1.string.isRequired
80
81
  });
81
82
  var intl = PropTypes$1.shape({
82
83
  locale: PropTypes$1.string,
package/es/utils.js CHANGED
@@ -261,7 +261,7 @@ var getColumnsWithFields = function getColumnsWithFields(resource, columns) {
261
261
  return _objectSpread(_objectSpread(_objectSpread({}, fieldName !== null ? getColumnFromField(fields.find(function (it) {
262
262
  return it.name === fieldName;
263
263
  }) || null) : null), otherProps), {}, {
264
- id: colId
264
+ id: colId || (isString(column) ? column : null) || null
265
265
  });
266
266
  }).filter(function (it) {
267
267
  return it !== null;
package/lib/contexts.js CHANGED
@@ -321,7 +321,8 @@ var routes = PropTypes.shape({
321
321
  'resources.edit': PropTypes.string.isRequired,
322
322
  'resources.update': PropTypes.string.isRequired,
323
323
  'resources.delete': PropTypes.string.isRequired,
324
- 'resources.destroy': PropTypes.string.isRequired
324
+ 'resources.destroy': PropTypes.string.isRequired,
325
+ 'resources.duplicate': PropTypes.string.isRequired
325
326
  });
326
327
  var intl = PropTypes.shape({
327
328
  locale: PropTypes.string,
package/lib/hooks.js CHANGED
@@ -1,24 +1,136 @@
1
1
  'use strict';
2
2
 
3
+ var _objectSpread = require('@babel/runtime/helpers/objectSpread2');
4
+ var isString = require('lodash/isString');
3
5
  var react = require('react');
4
6
  var core = require('@panneau/core');
5
7
  var utils = require('@panneau/core/utils');
6
8
  var _defineProperty = require('@babel/runtime/helpers/defineProperty');
7
9
  var _slicedToArray = require('@babel/runtime/helpers/slicedToArray');
8
- var _objectSpread = require('@babel/runtime/helpers/objectSpread2');
9
10
  var _toConsumableArray = require('@babel/runtime/helpers/toConsumableArray');
10
11
  var _objectWithoutProperties = require('@babel/runtime/helpers/objectWithoutProperties');
11
12
  var fetch = require('@folklore/fetch');
12
13
  var get = require('lodash/get');
13
14
  var isArray = require('lodash/isArray');
14
15
  var isObject = require('lodash/isObject');
15
- var isString = require('lodash/isString');
16
- var contexts = require('@panneau/core/contexts');
17
16
  var uniqBy = require('lodash/uniqBy');
17
+ var contexts = require('@panneau/core/contexts');
18
18
  var reactIntl = require('react-intl');
19
19
  var dayjs = require('dayjs');
20
20
  var cssMediaquery = require('css-mediaquery');
21
21
 
22
+ var useActions = function useActions() {
23
+ var item = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : null;
24
+ var actions = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : [];
25
+ var urlGenerator = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : null;
26
+ var _ref = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {},
27
+ _ref$iconsOnly = _ref.iconsOnly,
28
+ iconsOnly = _ref$iconsOnly === void 0 ? true : _ref$iconsOnly,
29
+ _ref$showLabel = _ref.showLabel,
30
+ showLabel = _ref$showLabel === void 0 ? null : _ref$showLabel,
31
+ _ref$editLabel = _ref.editLabel,
32
+ editLabel = _ref$editLabel === void 0 ? null : _ref$editLabel,
33
+ _ref$deleteLabel = _ref.deleteLabel,
34
+ deleteLabel = _ref$deleteLabel === void 0 ? null : _ref$deleteLabel,
35
+ _ref$duplicateLabel = _ref.duplicateLabel,
36
+ duplicateLabel = _ref$duplicateLabel === void 0 ? null : _ref$duplicateLabel,
37
+ _ref$onClickShow = _ref.onClickShow,
38
+ onClickShow = _ref$onClickShow === void 0 ? null : _ref$onClickShow,
39
+ _ref$onClickEdit = _ref.onClickEdit,
40
+ onClickEdit = _ref$onClickEdit === void 0 ? null : _ref$onClickEdit,
41
+ _ref$onClickDelete = _ref.onClickDelete,
42
+ onClickDelete = _ref$onClickDelete === void 0 ? null : _ref$onClickDelete,
43
+ _ref$onClickDuplicate = _ref.onClickDuplicate,
44
+ onClickDuplicate = _ref$onClickDuplicate === void 0 ? null : _ref$onClickDuplicate,
45
+ _ref$getShowPropsFrom = _ref.getShowPropsFromItem,
46
+ getShowPropsFromItem = _ref$getShowPropsFrom === void 0 ? null : _ref$getShowPropsFrom,
47
+ _ref$getEditPropsFrom = _ref.getEditPropsFromItem,
48
+ getEditPropsFromItem = _ref$getEditPropsFrom === void 0 ? null : _ref$getEditPropsFrom,
49
+ _ref$getDeletePropsFr = _ref.getDeletePropsFromItem,
50
+ getDeletePropsFromItem = _ref$getDeletePropsFr === void 0 ? null : _ref$getDeletePropsFr,
51
+ _ref$getDuplicateProp = _ref.getDuplicatePropsFromItem,
52
+ getDuplicatePropsFromItem = _ref$getDuplicateProp === void 0 ? null : _ref$getDuplicateProp,
53
+ _ref$showUrl = _ref.showUrl,
54
+ showUrl = _ref$showUrl === void 0 ? null : _ref$showUrl,
55
+ _ref$withoutItemShowU = _ref.withoutItemShowUrl,
56
+ withoutItemShowUrl = _ref$withoutItemShowU === void 0 ? null : _ref$withoutItemShowU,
57
+ _ref$preferDeleteModa = _ref.preferDeleteModal,
58
+ preferDeleteModal = _ref$preferDeleteModa === void 0 ? true : _ref$preferDeleteModa,
59
+ _ref$preferDuplicateM = _ref.preferDuplicateModal,
60
+ preferDuplicateModal = _ref$preferDuplicateM === void 0 ? true : _ref$preferDuplicateM;
61
+ var _ref2 = item || {},
62
+ id = _ref2.id,
63
+ _ref2$url = _ref2.url,
64
+ url = _ref2$url === void 0 ? null : _ref2$url;
65
+ var hasCustomShowUrl = showUrl !== null || url !== null;
66
+ return (actions || []).map(function (action) {
67
+ if (isString(action)) {
68
+ switch (action) {
69
+ case 'show':
70
+ return _objectSpread({
71
+ id: 'show',
72
+ component: 'show',
73
+ label: iconsOnly ? null : showLabel,
74
+ icon: iconsOnly ? 'eye-fill' : null,
75
+ href: urlGenerator !== null && (!hasCustomShowUrl || withoutItemShowUrl) ? urlGenerator('show', {
76
+ id: id
77
+ }) || null : showUrl || url,
78
+ external: hasCustomShowUrl,
79
+ theme: 'info',
80
+ target: '_blank',
81
+ onClick: onClickShow
82
+ }, getShowPropsFromItem !== null ? getShowPropsFromItem(item) : null);
83
+ case 'edit':
84
+ return _objectSpread({
85
+ id: 'edit',
86
+ component: 'edit',
87
+ label: iconsOnly ? null : editLabel,
88
+ icon: iconsOnly ? 'pencil-square' : null,
89
+ href: urlGenerator !== null ? urlGenerator('edit', {
90
+ id: id
91
+ }) || null : null,
92
+ theme: 'primary',
93
+ onClick: onClickEdit
94
+ }, getEditPropsFromItem !== null ? getEditPropsFromItem(item) : null);
95
+ case 'duplicate':
96
+ return _objectSpread({
97
+ id: 'duplicate',
98
+ component: 'duplicate',
99
+ label: iconsOnly ? null : duplicateLabel,
100
+ icon: iconsOnly ? 'copy' : null,
101
+ href: urlGenerator !== null && !preferDuplicateModal ? urlGenerator('duplicate', {
102
+ id: id
103
+ }) || null : null,
104
+ theme: 'warning',
105
+ onClick: onClickDuplicate,
106
+ endpoint: urlGenerator !== null && preferDeleteModal ? urlGenerator('duplicate', {
107
+ id: id
108
+ }) || null : null
109
+ }, getDuplicatePropsFromItem !== null ? getDuplicatePropsFromItem(item) : null);
110
+ case 'delete':
111
+ return _objectSpread({
112
+ id: 'delete',
113
+ component: 'delete',
114
+ label: iconsOnly ? null : deleteLabel,
115
+ icon: iconsOnly ? 'trash3' : null,
116
+ href: urlGenerator !== null && !preferDeleteModal ? urlGenerator('delete', {
117
+ id: id
118
+ }) || null : null,
119
+ theme: 'danger',
120
+ onClick: onClickDelete,
121
+ endpoint: urlGenerator !== null && preferDeleteModal ? urlGenerator('destroy', {
122
+ id: id
123
+ }) || null : null
124
+ }, getDeletePropsFromItem !== null ? getDeletePropsFromItem(item) : null);
125
+ }
126
+ }
127
+ return action;
128
+ }).filter(function (action) {
129
+ return action !== null;
130
+ });
131
+ };
132
+ var useActions$1 = useActions;
133
+
22
134
  var useAnimationFrame = function useAnimationFrame(onFrame) {
23
135
  var _ref = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {},
24
136
  _ref$disabled = _ref.disabled,
@@ -554,6 +666,156 @@ var useIsVisible = function useIsVisible() {
554
666
  };
555
667
  var useIsVisible$1 = useIsVisible;
556
668
 
669
+ function filterNullItems(items) {
670
+ return isArray(items) ? items.filter(function (it) {
671
+ return it !== null;
672
+ }) : items;
673
+ }
674
+ function getItemsArray(items) {
675
+ return filterNullItems(!isArray(items) && items !== null ? [items] : items);
676
+ }
677
+ var useItemSelection = function useItemSelection(_ref) {
678
+ var _ref$items = _ref.items,
679
+ items = _ref$items === void 0 ? null : _ref$items,
680
+ _ref$selectedItems = _ref.selectedItems,
681
+ initialSelectedItems = _ref$selectedItems === void 0 ? null : _ref$selectedItems,
682
+ _ref$multipleSelectio = _ref.multipleSelection,
683
+ multipleSelection = _ref$multipleSelectio === void 0 ? false : _ref$multipleSelectio,
684
+ _ref$onSelectionChang = _ref.onSelectionChange,
685
+ onSelectionChange = _ref$onSelectionChang === void 0 ? null : _ref$onSelectionChang;
686
+ var initialItems = getItemsArray(initialSelectedItems);
687
+ var _useState = react.useState(initialItems),
688
+ _useState2 = _slicedToArray(_useState, 2),
689
+ selectedItems = _useState2[0],
690
+ setSelectedItems = _useState2[1];
691
+ var onSelectItem = react.useCallback(function (item, index) {
692
+ var _ref2 = item || {},
693
+ _ref2$id = _ref2.id,
694
+ itemId = _ref2$id === void 0 ? null : _ref2$id;
695
+ var oldItem = (selectedItems || []).find(function (_ref3) {
696
+ var id = _ref3.id;
697
+ return id === itemId;
698
+ }) || null;
699
+ var newItems = [];
700
+ if (oldItem === null) {
701
+ newItems = selectedItems !== null && multipleSelection ? [].concat(_toConsumableArray(selectedItems), [item]) : [item];
702
+ } else {
703
+ newItems = (selectedItems || []).filter(function (_ref4) {
704
+ var id = _ref4.id;
705
+ return id !== itemId;
706
+ });
707
+ }
708
+ setSelectedItems(filterNullItems(newItems));
709
+ if (onSelectionChange !== null) {
710
+ var _ref5 = newItems || [],
711
+ _ref6 = _slicedToArray(_ref5, 1),
712
+ _ref6$ = _ref6[0],
713
+ firstItem = _ref6$ === void 0 ? null : _ref6$;
714
+ var finalValue = multipleSelection ? newItems : firstItem;
715
+ onSelectionChange(finalValue, item, index);
716
+ }
717
+ }, [selectedItems, onSelectionChange, multipleSelection]);
718
+ var onSelectItems = react.useCallback(function (newItems, index) {
719
+ var finalNewItems = filterNullItems(newItems);
720
+ setSelectedItems(finalNewItems);
721
+ if (onSelectionChange !== null) {
722
+ var _ref7 = finalNewItems || [],
723
+ _ref8 = _slicedToArray(_ref7, 1),
724
+ _ref8$ = _ref8[0],
725
+ firstItem = _ref8$ === void 0 ? null : _ref8$;
726
+ var finalValue = multipleSelection ? finalNewItems : firstItem;
727
+ onSelectionChange(finalValue, null, index);
728
+ }
729
+ }, [selectedItems, onSelectionChange, multipleSelection]);
730
+ var onSelectPage = react.useCallback(function () {
731
+ var pageSelected = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;
732
+ var nextItems = [];
733
+ if (!pageSelected) {
734
+ nextItems = uniqBy([].concat(_toConsumableArray(items || []), _toConsumableArray(selectedItems || [])), function () {
735
+ var _ref9 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},
736
+ _ref9$id = _ref9.id,
737
+ id = _ref9$id === void 0 ? null : _ref9$id;
738
+ return id;
739
+ });
740
+ } else {
741
+ var ids = (items || []).map(function () {
742
+ var _ref10 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},
743
+ _ref10$id = _ref10.id,
744
+ id = _ref10$id === void 0 ? null : _ref10$id;
745
+ return id;
746
+ }).filter(function (id) {
747
+ return id !== null;
748
+ });
749
+ nextItems = uniqBy((selectedItems || []).filter(function (it) {
750
+ var _ref11 = it || {},
751
+ _ref11$id = _ref11.id,
752
+ id = _ref11$id === void 0 ? null : _ref11$id;
753
+ return ids.indexOf(id) === -1;
754
+ }), function () {
755
+ var _ref12 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},
756
+ _ref12$id = _ref12.id,
757
+ id = _ref12$id === void 0 ? null : _ref12$id;
758
+ return id;
759
+ });
760
+ }
761
+ var finalNextItems = filterNullItems(nextItems);
762
+ setSelectedItems(finalNextItems);
763
+ if (onSelectionChange !== null) {
764
+ onSelectionChange(finalNextItems);
765
+ }
766
+ }, [items, selectedItems, setSelectedItems, onSelectionChange]);
767
+ var onClearSelected = react.useCallback(function () {
768
+ setSelectedItems([]);
769
+ if (onSelectionChange !== null) {
770
+ onSelectionChange(multipleSelection ? [] : null);
771
+ }
772
+ }, [setSelectedItems, onSelectionChange, multipleSelection]);
773
+ react.useEffect(function () {
774
+ setSelectedItems(getItemsArray(initialSelectedItems));
775
+ }, [initialSelectedItems]);
776
+ var pageSelected = react.useMemo(function () {
777
+ if (items === null || selectedItems === null) {
778
+ return false;
779
+ }
780
+ var ids = (items || []).map(function () {
781
+ var _ref13 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},
782
+ _ref13$id = _ref13.id,
783
+ id = _ref13$id === void 0 ? null : _ref13$id;
784
+ return id;
785
+ }).filter(function (id) {
786
+ return id !== null;
787
+ }) || [];
788
+ if (ids === null || ids.length === 0) {
789
+ return false;
790
+ }
791
+ var currentPageItems = (selectedItems || []).filter(function (it) {
792
+ var _ref14 = it || {},
793
+ _ref14$id = _ref14.id,
794
+ id = _ref14$id === void 0 ? null : _ref14$id;
795
+ return (ids || []).indexOf(id) !== -1;
796
+ }) || [];
797
+ return currentPageItems.length > 0 && currentPageItems.length === (items || []).length;
798
+ }, [selectedItems, items]);
799
+ var allSelected = react.useMemo(function () {
800
+ return selectedItems !== null && items !== null && selectedItems.length === items.length;
801
+ }, [selectedItems, items]);
802
+ var selectedCount = react.useMemo(function () {
803
+ return selectedItems !== null && selectedItems.length > 0 ? selectedItems.length : null;
804
+ }, [selectedItems]);
805
+ return {
806
+ onSelectItem: onSelectItem,
807
+ onSelectItems: onSelectItems,
808
+ onSelectPage: onSelectPage,
809
+ onClearSelected: onClearSelected,
810
+ pageSelected: pageSelected,
811
+ allSelected: allSelected,
812
+ selectedCount: selectedCount,
813
+ selectedItems: selectedItems,
814
+ setSelectedItems: setSelectedItems
815
+ };
816
+ };
817
+ var useItemSelection$1 = useItemSelection;
818
+
557
819
  var fontsMap = {
558
820
  loading: [],
559
821
  active: []
@@ -1106,157 +1368,8 @@ var eventsManager = typeof window !== 'undefined' ? new core.EventsManager(windo
1106
1368
  var useWindowEvent = utils.createUseEvent(eventsManager);
1107
1369
  var useWindowEvent$1 = useWindowEvent;
1108
1370
 
1109
- function filterNullItems(items) {
1110
- return isArray(items) ? items.filter(function (it) {
1111
- return it !== null;
1112
- }) : items;
1113
- }
1114
- function getItemsArray(items) {
1115
- return filterNullItems(!isArray(items) && items !== null ? [items] : items);
1116
- }
1117
- var useItemSelection = function useItemSelection(_ref) {
1118
- var _ref$items = _ref.items,
1119
- items = _ref$items === void 0 ? null : _ref$items,
1120
- _ref$selectedItems = _ref.selectedItems,
1121
- initialSelectedItems = _ref$selectedItems === void 0 ? null : _ref$selectedItems,
1122
- _ref$multipleSelectio = _ref.multipleSelection,
1123
- multipleSelection = _ref$multipleSelectio === void 0 ? false : _ref$multipleSelectio,
1124
- _ref$onSelectionChang = _ref.onSelectionChange,
1125
- onSelectionChange = _ref$onSelectionChang === void 0 ? null : _ref$onSelectionChang;
1126
- var initialItems = getItemsArray(initialSelectedItems);
1127
- var _useState = react.useState(initialItems),
1128
- _useState2 = _slicedToArray(_useState, 2),
1129
- selectedItems = _useState2[0],
1130
- setSelectedItems = _useState2[1];
1131
- var onSelectItem = react.useCallback(function (item, index) {
1132
- var _ref2 = item || {},
1133
- _ref2$id = _ref2.id,
1134
- itemId = _ref2$id === void 0 ? null : _ref2$id;
1135
- var oldItem = (selectedItems || []).find(function (_ref3) {
1136
- var id = _ref3.id;
1137
- return id === itemId;
1138
- }) || null;
1139
- var newItems = [];
1140
- if (oldItem === null) {
1141
- newItems = selectedItems !== null && multipleSelection ? [].concat(_toConsumableArray(selectedItems), [item]) : [item];
1142
- } else {
1143
- newItems = (selectedItems || []).filter(function (_ref4) {
1144
- var id = _ref4.id;
1145
- return id !== itemId;
1146
- });
1147
- }
1148
- setSelectedItems(filterNullItems(newItems));
1149
- if (onSelectionChange !== null) {
1150
- var _ref5 = newItems || [],
1151
- _ref6 = _slicedToArray(_ref5, 1),
1152
- _ref6$ = _ref6[0],
1153
- firstItem = _ref6$ === void 0 ? null : _ref6$;
1154
- var finalValue = multipleSelection ? newItems : firstItem;
1155
- onSelectionChange(finalValue, item, index);
1156
- }
1157
- }, [selectedItems, onSelectionChange, multipleSelection]);
1158
- var onSelectItems = react.useCallback(function (newItems, index) {
1159
- var finalNewItems = filterNullItems(newItems);
1160
- setSelectedItems(finalNewItems);
1161
- if (onSelectionChange !== null) {
1162
- var _ref7 = finalNewItems || [],
1163
- _ref8 = _slicedToArray(_ref7, 1),
1164
- _ref8$ = _ref8[0],
1165
- firstItem = _ref8$ === void 0 ? null : _ref8$;
1166
- var finalValue = multipleSelection ? finalNewItems : firstItem;
1167
- onSelectionChange(finalValue, null, index);
1168
- }
1169
- }, [selectedItems, onSelectionChange, multipleSelection]);
1170
- var onSelectPage = react.useCallback(function () {
1171
- var pageSelected = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;
1172
- var nextItems = [];
1173
- if (!pageSelected) {
1174
- nextItems = uniqBy([].concat(_toConsumableArray(items || []), _toConsumableArray(selectedItems || [])), function () {
1175
- var _ref9 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},
1176
- _ref9$id = _ref9.id,
1177
- id = _ref9$id === void 0 ? null : _ref9$id;
1178
- return id;
1179
- });
1180
- } else {
1181
- var ids = (items || []).map(function () {
1182
- var _ref10 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},
1183
- _ref10$id = _ref10.id,
1184
- id = _ref10$id === void 0 ? null : _ref10$id;
1185
- return id;
1186
- }).filter(function (id) {
1187
- return id !== null;
1188
- });
1189
- nextItems = uniqBy((selectedItems || []).filter(function (it) {
1190
- var _ref11 = it || {},
1191
- _ref11$id = _ref11.id,
1192
- id = _ref11$id === void 0 ? null : _ref11$id;
1193
- return ids.indexOf(id) === -1;
1194
- }), function () {
1195
- var _ref12 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},
1196
- _ref12$id = _ref12.id,
1197
- id = _ref12$id === void 0 ? null : _ref12$id;
1198
- return id;
1199
- });
1200
- }
1201
- var finalNextItems = filterNullItems(nextItems);
1202
- setSelectedItems(finalNextItems);
1203
- if (onSelectionChange !== null) {
1204
- onSelectionChange(finalNextItems);
1205
- }
1206
- }, [items, selectedItems, setSelectedItems, onSelectionChange]);
1207
- var onClearSelected = react.useCallback(function () {
1208
- setSelectedItems([]);
1209
- if (onSelectionChange !== null) {
1210
- onSelectionChange(multipleSelection ? [] : null);
1211
- }
1212
- }, [setSelectedItems, onSelectionChange, multipleSelection]);
1213
- react.useEffect(function () {
1214
- setSelectedItems(getItemsArray(initialSelectedItems));
1215
- }, [initialSelectedItems]);
1216
- var pageSelected = react.useMemo(function () {
1217
- if (items === null || selectedItems === null) {
1218
- return false;
1219
- }
1220
- var ids = (items || []).map(function () {
1221
- var _ref13 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},
1222
- _ref13$id = _ref13.id,
1223
- id = _ref13$id === void 0 ? null : _ref13$id;
1224
- return id;
1225
- }).filter(function (id) {
1226
- return id !== null;
1227
- }) || [];
1228
- if (ids === null || ids.length === 0) {
1229
- return false;
1230
- }
1231
- var currentPageItems = (selectedItems || []).filter(function (it) {
1232
- var _ref14 = it || {},
1233
- _ref14$id = _ref14.id,
1234
- id = _ref14$id === void 0 ? null : _ref14$id;
1235
- return (ids || []).indexOf(id) !== -1;
1236
- }) || [];
1237
- return currentPageItems.length > 0 && currentPageItems.length === (items || []).length;
1238
- }, [selectedItems, items]);
1239
- var allSelected = react.useMemo(function () {
1240
- return selectedItems !== null && items !== null && selectedItems.length === items.length;
1241
- }, [selectedItems, items]);
1242
- var selectedCount = react.useMemo(function () {
1243
- return selectedItems !== null && selectedItems.length > 0 ? selectedItems.length : null;
1244
- }, [selectedItems]);
1245
- return {
1246
- onSelectItem: onSelectItem,
1247
- onSelectItems: onSelectItems,
1248
- onSelectPage: onSelectPage,
1249
- onClearSelected: onClearSelected,
1250
- pageSelected: pageSelected,
1251
- allSelected: allSelected,
1252
- selectedCount: selectedCount,
1253
- selectedItems: selectedItems,
1254
- setSelectedItems: setSelectedItems
1255
- };
1256
- };
1257
- var useItemSelection$1 = useItemSelection;
1258
-
1259
1371
  exports.getObserver = getObserver;
1372
+ exports.useActions = useActions$1;
1260
1373
  exports.useAnimationFrame = useAnimationFrame$1;
1261
1374
  exports.useDocumentEvent = useDocumentEvent$1;
1262
1375
  exports.useForm = useForm$1;
package/lib/index.js CHANGED
@@ -78,7 +78,8 @@ var routes = PropTypes$1.shape({
78
78
  'resources.edit': PropTypes$1.string.isRequired,
79
79
  'resources.update': PropTypes$1.string.isRequired,
80
80
  'resources.delete': PropTypes$1.string.isRequired,
81
- 'resources.destroy': PropTypes$1.string.isRequired
81
+ 'resources.destroy': PropTypes$1.string.isRequired,
82
+ 'resources.duplicate': PropTypes$1.string.isRequired
82
83
  });
83
84
  var intl = PropTypes$1.shape({
84
85
  locale: PropTypes$1.string,
package/lib/utils.js CHANGED
@@ -438,7 +438,7 @@ var getColumnsWithFields = function getColumnsWithFields(resource, columns) {
438
438
  return _objectSpread(_objectSpread(_objectSpread({}, fieldName !== null ? getColumnFromField(fields.find(function (it) {
439
439
  return it.name === fieldName;
440
440
  }) || null) : null), otherProps), {}, {
441
- id: colId
441
+ id: colId || (isString(column) ? column : null) || null
442
442
  });
443
443
  }).filter(function (it) {
444
444
  return it !== null;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@panneau/core",
3
- "version": "3.0.158",
3
+ "version": "3.0.160",
4
4
  "description": "",
5
5
  "keywords": [
6
6
  "javascript"
@@ -111,5 +111,5 @@
111
111
  "publishConfig": {
112
112
  "access": "public"
113
113
  },
114
- "gitHead": "594a96c3421a482efe45bcce6cbccba89fcf5b95"
114
+ "gitHead": "71a2a64cd2e0ed3cc921b0ec3b0a69449a4a978c"
115
115
  }