@alfalab/core-components-base-modal 5.8.2 → 5.8.3
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.js +4 -1
- package/cssm/Component.js +3 -0
- package/cssm/helpers/lockScroll.d.ts +2 -1
- package/cssm/helpers/lockScroll.js +4 -0
- package/cssm/index.js +1 -0
- package/esm/Component.js +4 -1
- package/esm/helpers/lockScroll.d.ts +2 -1
- package/esm/helpers/lockScroll.js +4 -1
- package/esm/index.css +13 -13
- package/esm/index.js +1 -1
- package/helpers/lockScroll.d.ts +2 -1
- package/helpers/lockScroll.js +4 -0
- package/index.css +13 -13
- package/index.js +1 -0
- package/modern/Component.js +4 -1
- package/modern/helpers/lockScroll.d.ts +2 -1
- package/modern/helpers/lockScroll.js +4 -1
- package/modern/index.css +13 -13
- package/modern/index.js +1 -1
- package/moderncssm/Component.js +3 -0
- package/moderncssm/helpers/lockScroll.d.ts +2 -1
- package/moderncssm/helpers/lockScroll.js +4 -1
- package/moderncssm/index.js +1 -1
- package/package.json +3 -3
- package/src/Component.tsx +4 -0
- package/src/helpers/lockScroll.ts +4 -0
package/Component.js
CHANGED
|
@@ -25,7 +25,7 @@ var FocusLock__default = /*#__PURE__*/_interopDefaultCompat(FocusLock);
|
|
|
25
25
|
var mergeRefs__default = /*#__PURE__*/_interopDefaultCompat(mergeRefs);
|
|
26
26
|
var cn__default = /*#__PURE__*/_interopDefaultCompat(cn);
|
|
27
27
|
|
|
28
|
-
var styles = {"component":"base-
|
|
28
|
+
var styles = {"component":"base-modal__component_1tfil","wrapper":"base-modal__wrapper_1tfil","content":"base-modal__content_1tfil","hidden":"base-modal__hidden_1tfil","backdrop":"base-modal__backdrop_1tfil","appear":"base-modal__appear_1tfil","enter":"base-modal__enter_1tfil","appearActive":"base-modal__appearActive_1tfil","enterActive":"base-modal__enterActive_1tfil","exit":"base-modal__exit_1tfil","exitActive":"base-modal__exitActive_1tfil","exitDone":"base-modal__exitDone_1tfil"};
|
|
29
29
|
require('./index.css')
|
|
30
30
|
|
|
31
31
|
// eslint-disable-next-line @typescript-eslint/no-redeclare
|
|
@@ -205,6 +205,9 @@ var BaseModal = React.forwardRef(function (_a, ref) {
|
|
|
205
205
|
}
|
|
206
206
|
setExited(false);
|
|
207
207
|
}
|
|
208
|
+
if (!open) {
|
|
209
|
+
helpers_lockScroll.unlockScroll();
|
|
210
|
+
}
|
|
208
211
|
}, [getContainer, open, disableBlockingScroll, isExited, iOSLock]);
|
|
209
212
|
React.useEffect(function () {
|
|
210
213
|
var ResizeObserver = window.ResizeObserver || resizeObserver.ResizeObserver;
|
package/cssm/Component.js
CHANGED
|
@@ -204,6 +204,9 @@ var BaseModal = React.forwardRef(function (_a, ref) {
|
|
|
204
204
|
}
|
|
205
205
|
setExited(false);
|
|
206
206
|
}
|
|
207
|
+
if (!open) {
|
|
208
|
+
helpers_lockScroll.unlockScroll();
|
|
209
|
+
}
|
|
207
210
|
}, [getContainer, open, disableBlockingScroll, isExited, iOSLock]);
|
|
208
211
|
React.useEffect(function () {
|
|
209
212
|
var ResizeObserver = window.ResizeObserver || resizeObserver.ResizeObserver;
|
|
@@ -1,4 +1,5 @@
|
|
|
1
|
+
declare const isScrollLocked: () => boolean;
|
|
1
2
|
declare const lockScroll: () => void;
|
|
2
3
|
declare const unlockScroll: () => void;
|
|
3
4
|
declare const syncHeight: () => void;
|
|
4
|
-
export { lockScroll, unlockScroll, syncHeight };
|
|
5
|
+
export { isScrollLocked, lockScroll, unlockScroll, syncHeight };
|
|
@@ -7,11 +7,14 @@ Object.defineProperty(exports, '__esModule', { value: true });
|
|
|
7
7
|
* В проекте используется overflow: hidden для блокировки, но в некоторых случаях этого недостаточно. Данный хелпер призван решать эту проблему
|
|
8
8
|
*/
|
|
9
9
|
var scrollY;
|
|
10
|
+
var isScrollLocked = function () { return document.body.classList.contains('is-locked'); };
|
|
10
11
|
var lockScroll = function () {
|
|
11
12
|
scrollY = window.scrollY;
|
|
12
13
|
document.body.classList.add('is-locked');
|
|
13
14
|
};
|
|
14
15
|
var unlockScroll = function () {
|
|
16
|
+
if (!isScrollLocked())
|
|
17
|
+
return;
|
|
15
18
|
document.body.classList.remove('is-locked');
|
|
16
19
|
window.scrollTo(0, scrollY);
|
|
17
20
|
};
|
|
@@ -19,6 +22,7 @@ var syncHeight = function () {
|
|
|
19
22
|
document.body.style.setProperty('--window-inner-scrollY', "".concat(window.scrollY, "px"));
|
|
20
23
|
};
|
|
21
24
|
|
|
25
|
+
exports.isScrollLocked = isScrollLocked;
|
|
22
26
|
exports.lockScroll = lockScroll;
|
|
23
27
|
exports.syncHeight = syncHeight;
|
|
24
28
|
exports.unlockScroll = unlockScroll;
|
package/cssm/index.js
CHANGED
|
@@ -15,6 +15,7 @@ exports.hasScrollbar = utils.hasScrollbar;
|
|
|
15
15
|
exports.isScrolledToBottom = utils.isScrolledToBottom;
|
|
16
16
|
exports.isScrolledToTop = utils.isScrolledToTop;
|
|
17
17
|
exports.restoreContainerStyles = utils.restoreContainerStyles;
|
|
18
|
+
exports.isScrollLocked = helpers_lockScroll.isScrollLocked;
|
|
18
19
|
exports.lockScroll = helpers_lockScroll.lockScroll;
|
|
19
20
|
exports.syncHeight = helpers_lockScroll.syncHeight;
|
|
20
21
|
exports.unlockScroll = helpers_lockScroll.unlockScroll;
|
package/esm/Component.js
CHANGED
|
@@ -14,7 +14,7 @@ import { unlockScroll, syncHeight, lockScroll } from './helpers/lockScroll.js';
|
|
|
14
14
|
import { isScrolledToTop, isScrolledToBottom, handleContainer, restoreContainerStyles, hasScrollbar } from './utils.js';
|
|
15
15
|
import './matches-polyfill.js';
|
|
16
16
|
|
|
17
|
-
var styles = {"component":"base-
|
|
17
|
+
var styles = {"component":"base-modal__component_1tfil","wrapper":"base-modal__wrapper_1tfil","content":"base-modal__content_1tfil","hidden":"base-modal__hidden_1tfil","backdrop":"base-modal__backdrop_1tfil","appear":"base-modal__appear_1tfil","enter":"base-modal__enter_1tfil","appearActive":"base-modal__appearActive_1tfil","enterActive":"base-modal__enterActive_1tfil","exit":"base-modal__exit_1tfil","exitActive":"base-modal__exitActive_1tfil","exitDone":"base-modal__exitDone_1tfil"};
|
|
18
18
|
require('./index.css')
|
|
19
19
|
|
|
20
20
|
// eslint-disable-next-line @typescript-eslint/no-redeclare
|
|
@@ -194,6 +194,9 @@ var BaseModal = forwardRef(function (_a, ref) {
|
|
|
194
194
|
}
|
|
195
195
|
setExited(false);
|
|
196
196
|
}
|
|
197
|
+
if (!open) {
|
|
198
|
+
unlockScroll();
|
|
199
|
+
}
|
|
197
200
|
}, [getContainer, open, disableBlockingScroll, isExited, iOSLock]);
|
|
198
201
|
useEffect(function () {
|
|
199
202
|
var ResizeObserver$1 = window.ResizeObserver || ResizeObserver;
|
|
@@ -1,4 +1,5 @@
|
|
|
1
|
+
declare const isScrollLocked: () => boolean;
|
|
1
2
|
declare const lockScroll: () => void;
|
|
2
3
|
declare const unlockScroll: () => void;
|
|
3
4
|
declare const syncHeight: () => void;
|
|
4
|
-
export { lockScroll, unlockScroll, syncHeight };
|
|
5
|
+
export { isScrollLocked, lockScroll, unlockScroll, syncHeight };
|
|
@@ -3,11 +3,14 @@
|
|
|
3
3
|
* В проекте используется overflow: hidden для блокировки, но в некоторых случаях этого недостаточно. Данный хелпер призван решать эту проблему
|
|
4
4
|
*/
|
|
5
5
|
var scrollY;
|
|
6
|
+
var isScrollLocked = function () { return document.body.classList.contains('is-locked'); };
|
|
6
7
|
var lockScroll = function () {
|
|
7
8
|
scrollY = window.scrollY;
|
|
8
9
|
document.body.classList.add('is-locked');
|
|
9
10
|
};
|
|
10
11
|
var unlockScroll = function () {
|
|
12
|
+
if (!isScrollLocked())
|
|
13
|
+
return;
|
|
11
14
|
document.body.classList.remove('is-locked');
|
|
12
15
|
window.scrollTo(0, scrollY);
|
|
13
16
|
};
|
|
@@ -15,4 +18,4 @@ var syncHeight = function () {
|
|
|
15
18
|
document.body.style.setProperty('--window-inner-scrollY', "".concat(window.scrollY, "px"));
|
|
16
19
|
};
|
|
17
20
|
|
|
18
|
-
export { lockScroll, syncHeight, unlockScroll };
|
|
21
|
+
export { isScrollLocked, lockScroll, syncHeight, unlockScroll };
|
package/esm/index.css
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/* hash:
|
|
1
|
+
/* hash: mo6a5 */
|
|
2
2
|
:root { /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */
|
|
3
3
|
} /* deprecated */ :root {
|
|
4
4
|
--color-light-modal-bg-primary: #fff; /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */
|
|
@@ -26,13 +26,13 @@
|
|
|
26
26
|
margin-top: calc(var(--window-inner-scrollY) * -1);
|
|
27
27
|
position: fixed;
|
|
28
28
|
overflow: hidden;
|
|
29
|
-
} .base-
|
|
29
|
+
} .base-modal__component_1tfil {
|
|
30
30
|
position: relative;
|
|
31
31
|
box-sizing: border-box;
|
|
32
32
|
background: var(--color-light-modal-bg-primary);
|
|
33
33
|
margin: auto;
|
|
34
34
|
flex-shrink: 0;
|
|
35
|
-
} .base-
|
|
35
|
+
} .base-modal__wrapper_1tfil {
|
|
36
36
|
position: fixed;
|
|
37
37
|
top: var(--gap-0);
|
|
38
38
|
left: var(--gap-0);
|
|
@@ -45,27 +45,27 @@
|
|
|
45
45
|
align-items: center;
|
|
46
46
|
outline: 0;
|
|
47
47
|
overscroll-behavior: none;
|
|
48
|
-
} .base-
|
|
48
|
+
} .base-modal__content_1tfil {
|
|
49
49
|
width: 100%;
|
|
50
50
|
height: 100%;
|
|
51
51
|
display: flex;
|
|
52
52
|
flex-direction: column;
|
|
53
53
|
flex: 1;
|
|
54
|
-
} .base-
|
|
54
|
+
} .base-modal__hidden_1tfil {
|
|
55
55
|
display: none;
|
|
56
|
-
} .base-
|
|
56
|
+
} .base-modal__backdrop_1tfil {
|
|
57
57
|
z-index: 0;
|
|
58
|
-
} .base-
|
|
59
|
-
.base-
|
|
58
|
+
} .base-modal__appear_1tfil,
|
|
59
|
+
.base-modal__enter_1tfil {
|
|
60
60
|
opacity: 0;
|
|
61
|
-
} .base-
|
|
62
|
-
.base-
|
|
61
|
+
} .base-modal__appearActive_1tfil,
|
|
62
|
+
.base-modal__enterActive_1tfil {
|
|
63
63
|
opacity: 1;
|
|
64
64
|
transition: opacity 200ms ease-in;
|
|
65
|
-
} .base-
|
|
65
|
+
} .base-modal__exit_1tfil {
|
|
66
66
|
opacity: 1;
|
|
67
|
-
} .base-
|
|
68
|
-
.base-
|
|
67
|
+
} .base-modal__exitActive_1tfil,
|
|
68
|
+
.base-modal__exitDone_1tfil {
|
|
69
69
|
opacity: 0;
|
|
70
70
|
transition: opacity 200ms ease-out;
|
|
71
71
|
}
|
package/esm/index.js
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
export { BaseModal, BaseModalContext } from './Component.js';
|
|
2
2
|
export { handleContainer, hasScrollbar, isScrolledToBottom, isScrolledToTop, restoreContainerStyles } from './utils.js';
|
|
3
|
-
export { lockScroll, syncHeight, unlockScroll } from './helpers/lockScroll.js';
|
|
3
|
+
export { isScrollLocked, lockScroll, syncHeight, unlockScroll } from './helpers/lockScroll.js';
|
package/helpers/lockScroll.d.ts
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
|
+
declare const isScrollLocked: () => boolean;
|
|
1
2
|
declare const lockScroll: () => void;
|
|
2
3
|
declare const unlockScroll: () => void;
|
|
3
4
|
declare const syncHeight: () => void;
|
|
4
|
-
export { lockScroll, unlockScroll, syncHeight };
|
|
5
|
+
export { isScrollLocked, lockScroll, unlockScroll, syncHeight };
|
package/helpers/lockScroll.js
CHANGED
|
@@ -7,11 +7,14 @@ Object.defineProperty(exports, '__esModule', { value: true });
|
|
|
7
7
|
* В проекте используется overflow: hidden для блокировки, но в некоторых случаях этого недостаточно. Данный хелпер призван решать эту проблему
|
|
8
8
|
*/
|
|
9
9
|
var scrollY;
|
|
10
|
+
var isScrollLocked = function () { return document.body.classList.contains('is-locked'); };
|
|
10
11
|
var lockScroll = function () {
|
|
11
12
|
scrollY = window.scrollY;
|
|
12
13
|
document.body.classList.add('is-locked');
|
|
13
14
|
};
|
|
14
15
|
var unlockScroll = function () {
|
|
16
|
+
if (!isScrollLocked())
|
|
17
|
+
return;
|
|
15
18
|
document.body.classList.remove('is-locked');
|
|
16
19
|
window.scrollTo(0, scrollY);
|
|
17
20
|
};
|
|
@@ -19,6 +22,7 @@ var syncHeight = function () {
|
|
|
19
22
|
document.body.style.setProperty('--window-inner-scrollY', "".concat(window.scrollY, "px"));
|
|
20
23
|
};
|
|
21
24
|
|
|
25
|
+
exports.isScrollLocked = isScrollLocked;
|
|
22
26
|
exports.lockScroll = lockScroll;
|
|
23
27
|
exports.syncHeight = syncHeight;
|
|
24
28
|
exports.unlockScroll = unlockScroll;
|
package/index.css
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/* hash:
|
|
1
|
+
/* hash: mo6a5 */
|
|
2
2
|
:root { /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */
|
|
3
3
|
} /* deprecated */ :root {
|
|
4
4
|
--color-light-modal-bg-primary: #fff; /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */
|
|
@@ -26,13 +26,13 @@
|
|
|
26
26
|
margin-top: calc(var(--window-inner-scrollY) * -1);
|
|
27
27
|
position: fixed;
|
|
28
28
|
overflow: hidden;
|
|
29
|
-
} .base-
|
|
29
|
+
} .base-modal__component_1tfil {
|
|
30
30
|
position: relative;
|
|
31
31
|
box-sizing: border-box;
|
|
32
32
|
background: var(--color-light-modal-bg-primary);
|
|
33
33
|
margin: auto;
|
|
34
34
|
flex-shrink: 0;
|
|
35
|
-
} .base-
|
|
35
|
+
} .base-modal__wrapper_1tfil {
|
|
36
36
|
position: fixed;
|
|
37
37
|
top: var(--gap-0);
|
|
38
38
|
left: var(--gap-0);
|
|
@@ -45,27 +45,27 @@
|
|
|
45
45
|
align-items: center;
|
|
46
46
|
outline: 0;
|
|
47
47
|
overscroll-behavior: none;
|
|
48
|
-
} .base-
|
|
48
|
+
} .base-modal__content_1tfil {
|
|
49
49
|
width: 100%;
|
|
50
50
|
height: 100%;
|
|
51
51
|
display: flex;
|
|
52
52
|
flex-direction: column;
|
|
53
53
|
flex: 1;
|
|
54
|
-
} .base-
|
|
54
|
+
} .base-modal__hidden_1tfil {
|
|
55
55
|
display: none;
|
|
56
|
-
} .base-
|
|
56
|
+
} .base-modal__backdrop_1tfil {
|
|
57
57
|
z-index: 0;
|
|
58
|
-
} .base-
|
|
59
|
-
.base-
|
|
58
|
+
} .base-modal__appear_1tfil,
|
|
59
|
+
.base-modal__enter_1tfil {
|
|
60
60
|
opacity: 0;
|
|
61
|
-
} .base-
|
|
62
|
-
.base-
|
|
61
|
+
} .base-modal__appearActive_1tfil,
|
|
62
|
+
.base-modal__enterActive_1tfil {
|
|
63
63
|
opacity: 1;
|
|
64
64
|
transition: opacity 200ms ease-in;
|
|
65
|
-
} .base-
|
|
65
|
+
} .base-modal__exit_1tfil {
|
|
66
66
|
opacity: 1;
|
|
67
|
-
} .base-
|
|
68
|
-
.base-
|
|
67
|
+
} .base-modal__exitActive_1tfil,
|
|
68
|
+
.base-modal__exitDone_1tfil {
|
|
69
69
|
opacity: 0;
|
|
70
70
|
transition: opacity 200ms ease-out;
|
|
71
71
|
}
|
package/index.js
CHANGED
|
@@ -15,6 +15,7 @@ exports.hasScrollbar = utils.hasScrollbar;
|
|
|
15
15
|
exports.isScrolledToBottom = utils.isScrolledToBottom;
|
|
16
16
|
exports.isScrolledToTop = utils.isScrolledToTop;
|
|
17
17
|
exports.restoreContainerStyles = utils.restoreContainerStyles;
|
|
18
|
+
exports.isScrollLocked = helpers_lockScroll.isScrollLocked;
|
|
18
19
|
exports.lockScroll = helpers_lockScroll.lockScroll;
|
|
19
20
|
exports.syncHeight = helpers_lockScroll.syncHeight;
|
|
20
21
|
exports.unlockScroll = helpers_lockScroll.unlockScroll;
|
package/modern/Component.js
CHANGED
|
@@ -13,7 +13,7 @@ import { unlockScroll, syncHeight, lockScroll } from './helpers/lockScroll.js';
|
|
|
13
13
|
import { isScrolledToTop, isScrolledToBottom, handleContainer, restoreContainerStyles, hasScrollbar } from './utils.js';
|
|
14
14
|
import './matches-polyfill.js';
|
|
15
15
|
|
|
16
|
-
const styles = {"component":"base-
|
|
16
|
+
const styles = {"component":"base-modal__component_1tfil","wrapper":"base-modal__wrapper_1tfil","content":"base-modal__content_1tfil","hidden":"base-modal__hidden_1tfil","backdrop":"base-modal__backdrop_1tfil","appear":"base-modal__appear_1tfil","enter":"base-modal__enter_1tfil","appearActive":"base-modal__appearActive_1tfil","enterActive":"base-modal__enterActive_1tfil","exit":"base-modal__exit_1tfil","exitActive":"base-modal__exitActive_1tfil","exitDone":"base-modal__exitDone_1tfil"};
|
|
17
17
|
require('./index.css')
|
|
18
18
|
|
|
19
19
|
/* eslint-disable jsx-a11y/no-noninteractive-element-interactions */
|
|
@@ -192,6 +192,9 @@ const BaseModal = forwardRef(({ open, container, children, scrollHandler = 'wrap
|
|
|
192
192
|
}
|
|
193
193
|
setExited(false);
|
|
194
194
|
}
|
|
195
|
+
if (!open) {
|
|
196
|
+
unlockScroll();
|
|
197
|
+
}
|
|
195
198
|
}, [getContainer, open, disableBlockingScroll, isExited, iOSLock]);
|
|
196
199
|
useEffect(() => {
|
|
197
200
|
const ResizeObserver$1 = window.ResizeObserver || ResizeObserver;
|
|
@@ -1,4 +1,5 @@
|
|
|
1
|
+
declare const isScrollLocked: () => boolean;
|
|
1
2
|
declare const lockScroll: () => void;
|
|
2
3
|
declare const unlockScroll: () => void;
|
|
3
4
|
declare const syncHeight: () => void;
|
|
4
|
-
export { lockScroll, unlockScroll, syncHeight };
|
|
5
|
+
export { isScrollLocked, lockScroll, unlockScroll, syncHeight };
|
|
@@ -3,11 +3,14 @@
|
|
|
3
3
|
* В проекте используется overflow: hidden для блокировки, но в некоторых случаях этого недостаточно. Данный хелпер призван решать эту проблему
|
|
4
4
|
*/
|
|
5
5
|
let scrollY;
|
|
6
|
+
const isScrollLocked = () => document.body.classList.contains('is-locked');
|
|
6
7
|
const lockScroll = () => {
|
|
7
8
|
scrollY = window.scrollY;
|
|
8
9
|
document.body.classList.add('is-locked');
|
|
9
10
|
};
|
|
10
11
|
const unlockScroll = () => {
|
|
12
|
+
if (!isScrollLocked())
|
|
13
|
+
return;
|
|
11
14
|
document.body.classList.remove('is-locked');
|
|
12
15
|
window.scrollTo(0, scrollY);
|
|
13
16
|
};
|
|
@@ -15,4 +18,4 @@ const syncHeight = () => {
|
|
|
15
18
|
document.body.style.setProperty('--window-inner-scrollY', `${window.scrollY}px`);
|
|
16
19
|
};
|
|
17
20
|
|
|
18
|
-
export { lockScroll, syncHeight, unlockScroll };
|
|
21
|
+
export { isScrollLocked, lockScroll, syncHeight, unlockScroll };
|
package/modern/index.css
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/* hash:
|
|
1
|
+
/* hash: mo6a5 */
|
|
2
2
|
:root { /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */
|
|
3
3
|
} /* deprecated */ :root {
|
|
4
4
|
--color-light-modal-bg-primary: #fff; /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */
|
|
@@ -26,13 +26,13 @@
|
|
|
26
26
|
margin-top: calc(var(--window-inner-scrollY) * -1);
|
|
27
27
|
position: fixed;
|
|
28
28
|
overflow: hidden;
|
|
29
|
-
} .base-
|
|
29
|
+
} .base-modal__component_1tfil {
|
|
30
30
|
position: relative;
|
|
31
31
|
box-sizing: border-box;
|
|
32
32
|
background: var(--color-light-modal-bg-primary);
|
|
33
33
|
margin: auto;
|
|
34
34
|
flex-shrink: 0;
|
|
35
|
-
} .base-
|
|
35
|
+
} .base-modal__wrapper_1tfil {
|
|
36
36
|
position: fixed;
|
|
37
37
|
top: var(--gap-0);
|
|
38
38
|
left: var(--gap-0);
|
|
@@ -45,27 +45,27 @@
|
|
|
45
45
|
align-items: center;
|
|
46
46
|
outline: 0;
|
|
47
47
|
overscroll-behavior: none;
|
|
48
|
-
} .base-
|
|
48
|
+
} .base-modal__content_1tfil {
|
|
49
49
|
width: 100%;
|
|
50
50
|
height: 100%;
|
|
51
51
|
display: flex;
|
|
52
52
|
flex-direction: column;
|
|
53
53
|
flex: 1;
|
|
54
|
-
} .base-
|
|
54
|
+
} .base-modal__hidden_1tfil {
|
|
55
55
|
display: none;
|
|
56
|
-
} .base-
|
|
56
|
+
} .base-modal__backdrop_1tfil {
|
|
57
57
|
z-index: 0;
|
|
58
|
-
} .base-
|
|
59
|
-
.base-
|
|
58
|
+
} .base-modal__appear_1tfil,
|
|
59
|
+
.base-modal__enter_1tfil {
|
|
60
60
|
opacity: 0;
|
|
61
|
-
} .base-
|
|
62
|
-
.base-
|
|
61
|
+
} .base-modal__appearActive_1tfil,
|
|
62
|
+
.base-modal__enterActive_1tfil {
|
|
63
63
|
opacity: 1;
|
|
64
64
|
transition: opacity 200ms ease-in;
|
|
65
|
-
} .base-
|
|
65
|
+
} .base-modal__exit_1tfil {
|
|
66
66
|
opacity: 1;
|
|
67
|
-
} .base-
|
|
68
|
-
.base-
|
|
67
|
+
} .base-modal__exitActive_1tfil,
|
|
68
|
+
.base-modal__exitDone_1tfil {
|
|
69
69
|
opacity: 0;
|
|
70
70
|
transition: opacity 200ms ease-out;
|
|
71
71
|
}
|
package/modern/index.js
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
export { BaseModal, BaseModalContext } from './Component.js';
|
|
2
2
|
export { handleContainer, hasScrollbar, isScrolledToBottom, isScrolledToTop, restoreContainerStyles } from './utils.js';
|
|
3
|
-
export { lockScroll, syncHeight, unlockScroll } from './helpers/lockScroll.js';
|
|
3
|
+
export { isScrollLocked, lockScroll, syncHeight, unlockScroll } from './helpers/lockScroll.js';
|
package/moderncssm/Component.js
CHANGED
|
@@ -190,6 +190,9 @@ const BaseModal = forwardRef(({ open, container, children, scrollHandler = 'wrap
|
|
|
190
190
|
}
|
|
191
191
|
setExited(false);
|
|
192
192
|
}
|
|
193
|
+
if (!open) {
|
|
194
|
+
unlockScroll();
|
|
195
|
+
}
|
|
193
196
|
}, [getContainer, open, disableBlockingScroll, isExited, iOSLock]);
|
|
194
197
|
useEffect(() => {
|
|
195
198
|
const ResizeObserver$1 = window.ResizeObserver || ResizeObserver;
|
|
@@ -1,4 +1,5 @@
|
|
|
1
|
+
declare const isScrollLocked: () => boolean;
|
|
1
2
|
declare const lockScroll: () => void;
|
|
2
3
|
declare const unlockScroll: () => void;
|
|
3
4
|
declare const syncHeight: () => void;
|
|
4
|
-
export { lockScroll, unlockScroll, syncHeight };
|
|
5
|
+
export { isScrollLocked, lockScroll, unlockScroll, syncHeight };
|
|
@@ -3,11 +3,14 @@
|
|
|
3
3
|
* В проекте используется overflow: hidden для блокировки, но в некоторых случаях этого недостаточно. Данный хелпер призван решать эту проблему
|
|
4
4
|
*/
|
|
5
5
|
let scrollY;
|
|
6
|
+
const isScrollLocked = () => document.body.classList.contains('is-locked');
|
|
6
7
|
const lockScroll = () => {
|
|
7
8
|
scrollY = window.scrollY;
|
|
8
9
|
document.body.classList.add('is-locked');
|
|
9
10
|
};
|
|
10
11
|
const unlockScroll = () => {
|
|
12
|
+
if (!isScrollLocked())
|
|
13
|
+
return;
|
|
11
14
|
document.body.classList.remove('is-locked');
|
|
12
15
|
window.scrollTo(0, scrollY);
|
|
13
16
|
};
|
|
@@ -15,4 +18,4 @@ const syncHeight = () => {
|
|
|
15
18
|
document.body.style.setProperty('--window-inner-scrollY', `${window.scrollY}px`);
|
|
16
19
|
};
|
|
17
20
|
|
|
18
|
-
export { lockScroll, syncHeight, unlockScroll };
|
|
21
|
+
export { isScrollLocked, lockScroll, syncHeight, unlockScroll };
|
package/moderncssm/index.js
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
export { BaseModal, BaseModalContext } from './Component.js';
|
|
2
2
|
export { handleContainer, hasScrollbar, isScrolledToBottom, isScrolledToTop, restoreContainerStyles } from './utils.js';
|
|
3
|
-
export { lockScroll, syncHeight, unlockScroll } from './helpers/lockScroll.js';
|
|
3
|
+
export { isScrollLocked, lockScroll, syncHeight, unlockScroll } from './helpers/lockScroll.js';
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@alfalab/core-components-base-modal",
|
|
3
|
-
"version": "5.8.
|
|
3
|
+
"version": "5.8.3",
|
|
4
4
|
"description": "BaseModal component",
|
|
5
5
|
"keywords": [],
|
|
6
6
|
"license": "MIT",
|
|
@@ -29,6 +29,6 @@
|
|
|
29
29
|
"peerDependencies": {
|
|
30
30
|
"react": "^16.9.0 || ^17.0.1 || ^18.0.0"
|
|
31
31
|
},
|
|
32
|
-
"themesVersion": "13.
|
|
33
|
-
"varsVersion": "9.
|
|
32
|
+
"themesVersion": "13.5.0",
|
|
33
|
+
"varsVersion": "9.15.0"
|
|
34
34
|
}
|
package/src/Component.tsx
CHANGED
|
@@ -5,12 +5,16 @@
|
|
|
5
5
|
|
|
6
6
|
let scrollY: number;
|
|
7
7
|
|
|
8
|
+
export const isScrollLocked = () => document.body.classList.contains('is-locked');
|
|
9
|
+
|
|
8
10
|
export const lockScroll = () => {
|
|
9
11
|
scrollY = window.scrollY;
|
|
10
12
|
document.body.classList.add('is-locked');
|
|
11
13
|
};
|
|
12
14
|
|
|
13
15
|
export const unlockScroll = () => {
|
|
16
|
+
if (!isScrollLocked()) return;
|
|
17
|
+
|
|
14
18
|
document.body.classList.remove('is-locked');
|
|
15
19
|
window.scrollTo(0, scrollY);
|
|
16
20
|
};
|