Files
mtdb_movie/common/resources/client/ui/navigation/use-scroll-to-top.ts
maher 703f50a09d
Some checks failed
Build / run (push) Has been cancelled
first commit
2025-10-29 11:42:25 +01:00

27 lines
712 B
TypeScript
Executable File

import {useLocation} from 'react-router-dom';
import {RefObject, useEffect} from 'react';
import {usePrevious} from '@common/utils/hooks/use-previous';
import {getScrollParent} from '@react-aria/utils';
export function useScrollToTop(ref?: RefObject<HTMLElement>) {
const {pathname} = useLocation();
const previousPathname = usePrevious(pathname);
useEffect(() => {
if (previousPathname !== pathname) {
scrollToTop(ref);
}
}, [pathname, previousPathname, ref]);
}
export function scrollToTop(ref?: RefObject<HTMLElement>) {
const scrollParent = ref?.current
? getScrollParent(ref.current)
: document.documentElement;
scrollParent.scrollTo({
top: 0,
left: 0,
});
}