fix(centralui): Topology inline area rename commits the typed name on Enter (Gitea #38)

The rename input bound _renameBuffer with the default onchange trigger. A
browser fires change only after the Enter keydown (or on blur, which cancels
by design), so CommitRename always saw the original name and silently
no-oped: a UI rename never persisted. Present since the page was written
(pre-dates 513fa1aa); the Playwright test masked it by dispatching a
synthetic change event before Enter. Bind on oninput instead.

Tests: bUnit InlineRename_TypeThenEnter_PersistsNewName (fails on the old
binding); the Playwright rename test now types + Enter like an operator.
Also fix the Playwright OpenStableTopologyAsync race: it counted 'Load
instances' loaders immediately after clicking Expand all, before the
circuit re-render landed, and returned an unexpanded tree; it now waits
for no collapsed branch first.
This commit is contained in:
Joseph Doherty
2026-10-22 13:45:56 -04:00
parent 52a1e1b614
commit 560adefb0c
3 changed files with 41 additions and 6 deletions
@@ -618,6 +618,7 @@
aria-label="@($"Rename {node.Label}")"
@ref="_renameInput"
@bind="_renameBuffer"
@bind:event="oninput"
@onkeydown="(e) => OnRenameKeyDown(e, node)"
@onblur="() => CancelRename()" />
@if (!string.IsNullOrEmpty(_renameError))
@@ -755,6 +756,10 @@
_renameError = null;
}
// The buffer binds on `oninput` (Gitea #38): with the default `onchange` binding the
// browser's change event fires only AFTER the Enter keydown — so CommitRename saw the
// unchanged original name and silently cancelled — or on blur, which cancels by design.
// Binding per keystroke means Enter always commits what the operator typed.
private async Task OnRenameKeyDown(KeyboardEventArgs e, TopoNode node)
{
if (e.Key == "Escape")