feat(accessibility): add native keyboard dialogs and semantic account links (U08)

This commit is contained in:
2026-11-02 19:24:21 +01:00
parent 86a73b862a
commit 62e2b7dee8
23 changed files with 218 additions and 65 deletions
@@ -2,8 +2,7 @@
@inject IEntryService EntryService
@inject IAccountService AccountService
<div class="dialog-backdrop">
<div class="dialog-content booking-dialog" @onclick:stopPropagation="true">
<ModalDialog @ref="modal" Title="Geld zwischen Konten verschieben" OnCancel="OnCancel" Busy="isSaving" Dirty="@(committedResult == null && IsDirty)">
<h5 class="mb-3">@(EditEntry != null ? "Umbuchung bearbeiten" : "Neue Umbuchung")</h5>
<p class="text-muted">Erfasst nur die Buchung. Führt keine Banküberweisung aus.</p>
@@ -11,7 +10,7 @@
<form @onsubmit="Save" @onsubmit:preventDefault="true" aria-busy="@(isSaving ? "true" : "false")">
<fieldset disabled="@(isSaving || committedResult != null || completed)">
<div class="form-container">
<label class="form-label">Zielkonto</label>
<label class="form-label" for="transfer-account">Zielkonto</label>
<select id="transfer-account" class="form-select" @bind="targetAccountId">
<option value="0">— Auswählen —</option>
@foreach (var acc in accounts.Where(a => a.Id != SourceAccountId))
@@ -20,13 +19,13 @@
}
</select>
<label class="form-label">Datum</label>
<label class="form-label" for="transfer-date">Datum</label>
<input id="transfer-date" type="date" class="form-control" value="@dateText" @oninput="e => dateText = e.Value?.ToString() ?? string.Empty" />
<label class="form-label">Bezeichnung</label>
<label class="form-label" for="transfer-title">Bezeichnung</label>
<input id="transfer-title" type="text" class="form-control" @bind="title" @bind:event="oninput" placeholder="Beschreibung der Umbuchung" />
<label class="form-label">Betrag (€)</label>
<label class="form-label" for="transfer-amount">Betrag (€)</label>
<div><AmountInput Id="transfer-amount" @bind-Value="amountText" />
<p class="text-muted">Betrag ohne Minuszeichen.</p></div>
</div>
@@ -47,6 +46,6 @@
<button type="button" class="btn btn-outline-secondary" disabled="@isSaving" @onclick="Cancel"><i class="bi bi-x-lg"></i> Abbrechen</button>
</div>
</form>
</div>
</div>
</ModalDialog>
@code { private ModalDialog? modal; }