@skbkontur/side-menu 3.3.4 → 3.3.5-19a67.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 (65) hide show
  1. package/SideMenuDataTids.js +4 -1
  2. package/hooks/useAnimateOnMount.js +12 -10
  3. package/hooks/useMemoIcon.js +18 -13
  4. package/index.js +17 -14
  5. package/internal/themes/SideMenuTheme.js +209 -282
  6. package/lib/theming/ThemeHelpers.js +33 -42
  7. package/lib/theming/ThemeTypes.js +2 -1
  8. package/lib/utils/memo.js +7 -3
  9. package/lib/utils/scripts.js +12 -6
  10. package/package.json +1 -1
  11. package/src/Navigation.js +81 -123
  12. package/src/SideMenu/SideMenu.js +202 -207
  13. package/src/SideMenu/SideMenu.styles.js +145 -73
  14. package/src/SideMenuAvatar/SideMenuAvatar.js +13 -11
  15. package/src/SideMenuBody/SideMenuBody.js +21 -20
  16. package/src/SideMenuBody/SideMenuBody.styles.js +17 -10
  17. package/src/SideMenuContext.js +5 -2
  18. package/src/SideMenuDivider/SideMenuDivider.js +13 -12
  19. package/src/SideMenuDivider/SideMenuDivider.styles.js +14 -8
  20. package/src/SideMenuDropdown/SideMenuDropdown.js +34 -36
  21. package/src/SideMenuDropdown/SideMenuDropdown.styles.js +25 -15
  22. package/src/SideMenuFooter/SideMenuFooter.js +24 -23
  23. package/src/SideMenuFooter/SideMenuFooter.styles.js +25 -12
  24. package/src/SideMenuHeader/SideMenuHeader.js +28 -29
  25. package/src/SideMenuHeader/SideMenuHeader.styles.js +34 -16
  26. package/src/SideMenuItem/SideMenuItem.js +9 -7
  27. package/src/SideMenuLink/SideMenuLink.js +11 -10
  28. package/src/SideMenuLink/SideMenuLink.styles.js +11 -7
  29. package/src/SideMenuNotifications/BellWidget.js +61 -78
  30. package/src/SideMenuNotifications/BellWidgetError.js +22 -18
  31. package/src/SideMenuNotifications/BellWidgetView.styles.js +48 -20
  32. package/src/SideMenuNotifications/SideMenuNotifications.js +29 -27
  33. package/src/SideMenuNotifications/utils/getMarker.js +4 -1
  34. package/src/SideMenuNotifications/utils/getNotificationsErrorMessages.js +15 -11
  35. package/src/SideMenuOrganisations/SideMenuOrganisations.js +9 -7
  36. package/src/SideMenuSubItem/SideMenuSubItem.js +10 -8
  37. package/src/SideMenuSubItemHeader/SideMenuSubItemHeader.js +18 -17
  38. package/src/SideMenuSubItemHeader/SideMenuSubItemHeader.styles.js +18 -10
  39. package/src/SideMenuSubLink/SideMenuSubLink.js +10 -7
  40. package/src/Tree.js +39 -112
  41. package/src/internal/BackButton.js +17 -16
  42. package/src/internal/Backdrop.js +18 -12
  43. package/src/internal/Backdrop.styles.js +16 -8
  44. package/src/internal/Burger.js +17 -12
  45. package/src/internal/Burger.styles.js +14 -9
  46. package/src/internal/ClickableElement.js +97 -86
  47. package/src/internal/ClickableElement.styles.js +48 -21
  48. package/src/internal/InnerSubMenu.js +16 -14
  49. package/src/internal/ItemContent/Caption.js +47 -48
  50. package/src/internal/ItemContent/Caption.styles.js +84 -36
  51. package/src/internal/ItemContent/Icon.js +30 -27
  52. package/src/internal/ItemContent/Icon.styles.js +49 -20
  53. package/src/internal/ItemContent/ItemContent.js +44 -44
  54. package/src/internal/ItemContent/ItemContent.styles.js +65 -28
  55. package/src/internal/ItemContent/Marker.js +23 -20
  56. package/src/internal/ItemContent/Marker.styles.js +59 -22
  57. package/src/internal/NestedMenu.js +21 -19
  58. package/src/internal/NestedMenu.styles.js +11 -8
  59. package/src/internal/RightBorder.js +26 -24
  60. package/src/internal/RightBorder.styles.js +26 -10
  61. package/src/internal/SeparatedSubMenu.js +48 -49
  62. package/src/internal/SeparatedSubMenu.styles.js +58 -29
  63. package/src/internal/SideMenuLogotype.js +48 -49
  64. package/src/internal/SideMenuLogotype.styles.js +50 -23
  65. package/src/internal/SubMenu.js +16 -14
@@ -1,138 +1,136 @@
1
- import { __assign, __read, __rest } from "tslib";
2
- import React, { useCallback, forwardRef, useContext, useEffect, useRef, useState } from 'react';
3
- import { cx } from '@skbkontur/react-ui/lib/theming/Emotion';
4
- import { isIE11 } from '@skbkontur/react-ui/lib/client';
5
- import { ThemeContext } from '@skbkontur/react-ui/lib/theming/ThemeContext';
6
- import { ScrollContainer } from '@skbkontur/react-ui/components/ScrollContainer';
7
- import { LIGHT_THEME } from '@skbkontur/react-ui/lib/theming/themes/LightTheme';
8
- import { useResponsiveLayout } from '@skbkontur/react-ui/components/ResponsiveLayout/useResponsiveLayout';
9
- import { RenderLayer } from '@skbkontur/react-ui/internal/RenderLayer';
10
- import { ZIndex } from '@skbkontur/react-ui/internal/ZIndex';
11
- import { mergeRefs } from '@skbkontur/react-ui/lib/utils';
12
- import { SideMenuOrganisations } from '../SideMenuOrganisations/SideMenuOrganisations';
13
- import { SideMenuNotifications } from '../SideMenuNotifications/SideMenuNotifications';
14
- import { SideMenuContext } from '../SideMenuContext';
15
- import { SideMenuBody } from '../SideMenuBody/SideMenuBody';
16
- import { SideMenuFooter } from '../SideMenuFooter/SideMenuFooter';
17
- import { SideMenuHeader } from '../SideMenuHeader/SideMenuHeader';
18
- import { SideMenuItem } from '../SideMenuItem/SideMenuItem';
19
- import { SideMenuAvatar } from '../SideMenuAvatar/SideMenuAvatar';
20
- import { SideMenuSubItem } from '../SideMenuSubItem/SideMenuSubItem';
21
- import { SideMenuDivider } from '../SideMenuDivider/SideMenuDivider';
22
- import { SideMenuSubItemHeader } from '../SideMenuSubItemHeader/SideMenuSubItemHeader';
23
- import { RightBorder } from '../internal/RightBorder';
24
- import { SideMenuDropdown } from '../SideMenuDropdown/SideMenuDropdown';
25
- import { SideMenuLink } from '../SideMenuLink/SideMenuLink';
26
- import { SideMenuSubLink } from '../SideMenuSubLink/SideMenuSubLink';
27
- import { Backdrop } from '../internal/Backdrop';
28
- import { isTouchDevice } from '../../lib/utils/scripts';
29
- import { SideMenuDataTids } from '../../SideMenuDataTids';
30
- import { useAnimateOnMount } from '../../hooks/useAnimateOnMount';
31
- import { getSideMenuTheme } from '../../lib/theming/ThemeHelpers';
32
- import { MenuNavigation } from '../Navigation';
33
- import { jsStylesForSideMenu, customStyles } from './SideMenu.styles';
34
- export var transitionDuration = 300; //ms
35
- export var burgerTransitionDuration = (transitionDuration * 2) / 3;
36
- var SideMenuInner = forwardRef(function (_a, ref) {
37
- var _b, _c, _d, _e;
38
- var _f, _g;
39
- var children = _a.children, value = _a.value, activeItem = _a.activeItem, _h = _a.size, size = _h === void 0 ? 'small' : _h, _j = _a.isSeparatedMenu, isSeparatedMenu = _j === void 0 ? false : _j, className = _a.className, _k = _a.disableSwipe, disableSwipe = _k === void 0 ? false : _k, _l = _a.disableCollapsing, disableCollapsing = _l === void 0 ? false : _l, desktopMediaQuery = _a.desktopMediaQuery, narrowDesktopMediaQuery = _a.narrowDesktopMediaQuery, tabletMediaQuery = _a.tabletMediaQuery, mobileMediaQuery = _a.mobileMediaQuery, _m = _a.showScrollBar, showScrollBar = _m === void 0 ? 'hover' : _m, isOpen = _a.isOpen, isPinned = _a.isPinned, onValueChange = _a.onValueChange, onActiveItemChange = _a.onActiveItemChange, onOpen = _a.onOpen, onClose = _a.onClose, onPinnedValueChange = _a.onPinnedValueChange, rest = __rest(_a, ["children", "value", "activeItem", "size", "isSeparatedMenu", "className", "disableSwipe", "disableCollapsing", "desktopMediaQuery", "narrowDesktopMediaQuery", "tabletMediaQuery", "mobileMediaQuery", "showScrollBar", "isOpen", "isPinned", "onValueChange", "onActiveItemChange", "onOpen", "onClose", "onPinnedValueChange"]);
40
- var transitionTimer = useRef(null);
41
- var timerScrollbar = useRef(null);
42
- var sideMenuRef = useRef(null);
43
- var contentWrapperRef = useRef(null);
44
- var scrollContainerRef = useRef(null);
45
- var navigation = useRef(null);
46
- var theme = getSideMenuTheme(useContext(ThemeContext));
47
- var customMediaQueries = {
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.SideMenu = exports.burgerTransitionDuration = exports.transitionDuration = void 0;
4
+ const tslib_1 = require("tslib");
5
+ const react_1 = tslib_1.__importStar(require("react"));
6
+ const Emotion_1 = require("@skbkontur/react-ui/lib/theming/Emotion");
7
+ const client_1 = require("@skbkontur/react-ui/lib/client");
8
+ const ThemeContext_1 = require("@skbkontur/react-ui/lib/theming/ThemeContext");
9
+ const ScrollContainer_1 = require("@skbkontur/react-ui/components/ScrollContainer");
10
+ const LightTheme_1 = require("@skbkontur/react-ui/lib/theming/themes/LightTheme");
11
+ const useResponsiveLayout_1 = require("@skbkontur/react-ui/components/ResponsiveLayout/useResponsiveLayout");
12
+ const RenderLayer_1 = require("@skbkontur/react-ui/internal/RenderLayer");
13
+ const ZIndex_1 = require("@skbkontur/react-ui/internal/ZIndex");
14
+ const utils_1 = require("@skbkontur/react-ui/lib/utils");
15
+ const SideMenuOrganisations_1 = require("../SideMenuOrganisations/SideMenuOrganisations");
16
+ const SideMenuNotifications_1 = require("../SideMenuNotifications/SideMenuNotifications");
17
+ const SideMenuContext_1 = require("../SideMenuContext");
18
+ const SideMenuBody_1 = require("../SideMenuBody/SideMenuBody");
19
+ const SideMenuFooter_1 = require("../SideMenuFooter/SideMenuFooter");
20
+ const SideMenuHeader_1 = require("../SideMenuHeader/SideMenuHeader");
21
+ const SideMenuItem_1 = require("../SideMenuItem/SideMenuItem");
22
+ const SideMenuAvatar_1 = require("../SideMenuAvatar/SideMenuAvatar");
23
+ const SideMenuSubItem_1 = require("../SideMenuSubItem/SideMenuSubItem");
24
+ const SideMenuDivider_1 = require("../SideMenuDivider/SideMenuDivider");
25
+ const SideMenuSubItemHeader_1 = require("../SideMenuSubItemHeader/SideMenuSubItemHeader");
26
+ const RightBorder_1 = require("../internal/RightBorder");
27
+ const SideMenuDropdown_1 = require("../SideMenuDropdown/SideMenuDropdown");
28
+ const SideMenuLink_1 = require("../SideMenuLink/SideMenuLink");
29
+ const SideMenuSubLink_1 = require("../SideMenuSubLink/SideMenuSubLink");
30
+ const Backdrop_1 = require("../internal/Backdrop");
31
+ const scripts_1 = require("../../lib/utils/scripts");
32
+ const SideMenuDataTids_1 = require("../../SideMenuDataTids");
33
+ const useAnimateOnMount_1 = require("../../hooks/useAnimateOnMount");
34
+ const ThemeHelpers_1 = require("../../lib/theming/ThemeHelpers");
35
+ const Navigation_1 = require("../Navigation");
36
+ const SideMenu_styles_1 = require("./SideMenu.styles");
37
+ exports.transitionDuration = 300; //ms
38
+ exports.burgerTransitionDuration = (exports.transitionDuration * 2) / 3;
39
+ const SideMenuInner = (0, react_1.forwardRef)(({ children, value, activeItem, size = 'small', isSeparatedMenu = false, className, disableSwipe = false, disableCollapsing = false, desktopMediaQuery, narrowDesktopMediaQuery, tabletMediaQuery, mobileMediaQuery, showScrollBar = 'hover', isOpen, isPinned, onValueChange, onActiveItemChange, onOpen, onClose, onPinnedValueChange, ...rest }, ref) => {
40
+ const transitionTimer = (0, react_1.useRef)(null);
41
+ const timerScrollbar = (0, react_1.useRef)(null);
42
+ const sideMenuRef = (0, react_1.useRef)(null);
43
+ const contentWrapperRef = (0, react_1.useRef)(null);
44
+ const scrollContainerRef = (0, react_1.useRef)(null);
45
+ const navigation = (0, react_1.useRef)(null);
46
+ const theme = (0, ThemeHelpers_1.getSideMenuTheme)((0, react_1.useContext)(ThemeContext_1.ThemeContext));
47
+ const customMediaQueries = {
48
48
  isMobileQuery: mobileMediaQuery || theme.sideMenuMobileMediaQuery,
49
49
  isTabletQuery: tabletMediaQuery || theme.sideMenuTabletMediaQuery,
50
50
  isNarrowDesktopQuery: narrowDesktopMediaQuery || theme.sideMenuNarrowDesktopMediaQuery,
51
51
  isDesktopQuery: desktopMediaQuery || theme.sideMenuDesktopMediaQuery,
52
52
  };
53
- var _o = useResponsiveLayout({
54
- customMediaQueries: customMediaQueries,
55
- }), isMobileQuery = _o.isMobileQuery, isTabletQuery = _o.isTabletQuery, isNarrowDesktopQuery = _o.isNarrowDesktopQuery, isDesktopQuery = _o.isDesktopQuery;
56
- var isNarrowDesktop = isNarrowDesktopQuery && !isDesktopQuery;
57
- var isTablet = isTabletQuery && !isNarrowDesktopQuery;
58
- var isMobile = isMobileQuery && !isTabletQuery;
59
- var isTabletOrMobile = isTablet || isMobile;
60
- var isTouchScreen = isTouchDevice() || isMobile || isTablet;
61
- var manual = isOpen !== undefined;
62
- var _p = __read(useState(isDesktopQuery && !isPinned), 2), isOpened = _p[0], setIsOpened = _p[1];
63
- var _q = __read(useState(false), 2), isBeingTransitioned = _q[0], setIsBeingTransitioned = _q[1];
64
- var _r = __read(useState(value !== null && value !== void 0 ? value : activeItem), 2), activeMenuItem = _r[0], setActiveMenuItem = _r[1];
65
- var _s = __read(useState(false), 2), isSeparatedMenuShown = _s[0], setIsSeparatedMenuShown = _s[1];
66
- var _t = __read(useState(true), 2), isMouseOutside = _t[0], setIsMouseOutside = _t[1];
67
- var _u = __read(useState('top'), 2), scrollState = _u[0], setScrollState = _u[1];
68
- var _v = __read(useState(false), 2), hasScrollBar = _v[0], setHasScrollBar = _v[1];
69
- var _w = __read(useState(0), 2), mousePositionX = _w[0], setMousePositionX = _w[1];
70
- var _x = __read(useState(0), 2), headerHeight = _x[0], setHeaderHeight = _x[1];
71
- var _y = __read(useState(isNarrowDesktop || (isDesktopQuery && isPinned)), 2), isCollapsable = _y[0], setIsCollapsable = _y[1];
72
- var _z = __read(useState(0), 2), leftPosition = _z[0], setLeftPosition = _z[1];
73
- var _0 = __read(useState(false), 2), isHovered = _0[0], setIsHovered = _0[1];
74
- var switchActiveMenuItem = function (id) {
53
+ const { isMobileQuery, isTabletQuery, isNarrowDesktopQuery, isDesktopQuery } = (0, useResponsiveLayout_1.useResponsiveLayout)({
54
+ customMediaQueries,
55
+ });
56
+ const isNarrowDesktop = isNarrowDesktopQuery && !isDesktopQuery;
57
+ const isTablet = isTabletQuery && !isNarrowDesktopQuery;
58
+ const isMobile = isMobileQuery && !isTabletQuery;
59
+ const isTabletOrMobile = isTablet || isMobile;
60
+ const isTouchScreen = (0, scripts_1.isTouchDevice)() || isMobile || isTablet;
61
+ const manual = isOpen !== undefined;
62
+ const [isOpened, setIsOpened] = (0, react_1.useState)(isDesktopQuery && !isPinned);
63
+ const [isBeingTransitioned, setIsBeingTransitioned] = (0, react_1.useState)(false);
64
+ const [activeMenuItem, setActiveMenuItem] = (0, react_1.useState)(value ?? activeItem);
65
+ const [isSeparatedMenuShown, setIsSeparatedMenuShown] = (0, react_1.useState)(false);
66
+ const [isMouseOutside, setIsMouseOutside] = (0, react_1.useState)(true);
67
+ const [scrollState, setScrollState] = (0, react_1.useState)('top');
68
+ const [hasScrollBar, setHasScrollBar] = (0, react_1.useState)(false);
69
+ const [mousePositionX, setMousePositionX] = (0, react_1.useState)(0);
70
+ const [headerHeight, setHeaderHeight] = (0, react_1.useState)(0);
71
+ const [isCollapsable, setIsCollapsable] = (0, react_1.useState)(isNarrowDesktop || (isDesktopQuery && isPinned));
72
+ const [leftPosition, setLeftPosition] = (0, react_1.useState)(0);
73
+ const [isHovered, setIsHovered] = (0, react_1.useState)(false);
74
+ const switchActiveMenuItem = (id) => {
75
75
  if (id !== value && id !== activeItem) {
76
- onValueChange === null || onValueChange === void 0 ? void 0 : onValueChange(id);
77
- onActiveItemChange === null || onActiveItemChange === void 0 ? void 0 : onActiveItemChange(id);
76
+ onValueChange?.(id);
77
+ onActiveItemChange?.(id);
78
78
  setActiveMenuItem(id);
79
79
  }
80
80
  };
81
- useEffect(function () {
82
- var _a;
83
- setLeftPosition(((_a = sideMenuRef.current) === null || _a === void 0 ? void 0 : _a.getBoundingClientRect().left) || 0);
84
- navigation.current = new MenuNavigation({
81
+ (0, react_1.useEffect)(() => {
82
+ setLeftPosition(sideMenuRef.current?.getBoundingClientRect().left || 0);
83
+ navigation.current = new Navigation_1.MenuNavigation({
85
84
  rootRef: sideMenuRef,
86
- activeMenuItem: activeMenuItem,
85
+ activeMenuItem,
87
86
  setActiveMenuItem: switchActiveMenuItem,
88
- isSeparatedMenu: isSeparatedMenu,
89
- isSeparatedMenuShown: isSeparatedMenuShown,
90
- setIsSeparatedMenuShown: setIsSeparatedMenuShown,
91
- isOpened: isOpened,
92
- isDesktopQuery: isDesktopQuery,
93
- isMobile: isMobile,
94
- isCollapsable: isCollapsable,
87
+ isSeparatedMenu,
88
+ isSeparatedMenuShown,
89
+ setIsSeparatedMenuShown,
90
+ isOpened,
91
+ isDesktopQuery,
92
+ isMobile,
93
+ isCollapsable,
95
94
  });
96
- return function () {
95
+ return () => {
97
96
  if (transitionTimer.current) {
98
97
  clearTimeout(transitionTimer.current);
99
98
  }
100
99
  };
101
100
  }, []);
102
- useEffect(function () {
101
+ (0, react_1.useEffect)(() => {
103
102
  if (isMobile && isSeparatedMenuShown) {
104
103
  return;
105
104
  }
106
105
  clearTimeout(timerScrollbar.current);
107
- timerScrollbar.current = setTimeout(function () {
108
- var _a;
109
- var contentWrapper = contentWrapperRef.current;
110
- var scrollContainer = (_a = scrollContainerRef.current) === null || _a === void 0 ? void 0 : _a.inner;
106
+ timerScrollbar.current = setTimeout(() => {
107
+ const contentWrapper = contentWrapperRef.current;
108
+ const scrollContainer = scrollContainerRef.current?.inner;
111
109
  if (!contentWrapper || !scrollContainer) {
112
110
  return;
113
111
  }
114
112
  setHasScrollBar(scrollContainer.clientHeight < contentWrapper.scrollHeight);
115
113
  }, 50);
116
- return function () {
114
+ return () => {
117
115
  clearTimeout(timerScrollbar.current);
118
116
  };
119
117
  });
120
- useEffect(function () {
118
+ (0, react_1.useEffect)(() => {
121
119
  isDesktopQuery && setIsOpened(!isPinned);
122
120
  }, [isPinned, isDesktopQuery]);
123
- var handleIsOpened = function (newIsOpened, shouldSetState) {
121
+ const handleIsOpened = (newIsOpened, shouldSetState) => {
124
122
  if (newIsOpened === isOpened || !shouldSetState) {
125
123
  return;
126
124
  }
127
125
  setIsOpened(newIsOpened);
128
126
  if (newIsOpened) {
129
- onOpen === null || onOpen === void 0 ? void 0 : onOpen();
127
+ onOpen?.();
130
128
  }
131
129
  else {
132
- onClose === null || onClose === void 0 ? void 0 : onClose();
130
+ onClose?.();
133
131
  }
134
132
  };
135
- useEffect(function () {
133
+ (0, react_1.useEffect)(() => {
136
134
  if (isDesktopQuery && !isPinned) {
137
135
  setIsOpened(true);
138
136
  setIsCollapsable(false);
@@ -148,43 +146,40 @@ var SideMenuInner = forwardRef(function (_a, ref) {
148
146
  }
149
147
  }
150
148
  }, [isNarrowDesktop, isDesktopQuery, isTablet, isMobile, isPinned]);
151
- useEffect(function () {
152
- var _a;
153
- !activeItem && ((_a = navigation.current) === null || _a === void 0 ? void 0 : _a.switchActiveMenuItem(value));
154
- }, [value, (_f = navigation.current) === null || _f === void 0 ? void 0 : _f.navigationTree]);
155
- useEffect(function () {
156
- var _a;
157
- !value && ((_a = navigation.current) === null || _a === void 0 ? void 0 : _a.switchActiveMenuItem(activeItem));
158
- }, [activeItem, (_g = navigation.current) === null || _g === void 0 ? void 0 : _g.navigationTree]);
159
- useEffect(function () {
160
- var _a;
161
- (_a = navigation.current) === null || _a === void 0 ? void 0 : _a.switchIsSeparatedMenu(isSeparatedMenu);
149
+ (0, react_1.useEffect)(() => {
150
+ !activeItem && navigation.current?.switchActiveMenuItem(value);
151
+ }, [value, navigation.current?.navigationTree]);
152
+ (0, react_1.useEffect)(() => {
153
+ !value && navigation.current?.switchActiveMenuItem(activeItem);
154
+ }, [activeItem, navigation.current?.navigationTree]);
155
+ (0, react_1.useEffect)(() => {
156
+ navigation.current?.switchIsSeparatedMenu(isSeparatedMenu);
162
157
  }, [isSeparatedMenu]);
163
- useEffect(function () {
158
+ (0, react_1.useEffect)(() => {
164
159
  handleIsOpened(isOpen, manual);
165
160
  }, [isOpen]);
166
- var showMinimizedRoot = function (newIsMinimized) {
161
+ const showMinimizedRoot = (newIsMinimized) => {
167
162
  if ((!isBeingTransitioned || isSeparatedMenu) && newIsMinimized === isOpened) {
168
163
  setIsBeingTransitioned(true);
169
164
  handleIsOpened(!newIsMinimized, !manual);
170
165
  if (transitionTimer.current) {
171
166
  clearTimeout(transitionTimer.current);
172
167
  }
173
- transitionTimer.current = setTimeout(function () {
168
+ transitionTimer.current = setTimeout(() => {
174
169
  setIsBeingTransitioned(false);
175
- }, transitionDuration + 200);
170
+ }, exports.transitionDuration + 200);
176
171
  }
177
172
  };
178
- var shouldNotOpenOnHover = (isSeparatedMenu && isSeparatedMenuShown && isNarrowDesktop && manual) || isTouchScreen;
179
- var forceUpdatePositionPopups = useCallback(function () {
173
+ const shouldNotOpenOnHover = (isSeparatedMenu && isSeparatedMenuShown && isNarrowDesktop && manual) || isTouchScreen;
174
+ const forceUpdatePositionPopups = (0, react_1.useCallback)(() => {
180
175
  // дикие костыли для перерисовки попапов, которые не обновляются автоматически при перерисовке меню
181
- var fixPopupsPosition = function () { return window.dispatchEvent(new CustomEvent('scroll')); }; // чтобы вызвался LayoutEvent.emit() и перерисовались попапы
182
- window.setTimeout(function () {
176
+ const fixPopupsPosition = () => window.dispatchEvent(new CustomEvent('scroll')); // чтобы вызвался LayoutEvent.emit() и перерисовались попапы
177
+ window.setTimeout(() => {
183
178
  fixPopupsPosition(); // перерисовка попапов и следом еще раз, чтобы после анимации SideMenu попапы вновь встали на свои места
184
- window.setTimeout(function () { return fixPopupsPosition(); }, transitionDuration + 100);
179
+ window.setTimeout(() => fixPopupsPosition(), exports.transitionDuration + 100);
185
180
  }, 0);
186
181
  }, []);
187
- var handleMouseEnter = function () {
182
+ const handleMouseEnter = () => {
188
183
  if (shouldNotOpenOnHover) {
189
184
  return;
190
185
  }
@@ -195,7 +190,7 @@ var SideMenuInner = forwardRef(function (_a, ref) {
195
190
  }
196
191
  forceUpdatePositionPopups();
197
192
  };
198
- var handleMouseLeave = function () {
193
+ const handleMouseLeave = () => {
199
194
  if (shouldNotOpenOnHover) {
200
195
  return;
201
196
  }
@@ -208,12 +203,12 @@ var SideMenuInner = forwardRef(function (_a, ref) {
208
203
  }
209
204
  forceUpdatePositionPopups();
210
205
  };
211
- var showMinimizedRootForNarrowDesktop = function (e) {
206
+ const showMinimizedRootForNarrowDesktop = (e) => {
212
207
  if (!isSeparatedMenuShown || !isCollapsable || isTouchScreen) {
213
208
  return;
214
209
  }
215
- var relativeXCoordinate = e.clientX - leftPosition;
216
- var sideMenuMinimizedWidth = parseInt(theme.sideMenuMinimizedWidth);
210
+ const relativeXCoordinate = e.clientX - leftPosition;
211
+ const sideMenuMinimizedWidth = parseInt(theme.sideMenuMinimizedWidth);
217
212
  if (relativeXCoordinate <= sideMenuMinimizedWidth && mousePositionX >= sideMenuMinimizedWidth) {
218
213
  showMinimizedRoot(false);
219
214
  }
@@ -222,7 +217,7 @@ var SideMenuInner = forwardRef(function (_a, ref) {
222
217
  }
223
218
  setMousePositionX(relativeXCoordinate);
224
219
  };
225
- var showMenu = function (newIsShown) {
220
+ const showMenu = (newIsShown) => {
226
221
  if (!isTabletOrMobile) {
227
222
  return;
228
223
  }
@@ -232,42 +227,42 @@ var SideMenuInner = forwardRef(function (_a, ref) {
232
227
  if (transitionTimer.current) {
233
228
  clearTimeout(transitionTimer.current);
234
229
  }
235
- transitionTimer.current = setTimeout(function () {
230
+ transitionTimer.current = setTimeout(() => {
236
231
  setIsBeingTransitioned(false);
237
- }, burgerTransitionDuration);
232
+ }, exports.burgerTransitionDuration);
238
233
  }
239
234
  };
240
- var isSideMenuOverContent = (isCollapsable || isMobile || (isTablet && !isSeparatedMenuShown)) && isOpened;
241
- var _1 = __read(useAnimateOnMount(!!isTabletOrMobile && !!isOpened, burgerTransitionDuration, {
242
- opacity: LIGHT_THEME.sidePageBackingBgOpacity,
235
+ const isSideMenuOverContent = (isCollapsable || isMobile || (isTablet && !isSeparatedMenuShown)) && isOpened;
236
+ const [shouldShowBackdrop, backdropStyle] = (0, useAnimateOnMount_1.useAnimateOnMount)(!!isTabletOrMobile && !!isOpened, exports.burgerTransitionDuration, {
237
+ opacity: LightTheme_1.LIGHT_THEME.sidePageBackingBgOpacity,
243
238
  }, {
244
239
  opacity: 0,
245
- }), 2), shouldShowBackdrop = _1[0], backdropStyle = _1[1];
246
- var isSideMenuOverflowing = (isTabletOrMobile || isCollapsable) && isOpened;
247
- var setScrollBar = function () {
248
- var isSeparatedMenuShownInMobile = isMobile && isSeparatedMenuShown;
240
+ });
241
+ const isSideMenuOverflowing = (isTabletOrMobile || isCollapsable) && isOpened;
242
+ const setScrollBar = () => {
243
+ const isSeparatedMenuShownInMobile = isMobile && isSeparatedMenuShown;
249
244
  if (isOpened && !isBeingTransitioned && !isSeparatedMenuShownInMobile) {
250
245
  return isTouchScreen ? 'always' : showScrollBar;
251
246
  }
252
247
  return 'never';
253
248
  };
254
- var handleRightBorderClick = function () {
249
+ const handleRightBorderClick = () => {
255
250
  if (!isCollapsable) {
256
251
  setIsOpened(false);
257
252
  }
258
- onPinnedValueChange === null || onPinnedValueChange === void 0 ? void 0 : onPinnedValueChange(!isCollapsable);
253
+ onPinnedValueChange?.(!isCollapsable);
259
254
  setIsCollapsable(!isCollapsable);
260
255
  };
261
- var handleDropDownClose = function () {
256
+ const handleDropDownClose = () => {
262
257
  if (!isNarrowDesktop) {
263
258
  return;
264
259
  }
265
- var shouldCloseSideMenu = !manual && document.hasFocus();
260
+ const shouldCloseSideMenu = !manual && document.hasFocus();
266
261
  setIsMouseOutside(true);
267
262
  shouldCloseSideMenu && handleIsOpened(false, !manual);
268
263
  setIsCollapsable(true);
269
264
  };
270
- var handleDropDownOpen = function () {
265
+ const handleDropDownOpen = () => {
271
266
  if (!isNarrowDesktop) {
272
267
  return;
273
268
  }
@@ -275,84 +270,84 @@ var SideMenuInner = forwardRef(function (_a, ref) {
275
270
  handleIsOpened(true, !manual);
276
271
  forceUpdatePositionPopups();
277
272
  };
278
- return (React.createElement(SideMenuContext.Provider, { value: {
279
- isOpened: isOpened,
280
- isCollapsable: isCollapsable,
281
- toggleIsOpened: function () { return showMenu(!isOpened); },
273
+ return (react_1.default.createElement(SideMenuContext_1.SideMenuContext.Provider, { value: {
274
+ isOpened,
275
+ isCollapsable,
276
+ toggleIsOpened: () => showMenu(!isOpened),
282
277
  setIsMinimized: showMinimizedRoot,
283
- isBeingTransitioned: isBeingTransitioned,
284
- isSeparatedMenu: isSeparatedMenu,
285
- size: size,
278
+ isBeingTransitioned,
279
+ isSeparatedMenu,
280
+ size,
286
281
  isDesktop: isDesktopQuery,
287
- isNarrowDesktop: isNarrowDesktop,
288
- isTablet: isTablet,
289
- isMobile: isMobile,
290
- isTouchScreen: isTouchScreen,
291
- setIsMouseOutside: setIsMouseOutside,
292
- scrollState: scrollState,
293
- setScrollState: setScrollState,
294
- hasScrollBar: hasScrollBar,
295
- setHasScrollBar: setHasScrollBar,
296
- headerHeight: headerHeight,
297
- setHeaderHeight: setHeaderHeight,
298
- showScrollBar: showScrollBar,
299
- sideMenuRef: sideMenuRef,
282
+ isNarrowDesktop,
283
+ isTablet,
284
+ isMobile,
285
+ isTouchScreen,
286
+ setIsMouseOutside,
287
+ scrollState,
288
+ setScrollState,
289
+ hasScrollBar,
290
+ setHasScrollBar,
291
+ headerHeight,
292
+ setHeaderHeight,
293
+ showScrollBar,
294
+ sideMenuRef,
300
295
  navigation: navigation.current,
301
- handleDropDownOpen: handleDropDownOpen,
302
- handleDropDownClose: handleDropDownClose,
296
+ handleDropDownOpen,
297
+ handleDropDownClose,
303
298
  } },
304
- (isOpened || isBeingTransitioned) && isTabletOrMobile && React.createElement("div", { style: { height: headerHeight } }),
305
- React.createElement(ZIndex, { priority: isSideMenuOverflowing ? 8 : 0, className: cx((_b = {},
306
- _b[jsStylesForSideMenu.root()] = true,
307
- _b[customStyles.rootForTabletsOrMobiles(headerHeight)] = isTabletOrMobile,
308
- _b[jsStylesForSideMenu.shownRootForTabletsOrMobiles()] = isOpened && isTabletOrMobile,
309
- _b[jsStylesForSideMenu.transitionedRootForTabletsOrMobiles()] = isBeingTransitioned && isTabletOrMobile,
310
- _b[jsStylesForSideMenu.rootForNarrowDesktops(theme)] = isCollapsable,
311
- _b[jsStylesForSideMenu.separatedRootForNarrowDesktops(theme)] = isSeparatedMenuShown && isCollapsable,
312
- _b[jsStylesForSideMenu.separatedRootForTouchScreens(theme)] = isSeparatedMenuShown && isTouchScreen && isCollapsable,
313
- _b[jsStylesForSideMenu.separatedRootForDesktops(theme)] = isSeparatedMenuShown && isDesktopQuery && !isCollapsable,
314
- _b[jsStylesForSideMenu.separatedRootForTouchScreensForDesktops(theme)] = isDesktopQuery && isSeparatedMenuShown && isTouchScreen,
315
- _b)) },
316
- React.createElement(React.Fragment, null,
317
- shouldShowBackdrop && React.createElement(Backdrop, { style: backdropStyle }),
318
- React.createElement(RenderLayer, { onClickOutside: function () { return showMenu(false); } },
319
- React.createElement("aside", __assign({ className: cx((_c = {},
320
- _c[jsStylesForSideMenu.wrapper()] = true,
321
- _c[jsStylesForSideMenu.wrapperIE()] = isIE11,
322
- _c[jsStylesForSideMenu.wrapperWithShadow(theme)] = isSideMenuOverContent,
323
- _c), className), "data-tid": SideMenuDataTids.root, ref: mergeRefs([sideMenuRef, ref !== null && ref !== void 0 ? ref : null]) }, rest, { onMouseEnter: handleMouseEnter, onMouseLeave: handleMouseLeave, onMouseMove: showMinimizedRootForNarrowDesktop }),
324
- React.createElement("div", { className: cx((_d = {},
325
- _d[jsStylesForSideMenu.container(theme)] = true,
326
- _d[jsStylesForSideMenu.collapsedContainerForTabletsOrMobiles()] = !isOpened && isTabletOrMobile && !isBeingTransitioned,
327
- _d[jsStylesForSideMenu.minimizedContainer(theme)] = !isOpened && !isTabletOrMobile,
328
- _d[jsStylesForSideMenu.containerForTouchScreens(theme)] = isTouchScreen,
329
- _d[jsStylesForSideMenu.separatedContainerForMobiles(theme)] = isMobile && isSeparatedMenuShown && (isOpened || isBeingTransitioned),
330
- _d)) },
331
- React.createElement(ScrollContainer, { onScrollStateChangeY: function (state) {
332
- setScrollState === null || setScrollState === void 0 ? void 0 : setScrollState(state);
299
+ (isOpened || isBeingTransitioned) && isTabletOrMobile && react_1.default.createElement("div", { style: { height: headerHeight } }),
300
+ react_1.default.createElement(ZIndex_1.ZIndex, { priority: isSideMenuOverflowing ? 8 : 0, className: (0, Emotion_1.cx)({
301
+ [SideMenu_styles_1.jsStylesForSideMenu.root()]: true,
302
+ [SideMenu_styles_1.customStyles.rootForTabletsOrMobiles(headerHeight)]: isTabletOrMobile,
303
+ [SideMenu_styles_1.jsStylesForSideMenu.shownRootForTabletsOrMobiles()]: isOpened && isTabletOrMobile,
304
+ [SideMenu_styles_1.jsStylesForSideMenu.transitionedRootForTabletsOrMobiles()]: isBeingTransitioned && isTabletOrMobile,
305
+ [SideMenu_styles_1.jsStylesForSideMenu.rootForNarrowDesktops(theme)]: isCollapsable,
306
+ [SideMenu_styles_1.jsStylesForSideMenu.separatedRootForNarrowDesktops(theme)]: isSeparatedMenuShown && isCollapsable,
307
+ [SideMenu_styles_1.jsStylesForSideMenu.separatedRootForTouchScreens(theme)]: isSeparatedMenuShown && isTouchScreen && isCollapsable,
308
+ [SideMenu_styles_1.jsStylesForSideMenu.separatedRootForDesktops(theme)]: isSeparatedMenuShown && isDesktopQuery && !isCollapsable,
309
+ [SideMenu_styles_1.jsStylesForSideMenu.separatedRootForTouchScreensForDesktops(theme)]: isDesktopQuery && isSeparatedMenuShown && isTouchScreen,
310
+ }) },
311
+ react_1.default.createElement(react_1.default.Fragment, null,
312
+ shouldShowBackdrop && react_1.default.createElement(Backdrop_1.Backdrop, { style: backdropStyle }),
313
+ react_1.default.createElement(RenderLayer_1.RenderLayer, { onClickOutside: () => showMenu(false) },
314
+ react_1.default.createElement("aside", { className: (0, Emotion_1.cx)({
315
+ [SideMenu_styles_1.jsStylesForSideMenu.wrapper()]: true,
316
+ [SideMenu_styles_1.jsStylesForSideMenu.wrapperIE()]: client_1.isIE11,
317
+ [SideMenu_styles_1.jsStylesForSideMenu.wrapperWithShadow(theme)]: isSideMenuOverContent,
318
+ }, className), "data-tid": SideMenuDataTids_1.SideMenuDataTids.root, ref: (0, utils_1.mergeRefs)([sideMenuRef, ref ?? null]), ...rest, onMouseEnter: handleMouseEnter, onMouseLeave: handleMouseLeave, onMouseMove: showMinimizedRootForNarrowDesktop },
319
+ react_1.default.createElement("div", { className: (0, Emotion_1.cx)({
320
+ [SideMenu_styles_1.jsStylesForSideMenu.container(theme)]: true,
321
+ [SideMenu_styles_1.jsStylesForSideMenu.collapsedContainerForTabletsOrMobiles()]: !isOpened && isTabletOrMobile && !isBeingTransitioned,
322
+ [SideMenu_styles_1.jsStylesForSideMenu.minimizedContainer(theme)]: !isOpened && !isTabletOrMobile,
323
+ [SideMenu_styles_1.jsStylesForSideMenu.containerForTouchScreens(theme)]: isTouchScreen,
324
+ [SideMenu_styles_1.jsStylesForSideMenu.separatedContainerForMobiles(theme)]: isMobile && isSeparatedMenuShown && (isOpened || isBeingTransitioned),
325
+ }) },
326
+ react_1.default.createElement(ScrollContainer_1.ScrollContainer, { onScrollStateChangeY: (state) => {
327
+ setScrollState?.(state);
333
328
  }, showScrollBar: setScrollBar(), ref: scrollContainerRef },
334
- React.createElement("div", { className: cx((_e = {},
335
- _e[jsStylesForSideMenu.contentWrapper(theme)] = true,
336
- _e[jsStylesForSideMenu.contentWrapperForTouchScreens(theme)] = isTouchScreen,
337
- _e[jsStylesForSideMenu.minimizedContentWrapper()] = !isOpened && !isTabletOrMobile,
338
- _e)), ref: contentWrapperRef }, children))),
339
- !disableSwipe && !disableCollapsing && isDesktopQuery && isOpened && (React.createElement(RightBorder, { onClick: handleRightBorderClick, showButton: isHovered }))))))));
329
+ react_1.default.createElement("div", { className: (0, Emotion_1.cx)({
330
+ [SideMenu_styles_1.jsStylesForSideMenu.contentWrapper(theme)]: true,
331
+ [SideMenu_styles_1.jsStylesForSideMenu.contentWrapperForTouchScreens(theme)]: isTouchScreen,
332
+ [SideMenu_styles_1.jsStylesForSideMenu.minimizedContentWrapper()]: !isOpened && !isTabletOrMobile,
333
+ }), ref: contentWrapperRef }, children))),
334
+ !disableSwipe && !disableCollapsing && isDesktopQuery && isOpened && (react_1.default.createElement(RightBorder_1.RightBorder, { onClick: handleRightBorderClick, showButton: isHovered }))))))));
340
335
  });
341
336
  SideMenuInner.displayName = 'SideMenu';
342
- var STATIC_PROPS = {
343
- Body: SideMenuBody,
344
- Footer: SideMenuFooter,
345
- Header: SideMenuHeader,
346
- Item: SideMenuItem,
347
- SubItem: SideMenuSubItem,
348
- SubItemHeader: SideMenuSubItemHeader,
349
- Avatar: SideMenuAvatar,
350
- Organisations: SideMenuOrganisations,
351
- Notifications: SideMenuNotifications,
352
- Divider: SideMenuDivider,
353
- Link: SideMenuLink,
354
- SubLink: SideMenuSubLink,
355
- Dropdown: SideMenuDropdown,
337
+ const STATIC_PROPS = {
338
+ Body: SideMenuBody_1.SideMenuBody,
339
+ Footer: SideMenuFooter_1.SideMenuFooter,
340
+ Header: SideMenuHeader_1.SideMenuHeader,
341
+ Item: SideMenuItem_1.SideMenuItem,
342
+ SubItem: SideMenuSubItem_1.SideMenuSubItem,
343
+ SubItemHeader: SideMenuSubItemHeader_1.SideMenuSubItemHeader,
344
+ Avatar: SideMenuAvatar_1.SideMenuAvatar,
345
+ Organisations: SideMenuOrganisations_1.SideMenuOrganisations,
346
+ Notifications: SideMenuNotifications_1.SideMenuNotifications,
347
+ Divider: SideMenuDivider_1.SideMenuDivider,
348
+ Link: SideMenuLink_1.SideMenuLink,
349
+ SubLink: SideMenuSubLink_1.SideMenuSubLink,
350
+ Dropdown: SideMenuDropdown_1.SideMenuDropdown,
356
351
  __KONTUR_REACT_UI__: 'SideMenu',
357
352
  };
358
- export var SideMenu = Object.assign(SideMenuInner, STATIC_PROPS);
353
+ exports.SideMenu = Object.assign(SideMenuInner, STATIC_PROPS);