@vitus-labs/elements 0.65.0 → 0.67.0

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 (87) hide show
  1. package/LICENSE +1 -1
  2. package/lib/analysis/vitus-labs-elements.browser.js.html +5095 -4901
  3. package/lib/analysis/vitus-labs-elements.js.html +5095 -4901
  4. package/lib/analysis/vitus-labs-elements.module.js.html +5095 -4901
  5. package/lib/analysis/vitus-labs-elements.native.js.html +5095 -4901
  6. package/lib/index.d.ts +251 -186
  7. package/lib/types/Element/component.d.ts +1 -0
  8. package/lib/types/Element/component.d.ts.map +1 -0
  9. package/lib/types/Element/constants.d.ts +1 -0
  10. package/lib/types/Element/constants.d.ts.map +1 -0
  11. package/lib/types/Element/index.d.ts +1 -0
  12. package/lib/types/Element/index.d.ts.map +1 -0
  13. package/lib/types/Element/types.d.ts +3 -2
  14. package/lib/types/Element/types.d.ts.map +1 -0
  15. package/lib/types/Element/utils.d.ts +2 -1
  16. package/lib/types/Element/utils.d.ts.map +1 -0
  17. package/lib/types/Element/withEqualSizeBeforeAfter.d.ts +2 -1
  18. package/lib/types/Element/withEqualSizeBeforeAfter.d.ts.map +1 -0
  19. package/lib/types/List/component.d.ts +2 -1
  20. package/lib/types/List/component.d.ts.map +1 -0
  21. package/lib/types/List/index.d.ts +1 -0
  22. package/lib/types/List/index.d.ts.map +1 -0
  23. package/lib/types/List/withActiveState.d.ts +3 -2
  24. package/lib/types/List/withActiveState.d.ts.map +1 -0
  25. package/lib/types/Overlay/component.d.ts +7 -6
  26. package/lib/types/Overlay/component.d.ts.map +1 -0
  27. package/lib/types/Overlay/context.d.ts +4 -3
  28. package/lib/types/Overlay/context.d.ts.map +1 -0
  29. package/lib/types/Overlay/index.d.ts +1 -0
  30. package/lib/types/Overlay/index.d.ts.map +1 -0
  31. package/lib/types/Overlay/useOverlay.backup.d.ts +6 -5
  32. package/lib/types/Overlay/useOverlay.backup.d.ts.map +1 -0
  33. package/lib/types/Overlay/useOverlay.d.ts +7 -6
  34. package/lib/types/Overlay/useOverlay.d.ts.map +1 -0
  35. package/lib/types/Portal/component.d.ts +2 -1
  36. package/lib/types/Portal/component.d.ts.map +1 -0
  37. package/lib/types/Portal/index.d.ts +1 -0
  38. package/lib/types/Portal/index.d.ts.map +1 -0
  39. package/lib/types/Text/component.d.ts +2 -1
  40. package/lib/types/Text/component.d.ts.map +1 -0
  41. package/lib/types/Text/index.d.ts +1 -0
  42. package/lib/types/Text/index.d.ts.map +1 -0
  43. package/lib/types/Text/styled.d.ts +1 -0
  44. package/lib/types/Text/styled.d.ts.map +1 -0
  45. package/lib/types/Util/component.d.ts +2 -1
  46. package/lib/types/Util/component.d.ts.map +1 -0
  47. package/lib/types/Util/index.d.ts +1 -0
  48. package/lib/types/Util/index.d.ts.map +1 -0
  49. package/lib/types/constants.d.ts +1 -0
  50. package/lib/types/constants.d.ts.map +1 -0
  51. package/lib/types/helpers/Content/component.d.ts +2 -1
  52. package/lib/types/helpers/Content/component.d.ts.map +1 -0
  53. package/lib/types/helpers/Content/index.d.ts +1 -0
  54. package/lib/types/helpers/Content/index.d.ts.map +1 -0
  55. package/lib/types/helpers/Content/styled.d.ts +1 -0
  56. package/lib/types/helpers/Content/styled.d.ts.map +1 -0
  57. package/lib/types/helpers/Iterator/component.d.ts +2 -1
  58. package/lib/types/helpers/Iterator/component.d.ts.map +1 -0
  59. package/lib/types/helpers/Iterator/index.d.ts +1 -0
  60. package/lib/types/helpers/Iterator/index.d.ts.map +1 -0
  61. package/lib/types/helpers/Iterator/types.d.ts +9 -8
  62. package/lib/types/helpers/Iterator/types.d.ts.map +1 -0
  63. package/lib/types/helpers/Wrapper/component.d.ts +2 -1
  64. package/lib/types/helpers/Wrapper/component.d.ts.map +1 -0
  65. package/lib/types/helpers/Wrapper/constants.d.ts +1 -0
  66. package/lib/types/helpers/Wrapper/constants.d.ts.map +1 -0
  67. package/lib/types/helpers/Wrapper/index.d.ts +1 -0
  68. package/lib/types/helpers/Wrapper/index.d.ts.map +1 -0
  69. package/lib/types/helpers/Wrapper/styled.d.ts +1 -0
  70. package/lib/types/helpers/Wrapper/styled.d.ts.map +1 -0
  71. package/lib/types/helpers/Wrapper/utils.d.ts +2 -1
  72. package/lib/types/helpers/Wrapper/utils.d.ts.map +1 -0
  73. package/lib/types/helpers/index.d.ts +1 -0
  74. package/lib/types/helpers/index.d.ts.map +1 -0
  75. package/lib/types/index.d.ts +1 -0
  76. package/lib/types/index.d.ts.map +1 -0
  77. package/lib/types/types.d.ts +27 -26
  78. package/lib/types/types.d.ts.map +1 -0
  79. package/lib/vitus-labs-elements.browser.js +128 -106
  80. package/lib/vitus-labs-elements.browser.js.map +1 -1
  81. package/lib/vitus-labs-elements.js +143 -127
  82. package/lib/vitus-labs-elements.js.map +1 -1
  83. package/lib/vitus-labs-elements.module.js +127 -105
  84. package/lib/vitus-labs-elements.module.js.map +1 -1
  85. package/lib/vitus-labs-elements.native.js +127 -105
  86. package/lib/vitus-labs-elements.native.js.map +1 -1
  87. package/package.json +9 -9
@@ -74,7 +74,7 @@ var Styled$2 = config.styled(config.component) `
74
74
  })};
75
75
  `;
76
76
 
77
- const component$5 = forwardRef(({ children, tag, block, extendCss, direction, alignX, alignY, equalCols, isInline, ...props }, ref) => {
77
+ const component$4 = forwardRef(({ children, tag, block, extendCss, direction, alignX, alignY, equalCols, isInline, ...props }, ref) => {
78
78
  const debugProps = process.env.NODE_ENV !== 'production'
79
79
  ? {
80
80
  'data-vl-element': 'Element',
@@ -179,7 +179,7 @@ var Styled$1 = config.styled(config.component) `
179
179
  })};
180
180
  `;
181
181
 
182
- const Component$5 = ({ contentType, tag, parentDirection, direction, alignX, alignY, equalCols, gap, extendCss, ...props }) => {
182
+ const Component$6 = ({ contentType, tag, parentDirection, direction, alignX, alignY, equalCols, gap, extendCss, ...props }) => {
183
183
  const debugProps = process.env.NODE_ENV !== 'production'
184
184
  ? {
185
185
  'data-vl-element': contentType,
@@ -196,7 +196,7 @@ const Component$5 = ({ contentType, tag, parentDirection, direction, alignX, ali
196
196
  extraStyles: extendCss,
197
197
  }, ...debugProps, ...props }));
198
198
  };
199
- var component$4 = memo(Component$5);
199
+ var component$3 = memo(Component$6);
200
200
 
201
201
  const INLINE_ELEMENTS = {
202
202
  span: true,
@@ -264,7 +264,7 @@ const defaultDirection = 'inline';
264
264
  const defaultContentDirection = 'rows';
265
265
  const defaultAlignX = 'left';
266
266
  const defaultAlignY = 'center';
267
- const Component$4 = forwardRef(({ innerRef, tag, label, content, children, beforeContent, afterContent, block, equalCols, gap, direction, alignX = defaultAlignX, alignY = defaultAlignY, css, contentCss, beforeContentCss, afterContentCss, contentDirection = defaultContentDirection, contentAlignX = defaultAlignX, contentAlignY = defaultAlignY, beforeContentDirection = defaultDirection, beforeContentAlignX = defaultAlignX, beforeContentAlignY = defaultAlignY, afterContentDirection = defaultDirection, afterContentAlignX = defaultAlignX, afterContentAlignY = defaultAlignY, ...props }, ref) => {
267
+ const Component$5 = forwardRef(({ innerRef, tag, label, content, children, beforeContent, afterContent, block, equalCols, gap, direction, alignX = defaultAlignX, alignY = defaultAlignY, css, contentCss, beforeContentCss, afterContentCss, contentDirection = defaultContentDirection, contentAlignX = defaultAlignX, contentAlignY = defaultAlignY, beforeContentDirection = defaultDirection, beforeContentAlignX = defaultAlignX, beforeContentAlignY = defaultAlignY, afterContentDirection = defaultDirection, afterContentAlignX = defaultAlignX, afterContentAlignY = defaultAlignY, ...props }, ref) => {
268
268
  // --------------------------------------------------------
269
269
  // check if should render only single element
270
270
  // --------------------------------------------------------
@@ -325,18 +325,18 @@ const Component$4 = forwardRef(({ innerRef, tag, label, content, children, befor
325
325
  // return simple/empty element like input or image etc.
326
326
  // --------------------------------------------------------
327
327
  if (shouldBeEmpty) {
328
- return React.createElement(component$5, { ...props, ...WRAPPER_PROPS });
328
+ return React.createElement(component$4, { ...props, ...WRAPPER_PROPS });
329
329
  }
330
330
  const contentRenderOutput = render(CHILDREN);
331
- return (React.createElement(component$5, { ...props, ...WRAPPER_PROPS, isInline: isInline },
332
- beforeContent && (React.createElement(component$4, { tag: SUB_TAG, contentType: "before", parentDirection: wrapperDirection, extendCss: beforeContentCss, direction: beforeContentDirection, alignX: beforeContentAlignX, alignY: beforeContentAlignY, equalCols: equalCols, gap: gap }, render(beforeContent))),
333
- isSimpleElement ? (contentRenderOutput) : (React.createElement(component$4, { tag: SUB_TAG, contentType: "content", parentDirection: wrapperDirection, extendCss: contentCss, direction: contentDirection, alignX: contentAlignX, alignY: contentAlignY, equalCols: equalCols }, contentRenderOutput)),
334
- afterContent && (React.createElement(component$4, { tag: SUB_TAG, contentType: "after", parentDirection: wrapperDirection, extendCss: afterContentCss, direction: afterContentDirection, alignX: afterContentAlignX, alignY: afterContentAlignY, equalCols: equalCols, gap: gap }, render(afterContent)))));
331
+ return (React.createElement(component$4, { ...props, ...WRAPPER_PROPS, isInline: isInline },
332
+ beforeContent && (React.createElement(component$3, { tag: SUB_TAG, contentType: "before", parentDirection: wrapperDirection, extendCss: beforeContentCss, direction: beforeContentDirection, alignX: beforeContentAlignX, alignY: beforeContentAlignY, equalCols: equalCols, gap: gap }, render(beforeContent))),
333
+ isSimpleElement ? (contentRenderOutput) : (React.createElement(component$3, { tag: SUB_TAG, contentType: "content", parentDirection: wrapperDirection, extendCss: contentCss, direction: contentDirection, alignX: contentAlignX, alignY: contentAlignY, equalCols: equalCols }, contentRenderOutput)),
334
+ afterContent && (React.createElement(component$3, { tag: SUB_TAG, contentType: "after", parentDirection: wrapperDirection, extendCss: afterContentCss, direction: afterContentDirection, alignX: afterContentAlignX, alignY: afterContentAlignY, equalCols: equalCols, gap: gap }, render(afterContent)))));
335
335
  });
336
336
  const name$5 = `${PKG_NAME}/Element`;
337
- Component$4.displayName = name$5;
338
- Component$4.pkgName = PKG_NAME;
339
- Component$4.VITUS_LABS__COMPONENT = name$5;
337
+ Component$5.displayName = name$5;
338
+ Component$5.pkgName = PKG_NAME;
339
+ Component$5.VITUS_LABS__COMPONENT = name$5;
340
340
 
341
341
  // @ts-nocheck
342
342
  const isNumber = (a, b) => Number.isInteger(a) && Number.isInteger(b);
@@ -401,7 +401,7 @@ const attachItemProps = ({ i, length, }) => {
401
401
  position,
402
402
  };
403
403
  };
404
- const Component$3 = (props) => {
404
+ const Component$4 = (props) => {
405
405
  const { itemKey, valueName, children, component, data, wrapComponent: Wrapper, wrapProps, itemProps, } = props;
406
406
  const injectItemProps = useMemo(() => (typeof itemProps === 'function' ? itemProps : () => itemProps), [itemProps]);
407
407
  const injectWrapItemProps = useMemo(() => (typeof wrapProps === 'function' ? wrapProps : () => wrapProps), [wrapProps]);
@@ -547,19 +547,19 @@ const Component$3 = (props) => {
547
547
  };
548
548
  return renderItems();
549
549
  };
550
- Component$3.isIterator = true;
551
- Component$3.RESERVED_PROPS = RESERVED_PROPS;
550
+ Component$4.isIterator = true;
551
+ Component$4.RESERVED_PROPS = RESERVED_PROPS;
552
552
 
553
- const component$3 = forwardRef(({ rootElement = false, ...props }, ref) => {
554
- const renderedList = React.createElement(Component$3, { ...pick(props, Component$3.RESERVED_PROPS) });
553
+ const component$2 = forwardRef(({ rootElement = false, ...props }, ref) => {
554
+ const renderedList = React.createElement(Component$4, { ...pick(props, Component$4.RESERVED_PROPS) });
555
555
  if (!rootElement)
556
556
  return renderedList;
557
- return (React.createElement(Component$4, { ref: ref, ...omit(props, Component$3.RESERVED_PROPS) }, renderedList));
557
+ return (React.createElement(Component$5, { ref: ref, ...omit(props, Component$4.RESERVED_PROPS) }, renderedList));
558
558
  });
559
559
  const name$4 = `${PKG_NAME}/List`;
560
- component$3.displayName = name$4;
561
- component$3.pkgName = PKG_NAME;
562
- component$3.VITUS_LABS__COMPONENT = name$4;
560
+ component$2.displayName = name$4;
561
+ component$2.pkgName = PKG_NAME;
562
+ component$2.VITUS_LABS__COMPONENT = name$4;
563
563
 
564
564
  // @ts-nocheck
565
565
  const RESERVED_KEYS = [
@@ -568,7 +568,7 @@ const RESERVED_KEYS = [
568
568
  'itemProps',
569
569
  'activeItemRequired',
570
570
  ];
571
- const component$2 = (WrappedComponent) => {
571
+ const component$1 = (WrappedComponent) => {
572
572
  const displayName = WrappedComponent.displayName || WrappedComponent.name || 'Component';
573
573
  const Enhanced = (props) => {
574
574
  const { type = 'single', activeItemRequired, activeItems, itemProps = {}, ...rest } = props;
@@ -691,7 +691,7 @@ const component$2 = (WrappedComponent) => {
691
691
  return Enhanced;
692
692
  };
693
693
 
694
- const Component$2 = ({ DOMLocation, tag = 'div', children, }) => {
694
+ const Component$3 = ({ DOMLocation, tag = 'div', children, }) => {
695
695
  const [element, setElement] = useState();
696
696
  useEffect(() => {
697
697
  if (!tag)
@@ -709,14 +709,14 @@ const Component$2 = ({ DOMLocation, tag = 'div', children, }) => {
709
709
  return createPortal(children, element);
710
710
  };
711
711
  const name$3 = `${PKG_NAME}/Portal`;
712
- Component$2.displayName = name$3;
713
- Component$2.pkgName = PKG_NAME;
714
- Component$2.VITUS_LABS__COMPONENT = name$3;
712
+ Component$3.displayName = name$3;
713
+ Component$3.pkgName = PKG_NAME;
714
+ Component$3.VITUS_LABS__COMPONENT = name$3;
715
715
 
716
716
  const context = createContext({});
717
717
  const { Provider } = context;
718
718
  const useOverlayContext = () => useContext(context);
719
- const component$1 = ({ children, blocked, setBlocked, setUnblocked, }) => {
719
+ const Component$2 = ({ children, blocked, setBlocked, setUnblocked, }) => {
720
720
  const ctx = useMemo(() => ({
721
721
  blocked,
722
722
  setBlocked,
@@ -726,7 +726,7 @@ const component$1 = ({ children, blocked, setBlocked, setUnblocked, }) => {
726
726
  };
727
727
 
728
728
  /* eslint-disable no-console */
729
- var useOverlay = ({ isOpen = false, openOn = 'click', // click | hover
729
+ const useOverlay = ({ isOpen = false, openOn = 'click', // click | hover
730
730
  closeOn = 'click', // click | 'clickOnTrigger' | 'clickOutsideContent' | hover | manual
731
731
  type = 'dropdown', // dropdown | tooltip | popover | modal
732
732
  position = 'fixed', // absolute | fixed | relative | static
@@ -753,7 +753,7 @@ offsetX = 0, offsetY = 0, throttleDelay = 200, parentContainer, closeOnEsc = tru
753
753
  }, []);
754
754
  const calculateContentPosition = useCallback(() => {
755
755
  const overlayPosition = {};
756
- if (!active)
756
+ if (!active || !isContentLoaded)
757
757
  return overlayPosition;
758
758
  if (!triggerRef.current || !contentRef.current) {
759
759
  if (process.env.NODE_ENV === 'development') {
@@ -899,13 +899,14 @@ offsetX = 0, offsetY = 0, throttleDelay = 200, parentContainer, closeOnEsc = tru
899
899
  }
900
900
  return overlayPosition;
901
901
  }, [
902
+ isContentLoaded,
902
903
  active,
903
- type,
904
904
  align,
905
905
  alignX,
906
906
  alignY,
907
907
  offsetX,
908
908
  offsetY,
909
+ type,
909
910
  triggerRef,
910
911
  contentRef,
911
912
  ]);
@@ -914,12 +915,17 @@ offsetX = 0, offsetY = 0, throttleDelay = 200, parentContainer, closeOnEsc = tru
914
915
  return;
915
916
  const setValue = (param) => value(param, rootSize);
916
917
  // ADD POSITION STYLES TO CONTENT
918
+ // eslint-disable-next-line no-param-reassign
917
919
  contentRef.current.style.position = position;
920
+ // eslint-disable-next-line no-param-reassign
918
921
  contentRef.current.style.top = setValue(values.top);
922
+ // eslint-disable-next-line no-param-reassign
919
923
  contentRef.current.style.bottom = setValue(values.bottom);
924
+ // eslint-disable-next-line no-param-reassign
920
925
  contentRef.current.style.left = setValue(values.left);
926
+ // eslint-disable-next-line no-param-reassign
921
927
  contentRef.current.style.right = setValue(values.right);
922
- }, [rootSize, position, contentRef]);
928
+ }, [position, rootSize, contentRef]);
923
929
  const setContentPosition = useCallback(() => {
924
930
  const currentPosition = calculateContentPosition();
925
931
  assignContentPosition(currentPosition);
@@ -930,11 +936,11 @@ offsetX = 0, offsetY = 0, throttleDelay = 200, parentContainer, closeOnEsc = tru
930
936
  }
931
937
  return false;
932
938
  };
933
- const isTrigger = isNodeOrChild(triggerRef);
934
- const isContent = isNodeOrChild(contentRef);
935
939
  const handleVisibilityByEventType = useCallback((e) => {
936
940
  if (blocked || disabled)
937
941
  return;
942
+ const isTrigger = isNodeOrChild(triggerRef);
943
+ const isContent = isNodeOrChild(contentRef);
938
944
  // showing content observing
939
945
  if (!active) {
940
946
  if ((openOn === 'hover' && e.type === 'mousemove') ||
@@ -976,39 +982,80 @@ offsetX = 0, offsetY = 0, throttleDelay = 200, parentContainer, closeOnEsc = tru
976
982
  openOn,
977
983
  closeOn,
978
984
  hideContent,
979
- isContent,
980
- isTrigger,
981
985
  showContent,
986
+ triggerRef,
987
+ contentRef,
982
988
  ]);
983
989
  const handleContentPosition = throttle(setContentPosition, throttleDelay);
984
990
  const handleClick = handleVisibilityByEventType;
985
991
  const handleVisibility = throttle(handleVisibilityByEventType, throttleDelay);
986
- const handleEscKey = (e) => {
987
- if (e.key === 'Escape') {
988
- hideContent();
989
- }
990
- };
991
992
  // --------------------------------------------------------------------------
992
993
  // useEffects
993
994
  // --------------------------------------------------------------------------
995
+ useEffect(() => {
996
+ setInnerAlignX(alignX);
997
+ setInnerAlignY(alignY);
998
+ if (disabled) {
999
+ hideContent();
1000
+ }
1001
+ }, [disabled, alignX, alignY, hideContent]);
1002
+ useEffect(() => {
1003
+ if (active && isContentLoaded) {
1004
+ setContentPosition();
1005
+ setContentPosition();
1006
+ }
1007
+ }, [active, isContentLoaded, setContentPosition]);
1008
+ // if an Overlay has an Overlay child, this will prevent closing parent child
1009
+ // and calculates correct position when an Overlay is opened
1010
+ useEffect(() => {
1011
+ if (active) {
1012
+ if (onOpen)
1013
+ onOpen();
1014
+ if (ctx.setBlocked)
1015
+ ctx.setBlocked();
1016
+ }
1017
+ return () => {
1018
+ if (onClose)
1019
+ onClose();
1020
+ if (ctx.setUnblocked)
1021
+ ctx.setUnblocked();
1022
+ setContentLoaded(false);
1023
+ };
1024
+ }, [active, onOpen, onClose, showContent, ctx]);
1025
+ // handle closing only when content is active
1026
+ useEffect(() => {
1027
+ if (!closeOnEsc || !active || blocked)
1028
+ return undefined;
1029
+ const handleEscKey = (e) => {
1030
+ if (e.key === 'Escape') {
1031
+ hideContent();
1032
+ }
1033
+ };
1034
+ window.addEventListener('keydown', handleEscKey);
1035
+ return () => {
1036
+ window.removeEventListener('keydown', handleEscKey);
1037
+ };
1038
+ }, [active, blocked, closeOnEsc, hideContent]);
994
1039
  // handles repositioning of content on document events
995
1040
  useEffect(() => {
996
1041
  if (!active)
997
1042
  return undefined;
998
1043
  const shouldSetOverflow = type === 'modal';
1044
+ const onScroll = (e) => {
1045
+ handleContentPosition();
1046
+ handleVisibility(e);
1047
+ };
999
1048
  if (shouldSetOverflow)
1000
1049
  document.body.style.overflow = 'hidden';
1001
- window.addEventListener('resize', handleContentPosition, false);
1002
- window.addEventListener('scroll', handleContentPosition, false);
1003
- window.addEventListener('scroll', handleVisibility, false);
1050
+ window.addEventListener('resize', handleContentPosition);
1051
+ window.addEventListener('scroll', onScroll);
1004
1052
  return () => {
1005
1053
  if (shouldSetOverflow)
1006
1054
  document.body.style.overflow = '';
1007
- window.removeEventListener('scroll', handleVisibility, false);
1008
- window.removeEventListener('resize', handleContentPosition, false);
1009
- window.removeEventListener('scroll', handleContentPosition, false);
1055
+ window.removeEventListener('resize', handleContentPosition);
1056
+ window.removeEventListener('scroll', onScroll);
1010
1057
  };
1011
- }, [active, type]);
1058
+ }, [active, type, handleVisibility, handleContentPosition]);
1012
1059
  // handles repositioning of content on a custom element if defined
1013
1060
  useEffect(() => {
1014
1061
  if (!active || !parentContainer)
@@ -1016,15 +1063,23 @@ offsetX = 0, offsetY = 0, throttleDelay = 200, parentContainer, closeOnEsc = tru
1016
1063
  // eslint-disable-next-line no-param-reassign
1017
1064
  if (closeOn !== 'hover')
1018
1065
  parentContainer.style.overflow = 'hidden';
1019
- parentContainer.addEventListener('scroll', handleContentPosition, false);
1020
- parentContainer.addEventListener('scroll', handleVisibility, false);
1066
+ const onScroll = (e) => {
1067
+ handleContentPosition();
1068
+ handleVisibility(e);
1069
+ };
1070
+ parentContainer.addEventListener('scroll', onScroll);
1021
1071
  return () => {
1022
1072
  // eslint-disable-next-line no-param-reassign
1023
1073
  parentContainer.style.overflow = '';
1024
- parentContainer.removeEventListener('scroll', handleVisibility, false);
1025
- parentContainer.removeEventListener('scroll', handleContentPosition, false);
1074
+ parentContainer.removeEventListener('scroll', onScroll);
1026
1075
  };
1027
- }, [active, parentContainer, closeOn]);
1076
+ }, [
1077
+ active,
1078
+ parentContainer,
1079
+ closeOn,
1080
+ handleContentPosition,
1081
+ handleVisibility,
1082
+ ]);
1028
1083
  // enable overlay manipulation only when the state is NOT blocked
1029
1084
  // nor in disabled state
1030
1085
  useEffect(() => {
@@ -1034,65 +1089,32 @@ offsetX = 0, offsetY = 0, throttleDelay = 200, parentContainer, closeOnEsc = tru
1034
1089
  const enabledClick = openOn === 'click' ||
1035
1090
  ['click', 'clickOnTrigger', 'clickOutsideContent'].includes(closeOn);
1036
1091
  if (enabledClick) {
1037
- window.addEventListener('click', handleClick, false);
1092
+ window.addEventListener('click', handleClick);
1038
1093
  }
1039
1094
  if (enabledMouseMove) {
1040
- window.addEventListener('mousemove', handleVisibility, false);
1095
+ window.addEventListener('mousemove', handleVisibility);
1041
1096
  }
1042
1097
  return () => {
1043
- window.removeEventListener('click', handleClick, false);
1044
- window.removeEventListener('mousemove', handleVisibility, false);
1045
- };
1046
- }, [openOn, closeOn, blocked, disabled, active]);
1047
- // handle closing only when content is active
1048
- useEffect(() => {
1049
- if (!closeOnEsc || !active || blocked)
1050
- return undefined;
1051
- window.addEventListener('keydown', handleEscKey, false);
1052
- return () => {
1053
- window.removeEventListener('keydown', handleEscKey, false);
1098
+ window.removeEventListener('click', handleClick);
1099
+ window.removeEventListener('mousemove', handleVisibility);
1054
1100
  };
1055
- }, [active, blocked, closeOnEsc]);
1056
- // if an Overlay has an Overlay child, this will prevent closing parent child
1057
- // and calculates correct position when an Overlay is opened
1058
- useEffect(() => {
1059
- if (active) {
1060
- if (onOpen)
1061
- onOpen();
1062
- if (ctx.setBlocked)
1063
- ctx.setBlocked();
1064
- showContent();
1065
- }
1066
- else {
1067
- setContentLoaded(false);
1068
- if (onClose)
1069
- onClose();
1070
- if (ctx.setUnblocked)
1071
- ctx.setUnblocked();
1072
- }
1073
- }, [active, onOpen, onClose, ctx.setBlocked, ctx.setUnblocked]);
1074
- useEffect(() => {
1075
- if (isContentLoaded) {
1076
- setContentPosition();
1077
- setContentPosition();
1078
- }
1079
- }, [isContentLoaded]);
1080
- useEffect(() => {
1081
- setInnerAlignX(alignX);
1082
- setInnerAlignY(alignY);
1083
- if (disabled) {
1084
- hideContent();
1085
- }
1086
- }, [disabled, alignX, alignY]);
1101
+ }, [
1102
+ openOn,
1103
+ closeOn,
1104
+ blocked,
1105
+ disabled,
1106
+ active,
1107
+ handleClick,
1108
+ handleVisibility,
1109
+ ]);
1087
1110
  // hack-ish way to load contet correctly on the first load
1088
1111
  // as `contentRef` is loaded dynamically
1089
- const contentRefCallback = (node) => {
1090
- // eslint-disable-next-line @typescript-eslint/ban-ts-comment
1091
- // @ts-ignore
1092
- if (node)
1112
+ const contentRefCallback = useCallback((node) => {
1113
+ if (node) {
1093
1114
  contentRef.current = node;
1094
- setContentLoaded(true);
1095
- };
1115
+ setContentLoaded(true);
1116
+ }
1117
+ }, []);
1096
1118
  return {
1097
1119
  triggerRef,
1098
1120
  contentRef: contentRefCallback,
@@ -1105,7 +1127,7 @@ offsetX = 0, offsetY = 0, throttleDelay = 200, parentContainer, closeOnEsc = tru
1105
1127
  blocked,
1106
1128
  setBlocked,
1107
1129
  setUnblocked,
1108
- Provider: component$1,
1130
+ Provider: Component$2,
1109
1131
  };
1110
1132
  };
1111
1133
 
@@ -1168,5 +1190,5 @@ Component.displayName = name;
1168
1190
  Component.pkgName = PKG_NAME;
1169
1191
  Component.VITUS_LABS__COMPONENT = name;
1170
1192
 
1171
- export { Component$4 as Element, component$3 as List, Component$1 as Overlay, component$1 as OverlayProvider, Component$2 as Portal, component as Text, Component as Util, useOverlay, component$2 as withActiveState, withEqualBeforeAfter as withEqualSizeBeforeAfter };
1193
+ export { Component$5 as Element, component$2 as List, Component$1 as Overlay, Component$2 as OverlayProvider, Component$3 as Portal, component as Text, Component as Util, useOverlay, component$1 as withActiveState, withEqualBeforeAfter as withEqualSizeBeforeAfter };
1172
1194
  //# sourceMappingURL=vitus-labs-elements.module.js.map