@i-novus/ui-core
Version:
Базовые UI компоненты
26 lines (21 loc) • 788 B
text/typescript
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])
}