@@ -47,19 +47,20 @@ const Modal: React.FC<ModalProps> = ({ visible, appear, dismissable, showSpinner
4747 return ( dismissable || true ) && ! ( showSpinnerOverlay || false ) ;
4848 } , [ dismissable , showSpinnerOverlay ] ) ;
4949
50- const handleEscapeEvent = ( e : KeyboardEvent ) => {
51- if ( isDismissable && closeOnEscape && e . key === 'Escape' ) {
52- setRender ( false ) ;
53- }
54- } ;
50+ useEffect ( ( ) => {
51+ if ( ! isDismissable || ! closeOnEscape ) return ;
5552
56- useEffect ( ( ) => setRender ( visible ) , [ visible ] ) ;
53+ const handler = ( e : KeyboardEvent ) => {
54+ if ( e . key === 'Escape' ) setRender ( false ) ;
55+ } ;
5756
58- useEffect ( ( ) => {
59- window . addEventListener ( 'keydown' , handleEscapeEvent ) ;
57+ window . addEventListener ( 'keydown' , handler ) ;
58+ return ( ) => {
59+ window . removeEventListener ( 'keydown' , handler ) ;
60+ } ;
61+ } , [ isDismissable , closeOnEscape , render ] ) ;
6062
61- return ( ) => window . removeEventListener ( 'keydown' , handleEscapeEvent ) ;
62- } , [ render ] ) ;
63+ useEffect ( ( ) => setRender ( visible ) , [ visible ] ) ;
6364
6465 return (
6566 < Fade
@@ -70,7 +71,8 @@ const Modal: React.FC<ModalProps> = ({ visible, appear, dismissable, showSpinner
7071 onExited = { ( ) => onDismissed ( ) }
7172 >
7273 < ModalMask
73- onClick = { e => {
74+ onClick = { e => e . stopPropagation ( ) }
75+ onMouseDown = { e => {
7476 if ( isDismissable && closeOnBackground ) {
7577 e . stopPropagation ( ) ;
7678 if ( e . target === e . currentTarget ) {
0 commit comments