@alfalab/core-components-modal 7.0.15 → 8.0.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/Component.desktop.d.ts +0 -1
- package/Component.desktop.js +1 -2
- package/Component.js +3 -3
- package/Component.mobile.d.ts +0 -1
- package/Component.mobile.js +1 -2
- package/Component.responsive.d.ts +0 -1
- package/Component.responsive.js +1 -2
- package/components/content/Component.js +3 -3
- package/components/content/desktop.css +7 -7
- package/components/content/index.css +4 -4
- package/components/content/mobile.css +3 -3
- package/components/footer/Component.js +4 -4
- package/components/footer/desktop.css +9 -9
- package/components/footer/index.css +4 -4
- package/components/footer/layout.css +29 -29
- package/components/footer/mobile.css +3 -3
- package/components/header/Component.js +3 -3
- package/components/header/desktop.css +15 -15
- package/components/header/index.css +4 -4
- package/components/header/mobile.css +4 -4
- package/cssm/Component.desktop.d.ts +0 -1
- package/cssm/Component.desktop.js +1 -2
- package/cssm/Component.mobile.d.ts +0 -1
- package/cssm/Component.mobile.js +1 -2
- package/cssm/Component.responsive.d.ts +0 -1
- package/cssm/Component.responsive.js +1 -2
- package/cssm/desktop.d.ts +1 -1
- package/cssm/desktop.js +1 -1
- package/cssm/index.d.ts +2 -3
- package/cssm/index.js +4 -5
- package/cssm/mobile.d.ts +1 -1
- package/cssm/mobile.js +1 -1
- package/cssm/shared.d.ts +1 -0
- package/cssm/shared.js +10 -0
- package/desktop.css +9 -9
- package/desktop.d.ts +1 -1
- package/desktop.js +1 -1
- package/esm/Component.desktop.d.ts +0 -1
- package/esm/Component.desktop.js +1 -2
- package/esm/Component.js +3 -3
- package/esm/Component.mobile.d.ts +0 -1
- package/esm/Component.mobile.js +1 -2
- package/esm/Component.responsive.d.ts +0 -1
- package/esm/Component.responsive.js +1 -2
- package/esm/components/content/Component.js +3 -3
- package/esm/components/content/desktop.css +7 -7
- package/esm/components/content/index.css +4 -4
- package/esm/components/content/mobile.css +3 -3
- package/esm/components/footer/Component.js +4 -4
- package/esm/components/footer/desktop.css +9 -9
- package/esm/components/footer/index.css +4 -4
- package/esm/components/footer/layout.css +29 -29
- package/esm/components/footer/mobile.css +3 -3
- package/esm/components/header/Component.js +3 -3
- package/esm/components/header/desktop.css +15 -15
- package/esm/components/header/index.css +4 -4
- package/esm/components/header/mobile.css +4 -4
- package/esm/desktop.css +9 -9
- package/esm/desktop.d.ts +1 -1
- package/esm/desktop.js +1 -1
- package/esm/index.d.ts +2 -3
- package/esm/index.js +4 -4
- package/esm/mobile.css +2 -2
- package/esm/mobile.d.ts +1 -1
- package/esm/mobile.js +1 -1
- package/esm/shared.d.ts +1 -0
- package/esm/shared.js +2 -0
- package/esm/transitions.css +8 -8
- package/index.d.ts +2 -3
- package/index.js +4 -5
- package/mobile.css +2 -2
- package/mobile.d.ts +1 -1
- package/mobile.js +1 -1
- package/modern/Component.desktop.d.ts +0 -1
- package/modern/Component.desktop.js +1 -2
- package/modern/Component.js +3 -3
- package/modern/Component.mobile.d.ts +0 -1
- package/modern/Component.mobile.js +1 -2
- package/modern/Component.responsive.d.ts +0 -1
- package/modern/Component.responsive.js +1 -2
- package/modern/components/content/Component.js +3 -3
- package/modern/components/content/desktop.css +7 -7
- package/modern/components/content/index.css +4 -4
- package/modern/components/content/mobile.css +3 -3
- package/modern/components/footer/Component.js +4 -4
- package/modern/components/footer/desktop.css +9 -9
- package/modern/components/footer/index.css +4 -4
- package/modern/components/footer/layout.css +29 -29
- package/modern/components/footer/mobile.css +3 -3
- package/modern/components/header/Component.js +3 -3
- package/modern/components/header/desktop.css +15 -15
- package/modern/components/header/index.css +4 -4
- package/modern/components/header/mobile.css +4 -4
- package/modern/desktop.css +9 -9
- package/modern/desktop.d.ts +1 -1
- package/modern/desktop.js +1 -1
- package/modern/index.d.ts +2 -3
- package/modern/index.js +4 -4
- package/modern/mobile.css +2 -2
- package/modern/mobile.d.ts +1 -1
- package/modern/mobile.js +1 -1
- package/modern/shared.d.ts +1 -0
- package/modern/shared.js +2 -0
- package/modern/transitions.css +8 -8
- package/package.json +27 -3
- package/shared.d.ts +1 -0
- package/shared.js +10 -0
- package/src/Component.desktop.tsx +20 -0
- package/src/Component.mobile.tsx +17 -0
- package/src/Component.responsive.tsx +35 -0
- package/src/Component.tsx +93 -0
- package/src/Context.tsx +3 -0
- package/src/ResponsiveContext.tsx +8 -0
- package/src/components/content/Component.tsx +29 -0
- package/src/components/content/desktop.module.css +13 -0
- package/src/components/content/index.module.css +16 -0
- package/src/components/content/mobile.module.css +9 -0
- package/src/components/footer/Component.tsx +69 -0
- package/src/components/footer/desktop.module.css +22 -0
- package/src/components/footer/index.module.css +17 -0
- package/src/components/footer/layout.module.css +86 -0
- package/src/components/footer/mobile.module.css +9 -0
- package/src/components/header/Component.tsx +60 -0
- package/src/components/header/desktop.module.css +42 -0
- package/src/components/header/index.module.css +15 -0
- package/src/components/header/mobile.module.css +18 -0
- package/src/desktop.module.css +38 -0
- package/src/desktop.ts +2 -0
- package/src/index.ts +2 -0
- package/src/mobile.module.css +7 -0
- package/src/mobile.ts +2 -0
- package/src/shared.ts +1 -0
- package/src/transitions.module.css +24 -0
- package/src/typings.ts +63 -0
- package/src/utils.ts +90 -0
- package/src/vars.css +47 -0
- package/transitions.css +8 -8
- package/cssm/responsive.d.ts +0 -2
- package/cssm/responsive.js +0 -35
- package/esm/responsive.d.ts +0 -2
- package/esm/responsive.js +0 -14
- package/modern/responsive.d.ts +0 -2
- package/modern/responsive.js +0 -13
- package/responsive.d.ts +0 -2
- package/responsive.js +0 -22
package/src/utils.ts
ADDED
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
export function isScrolledToTop(target: HTMLElement) {
|
|
2
|
+
return target.scrollTop === 0;
|
|
3
|
+
}
|
|
4
|
+
|
|
5
|
+
export function isScrolledToBottom(target: HTMLElement) {
|
|
6
|
+
return target.scrollHeight - target.offsetHeight === target.scrollTop;
|
|
7
|
+
}
|
|
8
|
+
|
|
9
|
+
export function hasScrollbar(target: HTMLElement) {
|
|
10
|
+
return target.scrollHeight > target.clientHeight;
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
const getScrollbarSize = () => {
|
|
14
|
+
const scrollDiv = document.createElement('div');
|
|
15
|
+
|
|
16
|
+
scrollDiv.style.width = '99px';
|
|
17
|
+
scrollDiv.style.height = '99px';
|
|
18
|
+
scrollDiv.style.position = 'absolute';
|
|
19
|
+
scrollDiv.style.top = '-9999px';
|
|
20
|
+
scrollDiv.style.overflow = 'scroll';
|
|
21
|
+
|
|
22
|
+
document.body.appendChild(scrollDiv);
|
|
23
|
+
const scrollbarSize = scrollDiv.offsetWidth - scrollDiv.clientWidth;
|
|
24
|
+
|
|
25
|
+
document.body.removeChild(scrollDiv);
|
|
26
|
+
|
|
27
|
+
return scrollbarSize;
|
|
28
|
+
};
|
|
29
|
+
|
|
30
|
+
const isOverflowing = (container: Element) => {
|
|
31
|
+
if (document.body === container) {
|
|
32
|
+
return window.innerWidth > document.documentElement.clientWidth;
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
return container.scrollHeight > container.clientHeight;
|
|
36
|
+
};
|
|
37
|
+
|
|
38
|
+
const getPaddingRight = (node: Element) =>
|
|
39
|
+
parseInt(window.getComputedStyle(node).paddingRight, 10) || 0;
|
|
40
|
+
|
|
41
|
+
export const handleContainer = (container: HTMLElement) => {
|
|
42
|
+
const restoreStyle: Array<{
|
|
43
|
+
value: string;
|
|
44
|
+
key: string;
|
|
45
|
+
el: HTMLElement;
|
|
46
|
+
}> = [];
|
|
47
|
+
|
|
48
|
+
if (isOverflowing(container)) {
|
|
49
|
+
// Вычисляет размер до применения `overflow hidden` для избежания скачков
|
|
50
|
+
const scrollbarSize = getScrollbarSize();
|
|
51
|
+
|
|
52
|
+
restoreStyle.push({
|
|
53
|
+
value: container.style.paddingRight,
|
|
54
|
+
key: 'padding-right',
|
|
55
|
+
el: container,
|
|
56
|
+
});
|
|
57
|
+
// Вычисляем стили, чтобы получить реальный `padding` c шириной сколлбара
|
|
58
|
+
// eslint-disable-next-line no-param-reassign
|
|
59
|
+
container.style.paddingRight = `${getPaddingRight(container) + scrollbarSize}px`;
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
const parent = container.parentElement;
|
|
63
|
+
const scrollContainer =
|
|
64
|
+
// TODO: заменить на optional chaining
|
|
65
|
+
parent &&
|
|
66
|
+
parent.nodeName === 'HTML' &&
|
|
67
|
+
window.getComputedStyle(parent).overflowY === 'scroll'
|
|
68
|
+
? parent
|
|
69
|
+
: container;
|
|
70
|
+
|
|
71
|
+
// Блокируем скролл даже если отсутствует скроллбар
|
|
72
|
+
if (scrollContainer.style.overflow !== 'hidden') {
|
|
73
|
+
restoreStyle.push({
|
|
74
|
+
value: scrollContainer.style.overflow,
|
|
75
|
+
key: 'overflow',
|
|
76
|
+
el: scrollContainer,
|
|
77
|
+
});
|
|
78
|
+
}
|
|
79
|
+
scrollContainer.style.overflow = 'hidden';
|
|
80
|
+
|
|
81
|
+
return () => {
|
|
82
|
+
restoreStyle.forEach(({ value, el, key }) => {
|
|
83
|
+
if (value) {
|
|
84
|
+
el.style.setProperty(key, value);
|
|
85
|
+
} else {
|
|
86
|
+
el.style.removeProperty(key);
|
|
87
|
+
}
|
|
88
|
+
});
|
|
89
|
+
};
|
|
90
|
+
};
|
package/src/vars.css
ADDED
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
@import '@alfalab/core-components-themes/src/default.css';
|
|
2
|
+
|
|
3
|
+
:root {
|
|
4
|
+
--modal-border-radius: var(--border-radius-l);
|
|
5
|
+
--modal-vertical-padding: var(--gap-3xl);
|
|
6
|
+
--modal-header-background: var(--color-light-bg-primary);
|
|
7
|
+
--modal-footer-background: var(--color-light-bg-primary);
|
|
8
|
+
--modal-footer-default-gap: var(--gap-m);
|
|
9
|
+
|
|
10
|
+
/* sizes */
|
|
11
|
+
--modal-s-width: 500px;
|
|
12
|
+
--modal-m-width: 600px;
|
|
13
|
+
--modal-l-width: 800px;
|
|
14
|
+
--modal-xl-width: 1140px;
|
|
15
|
+
|
|
16
|
+
/* paddings */
|
|
17
|
+
--modal-s-header-paddings: 28px 28px 0;
|
|
18
|
+
--modal-s-content-paddings: var(--gap-3xl) var(--gap-3xl) 0;
|
|
19
|
+
--modal-s-content-only-bottom-padding: var(--gap-3xl);
|
|
20
|
+
--modal-s-footer-paddings: var(--gap-xl) var(--gap-3xl) var(--gap-3xl);
|
|
21
|
+
|
|
22
|
+
/* scroll */
|
|
23
|
+
--modal-header-highlight-background: var(--color-light-bg-primary);
|
|
24
|
+
--modal-footer-highlight-background: var(--color-light-bg-primary);
|
|
25
|
+
--modal-header-highlight-box-shadow: 0 1px 0 0 var(--color-light-border-secondary);
|
|
26
|
+
--modal-footer-highlight-box-shadow: 0 -1px 0 0 var(--color-light-border-secondary);
|
|
27
|
+
|
|
28
|
+
/* desktop */
|
|
29
|
+
--modal-s-header-desktop-content-paddings: var(--gap-s);
|
|
30
|
+
--modal-s-header-desktop-font-size: 20px;
|
|
31
|
+
--modal-s-header-desktop-line-height: 26px;
|
|
32
|
+
--modal-l-header-desktop-content-paddings: 6px var(--gap-s) var(--gap-m);
|
|
33
|
+
--modal-l-header-desktop-font-size: 30px;
|
|
34
|
+
--modal-l-header-desktop-line-height: 36px;
|
|
35
|
+
--modal-header-desktop-font-weight: bold;
|
|
36
|
+
--modal-header-desktop-font-family: var(--font-family-system);
|
|
37
|
+
|
|
38
|
+
/* mobile */
|
|
39
|
+
--modal-header-mobile-content-paddings: var(--gap-s) var(--gap-xs);
|
|
40
|
+
--modal-header-mobile-font-size: 18px;
|
|
41
|
+
--modal-header-mobile-line-height: 24px;
|
|
42
|
+
--modal-header-mobile-font-family: var(--font-family-system);
|
|
43
|
+
--modal-header-mobile-font-weight: bold;
|
|
44
|
+
|
|
45
|
+
/* paddings */
|
|
46
|
+
--modal-header-mobile-paddings: var(--gap-2xs) var(--gap-xs);
|
|
47
|
+
}
|
package/transitions.css
CHANGED
|
@@ -1,24 +1,24 @@
|
|
|
1
|
-
/* hash:
|
|
2
|
-
.
|
|
3
|
-
.
|
|
1
|
+
/* hash: 14o36 */
|
|
2
|
+
.modal__appear_e1pnc,
|
|
3
|
+
.modal__enter_e1pnc {
|
|
4
4
|
opacity: 0;
|
|
5
5
|
transform: translateY(15px);
|
|
6
6
|
}
|
|
7
7
|
|
|
8
|
-
.
|
|
9
|
-
.
|
|
8
|
+
.modal__appearActive_e1pnc,
|
|
9
|
+
.modal__enterActive_e1pnc {
|
|
10
10
|
opacity: 1;
|
|
11
11
|
transform: translateY(0);
|
|
12
12
|
transition: opacity 200ms ease-in, transform 200ms ease-in;
|
|
13
13
|
}
|
|
14
14
|
|
|
15
|
-
.
|
|
15
|
+
.modal__exit_e1pnc {
|
|
16
16
|
opacity: 1;
|
|
17
17
|
transform: translateY(0);
|
|
18
18
|
}
|
|
19
19
|
|
|
20
|
-
.
|
|
21
|
-
.
|
|
20
|
+
.modal__exitActive_e1pnc,
|
|
21
|
+
.modal__exitDone_e1pnc {
|
|
22
22
|
opacity: 0;
|
|
23
23
|
transform: translateY(15px);
|
|
24
24
|
transition: opacity 200ms ease-out, transform 200ms ease-out;
|
package/cssm/responsive.d.ts
DELETED
package/cssm/responsive.js
DELETED
|
@@ -1,35 +0,0 @@
|
|
|
1
|
-
'use strict';
|
|
2
|
-
|
|
3
|
-
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
|
-
|
|
5
|
-
var Component_responsive = require('./Component.responsive.js');
|
|
6
|
-
require('tslib');
|
|
7
|
-
require('react');
|
|
8
|
-
require('@alfalab/core-components-navigation-bar/cssm');
|
|
9
|
-
require('@alfalab/hooks');
|
|
10
|
-
require('./components/content/Component.js');
|
|
11
|
-
require('classnames');
|
|
12
|
-
require('./Context.js');
|
|
13
|
-
require('@alfalab/core-components-base-modal/cssm');
|
|
14
|
-
require('./ResponsiveContext.js');
|
|
15
|
-
require('./components/content/desktop.module.css');
|
|
16
|
-
require('./components/content/index.module.css');
|
|
17
|
-
require('./components/content/mobile.module.css');
|
|
18
|
-
require('./components/footer/Component.js');
|
|
19
|
-
require('./components/footer/desktop.module.css');
|
|
20
|
-
require('./components/footer/index.module.css');
|
|
21
|
-
require('./components/footer/layout.module.css');
|
|
22
|
-
require('./components/footer/mobile.module.css');
|
|
23
|
-
require('./components/header/Component.js');
|
|
24
|
-
require('./components/header/desktop.module.css');
|
|
25
|
-
require('./components/header/index.module.css');
|
|
26
|
-
require('./components/header/mobile.module.css');
|
|
27
|
-
require('./Component.js');
|
|
28
|
-
require('react-merge-refs');
|
|
29
|
-
require('./desktop.module.css');
|
|
30
|
-
require('./mobile.module.css');
|
|
31
|
-
require('./transitions.module.css');
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
exports.ModalResponsive = Component_responsive.ModalResponsive;
|
package/esm/responsive.d.ts
DELETED
package/esm/responsive.js
DELETED
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
export { ModalResponsive } from './Component.responsive.js';
|
|
2
|
-
import 'tslib';
|
|
3
|
-
import 'react';
|
|
4
|
-
import '@alfalab/core-components-navigation-bar/esm';
|
|
5
|
-
import '@alfalab/hooks';
|
|
6
|
-
import './components/content/Component.js';
|
|
7
|
-
import 'classnames';
|
|
8
|
-
import './Context.js';
|
|
9
|
-
import '@alfalab/core-components-base-modal/esm';
|
|
10
|
-
import './ResponsiveContext.js';
|
|
11
|
-
import './components/footer/Component.js';
|
|
12
|
-
import './components/header/Component.js';
|
|
13
|
-
import './Component.js';
|
|
14
|
-
import 'react-merge-refs';
|
package/modern/responsive.d.ts
DELETED
package/modern/responsive.js
DELETED
|
@@ -1,13 +0,0 @@
|
|
|
1
|
-
export { ModalResponsive } from './Component.responsive.js';
|
|
2
|
-
import 'react';
|
|
3
|
-
import '@alfalab/core-components-navigation-bar/modern';
|
|
4
|
-
import '@alfalab/hooks';
|
|
5
|
-
import './components/content/Component.js';
|
|
6
|
-
import 'classnames';
|
|
7
|
-
import './Context.js';
|
|
8
|
-
import '@alfalab/core-components-base-modal/modern';
|
|
9
|
-
import './ResponsiveContext.js';
|
|
10
|
-
import './components/footer/Component.js';
|
|
11
|
-
import './components/header/Component.js';
|
|
12
|
-
import './Component.js';
|
|
13
|
-
import 'react-merge-refs';
|
package/responsive.d.ts
DELETED
package/responsive.js
DELETED
|
@@ -1,22 +0,0 @@
|
|
|
1
|
-
'use strict';
|
|
2
|
-
|
|
3
|
-
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
|
-
|
|
5
|
-
var Component_responsive = require('./Component.responsive.js');
|
|
6
|
-
require('tslib');
|
|
7
|
-
require('react');
|
|
8
|
-
require('@alfalab/core-components-navigation-bar');
|
|
9
|
-
require('@alfalab/hooks');
|
|
10
|
-
require('./components/content/Component.js');
|
|
11
|
-
require('classnames');
|
|
12
|
-
require('./Context.js');
|
|
13
|
-
require('@alfalab/core-components-base-modal');
|
|
14
|
-
require('./ResponsiveContext.js');
|
|
15
|
-
require('./components/footer/Component.js');
|
|
16
|
-
require('./components/header/Component.js');
|
|
17
|
-
require('./Component.js');
|
|
18
|
-
require('react-merge-refs');
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
exports.ModalResponsive = Component_responsive.ModalResponsive;
|