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 (