Files
GNX-WEB/frontEnd/components/shared/layout/ScrollToTop.tsx
Iliyan Angelov 366f28677a update
2025-11-24 03:52:08 +02:00

41 lines
960 B
TypeScript

"use client";
import { useEffect } from "react";
import { usePathname } from "next/navigation";
const ScrollToTop = () => {
const pathname = usePathname();
useEffect(() => {
// Aggressive scroll to top - run immediately and synchronously
const scrollToTop = () => {
window.scrollTo({ top: 0, left: 0, behavior: 'auto' });
window.scrollTo(0, 0);
document.documentElement.scrollTop = 0;
document.body.scrollTop = 0;
};
// 1. Immediate execution
scrollToTop();
// 2. After microtask
Promise.resolve().then(scrollToTop);
// 3. After next frame
requestAnimationFrame(scrollToTop);
// 4. Multiple delayed attempts to override any smooth scroll libraries
const timeouts = [0, 10, 50, 100, 150, 200].map(delay =>
setTimeout(scrollToTop, delay)
);
return () => {
timeouts.forEach(clearTimeout);
};
}, [pathname]);
return null;
};
export default ScrollToTop;