diff --git a/packages/excalidraw/components/dropdownMenu/DropdownMenu.tsx b/packages/excalidraw/components/dropdownMenu/DropdownMenu.tsx index 761d09b3f9..6f358311a2 100644 --- a/packages/excalidraw/components/dropdownMenu/DropdownMenu.tsx +++ b/packages/excalidraw/components/dropdownMenu/DropdownMenu.tsx @@ -35,10 +35,16 @@ const DropdownMenu = ({ : MenuContentComp; return ( - <> +
{MenuTriggerComp} {open && MenuContentCompWithPlacement} - +
); }; diff --git a/packages/excalidraw/components/dropdownMenu/DropdownMenuContent.tsx b/packages/excalidraw/components/dropdownMenu/DropdownMenuContent.tsx index 28f7c78fc0..f92c9df327 100644 --- a/packages/excalidraw/components/dropdownMenu/DropdownMenuContent.tsx +++ b/packages/excalidraw/components/dropdownMenu/DropdownMenuContent.tsx @@ -34,8 +34,15 @@ const MenuContent = ({ const callbacksRef = useStable({ onClickOutside }); - useOutsideClick(menuRef, () => { - callbacksRef.onClickOutside?.(); + useOutsideClick(menuRef, (event) => { + // prevents closing if clicking on the trigger button + if ( + !menuRef.current + ?.closest(".dropdown-menu-container") + ?.contains(event.target) + ) { + callbacksRef.onClickOutside?.(); + } }); useEffect(() => { diff --git a/packages/excalidraw/components/dropdownMenu/DropdownMenuTrigger.tsx b/packages/excalidraw/components/dropdownMenu/DropdownMenuTrigger.tsx index f43e4493b1..e1f3ef202f 100644 --- a/packages/excalidraw/components/dropdownMenu/DropdownMenuTrigger.tsx +++ b/packages/excalidraw/components/dropdownMenu/DropdownMenuTrigger.tsx @@ -24,7 +24,6 @@ const MenuTrigger = ({ ).trim(); return (