From 09ae6d6a2dd9bad08b5e0bb337411c10dade7b66 Mon Sep 17 00:00:00 2001 From: mARTin Date: Mon, 23 Mar 2026 11:15:08 +0100 Subject: [PATCH] fix: close project picker on mouse leave and outside click v1.58.1 --- package.json | 2 +- src/components/GridTaskBlock.tsx | 20 ++++++++++++++++++++ 2 files changed, 21 insertions(+), 1 deletion(-) diff --git a/package.json b/package.json index 286d70b..0a489e9 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "my-weekly-todo-list", - "version": "1.58.0", + "version": "1.58.1", "description": "A web-based weekly task management application that organizes to-dos and calendar events in a single, intuitive weekly view", "main": "index.js", "scripts": { diff --git a/src/components/GridTaskBlock.tsx b/src/components/GridTaskBlock.tsx index b2591e0..60d5d33 100644 --- a/src/components/GridTaskBlock.tsx +++ b/src/components/GridTaskBlock.tsx @@ -95,6 +95,18 @@ export function GridTaskBlock({ return () => { document.removeEventListener("touchstart", handler); document.removeEventListener("mousedown", handler); }; }, [touchActive]); + // Close project picker on outside click + useEffect(() => { + if (!showProjectPicker) return; + const handler = (e: Event) => { + if (projectPickerRef.current && !projectPickerRef.current.contains(e.target as Node)) { + setShowProjectPicker(false); + } + }; + document.addEventListener("mousedown", handler); + return () => document.removeEventListener("mousedown", handler); + }, [showProjectPicker]); + // Resize State const [isResizing, setIsResizing] = useState(false); const [resizeHeight, setResizeHeight] = useState(null); @@ -218,6 +230,14 @@ export function GridTaskBlock({ draggable={!editingTaskId && !isResizing} onDragStart={(e) => handleDragStart(e, task)} onDragEnd={handleDragEnd} + onMouseLeave={(e) => { + if (showProjectPicker) { + // Don't close if mouse moved into the project picker dropdown + const related = e.relatedTarget as HTMLElement | null; + if (related && projectPickerRef.current?.contains(related)) return; + setShowProjectPicker(false); + } + }} onClick={(e) => { e.stopPropagation(); // Touch: toggle action toolbar on tap instead of toggling completion