@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,77 +1,77 @@
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';
5
- /**
6
- * Creates SideMenuTheme out of ReactUI's Theme.
7
- *
8
- * Inserts SideMenu vars in the theme, puts them over ReactUI's vars,
9
- * but respects these SideMenu vars values that might have been specified in ReactUI's theme before that.
10
- *
11
- * This allows inserting SideMenu vars in the theme on the fly
12
- * (without need for users to do it manually in their apps),
13
- * and using ReactUI's ThemeContext.Provider for overriding them.
14
- */
15
- export var createSideMenuTheme = function (theme) {
16
- var e_1, _a;
17
- if (isSideMenuTheme(theme))
18
- return theme;
19
- var sideMenuTheme = Object.create(theme, Object.assign(Object.getOwnPropertyDescriptors(SideMenuThemeInternal), {}));
20
- var _loop_1 = function (key) {
21
- var descriptor = Object.getOwnPropertyDescriptor(sideMenuTheme, key);
22
- Object.defineProperty(sideMenuTheme, key, {
23
- get: function () {
24
- if (descriptor) {
25
- var get = descriptor.get, value = descriptor.value;
26
- // eslint-disable-next-line @typescript-eslint/ban-ts-ignore
27
- // @ts-ignore
28
- return theme[key] || (isFunction(get) ? get.call(this) : value);
29
- }
30
- },
31
- });
32
- };
33
- try {
34
- for (var _b = __values(Object.keys(sideMenuTheme)), _c = _b.next(); !_c.done; _c = _b.next()) {
35
- var key = _c.value;
36
- _loop_1(key);
37
- }
38
- }
39
- catch (e_1_1) { e_1 = { error: e_1_1 }; }
40
- finally {
41
- try {
42
- if (_c && !_c.done && (_a = _b.return)) _a.call(_b);
43
- }
44
- finally { if (e_1) throw e_1.error; }
45
- }
46
- return markAsSideMenuTheme(sideMenuTheme);
47
- };
48
- export var getSideMenuTheme = memo(function (theme) {
49
- return createSideMenuTheme(theme);
50
- });
51
- function isZeroArgs(fn) {
52
- return fn.length == 0;
53
- }
54
- var memoize = function (fn) {
55
- if (isZeroArgs(fn)) {
56
- var isCalled_1 = false;
57
- var result_1;
58
- return function () {
59
- if (!isCalled_1) {
60
- isCalled_1 = true;
61
- result_1 = fn();
62
- }
63
- return result_1;
64
- };
65
- }
66
- var cache = new WeakMap();
67
- return function (arg) {
68
- if (!cache.has(arg))
69
- cache.set(arg, fn(arg));
70
- return cache.get(arg);
71
- };
72
- };
73
- export var memoizeStyle = function (styles) {
74
- Object.keys(styles).forEach(function (className) { return (styles[className] = memoize(styles[className])); });
75
- return styles;
76
- };
77
- export var cssName = function (className) { return "." + className; };
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';
5
+ /**
6
+ * Creates SideMenuTheme out of ReactUI's Theme.
7
+ *
8
+ * Inserts SideMenu vars in the theme, puts them over ReactUI's vars,
9
+ * but respects these SideMenu vars values that might have been specified in ReactUI's theme before that.
10
+ *
11
+ * This allows inserting SideMenu vars in the theme on the fly
12
+ * (without need for users to do it manually in their apps),
13
+ * and using ReactUI's ThemeContext.Provider for overriding them.
14
+ */
15
+ export var createSideMenuTheme = function (theme) {
16
+ var e_1, _a;
17
+ if (isSideMenuTheme(theme))
18
+ return theme;
19
+ var sideMenuTheme = Object.create(theme, Object.assign(Object.getOwnPropertyDescriptors(SideMenuThemeInternal), {}));
20
+ var _loop_1 = function (key) {
21
+ var descriptor = Object.getOwnPropertyDescriptor(sideMenuTheme, key);
22
+ Object.defineProperty(sideMenuTheme, key, {
23
+ get: function () {
24
+ if (descriptor) {
25
+ var get = descriptor.get, value = descriptor.value;
26
+ // eslint-disable-next-line @typescript-eslint/naming-convention
27
+ // @ts-ignore
28
+ return theme[key] || (isFunction(get) ? get.call(this) : value);
29
+ }
30
+ },
31
+ });
32
+ };
33
+ try {
34
+ for (var _b = __values(Object.keys(sideMenuTheme)), _c = _b.next(); !_c.done; _c = _b.next()) {
35
+ var key = _c.value;
36
+ _loop_1(key);
37
+ }
38
+ }
39
+ catch (e_1_1) { e_1 = { error: e_1_1 }; }
40
+ finally {
41
+ try {
42
+ if (_c && !_c.done && (_a = _b.return)) _a.call(_b);
43
+ }
44
+ finally { if (e_1) throw e_1.error; }
45
+ }
46
+ return markAsSideMenuTheme(sideMenuTheme);
47
+ };
48
+ export var getSideMenuTheme = memo(function (theme) {
49
+ return createSideMenuTheme(theme);
50
+ });
51
+ function isZeroArgs(fn) {
52
+ return fn.length == 0;
53
+ }
54
+ var memoize = function (fn) {
55
+ if (isZeroArgs(fn)) {
56
+ var isCalled_1 = false;
57
+ var result_1;
58
+ return function () {
59
+ if (!isCalled_1) {
60
+ isCalled_1 = true;
61
+ result_1 = fn();
62
+ }
63
+ return result_1;
64
+ };
65
+ }
66
+ var cache = new WeakMap();
67
+ return function (arg) {
68
+ if (!cache.has(arg))
69
+ cache.set(arg, fn(arg));
70
+ return cache.get(arg);
71
+ };
72
+ };
73
+ export var memoizeStyle = function (styles) {
74
+ Object.keys(styles).forEach(function (className) { return (styles[className] = memoize(styles[className])); });
75
+ return styles;
76
+ };
77
+ export var cssName = function (className) { return ".".concat(className); };
@@ -1,3 +1,3 @@
1
- import { SideMenuThemeInternal } from '../../internal/themes/SideMenuTheme';
2
- export declare type SideMenuTheme = Readonly<typeof SideMenuThemeInternal>;
3
- export declare type SideMenuThemeIn = Partial<SideMenuTheme>;
1
+ import { SideMenuThemeInternal } from '../../internal/themes/SideMenuTheme';
2
+ export type SideMenuTheme = Readonly<typeof SideMenuThemeInternal>;
3
+ export type SideMenuThemeIn = Partial<SideMenuTheme>;
@@ -0,0 +1 @@
1
+ export {};
@@ -1 +1 @@
1
- export declare const memo: <A extends Record<string, unknown>, R>(fn: (() => R) | ((arg: A) => R)) => (() => R) | ((arg: A) => R);
1
+ export declare const memo: <A extends Record<string, unknown>, R>(fn: (() => R) | ((arg: A) => R)) => (() => R) | ((arg: A) => R);
package/lib/utils/memo.js CHANGED
@@ -1,9 +1,9 @@
1
- export var memo = function (fn) {
2
- var cache = new WeakMap();
3
- return function (arg) {
4
- if (!cache.has(arg)) {
5
- cache.set(arg, fn(arg));
6
- }
7
- return cache.get(arg);
8
- };
9
- };
1
+ export var memo = function (fn) {
2
+ var cache = new WeakMap();
3
+ return function (arg) {
4
+ if (!cache.has(arg)) {
5
+ cache.set(arg, fn(arg));
6
+ }
7
+ return cache.get(arg);
8
+ };
9
+ };
@@ -1,5 +1,5 @@
1
- import React from 'react';
2
- export declare const isBrowser: boolean;
3
- export declare const isTouchDevice: () => boolean;
4
- export declare const isKonturIcon: (icon: React.ReactElement) => boolean;
5
- export declare const generateId: () => string;
1
+ import React from 'react';
2
+ export declare const isBrowser: boolean;
3
+ export declare const isTouchDevice: () => boolean;
4
+ export declare const isKonturIcon: (icon: React.ReactElement) => boolean;
5
+ export declare const generateId: () => string;
@@ -1,10 +1,10 @@
1
- export var isBrowser = typeof window !== 'undefined';
2
- export var isTouchDevice = function () {
3
- return isBrowser && ('ontouchstart' in window || navigator.maxTouchPoints > 0);
4
- };
5
- export var isKonturIcon = function (icon) {
6
- return Object.prototype.hasOwnProperty.call(icon === null || icon === void 0 ? void 0 : icon.type, '__KONTUR_ICON__');
7
- };
8
- export var generateId = function () {
9
- return Date.now().toString(36) + Math.random().toString(36).substr(2);
10
- };
1
+ export var isBrowser = typeof window !== 'undefined';
2
+ export var isTouchDevice = function () {
3
+ return isBrowser && ('ontouchstart' in window || navigator.maxTouchPoints > 0);
4
+ };
5
+ export var isKonturIcon = function (icon) {
6
+ return Object.prototype.hasOwnProperty.call(icon === null || icon === void 0 ? void 0 : icon.type, '__KONTUR_ICON__');
7
+ };
8
+ export var generateId = function () {
9
+ return Date.now().toString(36) + Math.random().toString(36).substr(2);
10
+ };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@skbkontur/side-menu",
3
- "version": "3.1.7",
3
+ "version": "3.2.0",
4
4
  "publishConfig": {
5
5
  "access": "public",
6
6
  "registry": "https://registry.npmjs.org/"
@@ -22,8 +22,8 @@
22
22
  "@skbkontur/react-ui": "^5.0.0"
23
23
  },
24
24
  "dependencies": {
25
- "@skbkontur/icons": "^1.15.3",
26
- "@skbkontur/react-ui-addons": "^5.1.5",
27
- "tslib": "^1"
25
+ "@skbkontur/icons": "^1.17.0",
26
+ "@skbkontur/react-ui-addons": "^5.2.0",
27
+ "tslib": "^2.8.0"
28
28
  }
29
29
  }
@@ -1,52 +1,52 @@
1
- import { RefObject } from 'react';
2
- import { Tree, TreeNode } from './Tree';
3
- export declare const navigationAttribute = "data-navigation-id";
4
- export declare const navigationAttributeForSeparatedMenu = "data-parent-navigation-id";
5
- export declare const navigationAttributeBackButton = "data-navigation-back-button";
6
- export interface NavigableElement {
7
- setIsActive: (value: boolean) => void;
8
- setIsOpened: (value: boolean) => void;
9
- setIsNestedSubMenu: (value: boolean) => void;
10
- setHasSubIcons: (value: boolean) => void;
11
- setIsFirstLevelParentOfActiveMenuItem: (value: boolean) => void;
12
- isSubMenu?: boolean;
13
- }
14
- interface MenuNavigationOptions {
15
- rootRef: RefObject<HTMLDivElement> | null;
16
- activeMenuItem?: string;
17
- setActiveMenuItem: (id: string) => void;
18
- isSeparatedMenu: boolean;
19
- isSeparatedMenuShown: boolean;
20
- setIsSeparatedMenuShown: (value: boolean) => void;
21
- isOpened?: boolean;
22
- isDesktopQuery?: boolean;
23
- isMobile?: boolean;
24
- isCollapsable?: boolean;
25
- }
26
- export declare class MenuNavigation {
27
- navigationTree: Tree | null;
28
- activeMenuItem?: string;
29
- isSeparatedMenuShown?: boolean;
30
- setIsSeparatedMenuShown?: (value: boolean) => void;
31
- activeMenuItemTreeNode?: TreeNode;
32
- private readonly rootRef;
33
- private readonly setActiveMenuItem?;
34
- private isSeparatedMenu;
35
- private readonly isOpened?;
36
- private readonly isDesktop?;
37
- private readonly isMobile?;
38
- isCollapsable?: boolean;
39
- private menuItemsIds;
40
- constructor(options: MenuNavigationOptions);
41
- updateNavigationTree(): void;
42
- addValue(id: string, value: NavigableElement): void;
43
- switchActiveMenuItem(id?: string, isButton?: boolean): void;
44
- switchIsSeparatedMenu(value: boolean): void;
45
- private setHighlightedFirstLevelMenuItemInMinimizedInnerMenu;
46
- private getFirstLevelParent;
47
- private openMenuItems;
48
- private openAllParents;
49
- private getParentId;
50
- private switchVisibilityOfSeparatedMenu;
51
- }
52
- export {};
1
+ import { RefObject } from 'react';
2
+ import { Tree, TreeNode } from './Tree';
3
+ export declare const navigationAttribute = "data-navigation-id";
4
+ export declare const navigationAttributeForSeparatedMenu = "data-parent-navigation-id";
5
+ export declare const navigationAttributeBackButton = "data-navigation-back-button";
6
+ export interface NavigableElement {
7
+ setIsActive: (value: boolean) => void;
8
+ setIsOpened: (value: boolean) => void;
9
+ setIsNestedSubMenu: (value: boolean) => void;
10
+ setHasSubIcons: (value: boolean) => void;
11
+ setIsFirstLevelParentOfActiveMenuItem: (value: boolean) => void;
12
+ isSubMenu?: boolean;
13
+ }
14
+ interface MenuNavigationOptions {
15
+ rootRef: RefObject<HTMLDivElement> | null;
16
+ activeMenuItem?: string;
17
+ setActiveMenuItem: (id: string) => void;
18
+ isSeparatedMenu: boolean;
19
+ isSeparatedMenuShown: boolean;
20
+ setIsSeparatedMenuShown: (value: boolean) => void;
21
+ isOpened?: boolean;
22
+ isDesktopQuery?: boolean;
23
+ isMobile?: boolean;
24
+ isCollapsable?: boolean;
25
+ }
26
+ export declare class MenuNavigation {
27
+ navigationTree: Tree | null;
28
+ activeMenuItem?: string;
29
+ isSeparatedMenuShown?: boolean;
30
+ setIsSeparatedMenuShown?: (value: boolean) => void;
31
+ activeMenuItemTreeNode?: TreeNode;
32
+ private readonly rootRef;
33
+ private readonly setActiveMenuItem?;
34
+ private isSeparatedMenu;
35
+ private readonly isOpened?;
36
+ private readonly isDesktop?;
37
+ private readonly isMobile?;
38
+ isCollapsable?: boolean;
39
+ private menuItemsIds;
40
+ constructor(options: MenuNavigationOptions);
41
+ updateNavigationTree(): void;
42
+ addValue(id: string, value: NavigableElement): void;
43
+ switchActiveMenuItem(id?: string, isButton?: boolean): void;
44
+ switchIsSeparatedMenu(value: boolean): void;
45
+ private setHighlightedFirstLevelMenuItemInMinimizedInnerMenu;
46
+ private getFirstLevelParent;
47
+ private openMenuItems;
48
+ private openAllParents;
49
+ private getParentId;
50
+ private switchVisibilityOfSeparatedMenu;
51
+ }
52
+ export {};