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 ServiceLivresApi Api
|
||||||
@inject EtatReseau Reseau
|
@inject EtatReseau Reseau
|
||||||
@inject NavigationManager Navigation
|
@inject NavigationManager Navigation
|
||||||
|
@inject CacheHorsLigne Cache
|
||||||
|
|
||||||
@*
|
@*
|
||||||
Mise en page pensée mobile d'abord : un bandeau, une colonne, rien à gauche.
|
Mise en page pensée mobile d'abord : un bandeau, une colonne, rien à gauche.
|
||||||
@@ -93,6 +94,16 @@
|
|||||||
</div>
|
</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="" Match="NavLinkMatch.All">Catalogue</NavLink>
|
||||||
<NavLink class="menu-lien" href="auteurs">Auteurs</NavLink>
|
<NavLink class="menu-lien" href="auteurs">Auteurs</NavLink>
|
||||||
<NavLink class="menu-lien" href="series">Séries</NavLink>
|
<NavLink class="menu-lien" href="series">Séries</NavLink>
|
||||||
@@ -148,6 +159,12 @@
|
|||||||
|
|
||||||
private ElementReference _menu;
|
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()
|
protected override async Task OnInitializedAsync()
|
||||||
{
|
{
|
||||||
Reseau.Change += SurChangementReseau;
|
Reseau.Change += SurChangementReseau;
|
||||||
@@ -158,6 +175,8 @@
|
|||||||
// entrées empilées au-dessus de la liste des auteurs.
|
// entrées empilées au-dessus de la liste des auteurs.
|
||||||
Navigation.LocationChanged += SurNavigation;
|
Navigation.LocationChanged += SurNavigation;
|
||||||
|
|
||||||
|
_rafale = await Cache.LireRafaleAsync();
|
||||||
|
|
||||||
// Écoute des bascules online/offline avant tout appel : un démarrage hors-ligne doit
|
// É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.
|
// aller directement au cache, sans attendre l'échec d'une requête.
|
||||||
await Reseau.DemarrerAsync();
|
await Reseau.DemarrerAsync();
|
||||||
@@ -226,13 +245,19 @@
|
|||||||
|
|
||||||
private void SurNavigation(object? _, LocationChangedEventArgs __)
|
private void SurNavigation(object? _, LocationChangedEventArgs __)
|
||||||
{
|
{
|
||||||
if (!_menuOuvert)
|
if (_menuOuvert)
|
||||||
{
|
{
|
||||||
return;
|
_menuOuvert = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
_menuOuvert = false;
|
// ⚠️ Relu à CHAQUE navigation, pas seulement au quitter de l'écran de rafale : c'est ce
|
||||||
_ = InvokeAsync(StateHasChanged);
|
// 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>
|
/// <summary>
|
||||||
|
|||||||
@@ -1664,6 +1664,20 @@ body {
|
|||||||
font-size: 0.9rem;
|
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
|
À 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`
|
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;
|
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
|
/* 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. */
|
supérieure disparaît sous peine de désaligner l'entrée du reste de la rangée. */
|
||||||
.menu-lien-annexe {
|
.menu-lien-annexe {
|
||||||
|
|||||||
Reference in New Issue
Block a user