fix(account): Registrieren zeigt die Fehlerzeile am Feld im Sichtbaren, der Rückfall-Dialog nennt Namen und Grund
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
1 parent
53bcecf3cb
commit
3440eb46c3
4 files changed
+187
-15
No files matched your search
@@ -177,11 +177,16 @@ function createLoginDialog(): (view: LoginView) => Promise<boolean> {
|
||||
panel.errorEl.replaceChildren(text, ...(extra ? [' ', extra] : []));
|
||||
}
|
||||
|
||||
/** Ein Fehler am Eingabefeld, das ihn verursacht: der Text steht in der Meldungszeile, das Feld gilt als ungültig und bekommt den Fokus. */
|
||||
/**
|
||||
* Ein Fehler am Eingabefeld, das ihn verursacht: der Text steht in der Meldungszeile, das Feld gilt als ungültig und bekommt den Fokus.
|
||||
* Die Meldungszeile steht unter allen Feldern, bei einem Fehler am ersten (dem Namen) kann sie auf einem kleinen Bildschirm außerhalb
|
||||
* liegen: sie wird ins Sichtbare gerückt, nur so weit wie nötig.
|
||||
*/
|
||||
function showFieldError(panel: Panel, input: HTMLInputElement, text: string): void {
|
||||
showError(panel, text);
|
||||
setFieldInvalid(input, ERROR_ID, true);
|
||||
input.focus();
|
||||
panel.errorEl.scrollIntoView({ block: 'nearest' });
|
||||
}
|
||||
|
||||
function showOk(panel: Panel, text: string): void {
|
||||
@@ -244,15 +249,18 @@ function createLoginDialog(): (view: LoginView) => Promise<boolean> {
|
||||
if (!asked) clearUsernamePrompted();
|
||||
throw err;
|
||||
}
|
||||
let failure: unknown;
|
||||
let saved = true;
|
||||
try {
|
||||
await saveUsername(name);
|
||||
} catch {
|
||||
} catch (err) {
|
||||
saved = false;
|
||||
failure = err;
|
||||
}
|
||||
finish(true);
|
||||
if (!saved) {
|
||||
usernameDialog({ mode: 'prompt' }).catch((err: unknown) => {
|
||||
// Der Namensdialog beginnt mit dem getippten Namen und nennt den Grund (vergeben, kein Netz …), statt leer und stumm zu erscheinen.
|
||||
usernameDialog({ mode: 'prompt', initial: name, failure }).catch((err: unknown) => {
|
||||
console.error('Der Dialog „Benutzername“ konnte nicht geöffnet werden', err);
|
||||
});
|
||||
}
|
||||
|
||||
Reference in new issue
Block a user