From 16808efbe6f69bfd80aa43ed38ad65685367a843 Mon Sep 17 00:00:00 2001 From: Julian Waller <git@julusian.co.uk> Date: Wed, 2 Oct 2024 20:04:11 +0100 Subject: [PATCH] fix(CModal): closes if onmouseup event is outside of the modal --- packages/coreui-react/src/components/modal/CModal.tsx | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/packages/coreui-react/src/components/modal/CModal.tsx b/packages/coreui-react/src/components/modal/CModal.tsx index e02c3425..7c4b3274 100644 --- a/packages/coreui-react/src/components/modal/CModal.tsx +++ b/packages/coreui-react/src/components/modal/CModal.tsx @@ -145,14 +145,14 @@ export const CModal = forwardRef<HTMLDivElement, CModalProps>( useEffect(() => { if (_visible) { activeElementRef.current = document.activeElement as HTMLElement | null - document.addEventListener('mouseup', handleClickOutside) + document.addEventListener('mousedown', handleMouseDown) document.addEventListener('keydown', handleKeyDown) } else { activeElementRef.current?.focus() } return () => { - document.removeEventListener('mouseup', handleClickOutside) + document.removeEventListener('mousedown', handleMouseDown) document.removeEventListener('keydown', handleKeyDown) } }, [_visible]) @@ -205,8 +205,11 @@ export const CModal = forwardRef<HTMLDivElement, CModalProps>( } } }, [_visible]) - - const handleClickOutside = (event: Event) => { + + const handleMouseDown = (event: Event) => { + document.addEventListener('mouseup', () => handleMouseUp(event), { once: true }) + } + const handleMouseUp = (event: Event) => { if (modalRef.current && modalRef.current == event.target) { handleDismiss() }