@astral/ui 4.83.0 → 4.85.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/_mocks/LoggerMock/LoggerMock.d.ts +16 -0
- package/_mocks/LoggerMock/LoggerMock.js +18 -0
- package/_mocks/LoggerMock/index.d.ts +1 -0
- package/_mocks/LoggerMock/index.js +1 -0
- package/components/ConfigProvider/ConfigProvider.d.ts +7 -1
- package/components/ConfigProvider/ConfigProvider.js +14 -8
- package/components/DashboardLayout/Header/useLogic/useLogic.d.ts +1 -1
- package/components/HintPopover/HintPopover.d.ts +6 -0
- package/components/HintPopover/HintPopover.js +23 -0
- package/components/HintPopover/constants.d.ts +4 -0
- package/components/HintPopover/constants.js +5 -0
- package/components/HintPopover/index.d.ts +2 -0
- package/components/HintPopover/index.js +1 -0
- package/components/HintPopover/public.d.ts +2 -0
- package/components/HintPopover/public.js +1 -0
- package/components/HintPopover/styles.d.ts +38 -0
- package/components/HintPopover/styles.js +69 -0
- package/components/HintPopover/types.d.ts +24 -0
- package/components/HintPopover/types.js +1 -0
- package/components/NewPopover/NewPopover.d.ts +1 -1
- package/components/NewPopover/NewPopover.js +5 -4
- package/components/NewPopover/constants.d.ts +11 -0
- package/components/NewPopover/constants.js +11 -0
- package/components/NewPopover/styles.js +35 -30
- package/components/NewPopover/types.d.ts +5 -0
- package/components/NewPopover/useLogic/useLogic.d.ts +4 -3
- package/components/NewPopover/useLogic/useLogic.js +17 -8
- package/components/NewPopover/useLogic/utils/getArrowPadding/getArrowPadding.d.ts +14 -0
- package/components/NewPopover/useLogic/utils/getArrowPadding/getArrowPadding.js +12 -0
- package/components/NewPopover/useLogic/utils/getArrowPadding/index.d.ts +1 -0
- package/components/NewPopover/useLogic/utils/getArrowPadding/index.js +1 -0
- package/components/NewPopover/useLogic/utils/getPopoverCssVars/getPopoverCssVars.d.ts +2 -0
- package/components/NewPopover/useLogic/utils/getPopoverCssVars/getPopoverCssVars.js +6 -0
- package/components/NewPopover/useLogic/utils/getPopoverCssVars/index.d.ts +1 -0
- package/components/NewPopover/useLogic/utils/getPopoverCssVars/index.js +1 -0
- package/components/NewPopover/useLogic/utils/resolveAnchorNode/resolveAnchorNode.d.ts +6 -0
- package/components/NewPopover/useLogic/utils/resolveAnchorNode/resolveAnchorNode.js +8 -0
- package/components/Onboarding/Onboarding.js +13 -3
- package/components/Onboarding/core/ExitController/ExitController.d.ts +3 -1
- package/components/Onboarding/core/ExitController/ExitController.js +4 -1
- package/components/Onboarding/core/OnboardingTour/OnboardingTour.d.ts +3 -1
- package/components/Onboarding/core/OnboardingTour/OnboardingTour.js +25 -4
- package/components/Onboarding/core/ProgressStorage/ProgressStorage.d.ts +3 -1
- package/components/Onboarding/core/ProgressStorage/ProgressStorage.js +8 -4
- package/components/Onboarding/ui/StepStrategy/steps/HighlightStep/HighlightStep.js +3 -4
- package/components/Onboarding/ui/StepStrategy/steps/HighlightStep/styles.d.ts +6 -22
- package/components/Onboarding/ui/StepStrategy/steps/HighlightStep/styles.js +2 -45
- package/node/_mocks/LoggerMock/LoggerMock.d.ts +16 -0
- package/node/_mocks/LoggerMock/LoggerMock.js +23 -0
- package/node/_mocks/LoggerMock/index.d.ts +1 -0
- package/node/_mocks/LoggerMock/index.js +17 -0
- package/node/components/ConfigProvider/ConfigProvider.d.ts +7 -1
- package/node/components/ConfigProvider/ConfigProvider.js +13 -7
- package/node/components/DashboardLayout/Header/useLogic/useLogic.d.ts +1 -1
- package/node/components/HintPopover/HintPopover.d.ts +6 -0
- package/node/components/HintPopover/HintPopover.js +27 -0
- package/node/components/HintPopover/constants.d.ts +4 -0
- package/node/components/HintPopover/constants.js +8 -0
- package/node/components/HintPopover/index.d.ts +2 -0
- package/node/components/HintPopover/index.js +5 -0
- package/node/components/HintPopover/public.d.ts +2 -0
- package/node/components/HintPopover/public.js +5 -0
- package/node/components/HintPopover/styles.d.ts +38 -0
- package/node/components/HintPopover/styles.js +72 -0
- package/node/components/HintPopover/types.d.ts +24 -0
- package/node/components/HintPopover/types.js +2 -0
- package/node/components/NewPopover/NewPopover.d.ts +1 -1
- package/node/components/NewPopover/NewPopover.js +5 -4
- package/node/components/NewPopover/constants.d.ts +11 -0
- package/node/components/NewPopover/constants.js +12 -1
- package/node/components/NewPopover/styles.js +34 -29
- package/node/components/NewPopover/types.d.ts +5 -0
- package/node/components/NewPopover/useLogic/useLogic.d.ts +4 -3
- package/node/components/NewPopover/useLogic/useLogic.js +18 -9
- package/node/components/NewPopover/useLogic/utils/getArrowPadding/getArrowPadding.d.ts +14 -0
- package/node/components/NewPopover/useLogic/utils/getArrowPadding/getArrowPadding.js +16 -0
- package/node/components/NewPopover/useLogic/utils/getArrowPadding/index.d.ts +1 -0
- package/node/components/NewPopover/useLogic/utils/getArrowPadding/index.js +17 -0
- package/node/components/NewPopover/useLogic/utils/getPopoverCssVars/getPopoverCssVars.d.ts +2 -0
- package/node/components/NewPopover/useLogic/utils/getPopoverCssVars/getPopoverCssVars.js +10 -0
- package/node/components/NewPopover/useLogic/utils/getPopoverCssVars/index.d.ts +1 -0
- package/node/components/NewPopover/useLogic/utils/getPopoverCssVars/index.js +5 -0
- package/node/components/NewPopover/useLogic/utils/resolveAnchorNode/resolveAnchorNode.d.ts +6 -0
- package/node/components/NewPopover/{utils → useLogic/utils/resolveAnchorNode}/resolveAnchorNode.js +2 -2
- package/node/components/Onboarding/Onboarding.js +13 -3
- package/node/components/Onboarding/core/ExitController/ExitController.d.ts +3 -1
- package/node/components/Onboarding/core/ExitController/ExitController.js +4 -1
- package/node/components/Onboarding/core/OnboardingTour/OnboardingTour.d.ts +3 -1
- package/node/components/Onboarding/core/OnboardingTour/OnboardingTour.js +25 -4
- package/node/components/Onboarding/core/ProgressStorage/ProgressStorage.d.ts +3 -1
- package/node/components/Onboarding/core/ProgressStorage/ProgressStorage.js +8 -4
- package/node/components/Onboarding/ui/StepStrategy/steps/HighlightStep/HighlightStep.js +1 -2
- package/node/components/Onboarding/ui/StepStrategy/steps/HighlightStep/styles.d.ts +6 -22
- package/node/components/Onboarding/ui/StepStrategy/steps/HighlightStep/styles.js +3 -46
- package/node/services/Logger/Logger.d.ts +45 -0
- package/node/services/Logger/Logger.js +72 -0
- package/node/services/Logger/index.d.ts +10 -0
- package/node/services/Logger/index.js +17 -0
- package/package.json +1 -1
- package/services/Logger/Logger.d.ts +45 -0
- package/services/Logger/Logger.js +68 -0
- package/services/Logger/index.d.ts +10 -0
- package/services/Logger/index.js +12 -0
- package/components/NewPopover/utils/resolveAnchorNode.d.ts +0 -6
- package/components/NewPopover/utils/resolveAnchorNode.js +0 -8
- package/node/components/NewPopover/utils/resolveAnchorNode.d.ts +0 -6
- /package/components/NewPopover/{utils → useLogic/utils/resolveAnchorNode}/index.d.ts +0 -0
- /package/components/NewPopover/{utils → useLogic/utils/resolveAnchorNode}/index.js +0 -0
- /package/node/components/NewPopover/{utils → useLogic/utils/resolveAnchorNode}/index.d.ts +0 -0
- /package/node/components/NewPopover/{utils → useLogic/utils/resolveAnchorNode}/index.js +0 -0
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.HintPopover = void 0;
|
|
4
|
+
var HintPopover_1 = require("./HintPopover");
|
|
5
|
+
Object.defineProperty(exports, "HintPopover", { enumerable: true, get: function () { return HintPopover_1.HintPopover; } });
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.HintPopover = void 0;
|
|
4
|
+
var HintPopover_1 = require("./HintPopover");
|
|
5
|
+
Object.defineProperty(exports, "HintPopover", { enumerable: true, get: function () { return HintPopover_1.HintPopover; } });
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
/// <reference types="react" />
|
|
2
|
+
/**
|
|
3
|
+
* styled-обёртка над NewPopover: переопределяет его CSS-переменные — всегда
|
|
4
|
+
* увеличенный радиус, а для `dark` ещё тёмную подложку и текст (цвет стрелки
|
|
5
|
+
* подтянется из подложки сам).
|
|
6
|
+
*/
|
|
7
|
+
export declare const StyledHintPopover: import("@emotion/styled/dist/declarations/src/types").StyledComponent<import("../NewPopover").NewPopoverProps & {
|
|
8
|
+
theme?: import("@emotion/react").Theme | undefined;
|
|
9
|
+
}, {}, {}>;
|
|
10
|
+
export declare const Body: import("@emotion/styled/dist/declarations/src/types").StyledComponent<{
|
|
11
|
+
theme?: import("@emotion/react").Theme | undefined;
|
|
12
|
+
as?: import("react").ElementType<any, keyof import("react").JSX.IntrinsicElements> | undefined;
|
|
13
|
+
}, import("react").DetailedHTMLProps<import("react").HTMLAttributes<HTMLDivElement>, HTMLDivElement>, {}>;
|
|
14
|
+
export declare const Title: import("@emotion/styled/dist/declarations/src/types").StyledComponent<import("../Typography/types").TypographyPropsBase & {
|
|
15
|
+
color?: import("../Typography").TypographyColor | undefined;
|
|
16
|
+
variant?: import("../Typography").TypographyVariant | undefined;
|
|
17
|
+
colorIntensity?: import("../Typography").Intensity | undefined;
|
|
18
|
+
component?: import("../Typography/types").ComponentProp | undefined;
|
|
19
|
+
isUpperCase?: boolean | undefined;
|
|
20
|
+
withoutCalt?: boolean | undefined;
|
|
21
|
+
isTabularNums?: boolean | undefined;
|
|
22
|
+
} & import("react").HTMLAttributes<HTMLParagraphElement> & import("react").RefAttributes<HTMLSpanElement> & {
|
|
23
|
+
theme?: import("@emotion/react").Theme | undefined;
|
|
24
|
+
}, {}, {}>;
|
|
25
|
+
export declare const ActionRow: import("@emotion/styled/dist/declarations/src/types").StyledComponent<{
|
|
26
|
+
theme?: import("@emotion/react").Theme | undefined;
|
|
27
|
+
as?: import("react").ElementType<any, keyof import("react").JSX.IntrinsicElements> | undefined;
|
|
28
|
+
}, import("react").DetailedHTMLProps<import("react").HTMLAttributes<HTMLDivElement>, HTMLDivElement>, {}>;
|
|
29
|
+
export declare const CloseButton: import("@emotion/styled/dist/declarations/src/types").StyledComponent<Omit<import("..").WithoutEmotionSpecific<import("@mui/material").ButtonProps>, "color" | "component" | "size" | "variant" | "centerRipple" | "disableRipple" | "disableTouchRipple" | "focusRipple" | "TouchRippleProps" | "touchRippleRef" | "disableFocusRipple"> & {
|
|
30
|
+
variant?: "light" | "link" | "text" | "contained" | "outlined" | undefined;
|
|
31
|
+
loading?: boolean | undefined;
|
|
32
|
+
color?: "primary" | "success" | "warning" | "error" | "grey" | undefined;
|
|
33
|
+
component?: import("react").ElementType | undefined;
|
|
34
|
+
selected?: boolean | undefined;
|
|
35
|
+
size?: "large" | "medium" | undefined;
|
|
36
|
+
} & Omit<import("react").DetailedHTMLProps<import("react").ButtonHTMLAttributes<HTMLButtonElement>, HTMLButtonElement>, ""> & import("react").RefAttributes<HTMLButtonElement> & {
|
|
37
|
+
theme?: import("@emotion/react").Theme | undefined;
|
|
38
|
+
}, {}, {}>;
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.CloseButton = exports.ActionRow = exports.Title = exports.Body = exports.StyledHintPopover = void 0;
|
|
4
|
+
const IconButton_1 = require("../IconButton");
|
|
5
|
+
const NewPopover_1 = require("../NewPopover");
|
|
6
|
+
const styled_1 = require("../styled");
|
|
7
|
+
const Typography_1 = require("../Typography");
|
|
8
|
+
const constants_1 = require("./constants");
|
|
9
|
+
/**
|
|
10
|
+
* styled-обёртка над NewPopover: переопределяет его CSS-переменные — всегда
|
|
11
|
+
* увеличенный радиус, а для `dark` ещё тёмную подложку и текст (цвет стрелки
|
|
12
|
+
* подтянется из подложки сам).
|
|
13
|
+
*/
|
|
14
|
+
exports.StyledHintPopover = (0, styled_1.styled)(NewPopover_1.NewPopover) `
|
|
15
|
+
--popover-radius: calc(${({ theme }) => theme.shape.medium} * 2);
|
|
16
|
+
|
|
17
|
+
&.${constants_1.hintPopoverClassnames.dark} {
|
|
18
|
+
--popover-surface-color: ${({ theme }) => theme.palette.grey[900]};
|
|
19
|
+
--popover-text-color: ${({ theme }) => theme.palette.common.white};
|
|
20
|
+
}
|
|
21
|
+
`;
|
|
22
|
+
exports.Body = styled_1.styled.div `
|
|
23
|
+
position: relative;
|
|
24
|
+
|
|
25
|
+
display: flex;
|
|
26
|
+
flex-direction: column;
|
|
27
|
+
|
|
28
|
+
width: min(400px, calc(100vw - ${({ theme }) => theme.spacing(8)}));
|
|
29
|
+
padding: ${({ theme }) => theme.spacing(6)};
|
|
30
|
+
|
|
31
|
+
${({ theme }) => theme.breakpoints.down('sm')} {
|
|
32
|
+
padding: ${({ theme }) => theme.spacing(4)};
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
/* Крестик висит абсолютом в углу и идёт первым в DOM, поэтому следующий за ним
|
|
36
|
+
верхний элемент (заголовок, а без него — контент) резервирует место справа,
|
|
37
|
+
чтобы текст под крестик не залез. */
|
|
38
|
+
& > button + * {
|
|
39
|
+
padding-right: ${({ theme }) => theme.spacing(10)};
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
/* Тело — программная цель фокуса (tabIndex=-1) у потребителя; рамку убираем. */
|
|
43
|
+
&:focus {
|
|
44
|
+
outline: none;
|
|
45
|
+
}
|
|
46
|
+
`;
|
|
47
|
+
exports.Title = (0, styled_1.styled)(Typography_1.Typography) `
|
|
48
|
+
margin-bottom: ${({ theme }) => theme.spacing(4)};
|
|
49
|
+
|
|
50
|
+
${({ theme }) => theme.breakpoints.down('sm')} {
|
|
51
|
+
margin-bottom: ${({ theme }) => theme.spacing(1)};
|
|
52
|
+
}
|
|
53
|
+
`;
|
|
54
|
+
exports.ActionRow = styled_1.styled.div `
|
|
55
|
+
margin-top: ${({ theme }) => theme.spacing(6)};
|
|
56
|
+
|
|
57
|
+
${({ theme }) => theme.breakpoints.down('sm')} {
|
|
58
|
+
margin-top: ${({ theme }) => theme.spacing(4)};
|
|
59
|
+
}
|
|
60
|
+
`;
|
|
61
|
+
exports.CloseButton = (0, styled_1.styled)(IconButton_1.IconButton) `
|
|
62
|
+
position: absolute;
|
|
63
|
+
top: ${({ theme }) => theme.spacing(4)};
|
|
64
|
+
right: ${({ theme }) => theme.spacing(4)};
|
|
65
|
+
|
|
66
|
+
color: inherit;
|
|
67
|
+
|
|
68
|
+
${({ theme }) => theme.breakpoints.down('sm')} {
|
|
69
|
+
top: ${({ theme }) => theme.spacing(2)};
|
|
70
|
+
right: ${({ theme }) => theme.spacing(2)};
|
|
71
|
+
}
|
|
72
|
+
`;
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { type ReactNode, type Ref } from 'react';
|
|
2
|
+
import { type NewPopoverProps } from '../NewPopover';
|
|
3
|
+
/** Цвет подложки highlight-popover. */
|
|
4
|
+
export type HintPopoverVariant = 'light' | 'dark';
|
|
5
|
+
/** Параметры HintPopover */
|
|
6
|
+
export type HintPopoverProps = Omit<NewPopoverProps, 'hasArrow' | 'disableMobileDrawer' | 'title'> & {
|
|
7
|
+
/**
|
|
8
|
+
* Цвет подложки.
|
|
9
|
+
* @default 'dark'
|
|
10
|
+
*/
|
|
11
|
+
variant?: HintPopoverVariant;
|
|
12
|
+
/**
|
|
13
|
+
* Заголовок.
|
|
14
|
+
*/
|
|
15
|
+
title?: ReactNode;
|
|
16
|
+
/**
|
|
17
|
+
* Слот действий под контентом.
|
|
18
|
+
*/
|
|
19
|
+
action?: ReactNode;
|
|
20
|
+
/**
|
|
21
|
+
* Ref на узел контента — для фокус-трапа/определения кликов у потребителя.
|
|
22
|
+
*/
|
|
23
|
+
contentRef?: Ref<HTMLDivElement>;
|
|
24
|
+
};
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
import { type NewPopoverProps } from './types';
|
|
2
|
-
export declare const NewPopover: ({ children, onClose, isOpen, title, className, style, placement, anchorEl, disablePortal, disableAutoFocus, hasArrow, }: NewPopoverProps) => import("react/jsx-runtime").JSX.Element;
|
|
2
|
+
export declare const NewPopover: ({ children, onClose, isOpen, title, className, style, placement, anchorEl, disablePortal, disableAutoFocus, hasArrow, disableMobileDrawer, }: NewPopoverProps) => import("react/jsx-runtime").JSX.Element;
|
|
@@ -18,19 +18,20 @@ const animatedWrapperCva = (0, cva_1.cva)(constants_1.popoverClassnames.animated
|
|
|
18
18
|
},
|
|
19
19
|
},
|
|
20
20
|
});
|
|
21
|
-
const NewPopover = ({ children, onClose, isOpen, title, className, style, placement = 'bottom', anchorEl, disablePortal, disableAutoFocus, hasArrow, }) => {
|
|
22
|
-
const {
|
|
21
|
+
const NewPopover = ({ children, onClose, isOpen, title, className, style, placement = 'bottom', anchorEl, disablePortal, disableAutoFocus, hasArrow, disableMobileDrawer, }) => {
|
|
22
|
+
const { shouldRenderDrawer, isOpened, shouldRender, handleAnimationEnd, handleClose, setContainerRef, setArrowElement, mergedModifiers, animatedWrapperStyle, } = (0, useLogic_1.useLogic)({
|
|
23
23
|
isOpen,
|
|
24
24
|
anchorEl,
|
|
25
25
|
onClose,
|
|
26
26
|
disableAutoFocus,
|
|
27
27
|
hasArrow,
|
|
28
|
+
disableMobileDrawer,
|
|
28
29
|
});
|
|
29
|
-
if (
|
|
30
|
+
if (shouldRenderDrawer) {
|
|
30
31
|
return ((0, jsx_runtime_1.jsx)(BottomDrawer_1.BottomDrawer, { title: title, onClose: handleClose, open: isOpened, className: className, style: style, ModalProps: {
|
|
31
32
|
disableAutoFocus,
|
|
32
33
|
}, children: children }));
|
|
33
34
|
}
|
|
34
|
-
return ((0, jsx_runtime_1.jsx)(styles_1.StyledMuiPopper, { className: (0, classNames_1.classNames)(constants_1.popoverClassnames.root, className), style: style, open: shouldRender, placement: placement, anchorEl: anchorEl, disablePortal: disablePortal, modifiers: mergedModifiers, children: (0, jsx_runtime_1.jsxs)(styles_1.AnimatedWrapper, { className: animatedWrapperCva({ isOpen: isOpened, hasArrow }), onAnimationEnd: handleAnimationEnd, children: [hasArrow && ((0, jsx_runtime_1.jsx)(styles_1.PopoverArrow, { ref: setArrowElement, className: constants_1.popoverClassnames.arrow })), (0, jsx_runtime_1.jsx)(styles_1.InnerContainer, { ref: setContainerRef, tabIndex: -1, className: constants_1.popoverClassnames.innerContainer, children: children })] }) }));
|
|
35
|
+
return ((0, jsx_runtime_1.jsx)(styles_1.StyledMuiPopper, { className: (0, classNames_1.classNames)(constants_1.popoverClassnames.root, className), style: style, open: shouldRender, placement: placement, anchorEl: anchorEl, disablePortal: disablePortal, modifiers: mergedModifiers, children: (0, jsx_runtime_1.jsxs)(styles_1.AnimatedWrapper, { className: animatedWrapperCva({ isOpen: isOpened, hasArrow }), style: animatedWrapperStyle, onAnimationEnd: handleAnimationEnd, children: [hasArrow && ((0, jsx_runtime_1.jsx)(styles_1.PopoverArrow, { ref: setArrowElement, className: constants_1.popoverClassnames.arrow })), (0, jsx_runtime_1.jsx)(styles_1.InnerContainer, { ref: setContainerRef, tabIndex: -1, className: constants_1.popoverClassnames.innerContainer, children: children })] }) }));
|
|
35
36
|
};
|
|
36
37
|
exports.NewPopover = NewPopover;
|
|
@@ -7,6 +7,17 @@ export declare const popoverClassnames: {
|
|
|
7
7
|
animatedWrapperHasArrow: string;
|
|
8
8
|
arrow: string;
|
|
9
9
|
};
|
|
10
|
+
/** Основание и высота стрелки (px). */
|
|
11
|
+
export declare const ARROW_BASE = 23;
|
|
12
|
+
export declare const ARROW_HEIGHT = 16;
|
|
13
|
+
/** Отступ стрелки от углов (px). */
|
|
14
|
+
export declare const ARROW_PADDING = 24;
|
|
15
|
+
/**
|
|
16
|
+
* Мин. отступ стрелки от угла (px)
|
|
17
|
+
*/
|
|
18
|
+
export declare const ARROW_MIN_PADDING = 16;
|
|
19
|
+
/** Мин. «ход» стрелки вдоль кромки (px). */
|
|
20
|
+
export declare const ARROW_MIN_TRACK = 16;
|
|
10
21
|
/**
|
|
11
22
|
* Базовые модификаторы Popper.js. У MUI Popper (popper.js)
|
|
12
23
|
*/
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.DEFAULT_MODIFIERS = exports.popoverClassnames = void 0;
|
|
3
|
+
exports.DEFAULT_MODIFIERS = exports.ARROW_MIN_TRACK = exports.ARROW_MIN_PADDING = exports.ARROW_PADDING = exports.ARROW_HEIGHT = exports.ARROW_BASE = exports.popoverClassnames = void 0;
|
|
4
4
|
const createUIKitClassname_1 = require("../utils/createUIKitClassname");
|
|
5
5
|
exports.popoverClassnames = {
|
|
6
6
|
root: (0, createUIKitClassname_1.createUIKitClassname)('popover'),
|
|
@@ -10,6 +10,17 @@ exports.popoverClassnames = {
|
|
|
10
10
|
animatedWrapperHasArrow: (0, createUIKitClassname_1.createUIKitClassname)('popover__animated-wrapper_has-arrow'),
|
|
11
11
|
arrow: (0, createUIKitClassname_1.createUIKitClassname)('popover__arrow'),
|
|
12
12
|
};
|
|
13
|
+
/** Основание и высота стрелки (px). */
|
|
14
|
+
exports.ARROW_BASE = 23;
|
|
15
|
+
exports.ARROW_HEIGHT = 16;
|
|
16
|
+
/** Отступ стрелки от углов (px). */
|
|
17
|
+
exports.ARROW_PADDING = 24;
|
|
18
|
+
/**
|
|
19
|
+
* Мин. отступ стрелки от угла (px)
|
|
20
|
+
*/
|
|
21
|
+
exports.ARROW_MIN_PADDING = 16;
|
|
22
|
+
/** Мин. «ход» стрелки вдоль кромки (px). */
|
|
23
|
+
exports.ARROW_MIN_TRACK = 16;
|
|
13
24
|
/**
|
|
14
25
|
* Базовые модификаторы Popper.js. У MUI Popper (popper.js)
|
|
15
26
|
*/
|
|
@@ -9,11 +9,13 @@ const styled_1 = require("../styled");
|
|
|
9
9
|
const constants_1 = require("./constants");
|
|
10
10
|
exports.StyledMuiPopper = (0, styled_1.styled)(Popper_1.default) `
|
|
11
11
|
&.${constants_1.popoverClassnames.root} {
|
|
12
|
+
--arrow-base: ${constants_1.ARROW_BASE}px;
|
|
13
|
+
--arrow-height: ${constants_1.ARROW_HEIGHT}px;
|
|
14
|
+
|
|
12
15
|
z-index: ${({ theme }) => theme.zIndex.tooltip};
|
|
13
16
|
}
|
|
14
17
|
|
|
15
|
-
/* Anchor ушёл за скролл/вьюпорт —
|
|
16
|
-
Стрелка иначе тянется к пропавшему anchor и торчит криво — прячем её. */
|
|
18
|
+
/* Anchor ушёл за скролл/вьюпорт — прячем стрелку. */
|
|
17
19
|
&[data-popper-reference-hidden] .${constants_1.popoverClassnames.arrow} {
|
|
18
20
|
visibility: hidden;
|
|
19
21
|
}
|
|
@@ -42,7 +44,6 @@ exports.StyledMuiPopper = (0, styled_1.styled)(Popper_1.default) `
|
|
|
42
44
|
margin-left: ${({ theme }) => theme.spacing(2)};
|
|
43
45
|
}
|
|
44
46
|
|
|
45
|
-
/* Со стрелкой отступ больше */
|
|
46
47
|
&&[data-popper-placement*='top']
|
|
47
48
|
.${constants_1.popoverClassnames.animatedWrapperHasArrow} {
|
|
48
49
|
margin-bottom: ${({ theme }) => theme.spacing(4)};
|
|
@@ -64,54 +65,52 @@ exports.StyledMuiPopper = (0, styled_1.styled)(Popper_1.default) `
|
|
|
64
65
|
}
|
|
65
66
|
|
|
66
67
|
&&[data-popper-placement*='bottom'] .${constants_1.popoverClassnames.arrow} {
|
|
67
|
-
top: -
|
|
68
|
+
top: calc(var(--arrow-height) * -1);
|
|
68
69
|
|
|
69
|
-
width:
|
|
70
|
-
height:
|
|
70
|
+
width: var(--arrow-base);
|
|
71
|
+
height: var(--arrow-height);
|
|
71
72
|
|
|
72
73
|
&::before {
|
|
73
|
-
border-color: transparent transparent
|
|
74
|
-
|
|
75
|
-
border-width: 0 11.5px 16px;
|
|
74
|
+
border-color: transparent transparent var(--popover-surface-color, ${({ theme }) => theme.palette.background.paper});
|
|
75
|
+
border-width: 0 calc(var(--arrow-base) / 2) var(--arrow-height);
|
|
76
76
|
}
|
|
77
77
|
}
|
|
78
78
|
|
|
79
79
|
&&[data-popper-placement*='top'] .${constants_1.popoverClassnames.arrow} {
|
|
80
|
-
bottom: -
|
|
80
|
+
bottom: calc(var(--arrow-height) * -1);
|
|
81
81
|
|
|
82
|
-
width:
|
|
83
|
-
height:
|
|
82
|
+
width: var(--arrow-base);
|
|
83
|
+
height: var(--arrow-height);
|
|
84
84
|
|
|
85
85
|
&::before {
|
|
86
|
-
border-color: ${({ theme }) => theme.palette.background.paper} transparent
|
|
87
|
-
|
|
88
|
-
border-width: 16px 11.5px 0;
|
|
86
|
+
border-color: var(--popover-surface-color, ${({ theme }) => theme.palette.background.paper}) transparent transparent;
|
|
87
|
+
border-width: var(--arrow-height) calc(var(--arrow-base) / 2) 0;
|
|
89
88
|
}
|
|
90
89
|
}
|
|
91
90
|
|
|
92
91
|
&&[data-popper-placement*='right'] .${constants_1.popoverClassnames.arrow} {
|
|
93
|
-
left: -
|
|
92
|
+
left: calc(var(--arrow-height) * -1);
|
|
94
93
|
|
|
95
|
-
width:
|
|
96
|
-
height:
|
|
94
|
+
width: var(--arrow-height);
|
|
95
|
+
height: var(--arrow-base);
|
|
97
96
|
|
|
98
97
|
&::before {
|
|
99
|
-
border-color: transparent ${({ theme }) => theme.palette.background.paper}
|
|
100
|
-
transparent
|
|
101
|
-
border-width:
|
|
98
|
+
border-color: transparent var(--popover-surface-color, ${({ theme }) => theme.palette.background.paper}) transparent
|
|
99
|
+
transparent;
|
|
100
|
+
border-width: calc(var(--arrow-base) / 2) var(--arrow-height) calc(var(--arrow-base) / 2) 0;
|
|
102
101
|
}
|
|
103
102
|
}
|
|
104
103
|
|
|
105
104
|
&&[data-popper-placement*='left'] .${constants_1.popoverClassnames.arrow} {
|
|
106
|
-
right: -
|
|
105
|
+
right: calc(var(--arrow-height) * -1);
|
|
107
106
|
|
|
108
|
-
width:
|
|
109
|
-
height:
|
|
107
|
+
width: var(--arrow-height);
|
|
108
|
+
height: var(--arrow-base);
|
|
110
109
|
|
|
111
110
|
&::before {
|
|
112
111
|
border-color: transparent transparent transparent
|
|
113
|
-
${({ theme }) => theme.palette.background.paper};
|
|
114
|
-
border-width:
|
|
112
|
+
var(--popover-surface-color, ${({ theme }) => theme.palette.background.paper});
|
|
113
|
+
border-width: calc(var(--arrow-base) / 2) 0 calc(var(--arrow-base) / 2) var(--arrow-height);
|
|
115
114
|
}
|
|
116
115
|
}
|
|
117
116
|
`;
|
|
@@ -132,6 +131,8 @@ exports.PopoverArrow = styled_1.styled.span `
|
|
|
132
131
|
`;
|
|
133
132
|
exports.AnimatedWrapper = styled_1.styled.div `
|
|
134
133
|
position: relative;
|
|
134
|
+
|
|
135
|
+
filter: var(--drop-shadow);
|
|
135
136
|
|
|
136
137
|
animation: popover-grow-out
|
|
137
138
|
${({ theme }) => theme.transitions.duration.leavingScreen}ms
|
|
@@ -175,8 +176,12 @@ exports.InnerContainer = styled_1.styled.div `
|
|
|
175
176
|
&.${constants_1.popoverClassnames.innerContainer} {
|
|
176
177
|
overflow: hidden;
|
|
177
178
|
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
179
|
+
color: var(--popover-text-color, ${({ theme }) => theme.palette.text.primary});
|
|
180
|
+
|
|
181
|
+
background: var(
|
|
182
|
+
--popover-surface-color,
|
|
183
|
+
${({ theme }) => theme.palette.background.paper}
|
|
184
|
+
);
|
|
185
|
+
border-radius: var(--popover-radius, ${({ theme }) => theme.shape.medium});
|
|
181
186
|
}
|
|
182
187
|
`;
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
/// <reference types="react" />
|
|
2
2
|
import { type NewPopoverModifier, type NewPopoverProps } from '../types';
|
|
3
|
-
type UseLogicParams = Pick<NewPopoverProps, 'isOpen' | 'anchorEl' | 'onClose' | 'disableAutoFocus' | 'hasArrow'>;
|
|
4
|
-
export declare const useLogic: ({ isOpen, anchorEl, onClose, disableAutoFocus, hasArrow, }: UseLogicParams) => {
|
|
5
|
-
|
|
3
|
+
type UseLogicParams = Pick<NewPopoverProps, 'isOpen' | 'anchorEl' | 'onClose' | 'disableAutoFocus' | 'hasArrow' | 'disableMobileDrawer'>;
|
|
4
|
+
export declare const useLogic: ({ isOpen, anchorEl, onClose, disableAutoFocus, hasArrow, disableMobileDrawer, }: UseLogicParams) => {
|
|
5
|
+
shouldRenderDrawer: boolean;
|
|
6
6
|
isOpened: boolean;
|
|
7
7
|
shouldRender: boolean;
|
|
8
8
|
handleAnimationEnd: () => void;
|
|
@@ -11,5 +11,6 @@ export declare const useLogic: ({ isOpen, anchorEl, onClose, disableAutoFocus, h
|
|
|
11
11
|
arrowElement: HTMLSpanElement | null;
|
|
12
12
|
setArrowElement: import("react").Dispatch<import("react").SetStateAction<HTMLSpanElement | null>>;
|
|
13
13
|
mergedModifiers: NewPopoverModifier[];
|
|
14
|
+
animatedWrapperStyle: import("react").CSSProperties;
|
|
14
15
|
};
|
|
15
16
|
export {};
|
|
@@ -8,8 +8,10 @@ const useFocusTrapEffect_1 = require("../../useFocusTrapEffect");
|
|
|
8
8
|
const usePopoverAnimation_1 = require("../../usePopoverAnimation");
|
|
9
9
|
const useViewportType_1 = require("../../useViewportType");
|
|
10
10
|
const constants_1 = require("../constants");
|
|
11
|
-
const
|
|
12
|
-
const
|
|
11
|
+
const getArrowPadding_1 = require("./utils/getArrowPadding");
|
|
12
|
+
const getPopoverCssVars_1 = require("./utils/getPopoverCssVars");
|
|
13
|
+
const resolveAnchorNode_1 = require("./utils/resolveAnchorNode");
|
|
14
|
+
const useLogic = ({ isOpen, anchorEl, onClose, disableAutoFocus, hasArrow, disableMobileDrawer, }) => {
|
|
13
15
|
const containerRef = (0, react_1.useRef)(null);
|
|
14
16
|
const [isContainerMounted, setIsContainerMounted] = (0, react_1.useState)(false);
|
|
15
17
|
const [arrowElement, setArrowElement] = (0, react_1.useState)(null);
|
|
@@ -21,8 +23,10 @@ const useLogic = ({ isOpen, anchorEl, onClose, disableAutoFocus, hasArrow, }) =>
|
|
|
21
23
|
const isControlled = isOpen !== undefined;
|
|
22
24
|
const { isMobile } = (0, useViewportType_1.useViewportType)();
|
|
23
25
|
const { shouldRender, handleAnimationEnd } = (0, usePopoverAnimation_1.usePopoverAnimation)(isOpened);
|
|
24
|
-
const
|
|
25
|
-
const
|
|
26
|
+
const animatedWrapperStyle = (0, getPopoverCssVars_1.getPopoverCssVars)();
|
|
27
|
+
const shouldRenderDrawer = isMobile && !disableMobileDrawer;
|
|
28
|
+
const isPopoverActive = !shouldRenderDrawer && isOpened && isContainerMounted;
|
|
29
|
+
const anchorNode = (0, react_1.useMemo)(() => (0, resolveAnchorNode_1.resolveAnchorNode)(anchorEl), [anchorEl]);
|
|
26
30
|
const excludeNodes = (0, react_1.useMemo)(() => [anchorNode], [anchorNode]);
|
|
27
31
|
const handleClose = (event) => {
|
|
28
32
|
onClose?.(event);
|
|
@@ -30,18 +34,18 @@ const useLogic = ({ isOpen, anchorEl, onClose, disableAutoFocus, hasArrow, }) =>
|
|
|
30
34
|
(0, useClickAwayEffect_1.useClickAwayEffect)({
|
|
31
35
|
ref: containerRef,
|
|
32
36
|
onClickAway: handleClose,
|
|
33
|
-
isActive:
|
|
37
|
+
isActive: isPopoverActive && !isControlled,
|
|
34
38
|
preventBubbling: true,
|
|
35
39
|
excludeNodes,
|
|
36
40
|
});
|
|
37
41
|
(0, useEscapeClickEffect_1.useEscapeClickEffect)({
|
|
38
42
|
onEscape: handleClose,
|
|
39
|
-
isActive:
|
|
43
|
+
isActive: isPopoverActive,
|
|
40
44
|
preventBubbling: true,
|
|
41
45
|
});
|
|
42
46
|
(0, useFocusTrapEffect_1.useFocusTrapEffect)({
|
|
43
47
|
ref: containerRef,
|
|
44
|
-
isActive:
|
|
48
|
+
isActive: isPopoverActive && !disableAutoFocus,
|
|
45
49
|
returnFocusOnDeactivate: true,
|
|
46
50
|
escapeDeactivates: false,
|
|
47
51
|
clickOutsideDeactivates: false,
|
|
@@ -54,11 +58,15 @@ const useLogic = ({ isOpen, anchorEl, onClose, disableAutoFocus, hasArrow, }) =>
|
|
|
54
58
|
}
|
|
55
59
|
return [
|
|
56
60
|
...constants_1.DEFAULT_MODIFIERS,
|
|
57
|
-
{
|
|
61
|
+
{
|
|
62
|
+
name: 'arrow',
|
|
63
|
+
enabled: true,
|
|
64
|
+
options: { element: arrowElement, padding: getArrowPadding_1.getArrowPadding },
|
|
65
|
+
},
|
|
58
66
|
];
|
|
59
67
|
}, [hasArrow, arrowElement]);
|
|
60
68
|
return {
|
|
61
|
-
|
|
69
|
+
shouldRenderDrawer,
|
|
62
70
|
isOpened,
|
|
63
71
|
shouldRender,
|
|
64
72
|
handleAnimationEnd,
|
|
@@ -67,6 +75,7 @@ const useLogic = ({ isOpen, anchorEl, onClose, disableAutoFocus, hasArrow, }) =>
|
|
|
67
75
|
arrowElement,
|
|
68
76
|
setArrowElement,
|
|
69
77
|
mergedModifiers,
|
|
78
|
+
animatedWrapperStyle,
|
|
70
79
|
};
|
|
71
80
|
};
|
|
72
81
|
exports.useLogic = useLogic;
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { type NewPopoverPlacement } from '../../../types';
|
|
2
|
+
type ArrowPaddingArgs = {
|
|
3
|
+
/** Прямоугольник поповера от Popper (нужны только габариты). */
|
|
4
|
+
popper: {
|
|
5
|
+
width: number;
|
|
6
|
+
height: number;
|
|
7
|
+
};
|
|
8
|
+
placement: NewPopoverPlacement;
|
|
9
|
+
};
|
|
10
|
+
/**
|
|
11
|
+
* Фиксированный padding отобразил бы стрелку на скруглённый угол
|
|
12
|
+
*/
|
|
13
|
+
export declare const getArrowPadding: ({ popper, placement }: ArrowPaddingArgs) => number;
|
|
14
|
+
export {};
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.getArrowPadding = void 0;
|
|
4
|
+
const constants_1 = require("../../../constants");
|
|
5
|
+
/**
|
|
6
|
+
* Фиксированный padding отобразил бы стрелку на скруглённый угол
|
|
7
|
+
*/
|
|
8
|
+
const getArrowPadding = ({ popper, placement }) => {
|
|
9
|
+
const isVertical = placement.startsWith('left') || placement.startsWith('right');
|
|
10
|
+
const side = isVertical ? popper.height : popper.width;
|
|
11
|
+
const free = Math.max(0, side - constants_1.ARROW_BASE);
|
|
12
|
+
const centerPadding = free / 2;
|
|
13
|
+
const desiredPadding = Math.min(constants_1.ARROW_PADDING, Math.max(constants_1.ARROW_MIN_PADDING, (free - constants_1.ARROW_MIN_TRACK) / 2));
|
|
14
|
+
return Math.min(centerPadding, desiredPadding);
|
|
15
|
+
};
|
|
16
|
+
exports.getArrowPadding = getArrowPadding;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from './getArrowPadding';
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
14
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
|
+
};
|
|
16
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
+
__exportStar(require("./getArrowPadding"), exports);
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.getPopoverCssVars = void 0;
|
|
4
|
+
const getPopoverCssVars = () => ({
|
|
5
|
+
// Единая тень на весь силуэт (поповер + уголок стрелки).
|
|
6
|
+
// Эквивалент elevation[200], переведённого в drop-shadow(): box-shadow
|
|
7
|
+
// не умеет обводить единый силуэт поповера со стрелкой.
|
|
8
|
+
'--drop-shadow': 'drop-shadow(0px 0px 1px #072D574F) drop-shadow(0px 3px 5px #072D5733)',
|
|
9
|
+
});
|
|
10
|
+
exports.getPopoverCssVars = getPopoverCssVars;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { getPopoverCssVars } from './getPopoverCssVars';
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.getPopoverCssVars = void 0;
|
|
4
|
+
var getPopoverCssVars_1 = require("./getPopoverCssVars");
|
|
5
|
+
Object.defineProperty(exports, "getPopoverCssVars", { enumerable: true, get: function () { return getPopoverCssVars_1.getPopoverCssVars; } });
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import { type NewPopoverAnchorEl } from '../../../types';
|
|
2
|
+
/**
|
|
3
|
+
* Приводит anchorEl к DOM-ноде (virtual-anchor → null), чтобы исключить якорь из
|
|
4
|
+
* клика-вне — иначе клик по нему закрывал бы поповер.
|
|
5
|
+
*/
|
|
6
|
+
export declare const resolveAnchorNode: (anchorEl: NewPopoverAnchorEl | undefined) => Node | null;
|
package/node/components/NewPopover/{utils → useLogic/utils/resolveAnchorNode}/resolveAnchorNode.js
RENAMED
|
@@ -2,8 +2,8 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.resolveAnchorNode = void 0;
|
|
4
4
|
/**
|
|
5
|
-
*
|
|
6
|
-
*
|
|
5
|
+
* Приводит anchorEl к DOM-ноде (virtual-anchor → null), чтобы исключить якорь из
|
|
6
|
+
* клика-вне — иначе клик по нему закрывал бы поповер.
|
|
7
7
|
*/
|
|
8
8
|
const resolveAnchorNode = (anchorEl) => {
|
|
9
9
|
const value = typeof anchorEl === 'function' ? anchorEl() : anchorEl;
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.createOnboarding = exports.Onboarding = void 0;
|
|
4
|
+
const Logger_1 = require("../../services/Logger");
|
|
4
5
|
const ErrorService_1 = require("../services/ErrorService");
|
|
5
6
|
const ActiveStepStore_1 = require("./core/ActiveStepStore");
|
|
6
7
|
const OnboardingTour_1 = require("./core/OnboardingTour");
|
|
@@ -21,11 +22,20 @@ class Onboarding {
|
|
|
21
22
|
* Создаёт тур.
|
|
22
23
|
*/
|
|
23
24
|
this.createTour = (tourConfig) => {
|
|
25
|
+
const logger = (0, Logger_1.createLogger)('Onboarding', {
|
|
26
|
+
context: { tourName: tourConfig.name },
|
|
27
|
+
});
|
|
24
28
|
// Fail-fast на некорректной конфигурации до сборки тура.
|
|
25
|
-
|
|
29
|
+
try {
|
|
30
|
+
(0, validation_1.validateTourConfig)(tourConfig);
|
|
31
|
+
}
|
|
32
|
+
catch (error) {
|
|
33
|
+
logger.error('Некорректная конфигурация тура', error);
|
|
34
|
+
throw error;
|
|
35
|
+
}
|
|
26
36
|
// Ключ хранилища уникален на тур, поэтому стратегия строится на createTour.
|
|
27
|
-
const progressStorage = new ProgressStorage_1.ProgressStorage(this.saveStrategyFactory(tourConfig.name));
|
|
28
|
-
return new OnboardingTour_1.OnboardingTour(tourConfig, progressStorage, this.activeStepStore, this.errorService);
|
|
37
|
+
const progressStorage = new ProgressStorage_1.ProgressStorage(this.saveStrategyFactory(tourConfig.name), logger);
|
|
38
|
+
return new OnboardingTour_1.OnboardingTour(tourConfig, progressStorage, this.activeStepStore, this.errorService, logger);
|
|
29
39
|
};
|
|
30
40
|
/**
|
|
31
41
|
* Закрывает показанный сейчас тур.
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { type Logger } from '../../../../services/Logger';
|
|
1
2
|
export type ExitControllerParams = {
|
|
2
3
|
/**
|
|
3
4
|
* Фактическое закрытие тура. Вызывается только после подтверждения в
|
|
@@ -20,8 +21,9 @@ export type ExitControllerParams = {
|
|
|
20
21
|
*/
|
|
21
22
|
export declare class ExitController {
|
|
22
23
|
private readonly params;
|
|
24
|
+
private readonly logger;
|
|
23
25
|
private confirming;
|
|
24
|
-
constructor(params: ExitControllerParams);
|
|
26
|
+
constructor(params: ExitControllerParams, logger: Logger);
|
|
25
27
|
/**
|
|
26
28
|
* Идёт ли запрос подтверждения выхода.
|
|
27
29
|
*/
|