Aller au contenu principal

LgAccordion

LgAccordion regroupe plusieurs panneaux LgAccordionPane et garantit qu'un seul panneau reste ouvert à la fois. Chaque pane est un LgFrame spécialisé, repliable et fermé par défaut.

<LgAccordion>
<LgAccordionPane Title="Section 1">
Contenu
</LgAccordionPane>
</LgAccordion>
  • Espace de noms : Lagoon.UI.Components
  • Hérite de : LgComponentBase
  • Package NuGet : Lagoon.UI
Pane spécialisé

LgAccordionPane hérite de LgFrame, avec Collapsable = true et DefaultCollapsed = true. Le conteneur réaffecte aussi OnToggle pour refermer automatiquement les autres panneaux.

Utilisation​

Démonstration​

Essayez ce composant dans le showcase Lagoon.

Accordéon simple à trois panneaux​

Chaque LgAccordionPane est un LgFrame repliable et fermé par défaut. Le conteneur garantit qu'un seul panneau est ouvert à la fois.

CustomerDetailsPage.razor
@inherits LgPage

<LgAccordion CssClass="customer-accordion">
<LgAccordionPane Title="#CustomerContactTitle"
IconName="@IconNames.All.People">
<HeaderContent>
<span>@("#CustomerContactHeader".Translate())</span>
</HeaderContent>
<ChildContent>
<p>@_customerContact</p>
</ChildContent>
</LgAccordionPane>

<LgAccordionPane Title="#DeliveryAddressTitle"
Kind="Kind.Secondary">
<ChildContent>
<p>@_deliveryAddress</p>
</ChildContent>
</LgAccordionPane>

<LgAccordionPane Title="#BillingAddressTitle"
Kind="Kind.Default">
<ChildContent>
<p>@_billingAddress</p>
</ChildContent>
</LgAccordionPane>
</LgAccordion>
CustomerDetailsPage.razor.cs
public partial class CustomerDetailsPage : LgPage
{
// Informations affichées dans le premier panneau de l'accordéon.
private string _customerContact = "Marie Martin — marie.martin@example.test";

// Adresse métier affichée dans le panneau de livraison.
private string _deliveryAddress = "12 rue des Peupliers, 44000 Nantes";

// Adresse métier affichée dans le panneau de facturation.
private string _billingAddress = "18 avenue du Port, 44000 Nantes";
}

Panneau enrichi comme un frame​

Comme LgAccordionPane hérite de LgFrame, vous pouvez réutiliser Toolbar, SummaryContent, FooterContent, HeaderContent, Kind, IconName et OnCommand. Évitez en revanche de piloter OnToggle dans un pane contenu par LgAccordion : le conteneur l'utilise pour fermer les autres panneaux.

ContractAccordionPage.razor
@inherits LgPage

<LgAccordion>
<LgAccordionPane Title="#ContractDocumentsTitle"
IconName="@IconNames.All.Folder"
Kind="Kind.Info"
OnCommand="OnDocumentsCommandAsync">
<Toolbar>
<LgToolbarButton Text="#ExportDocuments"
IconName="@IconNames.All.Pdf"
CommandName="export-documents" />
</Toolbar>
<ChildContent>
<p>@("#ContractDocumentsContent".Translate())</p>
</ChildContent>
<SummaryContent>
<p>@("#ContractDocumentsSummary".Translate()) @_documentCount</p>
</SummaryContent>
<FooterContent>
<p>@("#ContractDocumentsFooter".Translate())</p>
</FooterContent>
</LgAccordionPane>

<LgAccordionPane Title="#ContractHistoryTitle"
IconName="@IconNames.All.ClockHistory">
<ChildContent>
<p>@("#ContractHistoryContent".Translate())</p>
</ChildContent>
</LgAccordionPane>
</LgAccordion>
ContractAccordionPage.razor.cs
public partial class ContractAccordionPage : LgPage
{
// Compteur affiché dans le résumé lorsque le panneau documents est replié.
private int _documentCount = 7;

// Centralise les commandes de la toolbar du panneau documents.
private Task OnDocumentsCommandAsync(CommandEventArgs args)
{
if (args.CommandName == "export-documents")
{
args.Handled = true;
}

return Task.CompletedTask;
}
}

Points d'attention​

  • LgAccordion n'expose pas de propriété publique pour sélectionner directement le panneau actif.
  • Les panes sont initialisés avec Collapsable="true" et DefaultCollapsed="true".
  • Les propriétés de frame restent disponibles sur chaque pane, mais l'ouverture exclusive est gérée par le conteneur.

Propriétés​

Propriétés de LgAccordion​

NomTypeDéfautDéclaré dansDescription
ChildContentRenderFragmentnullLgAccordionContenu du conteneur, généralement une liste de LgAccordionPane.
CssClassstringnullLgAccordionClasses CSS additionnelles appliquées au conteneur de l'accordéon.

Propriétés de LgAccordionPane​

NomTypeDéfautDéclaré dansDescription
ChildContentRenderFragmentnullLgFrameContenu principal du panneau.
FooterContentRenderFragmentnullLgFrameContenu du pied de page du panneau.
HeaderContentRenderFragmentnullLgFrameContenu libre affiché dans l'en-tête du panneau.
SummaryContentRenderFragmentnullLgFrameRésumé affiché lorsque le panneau est replié.
TitleContentRenderFragmentnullLgFrameTitre personnalisé en markup.
ToolbarRenderFragmentnullLgFrameToolbar rendue dans l'en-tête du panneau.
AdditionalAttributesIReadOnlyDictionary<string, object>nullLgFrameAttributs HTML additionnels appliqués à la racine du panneau.
ButtonSizeButtonSize?nullLgFrameTaille des boutons de toolbar.
ChildCssClassstringnullLgFrameClasses CSS appliquées au contenu principal.
CollapsablebooltrueLgFrameParamètre hérité ; la valeur par défaut est fournie par le constructeur du pane.
CollapsedboolfalseLgFrameÉtat replié courant. Au premier rendu, le pane démarre fermé via DefaultCollapsed.
CollapsedChangedEventCallback<bool>—LgFrameCallback de two-way binding pour Collapsed.
CssClassstringaccordion-itemLgFrameClasse CSS appliquée au pane. LgAccordionPane.OnInitialized la fixe à accordion-item.
DefaultCollapsedbool?trueLgFrameParamètre hérité ; la valeur par défaut appliquée à Collapsed est fournie par le constructeur du pane.
HeaderCssClassstringnullLgFrameClasses CSS de l'en-tête du pane.
IconNamestringnullLgFrameIcône affichée devant le titre du panneau.
KindKindKind.PrimaryLgFrameThème visuel du pane.
OnCommandEventCallback<CommandEventArgs>—LgFrameRéception des commandes bubbled depuis le contenu du pane.
OnToggleEventCallback<ToggleFrameEventArgs>—LgFrameRéaffecté par LgAccordion pour fermer automatiquement les autres panes.
ShowHeaderbooltrueLgFrameAffiche ou masque l'en-tête du pane.
TitlestringnullLgFrameTitre texte du panneau.
AriaLabelstringnullLgAriaComponentBaseValeur de l'attribut aria-label.
AriaLabelledBystringnullLgAriaComponentBaseValeur de l'attribut aria-labelledby.

Événements​

LgAccordion n'expose pas d'événement public propre. LgAccordionPane reprend les callbacks de LgFrame.

ÉvénementTypeDescription
CollapsedChangedEventCallback<bool>Callback de binding pour suivre l'état replié d'un pane.
OnCommandEventCallback<CommandEventArgs>Reçoit les commandes bubbled par les composants enfants du pane.
OnToggleEventCallback<ToggleFrameEventArgs>Utilisé en interne par LgAccordion pour imposer l'ouverture exclusive d'un seul pane à la fois.

Énumérations associées​

Les énumérations ci-dessous concernent les paramètres hérités de LgFrame exposés par LgAccordionPane.

Kind​

Kind contrôle le thème visuel de la propriété héritée Kind du pane. Consultez le tableau complet dans LgFrame (valeur par défaut : Kind.Primary).

ButtonSize​

ButtonSize contrôle la propriété héritée ButtonSize, utilisée pour dimensionner les boutons de toolbar du pane.

ValeurDescription
MediumTaille standard.
SmallTaille réduite (valeur par défaut de la configuration Lagoon standard lorsque ButtonSize reste null).
LargeGrande taille.

Composants liés​

  • LgFrame — composant de base dont LgAccordionPane hérite.
  • LgFilterFrame — autre variante de frame spécialisée.
  • LgSplitContainer — disposition utile pour juxtaposer un accordéon et une zone de travail.