UseOnClickOutside
UseOnClickOutside description.
Usage
import { RefObject, useEffect } from 'react';type AnyEvent = MouseEvent | TouchEvent;function useOnClickOutside<T extends HTMLElement = HTMLElement>(ref: RefObject<T>,handler: (event: AnyEvent) => void) {useEffect(() => {const listener = (event: AnyEvent) => {const el = ref?.current;// Do nothing if clicking ref's element or descendent elementsif (!el || el.contains(event.target as Node)) {return;}handler(event);};document.addEventListener(`mousedown`, listener);document.addEventListener(`touchstart`, listener);return () => {document.removeEventListener(`mousedown`, listener);document.removeEventListener(`touchstart`, listener);};// Reload only if ref or handler changes}, [ref, handler]);}export default useOnClickOutside;);