fix(accounts): release row focus after Escape

Blur the focused account row only when Escape clears an active account selection. This prevents Chromium focus-visible styling from leaving a thick clipped blue outline while retaining accessible focus indicators during normal keyboard navigation.
This commit is contained in:
Sucukdeluxe
2026-08-15 02:00:54 +02:00
parent b5854a2227
commit 90fc77f203
3 changed files with 33 additions and 3 deletions
+17
View File
@@ -76,4 +76,21 @@ describe("global Escape selection routing", () => {
expect(api.resolveEscapeSelectionScope?.("downloads", "allgemein", "DIV")).toBe("downloads");
expect(api.resolveEscapeSelectionScope?.("history", "accounts", "DIV")).toBe("history");
});
it("releases the focused account row when Escape leaves account selection", () => {
const api = selection as typeof selection & {
releaseAccountSelectionFocus?: (activeElement: { closest: (selector: string) => unknown; blur: () => void } | null) => boolean;
};
let blurred = false;
const accountRow = {
closest: (selector: string) => selector === ".settings-account-row" ? {} : null,
blur: () => { blurred = true; }
};
expect(api.releaseAccountSelectionFocus).toBeTypeOf("function");
expect(api.releaseAccountSelectionFocus?.(accountRow)).toBe(true);
expect(blurred).toBe(true);
expect(api.releaseAccountSelectionFocus?.({ closest: () => null, blur: () => {} })).toBe(false);
expect(api.releaseAccountSelectionFocus?.(null)).toBe(false);
});
});