11import React , { useEffect } from "react" ;
22
3- interface UseDetectClickOutsideProps < Element extends HTMLElement > {
3+ interface UseDetectMouseDownOutsideProps < Element extends HTMLElement > {
44 /**
55 * A reference to the top-most element./
66 * Clicks on any parents of this element will trigger the callback.
@@ -12,18 +12,18 @@ interface UseDetectClickOutsideProps<Element extends HTMLElement> {
1212 * The callback to be invoked when a click
1313 * has been detected outside
1414 */
15- onClick : ( ) => void ;
15+ onMouseDown : ( ) => void ;
1616}
1717
1818/**
1919 * Detects a click that has occurred outside of the specified element.
2020 */
21- function useDetectClickOutside < Element extends HTMLElement > ( {
21+ function useDetectMouseDownOutside < Element extends HTMLElement > ( {
2222 elementRef,
23- onClick ,
24- } : UseDetectClickOutsideProps < Element > ) {
23+ onMouseDown ,
24+ } : UseDetectMouseDownOutsideProps < Element > ) {
2525 useEffect ( ( ) => {
26- function clickHandler ( e : MouseEvent ) {
26+ function handler ( e : MouseEvent ) {
2727 // If the element has been clicked on, we dont want to invoke the callback
2828 if ( e . target === elementRef . current ) return ;
2929
@@ -34,13 +34,13 @@ function useDetectClickOutside<Element extends HTMLElement>({
3434 }
3535
3636 // Click must be outside, so invoke callback
37- onClick ( ) ;
37+ onMouseDown ( ) ;
3838 }
3939
40- window . addEventListener ( "click " , clickHandler ) ;
40+ window . addEventListener ( "mousedown " , handler ) ;
4141
42- return ( ) => window . removeEventListener ( "click " , clickHandler ) ;
42+ return ( ) => window . removeEventListener ( "mousedown " , handler ) ;
4343 } ) ;
4444}
4545
46- export default useDetectClickOutside ;
46+ export default useDetectMouseDownOutside ;
0 commit comments