@panneau/core 3.0.158 → 3.0.159

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/hooks.js +256 -154
  2. package/lib/hooks.js +256 -153
  3. package/package.json +2 -2
package/es/hooks.js CHANGED
@@ -1,22 +1,124 @@
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
+ var _ref2 = item || {},
56
+ id = _ref2.id,
57
+ _ref2$url = _ref2.url,
58
+ url = _ref2$url === void 0 ? null : _ref2$url;
59
+ var hasCustomShowUrl = showUrl !== null || url !== null;
60
+ return (actions || []).map(function (action) {
61
+ if (isString(action)) {
62
+ switch (action) {
63
+ case 'show':
64
+ return _objectSpread({
65
+ id: 'show',
66
+ component: 'show',
67
+ label: iconsOnly ? null : showLabel,
68
+ icon: iconsOnly ? 'eye-fill' : null,
69
+ href: urlGenerator !== null && (!hasCustomShowUrl || withoutItemShowUrl) ? urlGenerator('show', {
70
+ id: id
71
+ }) || null : showUrl || url,
72
+ external: hasCustomShowUrl,
73
+ theme: 'info',
74
+ target: '_blank',
75
+ onClick: onClickShow
76
+ }, getShowPropsFromItem !== null ? getShowPropsFromItem(item) : null);
77
+ case 'edit':
78
+ return _objectSpread({
79
+ id: 'edit',
80
+ component: 'edit',
81
+ label: iconsOnly ? null : editLabel,
82
+ icon: iconsOnly ? 'pencil-square' : null,
83
+ href: urlGenerator !== null ? urlGenerator('edit', {
84
+ id: id
85
+ }) || null : null,
86
+ theme: 'primary',
87
+ onClick: onClickEdit
88
+ }, getEditPropsFromItem !== null ? getEditPropsFromItem(item) : null);
89
+ case 'duplicate':
90
+ return _objectSpread({
91
+ id: 'duplicate',
92
+ component: 'duplicate',
93
+ label: iconsOnly ? null : duplicateLabel,
94
+ icon: iconsOnly ? 'copy' : null,
95
+ href: urlGenerator !== null ? urlGenerator('duplicate', {
96
+ id: id
97
+ }) || null : null,
98
+ theme: 'warning',
99
+ onClick: onClickDuplicate
100
+ }, getDuplicatePropsFromItem !== null ? getDuplicatePropsFromItem(item) : null);
101
+ case 'delete':
102
+ return _objectSpread({
103
+ id: 'delete',
104
+ component: 'delete',
105
+ label: iconsOnly ? null : deleteLabel,
106
+ icon: iconsOnly ? 'trash3' : null,
107
+ href: urlGenerator !== null ? urlGenerator('delete', {
108
+ id: id
109
+ }) || null : null,
110
+ theme: 'danger',
111
+ onClick: onClickDelete
112
+ }, getDeletePropsFromItem !== null ? getDeletePropsFromItem(item) : null);
113
+ }
114
+ }
115
+ return action;
116
+ }).filter(function (action) {
117
+ return action !== null;
118
+ });
119
+ };
120
+ var useActions$1 = useActions;
121
+
20
122
  var useAnimationFrame = function useAnimationFrame(onFrame) {
21
123
  var _ref = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {},
22
124
  _ref$disabled = _ref.disabled,
@@ -552,6 +654,156 @@ var useIsVisible = function useIsVisible() {
552
654
  };
553
655
  var useIsVisible$1 = useIsVisible;
554
656
 
657
+ function filterNullItems(items) {
658
+ return isArray(items) ? items.filter(function (it) {
659
+ return it !== null;
660
+ }) : items;
661
+ }
662
+ function getItemsArray(items) {
663
+ return filterNullItems(!isArray(items) && items !== null ? [items] : items);
664
+ }
665
+ var useItemSelection = function useItemSelection(_ref) {
666
+ var _ref$items = _ref.items,
667
+ items = _ref$items === void 0 ? null : _ref$items,
668
+ _ref$selectedItems = _ref.selectedItems,
669
+ initialSelectedItems = _ref$selectedItems === void 0 ? null : _ref$selectedItems,
670
+ _ref$multipleSelectio = _ref.multipleSelection,
671
+ multipleSelection = _ref$multipleSelectio === void 0 ? false : _ref$multipleSelectio,
672
+ _ref$onSelectionChang = _ref.onSelectionChange,
673
+ onSelectionChange = _ref$onSelectionChang === void 0 ? null : _ref$onSelectionChang;
674
+ var initialItems = getItemsArray(initialSelectedItems);
675
+ var _useState = useState(initialItems),
676
+ _useState2 = _slicedToArray(_useState, 2),
677
+ selectedItems = _useState2[0],
678
+ setSelectedItems = _useState2[1];
679
+ var onSelectItem = useCallback(function (item, index) {
680
+ var _ref2 = item || {},
681
+ _ref2$id = _ref2.id,
682
+ itemId = _ref2$id === void 0 ? null : _ref2$id;
683
+ var oldItem = (selectedItems || []).find(function (_ref3) {
684
+ var id = _ref3.id;
685
+ return id === itemId;
686
+ }) || null;
687
+ var newItems = [];
688
+ if (oldItem === null) {
689
+ newItems = selectedItems !== null && multipleSelection ? [].concat(_toConsumableArray(selectedItems), [item]) : [item];
690
+ } else {
691
+ newItems = (selectedItems || []).filter(function (_ref4) {
692
+ var id = _ref4.id;
693
+ return id !== itemId;
694
+ });
695
+ }
696
+ setSelectedItems(filterNullItems(newItems));
697
+ if (onSelectionChange !== null) {
698
+ var _ref5 = newItems || [],
699
+ _ref6 = _slicedToArray(_ref5, 1),
700
+ _ref6$ = _ref6[0],
701
+ firstItem = _ref6$ === void 0 ? null : _ref6$;
702
+ var finalValue = multipleSelection ? newItems : firstItem;
703
+ onSelectionChange(finalValue, item, index);
704
+ }
705
+ }, [selectedItems, onSelectionChange, multipleSelection]);
706
+ var onSelectItems = useCallback(function (newItems, index) {
707
+ var finalNewItems = filterNullItems(newItems);
708
+ setSelectedItems(finalNewItems);
709
+ if (onSelectionChange !== null) {
710
+ var _ref7 = finalNewItems || [],
711
+ _ref8 = _slicedToArray(_ref7, 1),
712
+ _ref8$ = _ref8[0],
713
+ firstItem = _ref8$ === void 0 ? null : _ref8$;
714
+ var finalValue = multipleSelection ? finalNewItems : firstItem;
715
+ onSelectionChange(finalValue, null, index);
716
+ }
717
+ }, [selectedItems, onSelectionChange, multipleSelection]);
718
+ var onSelectPage = useCallback(function () {
719
+ var pageSelected = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;
720
+ var nextItems = [];
721
+ if (!pageSelected) {
722
+ nextItems = uniqBy([].concat(_toConsumableArray(items || []), _toConsumableArray(selectedItems || [])), function () {
723
+ var _ref9 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},
724
+ _ref9$id = _ref9.id,
725
+ id = _ref9$id === void 0 ? null : _ref9$id;
726
+ return id;
727
+ });
728
+ } else {
729
+ var ids = (items || []).map(function () {
730
+ var _ref10 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},
731
+ _ref10$id = _ref10.id,
732
+ id = _ref10$id === void 0 ? null : _ref10$id;
733
+ return id;
734
+ }).filter(function (id) {
735
+ return id !== null;
736
+ });
737
+ nextItems = uniqBy((selectedItems || []).filter(function (it) {
738
+ var _ref11 = it || {},
739
+ _ref11$id = _ref11.id,
740
+ id = _ref11$id === void 0 ? null : _ref11$id;
741
+ return ids.indexOf(id) === -1;
742
+ }), function () {
743
+ var _ref12 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},
744
+ _ref12$id = _ref12.id,
745
+ id = _ref12$id === void 0 ? null : _ref12$id;
746
+ return id;
747
+ });
748
+ }
749
+ var finalNextItems = filterNullItems(nextItems);
750
+ setSelectedItems(finalNextItems);
751
+ if (onSelectionChange !== null) {
752
+ onSelectionChange(finalNextItems);
753
+ }
754
+ }, [items, selectedItems, setSelectedItems, onSelectionChange]);
755
+ var onClearSelected = useCallback(function () {
756
+ setSelectedItems([]);
757
+ if (onSelectionChange !== null) {
758
+ onSelectionChange(multipleSelection ? [] : null);
759
+ }
760
+ }, [setSelectedItems, onSelectionChange, multipleSelection]);
761
+ useEffect(function () {
762
+ setSelectedItems(getItemsArray(initialSelectedItems));
763
+ }, [initialSelectedItems]);
764
+ var pageSelected = useMemo(function () {
765
+ if (items === null || selectedItems === null) {
766
+ return false;
767
+ }
768
+ var ids = (items || []).map(function () {
769
+ var _ref13 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},
770
+ _ref13$id = _ref13.id,
771
+ id = _ref13$id === void 0 ? null : _ref13$id;
772
+ return id;
773
+ }).filter(function (id) {
774
+ return id !== null;
775
+ }) || [];
776
+ if (ids === null || ids.length === 0) {
777
+ return false;
778
+ }
779
+ var currentPageItems = (selectedItems || []).filter(function (it) {
780
+ var _ref14 = it || {},
781
+ _ref14$id = _ref14.id,
782
+ id = _ref14$id === void 0 ? null : _ref14$id;
783
+ return (ids || []).indexOf(id) !== -1;
784
+ }) || [];
785
+ return currentPageItems.length > 0 && currentPageItems.length === (items || []).length;
786
+ }, [selectedItems, items]);
787
+ var allSelected = useMemo(function () {
788
+ return selectedItems !== null && items !== null && selectedItems.length === items.length;
789
+ }, [selectedItems, items]);
790
+ var selectedCount = useMemo(function () {
791
+ return selectedItems !== null && selectedItems.length > 0 ? selectedItems.length : null;
792
+ }, [selectedItems]);
793
+ return {
794
+ onSelectItem: onSelectItem,
795
+ onSelectItems: onSelectItems,
796
+ onSelectPage: onSelectPage,
797
+ onClearSelected: onClearSelected,
798
+ pageSelected: pageSelected,
799
+ allSelected: allSelected,
800
+ selectedCount: selectedCount,
801
+ selectedItems: selectedItems,
802
+ setSelectedItems: setSelectedItems
803
+ };
804
+ };
805
+ var useItemSelection$1 = useItemSelection;
806
+
555
807
  var fontsMap = {
556
808
  loading: [],
557
809
  active: []
@@ -1104,154 +1356,4 @@ var eventsManager = typeof window !== 'undefined' ? new EventsManager(window) :
1104
1356
  var useWindowEvent = createUseEvent(eventsManager);
1105
1357
  var useWindowEvent$1 = useWindowEvent;
1106
1358
 
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 };
1359
+ 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/lib/hooks.js CHANGED
@@ -1,24 +1,126 @@
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
+ var _ref2 = item || {},
58
+ id = _ref2.id,
59
+ _ref2$url = _ref2.url,
60
+ url = _ref2$url === void 0 ? null : _ref2$url;
61
+ var hasCustomShowUrl = showUrl !== null || url !== null;
62
+ return (actions || []).map(function (action) {
63
+ if (isString(action)) {
64
+ switch (action) {
65
+ case 'show':
66
+ return _objectSpread({
67
+ id: 'show',
68
+ component: 'show',
69
+ label: iconsOnly ? null : showLabel,
70
+ icon: iconsOnly ? 'eye-fill' : null,
71
+ href: urlGenerator !== null && (!hasCustomShowUrl || withoutItemShowUrl) ? urlGenerator('show', {
72
+ id: id
73
+ }) || null : showUrl || url,
74
+ external: hasCustomShowUrl,
75
+ theme: 'info',
76
+ target: '_blank',
77
+ onClick: onClickShow
78
+ }, getShowPropsFromItem !== null ? getShowPropsFromItem(item) : null);
79
+ case 'edit':
80
+ return _objectSpread({
81
+ id: 'edit',
82
+ component: 'edit',
83
+ label: iconsOnly ? null : editLabel,
84
+ icon: iconsOnly ? 'pencil-square' : null,
85
+ href: urlGenerator !== null ? urlGenerator('edit', {
86
+ id: id
87
+ }) || null : null,
88
+ theme: 'primary',
89
+ onClick: onClickEdit
90
+ }, getEditPropsFromItem !== null ? getEditPropsFromItem(item) : null);
91
+ case 'duplicate':
92
+ return _objectSpread({
93
+ id: 'duplicate',
94
+ component: 'duplicate',
95
+ label: iconsOnly ? null : duplicateLabel,
96
+ icon: iconsOnly ? 'copy' : null,
97
+ href: urlGenerator !== null ? urlGenerator('duplicate', {
98
+ id: id
99
+ }) || null : null,
100
+ theme: 'warning',
101
+ onClick: onClickDuplicate
102
+ }, getDuplicatePropsFromItem !== null ? getDuplicatePropsFromItem(item) : null);
103
+ case 'delete':
104
+ return _objectSpread({
105
+ id: 'delete',
106
+ component: 'delete',
107
+ label: iconsOnly ? null : deleteLabel,
108
+ icon: iconsOnly ? 'trash3' : null,
109
+ href: urlGenerator !== null ? urlGenerator('delete', {
110
+ id: id
111
+ }) || null : null,
112
+ theme: 'danger',
113
+ onClick: onClickDelete
114
+ }, getDeletePropsFromItem !== null ? getDeletePropsFromItem(item) : null);
115
+ }
116
+ }
117
+ return action;
118
+ }).filter(function (action) {
119
+ return action !== null;
120
+ });
121
+ };
122
+ var useActions$1 = useActions;
123
+
22
124
  var useAnimationFrame = function useAnimationFrame(onFrame) {
23
125
  var _ref = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {},
24
126
  _ref$disabled = _ref.disabled,
@@ -554,6 +656,156 @@ var useIsVisible = function useIsVisible() {
554
656
  };
555
657
  var useIsVisible$1 = useIsVisible;
556
658
 
659
+ function filterNullItems(items) {
660
+ return isArray(items) ? items.filter(function (it) {
661
+ return it !== null;
662
+ }) : items;
663
+ }
664
+ function getItemsArray(items) {
665
+ return filterNullItems(!isArray(items) && items !== null ? [items] : items);
666
+ }
667
+ var useItemSelection = function useItemSelection(_ref) {
668
+ var _ref$items = _ref.items,
669
+ items = _ref$items === void 0 ? null : _ref$items,
670
+ _ref$selectedItems = _ref.selectedItems,
671
+ initialSelectedItems = _ref$selectedItems === void 0 ? null : _ref$selectedItems,
672
+ _ref$multipleSelectio = _ref.multipleSelection,
673
+ multipleSelection = _ref$multipleSelectio === void 0 ? false : _ref$multipleSelectio,
674
+ _ref$onSelectionChang = _ref.onSelectionChange,
675
+ onSelectionChange = _ref$onSelectionChang === void 0 ? null : _ref$onSelectionChang;
676
+ var initialItems = getItemsArray(initialSelectedItems);
677
+ var _useState = react.useState(initialItems),
678
+ _useState2 = _slicedToArray(_useState, 2),
679
+ selectedItems = _useState2[0],
680
+ setSelectedItems = _useState2[1];
681
+ var onSelectItem = react.useCallback(function (item, index) {
682
+ var _ref2 = item || {},
683
+ _ref2$id = _ref2.id,
684
+ itemId = _ref2$id === void 0 ? null : _ref2$id;
685
+ var oldItem = (selectedItems || []).find(function (_ref3) {
686
+ var id = _ref3.id;
687
+ return id === itemId;
688
+ }) || null;
689
+ var newItems = [];
690
+ if (oldItem === null) {
691
+ newItems = selectedItems !== null && multipleSelection ? [].concat(_toConsumableArray(selectedItems), [item]) : [item];
692
+ } else {
693
+ newItems = (selectedItems || []).filter(function (_ref4) {
694
+ var id = _ref4.id;
695
+ return id !== itemId;
696
+ });
697
+ }
698
+ setSelectedItems(filterNullItems(newItems));
699
+ if (onSelectionChange !== null) {
700
+ var _ref5 = newItems || [],
701
+ _ref6 = _slicedToArray(_ref5, 1),
702
+ _ref6$ = _ref6[0],
703
+ firstItem = _ref6$ === void 0 ? null : _ref6$;
704
+ var finalValue = multipleSelection ? newItems : firstItem;
705
+ onSelectionChange(finalValue, item, index);
706
+ }
707
+ }, [selectedItems, onSelectionChange, multipleSelection]);
708
+ var onSelectItems = react.useCallback(function (newItems, index) {
709
+ var finalNewItems = filterNullItems(newItems);
710
+ setSelectedItems(finalNewItems);
711
+ if (onSelectionChange !== null) {
712
+ var _ref7 = finalNewItems || [],
713
+ _ref8 = _slicedToArray(_ref7, 1),
714
+ _ref8$ = _ref8[0],
715
+ firstItem = _ref8$ === void 0 ? null : _ref8$;
716
+ var finalValue = multipleSelection ? finalNewItems : firstItem;
717
+ onSelectionChange(finalValue, null, index);
718
+ }
719
+ }, [selectedItems, onSelectionChange, multipleSelection]);
720
+ var onSelectPage = react.useCallback(function () {
721
+ var pageSelected = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;
722
+ var nextItems = [];
723
+ if (!pageSelected) {
724
+ nextItems = uniqBy([].concat(_toConsumableArray(items || []), _toConsumableArray(selectedItems || [])), function () {
725
+ var _ref9 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},
726
+ _ref9$id = _ref9.id,
727
+ id = _ref9$id === void 0 ? null : _ref9$id;
728
+ return id;
729
+ });
730
+ } else {
731
+ var ids = (items || []).map(function () {
732
+ var _ref10 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},
733
+ _ref10$id = _ref10.id,
734
+ id = _ref10$id === void 0 ? null : _ref10$id;
735
+ return id;
736
+ }).filter(function (id) {
737
+ return id !== null;
738
+ });
739
+ nextItems = uniqBy((selectedItems || []).filter(function (it) {
740
+ var _ref11 = it || {},
741
+ _ref11$id = _ref11.id,
742
+ id = _ref11$id === void 0 ? null : _ref11$id;
743
+ return ids.indexOf(id) === -1;
744
+ }), function () {
745
+ var _ref12 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},
746
+ _ref12$id = _ref12.id,
747
+ id = _ref12$id === void 0 ? null : _ref12$id;
748
+ return id;
749
+ });
750
+ }
751
+ var finalNextItems = filterNullItems(nextItems);
752
+ setSelectedItems(finalNextItems);
753
+ if (onSelectionChange !== null) {
754
+ onSelectionChange(finalNextItems);
755
+ }
756
+ }, [items, selectedItems, setSelectedItems, onSelectionChange]);
757
+ var onClearSelected = react.useCallback(function () {
758
+ setSelectedItems([]);
759
+ if (onSelectionChange !== null) {
760
+ onSelectionChange(multipleSelection ? [] : null);
761
+ }
762
+ }, [setSelectedItems, onSelectionChange, multipleSelection]);
763
+ react.useEffect(function () {
764
+ setSelectedItems(getItemsArray(initialSelectedItems));
765
+ }, [initialSelectedItems]);
766
+ var pageSelected = react.useMemo(function () {
767
+ if (items === null || selectedItems === null) {
768
+ return false;
769
+ }
770
+ var ids = (items || []).map(function () {
771
+ var _ref13 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},
772
+ _ref13$id = _ref13.id,
773
+ id = _ref13$id === void 0 ? null : _ref13$id;
774
+ return id;
775
+ }).filter(function (id) {
776
+ return id !== null;
777
+ }) || [];
778
+ if (ids === null || ids.length === 0) {
779
+ return false;
780
+ }
781
+ var currentPageItems = (selectedItems || []).filter(function (it) {
782
+ var _ref14 = it || {},
783
+ _ref14$id = _ref14.id,
784
+ id = _ref14$id === void 0 ? null : _ref14$id;
785
+ return (ids || []).indexOf(id) !== -1;
786
+ }) || [];
787
+ return currentPageItems.length > 0 && currentPageItems.length === (items || []).length;
788
+ }, [selectedItems, items]);
789
+ var allSelected = react.useMemo(function () {
790
+ return selectedItems !== null && items !== null && selectedItems.length === items.length;
791
+ }, [selectedItems, items]);
792
+ var selectedCount = react.useMemo(function () {
793
+ return selectedItems !== null && selectedItems.length > 0 ? selectedItems.length : null;
794
+ }, [selectedItems]);
795
+ return {
796
+ onSelectItem: onSelectItem,
797
+ onSelectItems: onSelectItems,
798
+ onSelectPage: onSelectPage,
799
+ onClearSelected: onClearSelected,
800
+ pageSelected: pageSelected,
801
+ allSelected: allSelected,
802
+ selectedCount: selectedCount,
803
+ selectedItems: selectedItems,
804
+ setSelectedItems: setSelectedItems
805
+ };
806
+ };
807
+ var useItemSelection$1 = useItemSelection;
808
+
557
809
  var fontsMap = {
558
810
  loading: [],
559
811
  active: []
@@ -1106,157 +1358,8 @@ var eventsManager = typeof window !== 'undefined' ? new core.EventsManager(windo
1106
1358
  var useWindowEvent = utils.createUseEvent(eventsManager);
1107
1359
  var useWindowEvent$1 = useWindowEvent;
1108
1360
 
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
1361
  exports.getObserver = getObserver;
1362
+ exports.useActions = useActions$1;
1260
1363
  exports.useAnimationFrame = useAnimationFrame$1;
1261
1364
  exports.useDocumentEvent = useDocumentEvent$1;
1262
1365
  exports.useForm = useForm$1;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@panneau/core",
3
- "version": "3.0.158",
3
+ "version": "3.0.159",
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": "5c5211fd5d728e50510142d16bda47f549f080f3"
115
115
  }