@skbkontur/side-menu 3.3.2 → 3.3.4
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 +22 -0
- package/SideMenuDataTids.js +1 -4
- package/hooks/useAnimateOnMount.js +6 -9
- package/hooks/useMemoIcon.js +12 -18
- package/index.js +14 -17
- package/internal/themes/SideMenuTheme.js +10 -15
- package/lib/theming/ThemeHelpers.js +14 -20
- package/lib/theming/ThemeTypes.js +1 -2
- package/lib/utils/memo.js +1 -5
- package/lib/utils/scripts.js +5 -11
- package/package.json +3 -3
- package/src/Navigation.js +18 -21
- package/src/SideMenu/SideMenu.js +119 -120
- package/src/SideMenu/SideMenu.styles.js +28 -31
- package/src/SideMenuAvatar/SideMenuAvatar.d.ts +1 -1
- package/src/SideMenuAvatar/SideMenuAvatar.js +11 -14
- package/src/SideMenuBody/SideMenuBody.js +18 -21
- package/src/SideMenuBody/SideMenuBody.styles.js +6 -9
- package/src/SideMenuContext.d.ts +1 -1
- package/src/SideMenuContext.js +2 -5
- package/src/SideMenuDivider/SideMenuDivider.js +11 -14
- package/src/SideMenuDivider/SideMenuDivider.styles.js +5 -8
- package/src/SideMenuDropdown/SideMenuDropdown.d.ts +1 -1
- package/src/SideMenuDropdown/SideMenuDropdown.js +22 -24
- package/src/SideMenuDropdown/SideMenuDropdown.styles.js +9 -12
- package/src/SideMenuFooter/SideMenuFooter.js +21 -24
- package/src/SideMenuFooter/SideMenuFooter.styles.js +7 -10
- package/src/SideMenuHeader/SideMenuHeader.js +26 -29
- package/src/SideMenuHeader/SideMenuHeader.styles.js +9 -12
- package/src/SideMenuItem/SideMenuItem.js +7 -10
- package/src/SideMenuLink/SideMenuLink.js +9 -12
- package/src/SideMenuLink/SideMenuLink.styles.js +4 -7
- package/src/SideMenuNotifications/BellWidget.js +41 -45
- package/src/SideMenuNotifications/BellWidgetError.js +15 -20
- package/src/SideMenuNotifications/BellWidgetView.styles.js +11 -14
- package/src/SideMenuNotifications/SideMenuNotifications.js +23 -26
- package/src/SideMenuNotifications/utils/getMarker.js +1 -4
- package/src/SideMenuNotifications/utils/getNotificationsErrorMessages.js +1 -5
- package/src/SideMenuOrganisations/SideMenuOrganisations.js +7 -10
- package/src/SideMenuSubItem/SideMenuSubItem.js +8 -11
- package/src/SideMenuSubItemHeader/SideMenuSubItemHeader.js +15 -18
- package/src/SideMenuSubItemHeader/SideMenuSubItemHeader.styles.js +6 -9
- package/src/SideMenuSubLink/SideMenuSubLink.js +7 -10
- package/src/Tree.js +9 -12
- package/src/internal/BackButton.js +10 -14
- package/src/internal/Backdrop.js +11 -15
- package/src/internal/Backdrop.styles.js +5 -8
- package/src/internal/Burger.js +12 -17
- package/src/internal/Burger.styles.js +6 -9
- package/src/internal/ClickableElement.js +44 -47
- package/src/internal/ClickableElement.styles.js +12 -15
- package/src/internal/InnerSubMenu.js +10 -14
- package/src/internal/ItemContent/Caption.js +31 -34
- package/src/internal/ItemContent/Caption.styles.js +20 -23
- package/src/internal/ItemContent/Icon.js +20 -25
- package/src/internal/ItemContent/Icon.styles.js +11 -14
- package/src/internal/ItemContent/ItemContent.js +33 -36
- package/src/internal/ItemContent/ItemContent.styles.js +15 -18
- package/src/internal/ItemContent/Marker.js +16 -21
- package/src/internal/ItemContent/Marker.styles.js +12 -15
- package/src/internal/NestedMenu.js +15 -19
- package/src/internal/NestedMenu.styles.js +5 -8
- package/src/internal/RightBorder.js +19 -22
- package/src/internal/RightBorder.styles.js +6 -9
- package/src/internal/SeparatedSubMenu.js +36 -40
- package/src/internal/SeparatedSubMenu.styles.js +13 -16
- package/src/internal/SideMenuLogotype.js +31 -34
- package/src/internal/SideMenuLogotype.styles.js +14 -17
- package/src/internal/SubMenu.js +11 -15
package/CHANGELOG.md
CHANGED
|
@@ -3,6 +3,28 @@
|
|
|
3
3
|
All notable changes to this project will be documented in this file.
|
|
4
4
|
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
|
|
5
5
|
|
|
6
|
+
## [3.3.4](https://git.skbkontur.ru/ui/ui-parking-2/compare/@skbkontur/side-menu@3.3.3...@skbkontur/side-menu@3.3.4) (2025-09-04)
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
### Bug Fixes
|
|
10
|
+
|
|
11
|
+
* **SideMenu:** fix regress build ([e6300f5](https://git.skbkontur.ru/ui/ui-parking-2/commits/e6300f54713aed74cc8db724208444e9fad0da42))
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
|
|
15
|
+
|
|
16
|
+
|
|
17
|
+
## [3.3.3](https://git.skbkontur.ru/ui/ui-parking-2/compare/@skbkontur/side-menu@3.3.2...@skbkontur/side-menu@3.3.3) (2025-08-08)
|
|
18
|
+
|
|
19
|
+
|
|
20
|
+
### Bug Fixes
|
|
21
|
+
|
|
22
|
+
* **SideMenuAvatar:** add prop menuWidth ([29a18fd](https://git.skbkontur.ru/ui/ui-parking-2/commits/29a18fd07580028e33ae09bb68cf6c4d8439a1c6))
|
|
23
|
+
|
|
24
|
+
|
|
25
|
+
|
|
26
|
+
|
|
27
|
+
|
|
6
28
|
## [3.3.2](https://git.skbkontur.ru/ui/ui-parking-2/compare/@skbkontur/side-menu@3.3.1...@skbkontur/side-menu@3.3.2) (2025-08-08)
|
|
7
29
|
|
|
8
30
|
**Note:** Version bump only for package @skbkontur/side-menu
|
package/SideMenuDataTids.js
CHANGED
|
@@ -1,7 +1,4 @@
|
|
|
1
|
-
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.SideMenuDataTids = void 0;
|
|
4
|
-
exports.SideMenuDataTids = {
|
|
1
|
+
export var SideMenuDataTids = {
|
|
5
2
|
root: 'SideMenu__root',
|
|
6
3
|
burger: 'SideMenu__burger',
|
|
7
4
|
backButton: 'SideMenu__backButton',
|
|
@@ -1,12 +1,9 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
var
|
|
5
|
-
var
|
|
6
|
-
function
|
|
7
|
-
var _a = tslib_1.__read((0, react_1.useState)(isMounted ? mountStyles : unmountStyles), 2), style = _a[0], setStyle = _a[1];
|
|
8
|
-
var _b = tslib_1.__read((0, react_1.useState)(isMounted), 2), shouldShowComponent = _b[0], setShouldShowComponent = _b[1];
|
|
9
|
-
(0, react_1.useEffect)(function () {
|
|
1
|
+
import { __read } from "tslib";
|
|
2
|
+
import { useEffect, useState } from 'react';
|
|
3
|
+
export function useAnimateOnMount(isMounted, delayTime, mountStyles, unmountStyles) {
|
|
4
|
+
var _a = __read(useState(isMounted ? mountStyles : unmountStyles), 2), style = _a[0], setStyle = _a[1];
|
|
5
|
+
var _b = __read(useState(isMounted), 2), shouldShowComponent = _b[0], setShouldShowComponent = _b[1];
|
|
6
|
+
useEffect(function () {
|
|
10
7
|
var timeoutId;
|
|
11
8
|
if (isMounted) {
|
|
12
9
|
setShouldShowComponent(true);
|
package/hooks/useMemoIcon.js
CHANGED
|
@@ -1,29 +1,23 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
var
|
|
6
|
-
var ArrowCDownIcon16Regular_1 = require("@skbkontur/icons/icons/ArrowCDownIcon/ArrowCDownIcon16Regular");
|
|
7
|
-
var ArrowCRightIcon16Regular_1 = require("@skbkontur/icons/icons/ArrowCRightIcon/ArrowCRightIcon16Regular");
|
|
8
|
-
var ArrowCLeftIcon16Regular_1 = require("@skbkontur/icons/icons/ArrowCLeftIcon/ArrowCLeftIcon16Regular");
|
|
9
|
-
var useMemoIcon = function (children, _a) {
|
|
1
|
+
import React, { useMemo } from 'react';
|
|
2
|
+
import { ArrowCDownIcon16Regular } from '@skbkontur/icons/icons/ArrowCDownIcon/ArrowCDownIcon16Regular';
|
|
3
|
+
import { ArrowCRightIcon16Regular } from '@skbkontur/icons/icons/ArrowCRightIcon/ArrowCRightIcon16Regular';
|
|
4
|
+
import { ArrowCLeftIcon16Regular } from '@skbkontur/icons/icons/ArrowCLeftIcon/ArrowCLeftIcon16Regular';
|
|
5
|
+
export var useMemoIcon = function (children, _a) {
|
|
10
6
|
var isOpened = _a.isOpened, onClick = _a.onClick;
|
|
11
|
-
return
|
|
7
|
+
return useMemo(function () {
|
|
12
8
|
if (children) {
|
|
13
9
|
if (isOpened) {
|
|
14
|
-
return
|
|
10
|
+
return React.createElement(ArrowCDownIcon16Regular, { onClick: onClick });
|
|
15
11
|
}
|
|
16
|
-
return
|
|
12
|
+
return React.createElement(ArrowCRightIcon16Regular, null);
|
|
17
13
|
}
|
|
18
14
|
}, [isOpened, children]);
|
|
19
15
|
};
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
return (0, react_1.useMemo)(function () {
|
|
16
|
+
export var useMemoBorderIcon = function (isCollapsed) {
|
|
17
|
+
return useMemo(function () {
|
|
23
18
|
if (isCollapsed) {
|
|
24
|
-
return
|
|
19
|
+
return React.createElement(ArrowCRightIcon16Regular, null);
|
|
25
20
|
}
|
|
26
|
-
return
|
|
21
|
+
return React.createElement(ArrowCLeftIcon16Regular, null);
|
|
27
22
|
}, [isCollapsed]);
|
|
28
23
|
};
|
|
29
|
-
exports.useMemoBorderIcon = useMemoBorderIcon;
|
package/index.js
CHANGED
|
@@ -1,17 +1,14 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
tslib_1.__exportStar(require("./src/SideMenuLink/SideMenuLink"), exports);
|
|
16
|
-
tslib_1.__exportStar(require("./src/SideMenuSubLink/SideMenuSubLink"), exports);
|
|
17
|
-
tslib_1.__exportStar(require("./lib/theming/ThemeTypes"), exports);
|
|
1
|
+
export * from './src/SideMenu/SideMenu';
|
|
2
|
+
export * from './src/SideMenuOrganisations/SideMenuOrganisations';
|
|
3
|
+
export * from './src/SideMenuBody/SideMenuBody';
|
|
4
|
+
export * from './src/SideMenuFooter/SideMenuFooter';
|
|
5
|
+
export * from './src/SideMenuHeader/SideMenuHeader';
|
|
6
|
+
export * from './src/SideMenuItem/SideMenuItem';
|
|
7
|
+
export * from './src/SideMenuAvatar/SideMenuAvatar';
|
|
8
|
+
export * from './src/SideMenuSubItem/SideMenuSubItem';
|
|
9
|
+
export * from './src/SideMenuDivider/SideMenuDivider';
|
|
10
|
+
export * from './src/SideMenuSubItemHeader/SideMenuSubItemHeader';
|
|
11
|
+
export * from './src/SideMenuDropdown/SideMenuDropdown';
|
|
12
|
+
export * from './src/SideMenuLink/SideMenuLink';
|
|
13
|
+
export * from './src/SideMenuSubLink/SideMenuSubLink';
|
|
14
|
+
export * from './lib/theming/ThemeTypes';
|
|
@@ -1,10 +1,7 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
exports.SideMenuThemeInternal = exports.isSideMenuTheme = exports.markAsSideMenuTheme = exports.REACT_UI_SIDE_MENU_THEME_KEY = exports.SideMenuTheme = void 0;
|
|
4
|
-
var tslib_1 = require("tslib");
|
|
5
|
-
var ThemeHelpers_1 = require("@skbkontur/react-ui/lib/theming/ThemeHelpers");
|
|
1
|
+
import { __extends } from "tslib";
|
|
2
|
+
import { exposeGetters } from '@skbkontur/react-ui/lib/theming/ThemeHelpers';
|
|
6
3
|
var SideMenuTheme = /** @class */ (function (_super) {
|
|
7
|
-
|
|
4
|
+
__extends(SideMenuTheme, _super);
|
|
8
5
|
function SideMenuTheme() {
|
|
9
6
|
return _super !== null && _super.apply(this, arguments) || this;
|
|
10
7
|
}
|
|
@@ -280,12 +277,12 @@ var SideMenuTheme = /** @class */ (function (_super) {
|
|
|
280
277
|
}
|
|
281
278
|
return class_1;
|
|
282
279
|
}())));
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
var markAsSideMenuTheme = function (theme) {
|
|
280
|
+
export { SideMenuTheme };
|
|
281
|
+
export var REACT_UI_SIDE_MENU_THEME_KEY = '__IS_REACT_UI_SIDE_MENU_THEME__';
|
|
282
|
+
export var markAsSideMenuTheme = function (theme) {
|
|
286
283
|
var _a;
|
|
287
284
|
return Object.create(theme, (_a = {},
|
|
288
|
-
_a[
|
|
285
|
+
_a[REACT_UI_SIDE_MENU_THEME_KEY] = {
|
|
289
286
|
value: true,
|
|
290
287
|
writable: false,
|
|
291
288
|
enumerable: false,
|
|
@@ -293,11 +290,9 @@ var markAsSideMenuTheme = function (theme) {
|
|
|
293
290
|
},
|
|
294
291
|
_a));
|
|
295
292
|
};
|
|
296
|
-
|
|
297
|
-
var isSideMenuTheme = function (theme) {
|
|
293
|
+
export var isSideMenuTheme = function (theme) {
|
|
298
294
|
// eslint-disable-next-line @typescript-eslint/ban-ts-comment
|
|
299
295
|
//@ts-ignore
|
|
300
|
-
return theme[
|
|
296
|
+
return theme[REACT_UI_SIDE_MENU_THEME_KEY] === true;
|
|
301
297
|
};
|
|
302
|
-
|
|
303
|
-
exports.SideMenuThemeInternal = (0, ThemeHelpers_1.exposeGetters)(SideMenuTheme);
|
|
298
|
+
export var SideMenuThemeInternal = exposeGetters(SideMenuTheme);
|
|
@@ -1,10 +1,7 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
var utils_1 = require("@skbkontur/react-ui/lib/utils");
|
|
6
|
-
var memo_1 = require("../utils/memo");
|
|
7
|
-
var SideMenuTheme_1 = require("../../internal/themes/SideMenuTheme");
|
|
1
|
+
import { __values } from "tslib";
|
|
2
|
+
import { isFunction } from '@skbkontur/react-ui/lib/utils';
|
|
3
|
+
import { memo } from '../utils/memo';
|
|
4
|
+
import { SideMenuThemeInternal, isSideMenuTheme, markAsSideMenuTheme } from '../../internal/themes/SideMenuTheme';
|
|
8
5
|
/**
|
|
9
6
|
* Creates SideMenuTheme out of ReactUI's Theme.
|
|
10
7
|
*
|
|
@@ -15,12 +12,12 @@ var SideMenuTheme_1 = require("../../internal/themes/SideMenuTheme");
|
|
|
15
12
|
* (without need for users to do it manually in their apps),
|
|
16
13
|
* and using ReactUI's ThemeContext.Provider for overriding them.
|
|
17
14
|
*/
|
|
18
|
-
var createSideMenuTheme = function (theme) {
|
|
15
|
+
export var createSideMenuTheme = function (theme) {
|
|
19
16
|
var e_1, _a;
|
|
20
|
-
if (
|
|
17
|
+
if (isSideMenuTheme(theme)) {
|
|
21
18
|
return theme;
|
|
22
19
|
}
|
|
23
|
-
var sideMenuTheme = Object.create(theme, Object.assign(Object.getOwnPropertyDescriptors(
|
|
20
|
+
var sideMenuTheme = Object.create(theme, Object.assign(Object.getOwnPropertyDescriptors(SideMenuThemeInternal), {}));
|
|
24
21
|
var _loop_1 = function (key) {
|
|
25
22
|
var descriptor = Object.getOwnPropertyDescriptor(sideMenuTheme, key);
|
|
26
23
|
Object.defineProperty(sideMenuTheme, key, {
|
|
@@ -29,13 +26,13 @@ var createSideMenuTheme = function (theme) {
|
|
|
29
26
|
var get = descriptor.get, value = descriptor.value;
|
|
30
27
|
// eslint-disable-next-line @typescript-eslint/naming-convention
|
|
31
28
|
// @ts-ignore
|
|
32
|
-
return theme[key] || (
|
|
29
|
+
return theme[key] || (isFunction(get) ? get.call(this) : value);
|
|
33
30
|
}
|
|
34
31
|
},
|
|
35
32
|
});
|
|
36
33
|
};
|
|
37
34
|
try {
|
|
38
|
-
for (var _b =
|
|
35
|
+
for (var _b = __values(Object.keys(sideMenuTheme)), _c = _b.next(); !_c.done; _c = _b.next()) {
|
|
39
36
|
var key = _c.value;
|
|
40
37
|
_loop_1(key);
|
|
41
38
|
}
|
|
@@ -47,11 +44,10 @@ var createSideMenuTheme = function (theme) {
|
|
|
47
44
|
}
|
|
48
45
|
finally { if (e_1) throw e_1.error; }
|
|
49
46
|
}
|
|
50
|
-
return
|
|
47
|
+
return markAsSideMenuTheme(sideMenuTheme);
|
|
51
48
|
};
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
return (0, exports.createSideMenuTheme)(theme);
|
|
49
|
+
export var getSideMenuTheme = memo(function (theme) {
|
|
50
|
+
return createSideMenuTheme(theme);
|
|
55
51
|
});
|
|
56
52
|
// eslint-disable-next-line @typescript-eslint/ban-types
|
|
57
53
|
function isZeroArgs(fn) {
|
|
@@ -77,10 +73,8 @@ var memoize = function (fn) {
|
|
|
77
73
|
return cache.get(arg);
|
|
78
74
|
};
|
|
79
75
|
};
|
|
80
|
-
var memoizeStyle = function (styles) {
|
|
76
|
+
export var memoizeStyle = function (styles) {
|
|
81
77
|
Object.keys(styles).forEach(function (className) { return (styles[className] = memoize(styles[className])); });
|
|
82
78
|
return styles;
|
|
83
79
|
};
|
|
84
|
-
|
|
85
|
-
var cssName = function (className) { return ".".concat(className); };
|
|
86
|
-
exports.cssName = cssName;
|
|
80
|
+
export var cssName = function (className) { return ".".concat(className); };
|
|
@@ -1,2 +1 @@
|
|
|
1
|
-
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
1
|
+
export {};
|
package/lib/utils/memo.js
CHANGED
|
@@ -1,7 +1,4 @@
|
|
|
1
|
-
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.memo = void 0;
|
|
4
|
-
var memo = function (fn) {
|
|
1
|
+
export var memo = function (fn) {
|
|
5
2
|
var cache = new WeakMap();
|
|
6
3
|
return function (arg) {
|
|
7
4
|
if (!cache.has(arg)) {
|
|
@@ -10,4 +7,3 @@ var memo = function (fn) {
|
|
|
10
7
|
return cache.get(arg);
|
|
11
8
|
};
|
|
12
9
|
};
|
|
13
|
-
exports.memo = memo;
|
package/lib/utils/scripts.js
CHANGED
|
@@ -1,16 +1,10 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
exports.isBrowser = typeof window !== 'undefined';
|
|
5
|
-
var isTouchDevice = function () {
|
|
6
|
-
return exports.isBrowser && ('ontouchstart' in window || navigator.maxTouchPoints > 0);
|
|
1
|
+
export var isBrowser = typeof window !== 'undefined';
|
|
2
|
+
export var isTouchDevice = function () {
|
|
3
|
+
return isBrowser && ('ontouchstart' in window || navigator.maxTouchPoints > 0);
|
|
7
4
|
};
|
|
8
|
-
|
|
9
|
-
var isKonturIcon = function (icon) {
|
|
5
|
+
export var isKonturIcon = function (icon) {
|
|
10
6
|
return Object.prototype.hasOwnProperty.call(icon === null || icon === void 0 ? void 0 : icon.type, '__KONTUR_ICON__');
|
|
11
7
|
};
|
|
12
|
-
|
|
13
|
-
var generateId = function () {
|
|
8
|
+
export var generateId = function () {
|
|
14
9
|
return Date.now().toString(36) + Math.random().toString(36).substr(2);
|
|
15
10
|
};
|
|
16
|
-
exports.generateId = generateId;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@skbkontur/side-menu",
|
|
3
|
-
"version": "3.3.
|
|
3
|
+
"version": "3.3.4",
|
|
4
4
|
"publishConfig": {
|
|
5
5
|
"access": "public",
|
|
6
6
|
"registry": "https://registry.npmjs.org/"
|
|
@@ -24,9 +24,9 @@
|
|
|
24
24
|
},
|
|
25
25
|
"dependencies": {
|
|
26
26
|
"@skbkontur/bell-widget-npm-loader": "^0.2.3",
|
|
27
|
-
"@skbkontur/empty-state": "1.1.
|
|
27
|
+
"@skbkontur/empty-state": "^1.1.2",
|
|
28
28
|
"@skbkontur/icons": "^1.19.1",
|
|
29
|
-
"@skbkontur/react-ui-addons": "^5.2.
|
|
29
|
+
"@skbkontur/react-ui-addons": "^5.2.2",
|
|
30
30
|
"@skbkontur/widget-consumer-react-utils": "^1.6.12",
|
|
31
31
|
"tslib": "^2.8.0"
|
|
32
32
|
}
|
package/src/Navigation.js
CHANGED
|
@@ -1,17 +1,14 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
exports.MenuNavigation = exports.navigationAttributeBackButton = exports.navigationAttributeForSeparatedMenu = exports.navigationAttribute = void 0;
|
|
4
|
-
var tslib_1 = require("tslib");
|
|
5
|
-
var Tree_1 = require("./Tree");
|
|
1
|
+
import { __values } from "tslib";
|
|
2
|
+
import { Tree } from './Tree';
|
|
6
3
|
var MENU_ROOT_ID = 'menu-root-id';
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
4
|
+
export var navigationAttribute = 'data-navigation-id';
|
|
5
|
+
export var navigationAttributeForSeparatedMenu = 'data-parent-navigation-id';
|
|
6
|
+
export var navigationAttributeBackButton = 'data-navigation-back-button';
|
|
10
7
|
var MenuNavigation = /** @class */ (function () {
|
|
11
8
|
function MenuNavigation(options) {
|
|
12
9
|
this.navigationTree = null;
|
|
13
10
|
this.menuItemsIds = '';
|
|
14
|
-
this.navigationTree = new
|
|
11
|
+
this.navigationTree = new Tree(MENU_ROOT_ID);
|
|
15
12
|
this.activeMenuItemTreeNode = this.navigationTree.find(options.activeMenuItem);
|
|
16
13
|
this.rootRef = options.rootRef;
|
|
17
14
|
this.activeMenuItem = options.activeMenuItem;
|
|
@@ -28,15 +25,15 @@ var MenuNavigation = /** @class */ (function () {
|
|
|
28
25
|
var _this = this;
|
|
29
26
|
var _a;
|
|
30
27
|
if ((_a = this.rootRef) === null || _a === void 0 ? void 0 : _a.current) {
|
|
31
|
-
var menuItems = Array.from(this.rootRef.current.querySelectorAll("[".concat(
|
|
32
|
-
var newItemsIds = menuItems.map(function (node) { return node.getAttribute(
|
|
28
|
+
var menuItems = Array.from(this.rootRef.current.querySelectorAll("[".concat(navigationAttribute, "]"))).filter(function (item) { return !item.querySelector("[".concat(navigationAttributeBackButton, "]")); });
|
|
29
|
+
var newItemsIds = menuItems.map(function (node) { return node.getAttribute(navigationAttribute); }).join('');
|
|
33
30
|
if (this.menuItemsIds === newItemsIds) {
|
|
34
31
|
return;
|
|
35
32
|
}
|
|
36
33
|
this.menuItemsIds = newItemsIds;
|
|
37
34
|
menuItems.forEach(function (menuItem) {
|
|
38
35
|
var _a, _b, _c;
|
|
39
|
-
var id = menuItem.getAttribute(
|
|
36
|
+
var id = menuItem.getAttribute(navigationAttribute);
|
|
40
37
|
var parentId = _this.getParentId(menuItem);
|
|
41
38
|
var oldValue = (_b = (_a = _this.navigationTree) === null || _a === void 0 ? void 0 : _a.find(id)) === null || _b === void 0 ? void 0 : _b.value;
|
|
42
39
|
(_c = _this.navigationTree) === null || _c === void 0 ? void 0 : _c.insert(parentId, id, oldValue);
|
|
@@ -62,7 +59,7 @@ var MenuNavigation = /** @class */ (function () {
|
|
|
62
59
|
var _b, _c, _d, _e, _f;
|
|
63
60
|
if (!isButton) {
|
|
64
61
|
try {
|
|
65
|
-
for (var _g =
|
|
62
|
+
for (var _g = __values(((_b = this.navigationTree) === null || _b === void 0 ? void 0 : _b.preOrderTraversal()) || []), _h = _g.next(); !_h.done; _h = _g.next()) {
|
|
66
63
|
var node = _h.value;
|
|
67
64
|
(_c = node.value) === null || _c === void 0 ? void 0 : _c.setIsActive(false);
|
|
68
65
|
}
|
|
@@ -99,7 +96,7 @@ var MenuNavigation = /** @class */ (function () {
|
|
|
99
96
|
var e_2, _a;
|
|
100
97
|
var _b, _c, _d;
|
|
101
98
|
try {
|
|
102
|
-
for (var _e =
|
|
99
|
+
for (var _e = __values(((_b = this.navigationTree) === null || _b === void 0 ? void 0 : _b.preOrderTraversal()) || []), _f = _e.next(); !_f.done; _f = _e.next()) {
|
|
103
100
|
var node = _f.value;
|
|
104
101
|
(_c = node.value) === null || _c === void 0 ? void 0 : _c.setIsFirstLevelParentOfActiveMenuItem(false);
|
|
105
102
|
}
|
|
@@ -132,7 +129,7 @@ var MenuNavigation = /** @class */ (function () {
|
|
|
132
129
|
var _b, _c, _d, _e;
|
|
133
130
|
if (!((_b = treeNode.value) === null || _b === void 0 ? void 0 : _b.isSubMenu) || firstLevelParentChanged) {
|
|
134
131
|
try {
|
|
135
|
-
for (var _f =
|
|
132
|
+
for (var _f = __values(((_c = this.navigationTree) === null || _c === void 0 ? void 0 : _c.preOrderTraversal()) || []), _g = _f.next(); !_g.done; _g = _f.next()) {
|
|
136
133
|
var node = _g.value;
|
|
137
134
|
(_d = node.value) === null || _d === void 0 ? void 0 : _d.setIsOpened(false);
|
|
138
135
|
}
|
|
@@ -161,17 +158,17 @@ var MenuNavigation = /** @class */ (function () {
|
|
|
161
158
|
MenuNavigation.prototype.getParentId = function (menuItem) {
|
|
162
159
|
var _a, _b, _c;
|
|
163
160
|
var parentElement;
|
|
164
|
-
var clickableElementSelector = "[".concat(
|
|
165
|
-
var separatedMenuSelector = "[".concat(
|
|
161
|
+
var clickableElementSelector = "[".concat(navigationAttribute, "]");
|
|
162
|
+
var separatedMenuSelector = "[".concat(navigationAttributeForSeparatedMenu, "]");
|
|
166
163
|
parentElement = (_a = menuItem.parentElement) === null || _a === void 0 ? void 0 : _a.closest(clickableElementSelector);
|
|
167
164
|
if (!parentElement) {
|
|
168
165
|
var separatedMenu = menuItem.closest(separatedMenuSelector);
|
|
169
166
|
if (separatedMenu) {
|
|
170
|
-
var firstLevelMenuId = separatedMenu.getAttribute(
|
|
171
|
-
parentElement = (_c = (_b = this.rootRef) === null || _b === void 0 ? void 0 : _b.current) === null || _c === void 0 ? void 0 : _c.querySelector("[".concat(
|
|
167
|
+
var firstLevelMenuId = separatedMenu.getAttribute(navigationAttributeForSeparatedMenu);
|
|
168
|
+
parentElement = (_c = (_b = this.rootRef) === null || _b === void 0 ? void 0 : _b.current) === null || _c === void 0 ? void 0 : _c.querySelector("[".concat(navigationAttribute, "=\"").concat(firstLevelMenuId, "\"]"));
|
|
172
169
|
}
|
|
173
170
|
}
|
|
174
|
-
return (parentElement === null || parentElement === void 0 ? void 0 : parentElement.getAttribute(
|
|
171
|
+
return (parentElement === null || parentElement === void 0 ? void 0 : parentElement.getAttribute(navigationAttribute)) || MENU_ROOT_ID;
|
|
175
172
|
};
|
|
176
173
|
MenuNavigation.prototype.switchVisibilityOfSeparatedMenu = function () {
|
|
177
174
|
var _a, _b, _c, _d, _e, _f;
|
|
@@ -192,4 +189,4 @@ var MenuNavigation = /** @class */ (function () {
|
|
|
192
189
|
};
|
|
193
190
|
return MenuNavigation;
|
|
194
191
|
}());
|
|
195
|
-
|
|
192
|
+
export { MenuNavigation };
|