[Bug] Profil-Menü (Popover) schließt nicht nach Klick auf „Einstellungen" oder „Konto" #349

Closed
opened 2026-05-19 22:45:14 +02:00 by admin-mrrm · 1 comment
Owner

Beobachtetes Verhalten

Nach Klick auf „Einstellungen" oder „Konto" im Profil-Popover navigiert die App korrekt zur Ziel-Route — das Popover bleibt aber offen und überlagert die Page (siehe Screenshot zu #348).

Erwartetes Verhalten

Popover schließt sich nach jeder Item-Auswahl (Standardverhalten für Dropdown-Menus). Nur „Abmelden" funktioniert korrekt, da es ein Button ist (kein Link).

Reproduktion

  1. Profil-Avatar (MM) oben rechts antippen
  2. „Einstellungen" antippen → landet auf /einstellungen/mail
  3. Popover bleibt sichtbar geöffnet, bis manuell außerhalb getippt wird

Umgebung

  • App: web
  • Version / Commit: aktueller main (post-#336)
  • OS / Browser / Device: Android, Vivaldi auf app.mrrm.de

Code-Hinweis

apps/web/src/components/profile-menu.tsx:55-64:

<Popover.Close asChild>
  <Link to="/einstellungen/mail" style={...}>
    <MenuItem label="Einstellungen" />
  </Link>
</Popover.Close>

Das asChild-Pattern erwartet, dass das Child Event-Handler (insb. onPress/onClick) korrekt mergt. TanStack-Router <Link> rendert ein nativen <a> und ruft beim Klick preventDefault + eigenen Navigations-Handler auf — der Popover-Close-Handler von Tamagui wird dabei vermutlich nicht ausgelöst.

Lösungsskizze (Optionen):

  • Popover über open/onOpenChange-State steuern und setOpen(false) im Link-onClick aufrufen
  • Link in einen Button wrappen, der router.navigate() aufruft (dann funktioniert Popover.Close asChild mit Button-Trigger)
  • Popover.Close als äußeres Wrapper-Element verwenden (z.B. um den MenuItem-YStack statt um den Link)

Bezug

  • Einführung: #336 (App-Shell-Refactor — Profil-Menü neu)
  • Begleit-Bug zu #348 (Settings-Layout)
## Beobachtetes Verhalten Nach Klick auf „Einstellungen" oder „Konto" im Profil-Popover navigiert die App korrekt zur Ziel-Route — das **Popover bleibt aber offen** und überlagert die Page (siehe Screenshot zu #348). ## Erwartetes Verhalten Popover schließt sich nach jeder Item-Auswahl (Standardverhalten für Dropdown-Menus). Nur „Abmelden" funktioniert korrekt, da es ein `Button` ist (kein `Link`). ## Reproduktion 1. Profil-Avatar (MM) oben rechts antippen 2. „Einstellungen" antippen → landet auf `/einstellungen/mail` 3. Popover bleibt sichtbar geöffnet, bis manuell außerhalb getippt wird ## Umgebung - App: **web** - Version / Commit: aktueller `main` (post-#336) - OS / Browser / Device: Android, Vivaldi auf `app.mrrm.de` ## Code-Hinweis `apps/web/src/components/profile-menu.tsx:55-64`: ```tsx <Popover.Close asChild> <Link to="/einstellungen/mail" style={...}> <MenuItem label="Einstellungen" /> </Link> </Popover.Close> ``` Das `asChild`-Pattern erwartet, dass das Child Event-Handler (insb. `onPress`/`onClick`) korrekt mergt. TanStack-Router `<Link>` rendert ein nativen `<a>` und ruft beim Klick `preventDefault` + eigenen Navigations-Handler auf — der Popover-Close-Handler von Tamagui wird dabei vermutlich nicht ausgelöst. **Lösungsskizze (Optionen):** - Popover über `open`/`onOpenChange`-State steuern und `setOpen(false)` im Link-`onClick` aufrufen - Link in einen `Button` wrappen, der `router.navigate()` aufruft (dann funktioniert `Popover.Close asChild` mit Button-Trigger) - `Popover.Close` als äußeres Wrapper-Element verwenden (z.B. um den `MenuItem`-YStack statt um den Link) ## Bezug - Einführung: #336 (App-Shell-Refactor — Profil-Menü neu) - Begleit-Bug zu #348 (Settings-Layout)
Collaborator

PM-Housekeeping: Fix wurde bereits am 2026-05-20 via PR #356 (Commit 7b30b04) auf main gemerged und ist seitdem in Prod ausgerollt. Issue wurde nur nicht automatisch geschlossen weil der Commit-Title fix(#349): statt Fixes #349 verwendet.

Schließe als verifiziert-implementiert. Falls bei dir lokal das Verhalten noch nicht funktioniert: bitte App-Cache leeren und neu laden — wieder öffnen wenn der Bug reproduzierbar bleibt.

**PM-Housekeeping:** Fix wurde bereits am 2026-05-20 via PR #356 (Commit `7b30b04`) auf `main` gemerged und ist seitdem in Prod ausgerollt. Issue wurde nur nicht automatisch geschlossen weil der Commit-Title `fix(#349):` statt `Fixes #349` verwendet. Schließe als verifiziert-implementiert. Falls bei dir lokal das Verhalten noch nicht funktioniert: bitte App-Cache leeren und neu laden — wieder öffnen wenn der Bug reproduzierbar bleibt.
Sign in to join this conversation.
No project
No assignees
2 participants
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Reference
admin-mrrm/mrrmlabapp#349
No description provided.