@alfalab/core-components 45.8.0-beta.1 → 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/bottom-sheet/component.js +12 -22
- package/bottom-sheet/cssm/component.js +12 -22
- package/bottom-sheet/esm/component.js +12 -23
- package/bottom-sheet/esm/index.js +0 -2
- package/bottom-sheet/modern/component.js +9 -23
- package/bottom-sheet/modern/index.js +0 -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/cssm/typings-57569e57.d.ts +2 -18
- package/international-phone-input/esm/index-bdb4c6b9.d.ts +9 -2
- package/international-phone-input/esm/typings-57569e57.d.ts +2 -18
- package/international-phone-input/index-bdb4c6b9.d.ts +9 -2
- package/international-phone-input/modern/index-bdb4c6b9.d.ts +9 -2
- package/international-phone-input/modern/typings-57569e57.d.ts +2 -18
- package/international-phone-input/typings-57569e57.d.ts +2 -18
- 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/cssm/typings-57569e57.d.ts +2 -18
- package/picker-button/esm/index-bdb4c6b9.d.ts +9 -2
- package/picker-button/esm/typings-57569e57.d.ts +2 -18
- package/picker-button/index-bdb4c6b9.d.ts +9 -2
- package/picker-button/modern/index-bdb4c6b9.d.ts +9 -2
- package/picker-button/modern/typings-57569e57.d.ts +2 -18
- package/picker-button/typings-57569e57.d.ts +2 -18
- 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/select/esm/Component.responsive.js +1 -1
- package/select/esm/index.js +1 -1
- package/select/esm/mobile/Component.mobile.js +1 -1
- package/select/esm/mobile/Component.modal.mobile.js +1 -1
- package/select/esm/mobile/index.js +1 -1
- package/select/esm/presets/index.js +1 -1
- package/select/esm/presets/useSelectWithApply/hook.js +1 -1
- package/select/esm/presets/useSelectWithApply/options-list-with-apply/Component.js +1 -1
- package/select/esm/presets/useSelectWithApply/options-list-with-apply/index.d.ts +1 -1
- package/select/esm/presets/useSelectWithApply/options-list-with-apply/index.js +1 -1
- package/select/esm/shared/index.js +1 -1
- package/select/mobile/Component.mobile.js +1 -1
- package/select/modern/Component.responsive.js +1 -1
- package/select/modern/index.js +1 -1
- package/select/modern/mobile/Component.mobile.js +1 -1
- package/select/modern/mobile/Component.modal.mobile.js +1 -1
- package/select/modern/mobile/index.js +1 -1
- package/select/modern/presets/index.js +1 -1
- package/select/modern/presets/useSelectWithApply/hook.js +1 -1
- package/select/modern/presets/useSelectWithApply/options-list-with-apply/Component.js +1 -1
- package/select/modern/presets/useSelectWithApply/options-list-with-apply/index.d.ts +1 -1
- package/select/modern/presets/useSelectWithApply/options-list-with-apply/index.js +1 -1
- package/select/modern/shared/index.js +1 -1
- package/select/presets/index.js +1 -1
- package/select/presets/useSelectWithApply/hook.js +1 -1
- package/select/presets/useSelectWithApply/options-list-with-apply/Component.js +1 -1
- package/select/presets/useSelectWithApply/options-list-with-apply/index.d.ts +1 -1
- package/select/presets/useSelectWithApply/options-list-with-apply/index.js +1 -1
- package/select/shared/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/compiled/mobile-dark-bluetint.css +211 -72
- 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/bottom-sheet/consts/swipeConsts.d.ts +0 -2
- package/bottom-sheet/consts/swipeConsts.js +0 -7
- package/bottom-sheet/cssm/consts/swipeConsts.d.ts +0 -2
- package/bottom-sheet/cssm/consts/swipeConsts.js +0 -7
- package/bottom-sheet/cssm/enums/swipeEnums.d.ts +0 -7
- package/bottom-sheet/cssm/enums/swipeEnums.js +0 -9
- package/bottom-sheet/cssm/types/swipeTypes.d.ts +0 -9
- package/bottom-sheet/cssm/types/swipeTypes.js +0 -1
- package/bottom-sheet/enums/swipeEnums.d.ts +0 -7
- package/bottom-sheet/enums/swipeEnums.js +0 -9
- package/bottom-sheet/esm/consts/swipeConsts.d.ts +0 -2
- package/bottom-sheet/esm/consts/swipeConsts.js +0 -5
- package/bottom-sheet/esm/enums/swipeEnums.d.ts +0 -7
- package/bottom-sheet/esm/enums/swipeEnums.js +0 -9
- package/bottom-sheet/esm/types/swipeTypes.d.ts +0 -9
- package/bottom-sheet/esm/types/swipeTypes.js +0 -1
- package/bottom-sheet/modern/consts/swipeConsts.d.ts +0 -2
- package/bottom-sheet/modern/consts/swipeConsts.js +0 -5
- package/bottom-sheet/modern/enums/swipeEnums.d.ts +0 -7
- package/bottom-sheet/modern/enums/swipeEnums.js +0 -9
- package/bottom-sheet/modern/types/swipeTypes.d.ts +0 -9
- package/bottom-sheet/modern/types/swipeTypes.js +0 -1
- package/bottom-sheet/types/swipeTypes.d.ts +0 -9
- package/bottom-sheet/types/swipeTypes.js +0 -1
- /package/confirmation/{countdown-section-b30d5212.d.ts → countdown-section-9194293e.d.ts} +0 -0
- /package/confirmation/{countdown-section-b30d5212.js → countdown-section-9194293e.js} +0 -0
- /package/confirmation/esm/{countdown-section-c4f73a77.d.ts → countdown-section-fc384721.d.ts} +0 -0
- /package/confirmation/esm/{countdown-section-c4f73a77.js → countdown-section-fc384721.js} +0 -0
- /package/confirmation/modern/{countdown-section-f3215ad8.d.ts → countdown-section-f33e01b7.d.ts} +0 -0
- /package/confirmation/modern/{countdown-section-f3215ad8.js → countdown-section-f33e01b7.js} +0 -0
- /package/gallery/{buttons-01e8353f.d.ts → buttons-160fdb5a.d.ts} +0 -0
- /package/gallery/{buttons-01e8353f.js → buttons-160fdb5a.js} +0 -0
- /package/gallery/esm/{buttons-85c1b9a3.d.ts → buttons-f951e5ce.d.ts} +0 -0
- /package/gallery/esm/{buttons-85c1b9a3.js → buttons-f951e5ce.js} +0 -0
- /package/gallery/esm/{slide-530dfb83.d.ts → slide-3595abb4.d.ts} +0 -0
- /package/gallery/esm/{slide-530dfb83.js → slide-3595abb4.js} +0 -0
- /package/gallery/modern/{buttons-5f86c790.d.ts → buttons-a3ff616b.d.ts} +0 -0
- /package/gallery/modern/{buttons-5f86c790.js → buttons-a3ff616b.js} +0 -0
- /package/gallery/modern/{slide-afec4d99.d.ts → slide-acb49e8e.d.ts} +0 -0
- /package/gallery/modern/{slide-afec4d99.js → slide-acb49e8e.js} +0 -0
- /package/gallery/{slide-18998644.d.ts → slide-2268997b.d.ts} +0 -0
- /package/gallery/{slide-18998644.js → slide-2268997b.js} +0 -0
- /package/modal/esm/{layout.module-1b8afca9.js → layout.module-2fe04090.js} +0 -0
- /package/modal/{layout.module-3eb92921.js → layout.module-8adfa2ca.js} +0 -0
- /package/modal/modern/{layout.module-13b15398.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/select/esm/{hook-aa7d4c07.d.ts → hook-c0758dcd.d.ts} +0 -0
- /package/select/esm/{hook-aa7d4c07.js → hook-c0758dcd.js} +0 -0
- /package/select/{hook-f0adfa6b.d.ts → hook-10a14b43.d.ts} +0 -0
- /package/select/{hook-f0adfa6b.js → hook-10a14b43.js} +0 -0
- /package/select/modern/{hook-d72e58c4.d.ts → hook-5ccdb908.d.ts} +0 -0
- /package/select/modern/{hook-d72e58c4.js → hook-5ccdb908.js} +0 -0
- /package/side-panel/esm/{layout.module-d6ca40a5.js → layout.module-a9e68775.js} +0 -0
- /package/side-panel/{layout.module-85234bb1.js → layout.module-df4fedc9.js} +0 -0
- /package/side-panel/modern/{layout.module-9f8549ee.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,
|