@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.
- package/CHANGELOG.md +19 -0
- package/SideMenuDataTids.d.ts +8 -8
- package/SideMenuDataTids.js +8 -8
- package/hooks/useAnimateOnMount.d.ts +2 -2
- package/hooks/useAnimateOnMount.js +19 -19
- package/hooks/useMemoIcon.d.ts +8 -8
- package/hooks/useMemoIcon.js +27 -27
- package/index.d.ts +14 -14
- package/index.js +14 -14
- package/internal/themes/SideMenuTheme.d.ts +132 -132
- package/internal/themes/SideMenuTheme.js +291 -291
- package/lib/theming/ThemeHelpers.d.ts +18 -18
- package/lib/theming/ThemeHelpers.js +77 -77
- package/lib/theming/ThemeTypes.d.ts +3 -3
- package/lib/theming/ThemeTypes.js +1 -0
- package/lib/utils/memo.d.ts +1 -1
- package/lib/utils/memo.js +9 -9
- package/lib/utils/scripts.d.ts +5 -5
- package/lib/utils/scripts.js +10 -10
- package/package.json +4 -4
- package/src/Navigation.d.ts +52 -52
- package/src/Navigation.js +191 -156
- package/src/SideMenu/SideMenu.d.ts +90 -90
- package/src/SideMenu/SideMenu.js +315 -315
- package/src/SideMenu/SideMenu.styles.d.ts +27 -27
- package/src/SideMenu/SideMenu.styles.js +77 -77
- package/src/SideMenuAvatar/SideMenuAvatar.d.ts +13 -13
- package/src/SideMenuAvatar/SideMenuAvatar.js +18 -18
- package/src/SideMenuBody/SideMenuBody.d.ts +13 -13
- package/src/SideMenuBody/SideMenuBody.js +27 -27
- package/src/SideMenuBody/SideMenuBody.styles.d.ts +5 -5
- package/src/SideMenuBody/SideMenuBody.styles.js +13 -13
- package/src/SideMenuContext.d.ts +30 -30
- package/src/SideMenuContext.js +2 -2
- package/src/SideMenuDivider/SideMenuDivider.d.ts +10 -10
- package/src/SideMenuDivider/SideMenuDivider.js +19 -19
- package/src/SideMenuDivider/SideMenuDivider.styles.d.ts +4 -4
- package/src/SideMenuDivider/SideMenuDivider.styles.js +10 -10
- package/src/SideMenuDropdown/SideMenuDropdown.d.ts +17 -17
- package/src/SideMenuDropdown/SideMenuDropdown.js +40 -40
- package/src/SideMenuDropdown/SideMenuDropdown.styles.d.ts +7 -7
- package/src/SideMenuDropdown/SideMenuDropdown.styles.js +20 -20
- package/src/SideMenuFooter/SideMenuFooter.d.ts +13 -13
- package/src/SideMenuFooter/SideMenuFooter.js +34 -34
- package/src/SideMenuFooter/SideMenuFooter.styles.d.ts +6 -6
- package/src/SideMenuFooter/SideMenuFooter.styles.js +16 -16
- package/src/SideMenuHeader/SideMenuHeader.d.ts +13 -13
- package/src/SideMenuHeader/SideMenuHeader.js +39 -39
- package/src/SideMenuHeader/SideMenuHeader.styles.d.ts +8 -8
- package/src/SideMenuHeader/SideMenuHeader.styles.js +22 -22
- package/src/SideMenuItem/SideMenuItem.d.ts +15 -15
- package/src/SideMenuItem/SideMenuItem.js +16 -16
- package/src/SideMenuLink/SideMenuLink.d.ts +16 -16
- package/src/SideMenuLink/SideMenuLink.js +21 -21
- package/src/SideMenuLink/SideMenuLink.styles.d.ts +3 -3
- package/src/SideMenuLink/SideMenuLink.styles.js +9 -9
- package/src/SideMenuOrganisations/SideMenuOrganisations.d.ts +10 -10
- package/src/SideMenuOrganisations/SideMenuOrganisations.js +16 -16
- package/src/SideMenuSubItem/SideMenuSubItem.d.ts +12 -12
- package/src/SideMenuSubItem/SideMenuSubItem.js +15 -15
- package/src/SideMenuSubItemHeader/SideMenuSubItemHeader.d.ts +13 -13
- package/src/SideMenuSubItemHeader/SideMenuSubItemHeader.js +26 -26
- package/src/SideMenuSubItemHeader/SideMenuSubItemHeader.styles.d.ts +5 -5
- package/src/SideMenuSubItemHeader/SideMenuSubItemHeader.styles.js +13 -13
- package/src/SideMenuSubLink/SideMenuSubLink.d.ts +14 -14
- package/src/SideMenuSubLink/SideMenuSubLink.js +18 -18
- package/src/Tree.d.ts +17 -17
- package/src/Tree.js +133 -133
- package/src/internal/BackButton.d.ts +9 -9
- package/src/internal/BackButton.js +25 -25
- package/src/internal/Backdrop.d.ts +4 -4
- package/src/internal/Backdrop.js +13 -13
- package/src/internal/Backdrop.styles.d.ts +3 -3
- package/src/internal/Backdrop.styles.js +10 -10
- package/src/internal/Burger.d.ts +1 -1
- package/src/internal/Burger.js +13 -13
- package/src/internal/Burger.styles.d.ts +4 -4
- package/src/internal/Burger.styles.js +11 -11
- package/src/internal/ClickableElement.d.ts +32 -32
- package/src/internal/ClickableElement.js +141 -141
- package/src/internal/ClickableElement.styles.d.ts +10 -10
- package/src/internal/ClickableElement.styles.js +29 -29
- package/src/internal/InnerSubMenu.d.ts +10 -10
- package/src/internal/InnerSubMenu.js +21 -21
- package/src/internal/ItemContent/Caption.d.ts +9 -9
- package/src/internal/ItemContent/Caption.js +73 -73
- package/src/internal/ItemContent/Caption.styles.d.ts +19 -19
- package/src/internal/ItemContent/Caption.styles.js +51 -51
- package/src/internal/ItemContent/Icon.d.ts +6 -6
- package/src/internal/ItemContent/Icon.js +42 -42
- package/src/internal/ItemContent/Icon.styles.d.ts +10 -10
- package/src/internal/ItemContent/Icon.styles.js +28 -28
- package/src/internal/ItemContent/ItemContent.d.ts +8 -8
- package/src/internal/ItemContent/ItemContent.js +68 -68
- package/src/internal/ItemContent/ItemContent.styles.d.ts +14 -14
- package/src/internal/ItemContent/ItemContent.styles.js +40 -40
- package/src/internal/ItemContent/Marker.d.ts +7 -7
- package/src/internal/ItemContent/Marker.js +21 -21
- package/src/internal/ItemContent/Marker.styles.d.ts +11 -11
- package/src/internal/ItemContent/Marker.styles.js +31 -31
- package/src/internal/NestedMenu.d.ts +10 -10
- package/src/internal/NestedMenu.js +26 -26
- package/src/internal/NestedMenu.styles.d.ts +4 -4
- package/src/internal/NestedMenu.styles.js +10 -10
- package/src/internal/RightBorder.d.ts +9 -9
- package/src/internal/RightBorder.js +33 -33
- package/src/internal/RightBorder.styles.d.ts +5 -5
- package/src/internal/RightBorder.styles.js +13 -13
- package/src/internal/SeparatedSubMenu.d.ts +11 -11
- package/src/internal/SeparatedSubMenu.js +64 -64
- package/src/internal/SeparatedSubMenu.styles.d.ts +13 -13
- package/src/internal/SeparatedSubMenu.styles.js +33 -33
- package/src/internal/SideMenuLogotype.d.ts +6 -6
- package/src/internal/SideMenuLogotype.js +80 -79
- package/src/internal/SideMenuLogotype.styles.d.ts +12 -12
- package/src/internal/SideMenuLogotype.styles.js +31 -31
- package/src/internal/SubMenu.d.ts +13 -13
- package/src/internal/SubMenu.js +25 -25
package/src/Navigation.js
CHANGED
|
@@ -1,156 +1,191 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { Tree } from './Tree';
|
|
3
|
-
var MENU_ROOT_ID = 'menu-root-id';
|
|
4
|
-
export var navigationAttribute = 'data-navigation-id';
|
|
5
|
-
export var navigationAttributeForSeparatedMenu = 'data-parent-navigation-id';
|
|
6
|
-
export var navigationAttributeBackButton = 'data-navigation-back-button';
|
|
7
|
-
var MenuNavigation = /** @class */ (function () {
|
|
8
|
-
function MenuNavigation(options) {
|
|
9
|
-
this.navigationTree = null;
|
|
10
|
-
this.menuItemsIds = '';
|
|
11
|
-
this.navigationTree = new Tree(MENU_ROOT_ID);
|
|
12
|
-
this.activeMenuItemTreeNode = this.navigationTree.find(options.activeMenuItem);
|
|
13
|
-
this.rootRef = options.rootRef;
|
|
14
|
-
this.activeMenuItem = options.activeMenuItem;
|
|
15
|
-
this.setActiveMenuItem = options.setActiveMenuItem;
|
|
16
|
-
this.isSeparatedMenu = options.isSeparatedMenu;
|
|
17
|
-
this.isSeparatedMenuShown = options.isSeparatedMenuShown;
|
|
18
|
-
this.setIsSeparatedMenuShown = options.setIsSeparatedMenuShown;
|
|
19
|
-
this.isOpened = options.isOpened;
|
|
20
|
-
this.isDesktop = options.isDesktopQuery;
|
|
21
|
-
this.isMobile = options.isMobile;
|
|
22
|
-
this.isCollapsable = options.isCollapsable;
|
|
23
|
-
}
|
|
24
|
-
MenuNavigation.prototype.updateNavigationTree = function () {
|
|
25
|
-
var _this = this;
|
|
26
|
-
var _a;
|
|
27
|
-
if ((_a = this.rootRef) === null || _a === void 0 ? void 0 : _a.current) {
|
|
28
|
-
var menuItems = Array.from(this.rootRef.current.querySelectorAll("["
|
|
29
|
-
var newItemsIds = menuItems.map(function (node) { return node.getAttribute(navigationAttribute); }).join('');
|
|
30
|
-
if (this.menuItemsIds === newItemsIds) {
|
|
31
|
-
return;
|
|
32
|
-
}
|
|
33
|
-
this.menuItemsIds = newItemsIds;
|
|
34
|
-
menuItems.forEach(function (menuItem) {
|
|
35
|
-
var _a, _b, _c;
|
|
36
|
-
var id = menuItem.getAttribute(navigationAttribute);
|
|
37
|
-
var parentId = _this.getParentId(menuItem);
|
|
38
|
-
var oldValue = (_b = (_a = _this.navigationTree) === null || _a === void 0 ? void 0 : _a.find(id)) === null || _b === void 0 ? void 0 : _b.value;
|
|
39
|
-
(_c = _this.navigationTree) === null || _c === void 0 ? void 0 : _c.insert(parentId, id, oldValue);
|
|
40
|
-
});
|
|
41
|
-
}
|
|
42
|
-
};
|
|
43
|
-
MenuNavigation.prototype.addValue = function (id, value) {
|
|
44
|
-
var _a, _b, _c;
|
|
45
|
-
this.updateNavigationTree();
|
|
46
|
-
var foundTreeNode = (_a = this.navigationTree) === null || _a === void 0 ? void 0 : _a.find(id);
|
|
47
|
-
if (foundTreeNode) {
|
|
48
|
-
foundTreeNode.value = value;
|
|
49
|
-
}
|
|
50
|
-
if ((foundTreeNode === null || foundTreeNode === void 0 ? void 0 : foundTreeNode.parent) && foundTreeNode.parent.parent && foundTreeNode.parent.parent.id !== MENU_ROOT_ID) {
|
|
51
|
-
(_b = foundTreeNode.value) === null || _b === void 0 ? void 0 : _b.setIsNestedSubMenu(true);
|
|
52
|
-
}
|
|
53
|
-
if (this.isSeparatedMenu && (foundTreeNode === null || foundTreeNode === void 0 ? void 0 : foundTreeNode.hasChildren)) {
|
|
54
|
-
(_c = foundTreeNode.value) === null || _c === void 0 ? void 0 : _c.setHasSubIcons(true);
|
|
55
|
-
}
|
|
56
|
-
};
|
|
57
|
-
MenuNavigation.prototype.switchActiveMenuItem = function (id, isButton) {
|
|
58
|
-
var
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
(
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
(
|
|
89
|
-
}
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
var parentTreeNode = treeNode.parent;
|
|
117
|
-
while (parentTreeNode
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
var
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
(
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
}
|
|
156
|
-
|
|
1
|
+
import { __values } from "tslib";
|
|
2
|
+
import { Tree } from './Tree';
|
|
3
|
+
var MENU_ROOT_ID = 'menu-root-id';
|
|
4
|
+
export var navigationAttribute = 'data-navigation-id';
|
|
5
|
+
export var navigationAttributeForSeparatedMenu = 'data-parent-navigation-id';
|
|
6
|
+
export var navigationAttributeBackButton = 'data-navigation-back-button';
|
|
7
|
+
var MenuNavigation = /** @class */ (function () {
|
|
8
|
+
function MenuNavigation(options) {
|
|
9
|
+
this.navigationTree = null;
|
|
10
|
+
this.menuItemsIds = '';
|
|
11
|
+
this.navigationTree = new Tree(MENU_ROOT_ID);
|
|
12
|
+
this.activeMenuItemTreeNode = this.navigationTree.find(options.activeMenuItem);
|
|
13
|
+
this.rootRef = options.rootRef;
|
|
14
|
+
this.activeMenuItem = options.activeMenuItem;
|
|
15
|
+
this.setActiveMenuItem = options.setActiveMenuItem;
|
|
16
|
+
this.isSeparatedMenu = options.isSeparatedMenu;
|
|
17
|
+
this.isSeparatedMenuShown = options.isSeparatedMenuShown;
|
|
18
|
+
this.setIsSeparatedMenuShown = options.setIsSeparatedMenuShown;
|
|
19
|
+
this.isOpened = options.isOpened;
|
|
20
|
+
this.isDesktop = options.isDesktopQuery;
|
|
21
|
+
this.isMobile = options.isMobile;
|
|
22
|
+
this.isCollapsable = options.isCollapsable;
|
|
23
|
+
}
|
|
24
|
+
MenuNavigation.prototype.updateNavigationTree = function () {
|
|
25
|
+
var _this = this;
|
|
26
|
+
var _a;
|
|
27
|
+
if ((_a = this.rootRef) === null || _a === void 0 ? void 0 : _a.current) {
|
|
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('');
|
|
30
|
+
if (this.menuItemsIds === newItemsIds) {
|
|
31
|
+
return;
|
|
32
|
+
}
|
|
33
|
+
this.menuItemsIds = newItemsIds;
|
|
34
|
+
menuItems.forEach(function (menuItem) {
|
|
35
|
+
var _a, _b, _c;
|
|
36
|
+
var id = menuItem.getAttribute(navigationAttribute);
|
|
37
|
+
var parentId = _this.getParentId(menuItem);
|
|
38
|
+
var oldValue = (_b = (_a = _this.navigationTree) === null || _a === void 0 ? void 0 : _a.find(id)) === null || _b === void 0 ? void 0 : _b.value;
|
|
39
|
+
(_c = _this.navigationTree) === null || _c === void 0 ? void 0 : _c.insert(parentId, id, oldValue);
|
|
40
|
+
});
|
|
41
|
+
}
|
|
42
|
+
};
|
|
43
|
+
MenuNavigation.prototype.addValue = function (id, value) {
|
|
44
|
+
var _a, _b, _c;
|
|
45
|
+
this.updateNavigationTree();
|
|
46
|
+
var foundTreeNode = (_a = this.navigationTree) === null || _a === void 0 ? void 0 : _a.find(id);
|
|
47
|
+
if (foundTreeNode) {
|
|
48
|
+
foundTreeNode.value = value;
|
|
49
|
+
}
|
|
50
|
+
if ((foundTreeNode === null || foundTreeNode === void 0 ? void 0 : foundTreeNode.parent) && foundTreeNode.parent.parent && foundTreeNode.parent.parent.id !== MENU_ROOT_ID) {
|
|
51
|
+
(_b = foundTreeNode.value) === null || _b === void 0 ? void 0 : _b.setIsNestedSubMenu(true);
|
|
52
|
+
}
|
|
53
|
+
if (this.isSeparatedMenu && (foundTreeNode === null || foundTreeNode === void 0 ? void 0 : foundTreeNode.hasChildren)) {
|
|
54
|
+
(_c = foundTreeNode.value) === null || _c === void 0 ? void 0 : _c.setHasSubIcons(true);
|
|
55
|
+
}
|
|
56
|
+
};
|
|
57
|
+
MenuNavigation.prototype.switchActiveMenuItem = function (id, isButton) {
|
|
58
|
+
var e_1, _a;
|
|
59
|
+
var _b, _c, _d, _e, _f;
|
|
60
|
+
if (!isButton) {
|
|
61
|
+
try {
|
|
62
|
+
for (var _g = __values(((_b = this.navigationTree) === null || _b === void 0 ? void 0 : _b.preOrderTraversal()) || []), _h = _g.next(); !_h.done; _h = _g.next()) {
|
|
63
|
+
var node = _h.value;
|
|
64
|
+
(_c = node.value) === null || _c === void 0 ? void 0 : _c.setIsActive(false);
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
catch (e_1_1) { e_1 = { error: e_1_1 }; }
|
|
68
|
+
finally {
|
|
69
|
+
try {
|
|
70
|
+
if (_h && !_h.done && (_a = _g.return)) _a.call(_g);
|
|
71
|
+
}
|
|
72
|
+
finally { if (e_1) throw e_1.error; }
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
var foundTreeNode = (_d = this.navigationTree) === null || _d === void 0 ? void 0 : _d.find(id);
|
|
76
|
+
var oldFirstLevelParent = this.getFirstLevelParent(this.activeMenuItemTreeNode);
|
|
77
|
+
var firstLevelParent = this.getFirstLevelParent(foundTreeNode);
|
|
78
|
+
var firstLevelParentChanged = oldFirstLevelParent !== firstLevelParent;
|
|
79
|
+
if (foundTreeNode) {
|
|
80
|
+
if (!isButton) {
|
|
81
|
+
this.activeMenuItem = foundTreeNode.id;
|
|
82
|
+
this.activeMenuItemTreeNode = foundTreeNode;
|
|
83
|
+
(_e = this.setActiveMenuItem) === null || _e === void 0 ? void 0 : _e.call(this, foundTreeNode.id);
|
|
84
|
+
this.setHighlightedFirstLevelMenuItemInMinimizedInnerMenu(firstLevelParent);
|
|
85
|
+
(_f = foundTreeNode.value) === null || _f === void 0 ? void 0 : _f.setIsActive(true);
|
|
86
|
+
}
|
|
87
|
+
this.isSeparatedMenu && this.switchVisibilityOfSeparatedMenu();
|
|
88
|
+
this.openMenuItems(foundTreeNode, firstLevelParentChanged);
|
|
89
|
+
}
|
|
90
|
+
};
|
|
91
|
+
MenuNavigation.prototype.switchIsSeparatedMenu = function (value) {
|
|
92
|
+
this.isSeparatedMenu = value;
|
|
93
|
+
this.switchVisibilityOfSeparatedMenu();
|
|
94
|
+
};
|
|
95
|
+
MenuNavigation.prototype.setHighlightedFirstLevelMenuItemInMinimizedInnerMenu = function (firstLevelParent) {
|
|
96
|
+
var e_2, _a;
|
|
97
|
+
var _b, _c, _d;
|
|
98
|
+
try {
|
|
99
|
+
for (var _e = __values(((_b = this.navigationTree) === null || _b === void 0 ? void 0 : _b.preOrderTraversal()) || []), _f = _e.next(); !_f.done; _f = _e.next()) {
|
|
100
|
+
var node = _f.value;
|
|
101
|
+
(_c = node.value) === null || _c === void 0 ? void 0 : _c.setIsFirstLevelParentOfActiveMenuItem(false);
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
catch (e_2_1) { e_2 = { error: e_2_1 }; }
|
|
105
|
+
finally {
|
|
106
|
+
try {
|
|
107
|
+
if (_f && !_f.done && (_a = _e.return)) _a.call(_e);
|
|
108
|
+
}
|
|
109
|
+
finally { if (e_2) throw e_2.error; }
|
|
110
|
+
}
|
|
111
|
+
(_d = firstLevelParent === null || firstLevelParent === void 0 ? void 0 : firstLevelParent.value) === null || _d === void 0 ? void 0 : _d.setIsFirstLevelParentOfActiveMenuItem(true);
|
|
112
|
+
};
|
|
113
|
+
MenuNavigation.prototype.getFirstLevelParent = function (treeNode) {
|
|
114
|
+
if (!treeNode)
|
|
115
|
+
return;
|
|
116
|
+
var parentTreeNode = treeNode.parent;
|
|
117
|
+
while (parentTreeNode) {
|
|
118
|
+
var foundNode = parentTreeNode.parent;
|
|
119
|
+
if ((foundNode === null || foundNode === void 0 ? void 0 : foundNode.id) === MENU_ROOT_ID) {
|
|
120
|
+
break;
|
|
121
|
+
}
|
|
122
|
+
parentTreeNode = foundNode;
|
|
123
|
+
}
|
|
124
|
+
return parentTreeNode;
|
|
125
|
+
};
|
|
126
|
+
MenuNavigation.prototype.openMenuItems = function (treeNode, firstLevelParentChanged) {
|
|
127
|
+
var e_3, _a;
|
|
128
|
+
var _b, _c, _d, _e;
|
|
129
|
+
if (!((_b = treeNode.value) === null || _b === void 0 ? void 0 : _b.isSubMenu) || firstLevelParentChanged) {
|
|
130
|
+
try {
|
|
131
|
+
for (var _f = __values(((_c = this.navigationTree) === null || _c === void 0 ? void 0 : _c.preOrderTraversal()) || []), _g = _f.next(); !_g.done; _g = _f.next()) {
|
|
132
|
+
var node = _g.value;
|
|
133
|
+
(_d = node.value) === null || _d === void 0 ? void 0 : _d.setIsOpened(false);
|
|
134
|
+
}
|
|
135
|
+
}
|
|
136
|
+
catch (e_3_1) { e_3 = { error: e_3_1 }; }
|
|
137
|
+
finally {
|
|
138
|
+
try {
|
|
139
|
+
if (_g && !_g.done && (_a = _f.return)) _a.call(_f);
|
|
140
|
+
}
|
|
141
|
+
finally { if (e_3) throw e_3.error; }
|
|
142
|
+
}
|
|
143
|
+
}
|
|
144
|
+
if (treeNode.children.length > 0) {
|
|
145
|
+
(_e = treeNode.value) === null || _e === void 0 ? void 0 : _e.setIsOpened(true);
|
|
146
|
+
}
|
|
147
|
+
this.openAllParents(treeNode);
|
|
148
|
+
};
|
|
149
|
+
MenuNavigation.prototype.openAllParents = function (treeNode) {
|
|
150
|
+
var _a;
|
|
151
|
+
var parentTreeNode = treeNode.parent;
|
|
152
|
+
while (parentTreeNode && parentTreeNode.id !== MENU_ROOT_ID) {
|
|
153
|
+
(_a = parentTreeNode.value) === null || _a === void 0 ? void 0 : _a.setIsOpened(true);
|
|
154
|
+
parentTreeNode = parentTreeNode.parent;
|
|
155
|
+
}
|
|
156
|
+
};
|
|
157
|
+
MenuNavigation.prototype.getParentId = function (menuItem) {
|
|
158
|
+
var _a, _b, _c;
|
|
159
|
+
var parentElement;
|
|
160
|
+
var clickableElementSelector = "[".concat(navigationAttribute, "]");
|
|
161
|
+
var separatedMenuSelector = "[".concat(navigationAttributeForSeparatedMenu, "]");
|
|
162
|
+
parentElement = (_a = menuItem.parentElement) === null || _a === void 0 ? void 0 : _a.closest(clickableElementSelector);
|
|
163
|
+
if (!parentElement) {
|
|
164
|
+
var separatedMenu = menuItem.closest(separatedMenuSelector);
|
|
165
|
+
if (separatedMenu) {
|
|
166
|
+
var firstLevelMenuId = separatedMenu.getAttribute(navigationAttributeForSeparatedMenu);
|
|
167
|
+
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, "\"]"));
|
|
168
|
+
}
|
|
169
|
+
}
|
|
170
|
+
return (parentElement === null || parentElement === void 0 ? void 0 : parentElement.getAttribute(navigationAttribute)) || MENU_ROOT_ID;
|
|
171
|
+
};
|
|
172
|
+
MenuNavigation.prototype.switchVisibilityOfSeparatedMenu = function () {
|
|
173
|
+
var _a, _b, _c, _d, _e, _f;
|
|
174
|
+
if (!this.isSeparatedMenu) {
|
|
175
|
+
this.isSeparatedMenuShown = false;
|
|
176
|
+
return (_a = this.setIsSeparatedMenuShown) === null || _a === void 0 ? void 0 : _a.call(this, false);
|
|
177
|
+
}
|
|
178
|
+
var activeItemHasParent = (_c = (_b = this.activeMenuItemTreeNode) === null || _b === void 0 ? void 0 : _b.value) === null || _c === void 0 ? void 0 : _c.isSubMenu;
|
|
179
|
+
var activeMenuItemHasChildren = (_d = this.activeMenuItemTreeNode) === null || _d === void 0 ? void 0 : _d.hasChildren;
|
|
180
|
+
var isActive = activeItemHasParent || activeMenuItemHasChildren || false;
|
|
181
|
+
var isMinimizedInWideDesktop = !this.isOpened && this.isDesktop && !this.isCollapsable;
|
|
182
|
+
if (this.isMobile && !activeItemHasParent && this.isSeparatedMenuShown) {
|
|
183
|
+
this.isSeparatedMenuShown = false;
|
|
184
|
+
return (_e = this.setIsSeparatedMenuShown) === null || _e === void 0 ? void 0 : _e.call(this, false);
|
|
185
|
+
}
|
|
186
|
+
this.isSeparatedMenuShown = isActive && !isMinimizedInWideDesktop;
|
|
187
|
+
(_f = this.setIsSeparatedMenuShown) === null || _f === void 0 ? void 0 : _f.call(this, this.isSeparatedMenuShown);
|
|
188
|
+
};
|
|
189
|
+
return MenuNavigation;
|
|
190
|
+
}());
|
|
191
|
+
export { MenuNavigation };
|
|
@@ -1,90 +1,90 @@
|
|
|
1
|
-
import React from 'react';
|
|
2
|
-
import { CommonProps } from '@skbkontur/react-ui/internal/CommonWrapper';
|
|
3
|
-
import { SideMenuOrganisations } from '../SideMenuOrganisations/SideMenuOrganisations';
|
|
4
|
-
import { SideMenuBody } from '../SideMenuBody/SideMenuBody';
|
|
5
|
-
import { SideMenuFooter } from '../SideMenuFooter/SideMenuFooter';
|
|
6
|
-
import { SideMenuHeader } from '../SideMenuHeader/SideMenuHeader';
|
|
7
|
-
import { SideMenuItem } from '../SideMenuItem/SideMenuItem';
|
|
8
|
-
import { SideMenuAvatar } from '../SideMenuAvatar/SideMenuAvatar';
|
|
9
|
-
import { SideMenuSubItem } from '../SideMenuSubItem/SideMenuSubItem';
|
|
10
|
-
import { SideMenuDivider } from '../SideMenuDivider/SideMenuDivider';
|
|
11
|
-
import { SideMenuSubItemHeader } from '../SideMenuSubItemHeader/SideMenuSubItemHeader';
|
|
12
|
-
import { SideMenuDropdown } from '../SideMenuDropdown/SideMenuDropdown';
|
|
13
|
-
import { SideMenuLink } from '../SideMenuLink/SideMenuLink';
|
|
14
|
-
import { SideMenuSubLink } from '../SideMenuSubLink/SideMenuSubLink';
|
|
15
|
-
export
|
|
16
|
-
export interface SideMenuProps extends CommonProps {
|
|
17
|
-
children?: React.ReactNode;
|
|
18
|
-
size?: 'small' | 'large';
|
|
19
|
-
/**
|
|
20
|
-
* Проп для отображения подменю в отдельной колонке
|
|
21
|
-
*/
|
|
22
|
-
isSeparatedMenu?: boolean;
|
|
23
|
-
/**
|
|
24
|
-
* Проп для закрепленного состояния (работает только на широких экранах)
|
|
25
|
-
*/
|
|
26
|
-
isPinned?: boolean;
|
|
27
|
-
/**
|
|
28
|
-
* Коллбэк для закрепленного состояния (работает только на широких экранах)
|
|
29
|
-
*/
|
|
30
|
-
onPinnedValueChange?: (isPinned: boolean) => void;
|
|
31
|
-
/**
|
|
32
|
-
* @deprecated use disableCollapsing
|
|
33
|
-
*/
|
|
34
|
-
disableSwipe?: boolean;
|
|
35
|
-
/**
|
|
36
|
-
* Заблокировать возможность сворачивания меню до иконок на широких экранах
|
|
37
|
-
*/
|
|
38
|
-
disableCollapsing?: boolean;
|
|
39
|
-
/**
|
|
40
|
-
* @deprecated use activeItem
|
|
41
|
-
*/
|
|
42
|
-
value?: string;
|
|
43
|
-
/**
|
|
44
|
-
* @deprecated use onActiveItemChange
|
|
45
|
-
*/
|
|
46
|
-
onValueChange?: (value: string) => void;
|
|
47
|
-
activeItem?: string;
|
|
48
|
-
onActiveItemChange?: (value: string) => void;
|
|
49
|
-
desktopMediaQuery?: string;
|
|
50
|
-
narrowDesktopMediaQuery?: string;
|
|
51
|
-
tabletMediaQuery?: string;
|
|
52
|
-
mobileMediaQuery?: string;
|
|
53
|
-
/**
|
|
54
|
-
* Показывать скроллбар
|
|
55
|
-
*/
|
|
56
|
-
showScrollBar?: showScrollBarType;
|
|
57
|
-
/**
|
|
58
|
-
* Открывает и закрывает меню
|
|
59
|
-
*
|
|
60
|
-
* Примечание: при заданном пропе `isOpen` автоматическое открытие/зарытие меню не работает
|
|
61
|
-
*/
|
|
62
|
-
isOpen?: boolean;
|
|
63
|
-
/**
|
|
64
|
-
* Действие при открытии меню
|
|
65
|
-
*/
|
|
66
|
-
onOpen?: () => void;
|
|
67
|
-
/**
|
|
68
|
-
* Действие при закрытии меню
|
|
69
|
-
*/
|
|
70
|
-
onClose?: () => void;
|
|
71
|
-
}
|
|
72
|
-
interface SubComponents {
|
|
73
|
-
Body: typeof SideMenuBody;
|
|
74
|
-
Footer: typeof SideMenuFooter;
|
|
75
|
-
Header: typeof SideMenuHeader;
|
|
76
|
-
Item: typeof SideMenuItem;
|
|
77
|
-
SubItem: typeof SideMenuSubItem;
|
|
78
|
-
SubItemHeader: typeof SideMenuSubItemHeader;
|
|
79
|
-
Avatar: typeof SideMenuAvatar;
|
|
80
|
-
Organisations: typeof SideMenuOrganisations;
|
|
81
|
-
Divider: typeof SideMenuDivider;
|
|
82
|
-
Dropdown: typeof SideMenuDropdown;
|
|
83
|
-
Link: typeof SideMenuLink;
|
|
84
|
-
SubLink: typeof SideMenuSubLink;
|
|
85
|
-
__KONTUR_REACT_UI__: string;
|
|
86
|
-
}
|
|
87
|
-
export declare const transitionDuration = 300;
|
|
88
|
-
export declare const burgerTransitionDuration: number;
|
|
89
|
-
export declare const SideMenu: React.ForwardRefExoticComponent<SideMenuProps & React.RefAttributes<HTMLElement>> & SubComponents;
|
|
90
|
-
export {};
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import { CommonProps } from '@skbkontur/react-ui/internal/CommonWrapper';
|
|
3
|
+
import { SideMenuOrganisations } from '../SideMenuOrganisations/SideMenuOrganisations';
|
|
4
|
+
import { SideMenuBody } from '../SideMenuBody/SideMenuBody';
|
|
5
|
+
import { SideMenuFooter } from '../SideMenuFooter/SideMenuFooter';
|
|
6
|
+
import { SideMenuHeader } from '../SideMenuHeader/SideMenuHeader';
|
|
7
|
+
import { SideMenuItem } from '../SideMenuItem/SideMenuItem';
|
|
8
|
+
import { SideMenuAvatar } from '../SideMenuAvatar/SideMenuAvatar';
|
|
9
|
+
import { SideMenuSubItem } from '../SideMenuSubItem/SideMenuSubItem';
|
|
10
|
+
import { SideMenuDivider } from '../SideMenuDivider/SideMenuDivider';
|
|
11
|
+
import { SideMenuSubItemHeader } from '../SideMenuSubItemHeader/SideMenuSubItemHeader';
|
|
12
|
+
import { SideMenuDropdown } from '../SideMenuDropdown/SideMenuDropdown';
|
|
13
|
+
import { SideMenuLink } from '../SideMenuLink/SideMenuLink';
|
|
14
|
+
import { SideMenuSubLink } from '../SideMenuSubLink/SideMenuSubLink';
|
|
15
|
+
export type showScrollBarType = 'always' | 'scroll' | 'hover' | 'never';
|
|
16
|
+
export interface SideMenuProps extends CommonProps {
|
|
17
|
+
children?: React.ReactNode;
|
|
18
|
+
size?: 'small' | 'large';
|
|
19
|
+
/**
|
|
20
|
+
* Проп для отображения подменю в отдельной колонке
|
|
21
|
+
*/
|
|
22
|
+
isSeparatedMenu?: boolean;
|
|
23
|
+
/**
|
|
24
|
+
* Проп для закрепленного состояния (работает только на широких экранах)
|
|
25
|
+
*/
|
|
26
|
+
isPinned?: boolean;
|
|
27
|
+
/**
|
|
28
|
+
* Коллбэк для закрепленного состояния (работает только на широких экранах)
|
|
29
|
+
*/
|
|
30
|
+
onPinnedValueChange?: (isPinned: boolean) => void;
|
|
31
|
+
/**
|
|
32
|
+
* @deprecated use disableCollapsing
|
|
33
|
+
*/
|
|
34
|
+
disableSwipe?: boolean;
|
|
35
|
+
/**
|
|
36
|
+
* Заблокировать возможность сворачивания меню до иконок на широких экранах
|
|
37
|
+
*/
|
|
38
|
+
disableCollapsing?: boolean;
|
|
39
|
+
/**
|
|
40
|
+
* @deprecated use activeItem
|
|
41
|
+
*/
|
|
42
|
+
value?: string;
|
|
43
|
+
/**
|
|
44
|
+
* @deprecated use onActiveItemChange
|
|
45
|
+
*/
|
|
46
|
+
onValueChange?: (value: string) => void;
|
|
47
|
+
activeItem?: string;
|
|
48
|
+
onActiveItemChange?: (value: string) => void;
|
|
49
|
+
desktopMediaQuery?: string;
|
|
50
|
+
narrowDesktopMediaQuery?: string;
|
|
51
|
+
tabletMediaQuery?: string;
|
|
52
|
+
mobileMediaQuery?: string;
|
|
53
|
+
/**
|
|
54
|
+
* Показывать скроллбар
|
|
55
|
+
*/
|
|
56
|
+
showScrollBar?: showScrollBarType;
|
|
57
|
+
/**
|
|
58
|
+
* Открывает и закрывает меню
|
|
59
|
+
*
|
|
60
|
+
* Примечание: при заданном пропе `isOpen` автоматическое открытие/зарытие меню не работает
|
|
61
|
+
*/
|
|
62
|
+
isOpen?: boolean;
|
|
63
|
+
/**
|
|
64
|
+
* Действие при открытии меню
|
|
65
|
+
*/
|
|
66
|
+
onOpen?: () => void;
|
|
67
|
+
/**
|
|
68
|
+
* Действие при закрытии меню
|
|
69
|
+
*/
|
|
70
|
+
onClose?: () => void;
|
|
71
|
+
}
|
|
72
|
+
interface SubComponents {
|
|
73
|
+
Body: typeof SideMenuBody;
|
|
74
|
+
Footer: typeof SideMenuFooter;
|
|
75
|
+
Header: typeof SideMenuHeader;
|
|
76
|
+
Item: typeof SideMenuItem;
|
|
77
|
+
SubItem: typeof SideMenuSubItem;
|
|
78
|
+
SubItemHeader: typeof SideMenuSubItemHeader;
|
|
79
|
+
Avatar: typeof SideMenuAvatar;
|
|
80
|
+
Organisations: typeof SideMenuOrganisations;
|
|
81
|
+
Divider: typeof SideMenuDivider;
|
|
82
|
+
Dropdown: typeof SideMenuDropdown;
|
|
83
|
+
Link: typeof SideMenuLink;
|
|
84
|
+
SubLink: typeof SideMenuSubLink;
|
|
85
|
+
__KONTUR_REACT_UI__: string;
|
|
86
|
+
}
|
|
87
|
+
export declare const transitionDuration = 300;
|
|
88
|
+
export declare const burgerTransitionDuration: number;
|
|
89
|
+
export declare const SideMenu: React.ForwardRefExoticComponent<SideMenuProps & React.RefAttributes<HTMLElement>> & SubComponents;
|
|
90
|
+
export {};
|