fix: Dropdown bleibt beim Scrollen offen, Dialog beim Markieren

Zwei Klick-Aergernisse mit derselben Ursache – ein zu grob gefasster
Schliess-Ausloeser.

Die Kategorieliste schloss bei jedem Scroll-Ereignis, wegen capture=true
auch beim Scrollen IN der Liste. Genau das will man aber tun. Jetzt zaehlt
nur noch Scrollen ausserhalb.

Der Dialog schloss, sobald ein Klick auf dem Hintergrund endete. Markiert
man Text in einem Feld und zieht ueber den Rand hinaus, liegt das Mouseup
dort – der Dialog ging mitten im Markieren zu. Jetzt muss der Klick auch
auf dem Hintergrund begonnen haben.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
Guido
2026-08-21 20:31:18 +02:00
co-authored by Claude Opus 5
parent d8c15ca260
commit ff897c196b
2 changed files with 19 additions and 2 deletions
+7 -1
View File
@@ -75,7 +75,13 @@ export default function CategorySelect({
setOpen(false);
};
const onKey = (e) => e.key === "Escape" && setOpen(false);
const onScrollResize = () => setOpen(false);
// Beim Scrollen der Seite wandert die Liste weg vom Knopf, deshalb zu.
// Scrollen INNERHALB der Liste ist aber genau das, was man tun will –
// capture=true fing das bisher mit ab und schloss sie sofort wieder.
const onScrollResize = (e) => {
if (e?.target && panelRef.current?.contains(e.target)) return;
setOpen(false);
};
document.addEventListener("mousedown", onDown);
document.addEventListener("keydown", onKey);
// capture=true: fängt auch das Scrollen innerhalb der Tabelle ab.