@using MaBibli.Client.Services
@*
Un bloc de série au catalogue, replié ou déplié — et récursif, parce qu'un cycle est une
série de séries : chaque niveau porte sa propre bascule.
⚠️ Tout est DÉPLIÉ par défaut, et l'on replie ce dont on ne veut pas. C'est la règle déjà
tenue par l'arbre des séries : l'inverse obligerait à ouvrir chaque bloc pour retrouver un
livre qu'on voyait très bien avant.
⚠️ Replié, le bloc annonce toujours ce qu'il contient (« 5 tomes ») : sans ce compte, le
compteur du haut du catalogue paraîtrait mentir.
*@
@if (Deplie)
{
@if (Entree.SousEntrees.Count > 0)
{
@foreach (var sous in Entree.SousEntrees)
{
}
}
@if (Entree.Livres.Count > 0)
{
@foreach (var livre in Entree.Livres)
{
-
}
}
}
@code {
[Parameter, EditorRequired] public EntreeCatalogue Entree { get; set; } = default!;
///
/// Blocs REPLIÉS, par identifiant de série — et non dépliés : le défaut est de tout montrer.
///
///
/// État local de l'écran, volontairement non persistant, comme celui de l'arbre des séries :
/// c'est un confort de lecture, pas une propriété de la série. Il survit en revanche aux
/// rechargements du catalogue (frappe dans la recherche, filtre), le jeu appartenant à
/// l'écran et non au bloc.
///
[Parameter, EditorRequired] public ISet Replies { get; set; } = new HashSet();
private bool Deplie => !Replies.Contains(Entree.Serie!.Id);
private void Basculer()
{
if (!Replies.Add(Entree.Serie!.Id))
{
Replies.Remove(Entree.Serie!.Id);
}
}
}