fix: close project picker on mouse leave and outside click

v1.58.1
This commit is contained in:
mARTin 2026-03-23 11:15:08 +01:00
parent 9093149f5e
commit 09ae6d6a2d
2 changed files with 21 additions and 1 deletions

View File

@ -1,6 +1,6 @@
{ {
"name": "my-weekly-todo-list", "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", "description": "A web-based weekly task management application that organizes to-dos and calendar events in a single, intuitive weekly view",
"main": "index.js", "main": "index.js",
"scripts": { "scripts": {

View File

@ -95,6 +95,18 @@ export function GridTaskBlock({
return () => { document.removeEventListener("touchstart", handler); document.removeEventListener("mousedown", handler); }; return () => { document.removeEventListener("touchstart", handler); document.removeEventListener("mousedown", handler); };
}, [touchActive]); }, [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 // Resize State
const [isResizing, setIsResizing] = useState(false); const [isResizing, setIsResizing] = useState(false);
const [resizeHeight, setResizeHeight] = useState<number | null>(null); const [resizeHeight, setResizeHeight] = useState<number | null>(null);
@ -218,6 +230,14 @@ export function GridTaskBlock({
draggable={!editingTaskId && !isResizing} draggable={!editingTaskId && !isResizing}
onDragStart={(e) => handleDragStart(e, task)} onDragStart={(e) => handleDragStart(e, task)}
onDragEnd={handleDragEnd} 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) => { onClick={(e) => {
e.stopPropagation(); e.stopPropagation();
// Touch: toggle action toolbar on tap instead of toggling completion // Touch: toggle action toolbar on tap instead of toggling completion