Files
basiclean-webapp/hooks/useToggleBodyOverflow.ts
T
2026-05-02 13:43:30 +02:00

30 lines
634 B
TypeScript

"use client";
import { useEffect } from "react";
type Options = {
className?: string;
};
export function useToggleBodyOverflow(locked: boolean, options: Options = {}) {
const { className = "has-menu-open" } = options;
useEffect(() => {
const root = document.documentElement;
const body = document.body;
if (locked) {
root.classList.add(className);
body.style.overflow = "hidden";
} else {
root.classList.remove(className);
body.style.overflow = "";
}
return () => {
root.classList.remove(className);
body.style.overflow = "";
};
}, [locked, className]);
}