Proyectos de Subversion LeadersLinked - SPA

Rev

Rev 2775 | Mostrar el archivo completo | | | Autoría | Ultima modificación | Ver Log |

Rev 2775 Rev 3719
Línea 1... Línea 1...
1
import { useEffect, useRef } from 'react'
1
import { useEffect, useRef } from 'react';
2
 
2
 
3
export function useOutsideClick(callback = () => {}) {
3
export function useOutsideClick(callback = () => {}) {
4
  const elementRef = useRef()
4
  const elementRef = useRef();
5
 
5
 
6
  useEffect(() => {
6
  useEffect(() => {
7
    const handleClickOutside = (event) => {
7
    const handleClickOutside = (event) => {
8
      if (!elementRef?.current) return
8
      if (!elementRef?.current) return;
9
      if (!elementRef.current?.contains(event.target)) callback()
9
      if (!elementRef.current?.contains(event.target)) callback();
10
    }
10
    };
11
 
11
 
12
    document.addEventListener('mousedown', handleClickOutside)
12
    document.addEventListener('mousedown', handleClickOutside);
13
    return () => {
13
    return () => {
14
      document.removeEventListener('mousedown', handleClickOutside)
14
      document.removeEventListener('mousedown', handleClickOutside);
15
    }
15
    };
16
  }, [elementRef])
16
  }, [elementRef]);
17
 
17
 
18
  return [elementRef]
18
  return [elementRef];
19
}
19
}