@skbkontur/side-menu 3.2.7 → 3.3.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 (79) hide show
  1. package/CHANGELOG.md +11 -0
  2. package/README.md +25 -6
  3. package/SideMenuDataTids.d.ts +3 -0
  4. package/SideMenuDataTids.js +7 -1
  5. package/hooks/useAnimateOnMount.js +9 -6
  6. package/hooks/useMemoIcon.js +18 -12
  7. package/index.js +17 -14
  8. package/internal/themes/SideMenuTheme.d.ts +5 -0
  9. package/internal/themes/SideMenuTheme.js +22 -10
  10. package/lib/theming/ThemeHelpers.js +20 -14
  11. package/lib/theming/ThemeTypes.js +2 -1
  12. package/lib/utils/memo.js +5 -1
  13. package/lib/utils/scripts.js +11 -5
  14. package/package.json +8 -4
  15. package/src/Navigation.js +21 -18
  16. package/src/SideMenu/SideMenu.d.ts +2 -0
  17. package/src/SideMenu/SideMenu.js +147 -113
  18. package/src/SideMenu/SideMenu.styles.js +31 -28
  19. package/src/SideMenuAvatar/SideMenuAvatar.js +14 -11
  20. package/src/SideMenuBody/SideMenuBody.js +21 -18
  21. package/src/SideMenuBody/SideMenuBody.styles.js +9 -6
  22. package/src/SideMenuContext.d.ts +3 -0
  23. package/src/SideMenuContext.js +5 -2
  24. package/src/SideMenuDivider/SideMenuDivider.js +14 -11
  25. package/src/SideMenuDivider/SideMenuDivider.styles.js +8 -5
  26. package/src/SideMenuDropdown/SideMenuDropdown.js +34 -21
  27. package/src/SideMenuDropdown/SideMenuDropdown.styles.js +12 -9
  28. package/src/SideMenuFooter/SideMenuFooter.js +24 -21
  29. package/src/SideMenuFooter/SideMenuFooter.styles.js +10 -7
  30. package/src/SideMenuHeader/SideMenuHeader.js +29 -26
  31. package/src/SideMenuHeader/SideMenuHeader.styles.js +12 -9
  32. package/src/SideMenuItem/SideMenuItem.js +10 -7
  33. package/src/SideMenuLink/SideMenuLink.js +12 -9
  34. package/src/SideMenuLink/SideMenuLink.styles.js +7 -4
  35. package/src/SideMenuNotifications/BellWidget.d.ts +11 -0
  36. package/src/SideMenuNotifications/BellWidget.js +87 -0
  37. package/src/SideMenuNotifications/BellWidgetError.d.ts +9 -0
  38. package/src/SideMenuNotifications/BellWidgetError.js +26 -0
  39. package/src/SideMenuNotifications/BellWidgetView.styles.d.ts +10 -0
  40. package/src/SideMenuNotifications/BellWidgetView.styles.js +31 -0
  41. package/src/SideMenuNotifications/SideMenuNotifications.d.ts +41 -0
  42. package/src/SideMenuNotifications/SideMenuNotifications.js +49 -0
  43. package/src/SideMenuNotifications/SideMenuNotifications.md +75 -0
  44. package/src/SideMenuNotifications/utils/getMarker.d.ts +1 -0
  45. package/src/SideMenuNotifications/utils/getMarker.js +12 -0
  46. package/src/SideMenuNotifications/utils/getNotificationsErrorMessages.d.ts +6 -0
  47. package/src/SideMenuNotifications/utils/getNotificationsErrorMessages.js +19 -0
  48. package/src/SideMenuOrganisations/SideMenuOrganisations.js +10 -7
  49. package/src/SideMenuSubItem/SideMenuSubItem.js +11 -8
  50. package/src/SideMenuSubItemHeader/SideMenuSubItemHeader.js +18 -15
  51. package/src/SideMenuSubItemHeader/SideMenuSubItemHeader.styles.js +9 -6
  52. package/src/SideMenuSubLink/SideMenuSubLink.js +10 -7
  53. package/src/Tree.js +12 -9
  54. package/src/internal/BackButton.js +14 -11
  55. package/src/internal/Backdrop.js +15 -11
  56. package/src/internal/Backdrop.styles.js +8 -5
  57. package/src/internal/Burger.js +17 -12
  58. package/src/internal/Burger.styles.js +9 -6
  59. package/src/internal/ClickableElement.js +47 -44
  60. package/src/internal/ClickableElement.styles.js +15 -12
  61. package/src/internal/InnerSubMenu.js +14 -10
  62. package/src/internal/ItemContent/Caption.js +34 -31
  63. package/src/internal/ItemContent/Caption.styles.js +23 -20
  64. package/src/internal/ItemContent/Icon.js +25 -20
  65. package/src/internal/ItemContent/Icon.styles.js +14 -11
  66. package/src/internal/ItemContent/ItemContent.d.ts +1 -1
  67. package/src/internal/ItemContent/ItemContent.js +36 -33
  68. package/src/internal/ItemContent/ItemContent.styles.js +18 -15
  69. package/src/internal/ItemContent/Marker.js +21 -16
  70. package/src/internal/ItemContent/Marker.styles.js +15 -12
  71. package/src/internal/NestedMenu.js +19 -15
  72. package/src/internal/NestedMenu.styles.js +8 -5
  73. package/src/internal/RightBorder.js +22 -18
  74. package/src/internal/RightBorder.styles.js +9 -6
  75. package/src/internal/SeparatedSubMenu.js +40 -37
  76. package/src/internal/SeparatedSubMenu.styles.js +16 -13
  77. package/src/internal/SideMenuLogotype.js +34 -31
  78. package/src/internal/SideMenuLogotype.styles.js +17 -14
  79. package/src/internal/SubMenu.js +15 -11
@@ -1,13 +1,16 @@
1
- import { __makeTemplateObject } from "tslib";
2
- import { css } from '@skbkontur/react-ui/lib/theming/Emotion';
3
- import { memoizeStyle } from '../../lib/theming/ThemeHelpers';
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.jsStyles = void 0;
4
+ var tslib_1 = require("tslib");
5
+ var Emotion_1 = require("@skbkontur/react-ui/lib/theming/Emotion");
6
+ var ThemeHelpers_1 = require("../../lib/theming/ThemeHelpers");
4
7
  var styles = {
5
8
  root: function (t) {
6
- return css(templateObject_1 || (templateObject_1 = __makeTemplateObject(["\n flex-grow: 1;\n margin: 0 ", ";\n min-height: 100%;\n "], ["\n flex-grow: 1;\n margin: 0 ", ";\n min-height: 100%;\n "])), t.sideMenuMarginX);
9
+ return (0, Emotion_1.css)(templateObject_1 || (templateObject_1 = tslib_1.__makeTemplateObject(["\n flex-grow: 1;\n margin: 0 ", ";\n min-height: 100%;\n "], ["\n flex-grow: 1;\n margin: 0 ", ";\n min-height: 100%;\n "])), t.sideMenuMarginX);
7
10
  },
8
11
  wrapper: function (t) {
9
- return css(templateObject_2 || (templateObject_2 = __makeTemplateObject(["\n padding-bottom: ", ";\n "], ["\n padding-bottom: ", ";\n "])), t.sideMenuBodyPaddingBottom);
12
+ return (0, Emotion_1.css)(templateObject_2 || (templateObject_2 = tslib_1.__makeTemplateObject(["\n padding-bottom: ", ";\n "], ["\n padding-bottom: ", ";\n "])), t.sideMenuBodyPaddingBottom);
10
13
  },
11
14
  };
12
- export var jsStyles = memoizeStyle(styles);
15
+ exports.jsStyles = (0, ThemeHelpers_1.memoizeStyle)(styles);
13
16
  var templateObject_1, templateObject_2;
@@ -26,5 +26,8 @@ export interface SideMenuContextType {
26
26
  showScrollBar?: showScrollBarType;
27
27
  sideMenuRef?: RefObject<HTMLDivElement>;
28
28
  navigation?: MenuNavigation | null;
29
+ openDropdownCount?: number;
30
+ handleDropDownOpen?: () => void;
31
+ handleDropDownClose?: () => void;
29
32
  }
30
33
  export declare const SideMenuContext: import("react").Context<SideMenuContextType>;
@@ -1,2 +1,5 @@
1
- import { createContext } from 'react';
2
- export var SideMenuContext = createContext({});
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.SideMenuContext = void 0;
4
+ var react_1 = require("react");
5
+ exports.SideMenuContext = (0, react_1.createContext)({});
@@ -1,14 +1,17 @@
1
- import { __assign, __rest } from "tslib";
2
- import React, { forwardRef, useContext } from 'react';
3
- import { cx } from '@skbkontur/react-ui/lib/theming/Emotion';
4
- import { ThemeContext } from '@skbkontur/react-ui';
5
- import { getSideMenuTheme } from '../../lib/theming/ThemeHelpers';
6
- import { jsStyles } from './SideMenuDivider.styles';
7
- var SideMenuDividerInner = forwardRef(function (_a, ref) {
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.SideMenuDivider = void 0;
4
+ var tslib_1 = require("tslib");
5
+ var react_1 = tslib_1.__importStar(require("react"));
6
+ var Emotion_1 = require("@skbkontur/react-ui/lib/theming/Emotion");
7
+ var react_ui_1 = require("@skbkontur/react-ui");
8
+ var ThemeHelpers_1 = require("../../lib/theming/ThemeHelpers");
9
+ var SideMenuDivider_styles_1 = require("./SideMenuDivider.styles");
10
+ var SideMenuDividerInner = (0, react_1.forwardRef)(function (_a, ref) {
8
11
  var _b;
9
- var className = _a.className, rest = __rest(_a, ["className"]);
10
- var theme = getSideMenuTheme(useContext(ThemeContext));
11
- return React.createElement("hr", __assign({ className: cx((_b = {}, _b[jsStyles.root(theme)] = true, _b), className), ref: ref }, rest));
12
+ var className = _a.className, rest = tslib_1.__rest(_a, ["className"]);
13
+ var theme = (0, ThemeHelpers_1.getSideMenuTheme)((0, react_1.useContext)(react_ui_1.ThemeContext));
14
+ return react_1.default.createElement("hr", tslib_1.__assign({ className: (0, Emotion_1.cx)((_b = {}, _b[SideMenuDivider_styles_1.jsStyles.root(theme)] = true, _b), className), ref: ref }, rest));
12
15
  });
13
16
  SideMenuDividerInner.displayName = 'SideMenuDivider';
14
17
  /**
@@ -16,4 +19,4 @@ SideMenuDividerInner.displayName = 'SideMenuDivider';
16
19
  *
17
20
  * @visibleName SideMenu.Divider
18
21
  */
19
- export var SideMenuDivider = Object.assign(SideMenuDividerInner, { __KONTUR_REACT_UI__: 'SideMenuDivider' });
22
+ exports.SideMenuDivider = Object.assign(SideMenuDividerInner, { __KONTUR_REACT_UI__: 'SideMenuDivider' });
@@ -1,10 +1,13 @@
1
- import { __makeTemplateObject } from "tslib";
2
- import { css } from '@skbkontur/react-ui/lib/theming/Emotion';
3
- import { memoizeStyle } from '../../lib/theming/ThemeHelpers';
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.jsStyles = void 0;
4
+ var tslib_1 = require("tslib");
5
+ var Emotion_1 = require("@skbkontur/react-ui/lib/theming/Emotion");
6
+ var ThemeHelpers_1 = require("../../lib/theming/ThemeHelpers");
4
7
  var styles = {
5
8
  root: function (t) {
6
- return css(templateObject_1 || (templateObject_1 = __makeTemplateObject(["\n height: 1px;\n border: none;\n background: ", ";\n margin: ", " ", ";\n "], ["\n height: 1px;\n border: none;\n background: ", ";\n margin: ", " ", ";\n "])), t.sideMenuDividerBgColor, t.sideMenuDividerMarginY, t.sideMenuDividerMarginX);
9
+ return (0, Emotion_1.css)(templateObject_1 || (templateObject_1 = tslib_1.__makeTemplateObject(["\n height: 1px;\n border: none;\n background: ", ";\n margin: ", " ", ";\n "], ["\n height: 1px;\n border: none;\n background: ", ";\n margin: ", " ", ";\n "])), t.sideMenuDividerBgColor, t.sideMenuDividerMarginY, t.sideMenuDividerMarginX);
7
10
  },
8
11
  };
9
- export var jsStyles = memoizeStyle(styles);
12
+ exports.jsStyles = (0, ThemeHelpers_1.memoizeStyle)(styles);
10
13
  var templateObject_1;
@@ -1,26 +1,39 @@
1
- import { __assign, __rest } from "tslib";
2
- import React, { forwardRef, useContext } from 'react';
3
- import { ThemeContext, DropdownMenu } from '@skbkontur/react-ui';
4
- import { cx } from '@skbkontur/react-ui/lib/theming/Emotion';
5
- import { SideMenuItem } from '../SideMenuItem/SideMenuItem';
6
- import { SideMenuContext } from '../SideMenuContext';
7
- import { getSideMenuTheme } from '../../lib/theming/ThemeHelpers';
8
- import { jsStyles } from './SideMenuDropdown.styles';
9
- var SideMenuDropdownInner = forwardRef(function (_a, ref) {
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.SideMenuDropdown = void 0;
4
+ var tslib_1 = require("tslib");
5
+ var react_1 = tslib_1.__importStar(require("react"));
6
+ var react_ui_1 = require("@skbkontur/react-ui");
7
+ var Emotion_1 = require("@skbkontur/react-ui/lib/theming/Emotion");
8
+ var SideMenuItem_1 = require("../SideMenuItem/SideMenuItem");
9
+ var SideMenuContext_1 = require("../SideMenuContext");
10
+ var ThemeHelpers_1 = require("../../lib/theming/ThemeHelpers");
11
+ var SideMenuDropdown_styles_1 = require("./SideMenuDropdown.styles");
12
+ var SideMenuDropdownInner = (0, react_1.forwardRef)(function (_a, ref) {
10
13
  var _b, _c;
11
- var icon = _a.icon, id = _a.id, children = _a.children, caption = _a.caption, marker = _a.marker, subCaption = _a.subCaption, className = _a.className, menuWidth = _a.menuWidth, _isAvatar = _a._isAvatar, rest = __rest(_a, ["icon", "id", "children", "caption", "marker", "subCaption", "className", "menuWidth", "_isAvatar"]);
12
- var context = useContext(SideMenuContext);
13
- var theme = getSideMenuTheme(useContext(ThemeContext));
14
- return (React.createElement("li", { className: cx((_b = {}, _b[jsStyles.wrapper()] = true, _b), className), ref: ref },
15
- React.createElement(DropdownMenu, __assign({ caption: React.createElement("div", { className: cx((_c = {},
16
- _c[jsStyles.label(theme)] = true,
17
- _c[jsStyles.labelForTouchScreens(theme)] = context.isTouchScreen,
18
- _c[jsStyles.minimizedLabel()] = !context.isOpened,
14
+ var icon = _a.icon, id = _a.id, children = _a.children, caption = _a.caption, marker = _a.marker, subCaption = _a.subCaption, className = _a.className, menuWidth = _a.menuWidth, _isAvatar = _a._isAvatar, onClose = _a.onClose, onOpen = _a.onOpen, rest = tslib_1.__rest(_a, ["icon", "id", "children", "caption", "marker", "subCaption", "className", "menuWidth", "_isAvatar", "onClose", "onOpen"]);
15
+ var context = (0, react_1.useContext)(SideMenuContext_1.SideMenuContext);
16
+ var theme = (0, ThemeHelpers_1.getSideMenuTheme)((0, react_1.useContext)(react_ui_1.ThemeContext));
17
+ var handleOpen = function () {
18
+ var _a;
19
+ (_a = context.handleDropDownOpen) === null || _a === void 0 ? void 0 : _a.call(context);
20
+ onOpen === null || onOpen === void 0 ? void 0 : onOpen();
21
+ };
22
+ var handleClose = function () {
23
+ var _a;
24
+ (_a = context.handleDropDownClose) === null || _a === void 0 ? void 0 : _a.call(context);
25
+ onClose === null || onClose === void 0 ? void 0 : onClose();
26
+ };
27
+ return (react_1.default.createElement("li", { className: (0, Emotion_1.cx)((_b = {}, _b[SideMenuDropdown_styles_1.jsStyles.wrapper()] = true, _b), className), ref: ref },
28
+ react_1.default.createElement(react_ui_1.DropdownMenu, tslib_1.__assign({ caption: react_1.default.createElement("div", { className: (0, Emotion_1.cx)((_c = {},
29
+ _c[SideMenuDropdown_styles_1.jsStyles.label(theme)] = true,
30
+ _c[SideMenuDropdown_styles_1.jsStyles.labelForTouchScreens(theme)] = context.isTouchScreen,
31
+ _c[SideMenuDropdown_styles_1.jsStyles.minimizedLabel()] = !context.isOpened,
19
32
  _c)) },
20
- React.createElement(SideMenuItem, { icon: icon, caption: caption, subCaption: subCaption, marker: marker, id: id, _isDropdown: true, _isAvatar: _isAvatar })), positions: ['top left'], disableAnimations: true, menuWidth: menuWidth }, rest), React.Children.map(children, function (child) {
33
+ react_1.default.createElement(SideMenuItem_1.SideMenuItem, { icon: icon, caption: caption, subCaption: subCaption, marker: marker, id: id, _isDropdown: true, _isAvatar: _isAvatar })), positions: ['top left'], disableAnimations: true, menuWidth: menuWidth, onOpen: handleOpen, onClose: handleClose }, rest), react_1.default.Children.map(children, function (child) {
21
34
  // @ts-expect-error: accessing private property
22
- if (React.isValidElement(child) && (child === null || child === void 0 ? void 0 : child.type.__KONTUR_REACT_UI__) === 'MenuItem') {
23
- return React.cloneElement(child, {
35
+ if (react_1.default.isValidElement(child) && (child === null || child === void 0 ? void 0 : child.type.__KONTUR_REACT_UI__) === 'MenuItem') {
36
+ return react_1.default.cloneElement(child, {
24
37
  onClick: function () {
25
38
  var _a, _b, _c;
26
39
  (_a = context.toggleIsOpened) === null || _a === void 0 ? void 0 : _a.call(context);
@@ -37,4 +50,4 @@ SideMenuDropdownInner.displayName = 'SideMenuDropdown';
37
50
  *
38
51
  * @visibleName SideMenu.Dropdown
39
52
  */
40
- export var SideMenuDropdown = Object.assign(SideMenuDropdownInner, { __KONTUR_REACT_UI__: 'SideMenuDropdown' });
53
+ exports.SideMenuDropdown = Object.assign(SideMenuDropdownInner, { __KONTUR_REACT_UI__: 'SideMenuDropdown' });
@@ -1,20 +1,23 @@
1
- import { __makeTemplateObject } from "tslib";
2
- import { css } from '@skbkontur/react-ui/lib/theming/Emotion';
3
- import { memoizeStyle } from '../../lib/theming/ThemeHelpers';
4
- import { transitionDuration } from '../SideMenu/SideMenu';
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.jsStyles = void 0;
4
+ var tslib_1 = require("tslib");
5
+ var Emotion_1 = require("@skbkontur/react-ui/lib/theming/Emotion");
6
+ var ThemeHelpers_1 = require("../../lib/theming/ThemeHelpers");
7
+ var SideMenu_1 = require("../SideMenu/SideMenu");
5
8
  var styles = {
6
9
  label: function (t) {
7
- return css(templateObject_1 || (templateObject_1 = __makeTemplateObject(["\n width: calc(", " - 2 * ", ");\n transition: width ", "ms ease-out;\n "], ["\n width: calc(", " - 2 * ", ");\n transition: width ", "ms ease-out;\n "])), t.sideMenuWidth, t.sideMenuMarginX, transitionDuration);
10
+ return (0, Emotion_1.css)(templateObject_1 || (templateObject_1 = tslib_1.__makeTemplateObject(["\n width: calc(", " - 2 * ", ");\n transition: width ", "ms ease-out;\n "], ["\n width: calc(", " - 2 * ", ");\n transition: width ", "ms ease-out;\n "])), t.sideMenuWidth, t.sideMenuMarginX, SideMenu_1.transitionDuration);
8
11
  },
9
12
  labelForTouchScreens: function (t) {
10
- return css(templateObject_2 || (templateObject_2 = __makeTemplateObject(["\n width: calc(", " - 2 * ", ");\n "], ["\n width: calc(", " - 2 * ", ");\n "])), t.sideMenuWidthForTouchScreens, t.sideMenuMarginX);
13
+ return (0, Emotion_1.css)(templateObject_2 || (templateObject_2 = tslib_1.__makeTemplateObject(["\n width: calc(", " - 2 * ", ");\n "], ["\n width: calc(", " - 2 * ", ");\n "])), t.sideMenuWidthForTouchScreens, t.sideMenuMarginX);
11
14
  },
12
15
  minimizedLabel: function () {
13
- return css(templateObject_3 || (templateObject_3 = __makeTemplateObject(["\n width: 100%;\n "], ["\n width: 100%;\n "])));
16
+ return (0, Emotion_1.css)(templateObject_3 || (templateObject_3 = tslib_1.__makeTemplateObject(["\n width: 100%;\n "], ["\n width: 100%;\n "])));
14
17
  },
15
18
  wrapper: function () {
16
- return css(templateObject_4 || (templateObject_4 = __makeTemplateObject(["\n overflow-x: hidden;\n "], ["\n overflow-x: hidden;\n "])));
19
+ return (0, Emotion_1.css)(templateObject_4 || (templateObject_4 = tslib_1.__makeTemplateObject(["\n overflow-x: hidden;\n "], ["\n overflow-x: hidden;\n "])));
17
20
  },
18
21
  };
19
- export var jsStyles = memoizeStyle(styles);
22
+ exports.jsStyles = (0, ThemeHelpers_1.memoizeStyle)(styles);
20
23
  var templateObject_1, templateObject_2, templateObject_3, templateObject_4;
@@ -1,28 +1,31 @@
1
- import { __assign, __read, __rest } from "tslib";
2
- import React, { forwardRef, useContext, useEffect, useState } from 'react';
3
- import { cx } from '@skbkontur/react-ui/lib/theming/Emotion';
4
- import { ThemeContext } from '@skbkontur/react-ui/lib/theming/ThemeContext';
5
- import { SideMenuContext } from '../SideMenuContext';
6
- import { jsStylesForSideMenu } from '../SideMenu/SideMenu.styles';
7
- import { getSideMenuTheme } from '../../lib/theming/ThemeHelpers';
8
- import { SideMenuDataTids } from '../../SideMenuDataTids';
9
- import { jsStyles } from './SideMenuFooter.styles';
10
- var SideMenuFooterInner = forwardRef(function (_a, ref) {
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.SideMenuFooter = void 0;
4
+ var tslib_1 = require("tslib");
5
+ var react_1 = tslib_1.__importStar(require("react"));
6
+ var Emotion_1 = require("@skbkontur/react-ui/lib/theming/Emotion");
7
+ var ThemeContext_1 = require("@skbkontur/react-ui/lib/theming/ThemeContext");
8
+ var SideMenuContext_1 = require("../SideMenuContext");
9
+ var SideMenu_styles_1 = require("../SideMenu/SideMenu.styles");
10
+ var ThemeHelpers_1 = require("../../lib/theming/ThemeHelpers");
11
+ var SideMenuDataTids_1 = require("../../SideMenuDataTids");
12
+ var SideMenuFooter_styles_1 = require("./SideMenuFooter.styles");
13
+ var SideMenuFooterInner = (0, react_1.forwardRef)(function (_a, ref) {
11
14
  var _b;
12
- var className = _a.className, children = _a.children, rest = __rest(_a, ["className", "children"]);
13
- var context = useContext(SideMenuContext);
14
- var theme = getSideMenuTheme(useContext(ThemeContext));
15
- var _c = __read(useState(false), 2), isFixed = _c[0], setIsFixed = _c[1];
16
- useEffect(function () {
15
+ var className = _a.className, children = _a.children, rest = tslib_1.__rest(_a, ["className", "children"]);
16
+ var context = (0, react_1.useContext)(SideMenuContext_1.SideMenuContext);
17
+ var theme = (0, ThemeHelpers_1.getSideMenuTheme)((0, react_1.useContext)(ThemeContext_1.ThemeContext));
18
+ var _c = tslib_1.__read((0, react_1.useState)(false), 2), isFixed = _c[0], setIsFixed = _c[1];
19
+ (0, react_1.useEffect)(function () {
17
20
  setIsFixed(!!context.hasScrollBar && !(context.scrollState === 'bottom'));
18
21
  }, [context.hasScrollBar, context.scrollState]);
19
22
  if (!(context.isMobile || context.isTablet) || (context.isOpened && (context.isMobile || context.isTablet))) {
20
- return (React.createElement("footer", __assign({ "data-tid": SideMenuDataTids.footer, "data-visual-state-fixed": isFixed, className: cx((_b = {},
21
- _b[jsStyles.root(theme)] = true,
22
- _b[jsStyles.rootFixed(theme)] = isFixed,
23
- _b[jsStyles.rootTransitionedForTabletsOrMobiles()] = context.isBeingTransitioned && (context.isMobile || context.isTablet),
23
+ return (react_1.default.createElement("footer", tslib_1.__assign({ "data-tid": SideMenuDataTids_1.SideMenuDataTids.footer, "data-visual-state-fixed": isFixed, className: (0, Emotion_1.cx)((_b = {},
24
+ _b[SideMenuFooter_styles_1.jsStyles.root(theme)] = true,
25
+ _b[SideMenuFooter_styles_1.jsStyles.rootFixed(theme)] = isFixed,
26
+ _b[SideMenuFooter_styles_1.jsStyles.rootTransitionedForTabletsOrMobiles()] = context.isBeingTransitioned && (context.isMobile || context.isTablet),
24
27
  _b), className), ref: ref }, rest),
25
- React.createElement("ul", { className: jsStylesForSideMenu.list() }, children)));
28
+ react_1.default.createElement("ul", { className: SideMenu_styles_1.jsStylesForSideMenu.list() }, children)));
26
29
  }
27
30
  return null;
28
31
  });
@@ -32,4 +35,4 @@ SideMenuFooterInner.displayName = 'SideMenuFooter';
32
35
  *
33
36
  * @visibleName SideMenu.Footer
34
37
  */
35
- export var SideMenuFooter = Object.assign(SideMenuFooterInner, { __KONTUR_REACT_UI__: 'SideMenuFooter' });
38
+ exports.SideMenuFooter = Object.assign(SideMenuFooterInner, { __KONTUR_REACT_UI__: 'SideMenuFooter' });
@@ -1,16 +1,19 @@
1
- import { __makeTemplateObject } from "tslib";
2
- import { css } from '@skbkontur/react-ui/lib/theming/Emotion';
3
- import { memoizeStyle } from '../../lib/theming/ThemeHelpers';
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.jsStyles = void 0;
4
+ var tslib_1 = require("tslib");
5
+ var Emotion_1 = require("@skbkontur/react-ui/lib/theming/Emotion");
6
+ var ThemeHelpers_1 = require("../../lib/theming/ThemeHelpers");
4
7
  var styles = {
5
8
  root: function (t) {
6
- return css(templateObject_1 || (templateObject_1 = __makeTemplateObject(["\n flex-grow: 0;\n position: sticky;\n bottom: 0;\n padding-bottom: ", ";\n padding-top: ", ";\n margin: 0 ", ";\n background-color: ", ";\n "], ["\n flex-grow: 0;\n position: sticky;\n bottom: 0;\n padding-bottom: ", ";\n padding-top: ", ";\n margin: 0 ", ";\n background-color: ", ";\n "])), t.sideMenuFooterPaddingBottom, t.sideMenuFooterPaddingTop, t.sideMenuMarginX, t.sideMenuBgColor);
9
+ return (0, Emotion_1.css)(templateObject_1 || (templateObject_1 = tslib_1.__makeTemplateObject(["\n flex-grow: 0;\n position: sticky;\n bottom: 0;\n padding-bottom: ", ";\n padding-top: ", ";\n margin: 0 ", ";\n background-color: ", ";\n "], ["\n flex-grow: 0;\n position: sticky;\n bottom: 0;\n padding-bottom: ", ";\n padding-top: ", ";\n margin: 0 ", ";\n background-color: ", ";\n "])), t.sideMenuFooterPaddingBottom, t.sideMenuFooterPaddingTop, t.sideMenuMarginX, t.sideMenuBgColor);
7
10
  },
8
11
  rootFixed: function (t) {
9
- return css(templateObject_2 || (templateObject_2 = __makeTemplateObject(["\n box-shadow: 0 -1px 0 ", ";\n "], ["\n box-shadow: 0 -1px 0 ", ";\n "])), t.sideMenuFooterDividerColor);
12
+ return (0, Emotion_1.css)(templateObject_2 || (templateObject_2 = tslib_1.__makeTemplateObject(["\n box-shadow: 0 -1px 0 ", ";\n "], ["\n box-shadow: 0 -1px 0 ", ";\n "])), t.sideMenuFooterDividerColor);
10
13
  },
11
14
  rootTransitionedForTabletsOrMobiles: function () {
12
- return css(templateObject_3 || (templateObject_3 = __makeTemplateObject(["\n position: static;\n "], ["\n position: static;\n "])));
15
+ return (0, Emotion_1.css)(templateObject_3 || (templateObject_3 = tslib_1.__makeTemplateObject(["\n position: static;\n "], ["\n position: static;\n "])));
13
16
  },
14
17
  };
15
- export var jsStyles = memoizeStyle(styles);
18
+ exports.jsStyles = (0, ThemeHelpers_1.memoizeStyle)(styles);
16
19
  var templateObject_1, templateObject_2, templateObject_3;
@@ -1,34 +1,37 @@
1
- import { __assign, __rest } from "tslib";
2
- import React, { forwardRef, useContext, useEffect, useRef } from 'react';
3
- import { cx } from '@skbkontur/react-ui/lib/theming/Emotion';
4
- import { mergeRefs } from '@skbkontur/react-ui/lib/utils';
5
- import { ThemeContext } from '@skbkontur/react-ui/lib/theming/ThemeContext';
6
- import { getDOMRect } from '@skbkontur/react-ui/lib/dom/getDOMRect';
7
- import { SideMenuContext } from '../SideMenuContext';
8
- import { SideMenuLogotype } from '../internal/SideMenuLogotype';
9
- import { getSideMenuTheme } from '../../lib/theming/ThemeHelpers';
10
- import { jsStyles } from './SideMenuHeader.styles';
11
- var SideMenuHeaderInner = forwardRef(function (_a, ref) {
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.SideMenuHeader = void 0;
4
+ var tslib_1 = require("tslib");
5
+ var react_1 = tslib_1.__importStar(require("react"));
6
+ var Emotion_1 = require("@skbkontur/react-ui/lib/theming/Emotion");
7
+ var utils_1 = require("@skbkontur/react-ui/lib/utils");
8
+ var ThemeContext_1 = require("@skbkontur/react-ui/lib/theming/ThemeContext");
9
+ var getDOMRect_1 = require("@skbkontur/react-ui/lib/dom/getDOMRect");
10
+ var SideMenuContext_1 = require("../SideMenuContext");
11
+ var SideMenuLogotype_1 = require("../internal/SideMenuLogotype");
12
+ var ThemeHelpers_1 = require("../../lib/theming/ThemeHelpers");
13
+ var SideMenuHeader_styles_1 = require("./SideMenuHeader.styles");
14
+ var SideMenuHeaderInner = (0, react_1.forwardRef)(function (_a, ref) {
12
15
  var _b;
13
16
  var _c;
14
- var className = _a.className, productLogo = _a.productLogo, konturLogo = _a.konturLogo, iconUrl = _a.iconUrl, style = _a.style, _d = _a.withWidget, withWidget = _d === void 0 ? true : _d, dataTid = _a["data-tid"], rest = __rest(_a, ["className", "productLogo", "konturLogo", "iconUrl", "style", "withWidget", 'data-tid']);
15
- var context = useContext(SideMenuContext);
16
- var theme = getSideMenuTheme(useContext(ThemeContext));
17
- var headerWrapperRef = useRef(null);
18
- useEffect(function () {
17
+ var className = _a.className, productLogo = _a.productLogo, konturLogo = _a.konturLogo, iconUrl = _a.iconUrl, style = _a.style, _d = _a.withWidget, withWidget = _d === void 0 ? true : _d, dataTid = _a["data-tid"], rest = tslib_1.__rest(_a, ["className", "productLogo", "konturLogo", "iconUrl", "style", "withWidget", 'data-tid']);
18
+ var context = (0, react_1.useContext)(SideMenuContext_1.SideMenuContext);
19
+ var theme = (0, ThemeHelpers_1.getSideMenuTheme)((0, react_1.useContext)(ThemeContext_1.ThemeContext));
20
+ var headerWrapperRef = (0, react_1.useRef)(null);
21
+ (0, react_1.useEffect)(function () {
19
22
  var _a;
20
23
  if (headerWrapperRef.current) {
21
- (_a = context.setHeaderHeight) === null || _a === void 0 ? void 0 : _a.call(context, getDOMRect(headerWrapperRef.current).height);
24
+ (_a = context.setHeaderHeight) === null || _a === void 0 ? void 0 : _a.call(context, (0, getDOMRect_1.getDOMRect)(headerWrapperRef.current).height);
22
25
  }
23
26
  }, []);
24
- return (React.createElement("header", { className: cx((_b = {},
25
- _b[jsStyles.root(theme)] = true,
26
- _b[jsStyles.rootForTabletsOrMobiles(theme)] = context.isMobile || context.isTablet,
27
- _b[jsStyles.fixedRoot(theme)] = context.isOpened && !!context.hasScrollBar && !(context.scrollState === 'top'),
28
- _b[jsStyles.collapsedRootForTabletsOrMobiles()] = !context.isOpened && (context.isMobile || context.isTablet),
29
- _b[jsStyles.rootWithSeparatedMenuShown(theme)] = context.isOpened && context.isMobile && ((_c = context.navigation) === null || _c === void 0 ? void 0 : _c.isSeparatedMenuShown),
30
- _b), className), ref: mergeRefs([headerWrapperRef, ref]), style: style, "data-tid": dataTid },
31
- React.createElement(SideMenuLogotype, __assign({ productLogo: productLogo, konturLogo: konturLogo, iconUrl: iconUrl, withWidget: withWidget }, rest))));
27
+ return (react_1.default.createElement("header", { className: (0, Emotion_1.cx)((_b = {},
28
+ _b[SideMenuHeader_styles_1.jsStyles.root(theme)] = true,
29
+ _b[SideMenuHeader_styles_1.jsStyles.rootForTabletsOrMobiles(theme)] = context.isMobile || context.isTablet,
30
+ _b[SideMenuHeader_styles_1.jsStyles.fixedRoot(theme)] = context.isOpened && !!context.hasScrollBar && !(context.scrollState === 'top'),
31
+ _b[SideMenuHeader_styles_1.jsStyles.collapsedRootForTabletsOrMobiles()] = !context.isOpened && (context.isMobile || context.isTablet),
32
+ _b[SideMenuHeader_styles_1.jsStyles.rootWithSeparatedMenuShown(theme)] = context.isOpened && context.isMobile && ((_c = context.navigation) === null || _c === void 0 ? void 0 : _c.isSeparatedMenuShown),
33
+ _b), className), ref: (0, utils_1.mergeRefs)([headerWrapperRef, ref]), style: style, "data-tid": dataTid },
34
+ react_1.default.createElement(SideMenuLogotype_1.SideMenuLogotype, tslib_1.__assign({ productLogo: productLogo, konturLogo: konturLogo, iconUrl: iconUrl, withWidget: withWidget }, rest))));
32
35
  });
33
36
  SideMenuHeaderInner.displayName = 'SideMenuHeader';
34
37
  /**
@@ -36,4 +39,4 @@ SideMenuHeaderInner.displayName = 'SideMenuHeader';
36
39
  *
37
40
  * @visibleName SideMenu.Header
38
41
  */
39
- export var SideMenuHeader = Object.assign(SideMenuHeaderInner, { __KONTUR_REACT_UI__: 'SideMenuHeader' });
42
+ exports.SideMenuHeader = Object.assign(SideMenuHeaderInner, { __KONTUR_REACT_UI__: 'SideMenuHeader' });
@@ -1,22 +1,25 @@
1
- import { __makeTemplateObject } from "tslib";
2
- import { css } from '@skbkontur/react-ui/lib/theming/Emotion';
3
- import { memoizeStyle } from '../../lib/theming/ThemeHelpers';
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.jsStyles = void 0;
4
+ var tslib_1 = require("tslib");
5
+ var Emotion_1 = require("@skbkontur/react-ui/lib/theming/Emotion");
6
+ var ThemeHelpers_1 = require("../../lib/theming/ThemeHelpers");
4
7
  var styles = {
5
8
  root: function (t) {
6
- return css(templateObject_1 || (templateObject_1 = __makeTemplateObject(["\n position: sticky;\n width: calc(100% - 2 * ", ");\n top: 0;\n z-index: 1;\n padding: ", " 0 ", ";\n margin: 0 ", ";\n background-color: ", ";\n "], ["\n position: sticky;\n width: calc(100% - 2 * ", ");\n top: 0;\n z-index: 1;\n padding: ", " 0 ", ";\n margin: 0 ", ";\n background-color: ", ";\n "])), t.sideMenuMarginX, t.sideMenuHeaderPaddingTop, t.sideMenuHeaderPaddingBottom, t.sideMenuMarginX, t.sideMenuBgColor);
9
+ return (0, Emotion_1.css)(templateObject_1 || (templateObject_1 = tslib_1.__makeTemplateObject(["\n position: sticky;\n width: calc(100% - 2 * ", ");\n top: 0;\n z-index: 1;\n padding: ", " 0 ", ";\n margin: 0 ", ";\n background-color: ", ";\n "], ["\n position: sticky;\n width: calc(100% - 2 * ", ");\n top: 0;\n z-index: 1;\n padding: ", " 0 ", ";\n margin: 0 ", ";\n background-color: ", ";\n "])), t.sideMenuMarginX, t.sideMenuHeaderPaddingTop, t.sideMenuHeaderPaddingBottom, t.sideMenuMarginX, t.sideMenuBgColor);
7
10
  },
8
11
  rootForTabletsOrMobiles: function (t) {
9
- return css(templateObject_2 || (templateObject_2 = __makeTemplateObject(["\n padding-top: ", ";\n "], ["\n padding-top: ", ";\n "])), t.sideMenuHeaderPaddingTopForTouchScreens);
12
+ return (0, Emotion_1.css)(templateObject_2 || (templateObject_2 = tslib_1.__makeTemplateObject(["\n padding-top: ", ";\n "], ["\n padding-top: ", ";\n "])), t.sideMenuHeaderPaddingTopForTouchScreens);
10
13
  },
11
14
  collapsedRootForTabletsOrMobiles: function () {
12
- return css(templateObject_3 || (templateObject_3 = __makeTemplateObject(["\n background: transparent;\n "], ["\n background: transparent;\n "])));
15
+ return (0, Emotion_1.css)(templateObject_3 || (templateObject_3 = tslib_1.__makeTemplateObject(["\n background: transparent;\n "], ["\n background: transparent;\n "])));
13
16
  },
14
17
  rootWithSeparatedMenuShown: function (t) {
15
- return css(templateObject_4 || (templateObject_4 = __makeTemplateObject(["\n background: ", ";\n z-index: 9000;\n "], ["\n background: ", ";\n z-index: 9000;\n "])), t.sideMenuSeparatedSubMenuBgColor);
18
+ return (0, Emotion_1.css)(templateObject_4 || (templateObject_4 = tslib_1.__makeTemplateObject(["\n background: ", ";\n z-index: 9000;\n "], ["\n background: ", ";\n z-index: 9000;\n "])), t.sideMenuSeparatedSubMenuBgColor);
16
19
  },
17
20
  fixedRoot: function (t) {
18
- return css(templateObject_5 || (templateObject_5 = __makeTemplateObject(["\n box-shadow: 0 1px 0 ", ";\n "], ["\n box-shadow: 0 1px 0 ", ";\n "])), t.sideMenuHeaderDividerColor);
21
+ return (0, Emotion_1.css)(templateObject_5 || (templateObject_5 = tslib_1.__makeTemplateObject(["\n box-shadow: 0 1px 0 ", ";\n "], ["\n box-shadow: 0 1px 0 ", ";\n "])), t.sideMenuHeaderDividerColor);
19
22
  },
20
23
  };
21
- export var jsStyles = memoizeStyle(styles);
24
+ exports.jsStyles = (0, ThemeHelpers_1.memoizeStyle)(styles);
22
25
  var templateObject_1, templateObject_2, templateObject_3, templateObject_4, templateObject_5;
@@ -1,9 +1,12 @@
1
- import { __assign, __rest } from "tslib";
2
- import React, { forwardRef } from 'react';
3
- import { ClickableElement } from '../internal/ClickableElement';
4
- var SideMenuItemInner = forwardRef(function (_a, ref) {
5
- var component = _a.component, rest = __rest(_a, ["component"]);
6
- return React.createElement(ClickableElement, __assign({}, rest, { ref: ref, element: component !== null && component !== void 0 ? component : 'button' }));
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.SideMenuItem = void 0;
4
+ var tslib_1 = require("tslib");
5
+ var react_1 = tslib_1.__importStar(require("react"));
6
+ var ClickableElement_1 = require("../internal/ClickableElement");
7
+ var SideMenuItemInner = (0, react_1.forwardRef)(function (_a, ref) {
8
+ var component = _a.component, rest = tslib_1.__rest(_a, ["component"]);
9
+ return react_1.default.createElement(ClickableElement_1.ClickableElement, tslib_1.__assign({}, rest, { ref: ref, element: component !== null && component !== void 0 ? component : 'button' }));
7
10
  });
8
11
  SideMenuItemInner.displayName = 'SideMenuItem';
9
12
  /**
@@ -13,4 +16,4 @@ SideMenuItemInner.displayName = 'SideMenuItem';
13
16
  *
14
17
  * @visibleName SideMenu.Item
15
18
  */
16
- export var SideMenuItem = Object.assign(SideMenuItemInner, { __KONTUR_REACT_UI__: 'SideMenuItem' });
19
+ exports.SideMenuItem = Object.assign(SideMenuItemInner, { __KONTUR_REACT_UI__: 'SideMenuItem' });
@@ -1,12 +1,15 @@
1
- import { __assign, __rest } from "tslib";
2
- import React, { forwardRef } from 'react';
3
- import { cx } from '@skbkontur/react-ui/lib/theming/Emotion';
4
- import { ClickableElement } from '../internal/ClickableElement';
5
- import { jsStyles } from './SideMenuLink.styles';
6
- var SideMenuLinkInner = forwardRef(function (_a, ref) {
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.SideMenuLink = void 0;
4
+ var tslib_1 = require("tslib");
5
+ var react_1 = tslib_1.__importStar(require("react"));
6
+ var Emotion_1 = require("@skbkontur/react-ui/lib/theming/Emotion");
7
+ var ClickableElement_1 = require("../internal/ClickableElement");
8
+ var SideMenuLink_styles_1 = require("./SideMenuLink.styles");
9
+ var SideMenuLinkInner = (0, react_1.forwardRef)(function (_a, ref) {
7
10
  var _b;
8
- var className = _a.className, component = _a.component, rest = __rest(_a, ["className", "component"]);
9
- return (React.createElement(ClickableElement, __assign({}, rest, { ref: ref, element: component !== null && component !== void 0 ? component : 'a', className: cx((_b = {}, _b[jsStyles.link()] = true, _b), className) })));
11
+ var className = _a.className, component = _a.component, rest = tslib_1.__rest(_a, ["className", "component"]);
12
+ return (react_1.default.createElement(ClickableElement_1.ClickableElement, tslib_1.__assign({}, rest, { ref: ref, element: component !== null && component !== void 0 ? component : 'a', className: (0, Emotion_1.cx)((_b = {}, _b[SideMenuLink_styles_1.jsStyles.link()] = true, _b), className) })));
10
13
  });
11
14
  SideMenuLinkInner.displayName = 'SideMenuLink';
12
15
  /**
@@ -18,4 +21,4 @@ SideMenuLinkInner.displayName = 'SideMenuLink';
18
21
  *
19
22
  * @visibleName SideMenu.Link
20
23
  */
21
- export var SideMenuLink = Object.assign(SideMenuLinkInner, { __KONTUR_REACT_UI__: 'SideMenuLink' });
24
+ exports.SideMenuLink = Object.assign(SideMenuLinkInner, { __KONTUR_REACT_UI__: 'SideMenuLink' });
@@ -1,9 +1,12 @@
1
- import { __makeTemplateObject } from "tslib";
2
- import { css, memoizeStyle } from '@skbkontur/react-ui/lib/theming/Emotion';
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.jsStyles = void 0;
4
+ var tslib_1 = require("tslib");
5
+ var Emotion_1 = require("@skbkontur/react-ui/lib/theming/Emotion");
3
6
  var styles = {
4
7
  link: function () {
5
- return css(templateObject_1 || (templateObject_1 = __makeTemplateObject(["\n text-decoration: none;\n display: inline-block;\n "], ["\n text-decoration: none;\n display: inline-block;\n "])));
8
+ return (0, Emotion_1.css)(templateObject_1 || (templateObject_1 = tslib_1.__makeTemplateObject(["\n text-decoration: none;\n display: inline-block;\n "], ["\n text-decoration: none;\n display: inline-block;\n "])));
6
9
  },
7
10
  };
8
- export var jsStyles = memoizeStyle(styles);
11
+ exports.jsStyles = (0, Emotion_1.memoizeStyle)(styles);
9
12
  var templateObject_1;
@@ -0,0 +1,11 @@
1
+ import React from 'react';
2
+ import type { OperationResult } from '@skbkontur/operation-result';
3
+ import type { ImportFaults, WidgetApi, RenderFault, RenderDisposeFault } from '@skbkontur/bell-widget-npm-loader' assert { 'resolution-mode': 'import' };
4
+ export interface BellWidgetProps {
5
+ widgetApi: Promise<OperationResult<ImportFaults, WidgetApi>>;
6
+ onClose(): void;
7
+ onError?: (error: ImportFaults | RenderFault | RenderDisposeFault) => void;
8
+ renderErrorButton?: (error: ImportFaults | RenderFault, retryRender: () => void) => React.ReactNode;
9
+ renderErrorMessage?: (error: ImportFaults | RenderFault, retryRender: () => void) => React.ReactNode;
10
+ }
11
+ export declare const BellWidget: React.FC<BellWidgetProps>;
@@ -0,0 +1,87 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.BellWidget = void 0;
4
+ var tslib_1 = require("tslib");
5
+ var react_1 = tslib_1.__importStar(require("react"));
6
+ var XIcon20Regular_1 = require("@skbkontur/icons/icons/XIcon/XIcon20Regular");
7
+ var Center_1 = require("@skbkontur/react-ui/components/Center/Center");
8
+ var Spinner_1 = require("@skbkontur/react-ui/components/Spinner/Spinner");
9
+ var Button_1 = require("@skbkontur/react-ui/components/Button/Button");
10
+ var ThemeContext_1 = require("@skbkontur/react-ui/lib/theming/ThemeContext");
11
+ var Emotion_1 = require("@skbkontur/react-ui/lib/theming/Emotion");
12
+ var operation_result_1 = require("@skbkontur/operation-result");
13
+ var widget_consumer_react_utils_1 = require("@skbkontur/widget-consumer-react-utils");
14
+ var SideMenuDataTids_1 = require("../../SideMenuDataTids");
15
+ var ThemeHelpers_1 = require("../../lib/theming/ThemeHelpers");
16
+ var SideMenuTheme_1 = require("../../internal/themes/SideMenuTheme");
17
+ var BellWidgetView_styles_1 = require("./BellWidgetView.styles");
18
+ var SideMenuNotifications_1 = require("./SideMenuNotifications");
19
+ var BellWidgetError_1 = require("./BellWidgetError");
20
+ var getBtnTopPosition = function () {
21
+ var _a;
22
+ var bellDropDownItem = document.querySelector("[data-item=\"".concat(SideMenuNotifications_1.BELL_SIDE_MENU_DATA_ITEM, "\"]"));
23
+ return (_a = bellDropDownItem === null || bellDropDownItem === void 0 ? void 0 : bellDropDownItem.offsetTop) !== null && _a !== void 0 ? _a : 0;
24
+ };
25
+ var BellWidget = function (props) {
26
+ var widgetApi = props.widgetApi, onClose = props.onClose, renderErrorButton = props.renderErrorButton, renderErrorMessage = props.renderErrorMessage, onError = props.onError;
27
+ var btnTopPosition = getBtnTopPosition();
28
+ var theme = (0, ThemeHelpers_1.getSideMenuTheme)((0, react_1.useContext)(ThemeContext_1.ThemeContext));
29
+ var hasCustomWrapperHeight = theme.sideMenuNotificationsWrapperHeight !== SideMenuTheme_1.SideMenuTheme.sideMenuNotificationsWrapperHeight;
30
+ var renderWidget = (0, widget_consumer_react_utils_1.usePersistentCallback)(function (container) { return tslib_1.__awaiter(void 0, void 0, void 0, function () {
31
+ var api, wrapper, renderResult;
32
+ return tslib_1.__generator(this, function (_a) {
33
+ switch (_a.label) {
34
+ case 0: return [4 /*yield*/, widgetApi];
35
+ case 1:
36
+ api = _a.sent();
37
+ if ((0, operation_result_1.isFailure)(api)) {
38
+ return [2 /*return*/, (0, operation_result_1.createFailure)(api.fault)];
39
+ }
40
+ wrapper = container.parentElement;
41
+ if (wrapper) {
42
+ wrapper.classList.add(BellWidgetView_styles_1.jsStyles.widgetWrapper());
43
+ }
44
+ container.style.height = '100%';
45
+ return [4 /*yield*/, api.value.render({ container: container })];
46
+ case 2:
47
+ renderResult = _a.sent();
48
+ if ((0, operation_result_1.isFailure)(renderResult)) {
49
+ onError === null || onError === void 0 ? void 0 : onError(renderResult.fault);
50
+ return [2 /*return*/, (0, operation_result_1.createFailure)(renderResult.fault)];
51
+ }
52
+ return [2 /*return*/, (0, operation_result_1.createSuccess)({
53
+ dispose: function () { return tslib_1.__awaiter(void 0, void 0, void 0, function () {
54
+ var disposeResult;
55
+ return tslib_1.__generator(this, function (_a) {
56
+ switch (_a.label) {
57
+ case 0: return [4 /*yield*/, renderResult.value.dispose()];
58
+ case 1:
59
+ disposeResult = _a.sent();
60
+ if ((0, operation_result_1.isFailure)(disposeResult)) {
61
+ onError === null || onError === void 0 ? void 0 : onError(disposeResult.fault);
62
+ }
63
+ return [2 /*return*/];
64
+ }
65
+ });
66
+ }); },
67
+ })];
68
+ }
69
+ });
70
+ }); }, []);
71
+ var buttonCloseTheme = {
72
+ btnBorderRadiusMedium: '20px',
73
+ };
74
+ var wrapperHeightClass = hasCustomWrapperHeight
75
+ ? BellWidgetView_styles_1.customStyles.customHeight(theme.sideMenuNotificationsWrapperHeight)
76
+ : BellWidgetView_styles_1.customStyles.defaultHeight(btnTopPosition);
77
+ return (react_1.default.createElement("div", { className: (0, Emotion_1.cx)(BellWidgetView_styles_1.jsStyles.root(), wrapperHeightClass) },
78
+ react_1.default.createElement("div", { className: BellWidgetView_styles_1.jsStyles.header(), "data-tid": SideMenuDataTids_1.SideMenuDataTids.bellHeader },
79
+ react_1.default.createElement("span", { className: BellWidgetView_styles_1.jsStyles.headerText() }, "\u0423\u0432\u0435\u0434\u043E\u043C\u043B\u0435\u043D\u0438\u044F"),
80
+ react_1.default.createElement(Button_1.Button, { use: "text", size: "medium", width: 40, icon: react_1.default.createElement(XIcon20Regular_1.XIcon20Regular, null), onClick: onClose, theme: buttonCloseTheme, "data-tid": SideMenuDataTids_1.SideMenuDataTids.bellCloseButton, "aria-label": "\u0417\u0430\u043A\u0440\u044B\u0442\u044C \u0443\u0432\u0435\u0434\u043E\u043C\u043B\u0435\u043D\u0438\u044F" })),
81
+ react_1.default.createElement(widget_consumer_react_utils_1.WidgetRenderer, { renderWidget: renderWidget, renderFault: function (_a) {
82
+ var fault = _a.fault, retryRender = _a.retryRender;
83
+ return (react_1.default.createElement(BellWidgetError_1.BellWidgetError, { renderErrorButton: renderErrorButton, error: fault, renderErrorMessage: renderErrorMessage, retryRender: retryRender }));
84
+ }, loader: react_1.default.createElement(Center_1.Center, null,
85
+ react_1.default.createElement(Spinner_1.Spinner, { caption: "\u0417\u0430\u0433\u0440\u0443\u0436\u0430\u0435\u043C \u0443\u0432\u0435\u0434\u043E\u043C\u043B\u0435\u043D\u0438\u044F..." })) })));
86
+ };
87
+ exports.BellWidget = BellWidget;
@@ -0,0 +1,9 @@
1
+ import React from 'react';
2
+ import type { ImportFaults, RenderFault } from '@skbkontur/bell-widget-npm-loader' assert { 'resolution-mode': 'import' };
3
+ export interface BellWidgetErrorProps {
4
+ error: ImportFaults | RenderFault;
5
+ renderErrorButton?: (error: ImportFaults | RenderFault, retryRender: () => void) => React.ReactNode;
6
+ renderErrorMessage?: (error: ImportFaults | RenderFault, retryRender: () => void) => React.ReactNode;
7
+ retryRender: VoidFunction;
8
+ }
9
+ export declare const BellWidgetError: React.FC<BellWidgetErrorProps>;