emoji-picker-react
Version:
Emoji Picker component for React Applications on the web
33 lines (24 loc) • 770 B
text/typescript
import { useEffect, useState } from 'react';
import { ElementRef } from '../components/context/ElementRefContext';
import { useCloseAllOpenToggles } from './useCloseAllOpenToggles';
export function useOnScroll(BodyRef: ElementRef) {
const closeAllOpenToggles = useCloseAllOpenToggles();
const [scrollTop, setScrollTop] = useState(0);
useEffect(() => {
const bodyRef = BodyRef.current;
if (!bodyRef) {
return;
}
bodyRef.addEventListener('scroll', onScroll, {
passive: true
});
function onScroll() {
setScrollTop(bodyRef?.scrollTop ?? 0);
closeAllOpenToggles();
}
return () => {
bodyRef?.removeEventListener('scroll', onScroll);
};
}, [BodyRef, closeAllOpenToggles]);
return scrollTop;
}