@panneau/core 3.0.175 → 3.0.182

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
@@ -884,6 +884,14 @@ var ModalProvider = function ModalProvider(_ref) {
884
884
  modalsRef.current = newModals;
885
885
  }
886
886
  }, [modals, setModals]);
887
+ var getModalByKey = useCallback(function (key) {
888
+ return (modals || []).find(function (modal) {
889
+ return (modal === null || modal === void 0 ? void 0 : modal.id) === key;
890
+ }) || null;
891
+ }, [modals]);
892
+ var modalIsOpen = useCallback(function (key) {
893
+ return getModalByKey(key) !== null;
894
+ }, [getModalByKey]);
887
895
  var value = useMemo(function () {
888
896
  return {
889
897
  modals: modals,
@@ -891,9 +899,11 @@ var ModalProvider = function ModalProvider(_ref) {
891
899
  setContainer: setContainer,
892
900
  register: register,
893
901
  unregister: unregister,
894
- closeLastModal: closeLastModal
902
+ closeLastModal: closeLastModal,
903
+ getModalByKey: getModalByKey,
904
+ modalIsOpen: modalIsOpen
895
905
  };
896
- }, [modals, container, setContainer, register, unregister, closeLastModal]);
906
+ }, [modals, container, setContainer, register, unregister, closeLastModal, getModalByKey, modalIsOpen]);
897
907
  return /*#__PURE__*/React.createElement(ModalContext.Provider, {
898
908
  value: value
899
909
  }, children);
package/es/hooks.js CHANGED
@@ -11,7 +11,6 @@ import { getCsrfToken, postJSON, getCSRFHeaders } from '@folklore/fetch';
11
11
  import get from 'lodash/get';
12
12
  import isArray from 'lodash/isArray';
13
13
  import isObject from 'lodash/isObject';
14
- import uniqBy from 'lodash/uniqBy';
15
14
  import { useFieldsManager, usePanneauResources, useResource, useUrlGenerator } from '@panneau/core/contexts';
16
15
  import { useIntl } from 'react-intl';
17
16
  import dayjs from 'dayjs';
@@ -676,156 +675,6 @@ var useIsVisible = function useIsVisible() {
676
675
  };
677
676
  var useIsVisible$1 = useIsVisible;
678
677
 
679
- function filterNullItems(items) {
680
- return isArray(items) ? items.filter(function (it) {
681
- return it !== null;
682
- }) : items;
683
- }
684
- function getItemsArray(items) {
685
- return filterNullItems(!isArray(items) && items !== null ? [items] : items);
686
- }
687
- var useItemSelection = function useItemSelection(_ref) {
688
- var _ref$items = _ref.items,
689
- items = _ref$items === void 0 ? null : _ref$items,
690
- _ref$selectedItems = _ref.selectedItems,
691
- initialSelectedItems = _ref$selectedItems === void 0 ? null : _ref$selectedItems,
692
- _ref$multipleSelectio = _ref.multipleSelection,
693
- multipleSelection = _ref$multipleSelectio === void 0 ? false : _ref$multipleSelectio,
694
- _ref$onSelectionChang = _ref.onSelectionChange,
695
- onSelectionChange = _ref$onSelectionChang === void 0 ? null : _ref$onSelectionChang;
696
- var initialItems = getItemsArray(initialSelectedItems);
697
- var _useState = useState(initialItems),
698
- _useState2 = _slicedToArray(_useState, 2),
699
- selectedItems = _useState2[0],
700
- setSelectedItems = _useState2[1];
701
- var onSelectItem = useCallback(function (item, index) {
702
- var _ref2 = item || {},
703
- _ref2$id = _ref2.id,
704
- itemId = _ref2$id === void 0 ? null : _ref2$id;
705
- var oldItem = (selectedItems || []).find(function (_ref3) {
706
- var id = _ref3.id;
707
- return id === itemId;
708
- }) || null;
709
- var newItems = [];
710
- if (oldItem === null) {
711
- newItems = selectedItems !== null && multipleSelection ? [].concat(_toConsumableArray(selectedItems), [item]) : [item];
712
- } else {
713
- newItems = (selectedItems || []).filter(function (_ref4) {
714
- var id = _ref4.id;
715
- return id !== itemId;
716
- });
717
- }
718
- setSelectedItems(filterNullItems(newItems));
719
- if (onSelectionChange !== null) {
720
- var _ref5 = newItems || [],
721
- _ref6 = _slicedToArray(_ref5, 1),
722
- _ref6$ = _ref6[0],
723
- firstItem = _ref6$ === void 0 ? null : _ref6$;
724
- var finalValue = multipleSelection ? newItems : firstItem;
725
- onSelectionChange(finalValue, item, index);
726
- }
727
- }, [selectedItems, onSelectionChange, multipleSelection]);
728
- var onSelectItems = useCallback(function (newItems, index) {
729
- var finalNewItems = filterNullItems(newItems);
730
- setSelectedItems(finalNewItems);
731
- if (onSelectionChange !== null) {
732
- var _ref7 = finalNewItems || [],
733
- _ref8 = _slicedToArray(_ref7, 1),
734
- _ref8$ = _ref8[0],
735
- firstItem = _ref8$ === void 0 ? null : _ref8$;
736
- var finalValue = multipleSelection ? finalNewItems : firstItem;
737
- onSelectionChange(finalValue, null, index);
738
- }
739
- }, [selectedItems, onSelectionChange, multipleSelection]);
740
- var onSelectPage = useCallback(function () {
741
- var pageSelected = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;
742
- var nextItems = [];
743
- if (!pageSelected) {
744
- nextItems = uniqBy([].concat(_toConsumableArray(items || []), _toConsumableArray(selectedItems || [])), function () {
745
- var _ref9 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},
746
- _ref9$id = _ref9.id,
747
- id = _ref9$id === void 0 ? null : _ref9$id;
748
- return id;
749
- });
750
- } else {
751
- var ids = (items || []).map(function () {
752
- var _ref10 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},
753
- _ref10$id = _ref10.id,
754
- id = _ref10$id === void 0 ? null : _ref10$id;
755
- return id;
756
- }).filter(function (id) {
757
- return id !== null;
758
- });
759
- nextItems = uniqBy((selectedItems || []).filter(function (it) {
760
- var _ref11 = it || {},
761
- _ref11$id = _ref11.id,
762
- id = _ref11$id === void 0 ? null : _ref11$id;
763
- return ids.indexOf(id) === -1;
764
- }), function () {
765
- var _ref12 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},
766
- _ref12$id = _ref12.id,
767
- id = _ref12$id === void 0 ? null : _ref12$id;
768
- return id;
769
- });
770
- }
771
- var finalNextItems = filterNullItems(nextItems);
772
- setSelectedItems(finalNextItems);
773
- if (onSelectionChange !== null) {
774
- onSelectionChange(finalNextItems);
775
- }
776
- }, [items, selectedItems, setSelectedItems, onSelectionChange]);
777
- var onClearSelected = useCallback(function () {
778
- setSelectedItems([]);
779
- if (onSelectionChange !== null) {
780
- onSelectionChange(multipleSelection ? [] : null);
781
- }
782
- }, [setSelectedItems, onSelectionChange, multipleSelection]);
783
- useEffect(function () {
784
- setSelectedItems(getItemsArray(initialSelectedItems));
785
- }, [initialSelectedItems]);
786
- var pageSelected = useMemo(function () {
787
- if (items === null || selectedItems === null) {
788
- return false;
789
- }
790
- var ids = (items || []).map(function () {
791
- var _ref13 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},
792
- _ref13$id = _ref13.id,
793
- id = _ref13$id === void 0 ? null : _ref13$id;
794
- return id;
795
- }).filter(function (id) {
796
- return id !== null;
797
- }) || [];
798
- if (ids === null || ids.length === 0) {
799
- return false;
800
- }
801
- var currentPageItems = (selectedItems || []).filter(function (it) {
802
- var _ref14 = it || {},
803
- _ref14$id = _ref14.id,
804
- id = _ref14$id === void 0 ? null : _ref14$id;
805
- return (ids || []).indexOf(id) !== -1;
806
- }) || [];
807
- return currentPageItems.length > 0 && currentPageItems.length === (items || []).length;
808
- }, [selectedItems, items]);
809
- var allSelected = useMemo(function () {
810
- return selectedItems !== null && items !== null && selectedItems.length === items.length;
811
- }, [selectedItems, items]);
812
- var selectedCount = useMemo(function () {
813
- return selectedItems !== null && selectedItems.length > 0 ? selectedItems.length : null;
814
- }, [selectedItems]);
815
- return {
816
- onSelectItem: onSelectItem,
817
- onSelectItems: onSelectItems,
818
- onSelectPage: onSelectPage,
819
- onClearSelected: onClearSelected,
820
- pageSelected: pageSelected,
821
- allSelected: allSelected,
822
- selectedCount: selectedCount,
823
- selectedItems: selectedItems,
824
- setSelectedItems: setSelectedItems
825
- };
826
- };
827
- var useItemSelection$1 = useItemSelection;
828
-
829
678
  var KEYCODES = {
830
679
  ARROW_LEFT: 37,
831
680
  ARROW_UP: 38,
@@ -1410,4 +1259,4 @@ var eventsManager = typeof window !== 'undefined' ? new EventsManager(window) :
1410
1259
  var useWindowEvent = createUseEvent(eventsManager);
1411
1260
  var useWindowEvent$1 = useWindowEvent;
1412
1261
 
1413
- export { KEYCODES, 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, useKeyboardKeys$1 as useKeyboardKeys, 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 };
1262
+ export { KEYCODES, getObserver, useActions$1 as useActions, useAnimationFrame$1 as useAnimationFrame, useDocumentEvent$1 as useDocumentEvent, useForm$1 as useForm, useFormattedDate, useFormattedTime, useIntersectionObserver, useIsVisible$1 as useIsVisible, useKeyboardKeys$1 as useKeyboardKeys, 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/utils.js CHANGED
@@ -17,6 +17,46 @@ import _toConsumableArray from '@babel/runtime/helpers/toConsumableArray';
17
17
  import get from 'lodash/get';
18
18
  import capitalize from 'lodash/capitalize';
19
19
  import slugify from 'slugify';
20
+ import _slicedToArray from '@babel/runtime/helpers/slicedToArray';
21
+ import uniqBy from 'lodash/uniqBy';
22
+
23
+ function checkClickable(el) {
24
+ var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
25
+ var parentDistance = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 1;
26
+ var _ref = options || {},
27
+ _ref$maxParentDistanc = _ref.maxParentDistance,
28
+ maxParentDistance = _ref$maxParentDistanc === void 0 ? 5 : _ref$maxParentDistanc,
29
+ _ref$tags = _ref.tags,
30
+ tags = _ref$tags === void 0 ? ['BUTTON', 'A', 'INPUT', 'I', 'TEXTAREA'] : _ref$tags;
31
+ var _ref2 = el || {},
32
+ _ref2$tagName = _ref2.tagName,
33
+ tagName = _ref2$tagName === void 0 ? null : _ref2$tagName,
34
+ _ref2$parentNode = _ref2.parentNode,
35
+ parentNode = _ref2$parentNode === void 0 ? null : _ref2$parentNode;
36
+ _ref2.dataset;
37
+ if (tagName === 'BODY') {
38
+ return false;
39
+ }
40
+
41
+ // Check if video is suspended
42
+ // if (
43
+ // tagName === 'VIDEO' &&
44
+ // typeof dataset.isSuspended !== 'undefined' &&
45
+ // (dataset.isSuspended === 'true' || dataset.isSuspended === true)
46
+ // ) {
47
+ // return true;
48
+ // }
49
+
50
+ if (tags.map(function (it) {
51
+ return it.toLowerCase();
52
+ }).indexOf(tagName.toLowerCase()) !== -1) {
53
+ return true;
54
+ }
55
+ if (parentDistance < maxParentDistance) {
56
+ return checkClickable(parentNode, options, parentDistance + 1);
57
+ }
58
+ return false;
59
+ }
20
60
 
21
61
  var convertStyleToString = function convertStyleToString(style) {
22
62
  return style !== null ? Object.keys(style).map(function (key) {
@@ -442,6 +482,83 @@ function loadPackage(name, loader) {
442
482
  });
443
483
  }
444
484
 
485
+ function filterNullItems(items) {
486
+ return isArray(items) ? items.filter(function (it) {
487
+ return it !== null;
488
+ }) : items;
489
+ }
490
+ function getItemsArray(items) {
491
+ return (items !== null && isArray(items) ? items.filter(function (it) {
492
+ return it !== null;
493
+ }) : [items]).filter(function (it) {
494
+ return it !== null;
495
+ });
496
+ }
497
+ function selectItem(item, selectedItems, onSelectionChange) {
498
+ var multipleSelection = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : false;
499
+ var _ref = item || {},
500
+ _ref$id = _ref.id,
501
+ itemId = _ref$id === void 0 ? null : _ref$id;
502
+ var selectedItemsArray = getItemsArray(selectedItems);
503
+ var oldItem = selectedItemsArray.find(function (_ref2) {
504
+ var id = _ref2.id;
505
+ return id === itemId;
506
+ }) || null;
507
+ var newItems = [];
508
+ if (oldItem === null) {
509
+ newItems = selectedItems !== null && multipleSelection ? [].concat(_toConsumableArray(selectedItemsArray), [item]) : [item];
510
+ } else {
511
+ newItems = selectedItemsArray.filter(function (_ref3) {
512
+ var id = _ref3.id;
513
+ return id !== itemId;
514
+ });
515
+ }
516
+ onSelectionChange(filterNullItems(newItems));
517
+ if (onSelectionChange !== null) {
518
+ var _ref4 = newItems || [],
519
+ _ref5 = _slicedToArray(_ref4, 1),
520
+ _ref5$ = _ref5[0],
521
+ firstItem = _ref5$ === void 0 ? null : _ref5$;
522
+ var finalValue = multipleSelection ? newItems : firstItem;
523
+ onSelectionChange(finalValue, item);
524
+ }
525
+ }
526
+ function selectPage(pageSelected, items, selectedItems, onSelectionChange) {
527
+ var nextItems = [];
528
+ if (!pageSelected) {
529
+ nextItems = uniqBy([].concat(_toConsumableArray(items || []), _toConsumableArray(selectedItems || [])), function () {
530
+ var _ref6 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},
531
+ _ref6$id = _ref6.id,
532
+ id = _ref6$id === void 0 ? null : _ref6$id;
533
+ return id;
534
+ });
535
+ } else {
536
+ var ids = (items || []).map(function () {
537
+ var _ref7 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},
538
+ _ref7$id = _ref7.id,
539
+ id = _ref7$id === void 0 ? null : _ref7$id;
540
+ return id;
541
+ }).filter(function (id) {
542
+ return id !== null;
543
+ });
544
+ nextItems = uniqBy((selectedItems || []).filter(function (it) {
545
+ var _ref8 = it || {},
546
+ _ref8$id = _ref8.id,
547
+ id = _ref8$id === void 0 ? null : _ref8$id;
548
+ return ids.indexOf(id) === -1;
549
+ }), function () {
550
+ var _ref9 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},
551
+ _ref9$id = _ref9.id,
552
+ id = _ref9$id === void 0 ? null : _ref9$id;
553
+ return id;
554
+ });
555
+ }
556
+ var finalNextItems = nextItems;
557
+ if (onSelectionChange !== null) {
558
+ onSelectionChange(finalNextItems);
559
+ }
560
+ }
561
+
445
562
  var setValue = function setValue(value, keyParts, fieldValue) {
446
563
  var key = keyParts.shift();
447
564
  var isArray = key.match(/^[0-9]+$/) !== null;
@@ -485,4 +602,4 @@ var validateFields = function validateFields(fields, value) {
485
602
  };
486
603
  var validateFields$1 = validateFields;
487
604
 
488
- export { convertStyleToString$1 as convertStyleToString, copyToClipboard, createNullableOnChange$1 as createNullableOnChange, createUseEvent$1 as createUseEvent, flattenComponents$1 as flattenComponents, formatDuration$1 as formatDuration, getColumnsWithFields$1 as getColumnsWithFields, getComponent$1 as getComponent, getComponentFromName$1 as getComponentFromName, getDefinitionFromId$1 as getDefinitionFromId, getDisplayName$1 as getDisplayName, getFieldByName$1 as getFieldByName, getFieldFromPath$1 as getFieldFromPath, getFileName$1 as getFileName, getPathValue$1 as getPathValue, getSelectOptions$1 as getSelectOptions, isMessage$1 as isMessage, loadPackage, setValue$1 as setFieldValue, slug$1 as slug, validateFields$1 as validateFields };
605
+ export { checkClickable, convertStyleToString$1 as convertStyleToString, copyToClipboard, createNullableOnChange$1 as createNullableOnChange, createUseEvent$1 as createUseEvent, flattenComponents$1 as flattenComponents, formatDuration$1 as formatDuration, getColumnsWithFields$1 as getColumnsWithFields, getComponent$1 as getComponent, getComponentFromName$1 as getComponentFromName, getDefinitionFromId$1 as getDefinitionFromId, getDisplayName$1 as getDisplayName, getFieldByName$1 as getFieldByName, getFieldFromPath$1 as getFieldFromPath, getFileName$1 as getFileName, getPathValue$1 as getPathValue, getSelectOptions$1 as getSelectOptions, isMessage$1 as isMessage, loadPackage, selectItem, selectPage, setValue$1 as setFieldValue, slug$1 as slug, validateFields$1 as validateFields };
package/lib/contexts.js CHANGED
@@ -905,6 +905,14 @@ var ModalProvider = function ModalProvider(_ref) {
905
905
  modalsRef.current = newModals;
906
906
  }
907
907
  }, [modals, setModals]);
908
+ var getModalByKey = React.useCallback(function (key) {
909
+ return (modals || []).find(function (modal) {
910
+ return (modal === null || modal === void 0 ? void 0 : modal.id) === key;
911
+ }) || null;
912
+ }, [modals]);
913
+ var modalIsOpen = React.useCallback(function (key) {
914
+ return getModalByKey(key) !== null;
915
+ }, [getModalByKey]);
908
916
  var value = React.useMemo(function () {
909
917
  return {
910
918
  modals: modals,
@@ -912,9 +920,11 @@ var ModalProvider = function ModalProvider(_ref) {
912
920
  setContainer: setContainer,
913
921
  register: register,
914
922
  unregister: unregister,
915
- closeLastModal: closeLastModal
923
+ closeLastModal: closeLastModal,
924
+ getModalByKey: getModalByKey,
925
+ modalIsOpen: modalIsOpen
916
926
  };
917
- }, [modals, container, setContainer, register, unregister, closeLastModal]);
927
+ }, [modals, container, setContainer, register, unregister, closeLastModal, getModalByKey, modalIsOpen]);
918
928
  return /*#__PURE__*/React.createElement(ModalContext.Provider, {
919
929
  value: value
920
930
  }, children);
package/lib/hooks.js CHANGED
@@ -13,7 +13,6 @@ var fetch = require('@folklore/fetch');
13
13
  var get = require('lodash/get');
14
14
  var isArray = require('lodash/isArray');
15
15
  var isObject = require('lodash/isObject');
16
- var uniqBy = require('lodash/uniqBy');
17
16
  var contexts = require('@panneau/core/contexts');
18
17
  var reactIntl = require('react-intl');
19
18
  var dayjs = require('dayjs');
@@ -678,156 +677,6 @@ var useIsVisible = function useIsVisible() {
678
677
  };
679
678
  var useIsVisible$1 = useIsVisible;
680
679
 
681
- function filterNullItems(items) {
682
- return isArray(items) ? items.filter(function (it) {
683
- return it !== null;
684
- }) : items;
685
- }
686
- function getItemsArray(items) {
687
- return filterNullItems(!isArray(items) && items !== null ? [items] : items);
688
- }
689
- var useItemSelection = function useItemSelection(_ref) {
690
- var _ref$items = _ref.items,
691
- items = _ref$items === void 0 ? null : _ref$items,
692
- _ref$selectedItems = _ref.selectedItems,
693
- initialSelectedItems = _ref$selectedItems === void 0 ? null : _ref$selectedItems,
694
- _ref$multipleSelectio = _ref.multipleSelection,
695
- multipleSelection = _ref$multipleSelectio === void 0 ? false : _ref$multipleSelectio,
696
- _ref$onSelectionChang = _ref.onSelectionChange,
697
- onSelectionChange = _ref$onSelectionChang === void 0 ? null : _ref$onSelectionChang;
698
- var initialItems = getItemsArray(initialSelectedItems);
699
- var _useState = react.useState(initialItems),
700
- _useState2 = _slicedToArray(_useState, 2),
701
- selectedItems = _useState2[0],
702
- setSelectedItems = _useState2[1];
703
- var onSelectItem = react.useCallback(function (item, index) {
704
- var _ref2 = item || {},
705
- _ref2$id = _ref2.id,
706
- itemId = _ref2$id === void 0 ? null : _ref2$id;
707
- var oldItem = (selectedItems || []).find(function (_ref3) {
708
- var id = _ref3.id;
709
- return id === itemId;
710
- }) || null;
711
- var newItems = [];
712
- if (oldItem === null) {
713
- newItems = selectedItems !== null && multipleSelection ? [].concat(_toConsumableArray(selectedItems), [item]) : [item];
714
- } else {
715
- newItems = (selectedItems || []).filter(function (_ref4) {
716
- var id = _ref4.id;
717
- return id !== itemId;
718
- });
719
- }
720
- setSelectedItems(filterNullItems(newItems));
721
- if (onSelectionChange !== null) {
722
- var _ref5 = newItems || [],
723
- _ref6 = _slicedToArray(_ref5, 1),
724
- _ref6$ = _ref6[0],
725
- firstItem = _ref6$ === void 0 ? null : _ref6$;
726
- var finalValue = multipleSelection ? newItems : firstItem;
727
- onSelectionChange(finalValue, item, index);
728
- }
729
- }, [selectedItems, onSelectionChange, multipleSelection]);
730
- var onSelectItems = react.useCallback(function (newItems, index) {
731
- var finalNewItems = filterNullItems(newItems);
732
- setSelectedItems(finalNewItems);
733
- if (onSelectionChange !== null) {
734
- var _ref7 = finalNewItems || [],
735
- _ref8 = _slicedToArray(_ref7, 1),
736
- _ref8$ = _ref8[0],
737
- firstItem = _ref8$ === void 0 ? null : _ref8$;
738
- var finalValue = multipleSelection ? finalNewItems : firstItem;
739
- onSelectionChange(finalValue, null, index);
740
- }
741
- }, [selectedItems, onSelectionChange, multipleSelection]);
742
- var onSelectPage = react.useCallback(function () {
743
- var pageSelected = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;
744
- var nextItems = [];
745
- if (!pageSelected) {
746
- nextItems = uniqBy([].concat(_toConsumableArray(items || []), _toConsumableArray(selectedItems || [])), function () {
747
- var _ref9 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},
748
- _ref9$id = _ref9.id,
749
- id = _ref9$id === void 0 ? null : _ref9$id;
750
- return id;
751
- });
752
- } else {
753
- var ids = (items || []).map(function () {
754
- var _ref10 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},
755
- _ref10$id = _ref10.id,
756
- id = _ref10$id === void 0 ? null : _ref10$id;
757
- return id;
758
- }).filter(function (id) {
759
- return id !== null;
760
- });
761
- nextItems = uniqBy((selectedItems || []).filter(function (it) {
762
- var _ref11 = it || {},
763
- _ref11$id = _ref11.id,
764
- id = _ref11$id === void 0 ? null : _ref11$id;
765
- return ids.indexOf(id) === -1;
766
- }), function () {
767
- var _ref12 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},
768
- _ref12$id = _ref12.id,
769
- id = _ref12$id === void 0 ? null : _ref12$id;
770
- return id;
771
- });
772
- }
773
- var finalNextItems = filterNullItems(nextItems);
774
- setSelectedItems(finalNextItems);
775
- if (onSelectionChange !== null) {
776
- onSelectionChange(finalNextItems);
777
- }
778
- }, [items, selectedItems, setSelectedItems, onSelectionChange]);
779
- var onClearSelected = react.useCallback(function () {
780
- setSelectedItems([]);
781
- if (onSelectionChange !== null) {
782
- onSelectionChange(multipleSelection ? [] : null);
783
- }
784
- }, [setSelectedItems, onSelectionChange, multipleSelection]);
785
- react.useEffect(function () {
786
- setSelectedItems(getItemsArray(initialSelectedItems));
787
- }, [initialSelectedItems]);
788
- var pageSelected = react.useMemo(function () {
789
- if (items === null || selectedItems === null) {
790
- return false;
791
- }
792
- var ids = (items || []).map(function () {
793
- var _ref13 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},
794
- _ref13$id = _ref13.id,
795
- id = _ref13$id === void 0 ? null : _ref13$id;
796
- return id;
797
- }).filter(function (id) {
798
- return id !== null;
799
- }) || [];
800
- if (ids === null || ids.length === 0) {
801
- return false;
802
- }
803
- var currentPageItems = (selectedItems || []).filter(function (it) {
804
- var _ref14 = it || {},
805
- _ref14$id = _ref14.id,
806
- id = _ref14$id === void 0 ? null : _ref14$id;
807
- return (ids || []).indexOf(id) !== -1;
808
- }) || [];
809
- return currentPageItems.length > 0 && currentPageItems.length === (items || []).length;
810
- }, [selectedItems, items]);
811
- var allSelected = react.useMemo(function () {
812
- return selectedItems !== null && items !== null && selectedItems.length === items.length;
813
- }, [selectedItems, items]);
814
- var selectedCount = react.useMemo(function () {
815
- return selectedItems !== null && selectedItems.length > 0 ? selectedItems.length : null;
816
- }, [selectedItems]);
817
- return {
818
- onSelectItem: onSelectItem,
819
- onSelectItems: onSelectItems,
820
- onSelectPage: onSelectPage,
821
- onClearSelected: onClearSelected,
822
- pageSelected: pageSelected,
823
- allSelected: allSelected,
824
- selectedCount: selectedCount,
825
- selectedItems: selectedItems,
826
- setSelectedItems: setSelectedItems
827
- };
828
- };
829
- var useItemSelection$1 = useItemSelection;
830
-
831
680
  var KEYCODES = {
832
681
  ARROW_LEFT: 37,
833
682
  ARROW_UP: 38,
@@ -1422,7 +1271,6 @@ exports.useFormattedDate = useFormattedDate;
1422
1271
  exports.useFormattedTime = useFormattedTime;
1423
1272
  exports.useIntersectionObserver = useIntersectionObserver;
1424
1273
  exports.useIsVisible = useIsVisible$1;
1425
- exports.useItemSelection = useItemSelection$1;
1426
1274
  exports.useKeyboardKeys = useKeyboardKeys$1;
1427
1275
  exports.useLoadedFonts = useLoadedFonts$1;
1428
1276
  exports.useMediaApi = useMediaApi$1;
package/lib/utils.js CHANGED
@@ -17,6 +17,45 @@ var _toConsumableArray = require('@babel/runtime/helpers/toConsumableArray');
17
17
  var get = require('lodash/get');
18
18
  var capitalize = require('lodash/capitalize');
19
19
  var slugify = require('slugify');
20
+ var uniqBy = require('lodash/uniqBy');
21
+
22
+ function checkClickable(el) {
23
+ var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
24
+ var parentDistance = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 1;
25
+ var _ref = options || {},
26
+ _ref$maxParentDistanc = _ref.maxParentDistance,
27
+ maxParentDistance = _ref$maxParentDistanc === void 0 ? 5 : _ref$maxParentDistanc,
28
+ _ref$tags = _ref.tags,
29
+ tags = _ref$tags === void 0 ? ['BUTTON', 'A', 'INPUT', 'I', 'TEXTAREA'] : _ref$tags;
30
+ var _ref2 = el || {},
31
+ _ref2$tagName = _ref2.tagName,
32
+ tagName = _ref2$tagName === void 0 ? null : _ref2$tagName,
33
+ _ref2$parentNode = _ref2.parentNode,
34
+ parentNode = _ref2$parentNode === void 0 ? null : _ref2$parentNode;
35
+ _ref2.dataset;
36
+ if (tagName === 'BODY') {
37
+ return false;
38
+ }
39
+
40
+ // Check if video is suspended
41
+ // if (
42
+ // tagName === 'VIDEO' &&
43
+ // typeof dataset.isSuspended !== 'undefined' &&
44
+ // (dataset.isSuspended === 'true' || dataset.isSuspended === true)
45
+ // ) {
46
+ // return true;
47
+ // }
48
+
49
+ if (tags.map(function (it) {
50
+ return it.toLowerCase();
51
+ }).indexOf(tagName.toLowerCase()) !== -1) {
52
+ return true;
53
+ }
54
+ if (parentDistance < maxParentDistance) {
55
+ return checkClickable(parentNode, options, parentDistance + 1);
56
+ }
57
+ return false;
58
+ }
20
59
 
21
60
  /**
22
61
  * Convert any string into a lower case string with spaces between words.
@@ -619,6 +658,83 @@ function loadPackage(name, loader) {
619
658
  });
620
659
  }
621
660
 
661
+ function filterNullItems(items) {
662
+ return isArray(items) ? items.filter(function (it) {
663
+ return it !== null;
664
+ }) : items;
665
+ }
666
+ function getItemsArray(items) {
667
+ return (items !== null && isArray(items) ? items.filter(function (it) {
668
+ return it !== null;
669
+ }) : [items]).filter(function (it) {
670
+ return it !== null;
671
+ });
672
+ }
673
+ function selectItem(item, selectedItems, onSelectionChange) {
674
+ var multipleSelection = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : false;
675
+ var _ref = item || {},
676
+ _ref$id = _ref.id,
677
+ itemId = _ref$id === void 0 ? null : _ref$id;
678
+ var selectedItemsArray = getItemsArray(selectedItems);
679
+ var oldItem = selectedItemsArray.find(function (_ref2) {
680
+ var id = _ref2.id;
681
+ return id === itemId;
682
+ }) || null;
683
+ var newItems = [];
684
+ if (oldItem === null) {
685
+ newItems = selectedItems !== null && multipleSelection ? [].concat(_toConsumableArray(selectedItemsArray), [item]) : [item];
686
+ } else {
687
+ newItems = selectedItemsArray.filter(function (_ref3) {
688
+ var id = _ref3.id;
689
+ return id !== itemId;
690
+ });
691
+ }
692
+ onSelectionChange(filterNullItems(newItems));
693
+ if (onSelectionChange !== null) {
694
+ var _ref4 = newItems || [],
695
+ _ref5 = _slicedToArray(_ref4, 1),
696
+ _ref5$ = _ref5[0],
697
+ firstItem = _ref5$ === void 0 ? null : _ref5$;
698
+ var finalValue = multipleSelection ? newItems : firstItem;
699
+ onSelectionChange(finalValue, item);
700
+ }
701
+ }
702
+ function selectPage(pageSelected, items, selectedItems, onSelectionChange) {
703
+ var nextItems = [];
704
+ if (!pageSelected) {
705
+ nextItems = uniqBy([].concat(_toConsumableArray(items || []), _toConsumableArray(selectedItems || [])), function () {
706
+ var _ref6 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},
707
+ _ref6$id = _ref6.id,
708
+ id = _ref6$id === void 0 ? null : _ref6$id;
709
+ return id;
710
+ });
711
+ } else {
712
+ var ids = (items || []).map(function () {
713
+ var _ref7 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},
714
+ _ref7$id = _ref7.id,
715
+ id = _ref7$id === void 0 ? null : _ref7$id;
716
+ return id;
717
+ }).filter(function (id) {
718
+ return id !== null;
719
+ });
720
+ nextItems = uniqBy((selectedItems || []).filter(function (it) {
721
+ var _ref8 = it || {},
722
+ _ref8$id = _ref8.id,
723
+ id = _ref8$id === void 0 ? null : _ref8$id;
724
+ return ids.indexOf(id) === -1;
725
+ }), function () {
726
+ var _ref9 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},
727
+ _ref9$id = _ref9.id,
728
+ id = _ref9$id === void 0 ? null : _ref9$id;
729
+ return id;
730
+ });
731
+ }
732
+ var finalNextItems = nextItems;
733
+ if (onSelectionChange !== null) {
734
+ onSelectionChange(finalNextItems);
735
+ }
736
+ }
737
+
622
738
  var setValue = function setValue(value, keyParts, fieldValue) {
623
739
  var key = keyParts.shift();
624
740
  var isArray = key.match(/^[0-9]+$/) !== null;
@@ -662,6 +778,7 @@ var validateFields = function validateFields(fields, value) {
662
778
  };
663
779
  var validateFields$1 = validateFields;
664
780
 
781
+ exports.checkClickable = checkClickable;
665
782
  exports.convertStyleToString = convertStyleToString$1;
666
783
  exports.copyToClipboard = copyToClipboard;
667
784
  exports.createNullableOnChange = createNullableOnChange$1;
@@ -682,6 +799,8 @@ exports.getSelectOptions = getSelectOptions$1;
682
799
  exports.isMessage = isMessage$1;
683
800
  exports.loadPackage = loadPackage;
684
801
  exports.pascalCase = pascalCase;
802
+ exports.selectItem = selectItem;
803
+ exports.selectPage = selectPage;
685
804
  exports.setFieldValue = setValue$1;
686
805
  exports.slug = slug$1;
687
806
  exports.snakeCase = snakeCase;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@panneau/core",
3
- "version": "3.0.175",
3
+ "version": "3.0.182",
4
4
  "description": "",
5
5
  "keywords": [
6
6
  "javascript"
@@ -111,5 +111,5 @@
111
111
  "publishConfig": {
112
112
  "access": "public"
113
113
  },
114
- "gitHead": "cb8320f1041e7ced6bcf77dd6d32661950215a92"
114
+ "gitHead": "27626681ce1bcf3e4779ecabeb5d69c58df4d351"
115
115
  }