UNPKG

@gluestack-ui-nightly/core

Version:

Universal UI components for React Native, Expo, and Next.js

25 lines 841 B
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