Dashboard zaehlt Einzelstuecke mit; Baum-Dropdown scrollbar
Auswertungen (by_category, expiry_split, stats) iterierten nur Lots. Gegenstaende mit Menge-je-Lagerort liegen als Lots und tauchten auf – Einzelstuecke liegen aber als Items und fehlten dadurch komplett (Dashboard zeigte z.B. nur die Powerbank, nicht Kamera/Kabel). Neuer Helfer _bestand_beitraege deckt beide Speicherformen ab: jedes Item zaehlt als ein Stueck ohne MHD. Regressionstest ergaenzt; volle Suite gruen (120). CategorySelect: Scrollen IM aufklappbaren Menue schloss es, weil jeder Scroll als Seiten-Scroll gewertet wurde. Jetzt schliesst nur ein Scroll ausserhalb des Menues; die lange Liste laesst sich scrollen. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
@@ -45,18 +45,23 @@ export default function CategorySelect({
|
||||
if (popRef.current?.contains(e.target)) return;
|
||||
setOpen(false);
|
||||
}
|
||||
function onAway() { setOpen(false); }
|
||||
function onScroll(e) {
|
||||
// Scrollen IM Menü (die Liste ist scrollbar) darf es nicht schließen –
|
||||
// nur ein Scrollen der Seite dahinter, weil das fixierte Menü sonst
|
||||
// verrutschen würde.
|
||||
if (popRef.current && e.target instanceof Node && popRef.current.contains(e.target)) return;
|
||||
setOpen(false);
|
||||
}
|
||||
function onResize() { setOpen(false); }
|
||||
function onKey(e) { if (e.key === "Escape") setOpen(false); }
|
||||
document.addEventListener("mousedown", onDoc);
|
||||
// Beim Scrollen/Größenwechsel würde das fixierte Menü verrutschen – lieber
|
||||
// schließen.
|
||||
window.addEventListener("scroll", onAway, true);
|
||||
window.addEventListener("resize", onAway);
|
||||
window.addEventListener("scroll", onScroll, true);
|
||||
window.addEventListener("resize", onResize);
|
||||
document.addEventListener("keydown", onKey);
|
||||
return () => {
|
||||
document.removeEventListener("mousedown", onDoc);
|
||||
window.removeEventListener("scroll", onAway, true);
|
||||
window.removeEventListener("resize", onAway);
|
||||
window.removeEventListener("scroll", onScroll, true);
|
||||
window.removeEventListener("resize", onResize);
|
||||
document.removeEventListener("keydown", onKey);
|
||||
};
|
||||
}, [open]);
|
||||
|
||||
Reference in New Issue
Block a user