Définition du layout
Le layout structure les pages de l'application cliente Lagoon. Il est défini dans le projet Client, généralement avec deux composants placés dans Shared : App.razor pour la structure applicative et MenuConfiguration.razor pour les menus.
App.razor est le composant racine enregistré dans Client/Main.cs avec builder.RootComponents.Add<Shared.App>("#app").
Structure minimale
<LgApp DefaultLayout="typeof(MainLayout)"
IsTabbed="true"
ShowHeader="true"
ShowSidebar="false"
ShowFooter="true">
<StartupTabs>
<LgStartupTab Link="Demo.Client.Pages.Index.Link()" />
</StartupTabs>
<FooterContent>
<MyFooterComponent />
</FooterContent>
<ChildContent>
<MenuConfiguration />
</ChildContent>
</LgApp>
MenuConfiguration est placé dans ChildContent afin que le layout dispose des éléments de menu à rendre dans les zones déclarées.
Zones pilotées par LgApp
| Paramètre | Rôle |
|---|---|
DefaultLayout | Type de layout Blazor utilisé par défaut lorsqu'une page n'en déclare pas. |
IsTabbed | Active le mode de navigation par onglets applicatifs. |
ShowHeader | Affiche le header supérieur avec le logo et le menu principal. |
ShowFooter | Affiche le footer inférieur. Son contenu est personnalisable avec FooterContent. |
ShowSidebar | Affiche une sidebar à gauche de l'application. |
La toolbar du header se configure dans MenuConfiguration.razor via le fragment Toolbar.
Onglets ouverts au démarrage
Ajoutez plusieurs LgStartupTab pour ouvrir plusieurs pages au lancement de l'application.
<LgApp IsTabbed="true" ShowHeader="true">
<StartupTabs>
<LgStartupTab Link="HomePage.Link()" Default="true" />
<LgStartupTab Link="DashboardPage.Link()" Closable="true" />
</StartupTabs>
<ChildContent>
<MenuConfiguration />
</ChildContent>
</LgApp>
LgStartupTab accepte notamment Link, Default, Closable et PolicyVisible. Utilisez PolicyVisible pour ouvrir un onglet de démarrage uniquement si la policy demandée est satisfaite.
Footer personnalisé
Le footer est rendu uniquement lorsque ShowFooter vaut true.
<LgApp ShowFooter="true">
<FooterContent>
<MyFooterComponent />
</FooterContent>
<ChildContent>
<MenuConfiguration />
</ChildContent>
</LgApp>
@inherits LgComponentBase
<LgLabel Text="#footerCopyright" />