@alfalab/core-components 45.8.0-beta.0 → 45.8.0-beta.2
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/base-modal/Component.d.ts +4 -0
- package/base-modal/Component.js +28 -11
- package/base-modal/cssm/Component.d.ts +4 -0
- package/base-modal/cssm/Component.js +28 -11
- package/base-modal/cssm/helpers/lockScroll.d.ts +4 -0
- package/base-modal/cssm/helpers/lockScroll.js +18 -0
- package/base-modal/cssm/utils.d.ts +1 -1
- package/base-modal/cssm/utils.js +5 -2
- package/base-modal/esm/Component.d.ts +4 -0
- package/base-modal/esm/Component.js +29 -12
- package/base-modal/esm/helpers/lockScroll.d.ts +4 -0
- package/base-modal/esm/helpers/lockScroll.js +14 -0
- package/base-modal/esm/index.js +1 -0
- package/base-modal/esm/utils.d.ts +1 -1
- package/base-modal/esm/utils.js +5 -2
- package/base-modal/helpers/lockScroll.d.ts +4 -0
- package/base-modal/helpers/lockScroll.js +18 -0
- package/base-modal/modern/Component.d.ts +4 -0
- package/base-modal/modern/Component.js +22 -5
- package/base-modal/modern/helpers/lockScroll.d.ts +4 -0
- package/base-modal/modern/helpers/lockScroll.js +14 -0
- package/base-modal/modern/index.js +1 -0
- package/base-modal/modern/utils.d.ts +1 -1
- package/base-modal/modern/utils.js +4 -2
- package/base-modal/utils.d.ts +1 -1
- package/base-modal/utils.js +5 -2
- package/confirmation/components/screens/initial/component.js +1 -1
- package/confirmation/components/screens/initial/countdown-section.js +1 -1
- package/confirmation/esm/component.responsive.js +1 -1
- package/confirmation/esm/components/base-confirmation/component.js +1 -1
- package/confirmation/esm/components/base-confirmation/index.js +1 -1
- package/confirmation/esm/components/index.js +1 -1
- package/confirmation/esm/components/screens/index.js +1 -1
- package/confirmation/esm/components/screens/initial/component.js +1 -1
- package/confirmation/esm/components/screens/initial/countdown-section.js +1 -1
- package/confirmation/esm/components/screens/initial/index.js +1 -1
- package/confirmation/esm/desktop/component.desktop.js +1 -1
- package/confirmation/esm/desktop/index.js +1 -1
- package/confirmation/esm/index.js +1 -1
- package/confirmation/esm/mobile/component.mobile.js +1 -1
- package/confirmation/esm/mobile/index.js +1 -1
- package/confirmation/esm/shared/index.js +1 -1
- package/confirmation/modern/component.responsive.js +1 -1
- package/confirmation/modern/components/base-confirmation/component.js +1 -1
- package/confirmation/modern/components/base-confirmation/index.js +1 -1
- package/confirmation/modern/components/index.js +1 -1
- package/confirmation/modern/components/screens/index.js +1 -1
- package/confirmation/modern/components/screens/initial/component.js +1 -1
- package/confirmation/modern/components/screens/initial/countdown-section.js +1 -1
- package/confirmation/modern/components/screens/initial/index.js +1 -1
- package/confirmation/modern/desktop/component.desktop.js +1 -1
- package/confirmation/modern/desktop/index.js +1 -1
- package/confirmation/modern/index.js +1 -1
- package/confirmation/modern/mobile/component.mobile.js +1 -1
- package/confirmation/modern/mobile/index.js +1 -1
- package/confirmation/modern/shared/index.js +1 -1
- package/gallery/components/header/Component.js +1 -1
- package/gallery/components/header/buttons.js +1 -1
- package/gallery/components/image-viewer/component.js +1 -1
- package/gallery/components/image-viewer/slide.js +1 -1
- package/gallery/esm/Component.js +2 -2
- package/gallery/esm/components/header/Component.js +1 -1
- package/gallery/esm/components/header/buttons.js +1 -1
- package/gallery/esm/components/header/index.js +1 -1
- package/gallery/esm/components/image-preview/Component.js +1 -1
- package/gallery/esm/components/image-preview/index.js +1 -1
- package/gallery/esm/components/image-viewer/component.js +1 -1
- package/gallery/esm/components/image-viewer/index.js +1 -1
- package/gallery/esm/components/image-viewer/slide.js +1 -1
- package/gallery/esm/components/index.js +2 -2
- package/gallery/esm/components/navigation-bar/Component.js +1 -1
- package/gallery/esm/components/navigation-bar/index.js +1 -1
- package/gallery/esm/index.js +2 -2
- package/gallery/modern/Component.js +2 -2
- package/gallery/modern/components/header/Component.js +1 -1
- package/gallery/modern/components/header/buttons.js +1 -1
- package/gallery/modern/components/header/index.js +1 -1
- package/gallery/modern/components/image-preview/Component.js +1 -1
- package/gallery/modern/components/image-preview/index.js +1 -1
- package/gallery/modern/components/image-viewer/component.js +1 -1
- package/gallery/modern/components/image-viewer/index.js +1 -1
- package/gallery/modern/components/image-viewer/slide.js +1 -1
- package/gallery/modern/components/index.js +2 -2
- package/gallery/modern/components/navigation-bar/Component.js +1 -1
- package/gallery/modern/components/navigation-bar/index.js +1 -1
- package/gallery/modern/index.js +2 -2
- package/international-phone-input/cssm/index-bdb4c6b9.d.ts +9 -2
- package/international-phone-input/esm/index-bdb4c6b9.d.ts +9 -2
- package/international-phone-input/index-bdb4c6b9.d.ts +9 -2
- package/international-phone-input/modern/index-bdb4c6b9.d.ts +9 -2
- package/modal/components/controls/Component.js +1 -1
- package/modal/components/footer/Component.js +1 -1
- package/modal/esm/Component.responsive.js +1 -1
- package/modal/esm/components/controls/Component.js +1 -1
- package/modal/esm/components/controls/index.js +1 -1
- package/modal/esm/components/footer/Component.js +1 -1
- package/modal/esm/desktop/Component.desktop.js +1 -1
- package/modal/esm/desktop/index.js +1 -1
- package/modal/esm/index.js +1 -1
- package/modal/esm/mobile/Component.mobile.js +1 -1
- package/modal/esm/mobile/index.js +1 -1
- package/modal/modern/Component.responsive.js +1 -1
- package/modal/modern/components/controls/Component.js +1 -1
- package/modal/modern/components/controls/index.js +1 -1
- package/modal/modern/components/footer/Component.js +1 -1
- package/modal/modern/desktop/Component.desktop.js +1 -1
- package/modal/modern/desktop/index.js +1 -1
- package/modal/modern/index.js +1 -1
- package/modal/modern/mobile/Component.mobile.js +1 -1
- package/modal/modern/mobile/index.js +1 -1
- package/package.json +1 -1
- package/picker-button/cssm/index-bdb4c6b9.d.ts +9 -2
- package/picker-button/esm/index-bdb4c6b9.d.ts +9 -2
- package/picker-button/index-bdb4c6b9.d.ts +9 -2
- package/picker-button/modern/index-bdb4c6b9.d.ts +9 -2
- package/pure-cell/component.js +1 -1
- package/pure-cell/components/addon/component.js +1 -1
- package/pure-cell/components/addon/index.d.ts +1 -1
- package/pure-cell/components/addon/index.js +1 -1
- package/pure-cell/components/amount/component.js +1 -1
- package/pure-cell/components/amount/index.d.ts +1 -1
- package/pure-cell/components/amount/index.js +1 -1
- package/pure-cell/components/amount-title/component.js +1 -1
- package/pure-cell/components/amount-title/index.d.ts +1 -1
- package/pure-cell/components/amount-title/index.js +1 -1
- package/pure-cell/components/category/component.js +1 -1
- package/pure-cell/components/category/index.d.ts +1 -1
- package/pure-cell/components/category/index.js +1 -1
- package/pure-cell/components/content/component.js +1 -1
- package/pure-cell/components/content/index.d.ts +1 -1
- package/pure-cell/components/content/index.js +1 -1
- package/pure-cell/components/footer/component.js +1 -1
- package/pure-cell/components/footer/index.d.ts +1 -1
- package/pure-cell/components/footer/index.js +1 -1
- package/pure-cell/components/footer-button/component.js +1 -1
- package/pure-cell/components/footer-button/index.d.ts +1 -1
- package/pure-cell/components/footer-button/index.js +1 -1
- package/pure-cell/components/footer-text/component.js +1 -1
- package/pure-cell/components/footer-text/index.d.ts +1 -1
- package/pure-cell/components/footer-text/index.js +1 -1
- package/pure-cell/components/graphics/component.js +1 -1
- package/pure-cell/components/graphics/index.d.ts +1 -1
- package/pure-cell/components/graphics/index.js +1 -1
- package/pure-cell/components/main/component.js +1 -1
- package/pure-cell/components/main/index.d.ts +1 -1
- package/pure-cell/components/main/index.js +1 -1
- package/pure-cell/components/text/component.js +1 -1
- package/pure-cell/components/text/index.d.ts +1 -1
- package/pure-cell/components/text/index.js +1 -1
- package/pure-cell/esm/component.js +1 -1
- package/pure-cell/esm/components/addon/component.js +1 -1
- package/pure-cell/esm/components/addon/index.d.ts +1 -1
- package/pure-cell/esm/components/addon/index.js +1 -1
- package/pure-cell/esm/components/amount/component.js +1 -1
- package/pure-cell/esm/components/amount/index.d.ts +1 -1
- package/pure-cell/esm/components/amount/index.js +1 -1
- package/pure-cell/esm/components/amount-title/component.js +1 -1
- package/pure-cell/esm/components/amount-title/index.d.ts +1 -1
- package/pure-cell/esm/components/amount-title/index.js +1 -1
- package/pure-cell/esm/components/category/component.js +1 -1
- package/pure-cell/esm/components/category/index.d.ts +1 -1
- package/pure-cell/esm/components/category/index.js +1 -1
- package/pure-cell/esm/components/content/component.js +1 -1
- package/pure-cell/esm/components/content/index.d.ts +1 -1
- package/pure-cell/esm/components/content/index.js +1 -1
- package/pure-cell/esm/components/footer/component.js +1 -1
- package/pure-cell/esm/components/footer/index.d.ts +1 -1
- package/pure-cell/esm/components/footer/index.js +1 -1
- package/pure-cell/esm/components/footer-button/component.js +1 -1
- package/pure-cell/esm/components/footer-button/index.d.ts +1 -1
- package/pure-cell/esm/components/footer-button/index.js +1 -1
- package/pure-cell/esm/components/footer-text/component.js +1 -1
- package/pure-cell/esm/components/footer-text/index.d.ts +1 -1
- package/pure-cell/esm/components/footer-text/index.js +1 -1
- package/pure-cell/esm/components/graphics/component.js +1 -1
- package/pure-cell/esm/components/graphics/index.d.ts +1 -1
- package/pure-cell/esm/components/graphics/index.js +1 -1
- package/pure-cell/esm/components/main/component.js +1 -1
- package/pure-cell/esm/components/main/index.d.ts +1 -1
- package/pure-cell/esm/components/main/index.js +1 -1
- package/pure-cell/esm/components/text/component.js +1 -1
- package/pure-cell/esm/components/text/index.d.ts +1 -1
- package/pure-cell/esm/components/text/index.js +1 -1
- package/pure-cell/esm/index.js +1 -1
- package/pure-cell/index.js +1 -1
- package/pure-cell/modern/component.js +1 -1
- package/pure-cell/modern/components/addon/component.js +1 -1
- package/pure-cell/modern/components/addon/index.d.ts +1 -1
- package/pure-cell/modern/components/addon/index.js +1 -1
- package/pure-cell/modern/components/amount/component.js +1 -1
- package/pure-cell/modern/components/amount/index.d.ts +1 -1
- package/pure-cell/modern/components/amount/index.js +1 -1
- package/pure-cell/modern/components/amount-title/component.js +1 -1
- package/pure-cell/modern/components/amount-title/index.d.ts +1 -1
- package/pure-cell/modern/components/amount-title/index.js +1 -1
- package/pure-cell/modern/components/category/component.js +1 -1
- package/pure-cell/modern/components/category/index.d.ts +1 -1
- package/pure-cell/modern/components/category/index.js +1 -1
- package/pure-cell/modern/components/content/component.js +1 -1
- package/pure-cell/modern/components/content/index.d.ts +1 -1
- package/pure-cell/modern/components/content/index.js +1 -1
- package/pure-cell/modern/components/footer/component.js +1 -1
- package/pure-cell/modern/components/footer/index.d.ts +1 -1
- package/pure-cell/modern/components/footer/index.js +1 -1
- package/pure-cell/modern/components/footer-button/component.js +1 -1
- package/pure-cell/modern/components/footer-button/index.d.ts +1 -1
- package/pure-cell/modern/components/footer-button/index.js +1 -1
- package/pure-cell/modern/components/footer-text/component.js +1 -1
- package/pure-cell/modern/components/footer-text/index.d.ts +1 -1
- package/pure-cell/modern/components/footer-text/index.js +1 -1
- package/pure-cell/modern/components/graphics/component.js +1 -1
- package/pure-cell/modern/components/graphics/index.d.ts +1 -1
- package/pure-cell/modern/components/graphics/index.js +1 -1
- package/pure-cell/modern/components/main/component.js +1 -1
- package/pure-cell/modern/components/main/index.d.ts +1 -1
- package/pure-cell/modern/components/main/index.js +1 -1
- package/pure-cell/modern/components/text/component.js +1 -1
- package/pure-cell/modern/components/text/index.d.ts +1 -1
- package/pure-cell/modern/components/text/index.js +1 -1
- package/pure-cell/modern/index.js +1 -1
- package/side-panel/components/controls/Component.js +1 -1
- package/side-panel/components/footer/Component.js +1 -1
- package/side-panel/esm/Component.responsive.js +1 -1
- package/side-panel/esm/components/controls/Component.js +1 -1
- package/side-panel/esm/components/controls/index.js +1 -1
- package/side-panel/esm/components/footer/Component.desktop.js +1 -1
- package/side-panel/esm/components/footer/Component.js +1 -1
- package/side-panel/esm/components/footer/Component.mobile.js +1 -1
- package/side-panel/esm/desktop/Component.desktop.js +1 -1
- package/side-panel/esm/desktop/index.js +1 -1
- package/side-panel/esm/index.js +1 -1
- package/side-panel/esm/mobile/Component.mobile.js +1 -1
- package/side-panel/esm/mobile/index.js +1 -1
- package/side-panel/modern/Component.responsive.js +1 -1
- package/side-panel/modern/components/controls/Component.js +1 -1
- package/side-panel/modern/components/controls/index.js +1 -1
- package/side-panel/modern/components/footer/Component.desktop.js +1 -1
- package/side-panel/modern/components/footer/Component.js +1 -1
- package/side-panel/modern/components/footer/Component.mobile.js +1 -1
- package/side-panel/modern/desktop/Component.desktop.js +1 -1
- package/side-panel/modern/desktop/index.js +1 -1
- package/side-panel/modern/index.js +1 -1
- package/side-panel/modern/mobile/Component.mobile.js +1 -1
- package/side-panel/modern/mobile/index.js +1 -1
- package/themes/click.css +1515 -0
- package/themes/compiled/mobile-dark-bluetint.css +10 -10
- package/themes/corp.css +1515 -0
- package/themes/intranet.css +1515 -0
- package/themes/mobile.css +1515 -0
- package/themes/site.css +1515 -0
- package/universal-date-input/cssm/index-5712fce2.d.ts +8 -1
- package/universal-date-input/esm/index-5712fce2.d.ts +8 -1
- package/universal-date-input/index-5712fce2.d.ts +8 -1
- package/universal-date-input/modern/index-5712fce2.d.ts +8 -1
- /package/confirmation/{countdown-section-ea52770e.d.ts → countdown-section-9194293e.d.ts} +0 -0
- /package/confirmation/{countdown-section-ea52770e.js → countdown-section-9194293e.js} +0 -0
- /package/confirmation/esm/{countdown-section-95b6b929.d.ts → countdown-section-fc384721.d.ts} +0 -0
- /package/confirmation/esm/{countdown-section-95b6b929.js → countdown-section-fc384721.js} +0 -0
- /package/confirmation/modern/{countdown-section-bfef8483.d.ts → countdown-section-f33e01b7.d.ts} +0 -0
- /package/confirmation/modern/{countdown-section-bfef8483.js → countdown-section-f33e01b7.js} +0 -0
- /package/gallery/{buttons-c863bfdb.d.ts → buttons-160fdb5a.d.ts} +0 -0
- /package/gallery/{buttons-c863bfdb.js → buttons-160fdb5a.js} +0 -0
- /package/gallery/esm/{buttons-7955bd19.d.ts → buttons-f951e5ce.d.ts} +0 -0
- /package/gallery/esm/{buttons-7955bd19.js → buttons-f951e5ce.js} +0 -0
- /package/gallery/esm/{slide-ccf09eda.d.ts → slide-3595abb4.d.ts} +0 -0
- /package/gallery/esm/{slide-ccf09eda.js → slide-3595abb4.js} +0 -0
- /package/gallery/modern/{buttons-a7c365d3.d.ts → buttons-a3ff616b.d.ts} +0 -0
- /package/gallery/modern/{buttons-a7c365d3.js → buttons-a3ff616b.js} +0 -0
- /package/gallery/modern/{slide-8098a08f.d.ts → slide-acb49e8e.d.ts} +0 -0
- /package/gallery/modern/{slide-8098a08f.js → slide-acb49e8e.js} +0 -0
- /package/gallery/{slide-11daaf82.d.ts → slide-2268997b.d.ts} +0 -0
- /package/gallery/{slide-11daaf82.js → slide-2268997b.js} +0 -0
- /package/modal/esm/{layout.module-b635b128.js → layout.module-2fe04090.js} +0 -0
- /package/modal/{layout.module-34149103.js → layout.module-8adfa2ca.js} +0 -0
- /package/modal/modern/{layout.module-41e8947b.js → layout.module-5847d827.js} +0 -0
- /package/pure-cell/{component-5e8acf12.d.ts → component-41907143.d.ts} +0 -0
- /package/pure-cell/{component-5e8acf12.js → component-41907143.js} +0 -0
- /package/pure-cell/esm/{component-f28a5631.d.ts → component-e23350f5.d.ts} +0 -0
- /package/pure-cell/esm/{component-f28a5631.js → component-e23350f5.js} +0 -0
- /package/pure-cell/modern/{component-10bc9276.d.ts → component-b9194169.d.ts} +0 -0
- /package/pure-cell/modern/{component-10bc9276.js → component-b9194169.js} +0 -0
- /package/side-panel/esm/{layout.module-82f2a2ed.js → layout.module-a9e68775.js} +0 -0
- /package/side-panel/{layout.module-cda730eb.js → layout.module-df4fedc9.js} +0 -0
- /package/side-panel/modern/{layout.module-2b3f98d0.js → layout.module-d348cc57.js} +0 -0
|
@@ -134,6 +134,10 @@ type BaseModalProps = {
|
|
|
134
134
|
* Реф, который должен быть установлен компонентной области
|
|
135
135
|
*/
|
|
136
136
|
componentRef?: MutableRefObject<HTMLDivElement | null>;
|
|
137
|
+
/**
|
|
138
|
+
* Блокирует скролл когда модальное окно открыто. Работает только на iOS.
|
|
139
|
+
*/
|
|
140
|
+
iOSLock?: boolean;
|
|
137
141
|
};
|
|
138
142
|
type BaseModalContext = {
|
|
139
143
|
parentRef: React.RefObject<HTMLDivElement>;
|
package/base-modal/Component.js
CHANGED
|
@@ -11,6 +11,7 @@ var coreComponentsBackdrop = require('../backdrop');
|
|
|
11
11
|
var coreComponentsPortal = require('../portal');
|
|
12
12
|
var coreComponentsShared = require('../shared');
|
|
13
13
|
var coreComponentsStack = require('../stack');
|
|
14
|
+
var helpers_lockScroll = require('./helpers/lockScroll.js');
|
|
14
15
|
var utils = require('./utils.js');
|
|
15
16
|
require('./matches-polyfill.js');
|
|
16
17
|
|
|
@@ -41,14 +42,14 @@ var BaseModalContext = React__default.default.createContext({
|
|
|
41
42
|
onClose: function () { return null; },
|
|
42
43
|
});
|
|
43
44
|
var BaseModal = React.forwardRef(function (_a, ref) {
|
|
44
|
-
var open = _a.open, container = _a.container, children = _a.children, _b = _a.scrollHandler, scrollHandler = _b === void 0 ? 'wrapper' : _b, _c = _a.Backdrop, Backdrop = _c === void 0 ? coreComponentsBackdrop.Backdrop : _c, _d = _a.backdropProps, backdropProps = _d === void 0 ? {} : _d, _e = _a.transitionProps, transitionProps = _e === void 0 ? {} : _e, disableBackdropClick = _a.disableBackdropClick, _f = _a.disableAutoFocus, disableAutoFocus = _f === void 0 ? false : _f, _g = _a.disableFocusLock, disableFocusLock = _g === void 0 ? false : _g, _h = _a.disableEscapeKeyDown, disableEscapeKeyDown = _h === void 0 ? false : _h, _j = _a.disableRestoreFocus, disableRestoreFocus = _j === void 0 ? false : _j, _k = _a.disableBlockingScroll, disableBlockingScroll = _k === void 0 ? false : _k, _l = _a.keepMounted, keepMounted = _l === void 0 ? false : _l, className = _a.className, contentClassName = _a.contentClassName, wrapperProps = _a.wrapperProps, contentProps = _a.contentProps, componentDivProps = _a.componentDivProps, wrapperClassName = _a.wrapperClassName, onBackdropClick = _a.onBackdropClick, onClose = _a.onClose, onEscapeKeyDown = _a.onEscapeKeyDown, onMount = _a.onMount, onUnmount = _a.onUnmount, dataTestId = _a.dataTestId, _m = _a.zIndex, zIndex = _m === void 0 ? coreComponentsStack.stackingOrder.MODAL : _m, _o = _a.componentRef, componentRef = _o === void 0 ? null : _o, _p = _a.usePortal, usePortal = _p === void 0 ? true : _p;
|
|
45
|
-
var
|
|
46
|
-
var
|
|
47
|
-
var
|
|
48
|
-
var
|
|
49
|
-
var
|
|
50
|
-
var
|
|
51
|
-
var
|
|
45
|
+
var open = _a.open, container = _a.container, children = _a.children, _b = _a.scrollHandler, scrollHandler = _b === void 0 ? 'wrapper' : _b, _c = _a.Backdrop, Backdrop = _c === void 0 ? coreComponentsBackdrop.Backdrop : _c, _d = _a.backdropProps, backdropProps = _d === void 0 ? {} : _d, _e = _a.transitionProps, transitionProps = _e === void 0 ? {} : _e, disableBackdropClick = _a.disableBackdropClick, _f = _a.disableAutoFocus, disableAutoFocus = _f === void 0 ? false : _f, _g = _a.disableFocusLock, disableFocusLock = _g === void 0 ? false : _g, _h = _a.disableEscapeKeyDown, disableEscapeKeyDown = _h === void 0 ? false : _h, _j = _a.disableRestoreFocus, disableRestoreFocus = _j === void 0 ? false : _j, _k = _a.disableBlockingScroll, disableBlockingScroll = _k === void 0 ? false : _k, _l = _a.keepMounted, keepMounted = _l === void 0 ? false : _l, className = _a.className, contentClassName = _a.contentClassName, wrapperProps = _a.wrapperProps, contentProps = _a.contentProps, componentDivProps = _a.componentDivProps, wrapperClassName = _a.wrapperClassName, onBackdropClick = _a.onBackdropClick, onClose = _a.onClose, onEscapeKeyDown = _a.onEscapeKeyDown, onMount = _a.onMount, onUnmount = _a.onUnmount, dataTestId = _a.dataTestId, _m = _a.zIndex, zIndex = _m === void 0 ? coreComponentsStack.stackingOrder.MODAL : _m, _o = _a.componentRef, componentRef = _o === void 0 ? null : _o, _p = _a.usePortal, usePortal = _p === void 0 ? true : _p, _q = _a.iOSLock, iOSLock = _q === void 0 ? false : _q;
|
|
46
|
+
var _r = React.useState(null), exited = _r[0], setExited = _r[1];
|
|
47
|
+
var _s = React.useState(false), hasScroll = _s[0], setHasScroll = _s[1];
|
|
48
|
+
var _t = React.useState(false), hasHeader = _t[0], setHasHeader = _t[1];
|
|
49
|
+
var _u = React.useState(false), hasFooter = _u[0], setHasFooter = _u[1];
|
|
50
|
+
var _v = React.useState(false), headerHighlighted = _v[0], setHeaderHighlighted = _v[1];
|
|
51
|
+
var _w = React.useState(false), footerHighlighted = _w[0], setFooterHighlighted = _w[1];
|
|
52
|
+
var _x = React.useState(0), headerOffset = _x[0], setHeaderOffset = _x[1];
|
|
52
53
|
var componentNodeRef = React.useRef(null);
|
|
53
54
|
var wrapperRef = React.useRef(null);
|
|
54
55
|
var scrollableNodeRef = React.useRef(null);
|
|
@@ -100,6 +101,9 @@ var BaseModal = React.forwardRef(function (_a, ref) {
|
|
|
100
101
|
}
|
|
101
102
|
}, [hasFooter, hasHeader, headerOffset]);
|
|
102
103
|
var handleClose = React.useCallback(function (event, reason) {
|
|
104
|
+
if (iOSLock && coreComponentsShared.os.isIOS()) {
|
|
105
|
+
helpers_lockScroll.unlockScroll();
|
|
106
|
+
}
|
|
103
107
|
if (onClose) {
|
|
104
108
|
onClose(event, reason);
|
|
105
109
|
}
|
|
@@ -110,7 +114,7 @@ var BaseModal = React.forwardRef(function (_a, ref) {
|
|
|
110
114
|
onEscapeKeyDown(event);
|
|
111
115
|
}
|
|
112
116
|
return null;
|
|
113
|
-
}, [onBackdropClick, onClose, onEscapeKeyDown]);
|
|
117
|
+
}, [onBackdropClick, onClose, onEscapeKeyDown, iOSLock]);
|
|
114
118
|
var handleBackdropMouseDown = function (event) {
|
|
115
119
|
var _a;
|
|
116
120
|
var clickedOnScrollbar = false;
|
|
@@ -185,7 +189,10 @@ var BaseModal = React.forwardRef(function (_a, ref) {
|
|
|
185
189
|
if (open && isExited) {
|
|
186
190
|
if (!disableBlockingScroll) {
|
|
187
191
|
var el_1 = getContainer();
|
|
188
|
-
utils.handleContainer(el_1);
|
|
192
|
+
utils.handleContainer(el_1, coreComponentsShared.os.isIOS());
|
|
193
|
+
if (iOSLock && coreComponentsShared.os.isIOS()) {
|
|
194
|
+
helpers_lockScroll.lockScroll();
|
|
195
|
+
}
|
|
189
196
|
restoreContainerStylesRef.current = function () {
|
|
190
197
|
restoreContainerStylesRef.current = null;
|
|
191
198
|
utils.restoreContainerStyles(el_1);
|
|
@@ -193,7 +200,7 @@ var BaseModal = React.forwardRef(function (_a, ref) {
|
|
|
193
200
|
}
|
|
194
201
|
setExited(false);
|
|
195
202
|
}
|
|
196
|
-
}, [getContainer, open, disableBlockingScroll, isExited]);
|
|
203
|
+
}, [getContainer, open, disableBlockingScroll, isExited, iOSLock]);
|
|
197
204
|
React.useEffect(function () {
|
|
198
205
|
var ResizeObserver = window.ResizeObserver || resizeObserver.ResizeObserver;
|
|
199
206
|
resizeObserverRef.current = new ResizeObserver(checkToHasScrollBar);
|
|
@@ -206,6 +213,16 @@ var BaseModal = React.forwardRef(function (_a, ref) {
|
|
|
206
213
|
}
|
|
207
214
|
};
|
|
208
215
|
}, []);
|
|
216
|
+
React.useEffect(function () {
|
|
217
|
+
if (iOSLock && coreComponentsShared.os.isIOS()) {
|
|
218
|
+
window.addEventListener('resize', helpers_lockScroll.syncHeight);
|
|
219
|
+
}
|
|
220
|
+
return function () {
|
|
221
|
+
if (iOSLock && coreComponentsShared.os.isIOS()) {
|
|
222
|
+
window.removeEventListener('resize', helpers_lockScroll.syncHeight);
|
|
223
|
+
}
|
|
224
|
+
};
|
|
225
|
+
}, [iOSLock]);
|
|
209
226
|
var contextValue = React.useMemo(function () { return ({
|
|
210
227
|
parentRef: wrapperRef,
|
|
211
228
|
componentRef: componentNodeRef,
|
|
@@ -134,6 +134,10 @@ type BaseModalProps = {
|
|
|
134
134
|
* Реф, который должен быть установлен компонентной области
|
|
135
135
|
*/
|
|
136
136
|
componentRef?: MutableRefObject<HTMLDivElement | null>;
|
|
137
|
+
/**
|
|
138
|
+
* Блокирует скролл когда модальное окно открыто. Работает только на iOS.
|
|
139
|
+
*/
|
|
140
|
+
iOSLock?: boolean;
|
|
137
141
|
};
|
|
138
142
|
type BaseModalContext = {
|
|
139
143
|
parentRef: React.RefObject<HTMLDivElement>;
|
|
@@ -11,6 +11,7 @@ var coreComponentsBackdrop = require('../../backdrop/cssm');
|
|
|
11
11
|
var coreComponentsPortal = require('../../portal/cssm');
|
|
12
12
|
var coreComponentsShared = require('../../shared/cssm');
|
|
13
13
|
var coreComponentsStack = require('../../stack/cssm');
|
|
14
|
+
var helpers_lockScroll = require('./helpers/lockScroll.js');
|
|
14
15
|
var utils = require('./utils.js');
|
|
15
16
|
var styles = require('./index.module.css');
|
|
16
17
|
require('./matches-polyfill.js');
|
|
@@ -40,14 +41,14 @@ var BaseModalContext = React__default.default.createContext({
|
|
|
40
41
|
onClose: function () { return null; },
|
|
41
42
|
});
|
|
42
43
|
var BaseModal = React.forwardRef(function (_a, ref) {
|
|
43
|
-
var open = _a.open, container = _a.container, children = _a.children, _b = _a.scrollHandler, scrollHandler = _b === void 0 ? 'wrapper' : _b, _c = _a.Backdrop, Backdrop = _c === void 0 ? coreComponentsBackdrop.Backdrop : _c, _d = _a.backdropProps, backdropProps = _d === void 0 ? {} : _d, _e = _a.transitionProps, transitionProps = _e === void 0 ? {} : _e, disableBackdropClick = _a.disableBackdropClick, _f = _a.disableAutoFocus, disableAutoFocus = _f === void 0 ? false : _f, _g = _a.disableFocusLock, disableFocusLock = _g === void 0 ? false : _g, _h = _a.disableEscapeKeyDown, disableEscapeKeyDown = _h === void 0 ? false : _h, _j = _a.disableRestoreFocus, disableRestoreFocus = _j === void 0 ? false : _j, _k = _a.disableBlockingScroll, disableBlockingScroll = _k === void 0 ? false : _k, _l = _a.keepMounted, keepMounted = _l === void 0 ? false : _l, className = _a.className, contentClassName = _a.contentClassName, wrapperProps = _a.wrapperProps, contentProps = _a.contentProps, componentDivProps = _a.componentDivProps, wrapperClassName = _a.wrapperClassName, onBackdropClick = _a.onBackdropClick, onClose = _a.onClose, onEscapeKeyDown = _a.onEscapeKeyDown, onMount = _a.onMount, onUnmount = _a.onUnmount, dataTestId = _a.dataTestId, _m = _a.zIndex, zIndex = _m === void 0 ? coreComponentsStack.stackingOrder.MODAL : _m, _o = _a.componentRef, componentRef = _o === void 0 ? null : _o, _p = _a.usePortal, usePortal = _p === void 0 ? true : _p;
|
|
44
|
-
var
|
|
45
|
-
var
|
|
46
|
-
var
|
|
47
|
-
var
|
|
48
|
-
var
|
|
49
|
-
var
|
|
50
|
-
var
|
|
44
|
+
var open = _a.open, container = _a.container, children = _a.children, _b = _a.scrollHandler, scrollHandler = _b === void 0 ? 'wrapper' : _b, _c = _a.Backdrop, Backdrop = _c === void 0 ? coreComponentsBackdrop.Backdrop : _c, _d = _a.backdropProps, backdropProps = _d === void 0 ? {} : _d, _e = _a.transitionProps, transitionProps = _e === void 0 ? {} : _e, disableBackdropClick = _a.disableBackdropClick, _f = _a.disableAutoFocus, disableAutoFocus = _f === void 0 ? false : _f, _g = _a.disableFocusLock, disableFocusLock = _g === void 0 ? false : _g, _h = _a.disableEscapeKeyDown, disableEscapeKeyDown = _h === void 0 ? false : _h, _j = _a.disableRestoreFocus, disableRestoreFocus = _j === void 0 ? false : _j, _k = _a.disableBlockingScroll, disableBlockingScroll = _k === void 0 ? false : _k, _l = _a.keepMounted, keepMounted = _l === void 0 ? false : _l, className = _a.className, contentClassName = _a.contentClassName, wrapperProps = _a.wrapperProps, contentProps = _a.contentProps, componentDivProps = _a.componentDivProps, wrapperClassName = _a.wrapperClassName, onBackdropClick = _a.onBackdropClick, onClose = _a.onClose, onEscapeKeyDown = _a.onEscapeKeyDown, onMount = _a.onMount, onUnmount = _a.onUnmount, dataTestId = _a.dataTestId, _m = _a.zIndex, zIndex = _m === void 0 ? coreComponentsStack.stackingOrder.MODAL : _m, _o = _a.componentRef, componentRef = _o === void 0 ? null : _o, _p = _a.usePortal, usePortal = _p === void 0 ? true : _p, _q = _a.iOSLock, iOSLock = _q === void 0 ? false : _q;
|
|
45
|
+
var _r = React.useState(null), exited = _r[0], setExited = _r[1];
|
|
46
|
+
var _s = React.useState(false), hasScroll = _s[0], setHasScroll = _s[1];
|
|
47
|
+
var _t = React.useState(false), hasHeader = _t[0], setHasHeader = _t[1];
|
|
48
|
+
var _u = React.useState(false), hasFooter = _u[0], setHasFooter = _u[1];
|
|
49
|
+
var _v = React.useState(false), headerHighlighted = _v[0], setHeaderHighlighted = _v[1];
|
|
50
|
+
var _w = React.useState(false), footerHighlighted = _w[0], setFooterHighlighted = _w[1];
|
|
51
|
+
var _x = React.useState(0), headerOffset = _x[0], setHeaderOffset = _x[1];
|
|
51
52
|
var componentNodeRef = React.useRef(null);
|
|
52
53
|
var wrapperRef = React.useRef(null);
|
|
53
54
|
var scrollableNodeRef = React.useRef(null);
|
|
@@ -99,6 +100,9 @@ var BaseModal = React.forwardRef(function (_a, ref) {
|
|
|
99
100
|
}
|
|
100
101
|
}, [hasFooter, hasHeader, headerOffset]);
|
|
101
102
|
var handleClose = React.useCallback(function (event, reason) {
|
|
103
|
+
if (iOSLock && coreComponentsShared.os.isIOS()) {
|
|
104
|
+
helpers_lockScroll.unlockScroll();
|
|
105
|
+
}
|
|
102
106
|
if (onClose) {
|
|
103
107
|
onClose(event, reason);
|
|
104
108
|
}
|
|
@@ -109,7 +113,7 @@ var BaseModal = React.forwardRef(function (_a, ref) {
|
|
|
109
113
|
onEscapeKeyDown(event);
|
|
110
114
|
}
|
|
111
115
|
return null;
|
|
112
|
-
}, [onBackdropClick, onClose, onEscapeKeyDown]);
|
|
116
|
+
}, [onBackdropClick, onClose, onEscapeKeyDown, iOSLock]);
|
|
113
117
|
var handleBackdropMouseDown = function (event) {
|
|
114
118
|
var _a;
|
|
115
119
|
var clickedOnScrollbar = false;
|
|
@@ -184,7 +188,10 @@ var BaseModal = React.forwardRef(function (_a, ref) {
|
|
|
184
188
|
if (open && isExited) {
|
|
185
189
|
if (!disableBlockingScroll) {
|
|
186
190
|
var el_1 = getContainer();
|
|
187
|
-
utils.handleContainer(el_1);
|
|
191
|
+
utils.handleContainer(el_1, coreComponentsShared.os.isIOS());
|
|
192
|
+
if (iOSLock && coreComponentsShared.os.isIOS()) {
|
|
193
|
+
helpers_lockScroll.lockScroll();
|
|
194
|
+
}
|
|
188
195
|
restoreContainerStylesRef.current = function () {
|
|
189
196
|
restoreContainerStylesRef.current = null;
|
|
190
197
|
utils.restoreContainerStyles(el_1);
|
|
@@ -192,7 +199,7 @@ var BaseModal = React.forwardRef(function (_a, ref) {
|
|
|
192
199
|
}
|
|
193
200
|
setExited(false);
|
|
194
201
|
}
|
|
195
|
-
}, [getContainer, open, disableBlockingScroll, isExited]);
|
|
202
|
+
}, [getContainer, open, disableBlockingScroll, isExited, iOSLock]);
|
|
196
203
|
React.useEffect(function () {
|
|
197
204
|
var ResizeObserver = window.ResizeObserver || resizeObserver.ResizeObserver;
|
|
198
205
|
resizeObserverRef.current = new ResizeObserver(checkToHasScrollBar);
|
|
@@ -205,6 +212,16 @@ var BaseModal = React.forwardRef(function (_a, ref) {
|
|
|
205
212
|
}
|
|
206
213
|
};
|
|
207
214
|
}, []);
|
|
215
|
+
React.useEffect(function () {
|
|
216
|
+
if (iOSLock && coreComponentsShared.os.isIOS()) {
|
|
217
|
+
window.addEventListener('resize', helpers_lockScroll.syncHeight);
|
|
218
|
+
}
|
|
219
|
+
return function () {
|
|
220
|
+
if (iOSLock && coreComponentsShared.os.isIOS()) {
|
|
221
|
+
window.removeEventListener('resize', helpers_lockScroll.syncHeight);
|
|
222
|
+
}
|
|
223
|
+
};
|
|
224
|
+
}, [iOSLock]);
|
|
208
225
|
var contextValue = React.useMemo(function () { return ({
|
|
209
226
|
parentRef: wrapperRef,
|
|
210
227
|
componentRef: componentNodeRef,
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
Object.defineProperty(exports, '__esModule', { value: true });
|
|
2
|
+
|
|
3
|
+
var scrollY;
|
|
4
|
+
var lockScroll = function () {
|
|
5
|
+
scrollY = window.scrollY;
|
|
6
|
+
document.documentElement.classList.add('is-locked');
|
|
7
|
+
};
|
|
8
|
+
var unlockScroll = function () {
|
|
9
|
+
document.documentElement.classList.remove('is-locked');
|
|
10
|
+
window.scrollTo(0, scrollY);
|
|
11
|
+
};
|
|
12
|
+
var syncHeight = function () {
|
|
13
|
+
document.documentElement.style.setProperty('--window-inner-height', "".concat(window.innerHeight, "px"));
|
|
14
|
+
};
|
|
15
|
+
|
|
16
|
+
exports.lockScroll = lockScroll;
|
|
17
|
+
exports.syncHeight = syncHeight;
|
|
18
|
+
exports.unlockScroll = unlockScroll;
|
|
@@ -2,5 +2,5 @@ declare function isScrolledToTop(target: HTMLElement): boolean;
|
|
|
2
2
|
declare function isScrolledToBottom(target: HTMLElement): boolean;
|
|
3
3
|
declare function hasScrollbar(target: HTMLElement): boolean;
|
|
4
4
|
declare const restoreContainerStyles: (container: HTMLElement) => void;
|
|
5
|
-
declare const handleContainer: (container?: HTMLElement) => void;
|
|
5
|
+
declare const handleContainer: (container?: HTMLElement, isIOS?: boolean) => void;
|
|
6
6
|
export { isScrolledToTop, isScrolledToBottom, hasScrollbar, restoreContainerStyles, handleContainer };
|
package/base-modal/cssm/utils.js
CHANGED
|
@@ -41,7 +41,8 @@ var restoreContainerStyles = function (container) {
|
|
|
41
41
|
});
|
|
42
42
|
}
|
|
43
43
|
};
|
|
44
|
-
var handleContainer = function (container) {
|
|
44
|
+
var handleContainer = function (container, isIOS) {
|
|
45
|
+
if (isIOS === void 0) { isIOS = false; }
|
|
45
46
|
if (!container)
|
|
46
47
|
return;
|
|
47
48
|
var modalRestoreStyles = coreComponentsGlobalStore.getModalStore().getRestoreStyles();
|
|
@@ -79,7 +80,9 @@ var handleContainer = function (container) {
|
|
|
79
80
|
el: scrollContainer,
|
|
80
81
|
});
|
|
81
82
|
}
|
|
82
|
-
|
|
83
|
+
if (!isIOS) {
|
|
84
|
+
scrollContainer.style.overflow = 'hidden';
|
|
85
|
+
}
|
|
83
86
|
modalRestoreStyles.push({
|
|
84
87
|
container: container,
|
|
85
88
|
modals: 1,
|
|
@@ -134,6 +134,10 @@ type BaseModalProps = {
|
|
|
134
134
|
* Реф, который должен быть установлен компонентной области
|
|
135
135
|
*/
|
|
136
136
|
componentRef?: MutableRefObject<HTMLDivElement | null>;
|
|
137
|
+
/**
|
|
138
|
+
* Блокирует скролл когда модальное окно открыто. Работает только на iOS.
|
|
139
|
+
*/
|
|
140
|
+
iOSLock?: boolean;
|
|
137
141
|
};
|
|
138
142
|
type BaseModalContext = {
|
|
139
143
|
parentRef: React.RefObject<HTMLDivElement>;
|
|
@@ -7,8 +7,9 @@ import { ResizeObserver } from '@juggle/resize-observer';
|
|
|
7
7
|
import cn from 'classnames';
|
|
8
8
|
import { Backdrop } from '../../backdrop/esm';
|
|
9
9
|
import { Portal } from '../../portal/esm';
|
|
10
|
-
import { browser } from '../../shared/esm';
|
|
10
|
+
import { os, browser } from '../../shared/esm';
|
|
11
11
|
import { stackingOrder, Stack } from '../../stack/esm';
|
|
12
|
+
import { unlockScroll, lockScroll, syncHeight } from './helpers/lockScroll.js';
|
|
12
13
|
import { isScrolledToTop, isScrolledToBottom, handleContainer, restoreContainerStyles, hasScrollbar } from './utils.js';
|
|
13
14
|
import './matches-polyfill.js';
|
|
14
15
|
import '../../global-store/esm';
|
|
@@ -33,14 +34,14 @@ var BaseModalContext = React.createContext({
|
|
|
33
34
|
onClose: function () { return null; },
|
|
34
35
|
});
|
|
35
36
|
var BaseModal = forwardRef(function (_a, ref) {
|
|
36
|
-
var open = _a.open, container = _a.container, children = _a.children, _b = _a.scrollHandler, scrollHandler = _b === void 0 ? 'wrapper' : _b, _c = _a.Backdrop, Backdrop$1 = _c === void 0 ? Backdrop : _c, _d = _a.backdropProps, backdropProps = _d === void 0 ? {} : _d, _e = _a.transitionProps, transitionProps = _e === void 0 ? {} : _e, disableBackdropClick = _a.disableBackdropClick, _f = _a.disableAutoFocus, disableAutoFocus = _f === void 0 ? false : _f, _g = _a.disableFocusLock, disableFocusLock = _g === void 0 ? false : _g, _h = _a.disableEscapeKeyDown, disableEscapeKeyDown = _h === void 0 ? false : _h, _j = _a.disableRestoreFocus, disableRestoreFocus = _j === void 0 ? false : _j, _k = _a.disableBlockingScroll, disableBlockingScroll = _k === void 0 ? false : _k, _l = _a.keepMounted, keepMounted = _l === void 0 ? false : _l, className = _a.className, contentClassName = _a.contentClassName, wrapperProps = _a.wrapperProps, contentProps = _a.contentProps, componentDivProps = _a.componentDivProps, wrapperClassName = _a.wrapperClassName, onBackdropClick = _a.onBackdropClick, onClose = _a.onClose, onEscapeKeyDown = _a.onEscapeKeyDown, onMount = _a.onMount, onUnmount = _a.onUnmount, dataTestId = _a.dataTestId, _m = _a.zIndex, zIndex = _m === void 0 ? stackingOrder.MODAL : _m, _o = _a.componentRef, componentRef = _o === void 0 ? null : _o, _p = _a.usePortal, usePortal = _p === void 0 ? true : _p;
|
|
37
|
-
var
|
|
38
|
-
var
|
|
39
|
-
var
|
|
40
|
-
var
|
|
41
|
-
var
|
|
42
|
-
var
|
|
43
|
-
var
|
|
37
|
+
var open = _a.open, container = _a.container, children = _a.children, _b = _a.scrollHandler, scrollHandler = _b === void 0 ? 'wrapper' : _b, _c = _a.Backdrop, Backdrop$1 = _c === void 0 ? Backdrop : _c, _d = _a.backdropProps, backdropProps = _d === void 0 ? {} : _d, _e = _a.transitionProps, transitionProps = _e === void 0 ? {} : _e, disableBackdropClick = _a.disableBackdropClick, _f = _a.disableAutoFocus, disableAutoFocus = _f === void 0 ? false : _f, _g = _a.disableFocusLock, disableFocusLock = _g === void 0 ? false : _g, _h = _a.disableEscapeKeyDown, disableEscapeKeyDown = _h === void 0 ? false : _h, _j = _a.disableRestoreFocus, disableRestoreFocus = _j === void 0 ? false : _j, _k = _a.disableBlockingScroll, disableBlockingScroll = _k === void 0 ? false : _k, _l = _a.keepMounted, keepMounted = _l === void 0 ? false : _l, className = _a.className, contentClassName = _a.contentClassName, wrapperProps = _a.wrapperProps, contentProps = _a.contentProps, componentDivProps = _a.componentDivProps, wrapperClassName = _a.wrapperClassName, onBackdropClick = _a.onBackdropClick, onClose = _a.onClose, onEscapeKeyDown = _a.onEscapeKeyDown, onMount = _a.onMount, onUnmount = _a.onUnmount, dataTestId = _a.dataTestId, _m = _a.zIndex, zIndex = _m === void 0 ? stackingOrder.MODAL : _m, _o = _a.componentRef, componentRef = _o === void 0 ? null : _o, _p = _a.usePortal, usePortal = _p === void 0 ? true : _p, _q = _a.iOSLock, iOSLock = _q === void 0 ? false : _q;
|
|
38
|
+
var _r = useState(null), exited = _r[0], setExited = _r[1];
|
|
39
|
+
var _s = useState(false), hasScroll = _s[0], setHasScroll = _s[1];
|
|
40
|
+
var _t = useState(false), hasHeader = _t[0], setHasHeader = _t[1];
|
|
41
|
+
var _u = useState(false), hasFooter = _u[0], setHasFooter = _u[1];
|
|
42
|
+
var _v = useState(false), headerHighlighted = _v[0], setHeaderHighlighted = _v[1];
|
|
43
|
+
var _w = useState(false), footerHighlighted = _w[0], setFooterHighlighted = _w[1];
|
|
44
|
+
var _x = useState(0), headerOffset = _x[0], setHeaderOffset = _x[1];
|
|
44
45
|
var componentNodeRef = useRef(null);
|
|
45
46
|
var wrapperRef = useRef(null);
|
|
46
47
|
var scrollableNodeRef = useRef(null);
|
|
@@ -92,6 +93,9 @@ var BaseModal = forwardRef(function (_a, ref) {
|
|
|
92
93
|
}
|
|
93
94
|
}, [hasFooter, hasHeader, headerOffset]);
|
|
94
95
|
var handleClose = useCallback(function (event, reason) {
|
|
96
|
+
if (iOSLock && os.isIOS()) {
|
|
97
|
+
unlockScroll();
|
|
98
|
+
}
|
|
95
99
|
if (onClose) {
|
|
96
100
|
onClose(event, reason);
|
|
97
101
|
}
|
|
@@ -102,7 +106,7 @@ var BaseModal = forwardRef(function (_a, ref) {
|
|
|
102
106
|
onEscapeKeyDown(event);
|
|
103
107
|
}
|
|
104
108
|
return null;
|
|
105
|
-
}, [onBackdropClick, onClose, onEscapeKeyDown]);
|
|
109
|
+
}, [onBackdropClick, onClose, onEscapeKeyDown, iOSLock]);
|
|
106
110
|
var handleBackdropMouseDown = function (event) {
|
|
107
111
|
var _a;
|
|
108
112
|
var clickedOnScrollbar = false;
|
|
@@ -177,7 +181,10 @@ var BaseModal = forwardRef(function (_a, ref) {
|
|
|
177
181
|
if (open && isExited) {
|
|
178
182
|
if (!disableBlockingScroll) {
|
|
179
183
|
var el_1 = getContainer();
|
|
180
|
-
handleContainer(el_1);
|
|
184
|
+
handleContainer(el_1, os.isIOS());
|
|
185
|
+
if (iOSLock && os.isIOS()) {
|
|
186
|
+
lockScroll();
|
|
187
|
+
}
|
|
181
188
|
restoreContainerStylesRef.current = function () {
|
|
182
189
|
restoreContainerStylesRef.current = null;
|
|
183
190
|
restoreContainerStyles(el_1);
|
|
@@ -185,7 +192,7 @@ var BaseModal = forwardRef(function (_a, ref) {
|
|
|
185
192
|
}
|
|
186
193
|
setExited(false);
|
|
187
194
|
}
|
|
188
|
-
}, [getContainer, open, disableBlockingScroll, isExited]);
|
|
195
|
+
}, [getContainer, open, disableBlockingScroll, isExited, iOSLock]);
|
|
189
196
|
useEffect(function () {
|
|
190
197
|
var ResizeObserver$1 = window.ResizeObserver || ResizeObserver;
|
|
191
198
|
resizeObserverRef.current = new ResizeObserver$1(checkToHasScrollBar);
|
|
@@ -198,6 +205,16 @@ var BaseModal = forwardRef(function (_a, ref) {
|
|
|
198
205
|
}
|
|
199
206
|
};
|
|
200
207
|
}, []);
|
|
208
|
+
useEffect(function () {
|
|
209
|
+
if (iOSLock && os.isIOS()) {
|
|
210
|
+
window.addEventListener('resize', syncHeight);
|
|
211
|
+
}
|
|
212
|
+
return function () {
|
|
213
|
+
if (iOSLock && os.isIOS()) {
|
|
214
|
+
window.removeEventListener('resize', syncHeight);
|
|
215
|
+
}
|
|
216
|
+
};
|
|
217
|
+
}, [iOSLock]);
|
|
201
218
|
var contextValue = useMemo(function () { return ({
|
|
202
219
|
parentRef: wrapperRef,
|
|
203
220
|
componentRef: componentNodeRef,
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
var scrollY;
|
|
2
|
+
var lockScroll = function () {
|
|
3
|
+
scrollY = window.scrollY;
|
|
4
|
+
document.documentElement.classList.add('is-locked');
|
|
5
|
+
};
|
|
6
|
+
var unlockScroll = function () {
|
|
7
|
+
document.documentElement.classList.remove('is-locked');
|
|
8
|
+
window.scrollTo(0, scrollY);
|
|
9
|
+
};
|
|
10
|
+
var syncHeight = function () {
|
|
11
|
+
document.documentElement.style.setProperty('--window-inner-height', "".concat(window.innerHeight, "px"));
|
|
12
|
+
};
|
|
13
|
+
|
|
14
|
+
export { lockScroll, syncHeight, unlockScroll };
|
package/base-modal/esm/index.js
CHANGED
|
@@ -2,5 +2,5 @@ declare function isScrolledToTop(target: HTMLElement): boolean;
|
|
|
2
2
|
declare function isScrolledToBottom(target: HTMLElement): boolean;
|
|
3
3
|
declare function hasScrollbar(target: HTMLElement): boolean;
|
|
4
4
|
declare const restoreContainerStyles: (container: HTMLElement) => void;
|
|
5
|
-
declare const handleContainer: (container?: HTMLElement) => void;
|
|
5
|
+
declare const handleContainer: (container?: HTMLElement, isIOS?: boolean) => void;
|
|
6
6
|
export { isScrolledToTop, isScrolledToBottom, hasScrollbar, restoreContainerStyles, handleContainer };
|
package/base-modal/esm/utils.js
CHANGED
|
@@ -39,7 +39,8 @@ var restoreContainerStyles = function (container) {
|
|
|
39
39
|
});
|
|
40
40
|
}
|
|
41
41
|
};
|
|
42
|
-
var handleContainer = function (container) {
|
|
42
|
+
var handleContainer = function (container, isIOS) {
|
|
43
|
+
if (isIOS === void 0) { isIOS = false; }
|
|
43
44
|
if (!container)
|
|
44
45
|
return;
|
|
45
46
|
var modalRestoreStyles = getModalStore().getRestoreStyles();
|
|
@@ -77,7 +78,9 @@ var handleContainer = function (container) {
|
|
|
77
78
|
el: scrollContainer,
|
|
78
79
|
});
|
|
79
80
|
}
|
|
80
|
-
|
|
81
|
+
if (!isIOS) {
|
|
82
|
+
scrollContainer.style.overflow = 'hidden';
|
|
83
|
+
}
|
|
81
84
|
modalRestoreStyles.push({
|
|
82
85
|
container: container,
|
|
83
86
|
modals: 1,
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
Object.defineProperty(exports, '__esModule', { value: true });
|
|
2
|
+
|
|
3
|
+
var scrollY;
|
|
4
|
+
var lockScroll = function () {
|
|
5
|
+
scrollY = window.scrollY;
|
|
6
|
+
document.documentElement.classList.add('is-locked');
|
|
7
|
+
};
|
|
8
|
+
var unlockScroll = function () {
|
|
9
|
+
document.documentElement.classList.remove('is-locked');
|
|
10
|
+
window.scrollTo(0, scrollY);
|
|
11
|
+
};
|
|
12
|
+
var syncHeight = function () {
|
|
13
|
+
document.documentElement.style.setProperty('--window-inner-height', "".concat(window.innerHeight, "px"));
|
|
14
|
+
};
|
|
15
|
+
|
|
16
|
+
exports.lockScroll = lockScroll;
|
|
17
|
+
exports.syncHeight = syncHeight;
|
|
18
|
+
exports.unlockScroll = unlockScroll;
|
|
@@ -134,6 +134,10 @@ type BaseModalProps = {
|
|
|
134
134
|
* Реф, который должен быть установлен компонентной области
|
|
135
135
|
*/
|
|
136
136
|
componentRef?: MutableRefObject<HTMLDivElement | null>;
|
|
137
|
+
/**
|
|
138
|
+
* Блокирует скролл когда модальное окно открыто. Работает только на iOS.
|
|
139
|
+
*/
|
|
140
|
+
iOSLock?: boolean;
|
|
137
141
|
};
|
|
138
142
|
type BaseModalContext = {
|
|
139
143
|
parentRef: React.RefObject<HTMLDivElement>;
|
|
@@ -6,8 +6,9 @@ import { ResizeObserver } from '@juggle/resize-observer';
|
|
|
6
6
|
import cn from 'classnames';
|
|
7
7
|
import { Backdrop } from '../../backdrop/modern';
|
|
8
8
|
import { Portal } from '../../portal/modern';
|
|
9
|
-
import { browser } from '../../shared/modern';
|
|
9
|
+
import { os, browser } from '../../shared/modern';
|
|
10
10
|
import { stackingOrder, Stack } from '../../stack/modern';
|
|
11
|
+
import { unlockScroll, lockScroll, syncHeight } from './helpers/lockScroll.js';
|
|
11
12
|
import { isScrolledToTop, isScrolledToBottom, handleContainer, restoreContainerStyles, hasScrollbar } from './utils.js';
|
|
12
13
|
import './matches-polyfill.js';
|
|
13
14
|
import '../../global-store/modern';
|
|
@@ -32,7 +33,7 @@ const BaseModalContext = React.createContext({
|
|
|
32
33
|
setHasFooter: () => null,
|
|
33
34
|
onClose: () => null,
|
|
34
35
|
});
|
|
35
|
-
const BaseModal = forwardRef(({ open, container, children, scrollHandler = 'wrapper', Backdrop: Backdrop$1 = Backdrop, backdropProps = {}, transitionProps = {}, disableBackdropClick, disableAutoFocus = false, disableFocusLock = false, disableEscapeKeyDown = false, disableRestoreFocus = false, disableBlockingScroll = false, keepMounted = false, className, contentClassName, wrapperProps, contentProps, componentDivProps, wrapperClassName, onBackdropClick, onClose, onEscapeKeyDown, onMount, onUnmount, dataTestId, zIndex = stackingOrder.MODAL, componentRef = null, usePortal = true, }, ref) => {
|
|
36
|
+
const BaseModal = forwardRef(({ open, container, children, scrollHandler = 'wrapper', Backdrop: Backdrop$1 = Backdrop, backdropProps = {}, transitionProps = {}, disableBackdropClick, disableAutoFocus = false, disableFocusLock = false, disableEscapeKeyDown = false, disableRestoreFocus = false, disableBlockingScroll = false, keepMounted = false, className, contentClassName, wrapperProps, contentProps, componentDivProps, wrapperClassName, onBackdropClick, onClose, onEscapeKeyDown, onMount, onUnmount, dataTestId, zIndex = stackingOrder.MODAL, componentRef = null, usePortal = true, iOSLock = false, }, ref) => {
|
|
36
37
|
const [exited, setExited] = useState(null);
|
|
37
38
|
const [hasScroll, setHasScroll] = useState(false);
|
|
38
39
|
const [hasHeader, setHasHeader] = useState(false);
|
|
@@ -91,6 +92,9 @@ const BaseModal = forwardRef(({ open, container, children, scrollHandler = 'wrap
|
|
|
91
92
|
}
|
|
92
93
|
}, [hasFooter, hasHeader, headerOffset]);
|
|
93
94
|
const handleClose = useCallback((event, reason) => {
|
|
95
|
+
if (iOSLock && os.isIOS()) {
|
|
96
|
+
unlockScroll();
|
|
97
|
+
}
|
|
94
98
|
if (onClose) {
|
|
95
99
|
onClose(event, reason);
|
|
96
100
|
}
|
|
@@ -101,7 +105,7 @@ const BaseModal = forwardRef(({ open, container, children, scrollHandler = 'wrap
|
|
|
101
105
|
onEscapeKeyDown(event);
|
|
102
106
|
}
|
|
103
107
|
return null;
|
|
104
|
-
}, [onBackdropClick, onClose, onEscapeKeyDown]);
|
|
108
|
+
}, [onBackdropClick, onClose, onEscapeKeyDown, iOSLock]);
|
|
105
109
|
const handleBackdropMouseDown = (event) => {
|
|
106
110
|
let clickedOnScrollbar = false;
|
|
107
111
|
const clientWidth = event.target?.clientWidth;
|
|
@@ -175,7 +179,10 @@ const BaseModal = forwardRef(({ open, container, children, scrollHandler = 'wrap
|
|
|
175
179
|
if (open && isExited) {
|
|
176
180
|
if (!disableBlockingScroll) {
|
|
177
181
|
const el = getContainer();
|
|
178
|
-
handleContainer(el);
|
|
182
|
+
handleContainer(el, os.isIOS());
|
|
183
|
+
if (iOSLock && os.isIOS()) {
|
|
184
|
+
lockScroll();
|
|
185
|
+
}
|
|
179
186
|
restoreContainerStylesRef.current = () => {
|
|
180
187
|
restoreContainerStylesRef.current = null;
|
|
181
188
|
restoreContainerStyles(el);
|
|
@@ -183,7 +190,7 @@ const BaseModal = forwardRef(({ open, container, children, scrollHandler = 'wrap
|
|
|
183
190
|
}
|
|
184
191
|
setExited(false);
|
|
185
192
|
}
|
|
186
|
-
}, [getContainer, open, disableBlockingScroll, isExited]);
|
|
193
|
+
}, [getContainer, open, disableBlockingScroll, isExited, iOSLock]);
|
|
187
194
|
useEffect(() => {
|
|
188
195
|
const ResizeObserver$1 = window.ResizeObserver || ResizeObserver;
|
|
189
196
|
resizeObserverRef.current = new ResizeObserver$1(checkToHasScrollBar);
|
|
@@ -196,6 +203,16 @@ const BaseModal = forwardRef(({ open, container, children, scrollHandler = 'wrap
|
|
|
196
203
|
}
|
|
197
204
|
};
|
|
198
205
|
}, []);
|
|
206
|
+
useEffect(() => {
|
|
207
|
+
if (iOSLock && os.isIOS()) {
|
|
208
|
+
window.addEventListener('resize', syncHeight);
|
|
209
|
+
}
|
|
210
|
+
return () => {
|
|
211
|
+
if (iOSLock && os.isIOS()) {
|
|
212
|
+
window.removeEventListener('resize', syncHeight);
|
|
213
|
+
}
|
|
214
|
+
};
|
|
215
|
+
}, [iOSLock]);
|
|
199
216
|
const contextValue = useMemo(() => ({
|
|
200
217
|
parentRef: wrapperRef,
|
|
201
218
|
componentRef: componentNodeRef,
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
let scrollY;
|
|
2
|
+
const lockScroll = () => {
|
|
3
|
+
scrollY = window.scrollY;
|
|
4
|
+
document.documentElement.classList.add('is-locked');
|
|
5
|
+
};
|
|
6
|
+
const unlockScroll = () => {
|
|
7
|
+
document.documentElement.classList.remove('is-locked');
|
|
8
|
+
window.scrollTo(0, scrollY);
|
|
9
|
+
};
|
|
10
|
+
const syncHeight = () => {
|
|
11
|
+
document.documentElement.style.setProperty('--window-inner-height', `${window.innerHeight}px`);
|
|
12
|
+
};
|
|
13
|
+
|
|
14
|
+
export { lockScroll, syncHeight, unlockScroll };
|
|
@@ -2,5 +2,5 @@ declare function isScrolledToTop(target: HTMLElement): boolean;
|
|
|
2
2
|
declare function isScrolledToBottom(target: HTMLElement): boolean;
|
|
3
3
|
declare function hasScrollbar(target: HTMLElement): boolean;
|
|
4
4
|
declare const restoreContainerStyles: (container: HTMLElement) => void;
|
|
5
|
-
declare const handleContainer: (container?: HTMLElement) => void;
|
|
5
|
+
declare const handleContainer: (container?: HTMLElement, isIOS?: boolean) => void;
|
|
6
6
|
export { isScrolledToTop, isScrolledToBottom, hasScrollbar, restoreContainerStyles, handleContainer };
|
|
@@ -36,7 +36,7 @@ const restoreContainerStyles = (container) => {
|
|
|
36
36
|
});
|
|
37
37
|
}
|
|
38
38
|
};
|
|
39
|
-
const handleContainer = (container) => {
|
|
39
|
+
const handleContainer = (container, isIOS = false) => {
|
|
40
40
|
if (!container)
|
|
41
41
|
return;
|
|
42
42
|
const modalRestoreStyles = getModalStore().getRestoreStyles();
|
|
@@ -74,7 +74,9 @@ const handleContainer = (container) => {
|
|
|
74
74
|
el: scrollContainer,
|
|
75
75
|
});
|
|
76
76
|
}
|
|
77
|
-
|
|
77
|
+
if (!isIOS) {
|
|
78
|
+
scrollContainer.style.overflow = 'hidden';
|
|
79
|
+
}
|
|
78
80
|
modalRestoreStyles.push({
|
|
79
81
|
container,
|
|
80
82
|
modals: 1,
|
package/base-modal/utils.d.ts
CHANGED
|
@@ -2,5 +2,5 @@ declare function isScrolledToTop(target: HTMLElement): boolean;
|
|
|
2
2
|
declare function isScrolledToBottom(target: HTMLElement): boolean;
|
|
3
3
|
declare function hasScrollbar(target: HTMLElement): boolean;
|
|
4
4
|
declare const restoreContainerStyles: (container: HTMLElement) => void;
|
|
5
|
-
declare const handleContainer: (container?: HTMLElement) => void;
|
|
5
|
+
declare const handleContainer: (container?: HTMLElement, isIOS?: boolean) => void;
|
|
6
6
|
export { isScrolledToTop, isScrolledToBottom, hasScrollbar, restoreContainerStyles, handleContainer };
|
package/base-modal/utils.js
CHANGED
|
@@ -41,7 +41,8 @@ var restoreContainerStyles = function (container) {
|
|
|
41
41
|
});
|
|
42
42
|
}
|
|
43
43
|
};
|
|
44
|
-
var handleContainer = function (container) {
|
|
44
|
+
var handleContainer = function (container, isIOS) {
|
|
45
|
+
if (isIOS === void 0) { isIOS = false; }
|
|
45
46
|
if (!container)
|
|
46
47
|
return;
|
|
47
48
|
var modalRestoreStyles = coreComponentsGlobalStore.getModalStore().getRestoreStyles();
|
|
@@ -79,7 +80,9 @@ var handleContainer = function (container) {
|
|
|
79
80
|
el: scrollContainer,
|
|
80
81
|
});
|
|
81
82
|
}
|
|
82
|
-
|
|
83
|
+
if (!isIOS) {
|
|
84
|
+
scrollContainer.style.overflow = 'hidden';
|
|
85
|
+
}
|
|
83
86
|
modalRestoreStyles.push({
|
|
84
87
|
container: container,
|
|
85
88
|
modals: 1,
|
|
@@ -10,7 +10,7 @@ var coreComponentsTypography = require('../../../../typography');
|
|
|
10
10
|
var hooks = require('@alfalab/hooks');
|
|
11
11
|
var context = require('../../../context.js');
|
|
12
12
|
var components_header_component = require('../../header/component.js');
|
|
13
|
-
var components_screens_initial_countdownSection = require('../../../countdown-section-
|
|
13
|
+
var components_screens_initial_countdownSection = require('../../../countdown-section-9194293e.js');
|
|
14
14
|
|
|
15
15
|
function _interopDefaultCompat (e) { return e && typeof e === 'object' && 'default' in e ? e : { default: e }; }
|
|
16
16
|
|