Un liste d'ouvrage rafale est accessible depuis le menu
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Sonnet 5
parent
42dec0dbd1
commit
d76fb10ee0
@@ -3,6 +3,7 @@
|
||||
@inject ServiceLivresApi Api
|
||||
@inject EtatReseau Reseau
|
||||
@inject NavigationManager Navigation
|
||||
@inject CacheHorsLigne Cache
|
||||
|
||||
@*
|
||||
Mise en page pensée mobile d'abord : un bandeau, une colonne, rien à gauche.
|
||||
@@ -93,6 +94,16 @@
|
||||
</div>
|
||||
}
|
||||
|
||||
@*
|
||||
Une rafale non vidée reste consultable ailleurs sur le site — sans quoi y revenir
|
||||
depuis un autre écran demande de refaire tout le chemin d'« Ajouter ». L'entrée
|
||||
disparaît d'elle-même une fois la file effacée (bouton « Nouvelle rafale »).
|
||||
*@
|
||||
@if (_rafale is { Total: > 0 })
|
||||
{
|
||||
<NavLink class="menu-lien menu-lien-rafale" href="ajout/rafale">@LibelleRafale</NavLink>
|
||||
}
|
||||
|
||||
<NavLink class="menu-lien" href="" Match="NavLinkMatch.All">Catalogue</NavLink>
|
||||
<NavLink class="menu-lien" href="auteurs">Auteurs</NavLink>
|
||||
<NavLink class="menu-lien" href="series">Séries</NavLink>
|
||||
@@ -148,6 +159,12 @@
|
||||
|
||||
private ElementReference _menu;
|
||||
|
||||
/// <summary>Rafale non vidée, s'il y en a une. Relue à chaque navigation (lot AB).</summary>
|
||||
private Rafale? _rafale;
|
||||
|
||||
private string LibelleRafale =>
|
||||
_rafale is { Crees: > 0 } r ? $"Compte rendu ({r.Crees})" : "Rafale à reprendre";
|
||||
|
||||
protected override async Task OnInitializedAsync()
|
||||
{
|
||||
Reseau.Change += SurChangementReseau;
|
||||
@@ -158,6 +175,8 @@
|
||||
// entrées empilées au-dessus de la liste des auteurs.
|
||||
Navigation.LocationChanged += SurNavigation;
|
||||
|
||||
_rafale = await Cache.LireRafaleAsync();
|
||||
|
||||
// Écoute des bascules online/offline avant tout appel : un démarrage hors-ligne doit
|
||||
// aller directement au cache, sans attendre l'échec d'une requête.
|
||||
await Reseau.DemarrerAsync();
|
||||
@@ -226,13 +245,19 @@
|
||||
|
||||
private void SurNavigation(object? _, LocationChangedEventArgs __)
|
||||
{
|
||||
if (!_menuOuvert)
|
||||
if (_menuOuvert)
|
||||
{
|
||||
return;
|
||||
_menuOuvert = false;
|
||||
}
|
||||
|
||||
_menuOuvert = false;
|
||||
_ = InvokeAsync(StateHasChanged);
|
||||
// ⚠️ Relu à CHAQUE navigation, pas seulement au quitter de l'écran de rafale : c'est ce
|
||||
// qui fait apparaître l'entrée du menu dès le premier code scanné, et disparaître dès
|
||||
// la file effacée, où qu'on soit rendu entre-temps.
|
||||
_ = InvokeAsync(async () =>
|
||||
{
|
||||
_rafale = await Cache.LireRafaleAsync();
|
||||
StateHasChanged();
|
||||
});
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
|
||||
@@ -1664,6 +1664,20 @@ body {
|
||||
font-size: 0.9rem;
|
||||
}
|
||||
|
||||
/*
|
||||
Le compte rendu de la dernière rafale (lot AB) : une entrée transitoire, présente
|
||||
seulement tant qu'une file non vidée existe. Le même jaune que la pastille hors-ligne
|
||||
la distingue des six destinations permanentes — c'est une chose à finir, pas un lieu.
|
||||
*/
|
||||
.menu-lien-rafale {
|
||||
border-left-color: #f5d76e;
|
||||
font-weight: 600;
|
||||
}
|
||||
|
||||
.menu-lien-rafale.active {
|
||||
border-left-color: #f5d76e;
|
||||
}
|
||||
|
||||
/*
|
||||
À partir de 40rem la rangée tient sans se comprimer, et la bascule n'a plus
|
||||
de raison d'être. Le point de rupture est répété dans `MainLayout.razor.css`
|
||||
@@ -1705,6 +1719,10 @@ body {
|
||||
border-bottom-color: #f5d76e;
|
||||
}
|
||||
|
||||
.menu-lien-rafale {
|
||||
border-bottom-color: #f5d76e;
|
||||
}
|
||||
|
||||
/* En rangée, un filet au-dessus ne séparerait rien : le trait passe à GAUCHE, et la marge
|
||||
supérieure disparaît sous peine de désaligner l'entrée du reste de la rangée. */
|
||||
.menu-lien-annexe {
|
||||
|
||||
Reference in New Issue
Block a user