mirror of
https://github.com/sct/overseerr.git
synced 2025-09-17 17:24:35 +02:00
feat(frontend): modal component and basic request hookup (#91)
This commit is contained in:
28
src/hooks/useLockBodyScroll.ts
Normal file
28
src/hooks/useLockBodyScroll.ts
Normal file
@@ -0,0 +1,28 @@
|
||||
import { useEffect } from 'react';
|
||||
|
||||
/**
|
||||
* Hook to lock the body scroll whenever a component is mounted or
|
||||
* whenever isLocked is set to true.
|
||||
*
|
||||
* You can pass in true always to cause a lock on mount/dismount of the component
|
||||
* using this hook.
|
||||
*
|
||||
* @param isLocked Toggle the scroll lock
|
||||
* @param disabled Disables the entire hook (allows conditional skipping of the lock)
|
||||
*/
|
||||
export const useLockBodyScroll = (
|
||||
isLocked: boolean,
|
||||
disabled?: boolean
|
||||
): void => {
|
||||
useEffect(() => {
|
||||
const originalStyle = window.getComputedStyle(document.body).overflow;
|
||||
if (isLocked && !disabled) {
|
||||
document.body.style.overflow = 'hidden';
|
||||
}
|
||||
return () => {
|
||||
if (!disabled) {
|
||||
document.body.style.overflow = originalStyle;
|
||||
}
|
||||
};
|
||||
}, [isLocked, disabled]);
|
||||
};
|
Reference in New Issue
Block a user