1 Commits
Author SHA1 Message Date
mathieu e7fe9ed6a9 Dans la vue Série, lors d'une entrée de numéro de tome, focus directement sur la zone d'entrée.
Dans la vue Modifier une série, la dernière série enregistrée est la première montrée dans la sélection de la série mère. De plus, lors de l'enregistrement, on revient sur la page série et on ne reste plus bloquer sur la même page de sélection
2026-09-10 19:00:30 +02:00
+15 -3
View File
@@ -520,6 +520,7 @@ else
<div class="barre-recherche"> <div class="barre-recherche">
<input class="champ-saisie" type="text" <input class="champ-saisie" type="text"
placeholder="7, Hors-série, 3.5…" placeholder="7, Hors-série, 3.5…"
@ref="_champNumero"
@bind="_numeroSaisi" @bind:event="oninput" @bind="_numeroSaisi" @bind:event="oninput"
@onkeydown="@(e => SurToucheNumero(e, element))" @onkeydown="@(e => SurToucheNumero(e, element))"
aria-label="@($"Numéro du tome « {element.Titre} »")" aria-label="@($"Numéro du tome « {element.Titre} »")"
@@ -745,6 +746,11 @@ else
private string _numeroSaisi = string.Empty; private string _numeroSaisi = string.Empty;
private ElementReference _champNumero;
/// <summary>Le champ « numéro » vient de s'ouvrir : à focaliser au prochain rendu.</summary>
private bool _focusNumero;
/// <summary> /// <summary>
/// Trier par numéro de tome plutôt que par ordre de lecture. /// Trier par numéro de tome plutôt que par ordre de lecture.
/// </summary> /// </summary>
@@ -869,6 +875,12 @@ else
protected override async Task OnAfterRenderAsync(bool premierRendu) protected override async Task OnAfterRenderAsync(bool premierRendu)
{ {
if (_focusNumero)
{
_focusNumero = false;
await _champNumero.FocusAsync();
}
if (_focusAFaire is not { } voie) if (_focusAFaire is not { } voie)
{ {
return; return;
@@ -894,6 +906,7 @@ else
{ {
_numeroOuvert = element.Id; _numeroOuvert = element.Id;
_numeroSaisi = element.Numero ?? string.Empty; _numeroSaisi = element.Numero ?? string.Empty;
_focusNumero = true;
} }
private async Task SurToucheNumero(KeyboardEventArgs e, ElementSerieDto element) private async Task SurToucheNumero(KeyboardEventArgs e, ElementSerieDto element)
@@ -1052,7 +1065,7 @@ else
/// refuse aussi — cette liste évite seulement de proposer un choix qui sera rejeté. /// refuse aussi — cette liste évite seulement de proposer un choix qui sera rejeté.
/// </remarks> /// </remarks>
private IEnumerable<SerieDto> Candidates => private IEnumerable<SerieDto> Candidates =>
_toutes.Where(s => s.Id != Id && !EstDescendante(s.Id)); _toutes.Where(s => s.Id != Id && !EstDescendante(s.Id)).Reverse();
private bool EstDescendante(int candidate) private bool EstDescendante(int candidate)
{ {
@@ -1522,10 +1535,9 @@ else
await EcrireAsync(() => Api.ModifierSerieAsync( await EcrireAsync(() => Api.ModifierSerieAsync(
Id, new EnregistrementSerie { Titre = _titre, SerieParenteId = _parenteId == 0 ? null : _parenteId })); Id, new EnregistrementSerie { Titre = _titre, SerieParenteId = _parenteId == 0 ? null : _parenteId }));
// Le rangement dans un cycle change la parenté des AUTRES séries affichées : on relit.
if (_erreur is null) if (_erreur is null)
{ {
await ChargerAsync(); Navigation.NavigateTo($"series/{Id}");
} }
} }