@gluestack-ui-nightly/core
Version:
Universal UI components for React Native, Expo, and Next.js
25 lines • 841 B
JavaScript
import { useEffect } from 'react';
export const onCloseMap = new WeakMap();
export function useCloseOnScroll(opts) {
let { triggerRef, isOpen, onClose } = opts;
useEffect(() => {
if (!isOpen) {
return;
}
let onScroll = (e) => {
let target = e.target;
if (!triggerRef.current || !target.contains(triggerRef.current)) {
return;
}
let onCloseHandler = onClose || onCloseMap.get(triggerRef.current);
if (onCloseHandler) {
onCloseHandler();
}
};
window.addEventListener('scroll', onScroll, true);
return () => {
window.removeEventListener('scroll', onScroll, true);
};
}, [isOpen, onClose, triggerRef]);
}
//# sourceMappingURL=useCloseOnScroll.js.map