UNPKG

@i-novus/ui-core

Version:

Базовые UI компоненты

26 lines (21 loc) 788 B
import { MutableRefObject, useEffect } from 'react' export const useClickOutside = ( refList: Array<MutableRefObject<HTMLElement | null>>, callback?: Function, ) => { useEffect(() => { const clickHandler = (event: any) => { if ( !refList.length || refList.some(item => item.current?.contains(event.target)) ) { return } callback?.(event) } document.addEventListener('mousedown', clickHandler) document.addEventListener('touchstart', clickHandler) return () => { document.removeEventListener('mousedown', clickHandler) document.removeEventListener('touchstart', clickHandler) } }, [refList, callback]) }