Files
basiclean-webapp/hooks/useToggleBodyOverflow.ts
T
2026-05-02 10:41:00 +02:00

26 lines
598 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;
root.classList.toggle(className, locked);
const prevOverflow = document.body.style.overflow;
document.body.style.overflow = locked ? "hidden" : "";
return () => {
root.classList.remove(className);
document.body.style.overflow = prevOverflow;
};
}, [locked, className]);
}