@meduza/ui-kit-2 0.1.13 → 0.1.15

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.
@@ -1,4 +1,4 @@
1
- import React, { useState, useEffect, useContext, Children, useRef, useCallback } from 'react';
1
+ import React, { useState, useEffect, useContext, useRef, Children, useCallback } from 'react';
2
2
  import { useInView } from 'react-intersection-observer';
3
3
  import dayjs from 'dayjs';
4
4
  import 'dayjs/locale/ru';
@@ -604,7 +604,7 @@ var Footnote = function Footnote(_ref) {
604
604
  }, children));
605
605
  };
606
606
 
607
- var styles$7 = {"root":"DotsOnImage-module_root__2XP3Q","dot":"DotsOnImage-module_dot__H1wua","isActive":"DotsOnImage-module_isActive__3hh31","popover":"DotsOnImage-module_popover__35Cpj","isRight":"DotsOnImage-module_isRight__2RsJe","isTop":"DotsOnImage-module_isTop__3zmSK","isLeft":"DotsOnImage-module_isLeft__3quc9","isBottom":"DotsOnImage-module_isBottom__3Nk1T","popoverTitle":"DotsOnImage-module_popoverTitle__343d8","popoverBody":"DotsOnImage-module_popoverBody__2MSn7","popoverText":"DotsOnImage-module_popoverText__3v02w","dismiss":"DotsOnImage-module_dismiss__1EWXd"};
607
+ var styles$7 = {"root":"DotsOnImage-module_root__2XP3Q","isVisible":"DotsOnImage-module_isVisible__Wqqqt","dot":"DotsOnImage-module_dot__H1wua","show":"DotsOnImage-module_show__2TMBv","isActive":"DotsOnImage-module_isActive__3hh31","popover":"DotsOnImage-module_popover__35Cpj","isRight":"DotsOnImage-module_isRight__2RsJe","isTop":"DotsOnImage-module_isTop__3zmSK","isLeft":"DotsOnImage-module_isLeft__3quc9","isBottom":"DotsOnImage-module_isBottom__3Nk1T"};
608
608
 
609
609
  var DotsOnImage = function DotsOnImage(_ref) {
610
610
  var _ref$block = _ref.block,
@@ -615,6 +615,15 @@ var DotsOnImage = function DotsOnImage(_ref) {
615
615
  display = _ref$block.display,
616
616
  dots = _ref$block.dots;
617
617
 
618
+ var _useInView = useInView({
619
+ threshold: 0.5
620
+ }),
621
+ ref = _useInView[0],
622
+ inView = _useInView[1],
623
+ entry = _useInView[2];
624
+
625
+ var container = useRef(null);
626
+
618
627
  var _useState = useState({
619
628
  title: null,
620
629
  body: null,
@@ -624,6 +633,42 @@ var DotsOnImage = function DotsOnImage(_ref) {
624
633
  popover = _useState[0],
625
634
  setPopover = _useState[1];
626
635
 
636
+ var _useState2 = useState(false),
637
+ visible = _useState2[0],
638
+ setVisible = _useState2[1];
639
+
640
+ useEffect(function () {
641
+ if (entry && entry.boundingClientRect && entry.boundingClientRect.y < 0) {
642
+ setVisible(true);
643
+ }
644
+ }, [entry]);
645
+ useEffect(function () {
646
+ if (inView) {
647
+ setVisible(true);
648
+ }
649
+ }, [inView]);
650
+ useEffect(function () {
651
+ if (popover.id) {
652
+ document.addEventListener('click', handleClickOutside);
653
+ } else {
654
+ document.removeEventListener('click', handleClickOutside);
655
+ }
656
+
657
+ return function () {
658
+ return document.removeEventListener('click', handleClickOutside);
659
+ };
660
+ }, [popover]);
661
+
662
+ var handleClickOutside = function handleClickOutside(event) {
663
+ var path = event.composedPath();
664
+
665
+ if (path.indexOf(container.current) === -1) {
666
+ setPopover({
667
+ show: false
668
+ });
669
+ }
670
+ };
671
+
627
672
  var handleDotClick = function handleDotClick(dot) {
628
673
  var shouldShow = dot.id !== popover.id;
629
674
  var side = dot.position.x > 50 ? 'isLeft' : 'isRight';
@@ -644,10 +689,21 @@ var DotsOnImage = function DotsOnImage(_ref) {
644
689
  };
645
690
 
646
691
  return React.createElement("div", {
692
+ className: makeClassName([[styles$7.root, true], [styles$7.isVisible, visible]]),
647
693
  "data-testid": "dots-on-image",
648
- className: styles$7.root
649
- }, React.createElement("div", {
650
- className: styles$7.dots
694
+ ref: ref
695
+ }, React.createElement(Image, {
696
+ optimized: optimized,
697
+ width: width,
698
+ height: height,
699
+ alt: credit,
700
+ display: display,
701
+ fullscreen: {
702
+ mobile: false,
703
+ desktop: false
704
+ }
705
+ }), React.createElement("div", {
706
+ ref: container
651
707
  }, dots.map(function (dot) {
652
708
  return React.createElement("button", {
653
709
  className: makeClassName([[styles$7.dot, true], [styles$7.isActive, dot.id === popover.id]]),
@@ -666,19 +722,7 @@ var DotsOnImage = function DotsOnImage(_ref) {
666
722
  __html: dot.icon.svg_string
667
723
  }
668
724
  }), dot.icon.type === 'number' && dot.icon.number);
669
- })), React.createElement("div", {
670
- className: styles$7.image
671
- }, React.createElement(Image, {
672
- optimized: optimized,
673
- width: width,
674
- height: height,
675
- alt: credit,
676
- display: display,
677
- fullscreen: {
678
- mobile: false,
679
- desktop: false
680
- }
681
- })), popover.show && React.createElement(React.Fragment, null, viewportSize().width >= MediaQuerySizes.LANDSCAPE_TABLET ? React.createElement("div", {
725
+ }), popover.show && React.createElement(React.Fragment, null, viewportSize().width >= MediaQuerySizes.LANDSCAPE_TABLET ? React.createElement("div", {
682
726
  className: makeClassName([[styles$7.popover, true], [styles$7[popover.side], !!popover.side], [styles$7[popover.align], !!popover.align]]),
683
727
  style: popover.style
684
728
  }, React.createElement(Footnote, {
@@ -687,7 +731,7 @@ var DotsOnImage = function DotsOnImage(_ref) {
687
731
  show: false
688
732
  });
689
733
  }
690
- }, React.createElement("h3", null, popover.title), React.createElement("div", {
734
+ }, popover.title && React.createElement("h3", null, popover.title), React.createElement("div", {
691
735
  dangerouslySetInnerHTML: {
692
736
  __html: popover.body
693
737
  }
@@ -697,11 +741,11 @@ var DotsOnImage = function DotsOnImage(_ref) {
697
741
  show: false
698
742
  });
699
743
  }
700
- }, React.createElement("h3", null, popover.title), React.createElement("div", {
744
+ }, popover.title && React.createElement("h3", null, popover.title), React.createElement("div", {
701
745
  dangerouslySetInnerHTML: {
702
746
  __html: popover.body
703
747
  }
704
- }))));
748
+ })))));
705
749
  };
706
750
 
707
751
  var makeStyleContext = function makeStyleContext(classNames, styleContext, styles) {