@ozen-ui/kit 0.14.0 → 0.16.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/__inner__/cjs/components/Modal/Modal.js +8 -2
- package/__inner__/cjs/components/Modal/components/ModalConsumer.d.ts +1 -3
- package/__inner__/cjs/components/Modal/components/ModalConsumer.js +1 -4
- package/__inner__/cjs/components/Snackbar/components/Snackbar/Snackbar.css +3 -0
- package/__inner__/cjs/components/ThemeProvider/ThemeProvider.css +3 -0
- package/__inner__/cjs/components/ThemeProvider/_color/Theme_color_bBusinessDefault.css +1 -0
- package/__inner__/cjs/components/ThemeProvider/_color/Theme_color_ozenDark.css +3 -2
- package/__inner__/cjs/components/ThemeProvider/_color/Theme_color_ozenDefault.css +2 -1
- package/__inner__/cjs/components/ThemeProvider/themes/helper.d.ts +1 -1
- package/__inner__/cjs/components/ThemeProvider/themes/helper.js +1 -0
- package/__inner__/cjs/hooks/useLockBodyScroll/useLockBodyScroll.d.ts +1 -0
- package/__inner__/cjs/hooks/useLockBodyScroll/useLockBodyScroll.js +49 -4
- package/__inner__/cjs/utils/getScrollBarSize/getScrollbarSize.d.ts +1 -0
- package/__inner__/cjs/utils/getScrollBarSize/getScrollbarSize.js +11 -0
- package/__inner__/cjs/utils/getScrollBarSize/index.d.ts +1 -0
- package/__inner__/cjs/utils/getScrollBarSize/index.js +4 -0
- package/__inner__/esm/components/Modal/Modal.js +8 -2
- package/__inner__/esm/components/Modal/components/ModalConsumer.d.ts +1 -3
- package/__inner__/esm/components/Modal/components/ModalConsumer.js +1 -4
- package/__inner__/esm/components/Snackbar/components/Snackbar/Snackbar.css +3 -0
- package/__inner__/esm/components/ThemeProvider/ThemeProvider.css +3 -0
- package/__inner__/esm/components/ThemeProvider/_color/Theme_color_bBusinessDefault.css +1 -0
- package/__inner__/esm/components/ThemeProvider/_color/Theme_color_ozenDark.css +3 -2
- package/__inner__/esm/components/ThemeProvider/_color/Theme_color_ozenDefault.css +2 -1
- package/__inner__/esm/components/ThemeProvider/themes/helper.d.ts +1 -1
- package/__inner__/esm/components/ThemeProvider/themes/helper.js +1 -0
- package/__inner__/esm/hooks/useLockBodyScroll/useLockBodyScroll.d.ts +1 -0
- package/__inner__/esm/hooks/useLockBodyScroll/useLockBodyScroll.js +48 -3
- package/__inner__/esm/utils/getScrollBarSize/getScrollbarSize.d.ts +1 -0
- package/__inner__/esm/utils/getScrollBarSize/getScrollbarSize.js +7 -0
- package/__inner__/esm/utils/getScrollBarSize/index.d.ts +1 -0
- package/__inner__/esm/utils/getScrollBarSize/index.js +1 -0
- package/package.json +1 -1
|
@@ -8,6 +8,7 @@ var react_transition_group_1 = require("react-transition-group");
|
|
|
8
8
|
var useClickOutside_1 = require("../../hooks/useClickOutside");
|
|
9
9
|
var useEventListener_1 = require("../../hooks/useEventListener");
|
|
10
10
|
var useFocusTrap_1 = require("../../hooks/useFocusTrap");
|
|
11
|
+
var useLockBodyScroll_1 = require("../../hooks/useLockBodyScroll");
|
|
11
12
|
var useMultiRef_1 = require("../../hooks/useMultiRef");
|
|
12
13
|
var classname_1 = require("../../utils/classname");
|
|
13
14
|
var isKey_1 = require("../../utils/isKey");
|
|
@@ -23,7 +24,8 @@ exports.Modal = (0, react_1.forwardRef)(function (_a, ref) {
|
|
|
23
24
|
var focusedElement = (0, react_1.useRef)(null);
|
|
24
25
|
var isClickOutSide = (0, react_1.useRef)(null);
|
|
25
26
|
var _h = tslib_1.__read((0, react_1.useState)(false), 2), openState = _h[0], setOpenState = _h[1];
|
|
26
|
-
var _j = (0,
|
|
27
|
+
var _j = tslib_1.__read((0, react_1.useState)(false), 2), opened = _j[0], setOpened = _j[1];
|
|
28
|
+
var _k = (0, index_1.useModalManager)(modalInnerRef, 1000, openState), isTop = _k.isTop, refsClickOutside = _k.refsClickOutside;
|
|
27
29
|
(0, useClickOutside_1.useClickOutside)({
|
|
28
30
|
refs: tslib_1.__spreadArray(tslib_1.__spreadArray([
|
|
29
31
|
modalInnerRef
|
|
@@ -34,10 +36,13 @@ exports.Modal = (0, react_1.forwardRef)(function (_a, ref) {
|
|
|
34
36
|
},
|
|
35
37
|
active: !disableClickOutside,
|
|
36
38
|
});
|
|
39
|
+
// Блокирует прокрутку основного окна приложения
|
|
40
|
+
(0, useLockBodyScroll_1.useLockBodyScroll)(opened && !disableScrollLock);
|
|
37
41
|
(0, react_1.useEffect)(function () {
|
|
38
42
|
var _a;
|
|
39
43
|
// Сохраняем фокус активного элемента до момента открытия всплывающего окна
|
|
40
44
|
if (open) {
|
|
45
|
+
setOpened(true);
|
|
41
46
|
isClickOutSide.current = null;
|
|
42
47
|
focusedElement.current =
|
|
43
48
|
document.activeElement;
|
|
@@ -57,6 +62,7 @@ exports.Modal = (0, react_1.forwardRef)(function (_a, ref) {
|
|
|
57
62
|
document.activeElement === document.body)) {
|
|
58
63
|
(_b = focusedElement.current) === null || _b === void 0 ? void 0 : _b.focus();
|
|
59
64
|
}
|
|
65
|
+
setOpened(false);
|
|
60
66
|
onExitedProp === null || onExitedProp === void 0 ? void 0 : onExitedProp();
|
|
61
67
|
}, [onExitedProp]);
|
|
62
68
|
// Нажатие клавиши {ESC}
|
|
@@ -73,6 +79,6 @@ exports.Modal = (0, react_1.forwardRef)(function (_a, ref) {
|
|
|
73
79
|
return (react_1.default.createElement(react_transition_group_1.CSSTransition, tslib_1.__assign({ classNames: (0, exports.cnModal)({ animation: true }), timeout: 300 }, transitionProps, { in: openState, onEnter: onEnter, onEntered: onEntered, onExit: onExit, onExited: onExited, unmountOnExit: !keepMounted, appear: true }),
|
|
74
80
|
react_1.default.createElement(Portal_1.Portal, tslib_1.__assign({}, other, { className: (0, exports.cnModal)({ hidden: keepMounted && !openState, hasBackdrop: hasBackdrop }, [className]), ref: ref }),
|
|
75
81
|
!hideBackdrop && (react_1.default.createElement(Backdrop_1.Backdrop, tslib_1.__assign({ zIndex: -1 }, backdropProps, { open: openState, className: backdropProps === null || backdropProps === void 0 ? void 0 : backdropProps.className }))),
|
|
76
|
-
react_1.default.createElement(components_1.ModalConsumer, tslib_1.__assign({}, windowProps, {
|
|
82
|
+
react_1.default.createElement(components_1.ModalConsumer, tslib_1.__assign({}, windowProps, { ref: (0, useMultiRef_1.useMultiRef)([modalInnerRef, trapRef, windowProps === null || windowProps === void 0 ? void 0 : windowProps.ref]) }), children))));
|
|
77
83
|
});
|
|
78
84
|
exports.Modal.displayName = 'Modal';
|
|
@@ -3,13 +3,10 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.ModalConsumer = void 0;
|
|
4
4
|
var tslib_1 = require("tslib");
|
|
5
5
|
var react_1 = tslib_1.__importStar(require("react"));
|
|
6
|
-
var useLockBodyScroll_1 = require("../../../hooks/useLockBodyScroll");
|
|
7
6
|
var Paper_1 = require("../../Paper");
|
|
8
7
|
var index_1 = require("../index");
|
|
9
8
|
exports.ModalConsumer = (0, react_1.forwardRef)(function (_a, ref) {
|
|
10
|
-
var children = _a.children, className = _a.className,
|
|
11
|
-
// Блокирует прокрутку основного окна приложения
|
|
12
|
-
(0, useLockBodyScroll_1.useLockBodyScroll)(open);
|
|
9
|
+
var children = _a.children, className = _a.className, other = tslib_1.__rest(_a, ["children", "className"]);
|
|
13
10
|
return (react_1.default.createElement(Paper_1.Paper, tslib_1.__assign({ radius: "s", background: "main" }, other, { className: (0, index_1.cnModal)('Window', [className]), tabIndex: -1, ref: ref }), children));
|
|
14
11
|
});
|
|
15
12
|
exports.ModalConsumer.displayName = 'ModalConsumer';
|
|
@@ -8,6 +8,9 @@
|
|
|
8
8
|
z-index: var(--z-index-snackbar);
|
|
9
9
|
margin: var(--space-m);
|
|
10
10
|
gap: var(--space-s);
|
|
11
|
+
|
|
12
|
+
/* workaround for a removed scroll bar on the body */
|
|
13
|
+
border-inline-end: var(--removed-body-scroll-bar-size) solid transparent;
|
|
11
14
|
}
|
|
12
15
|
|
|
13
16
|
.Snackbar_anchorHorizontal_left {
|
|
@@ -123,6 +123,7 @@
|
|
|
123
123
|
--color-accent-tertiary-hover: #585858;
|
|
124
124
|
--color-accent-tertiary-pressed: #686868;
|
|
125
125
|
--color-accent-disabled: #484848;
|
|
126
|
+
--color-accent-secondary-inverse: #808080;
|
|
126
127
|
--color-accent-main-inverse: #fff;
|
|
127
128
|
--color-additional-a1: #0b6abe;
|
|
128
129
|
--color-additional-a2: #1899e9;
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
--color-content-secondary: #949494;
|
|
4
4
|
--color-content-primary: #f5f5f5;
|
|
5
5
|
--color-content-tertiary: #707070;
|
|
6
|
-
--color-content-disabled: #
|
|
6
|
+
--color-content-disabled: #4e4e4e;
|
|
7
7
|
--color-content-ghost-disabled: rgb(255 255 255 / 47%);
|
|
8
8
|
--color-content-action: #43b741;
|
|
9
9
|
--color-content-action-hover: #379535;
|
|
@@ -122,7 +122,8 @@
|
|
|
122
122
|
--color-accent-tertiary-hover: #585858;
|
|
123
123
|
--color-accent-tertiary-pressed: #686868;
|
|
124
124
|
--color-accent-disable: #484848;
|
|
125
|
-
--color-accent-
|
|
125
|
+
--color-accent-secondary-inverse: #808080;
|
|
126
|
+
--color-accent-main-inverse: #dcdcdc;
|
|
126
127
|
--color-additional-a1: #0b6abe;
|
|
127
128
|
--color-additional-a2: #1899e9;
|
|
128
129
|
--color-additional-a3: #b3f1ff;
|
|
@@ -123,7 +123,8 @@
|
|
|
123
123
|
--color-accent-tertiary-hover: #585858;
|
|
124
124
|
--color-accent-tertiary-pressed: #686868;
|
|
125
125
|
--color-accent-disabled: #484848;
|
|
126
|
-
--color-accent-
|
|
126
|
+
--color-accent-secondary-inverse: #808080;
|
|
127
|
+
--color-accent-main-inverse: #dcdcdc;
|
|
127
128
|
--color-additional-a1: #0b6abe;
|
|
128
129
|
--color-additional-a2: #1899e9;
|
|
129
130
|
--color-additional-a3: #b3f1ff;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export declare const color: readonly ["--color-content-primary", "--color-content-secondary", "--color-additional-h3", "--color-content-tertiary", "--color-content-disabled", "--color-content-ghost-disabled", "--color-content-action", "--color-content-action-hover", "--color-content-action-pressed", "--color-content-action-dark", "--color-content-action-on", "--color-content-error", "--color-content-error-hover", "--color-content-error-pressed", "--color-content-error-dark", "--color-content-warning", "--color-content-warning-hover", "--color-content-warning-pressed", "--color-content-warning-dark", "--color-content-success", "--color-content-success-hover", "--color-content-success-pressed", "--color-content-success-dark", "--color-content-info", "--color-content-info-hover", "--color-content-info-pressed", "--color-content-info-dark", "--color-content-primary-inverse", "--color-content-accent-main", "--color-accent-main", "--color-content-accent-primary", "--color-accent-primary", "--color-content-accent-disabled", "--color-background-main", "--color-background-main-hover", "--color-background-main-pressed", "--color-background-primary", "--color-background-primary-hover", "--color-background-primary-pressed", "--color-background-secondary", "--color-background-secondary-hover", "--color-background-secondary-pressed", "--color-background-tertiary", "--color-background-tertiary-hover", "--color-background-tertiary-pressed", "--color-background-disabled", "--color-background-action", "--color-background-action-hover", "--color-background-action-pressed", "--color-background-action-active-disabled", "--color-background-action-light", "--color-background-action-light-hover", "--color-background-action-light-pressed", "--color-background-error", "--color-background-error-hover", "--color-background-error-pressed", "--color-background-error-light", "--color-background-error-light-hover", "--color-background-error-light-pressed", "--color-background-warning", "--color-background-warning-hover", "--color-background-warning-pressed", "--color-background-warning-light", "--color-background-warning-light-hover", "--color-background-warning-light-pressed", "--color-background-success", "--color-background-success-hover", "--color-background-success-pressed", "--color-background-success-light", "--color-background-success-light-hover", "--color-background-success-light-pressed", "--color-background-info", "--color-background-info-hover", "--color-background-info-pressed", "--color-background-info-light", "--color-background-info-light-hover", "--color-background-info-light-pressed", "--color-background-main-inverse", "--color-background-overlay", "--color-background-ghost", "--color-background-ghost-hover", "--color-background-ghost-pressed", "--color-background-ghost-disabled", "--color-background-accent-action-light-hover", "--color-background-accent-action-light-pressed", "--color-background-accent-error-light-hover", "--color-background-accent-error-light-pressed", "--color-background-accent-warning-light-hover", "--color-background-accent-warning-light-pressed", "--color-background-accent-success-light-hover", "--color-background-accent-success-light-pressed", "--color-background-accent-info-light-hover", "--color-background-accent-info-light-pressed", "--color-border-main", "--color-border-main-hover", "--color-border-main-pressed", "--color-border-secondary", "--color-border-secondary-hover", "--color-border-secondary-pressed", "--color-border-disabled", "--color-border-ghost-disabled", "--color-border-focused", "--color-border-action", "--color-border-action-hover", "--color-border-action-pressed", "--color-border-error", "--color-border-warning", "--color-border-success", "--color-border-info", "--color-border-main-on", "--color-border-accent-main", "--color-border-accent-disabled", "--color-border-accent-focused", "--color-accent-main-hover", "--color-accent-main-pressed", "--color-accent-primary-hover", "--color-accent-primary-pressed", "--color-accent-secondary", "--color-accent-secondary-hover", "--color-accent-secondary-pressed", "--color-accent-tertiary", "--color-accent-tertiary-hover", "--color-accent-tertiary-pressed", "--color-accent-disabled", "--color-accent-main-inverse", "--color-additional-a1", "--color-additional-a2", "--color-additional-a3", "--color-additional-b1", "--color-additional-b2", "--color-additional-b3", "--color-additional-c1", "--color-additional-c2", "--color-additional-c3", "--color-additional-d1", "--color-additional-d2", "--color-additional-d3", "--color-additional-e1", "--color-additional-e2", "--color-additional-e3", "--color-additional-f1", "--color-additional-f2", "--color-additional-f3", "--color-additional-g1", "--color-additional-g2", "--color-additional-g3", "--color-additional-h1", "--color-additional-h2"];
|
|
1
|
+
export declare const color: readonly ["--color-content-primary", "--color-content-secondary", "--color-additional-h3", "--color-content-tertiary", "--color-content-disabled", "--color-content-ghost-disabled", "--color-content-action", "--color-content-action-hover", "--color-content-action-pressed", "--color-content-action-dark", "--color-content-action-on", "--color-content-error", "--color-content-error-hover", "--color-content-error-pressed", "--color-content-error-dark", "--color-content-warning", "--color-content-warning-hover", "--color-content-warning-pressed", "--color-content-warning-dark", "--color-content-success", "--color-content-success-hover", "--color-content-success-pressed", "--color-content-success-dark", "--color-content-info", "--color-content-info-hover", "--color-content-info-pressed", "--color-content-info-dark", "--color-content-primary-inverse", "--color-content-accent-main", "--color-accent-main", "--color-content-accent-primary", "--color-accent-primary", "--color-content-accent-disabled", "--color-background-main", "--color-background-main-hover", "--color-background-main-pressed", "--color-background-primary", "--color-background-primary-hover", "--color-background-primary-pressed", "--color-background-secondary", "--color-background-secondary-hover", "--color-background-secondary-pressed", "--color-background-tertiary", "--color-background-tertiary-hover", "--color-background-tertiary-pressed", "--color-background-disabled", "--color-background-action", "--color-background-action-hover", "--color-background-action-pressed", "--color-background-action-active-disabled", "--color-background-action-light", "--color-background-action-light-hover", "--color-background-action-light-pressed", "--color-background-error", "--color-background-error-hover", "--color-background-error-pressed", "--color-background-error-light", "--color-background-error-light-hover", "--color-background-error-light-pressed", "--color-background-warning", "--color-background-warning-hover", "--color-background-warning-pressed", "--color-background-warning-light", "--color-background-warning-light-hover", "--color-background-warning-light-pressed", "--color-background-success", "--color-background-success-hover", "--color-background-success-pressed", "--color-background-success-light", "--color-background-success-light-hover", "--color-background-success-light-pressed", "--color-background-info", "--color-background-info-hover", "--color-background-info-pressed", "--color-background-info-light", "--color-background-info-light-hover", "--color-background-info-light-pressed", "--color-background-main-inverse", "--color-background-overlay", "--color-background-ghost", "--color-background-ghost-hover", "--color-background-ghost-pressed", "--color-background-ghost-disabled", "--color-background-accent-action-light-hover", "--color-background-accent-action-light-pressed", "--color-background-accent-error-light-hover", "--color-background-accent-error-light-pressed", "--color-background-accent-warning-light-hover", "--color-background-accent-warning-light-pressed", "--color-background-accent-success-light-hover", "--color-background-accent-success-light-pressed", "--color-background-accent-info-light-hover", "--color-background-accent-info-light-pressed", "--color-border-main", "--color-border-main-hover", "--color-border-main-pressed", "--color-border-secondary", "--color-border-secondary-hover", "--color-border-secondary-pressed", "--color-border-disabled", "--color-border-ghost-disabled", "--color-border-focused", "--color-border-action", "--color-border-action-hover", "--color-border-action-pressed", "--color-border-error", "--color-border-warning", "--color-border-success", "--color-border-info", "--color-border-main-on", "--color-border-accent-main", "--color-border-accent-disabled", "--color-border-accent-focused", "--color-accent-main-hover", "--color-accent-main-pressed", "--color-accent-primary-hover", "--color-accent-primary-pressed", "--color-accent-secondary", "--color-accent-secondary-hover", "--color-accent-secondary-pressed", "--color-accent-tertiary", "--color-accent-tertiary-hover", "--color-accent-tertiary-pressed", "--color-accent-disabled", "--color-accent-secondary-inverse", "--color-accent-main-inverse", "--color-additional-a1", "--color-additional-a2", "--color-additional-a3", "--color-additional-b1", "--color-additional-b2", "--color-additional-b3", "--color-additional-c1", "--color-additional-c2", "--color-additional-c3", "--color-additional-d1", "--color-additional-d2", "--color-additional-d3", "--color-additional-e1", "--color-additional-e2", "--color-additional-e3", "--color-additional-f1", "--color-additional-f2", "--color-additional-f3", "--color-additional-g1", "--color-additional-g2", "--color-additional-g3", "--color-additional-h1", "--color-additional-h2"];
|
|
2
2
|
export declare const borderRadius: readonly ["--border-radius-l", "--border-radius-xl", "--border-radius-m", "--border-radius-s", "--border-radius-xs", "--border-radius-2xs"];
|
|
3
3
|
export declare const borderWidth: readonly ["--border-width-s", "--border-width-m"];
|
|
4
4
|
export declare const shadow: readonly ["--shadow-l", "--shadow-m", "--shadow-s"];
|
|
@@ -126,6 +126,7 @@ exports.color = [
|
|
|
126
126
|
'--color-accent-tertiary-hover',
|
|
127
127
|
'--color-accent-tertiary-pressed',
|
|
128
128
|
'--color-accent-disabled',
|
|
129
|
+
'--color-accent-secondary-inverse',
|
|
129
130
|
'--color-accent-main-inverse',
|
|
130
131
|
'--color-additional-a1',
|
|
131
132
|
'--color-additional-a2',
|
|
@@ -1,17 +1,62 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.useLockBodyScroll = void 0;
|
|
3
|
+
exports.useLockBodyScroll = exports.FIXED_CLASSNAME = void 0;
|
|
4
|
+
var getScrollBarSize_1 = require("../../utils/getScrollBarSize");
|
|
4
5
|
var useIsomorphicEffect_1 = require("../useIsomorphicEffect");
|
|
6
|
+
exports.FIXED_CLASSNAME = 'ScrollLock-fixed';
|
|
7
|
+
var getPaddingRight = function (el) {
|
|
8
|
+
return parseInt(window.getComputedStyle(el).paddingRight, 10) || 0;
|
|
9
|
+
};
|
|
5
10
|
function useLockBodyScroll(active) {
|
|
6
11
|
if (active === void 0) { active = false; }
|
|
7
12
|
(0, useIsomorphicEffect_1.useIsomorphicEffect)(function () {
|
|
8
13
|
if (!active) {
|
|
9
14
|
return undefined;
|
|
10
15
|
}
|
|
11
|
-
var
|
|
12
|
-
|
|
16
|
+
var restoreStyle = [];
|
|
17
|
+
// Вычисляем все фиксированные элементы
|
|
18
|
+
var fixedBlocks = document.querySelectorAll(".".concat(exports.FIXED_CLASSNAME));
|
|
19
|
+
// Получаем ширину полосы прокрутки
|
|
20
|
+
var paddingOffset = (0, getScrollBarSize_1.getScrollbarSize)();
|
|
21
|
+
restoreStyle.push({
|
|
22
|
+
el: document.body,
|
|
23
|
+
value: document.body.style.overflow,
|
|
24
|
+
property: 'overflow',
|
|
25
|
+
});
|
|
26
|
+
// Блокируем полосу прокрутки
|
|
27
|
+
document.body.style.setProperty('overflow', 'hidden');
|
|
28
|
+
// Если прокрутки у body нет, то ничего не делаем
|
|
29
|
+
if (paddingOffset) {
|
|
30
|
+
// Получаем текущий отступ справа у элемента body
|
|
31
|
+
var originalPaddingRight = getPaddingRight(document.body);
|
|
32
|
+
restoreStyle.push({
|
|
33
|
+
el: document.body,
|
|
34
|
+
value: document.body.style.paddingRight,
|
|
35
|
+
property: 'padding-right',
|
|
36
|
+
});
|
|
37
|
+
// Назначаем body отступ равный ширине полосы прокрутки (учитываем текущий отступ body)
|
|
38
|
+
document.body.style.setProperty('padding-right', "".concat(originalPaddingRight + paddingOffset, "px"));
|
|
39
|
+
restoreStyle.push({
|
|
40
|
+
el: document.body,
|
|
41
|
+
value: '',
|
|
42
|
+
property: '--removed-body-scroll-bar-size',
|
|
43
|
+
});
|
|
44
|
+
document.body.style.setProperty('--removed-body-scroll-bar-size', "".concat(paddingOffset, "px"));
|
|
45
|
+
[].forEach.call(fixedBlocks, function (el) {
|
|
46
|
+
var originalPaddingRight = getPaddingRight(el);
|
|
47
|
+
restoreStyle.push({
|
|
48
|
+
el: el,
|
|
49
|
+
value: el.style.paddingRight,
|
|
50
|
+
property: 'padding-right',
|
|
51
|
+
});
|
|
52
|
+
el.style.setProperty('padding-right', "".concat(originalPaddingRight + paddingOffset, "px"));
|
|
53
|
+
});
|
|
54
|
+
}
|
|
13
55
|
return function () {
|
|
14
|
-
|
|
56
|
+
restoreStyle.forEach(function (_a) {
|
|
57
|
+
var el = _a.el, value = _a.value, property = _a.property;
|
|
58
|
+
el.style.setProperty(property, value || '');
|
|
59
|
+
});
|
|
15
60
|
};
|
|
16
61
|
}, [active]);
|
|
17
62
|
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare const getScrollbarSize: (el?: HTMLElement) => number;
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.getScrollbarSize = void 0;
|
|
4
|
+
var getScrollbarSize = function (el) {
|
|
5
|
+
if (el === void 0) { el = document.body; }
|
|
6
|
+
if (el === document.body) {
|
|
7
|
+
return window.innerWidth - el.offsetWidth;
|
|
8
|
+
}
|
|
9
|
+
return el.offsetWidth - el.scrollWidth;
|
|
10
|
+
};
|
|
11
|
+
exports.getScrollbarSize = getScrollbarSize;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from './getScrollbarSize';
|
|
@@ -5,6 +5,7 @@ import { CSSTransition } from 'react-transition-group';
|
|
|
5
5
|
import { useClickOutside } from '../../hooks/useClickOutside';
|
|
6
6
|
import { useEventListener } from '../../hooks/useEventListener';
|
|
7
7
|
import { useFocusTrap } from '../../hooks/useFocusTrap';
|
|
8
|
+
import { useLockBodyScroll } from '../../hooks/useLockBodyScroll';
|
|
8
9
|
import { useMultiRef } from '../../hooks/useMultiRef';
|
|
9
10
|
import { cn } from '../../utils/classname';
|
|
10
11
|
import { isKey } from '../../utils/isKey';
|
|
@@ -20,7 +21,8 @@ export var Modal = forwardRef(function (_a, ref) {
|
|
|
20
21
|
var focusedElement = useRef(null);
|
|
21
22
|
var isClickOutSide = useRef(null);
|
|
22
23
|
var _h = __read(useState(false), 2), openState = _h[0], setOpenState = _h[1];
|
|
23
|
-
var _j =
|
|
24
|
+
var _j = __read(useState(false), 2), opened = _j[0], setOpened = _j[1];
|
|
25
|
+
var _k = useModalManager(modalInnerRef, 1000, openState), isTop = _k.isTop, refsClickOutside = _k.refsClickOutside;
|
|
24
26
|
useClickOutside({
|
|
25
27
|
refs: __spreadArray(__spreadArray([
|
|
26
28
|
modalInnerRef
|
|
@@ -31,10 +33,13 @@ export var Modal = forwardRef(function (_a, ref) {
|
|
|
31
33
|
},
|
|
32
34
|
active: !disableClickOutside,
|
|
33
35
|
});
|
|
36
|
+
// Блокирует прокрутку основного окна приложения
|
|
37
|
+
useLockBodyScroll(opened && !disableScrollLock);
|
|
34
38
|
useEffect(function () {
|
|
35
39
|
var _a;
|
|
36
40
|
// Сохраняем фокус активного элемента до момента открытия всплывающего окна
|
|
37
41
|
if (open) {
|
|
42
|
+
setOpened(true);
|
|
38
43
|
isClickOutSide.current = null;
|
|
39
44
|
focusedElement.current =
|
|
40
45
|
document.activeElement;
|
|
@@ -54,6 +59,7 @@ export var Modal = forwardRef(function (_a, ref) {
|
|
|
54
59
|
document.activeElement === document.body)) {
|
|
55
60
|
(_b = focusedElement.current) === null || _b === void 0 ? void 0 : _b.focus();
|
|
56
61
|
}
|
|
62
|
+
setOpened(false);
|
|
57
63
|
onExitedProp === null || onExitedProp === void 0 ? void 0 : onExitedProp();
|
|
58
64
|
}, [onExitedProp]);
|
|
59
65
|
// Нажатие клавиши {ESC}
|
|
@@ -70,6 +76,6 @@ export var Modal = forwardRef(function (_a, ref) {
|
|
|
70
76
|
return (React.createElement(CSSTransition, __assign({ classNames: cnModal({ animation: true }), timeout: 300 }, transitionProps, { in: openState, onEnter: onEnter, onEntered: onEntered, onExit: onExit, onExited: onExited, unmountOnExit: !keepMounted, appear: true }),
|
|
71
77
|
React.createElement(Portal, __assign({}, other, { className: cnModal({ hidden: keepMounted && !openState, hasBackdrop: hasBackdrop }, [className]), ref: ref }),
|
|
72
78
|
!hideBackdrop && (React.createElement(Backdrop, __assign({ zIndex: -1 }, backdropProps, { open: openState, className: backdropProps === null || backdropProps === void 0 ? void 0 : backdropProps.className }))),
|
|
73
|
-
React.createElement(ModalConsumer, __assign({}, windowProps, {
|
|
79
|
+
React.createElement(ModalConsumer, __assign({}, windowProps, { ref: useMultiRef([modalInnerRef, trapRef, windowProps === null || windowProps === void 0 ? void 0 : windowProps.ref]) }), children))));
|
|
74
80
|
});
|
|
75
81
|
Modal.displayName = 'Modal';
|
|
@@ -1,12 +1,9 @@
|
|
|
1
1
|
import { __assign, __rest } from "tslib";
|
|
2
2
|
import React, { forwardRef } from 'react';
|
|
3
|
-
import { useLockBodyScroll } from '../../../hooks/useLockBodyScroll';
|
|
4
3
|
import { Paper } from '../../Paper';
|
|
5
4
|
import { cnModal } from '../index';
|
|
6
5
|
export var ModalConsumer = forwardRef(function (_a, ref) {
|
|
7
|
-
var children = _a.children, className = _a.className,
|
|
8
|
-
// Блокирует прокрутку основного окна приложения
|
|
9
|
-
useLockBodyScroll(open);
|
|
6
|
+
var children = _a.children, className = _a.className, other = __rest(_a, ["children", "className"]);
|
|
10
7
|
return (React.createElement(Paper, __assign({ radius: "s", background: "main" }, other, { className: cnModal('Window', [className]), tabIndex: -1, ref: ref }), children));
|
|
11
8
|
});
|
|
12
9
|
ModalConsumer.displayName = 'ModalConsumer';
|
|
@@ -8,6 +8,9 @@
|
|
|
8
8
|
z-index: var(--z-index-snackbar);
|
|
9
9
|
margin: var(--space-m);
|
|
10
10
|
gap: var(--space-s);
|
|
11
|
+
|
|
12
|
+
/* workaround for a removed scroll bar on the body */
|
|
13
|
+
border-inline-end: var(--removed-body-scroll-bar-size) solid transparent;
|
|
11
14
|
}
|
|
12
15
|
|
|
13
16
|
.Snackbar_anchorHorizontal_left {
|
|
@@ -123,6 +123,7 @@
|
|
|
123
123
|
--color-accent-tertiary-hover: #585858;
|
|
124
124
|
--color-accent-tertiary-pressed: #686868;
|
|
125
125
|
--color-accent-disabled: #484848;
|
|
126
|
+
--color-accent-secondary-inverse: #808080;
|
|
126
127
|
--color-accent-main-inverse: #fff;
|
|
127
128
|
--color-additional-a1: #0b6abe;
|
|
128
129
|
--color-additional-a2: #1899e9;
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
--color-content-secondary: #949494;
|
|
4
4
|
--color-content-primary: #f5f5f5;
|
|
5
5
|
--color-content-tertiary: #707070;
|
|
6
|
-
--color-content-disabled: #
|
|
6
|
+
--color-content-disabled: #4e4e4e;
|
|
7
7
|
--color-content-ghost-disabled: rgb(255 255 255 / 47%);
|
|
8
8
|
--color-content-action: #43b741;
|
|
9
9
|
--color-content-action-hover: #379535;
|
|
@@ -122,7 +122,8 @@
|
|
|
122
122
|
--color-accent-tertiary-hover: #585858;
|
|
123
123
|
--color-accent-tertiary-pressed: #686868;
|
|
124
124
|
--color-accent-disable: #484848;
|
|
125
|
-
--color-accent-
|
|
125
|
+
--color-accent-secondary-inverse: #808080;
|
|
126
|
+
--color-accent-main-inverse: #dcdcdc;
|
|
126
127
|
--color-additional-a1: #0b6abe;
|
|
127
128
|
--color-additional-a2: #1899e9;
|
|
128
129
|
--color-additional-a3: #b3f1ff;
|
|
@@ -123,7 +123,8 @@
|
|
|
123
123
|
--color-accent-tertiary-hover: #585858;
|
|
124
124
|
--color-accent-tertiary-pressed: #686868;
|
|
125
125
|
--color-accent-disabled: #484848;
|
|
126
|
-
--color-accent-
|
|
126
|
+
--color-accent-secondary-inverse: #808080;
|
|
127
|
+
--color-accent-main-inverse: #dcdcdc;
|
|
127
128
|
--color-additional-a1: #0b6abe;
|
|
128
129
|
--color-additional-a2: #1899e9;
|
|
129
130
|
--color-additional-a3: #b3f1ff;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export declare const color: readonly ["--color-content-primary", "--color-content-secondary", "--color-additional-h3", "--color-content-tertiary", "--color-content-disabled", "--color-content-ghost-disabled", "--color-content-action", "--color-content-action-hover", "--color-content-action-pressed", "--color-content-action-dark", "--color-content-action-on", "--color-content-error", "--color-content-error-hover", "--color-content-error-pressed", "--color-content-error-dark", "--color-content-warning", "--color-content-warning-hover", "--color-content-warning-pressed", "--color-content-warning-dark", "--color-content-success", "--color-content-success-hover", "--color-content-success-pressed", "--color-content-success-dark", "--color-content-info", "--color-content-info-hover", "--color-content-info-pressed", "--color-content-info-dark", "--color-content-primary-inverse", "--color-content-accent-main", "--color-accent-main", "--color-content-accent-primary", "--color-accent-primary", "--color-content-accent-disabled", "--color-background-main", "--color-background-main-hover", "--color-background-main-pressed", "--color-background-primary", "--color-background-primary-hover", "--color-background-primary-pressed", "--color-background-secondary", "--color-background-secondary-hover", "--color-background-secondary-pressed", "--color-background-tertiary", "--color-background-tertiary-hover", "--color-background-tertiary-pressed", "--color-background-disabled", "--color-background-action", "--color-background-action-hover", "--color-background-action-pressed", "--color-background-action-active-disabled", "--color-background-action-light", "--color-background-action-light-hover", "--color-background-action-light-pressed", "--color-background-error", "--color-background-error-hover", "--color-background-error-pressed", "--color-background-error-light", "--color-background-error-light-hover", "--color-background-error-light-pressed", "--color-background-warning", "--color-background-warning-hover", "--color-background-warning-pressed", "--color-background-warning-light", "--color-background-warning-light-hover", "--color-background-warning-light-pressed", "--color-background-success", "--color-background-success-hover", "--color-background-success-pressed", "--color-background-success-light", "--color-background-success-light-hover", "--color-background-success-light-pressed", "--color-background-info", "--color-background-info-hover", "--color-background-info-pressed", "--color-background-info-light", "--color-background-info-light-hover", "--color-background-info-light-pressed", "--color-background-main-inverse", "--color-background-overlay", "--color-background-ghost", "--color-background-ghost-hover", "--color-background-ghost-pressed", "--color-background-ghost-disabled", "--color-background-accent-action-light-hover", "--color-background-accent-action-light-pressed", "--color-background-accent-error-light-hover", "--color-background-accent-error-light-pressed", "--color-background-accent-warning-light-hover", "--color-background-accent-warning-light-pressed", "--color-background-accent-success-light-hover", "--color-background-accent-success-light-pressed", "--color-background-accent-info-light-hover", "--color-background-accent-info-light-pressed", "--color-border-main", "--color-border-main-hover", "--color-border-main-pressed", "--color-border-secondary", "--color-border-secondary-hover", "--color-border-secondary-pressed", "--color-border-disabled", "--color-border-ghost-disabled", "--color-border-focused", "--color-border-action", "--color-border-action-hover", "--color-border-action-pressed", "--color-border-error", "--color-border-warning", "--color-border-success", "--color-border-info", "--color-border-main-on", "--color-border-accent-main", "--color-border-accent-disabled", "--color-border-accent-focused", "--color-accent-main-hover", "--color-accent-main-pressed", "--color-accent-primary-hover", "--color-accent-primary-pressed", "--color-accent-secondary", "--color-accent-secondary-hover", "--color-accent-secondary-pressed", "--color-accent-tertiary", "--color-accent-tertiary-hover", "--color-accent-tertiary-pressed", "--color-accent-disabled", "--color-accent-main-inverse", "--color-additional-a1", "--color-additional-a2", "--color-additional-a3", "--color-additional-b1", "--color-additional-b2", "--color-additional-b3", "--color-additional-c1", "--color-additional-c2", "--color-additional-c3", "--color-additional-d1", "--color-additional-d2", "--color-additional-d3", "--color-additional-e1", "--color-additional-e2", "--color-additional-e3", "--color-additional-f1", "--color-additional-f2", "--color-additional-f3", "--color-additional-g1", "--color-additional-g2", "--color-additional-g3", "--color-additional-h1", "--color-additional-h2"];
|
|
1
|
+
export declare const color: readonly ["--color-content-primary", "--color-content-secondary", "--color-additional-h3", "--color-content-tertiary", "--color-content-disabled", "--color-content-ghost-disabled", "--color-content-action", "--color-content-action-hover", "--color-content-action-pressed", "--color-content-action-dark", "--color-content-action-on", "--color-content-error", "--color-content-error-hover", "--color-content-error-pressed", "--color-content-error-dark", "--color-content-warning", "--color-content-warning-hover", "--color-content-warning-pressed", "--color-content-warning-dark", "--color-content-success", "--color-content-success-hover", "--color-content-success-pressed", "--color-content-success-dark", "--color-content-info", "--color-content-info-hover", "--color-content-info-pressed", "--color-content-info-dark", "--color-content-primary-inverse", "--color-content-accent-main", "--color-accent-main", "--color-content-accent-primary", "--color-accent-primary", "--color-content-accent-disabled", "--color-background-main", "--color-background-main-hover", "--color-background-main-pressed", "--color-background-primary", "--color-background-primary-hover", "--color-background-primary-pressed", "--color-background-secondary", "--color-background-secondary-hover", "--color-background-secondary-pressed", "--color-background-tertiary", "--color-background-tertiary-hover", "--color-background-tertiary-pressed", "--color-background-disabled", "--color-background-action", "--color-background-action-hover", "--color-background-action-pressed", "--color-background-action-active-disabled", "--color-background-action-light", "--color-background-action-light-hover", "--color-background-action-light-pressed", "--color-background-error", "--color-background-error-hover", "--color-background-error-pressed", "--color-background-error-light", "--color-background-error-light-hover", "--color-background-error-light-pressed", "--color-background-warning", "--color-background-warning-hover", "--color-background-warning-pressed", "--color-background-warning-light", "--color-background-warning-light-hover", "--color-background-warning-light-pressed", "--color-background-success", "--color-background-success-hover", "--color-background-success-pressed", "--color-background-success-light", "--color-background-success-light-hover", "--color-background-success-light-pressed", "--color-background-info", "--color-background-info-hover", "--color-background-info-pressed", "--color-background-info-light", "--color-background-info-light-hover", "--color-background-info-light-pressed", "--color-background-main-inverse", "--color-background-overlay", "--color-background-ghost", "--color-background-ghost-hover", "--color-background-ghost-pressed", "--color-background-ghost-disabled", "--color-background-accent-action-light-hover", "--color-background-accent-action-light-pressed", "--color-background-accent-error-light-hover", "--color-background-accent-error-light-pressed", "--color-background-accent-warning-light-hover", "--color-background-accent-warning-light-pressed", "--color-background-accent-success-light-hover", "--color-background-accent-success-light-pressed", "--color-background-accent-info-light-hover", "--color-background-accent-info-light-pressed", "--color-border-main", "--color-border-main-hover", "--color-border-main-pressed", "--color-border-secondary", "--color-border-secondary-hover", "--color-border-secondary-pressed", "--color-border-disabled", "--color-border-ghost-disabled", "--color-border-focused", "--color-border-action", "--color-border-action-hover", "--color-border-action-pressed", "--color-border-error", "--color-border-warning", "--color-border-success", "--color-border-info", "--color-border-main-on", "--color-border-accent-main", "--color-border-accent-disabled", "--color-border-accent-focused", "--color-accent-main-hover", "--color-accent-main-pressed", "--color-accent-primary-hover", "--color-accent-primary-pressed", "--color-accent-secondary", "--color-accent-secondary-hover", "--color-accent-secondary-pressed", "--color-accent-tertiary", "--color-accent-tertiary-hover", "--color-accent-tertiary-pressed", "--color-accent-disabled", "--color-accent-secondary-inverse", "--color-accent-main-inverse", "--color-additional-a1", "--color-additional-a2", "--color-additional-a3", "--color-additional-b1", "--color-additional-b2", "--color-additional-b3", "--color-additional-c1", "--color-additional-c2", "--color-additional-c3", "--color-additional-d1", "--color-additional-d2", "--color-additional-d3", "--color-additional-e1", "--color-additional-e2", "--color-additional-e3", "--color-additional-f1", "--color-additional-f2", "--color-additional-f3", "--color-additional-g1", "--color-additional-g2", "--color-additional-g3", "--color-additional-h1", "--color-additional-h2"];
|
|
2
2
|
export declare const borderRadius: readonly ["--border-radius-l", "--border-radius-xl", "--border-radius-m", "--border-radius-s", "--border-radius-xs", "--border-radius-2xs"];
|
|
3
3
|
export declare const borderWidth: readonly ["--border-width-s", "--border-width-m"];
|
|
4
4
|
export declare const shadow: readonly ["--shadow-l", "--shadow-m", "--shadow-s"];
|
|
@@ -123,6 +123,7 @@ export var color = [
|
|
|
123
123
|
'--color-accent-tertiary-hover',
|
|
124
124
|
'--color-accent-tertiary-pressed',
|
|
125
125
|
'--color-accent-disabled',
|
|
126
|
+
'--color-accent-secondary-inverse',
|
|
126
127
|
'--color-accent-main-inverse',
|
|
127
128
|
'--color-additional-a1',
|
|
128
129
|
'--color-additional-a2',
|
|
@@ -1,14 +1,59 @@
|
|
|
1
|
+
import { getScrollbarSize } from '../../utils/getScrollBarSize';
|
|
1
2
|
import { useIsomorphicEffect } from '../useIsomorphicEffect';
|
|
3
|
+
export var FIXED_CLASSNAME = 'ScrollLock-fixed';
|
|
4
|
+
var getPaddingRight = function (el) {
|
|
5
|
+
return parseInt(window.getComputedStyle(el).paddingRight, 10) || 0;
|
|
6
|
+
};
|
|
2
7
|
export function useLockBodyScroll(active) {
|
|
3
8
|
if (active === void 0) { active = false; }
|
|
4
9
|
useIsomorphicEffect(function () {
|
|
5
10
|
if (!active) {
|
|
6
11
|
return undefined;
|
|
7
12
|
}
|
|
8
|
-
var
|
|
9
|
-
|
|
13
|
+
var restoreStyle = [];
|
|
14
|
+
// Вычисляем все фиксированные элементы
|
|
15
|
+
var fixedBlocks = document.querySelectorAll(".".concat(FIXED_CLASSNAME));
|
|
16
|
+
// Получаем ширину полосы прокрутки
|
|
17
|
+
var paddingOffset = getScrollbarSize();
|
|
18
|
+
restoreStyle.push({
|
|
19
|
+
el: document.body,
|
|
20
|
+
value: document.body.style.overflow,
|
|
21
|
+
property: 'overflow',
|
|
22
|
+
});
|
|
23
|
+
// Блокируем полосу прокрутки
|
|
24
|
+
document.body.style.setProperty('overflow', 'hidden');
|
|
25
|
+
// Если прокрутки у body нет, то ничего не делаем
|
|
26
|
+
if (paddingOffset) {
|
|
27
|
+
// Получаем текущий отступ справа у элемента body
|
|
28
|
+
var originalPaddingRight = getPaddingRight(document.body);
|
|
29
|
+
restoreStyle.push({
|
|
30
|
+
el: document.body,
|
|
31
|
+
value: document.body.style.paddingRight,
|
|
32
|
+
property: 'padding-right',
|
|
33
|
+
});
|
|
34
|
+
// Назначаем body отступ равный ширине полосы прокрутки (учитываем текущий отступ body)
|
|
35
|
+
document.body.style.setProperty('padding-right', "".concat(originalPaddingRight + paddingOffset, "px"));
|
|
36
|
+
restoreStyle.push({
|
|
37
|
+
el: document.body,
|
|
38
|
+
value: '',
|
|
39
|
+
property: '--removed-body-scroll-bar-size',
|
|
40
|
+
});
|
|
41
|
+
document.body.style.setProperty('--removed-body-scroll-bar-size', "".concat(paddingOffset, "px"));
|
|
42
|
+
[].forEach.call(fixedBlocks, function (el) {
|
|
43
|
+
var originalPaddingRight = getPaddingRight(el);
|
|
44
|
+
restoreStyle.push({
|
|
45
|
+
el: el,
|
|
46
|
+
value: el.style.paddingRight,
|
|
47
|
+
property: 'padding-right',
|
|
48
|
+
});
|
|
49
|
+
el.style.setProperty('padding-right', "".concat(originalPaddingRight + paddingOffset, "px"));
|
|
50
|
+
});
|
|
51
|
+
}
|
|
10
52
|
return function () {
|
|
11
|
-
|
|
53
|
+
restoreStyle.forEach(function (_a) {
|
|
54
|
+
var el = _a.el, value = _a.value, property = _a.property;
|
|
55
|
+
el.style.setProperty(property, value || '');
|
|
56
|
+
});
|
|
12
57
|
};
|
|
13
58
|
}, [active]);
|
|
14
59
|
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare const getScrollbarSize: (el?: HTMLElement) => number;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from './getScrollbarSize';
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from './getScrollbarSize';
|