fix(keys): call submit handler directly to avoid stale form linkage (#4858) (#4967)
Some checks failed
Publish Docker image (Multi-arch) / Build & push (amd64) (push) Has been cancelled
Publish Docker image (Multi-arch) / Build & push (arm64) (push) Has been cancelled
Publish Docker image (Multi-arch) / Create multi-arch manifests (push) Has been cancelled
Release (Linux, macOS, Windows) / Linux Release (push) Has been cancelled
Release (Linux, macOS, Windows) / macOS Release (push) Has been cancelled
Release (Linux, macOS, Windows) / Windows Release (push) Has been cancelled

Users reported that the API key edit drawer's "Save changes" button
becomes unresponsive after the drawer has been open / idle for a
while: no loading state, no request, no error. Reopening the drawer
restores it because a fresh DOM is created.

The button lived in `SheetFooter` (a portaled Base UI Sheet) and was
linked to the form via the HTML `form='api-key-form'` attribute. Once
the portal/DOM relationship goes stale, the click no longer triggers
the form's submit event, hence the silent failure.

Defensive fix: drop the cross-DOM `form` linkage and call
`form.handleSubmit(onSubmit)` directly via `onClick`. The native
submit path (Enter key, original `<form onSubmit>`) is preserved.

Closes #4858
This commit is contained in:
Calcium-Ion 2026-05-19 16:40:11 +08:00 committed by GitHub
parent 5e88f97ac1
commit 146dd77b83
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

View File

@ -610,8 +610,8 @@ export function ApiKeysMutateDrawer({
{t('Close')}
</SheetClose>
<Button
form='api-key-form'
type='submit'
type='button'
onClick={form.handleSubmit(onSubmit)}
disabled={isSubmitting}
className='w-full sm:w-auto'
>