Skip to content

Commit fda591f

Browse files
authored
Merge pull request #731 from topcoder-platform/MP-178_restore-scroll
MP-178 - restore body scroll on modal hide
2 parents c187a6b + 18d6d98 commit fda591f

File tree

1 file changed

+13
-5
lines changed

1 file changed

+13
-5
lines changed

src/libs/ui/lib/components/modals/base-modal/BaseModal.tsx

Lines changed: 13 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import { FC, ReactNode, useEffect } from 'react'
1+
import { FC, ReactNode, useCallback, useEffect } from 'react'
22
import Modal, { ModalProps } from 'react-responsive-modal'
33
import classNames from 'classnames'
44

@@ -39,12 +39,20 @@ const BaseModal: FC<BaseModalProps> = (props: BaseModalProps) => {
3939
)
4040
}
4141

42+
const handleBodyScroll = useCallback((force?: boolean) => {
43+
const isOpen = force ?? props.open
44+
document.documentElement.style.overflow = isOpen ? 'hidden' : ''
45+
document.body.style.overflow = isOpen ? 'hidden' : ''
46+
}, [props.open])
47+
4248
useEffect(() => {
43-
if (!props.blockScroll) {
44-
document.documentElement.style.overflow = props.open ? 'hidden' : ''
45-
document.body.style.overflow = props.open ? 'hidden' : ''
49+
if (props.blockScroll) {
50+
return undefined
4651
}
47-
}, [props.blockScroll, props.open])
52+
53+
handleBodyScroll()
54+
return () => handleBodyScroll(false)
55+
}, [handleBodyScroll, props.blockScroll, props.open])
4856

4957
return (
5058
<Modal

0 commit comments

Comments
 (0)