fix: move logout form outside DropdownMenuContent so requestSubmit fires
UserMenu's hidden logout-form zat binnen <DropdownMenuContent>. Wanneer een DropdownMenuItem onSelect vuurt, sluit base-ui de menu en unmount het content-portal in dezelfde tick — waardoor de form verdwijnt voordat requestSubmit() wordt aangeroepen, en logoutFormRef.current null is. Form naar top-level van het component verplaatsen (als sibling van DropdownMenu, binnen Fragment) houdt de ref geldig. Geen DOM-side-effecten — form is hidden, zat nooit visueel in het menu. Quality gates: lint 0 errors, tsc clean. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
parent
c87b6156ae
commit
4f9a6d2d9e
1 changed files with 8 additions and 4 deletions
|
|
@ -36,8 +36,12 @@ export function UserMenu({ userId, username, email, roles }: UserMenuProps) {
|
|||
const logoutFormRef = useRef<HTMLFormElement>(null)
|
||||
|
||||
return (
|
||||
<DropdownMenu>
|
||||
<DropdownMenuTrigger
|
||||
<>
|
||||
{/* Form buiten DropdownMenuContent — die unmount op onSelect waardoor de ref
|
||||
null wordt voordat requestSubmit() vuurt. */}
|
||||
<form ref={logoutFormRef} action={logoutAction} className="hidden" />
|
||||
<DropdownMenu>
|
||||
<DropdownMenuTrigger
|
||||
className="rounded-full focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-primary focus-visible:ring-offset-2 focus-visible:ring-offset-background"
|
||||
aria-label="Accountmenu openen"
|
||||
>
|
||||
|
|
@ -109,8 +113,8 @@ export function UserMenu({ userId, username, email, roles }: UserMenuProps) {
|
|||
<LogOut className="mr-2 h-4 w-4" />
|
||||
<span>Uitloggen</span>
|
||||
</DropdownMenuItem>
|
||||
<form ref={logoutFormRef} action={logoutAction} className="hidden" />
|
||||
</DropdownMenuContent>
|
||||
</DropdownMenu>
|
||||
</DropdownMenu>
|
||||
</>
|
||||
)
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue