diff --git a/components/lib/dialog/Dialog.js b/components/lib/dialog/Dialog.js index 69589756e9..4453066c68 100644 --- a/components/lib/dialog/Dialog.js +++ b/components/lib/dialog/Dialog.js @@ -14,6 +14,7 @@ export const Dialog = React.forwardRef((props, ref) => { const [maximizedState, setMaximizedState] = React.useState(props.maximized); const dialogRef = React.useRef(null); const maskRef = React.useRef(null); + const pointerRef = React.useRef(null); const contentRef = React.useRef(null); const headerRef = React.useRef(null); const footerRef = React.useRef(null); @@ -46,12 +47,18 @@ export const Dialog = React.forwardRef((props, ref) => { } }; - const onMaskClick = (event) => { - if (props.dismissableMask && props.modal && maskRef.current === event.target) { + const onDialogPointerDown = (event) => { + pointerRef.current = event.target; + props.onPointerDown && props.onPointerDown(event); + }; + + const onMaskPointerUp = (event) => { + if (props.dismissableMask && props.modal && maskRef.current === event.target && !pointerRef.current) { onClose(event); } props.onMaskClick && props.onMaskClick(event); + pointerRef.current = null; }; const toggleMaximize = (event) => { @@ -529,9 +536,21 @@ export const Dialog = React.forwardRef((props, ref) => { }; return ( -
+
-