From 18d6d980cd852306326083e96dda51d6784c9091 Mon Sep 17 00:00:00 2001 From: Vasilica Date: Mon, 10 Jul 2023 23:21:23 +0300 Subject: [PATCH] MP-178 - restore body scroll on modal hide --- .../components/modals/base-modal/BaseModal.tsx | 18 +++++++++++++----- 1 file changed, 13 insertions(+), 5 deletions(-) diff --git a/src/libs/ui/lib/components/modals/base-modal/BaseModal.tsx b/src/libs/ui/lib/components/modals/base-modal/BaseModal.tsx index ce2bf3e31..0c8d11476 100644 --- a/src/libs/ui/lib/components/modals/base-modal/BaseModal.tsx +++ b/src/libs/ui/lib/components/modals/base-modal/BaseModal.tsx @@ -1,4 +1,4 @@ -import { FC, ReactNode, useEffect } from 'react' +import { FC, ReactNode, useCallback, useEffect } from 'react' import Modal, { ModalProps } from 'react-responsive-modal' import classNames from 'classnames' @@ -39,12 +39,20 @@ const BaseModal: FC = (props: BaseModalProps) => { ) } + const handleBodyScroll = useCallback((force?: boolean) => { + const isOpen = force ?? props.open + document.documentElement.style.overflow = isOpen ? 'hidden' : '' + document.body.style.overflow = isOpen ? 'hidden' : '' + }, [props.open]) + useEffect(() => { - if (!props.blockScroll) { - document.documentElement.style.overflow = props.open ? 'hidden' : '' - document.body.style.overflow = props.open ? 'hidden' : '' + if (props.blockScroll) { + return undefined } - }, [props.blockScroll, props.open]) + + handleBodyScroll() + return () => handleBodyScroll(false) + }, [handleBodyScroll, props.blockScroll, props.open]) return (