Files
zin-tools/hooks/useClickOutside.ts
2024-02-03 20:13:09 +05:00

17 lines
520 B
TypeScript

import { useEffect } from 'react'
interface UseClickOutsideProps {
onClick: () => void
ref: { current: HTMLDivElement } | { current: null }
}
export const useClickOutside = ({ onClick, ref }: UseClickOutsideProps) => {
useEffect(() => {
const handleClickOutside = (e: any) =>
ref.current && !ref.current.contains(e.target) && onClick()
document.addEventListener('mousedown', handleClickOutside)
return () => document.removeEventListener('mousedown', handleClickOutside)
}, [onClick, ref])
}