@skbkontur/side-menu 0.9.5 → 0.10.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +19 -0
- package/README.md +90 -9
- package/hooks/useActiveState.js +1 -1
- package/hooks/useNumberOfTextLinesInItem.d.ts +12 -1
- package/hooks/useNumberOfTextLinesInItem.js +45 -30
- package/hooks/useNumberOfTextLinesInSubItem.d.ts +2 -1
- package/hooks/useNumberOfTextLinesInSubItem.js +2 -2
- package/hooks/useOpenedState.js +1 -1
- package/hooks/useOpenedSubElementState.js +1 -1
- package/internal/themes/SideMenuTheme.d.ts +110 -0
- package/internal/themes/SideMenuTheme.js +234 -0
- package/lib/theming/ThemeHelpers.d.ts +18 -0
- package/lib/theming/ThemeHelpers.js +66 -0
- package/lib/theming/ThemeTypes.d.ts +3 -0
- package/lib/theming/ThemeTypes.js +0 -0
- package/lib/utils/memo.d.ts +1 -0
- package/lib/utils/memo.js +9 -0
- package/{utils → lib/utils}/scripts.d.ts +1 -2
- package/{utils → lib/utils}/scripts.js +0 -8
- package/package.json +2 -2
- package/src/SideMenu/SideMenu.js +40 -36
- package/src/SideMenu/SideMenu.styles.d.ts +12 -14
- package/src/SideMenu/SideMenu.styles.js +29 -31
- package/src/SideMenuAvatar/SideMenuAvatar.md +7 -0
- package/src/SideMenuBody/SideMenuBody.d.ts +1 -2
- package/src/SideMenuBody/SideMenuBody.js +16 -9
- package/src/SideMenuBody/SideMenuBody.md +7 -0
- package/src/SideMenuBody/SideMenuBody.styles.d.ts +2 -1
- package/src/SideMenuBody/SideMenuBody.styles.js +4 -4
- package/src/SideMenuContext.d.ts +3 -2
- package/src/SideMenuDivider/SideMenuDivider.md +7 -0
- package/src/SideMenuDivider/SideMenuDivider.styles.js +2 -1
- package/src/SideMenuDropdown/SideMenuDropdown.js +9 -8
- package/src/SideMenuDropdown/SideMenuDropdown.styles.d.ts +2 -1
- package/src/SideMenuDropdown/SideMenuDropdown.styles.js +4 -3
- package/src/SideMenuFooter/SideMenuFooter.js +6 -3
- package/src/SideMenuFooter/SideMenuFooter.md +8 -0
- package/src/SideMenuFooter/SideMenuFooter.styles.d.ts +3 -2
- package/src/SideMenuFooter/SideMenuFooter.styles.js +6 -6
- package/src/SideMenuHeader/SideMenuHeader.js +15 -6
- package/src/SideMenuHeader/SideMenuHeader.md +16 -0
- package/src/SideMenuHeader/SideMenuHeader.styles.d.ts +5 -5
- package/src/SideMenuHeader/SideMenuHeader.styles.js +12 -15
- package/src/SideMenuItem/SideMenuItem.md +63 -0
- package/src/SideMenuSubItemHeader/SideMenuSubItemHeader.js +7 -1
- package/src/SideMenuSubItemHeader/SideMenuSubItemHeader.md +7 -0
- package/src/SideMenuSubItemHeader/SideMenuSubItemHeader.styles.d.ts +2 -1
- package/src/SideMenuSubItemHeader/SideMenuSubItemHeader.styles.js +4 -3
- package/src/internal/Backdrop.styles.js +1 -1
- package/src/internal/Burger.js +4 -1
- package/src/internal/Burger.styles.d.ts +2 -1
- package/src/internal/Burger.styles.js +4 -3
- package/src/internal/ClickableElement.js +8 -5
- package/src/internal/ClickableElement.styles.d.ts +6 -5
- package/src/internal/ClickableElement.styles.js +13 -11
- package/src/internal/InnerBody.js +5 -2
- package/src/internal/InnerBody.styles.d.ts +2 -1
- package/src/internal/InnerBody.styles.js +4 -3
- package/src/internal/InnerSubMenu.js +1 -1
- package/src/internal/ItemContent/Avatar.js +5 -2
- package/src/internal/ItemContent/Avatar.styles.d.ts +2 -1
- package/src/internal/ItemContent/Avatar.styles.js +4 -3
- package/src/internal/ItemContent/Caption.js +9 -6
- package/src/internal/ItemContent/Caption.styles.d.ts +9 -6
- package/src/internal/ItemContent/Caption.styles.js +17 -14
- package/src/internal/ItemContent/Icon.js +19 -9
- package/src/internal/ItemContent/Icon.styles.d.ts +7 -6
- package/src/internal/ItemContent/Icon.styles.js +14 -13
- package/src/internal/ItemContent/ItemContent.js +36 -12
- package/src/internal/ItemContent/ItemContent.styles.d.ts +9 -9
- package/src/internal/ItemContent/ItemContent.styles.js +18 -22
- package/src/internal/ItemContent/Marker.js +6 -3
- package/src/internal/ItemContent/Marker.styles.d.ts +3 -2
- package/src/internal/ItemContent/Marker.styles.js +6 -5
- package/src/internal/NestedMenu.js +6 -3
- package/src/internal/NestedMenu.styles.d.ts +2 -1
- package/src/internal/NestedMenu.styles.js +4 -3
- package/src/internal/RightBorder.js +10 -9
- package/src/internal/RightBorder.styles.d.ts +3 -4
- package/src/internal/RightBorder.styles.js +7 -7
- package/src/internal/SeparatedSubMenu.js +13 -10
- package/src/internal/SeparatedSubMenu.styles.d.ts +9 -6
- package/src/internal/SeparatedSubMenu.styles.js +18 -17
- package/src/internal/SideMenuLogotype.js +14 -10
- package/src/internal/SideMenuLogotype.styles.d.ts +6 -3
- package/src/internal/SideMenuLogotype.styles.js +11 -10
|
@@ -1,9 +1,12 @@
|
|
|
1
|
+
import { SideMenuTheme } from '../../lib/theming/ThemeTypes';
|
|
2
|
+
export declare const customStyles: {
|
|
3
|
+
rootForMobiles(headerHeight?: number | undefined): string;
|
|
4
|
+
};
|
|
1
5
|
export declare const jsStylesForSeparatedSubMenu: {
|
|
2
|
-
root(): string;
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
contentWrapper(): string;
|
|
6
|
+
root(t: SideMenuTheme): string;
|
|
7
|
+
rootWithoutOverlayForNarrowDesktop(t: SideMenuTheme): string;
|
|
8
|
+
rootWithoutOverlay(t: SideMenuTheme): string;
|
|
9
|
+
rootWithShadow(t: SideMenuTheme): string;
|
|
10
|
+
contentWrapper(t: SideMenuTheme): string;
|
|
8
11
|
contentWrapperForMobiles(): string;
|
|
9
12
|
};
|
|
@@ -1,28 +1,29 @@
|
|
|
1
1
|
import { __makeTemplateObject } from "tslib";
|
|
2
|
-
import { css
|
|
3
|
-
import {
|
|
2
|
+
import { css } from '@skbkontur/react-ui/lib/theming/Emotion';
|
|
3
|
+
import { memoizeStyle } from '../../lib/theming/ThemeHelpers';
|
|
4
4
|
var styles = {
|
|
5
|
-
root: function () {
|
|
6
|
-
return css(templateObject_1 || (templateObject_1 = __makeTemplateObject(["\n position: absolute;\n top: 0;\n background:
|
|
5
|
+
root: function (t) {
|
|
6
|
+
return css(templateObject_1 || (templateObject_1 = __makeTemplateObject(["\n position: absolute;\n top: 0;\n background: ", ";\n left: 100%;\n justify-content: flex-start;\n border-right: 1px solid ", ";\n "], ["\n position: absolute;\n top: 0;\n background: ", ";\n left: 100%;\n justify-content: flex-start;\n border-right: 1px solid ", ";\n "])), t.sideMenuSeparatedSubMenuBgColor, t.sideMenuSeparatedSubMenuBorderRightColor);
|
|
7
7
|
},
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
return css(templateObject_2 || (templateObject_2 = __makeTemplateObject(["\n height: calc(100vh - ", ");\n left: 0;\n top: ", ";\n "], ["\n height: calc(100vh - ", ");\n left: 0;\n top: ", ";\n "])), headerHeight, headerHeight);
|
|
8
|
+
rootWithoutOverlayForNarrowDesktop: function (t) {
|
|
9
|
+
return css(templateObject_2 || (templateObject_2 = __makeTemplateObject(["\n left: ", ";\n z-index: -1;\n "], ["\n left: ", ";\n z-index: -1;\n "])), t.sideMenuMinimizedWidth);
|
|
11
10
|
},
|
|
12
|
-
|
|
13
|
-
return css(templateObject_3 || (templateObject_3 = __makeTemplateObject(["\n left: ", ";\n z-index: -1;\n "], ["\n left: ", ";\n z-index: -1;\n "])),
|
|
11
|
+
rootWithoutOverlay: function (t) {
|
|
12
|
+
return css(templateObject_3 || (templateObject_3 = __makeTemplateObject(["\n left: ", ";\n z-index: -1;\n "], ["\n left: ", ";\n z-index: -1;\n "])), t.sideMenuWidth);
|
|
14
13
|
},
|
|
15
|
-
|
|
16
|
-
return css(templateObject_4 || (templateObject_4 = __makeTemplateObject(["\n
|
|
14
|
+
rootWithShadow: function (t) {
|
|
15
|
+
return css(templateObject_4 || (templateObject_4 = __makeTemplateObject(["\n box-shadow: ", ";\n clip-path: inset(0 -", " 0 0);\n border-right: none;\n "], ["\n box-shadow: ", ";\n clip-path: inset(0 -", " 0 0);\n border-right: none;\n "])), t.sideMenuBoxShadow, t.sideMenuBoxShadowBlurRadius);
|
|
17
16
|
},
|
|
18
|
-
|
|
19
|
-
return css(templateObject_5 || (templateObject_5 = __makeTemplateObject(["\n
|
|
20
|
-
},
|
|
21
|
-
contentWrapper: function () {
|
|
22
|
-
return css(templateObject_6 || (templateObject_6 = __makeTemplateObject(["\n padding: 24px 16px;\n "], ["\n padding: 24px 16px;\n "])));
|
|
17
|
+
contentWrapper: function (t) {
|
|
18
|
+
return css(templateObject_5 || (templateObject_5 = __makeTemplateObject(["\n padding: ", " ", ";\n "], ["\n padding: ", " ", ";\n "])), t.sideMenuSeparatedSubMenuPaddingY, t.sideMenuSeparatedSubMenuPaddingX);
|
|
23
19
|
},
|
|
24
20
|
contentWrapperForMobiles: function () {
|
|
25
|
-
return css(
|
|
21
|
+
return css(templateObject_6 || (templateObject_6 = __makeTemplateObject(["\n padding-top: 0;\n "], ["\n padding-top: 0;\n "])));
|
|
22
|
+
},
|
|
23
|
+
};
|
|
24
|
+
export var customStyles = {
|
|
25
|
+
rootForMobiles: function (headerHeight) {
|
|
26
|
+
return css(templateObject_7 || (templateObject_7 = __makeTemplateObject(["\n height: calc(100vh - ", "px);\n left: 0;\n top: ", "px;\n "], ["\n height: calc(100vh - ", "px);\n left: 0;\n top: ", "px;\n "])), headerHeight, headerHeight);
|
|
26
27
|
},
|
|
27
28
|
};
|
|
28
29
|
export var jsStylesForSeparatedSubMenu = memoizeStyle(styles);
|
|
@@ -1,10 +1,12 @@
|
|
|
1
1
|
import { __assign, __rest } from "tslib";
|
|
2
2
|
import React, { forwardRef, useContext, useEffect, useRef, useState } from 'react';
|
|
3
3
|
import { Logotype } from '@skbkontur/react-ui-addons/components/Logotype';
|
|
4
|
-
import { jsStyles } from './SideMenuLogotype.styles';
|
|
4
|
+
import { jsStyles, sideMenuLogotypeIconSize } from './SideMenuLogotype.styles';
|
|
5
5
|
import { SideMenuContext } from '../SideMenuContext';
|
|
6
6
|
import { Burger } from './Burger';
|
|
7
7
|
import { cx } from '@skbkontur/react-ui/lib/theming/Emotion';
|
|
8
|
+
import { getSideMenuTheme } from '../../lib/theming/ThemeHelpers';
|
|
9
|
+
import { ThemeContext } from '@skbkontur/react-ui';
|
|
8
10
|
/**
|
|
9
11
|
* Логотип
|
|
10
12
|
*
|
|
@@ -14,14 +16,16 @@ var SideMenuLogotype = forwardRef(function (_a, ref) {
|
|
|
14
16
|
var _b, _c;
|
|
15
17
|
var productLogo = _a.productLogo, withWidget = _a.withWidget, konturLogo = _a.konturLogo, iconUrl = _a.iconUrl, rest = __rest(_a, ["productLogo", "withWidget", "konturLogo", "iconUrl"]);
|
|
16
18
|
var context = useContext(SideMenuContext);
|
|
19
|
+
var theme = getSideMenuTheme(useContext(ThemeContext));
|
|
17
20
|
var refLogotype = useRef(null);
|
|
18
21
|
var _d = useState(28), size = _d[0], setSize = _d[1];
|
|
19
22
|
useEffect(function () {
|
|
20
|
-
var _a, _b
|
|
21
|
-
(_a =
|
|
22
|
-
var
|
|
23
|
-
|
|
24
|
-
|
|
23
|
+
var _a, _b;
|
|
24
|
+
var logotypeWidth = (_b = (_a = refLogotype.current) === null || _a === void 0 ? void 0 : _a.logotypeRef) === null || _b === void 0 ? void 0 : _b.clientWidth;
|
|
25
|
+
var maxWidth = parseInt(theme.sideMenuWidth) -
|
|
26
|
+
2 * parseInt(theme.sideMenuMarginX) -
|
|
27
|
+
parseInt(theme.sideMenuLogotypePaddingLeft);
|
|
28
|
+
if (logotypeWidth && logotypeWidth > maxWidth) {
|
|
25
29
|
setSize(24);
|
|
26
30
|
}
|
|
27
31
|
}, []);
|
|
@@ -42,7 +46,7 @@ var SideMenuLogotype = forwardRef(function (_a, ref) {
|
|
|
42
46
|
};
|
|
43
47
|
var productName = getProductName();
|
|
44
48
|
var getStaticIconPath = function () {
|
|
45
|
-
return "https://s.kontur.ru/common-v2/icons-products/" + productName + "/" + productName + "-
|
|
49
|
+
return "https://s.kontur.ru/common-v2/icons-products/" + productName + "/" + productName + "-" + parseInt(sideMenuLogotypeIconSize) + ".svg";
|
|
46
50
|
};
|
|
47
51
|
var getWidget = function (withWidget, isTouchScreen, showWidget) {
|
|
48
52
|
if (withWidget !== undefined) {
|
|
@@ -55,12 +59,12 @@ var SideMenuLogotype = forwardRef(function (_a, ref) {
|
|
|
55
59
|
};
|
|
56
60
|
return (React.createElement("div", { className: jsStyles.root(), ref: ref },
|
|
57
61
|
!context.isMobile && !context.isTablet && (React.createElement("img", { className: cx((_b = {},
|
|
58
|
-
_b[jsStyles.iconHidden()] = true,
|
|
62
|
+
_b[jsStyles.iconHidden(theme)] = true,
|
|
59
63
|
_b[jsStyles.icon()] = context.isMinimized,
|
|
60
64
|
_b)), src: iconUrl || getStaticIconPath(), alt: productName })),
|
|
61
65
|
React.createElement("div", { className: cx((_c = {},
|
|
62
|
-
_c[jsStyles.logoWrapper()] = true,
|
|
63
|
-
_c[jsStyles.logoWrapperForTabletsOrMobiles()] = context.isMobile || context.isTablet,
|
|
66
|
+
_c[jsStyles.logoWrapper(theme)] = true,
|
|
67
|
+
_c[jsStyles.logoWrapperForTabletsOrMobiles(theme)] = context.isMobile || context.isTablet,
|
|
64
68
|
_c[jsStyles.logoWrapperHidden()] = context.isMinimized,
|
|
65
69
|
_c)) },
|
|
66
70
|
(context.isTablet || context.isMobile) && React.createElement(Burger, null),
|
|
@@ -1,8 +1,11 @@
|
|
|
1
|
+
import { SideMenuTheme } from '../../lib/theming/ThemeTypes';
|
|
2
|
+
export declare const sideMenuLogotypeIconSize = "32px";
|
|
3
|
+
export declare const sideMenuLogotypeGapBetweenIconAndLogo = "50px";
|
|
1
4
|
export declare const jsStyles: {
|
|
2
5
|
root(): string;
|
|
3
6
|
icon(): string;
|
|
4
|
-
iconHidden(): string;
|
|
5
|
-
logoWrapper(): string;
|
|
6
|
-
logoWrapperForTabletsOrMobiles(): string;
|
|
7
|
+
iconHidden(t: SideMenuTheme): string;
|
|
8
|
+
logoWrapper(t: SideMenuTheme): string;
|
|
9
|
+
logoWrapperForTabletsOrMobiles(t: SideMenuTheme): string;
|
|
7
10
|
logoWrapperHidden(): string;
|
|
8
11
|
};
|
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
import { __makeTemplateObject } from "tslib";
|
|
2
|
-
import { css
|
|
2
|
+
import { css } from '@skbkontur/react-ui/lib/theming/Emotion';
|
|
3
3
|
import { transitionDuration } from '../SideMenu/SideMenu';
|
|
4
|
-
|
|
5
|
-
var
|
|
4
|
+
import { memoizeStyle } from '../../lib/theming/ThemeHelpers';
|
|
5
|
+
export var sideMenuLogotypeIconSize = '32px';
|
|
6
|
+
export var sideMenuLogotypeGapBetweenIconAndLogo = '50px';
|
|
6
7
|
var styles = {
|
|
7
8
|
root: function () {
|
|
8
9
|
return css(templateObject_1 || (templateObject_1 = __makeTemplateObject(["\n display: flex;\n "], ["\n display: flex;\n "])));
|
|
@@ -10,17 +11,17 @@ var styles = {
|
|
|
10
11
|
icon: function () {
|
|
11
12
|
return css(templateObject_2 || (templateObject_2 = __makeTemplateObject(["\n left: 0;\n opacity: 1;\n "], ["\n left: 0;\n opacity: 1;\n "])));
|
|
12
13
|
},
|
|
13
|
-
iconHidden: function () {
|
|
14
|
-
return css(templateObject_3 || (templateObject_3 = __makeTemplateObject(["\n position: relative;\n left: -", "
|
|
14
|
+
iconHidden: function (t) {
|
|
15
|
+
return css(templateObject_3 || (templateObject_3 = __makeTemplateObject(["\n position: relative;\n left: -", ";\n display: block;\n padding-left: ", ";\n opacity: 0;\n transition: all ", "ms ease-out;\n "], ["\n position: relative;\n left: -", ";\n display: block;\n padding-left: ", ";\n opacity: 0;\n transition: all ", "ms ease-out;\n "])), sideMenuLogotypeGapBetweenIconAndLogo, t.sideMenuLogotypeHiddenIconPaddingLeft, transitionDuration);
|
|
15
16
|
},
|
|
16
|
-
logoWrapper: function () {
|
|
17
|
-
return css(templateObject_4 || (templateObject_4 = __makeTemplateObject(["\n position: relative;\n left: -", "
|
|
17
|
+
logoWrapper: function (t) {
|
|
18
|
+
return css(templateObject_4 || (templateObject_4 = __makeTemplateObject(["\n position: relative;\n left: -", ";\n padding-top: ", ";\n padding-bottom: ", ";\n padding-left: ", ";\n display: flex;\n opacity: 1;\n transition: all ", "ms ease-out;\n "], ["\n position: relative;\n left: -", ";\n padding-top: ", ";\n padding-bottom: ", ";\n padding-left: ", ";\n display: flex;\n opacity: 1;\n transition: all ", "ms ease-out;\n "])), sideMenuLogotypeIconSize, t.sideMenuLogotypePaddingTop, t.sideMenuLogotypePaddingBottom, t.sideMenuLogotypePaddingLeft, transitionDuration);
|
|
18
19
|
},
|
|
19
|
-
logoWrapperForTabletsOrMobiles: function () {
|
|
20
|
-
return css(templateObject_5 || (templateObject_5 = __makeTemplateObject(["\n padding-top:
|
|
20
|
+
logoWrapperForTabletsOrMobiles: function (t) {
|
|
21
|
+
return css(templateObject_5 || (templateObject_5 = __makeTemplateObject(["\n padding-top: ", ";\n padding-bottom: ", ";\n left: 0;\n "], ["\n padding-top: ", ";\n padding-bottom: ", ";\n left: 0;\n "])), t.sideMenuLogotypePaddingYForTouchScreens, t.sideMenuLogotypePaddingYForTouchScreens);
|
|
21
22
|
},
|
|
22
23
|
logoWrapperHidden: function () {
|
|
23
|
-
return css(templateObject_6 || (templateObject_6 = __makeTemplateObject(["\n left: ", "px;\n opacity: 0;\n "], ["\n left: ", "px;\n opacity: 0;\n "])),
|
|
24
|
+
return css(templateObject_6 || (templateObject_6 = __makeTemplateObject(["\n left: ", "px;\n opacity: 0;\n "], ["\n left: ", "px;\n opacity: 0;\n "])), parseInt(sideMenuLogotypeGapBetweenIconAndLogo) - parseInt(sideMenuLogotypeIconSize));
|
|
24
25
|
},
|
|
25
26
|
};
|
|
26
27
|
export var jsStyles = memoizeStyle(styles);
|