Skip to content

Commit 6139b4e

Browse files
committed
Fix chrome dismissing modals when dragging out of it; closes pterodactyl#2295
1 parent b4599a2 commit 6139b4e

File tree

1 file changed

+13
-11
lines changed
  • resources/scripts/components/elements

1 file changed

+13
-11
lines changed

resources/scripts/components/elements/Modal.tsx

Lines changed: 13 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)