Mode d'affichage par onglets
Lagoon peut afficher les pages en mode page simple ou en mode onglets applicatifs. Le mode onglets s'active dans App.razor avec IsTabbed="true".
Activer le mode onglets
<LgApp DefaultLayout="typeof(MainLayout)" IsTabbed="true" ShowHeader="true" ShowSidebar="false">
<StartupTabs>
<LgStartupTab Link="Demo.Client.Pages.Index.Link()" />
</StartupTabs>
<ChildContent>
<MenuConfiguration />
</ChildContent>
</LgApp>
Page d'accueil
La page d'accueil est définie par sa route racine.
@inherits LgPage
[Route(ROUTE)]
public partial class HomePage : LgPage
{
private const string ROUTE = "/";
public static LgPageLink Link()
{
return LgPageLink.Create(ROUTE, "#homeTitle", IconNames.Home);
}
}
Titre et icône de l'onglet
Pour une page Lagoon, centralisez le titre et l'icône dans la méthode statique Link().
[Route(ROUTE)]
public partial class CounterPage : LgPage
{
private const string ROUTE = "counter";
public static LgPageLink Link()
{
return LgPageLink.Create(ROUTE, "#menuCounter", IconNames.All.CalculatorFill);
}
}
L'onglet récupère alors le titre traduit et l'icône via le lien typé.
Ouvrir un onglet
Un lien vers une route correspondant à une page existante ouvre automatiquement l'onglet associé. En code, utilisez la navigation Lagoon plutôt qu'une URL en dur.
public partial class MyComponent : LgComponentBase
{
private void OpenCounter()
{
// Ouvre la page cible dans le mode de navigation courant de l'application.
App.NavigateTo(CounterPage.Link().Uri);
}
}
Onglets ouverts au lancement
StartupTabs permet de déclarer les pages ouvertes automatiquement au démarrage.
<LgApp DefaultLayout="typeof(MainLayout)" IsTabbed="true" ShowHeader="true" ShowSidebar="false">
<StartupTabs>
<LgStartupTab Link="Demo.Client.Pages.Index.Link()" Default="true" />
<LgStartupTab Link="DashboardPage.Link()" Closable="true" PolicyVisible="DashboardReader" />
</StartupTabs>
<ChildContent>
<MenuConfiguration />
</ChildContent>
</LgApp>
Rechargement de l'onglet actif
Le comportement de rechargement au clic sur l'onglet actif est piloté par TabReloadDisabled dans OnConfigureBehavior.
public class Main : LgCustomApplication
{
protected override void OnConfigureBehavior(ApplicationBehavior app)
{
// Désactive le rechargement du contenu lorsque l'utilisateur reclique sur l'onglet actif.
app.TabReloadDisabled = true;
}
}
Sauvegarder les onglets ouverts
Par défaut, les onglets ne sont pas sauvegardés. TabSavingMethod permet d'activer :
| Valeur | Effet |
|---|---|
TabSavingMethod.None | Ne sauvegarde pas les onglets. |
TabSavingMethod.Local | Sauvegarde les onglets dans le navigateur via IndexedDB. |
TabSavingMethod.Remote | Sauvegarde les onglets dans la base de données serveur. |
public class Main : LgCustomApplication
{
protected override void OnConfigureBehavior(ApplicationBehavior app)
{
// Restaure les onglets après rafraîchissement ou reconnexion.
app.TabSavingMethod = TabSavingMethod.Remote;
}
}
Fermer tous les onglets
TryCloseAllTabs() tente de fermer tous les onglets ouverts.
@inherits LgComponentBase
<LgButton Text="#closeAllTabs" OnClick="CloseAllTabsAsync" />
public partial class TabsActions : LgComponentBase
{
private Task CloseAllTabsAsync(ActionEventArgs args)
{
// Les onglets qui refusent la fermeture peuvent afficher leur confirmation.
App.TryCloseAllTabs();
return Task.CompletedTask;
}
}