fix: sidebar menu closes on mouseLeave before user can click option

- Remove menu close from onMouseLeave (was closing before user reaches dropdown)
- Add global document click listener to close menu when clicking outside

Co-Authored-By: Claude Sonnet 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
gongzhiyong
2026-04-08 20:31:59 +08:00
co-authored by Claude Sonnet 4.6
parent 7ec2127b85
commit e766564f34
+8 -1
View File
@@ -67,6 +67,13 @@ export function GeminiSidebar({
}
}, [renamingId]);
useEffect(() => {
if (!menuOpenId) return;
const close = () => setMenuOpenId(null);
document.addEventListener("click", close);
return () => document.removeEventListener("click", close);
}, [menuOpenId]);
const handleMenuClick = useCallback((e: React.MouseEvent, convId: string) => {
e.stopPropagation();
setMenuOpenId((prev) => (prev === convId ? null : convId));
@@ -150,7 +157,7 @@ export function GeminiSidebar({
<button
onClick={() => onSelectConversation(conv.id)}
onMouseEnter={() => setHoveredId(conv.id)}
onMouseLeave={() => { setHoveredId(null); if (menuOpenId === conv.id) setMenuOpenId(null); }}
onMouseLeave={() => setHoveredId(null)}
className={cn(
"w-full flex items-center justify-between px-3 py-2.5 rounded-xl text-sm text-left transition-colors duration-150 cursor-pointer group",
activeConversationId === conv.id