@skbkontur/side-menu 3.1.7 → 3.2.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 (118) hide show
  1. package/CHANGELOG.md +19 -0
  2. package/SideMenuDataTids.d.ts +8 -8
  3. package/SideMenuDataTids.js +8 -8
  4. package/hooks/useAnimateOnMount.d.ts +2 -2
  5. package/hooks/useAnimateOnMount.js +19 -19
  6. package/hooks/useMemoIcon.d.ts +8 -8
  7. package/hooks/useMemoIcon.js +27 -27
  8. package/index.d.ts +14 -14
  9. package/index.js +14 -14
  10. package/internal/themes/SideMenuTheme.d.ts +132 -132
  11. package/internal/themes/SideMenuTheme.js +291 -291
  12. package/lib/theming/ThemeHelpers.d.ts +18 -18
  13. package/lib/theming/ThemeHelpers.js +77 -77
  14. package/lib/theming/ThemeTypes.d.ts +3 -3
  15. package/lib/theming/ThemeTypes.js +1 -0
  16. package/lib/utils/memo.d.ts +1 -1
  17. package/lib/utils/memo.js +9 -9
  18. package/lib/utils/scripts.d.ts +5 -5
  19. package/lib/utils/scripts.js +10 -10
  20. package/package.json +4 -4
  21. package/src/Navigation.d.ts +52 -52
  22. package/src/Navigation.js +191 -156
  23. package/src/SideMenu/SideMenu.d.ts +90 -90
  24. package/src/SideMenu/SideMenu.js +315 -315
  25. package/src/SideMenu/SideMenu.styles.d.ts +27 -27
  26. package/src/SideMenu/SideMenu.styles.js +77 -77
  27. package/src/SideMenuAvatar/SideMenuAvatar.d.ts +13 -13
  28. package/src/SideMenuAvatar/SideMenuAvatar.js +18 -18
  29. package/src/SideMenuBody/SideMenuBody.d.ts +13 -13
  30. package/src/SideMenuBody/SideMenuBody.js +27 -27
  31. package/src/SideMenuBody/SideMenuBody.styles.d.ts +5 -5
  32. package/src/SideMenuBody/SideMenuBody.styles.js +13 -13
  33. package/src/SideMenuContext.d.ts +30 -30
  34. package/src/SideMenuContext.js +2 -2
  35. package/src/SideMenuDivider/SideMenuDivider.d.ts +10 -10
  36. package/src/SideMenuDivider/SideMenuDivider.js +19 -19
  37. package/src/SideMenuDivider/SideMenuDivider.styles.d.ts +4 -4
  38. package/src/SideMenuDivider/SideMenuDivider.styles.js +10 -10
  39. package/src/SideMenuDropdown/SideMenuDropdown.d.ts +17 -17
  40. package/src/SideMenuDropdown/SideMenuDropdown.js +40 -40
  41. package/src/SideMenuDropdown/SideMenuDropdown.styles.d.ts +7 -7
  42. package/src/SideMenuDropdown/SideMenuDropdown.styles.js +20 -20
  43. package/src/SideMenuFooter/SideMenuFooter.d.ts +13 -13
  44. package/src/SideMenuFooter/SideMenuFooter.js +34 -34
  45. package/src/SideMenuFooter/SideMenuFooter.styles.d.ts +6 -6
  46. package/src/SideMenuFooter/SideMenuFooter.styles.js +16 -16
  47. package/src/SideMenuHeader/SideMenuHeader.d.ts +13 -13
  48. package/src/SideMenuHeader/SideMenuHeader.js +39 -39
  49. package/src/SideMenuHeader/SideMenuHeader.styles.d.ts +8 -8
  50. package/src/SideMenuHeader/SideMenuHeader.styles.js +22 -22
  51. package/src/SideMenuItem/SideMenuItem.d.ts +15 -15
  52. package/src/SideMenuItem/SideMenuItem.js +16 -16
  53. package/src/SideMenuLink/SideMenuLink.d.ts +16 -16
  54. package/src/SideMenuLink/SideMenuLink.js +21 -21
  55. package/src/SideMenuLink/SideMenuLink.styles.d.ts +3 -3
  56. package/src/SideMenuLink/SideMenuLink.styles.js +9 -9
  57. package/src/SideMenuOrganisations/SideMenuOrganisations.d.ts +10 -10
  58. package/src/SideMenuOrganisations/SideMenuOrganisations.js +16 -16
  59. package/src/SideMenuSubItem/SideMenuSubItem.d.ts +12 -12
  60. package/src/SideMenuSubItem/SideMenuSubItem.js +15 -15
  61. package/src/SideMenuSubItemHeader/SideMenuSubItemHeader.d.ts +13 -13
  62. package/src/SideMenuSubItemHeader/SideMenuSubItemHeader.js +26 -26
  63. package/src/SideMenuSubItemHeader/SideMenuSubItemHeader.styles.d.ts +5 -5
  64. package/src/SideMenuSubItemHeader/SideMenuSubItemHeader.styles.js +13 -13
  65. package/src/SideMenuSubLink/SideMenuSubLink.d.ts +14 -14
  66. package/src/SideMenuSubLink/SideMenuSubLink.js +18 -18
  67. package/src/Tree.d.ts +17 -17
  68. package/src/Tree.js +133 -133
  69. package/src/internal/BackButton.d.ts +9 -9
  70. package/src/internal/BackButton.js +25 -25
  71. package/src/internal/Backdrop.d.ts +4 -4
  72. package/src/internal/Backdrop.js +13 -13
  73. package/src/internal/Backdrop.styles.d.ts +3 -3
  74. package/src/internal/Backdrop.styles.js +10 -10
  75. package/src/internal/Burger.d.ts +1 -1
  76. package/src/internal/Burger.js +13 -13
  77. package/src/internal/Burger.styles.d.ts +4 -4
  78. package/src/internal/Burger.styles.js +11 -11
  79. package/src/internal/ClickableElement.d.ts +32 -32
  80. package/src/internal/ClickableElement.js +141 -141
  81. package/src/internal/ClickableElement.styles.d.ts +10 -10
  82. package/src/internal/ClickableElement.styles.js +29 -29
  83. package/src/internal/InnerSubMenu.d.ts +10 -10
  84. package/src/internal/InnerSubMenu.js +21 -21
  85. package/src/internal/ItemContent/Caption.d.ts +9 -9
  86. package/src/internal/ItemContent/Caption.js +73 -73
  87. package/src/internal/ItemContent/Caption.styles.d.ts +19 -19
  88. package/src/internal/ItemContent/Caption.styles.js +51 -51
  89. package/src/internal/ItemContent/Icon.d.ts +6 -6
  90. package/src/internal/ItemContent/Icon.js +42 -42
  91. package/src/internal/ItemContent/Icon.styles.d.ts +10 -10
  92. package/src/internal/ItemContent/Icon.styles.js +28 -28
  93. package/src/internal/ItemContent/ItemContent.d.ts +8 -8
  94. package/src/internal/ItemContent/ItemContent.js +68 -68
  95. package/src/internal/ItemContent/ItemContent.styles.d.ts +14 -14
  96. package/src/internal/ItemContent/ItemContent.styles.js +40 -40
  97. package/src/internal/ItemContent/Marker.d.ts +7 -7
  98. package/src/internal/ItemContent/Marker.js +21 -21
  99. package/src/internal/ItemContent/Marker.styles.d.ts +11 -11
  100. package/src/internal/ItemContent/Marker.styles.js +31 -31
  101. package/src/internal/NestedMenu.d.ts +10 -10
  102. package/src/internal/NestedMenu.js +26 -26
  103. package/src/internal/NestedMenu.styles.d.ts +4 -4
  104. package/src/internal/NestedMenu.styles.js +10 -10
  105. package/src/internal/RightBorder.d.ts +9 -9
  106. package/src/internal/RightBorder.js +33 -33
  107. package/src/internal/RightBorder.styles.d.ts +5 -5
  108. package/src/internal/RightBorder.styles.js +13 -13
  109. package/src/internal/SeparatedSubMenu.d.ts +11 -11
  110. package/src/internal/SeparatedSubMenu.js +64 -64
  111. package/src/internal/SeparatedSubMenu.styles.d.ts +13 -13
  112. package/src/internal/SeparatedSubMenu.styles.js +33 -33
  113. package/src/internal/SideMenuLogotype.d.ts +6 -6
  114. package/src/internal/SideMenuLogotype.js +80 -79
  115. package/src/internal/SideMenuLogotype.styles.d.ts +12 -12
  116. package/src/internal/SideMenuLogotype.styles.js +31 -31
  117. package/src/internal/SubMenu.d.ts +13 -13
  118. package/src/internal/SubMenu.js +25 -25
@@ -1,315 +1,315 @@
1
- import { __assign, __read, __rest } from "tslib";
2
- import React, { 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 { jsStylesForSideMenu, customStyles } from './SideMenu.styles';
7
- import { SideMenuOrganisations } from '../SideMenuOrganisations/SideMenuOrganisations';
8
- import { SideMenuContext } from '../SideMenuContext';
9
- import { SideMenuBody } from '../SideMenuBody/SideMenuBody';
10
- import { SideMenuFooter } from '../SideMenuFooter/SideMenuFooter';
11
- import { SideMenuHeader } from '../SideMenuHeader/SideMenuHeader';
12
- import { SideMenuItem } from '../SideMenuItem/SideMenuItem';
13
- import { SideMenuAvatar } from '../SideMenuAvatar/SideMenuAvatar';
14
- import { SideMenuSubItem } from '../SideMenuSubItem/SideMenuSubItem';
15
- import { SideMenuDivider } from '../SideMenuDivider/SideMenuDivider';
16
- import { SideMenuSubItemHeader } from '../SideMenuSubItemHeader/SideMenuSubItemHeader';
17
- import { RightBorder } from '../internal/RightBorder';
18
- import { SideMenuDropdown } from '../SideMenuDropdown/SideMenuDropdown';
19
- import { SideMenuLink } from '../SideMenuLink/SideMenuLink';
20
- import { SideMenuSubLink } from '../SideMenuSubLink/SideMenuSubLink';
21
- import { LIGHT_THEME, ScrollContainer, useResponsiveLayout } from '@skbkontur/react-ui';
22
- import { Backdrop } from '../internal/Backdrop';
23
- import { RenderLayer } from '@skbkontur/react-ui/internal/RenderLayer';
24
- import { isTouchDevice } from '../../lib/utils/scripts';
25
- import { SideMenuDataTids } from '../../SideMenuDataTids';
26
- import { ZIndex } from '@skbkontur/react-ui/internal/ZIndex';
27
- import { useAnimateOnMount } from '../../hooks/useAnimateOnMount';
28
- import { getSideMenuTheme } from '../../lib/theming/ThemeHelpers';
29
- import { mergeRefs } from '@skbkontur/react-ui/lib/utils';
30
- import { MenuNavigation } from '../Navigation';
31
- export var transitionDuration = 300; //ms
32
- export var burgerTransitionDuration = (transitionDuration * 2) / 3;
33
- var SideMenuInner = forwardRef(function (_a, ref) {
34
- var _b, _c, _d, _e;
35
- var _f, _g;
36
- 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"]);
37
- var transitionTimer = useRef(null);
38
- var sideMenuRef = useRef(null);
39
- var contentWrapperRef = useRef(null);
40
- var scrollContainerRef = useRef(null);
41
- var navigation = useRef(null);
42
- var theme = getSideMenuTheme(useContext(ThemeContext));
43
- var customMediaQueries = {
44
- isMobileQuery: mobileMediaQuery || theme.sideMenuMobileMediaQuery,
45
- isTabletQuery: tabletMediaQuery || theme.sideMenuTabletMediaQuery,
46
- isNarrowDesktopQuery: narrowDesktopMediaQuery || theme.sideMenuNarrowDesktopMediaQuery,
47
- isDesktopQuery: desktopMediaQuery || theme.sideMenuDesktopMediaQuery,
48
- };
49
- var _o = useResponsiveLayout({
50
- customMediaQueries: customMediaQueries,
51
- }), isMobileQuery = _o.isMobileQuery, isTabletQuery = _o.isTabletQuery, isNarrowDesktopQuery = _o.isNarrowDesktopQuery, isDesktopQuery = _o.isDesktopQuery;
52
- var isNarrowDesktop = isNarrowDesktopQuery && !isDesktopQuery;
53
- var isTablet = isTabletQuery && !isNarrowDesktopQuery;
54
- var isMobile = isMobileQuery && !isTabletQuery;
55
- var isTabletOrMobile = isTablet || isMobile;
56
- var isTouchScreen = isTouchDevice() || isMobile || isTablet;
57
- var manual = isOpen !== undefined;
58
- var _p = __read(useState(isDesktopQuery && !isPinned), 2), isOpened = _p[0], setIsOpened = _p[1];
59
- var _q = __read(useState(false), 2), isBeingTransitioned = _q[0], setIsBeingTransitioned = _q[1];
60
- var _r = __read(useState(value !== null && value !== void 0 ? value : activeItem), 2), activeMenuItem = _r[0], setActiveMenuItem = _r[1];
61
- var _s = __read(useState(false), 2), isSeparatedMenuShown = _s[0], setIsSeparatedMenuShown = _s[1];
62
- var _t = __read(useState(true), 2), isMouseOutside = _t[0], setIsMouseOutside = _t[1];
63
- var _u = __read(useState('top'), 2), scrollState = _u[0], setScrollState = _u[1];
64
- var _v = __read(useState(false), 2), hasScrollBar = _v[0], setHasScrollBar = _v[1];
65
- var _w = __read(useState(0), 2), mousePositionX = _w[0], setMousePositionX = _w[1];
66
- var _x = __read(useState(0), 2), headerHeight = _x[0], setHeaderHeight = _x[1];
67
- var _y = __read(useState(isNarrowDesktop || (isDesktopQuery && isPinned)), 2), isCollapsable = _y[0], setIsCollapsable = _y[1];
68
- var _z = __read(useState(0), 2), leftPosition = _z[0], setLeftPosition = _z[1];
69
- var _0 = __read(useState(false), 2), isHovered = _0[0], setIsHovered = _0[1];
70
- var switchActiveMenuItem = function (id) {
71
- if (id !== value && id !== activeItem) {
72
- onValueChange === null || onValueChange === void 0 ? void 0 : onValueChange(id);
73
- onActiveItemChange === null || onActiveItemChange === void 0 ? void 0 : onActiveItemChange(id);
74
- setActiveMenuItem(id);
75
- }
76
- };
77
- useEffect(function () {
78
- var _a;
79
- setLeftPosition(((_a = sideMenuRef.current) === null || _a === void 0 ? void 0 : _a.getBoundingClientRect().left) || 0);
80
- navigation.current = new MenuNavigation({
81
- rootRef: sideMenuRef,
82
- activeMenuItem: activeMenuItem,
83
- setActiveMenuItem: switchActiveMenuItem,
84
- isSeparatedMenu: isSeparatedMenu,
85
- isSeparatedMenuShown: isSeparatedMenuShown,
86
- setIsSeparatedMenuShown: setIsSeparatedMenuShown,
87
- isOpened: isOpened,
88
- isDesktopQuery: isDesktopQuery,
89
- isMobile: isMobile,
90
- isCollapsable: isCollapsable,
91
- });
92
- return function () {
93
- if (transitionTimer.current) {
94
- clearTimeout(transitionTimer.current);
95
- }
96
- };
97
- }, []);
98
- useEffect(function () {
99
- if (isMobile && isSeparatedMenuShown)
100
- return;
101
- setTimeout(function () {
102
- var _a;
103
- var contentWrapper = contentWrapperRef.current;
104
- var scrollContainer = (_a = scrollContainerRef.current) === null || _a === void 0 ? void 0 : _a.inner;
105
- if (!contentWrapper || !scrollContainer)
106
- return;
107
- setHasScrollBar(scrollContainer.clientHeight < contentWrapper.scrollHeight);
108
- }, 50);
109
- }, [activeMenuItem, isOpened, isBeingTransitioned]);
110
- useEffect(function () {
111
- isDesktopQuery && setIsOpened(!isPinned);
112
- }, [isPinned, isDesktopQuery]);
113
- var handleIsOpened = function (newIsOpened, shouldSetState) {
114
- if (newIsOpened === isOpened || !shouldSetState)
115
- return;
116
- setIsOpened(newIsOpened);
117
- if (newIsOpened) {
118
- onOpen === null || onOpen === void 0 ? void 0 : onOpen();
119
- }
120
- else {
121
- onClose === null || onClose === void 0 ? void 0 : onClose();
122
- }
123
- };
124
- useEffect(function () {
125
- if (isDesktopQuery && !isPinned) {
126
- setIsOpened(true);
127
- setIsCollapsable(false);
128
- }
129
- if (isNarrowDesktop || isTablet || isMobile) {
130
- setIsOpened(false);
131
- }
132
- isNarrowDesktop && setIsCollapsable(true);
133
- if (isDesktopQuery && isPinned) {
134
- setIsCollapsable(true);
135
- if (navigation.current) {
136
- navigation.current.isCollapsable = true;
137
- }
138
- }
139
- }, [isNarrowDesktop, isDesktopQuery, isTablet, isMobile, isPinned]);
140
- useEffect(function () {
141
- var _a;
142
- !activeItem && ((_a = navigation.current) === null || _a === void 0 ? void 0 : _a.switchActiveMenuItem(value));
143
- }, [value, (_f = navigation.current) === null || _f === void 0 ? void 0 : _f.navigationTree]);
144
- useEffect(function () {
145
- var _a;
146
- !value && ((_a = navigation.current) === null || _a === void 0 ? void 0 : _a.switchActiveMenuItem(activeItem));
147
- }, [activeItem, (_g = navigation.current) === null || _g === void 0 ? void 0 : _g.navigationTree]);
148
- useEffect(function () {
149
- var _a;
150
- (_a = navigation.current) === null || _a === void 0 ? void 0 : _a.switchIsSeparatedMenu(isSeparatedMenu);
151
- }, [isSeparatedMenu]);
152
- useEffect(function () {
153
- handleIsOpened(isOpen, manual);
154
- }, [isOpen]);
155
- var showMinimizedRoot = function (newIsMinimized) {
156
- if ((!isBeingTransitioned || isSeparatedMenu) && newIsMinimized === isOpened) {
157
- setIsBeingTransitioned(true);
158
- handleIsOpened(!newIsMinimized, !manual);
159
- if (transitionTimer.current) {
160
- clearTimeout(transitionTimer.current);
161
- }
162
- transitionTimer.current = setTimeout(function () {
163
- setIsBeingTransitioned(false);
164
- }, transitionDuration + 200);
165
- }
166
- };
167
- var shouldNotOpenOnHover = (isSeparatedMenu && isSeparatedMenuShown && isNarrowDesktop && manual) || isTouchScreen;
168
- var handleMouseEnter = function () {
169
- if (shouldNotOpenOnHover) {
170
- return;
171
- }
172
- setIsHovered(true);
173
- if (isCollapsable && !isOpened && !isSeparatedMenuShown) {
174
- isMouseOutside && showMinimizedRoot(false);
175
- setIsMouseOutside(false);
176
- }
177
- };
178
- var handleMouseLeave = function () {
179
- if (shouldNotOpenOnHover) {
180
- return;
181
- }
182
- setIsHovered(false);
183
- if (isCollapsable) {
184
- handleIsOpened(false, !manual);
185
- if (!manual) {
186
- setIsMouseOutside(true);
187
- }
188
- }
189
- };
190
- var showMinimizedRootForNarrowDesktop = function (e) {
191
- if (!isSeparatedMenuShown || !isCollapsable || isTouchScreen)
192
- return;
193
- var relativeXCoordinate = e.clientX - leftPosition;
194
- var sideMenuMinimizedWidth = parseInt(theme.sideMenuMinimizedWidth);
195
- if (relativeXCoordinate <= sideMenuMinimizedWidth && mousePositionX >= sideMenuMinimizedWidth) {
196
- showMinimizedRoot(false);
197
- }
198
- else if (relativeXCoordinate > parseInt(theme.sideMenuWidth)) {
199
- showMinimizedRoot(true);
200
- }
201
- setMousePositionX(relativeXCoordinate);
202
- };
203
- var showMenu = function (newIsShown) {
204
- if (!isTabletOrMobile)
205
- return;
206
- if (!isBeingTransitioned && newIsShown !== isOpened) {
207
- setIsBeingTransitioned(true);
208
- handleIsOpened(newIsShown, !manual);
209
- if (transitionTimer.current) {
210
- clearTimeout(transitionTimer.current);
211
- }
212
- transitionTimer.current = setTimeout(function () {
213
- setIsBeingTransitioned(false);
214
- }, burgerTransitionDuration);
215
- }
216
- };
217
- var isSideMenuOverContent = (isCollapsable || isMobile || (isTablet && !isSeparatedMenuShown)) && isOpened;
218
- var _1 = __read(useAnimateOnMount(!!isTabletOrMobile && !!isOpened, burgerTransitionDuration, {
219
- opacity: LIGHT_THEME.sidePageBackingBgOpacity,
220
- }, {
221
- opacity: 0,
222
- }), 2), shouldShowBackdrop = _1[0], backdropStyle = _1[1];
223
- var isSideMenuOverflowing = (isTabletOrMobile || isCollapsable) && isOpened;
224
- var setScrollBar = function () {
225
- var isSeparatedMenuShownInMobile = isMobile && isSeparatedMenuShown;
226
- if (isOpened && !isBeingTransitioned && !isSeparatedMenuShownInMobile) {
227
- return isTouchScreen ? 'always' : showScrollBar;
228
- }
229
- return 'never';
230
- };
231
- var handleRightBorderClick = function () {
232
- if (!isCollapsable) {
233
- setIsOpened(false);
234
- }
235
- onPinnedValueChange === null || onPinnedValueChange === void 0 ? void 0 : onPinnedValueChange(!isCollapsable);
236
- setIsCollapsable(!isCollapsable);
237
- };
238
- return (React.createElement(SideMenuContext.Provider, { value: {
239
- isOpened: isOpened,
240
- isCollapsable: isCollapsable,
241
- toggleIsOpened: function () { return showMenu(!isOpened); },
242
- setIsMinimized: showMinimizedRoot,
243
- isBeingTransitioned: isBeingTransitioned,
244
- isSeparatedMenu: isSeparatedMenu,
245
- size: size,
246
- isDesktop: isDesktopQuery,
247
- isNarrowDesktop: isNarrowDesktop,
248
- isTablet: isTablet,
249
- isMobile: isMobile,
250
- isTouchScreen: isTouchScreen,
251
- setIsMouseOutside: setIsMouseOutside,
252
- scrollState: scrollState,
253
- setScrollState: setScrollState,
254
- hasScrollBar: hasScrollBar,
255
- setHasScrollBar: setHasScrollBar,
256
- headerHeight: headerHeight,
257
- setHeaderHeight: setHeaderHeight,
258
- showScrollBar: showScrollBar,
259
- sideMenuRef: sideMenuRef,
260
- navigation: navigation.current,
261
- } },
262
- (isOpened || isBeingTransitioned) && isTabletOrMobile && React.createElement("div", { style: { height: headerHeight } }),
263
- React.createElement(ZIndex, { priority: isSideMenuOverflowing ? 8 : 0, className: cx((_b = {},
264
- _b[jsStylesForSideMenu.root()] = true,
265
- _b[customStyles.rootForTabletsOrMobiles(headerHeight)] = isTabletOrMobile,
266
- _b[jsStylesForSideMenu.shownRootForTabletsOrMobiles()] = isOpened && isTabletOrMobile,
267
- _b[jsStylesForSideMenu.transitionedRootForTabletsOrMobiles()] = isBeingTransitioned && isTabletOrMobile,
268
- _b[jsStylesForSideMenu.rootForNarrowDesktops(theme)] = isCollapsable,
269
- _b[jsStylesForSideMenu.separatedRootForNarrowDesktops(theme)] = isSeparatedMenuShown && isCollapsable,
270
- _b[jsStylesForSideMenu.separatedRootForTouchScreens(theme)] = isSeparatedMenuShown && isTouchScreen && isCollapsable,
271
- _b[jsStylesForSideMenu.separatedRootForDesktops(theme)] = isSeparatedMenuShown && isDesktopQuery && !isCollapsable,
272
- _b[jsStylesForSideMenu.separatedRootForTouchScreensForDesktops(theme)] = isDesktopQuery && isSeparatedMenuShown && isTouchScreen,
273
- _b)) },
274
- React.createElement(React.Fragment, null,
275
- shouldShowBackdrop && React.createElement(Backdrop, { style: backdropStyle }),
276
- React.createElement(RenderLayer, { onClickOutside: function () { return showMenu(false); } },
277
- React.createElement("aside", __assign({ className: cx((_c = {},
278
- _c[jsStylesForSideMenu.wrapper()] = true,
279
- _c[jsStylesForSideMenu.wrapperIE()] = isIE11,
280
- _c[jsStylesForSideMenu.wrapperWithShadow(theme)] = isSideMenuOverContent,
281
- _c), className), "data-tid": SideMenuDataTids.root, ref: mergeRefs([sideMenuRef, ref]) }, rest, { onMouseEnter: handleMouseEnter, onMouseLeave: handleMouseLeave, onMouseMove: showMinimizedRootForNarrowDesktop }),
282
- React.createElement("div", { className: cx((_d = {},
283
- _d[jsStylesForSideMenu.container(theme)] = true,
284
- _d[jsStylesForSideMenu.collapsedContainerForTabletsOrMobiles()] = !isOpened && isTabletOrMobile && !isBeingTransitioned,
285
- _d[jsStylesForSideMenu.minimizedContainer(theme)] = !isOpened && !isTabletOrMobile,
286
- _d[jsStylesForSideMenu.containerForTouchScreens(theme)] = isTouchScreen,
287
- _d[jsStylesForSideMenu.separatedContainerForMobiles(theme)] = isMobile && isSeparatedMenuShown && (isOpened || isBeingTransitioned),
288
- _d)) },
289
- React.createElement(ScrollContainer, { onScrollStateChangeY: function (state) {
290
- setScrollState === null || setScrollState === void 0 ? void 0 : setScrollState(state);
291
- }, showScrollBar: setScrollBar(), ref: scrollContainerRef },
292
- React.createElement("div", { className: cx((_e = {},
293
- _e[jsStylesForSideMenu.contentWrapper(theme)] = true,
294
- _e[jsStylesForSideMenu.contentWrapperForTouchScreens(theme)] = isTouchScreen,
295
- _e[jsStylesForSideMenu.minimizedContentWrapper()] = !isOpened && !isTabletOrMobile,
296
- _e)), ref: contentWrapperRef }, children))),
297
- !disableSwipe && !disableCollapsing && isDesktopQuery && isOpened && (React.createElement(RightBorder, { onClick: handleRightBorderClick, showButton: isHovered }))))))));
298
- });
299
- SideMenuInner.displayName = 'SideMenu';
300
- var STATIC_PROPS = {
301
- Body: SideMenuBody,
302
- Footer: SideMenuFooter,
303
- Header: SideMenuHeader,
304
- Item: SideMenuItem,
305
- SubItem: SideMenuSubItem,
306
- SubItemHeader: SideMenuSubItemHeader,
307
- Avatar: SideMenuAvatar,
308
- Organisations: SideMenuOrganisations,
309
- Divider: SideMenuDivider,
310
- Link: SideMenuLink,
311
- SubLink: SideMenuSubLink,
312
- Dropdown: SideMenuDropdown,
313
- __KONTUR_REACT_UI__: 'SideMenu',
314
- };
315
- export var SideMenu = Object.assign(SideMenuInner, STATIC_PROPS);
1
+ import { __assign, __read, __rest } from "tslib";
2
+ import React, { 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 { jsStylesForSideMenu, customStyles } from './SideMenu.styles';
7
+ import { SideMenuOrganisations } from '../SideMenuOrganisations/SideMenuOrganisations';
8
+ import { SideMenuContext } from '../SideMenuContext';
9
+ import { SideMenuBody } from '../SideMenuBody/SideMenuBody';
10
+ import { SideMenuFooter } from '../SideMenuFooter/SideMenuFooter';
11
+ import { SideMenuHeader } from '../SideMenuHeader/SideMenuHeader';
12
+ import { SideMenuItem } from '../SideMenuItem/SideMenuItem';
13
+ import { SideMenuAvatar } from '../SideMenuAvatar/SideMenuAvatar';
14
+ import { SideMenuSubItem } from '../SideMenuSubItem/SideMenuSubItem';
15
+ import { SideMenuDivider } from '../SideMenuDivider/SideMenuDivider';
16
+ import { SideMenuSubItemHeader } from '../SideMenuSubItemHeader/SideMenuSubItemHeader';
17
+ import { RightBorder } from '../internal/RightBorder';
18
+ import { SideMenuDropdown } from '../SideMenuDropdown/SideMenuDropdown';
19
+ import { SideMenuLink } from '../SideMenuLink/SideMenuLink';
20
+ import { SideMenuSubLink } from '../SideMenuSubLink/SideMenuSubLink';
21
+ import { LIGHT_THEME, ScrollContainer, useResponsiveLayout } from '@skbkontur/react-ui';
22
+ import { Backdrop } from '../internal/Backdrop';
23
+ import { RenderLayer } from '@skbkontur/react-ui/internal/RenderLayer';
24
+ import { isTouchDevice } from '../../lib/utils/scripts';
25
+ import { SideMenuDataTids } from '../../SideMenuDataTids';
26
+ import { ZIndex } from '@skbkontur/react-ui/internal/ZIndex';
27
+ import { useAnimateOnMount } from '../../hooks/useAnimateOnMount';
28
+ import { getSideMenuTheme } from '../../lib/theming/ThemeHelpers';
29
+ import { mergeRefs } from '@skbkontur/react-ui/lib/utils';
30
+ import { MenuNavigation } from '../Navigation';
31
+ export var transitionDuration = 300; //ms
32
+ export var burgerTransitionDuration = (transitionDuration * 2) / 3;
33
+ var SideMenuInner = forwardRef(function (_a, ref) {
34
+ var _b, _c, _d, _e;
35
+ var _f, _g;
36
+ 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"]);
37
+ var transitionTimer = useRef(null);
38
+ var sideMenuRef = useRef(null);
39
+ var contentWrapperRef = useRef(null);
40
+ var scrollContainerRef = useRef(null);
41
+ var navigation = useRef(null);
42
+ var theme = getSideMenuTheme(useContext(ThemeContext));
43
+ var customMediaQueries = {
44
+ isMobileQuery: mobileMediaQuery || theme.sideMenuMobileMediaQuery,
45
+ isTabletQuery: tabletMediaQuery || theme.sideMenuTabletMediaQuery,
46
+ isNarrowDesktopQuery: narrowDesktopMediaQuery || theme.sideMenuNarrowDesktopMediaQuery,
47
+ isDesktopQuery: desktopMediaQuery || theme.sideMenuDesktopMediaQuery,
48
+ };
49
+ var _o = useResponsiveLayout({
50
+ customMediaQueries: customMediaQueries,
51
+ }), isMobileQuery = _o.isMobileQuery, isTabletQuery = _o.isTabletQuery, isNarrowDesktopQuery = _o.isNarrowDesktopQuery, isDesktopQuery = _o.isDesktopQuery;
52
+ var isNarrowDesktop = isNarrowDesktopQuery && !isDesktopQuery;
53
+ var isTablet = isTabletQuery && !isNarrowDesktopQuery;
54
+ var isMobile = isMobileQuery && !isTabletQuery;
55
+ var isTabletOrMobile = isTablet || isMobile;
56
+ var isTouchScreen = isTouchDevice() || isMobile || isTablet;
57
+ var manual = isOpen !== undefined;
58
+ var _p = __read(useState(isDesktopQuery && !isPinned), 2), isOpened = _p[0], setIsOpened = _p[1];
59
+ var _q = __read(useState(false), 2), isBeingTransitioned = _q[0], setIsBeingTransitioned = _q[1];
60
+ var _r = __read(useState(value !== null && value !== void 0 ? value : activeItem), 2), activeMenuItem = _r[0], setActiveMenuItem = _r[1];
61
+ var _s = __read(useState(false), 2), isSeparatedMenuShown = _s[0], setIsSeparatedMenuShown = _s[1];
62
+ var _t = __read(useState(true), 2), isMouseOutside = _t[0], setIsMouseOutside = _t[1];
63
+ var _u = __read(useState('top'), 2), scrollState = _u[0], setScrollState = _u[1];
64
+ var _v = __read(useState(false), 2), hasScrollBar = _v[0], setHasScrollBar = _v[1];
65
+ var _w = __read(useState(0), 2), mousePositionX = _w[0], setMousePositionX = _w[1];
66
+ var _x = __read(useState(0), 2), headerHeight = _x[0], setHeaderHeight = _x[1];
67
+ var _y = __read(useState(isNarrowDesktop || (isDesktopQuery && isPinned)), 2), isCollapsable = _y[0], setIsCollapsable = _y[1];
68
+ var _z = __read(useState(0), 2), leftPosition = _z[0], setLeftPosition = _z[1];
69
+ var _0 = __read(useState(false), 2), isHovered = _0[0], setIsHovered = _0[1];
70
+ var switchActiveMenuItem = function (id) {
71
+ if (id !== value && id !== activeItem) {
72
+ onValueChange === null || onValueChange === void 0 ? void 0 : onValueChange(id);
73
+ onActiveItemChange === null || onActiveItemChange === void 0 ? void 0 : onActiveItemChange(id);
74
+ setActiveMenuItem(id);
75
+ }
76
+ };
77
+ useEffect(function () {
78
+ var _a;
79
+ setLeftPosition(((_a = sideMenuRef.current) === null || _a === void 0 ? void 0 : _a.getBoundingClientRect().left) || 0);
80
+ navigation.current = new MenuNavigation({
81
+ rootRef: sideMenuRef,
82
+ activeMenuItem: activeMenuItem,
83
+ setActiveMenuItem: switchActiveMenuItem,
84
+ isSeparatedMenu: isSeparatedMenu,
85
+ isSeparatedMenuShown: isSeparatedMenuShown,
86
+ setIsSeparatedMenuShown: setIsSeparatedMenuShown,
87
+ isOpened: isOpened,
88
+ isDesktopQuery: isDesktopQuery,
89
+ isMobile: isMobile,
90
+ isCollapsable: isCollapsable,
91
+ });
92
+ return function () {
93
+ if (transitionTimer.current) {
94
+ clearTimeout(transitionTimer.current);
95
+ }
96
+ };
97
+ }, []);
98
+ useEffect(function () {
99
+ if (isMobile && isSeparatedMenuShown)
100
+ return;
101
+ setTimeout(function () {
102
+ var _a;
103
+ var contentWrapper = contentWrapperRef.current;
104
+ var scrollContainer = (_a = scrollContainerRef.current) === null || _a === void 0 ? void 0 : _a.inner;
105
+ if (!contentWrapper || !scrollContainer)
106
+ return;
107
+ setHasScrollBar(scrollContainer.clientHeight < contentWrapper.scrollHeight);
108
+ }, 50);
109
+ }, [activeMenuItem, isOpened, isBeingTransitioned]);
110
+ useEffect(function () {
111
+ isDesktopQuery && setIsOpened(!isPinned);
112
+ }, [isPinned, isDesktopQuery]);
113
+ var handleIsOpened = function (newIsOpened, shouldSetState) {
114
+ if (newIsOpened === isOpened || !shouldSetState)
115
+ return;
116
+ setIsOpened(newIsOpened);
117
+ if (newIsOpened) {
118
+ onOpen === null || onOpen === void 0 ? void 0 : onOpen();
119
+ }
120
+ else {
121
+ onClose === null || onClose === void 0 ? void 0 : onClose();
122
+ }
123
+ };
124
+ useEffect(function () {
125
+ if (isDesktopQuery && !isPinned) {
126
+ setIsOpened(true);
127
+ setIsCollapsable(false);
128
+ }
129
+ if (isNarrowDesktop || isTablet || isMobile) {
130
+ setIsOpened(false);
131
+ }
132
+ isNarrowDesktop && setIsCollapsable(true);
133
+ if (isDesktopQuery && isPinned) {
134
+ setIsCollapsable(true);
135
+ if (navigation.current) {
136
+ navigation.current.isCollapsable = true;
137
+ }
138
+ }
139
+ }, [isNarrowDesktop, isDesktopQuery, isTablet, isMobile, isPinned]);
140
+ useEffect(function () {
141
+ var _a;
142
+ !activeItem && ((_a = navigation.current) === null || _a === void 0 ? void 0 : _a.switchActiveMenuItem(value));
143
+ }, [value, (_f = navigation.current) === null || _f === void 0 ? void 0 : _f.navigationTree]);
144
+ useEffect(function () {
145
+ var _a;
146
+ !value && ((_a = navigation.current) === null || _a === void 0 ? void 0 : _a.switchActiveMenuItem(activeItem));
147
+ }, [activeItem, (_g = navigation.current) === null || _g === void 0 ? void 0 : _g.navigationTree]);
148
+ useEffect(function () {
149
+ var _a;
150
+ (_a = navigation.current) === null || _a === void 0 ? void 0 : _a.switchIsSeparatedMenu(isSeparatedMenu);
151
+ }, [isSeparatedMenu]);
152
+ useEffect(function () {
153
+ handleIsOpened(isOpen, manual);
154
+ }, [isOpen]);
155
+ var showMinimizedRoot = function (newIsMinimized) {
156
+ if ((!isBeingTransitioned || isSeparatedMenu) && newIsMinimized === isOpened) {
157
+ setIsBeingTransitioned(true);
158
+ handleIsOpened(!newIsMinimized, !manual);
159
+ if (transitionTimer.current) {
160
+ clearTimeout(transitionTimer.current);
161
+ }
162
+ transitionTimer.current = setTimeout(function () {
163
+ setIsBeingTransitioned(false);
164
+ }, transitionDuration + 200);
165
+ }
166
+ };
167
+ var shouldNotOpenOnHover = (isSeparatedMenu && isSeparatedMenuShown && isNarrowDesktop && manual) || isTouchScreen;
168
+ var handleMouseEnter = function () {
169
+ if (shouldNotOpenOnHover) {
170
+ return;
171
+ }
172
+ setIsHovered(true);
173
+ if (isCollapsable && !isOpened && !isSeparatedMenuShown) {
174
+ isMouseOutside && showMinimizedRoot(false);
175
+ setIsMouseOutside(false);
176
+ }
177
+ };
178
+ var handleMouseLeave = function () {
179
+ if (shouldNotOpenOnHover) {
180
+ return;
181
+ }
182
+ setIsHovered(false);
183
+ if (isCollapsable) {
184
+ handleIsOpened(false, !manual);
185
+ if (!manual) {
186
+ setIsMouseOutside(true);
187
+ }
188
+ }
189
+ };
190
+ var showMinimizedRootForNarrowDesktop = function (e) {
191
+ if (!isSeparatedMenuShown || !isCollapsable || isTouchScreen)
192
+ return;
193
+ var relativeXCoordinate = e.clientX - leftPosition;
194
+ var sideMenuMinimizedWidth = parseInt(theme.sideMenuMinimizedWidth);
195
+ if (relativeXCoordinate <= sideMenuMinimizedWidth && mousePositionX >= sideMenuMinimizedWidth) {
196
+ showMinimizedRoot(false);
197
+ }
198
+ else if (relativeXCoordinate > parseInt(theme.sideMenuWidth)) {
199
+ showMinimizedRoot(true);
200
+ }
201
+ setMousePositionX(relativeXCoordinate);
202
+ };
203
+ var showMenu = function (newIsShown) {
204
+ if (!isTabletOrMobile)
205
+ return;
206
+ if (!isBeingTransitioned && newIsShown !== isOpened) {
207
+ setIsBeingTransitioned(true);
208
+ handleIsOpened(newIsShown, !manual);
209
+ if (transitionTimer.current) {
210
+ clearTimeout(transitionTimer.current);
211
+ }
212
+ transitionTimer.current = setTimeout(function () {
213
+ setIsBeingTransitioned(false);
214
+ }, burgerTransitionDuration);
215
+ }
216
+ };
217
+ var isSideMenuOverContent = (isCollapsable || isMobile || (isTablet && !isSeparatedMenuShown)) && isOpened;
218
+ var _1 = __read(useAnimateOnMount(!!isTabletOrMobile && !!isOpened, burgerTransitionDuration, {
219
+ opacity: LIGHT_THEME.sidePageBackingBgOpacity,
220
+ }, {
221
+ opacity: 0,
222
+ }), 2), shouldShowBackdrop = _1[0], backdropStyle = _1[1];
223
+ var isSideMenuOverflowing = (isTabletOrMobile || isCollapsable) && isOpened;
224
+ var setScrollBar = function () {
225
+ var isSeparatedMenuShownInMobile = isMobile && isSeparatedMenuShown;
226
+ if (isOpened && !isBeingTransitioned && !isSeparatedMenuShownInMobile) {
227
+ return isTouchScreen ? 'always' : showScrollBar;
228
+ }
229
+ return 'never';
230
+ };
231
+ var handleRightBorderClick = function () {
232
+ if (!isCollapsable) {
233
+ setIsOpened(false);
234
+ }
235
+ onPinnedValueChange === null || onPinnedValueChange === void 0 ? void 0 : onPinnedValueChange(!isCollapsable);
236
+ setIsCollapsable(!isCollapsable);
237
+ };
238
+ return (React.createElement(SideMenuContext.Provider, { value: {
239
+ isOpened: isOpened,
240
+ isCollapsable: isCollapsable,
241
+ toggleIsOpened: function () { return showMenu(!isOpened); },
242
+ setIsMinimized: showMinimizedRoot,
243
+ isBeingTransitioned: isBeingTransitioned,
244
+ isSeparatedMenu: isSeparatedMenu,
245
+ size: size,
246
+ isDesktop: isDesktopQuery,
247
+ isNarrowDesktop: isNarrowDesktop,
248
+ isTablet: isTablet,
249
+ isMobile: isMobile,
250
+ isTouchScreen: isTouchScreen,
251
+ setIsMouseOutside: setIsMouseOutside,
252
+ scrollState: scrollState,
253
+ setScrollState: setScrollState,
254
+ hasScrollBar: hasScrollBar,
255
+ setHasScrollBar: setHasScrollBar,
256
+ headerHeight: headerHeight,
257
+ setHeaderHeight: setHeaderHeight,
258
+ showScrollBar: showScrollBar,
259
+ sideMenuRef: sideMenuRef,
260
+ navigation: navigation.current,
261
+ } },
262
+ (isOpened || isBeingTransitioned) && isTabletOrMobile && React.createElement("div", { style: { height: headerHeight } }),
263
+ React.createElement(ZIndex, { priority: isSideMenuOverflowing ? 8 : 0, className: cx((_b = {},
264
+ _b[jsStylesForSideMenu.root()] = true,
265
+ _b[customStyles.rootForTabletsOrMobiles(headerHeight)] = isTabletOrMobile,
266
+ _b[jsStylesForSideMenu.shownRootForTabletsOrMobiles()] = isOpened && isTabletOrMobile,
267
+ _b[jsStylesForSideMenu.transitionedRootForTabletsOrMobiles()] = isBeingTransitioned && isTabletOrMobile,
268
+ _b[jsStylesForSideMenu.rootForNarrowDesktops(theme)] = isCollapsable,
269
+ _b[jsStylesForSideMenu.separatedRootForNarrowDesktops(theme)] = isSeparatedMenuShown && isCollapsable,
270
+ _b[jsStylesForSideMenu.separatedRootForTouchScreens(theme)] = isSeparatedMenuShown && isTouchScreen && isCollapsable,
271
+ _b[jsStylesForSideMenu.separatedRootForDesktops(theme)] = isSeparatedMenuShown && isDesktopQuery && !isCollapsable,
272
+ _b[jsStylesForSideMenu.separatedRootForTouchScreensForDesktops(theme)] = isDesktopQuery && isSeparatedMenuShown && isTouchScreen,
273
+ _b)) },
274
+ React.createElement(React.Fragment, null,
275
+ shouldShowBackdrop && React.createElement(Backdrop, { style: backdropStyle }),
276
+ React.createElement(RenderLayer, { onClickOutside: function () { return showMenu(false); } },
277
+ React.createElement("aside", __assign({ className: cx((_c = {},
278
+ _c[jsStylesForSideMenu.wrapper()] = true,
279
+ _c[jsStylesForSideMenu.wrapperIE()] = isIE11,
280
+ _c[jsStylesForSideMenu.wrapperWithShadow(theme)] = isSideMenuOverContent,
281
+ _c), className), "data-tid": SideMenuDataTids.root, ref: mergeRefs([sideMenuRef, ref]) }, rest, { onMouseEnter: handleMouseEnter, onMouseLeave: handleMouseLeave, onMouseMove: showMinimizedRootForNarrowDesktop }),
282
+ React.createElement("div", { className: cx((_d = {},
283
+ _d[jsStylesForSideMenu.container(theme)] = true,
284
+ _d[jsStylesForSideMenu.collapsedContainerForTabletsOrMobiles()] = !isOpened && isTabletOrMobile && !isBeingTransitioned,
285
+ _d[jsStylesForSideMenu.minimizedContainer(theme)] = !isOpened && !isTabletOrMobile,
286
+ _d[jsStylesForSideMenu.containerForTouchScreens(theme)] = isTouchScreen,
287
+ _d[jsStylesForSideMenu.separatedContainerForMobiles(theme)] = isMobile && isSeparatedMenuShown && (isOpened || isBeingTransitioned),
288
+ _d)) },
289
+ React.createElement(ScrollContainer, { onScrollStateChangeY: function (state) {
290
+ setScrollState === null || setScrollState === void 0 ? void 0 : setScrollState(state);
291
+ }, showScrollBar: setScrollBar(), ref: scrollContainerRef },
292
+ React.createElement("div", { className: cx((_e = {},
293
+ _e[jsStylesForSideMenu.contentWrapper(theme)] = true,
294
+ _e[jsStylesForSideMenu.contentWrapperForTouchScreens(theme)] = isTouchScreen,
295
+ _e[jsStylesForSideMenu.minimizedContentWrapper()] = !isOpened && !isTabletOrMobile,
296
+ _e)), ref: contentWrapperRef }, children))),
297
+ !disableSwipe && !disableCollapsing && isDesktopQuery && isOpened && (React.createElement(RightBorder, { onClick: handleRightBorderClick, showButton: isHovered }))))))));
298
+ });
299
+ SideMenuInner.displayName = 'SideMenu';
300
+ var STATIC_PROPS = {
301
+ Body: SideMenuBody,
302
+ Footer: SideMenuFooter,
303
+ Header: SideMenuHeader,
304
+ Item: SideMenuItem,
305
+ SubItem: SideMenuSubItem,
306
+ SubItemHeader: SideMenuSubItemHeader,
307
+ Avatar: SideMenuAvatar,
308
+ Organisations: SideMenuOrganisations,
309
+ Divider: SideMenuDivider,
310
+ Link: SideMenuLink,
311
+ SubLink: SideMenuSubLink,
312
+ Dropdown: SideMenuDropdown,
313
+ __KONTUR_REACT_UI__: 'SideMenu',
314
+ };
315
+ export var SideMenu = Object.assign(SideMenuInner, STATIC_PROPS);