Aller au contenu principal

LgToolbarButton

LgToolbarButton est la variante de LgButton adaptée aux barres d'outils Lagoon. Placé directement dans une toolbar, il se rend comme un bouton ; placé dans un LgToolbarMenu, il se rend comme un élément de menu.

<LgToolbarButton Text="Item 1" IconName="@IconNames.All.GearFill" />
  • Espace de noms : Lagoon.UI.Components
  • Hérite de : LgButton → LgAriaComponentBase → LgComponentBase
  • Interfaces : ILgComponentPolicies, IActionComponent, ILgFocusableComponent
  • Package NuGet : Lagoon.UI
Comportement dans un menu

Lorsque le bouton est placé dans LgToolbarMenu, le rendu devient un lien de menu (role="menuitem") et les attributs de clic sont forcés avec preventDefault et stopPropagation.

Utilisation​

Démonstration​

Essayez ce composant dans le showcase Lagoon.

Bouton dans une toolbar​

Placé dans un LgToolbarGroup, LgToolbarButton se comporte comme un LgButton adapté à la toolbar. Il récupère la taille et le style par défaut de la LgToolbar parente, sauf si ButtonSize ou Kind sont renseignés sur le bouton.

OrdersPage.razor
@inherits LgPage

<LgToolbar ButtonKind="ButtonKind.Secondary" ButtonSize="ButtonSize.Small">
<LgToolbarGroup>
<LgToolbarButton Text="#Refresh" IconName="@IconNames.All.ArrowRepeat" OnClick="RefreshAsync" />
<LgToolbarButton Text="#Save" IconName="@IconNames.Save" Kind="ButtonKind.Primary" OnClick="SaveAsync" />
<LgToolbarButton Text="#Delete"
IconName="@IconNames.Delete"
Kind="ButtonKind.Error"
ConfirmationMessage="#ConfirmDelete"
OnClick="DeleteAsync" />
</LgToolbarGroup>
</LgToolbar>
OrdersPage.razor.cs
public partial class OrdersPage : LgPage
{
// Recharge les données depuis la toolbar sans quitter la page courante.
private Task RefreshAsync(ActionEventArgs args)
{
return Task.CompletedTask;
}

// Sauvegarde l'élément courant ; le bouton principal force ici le style primaire.
private Task SaveAsync(ActionEventArgs args)
{
return Task.CompletedTask;
}

// Supprime l'élément après confirmation utilisateur pour éviter les suppressions accidentelles.
private Task DeleteAsync(ActionEventArgs args)
{
return Task.CompletedTask;
}
}

Bouton rendu dans un menu​

Dans un LgToolbarMenu, le même composant est rendu en entrée de menu (role="menuitem"). Le rendu force preventDefault et stopPropagation pour garder le comportement du menu déroulant.

OrdersPage.razor
@inherits LgPage

<LgToolbar>
<LgToolbarGroup>
<LgToolbarMenu Text="#MoreActions" IconName="@IconNames.All.GearFill">
<LgToolbarButton Text="#Duplicate" IconName="@IconNames.All.Files" OnClick="DuplicateAsync" />
<LgToolbarButton Text="#Archive" IconName="@IconNames.All.Archive" CommandName="archive" />
<LgToolbarMenuItemSeparator />
<LgToolbarButton Text="#Delete" IconName="@IconNames.Delete" Kind="ButtonKind.Error" OnClick="DeleteAsync" />
</LgToolbarMenu>
</LgToolbarGroup>
</LgToolbar>

Link reprend l'URI, le titre et l'icône d'un LgPageLink. C'est le mode conseillé pour naviguer vers une page Lagoon sans dupliquer la route.

OrdersPage.razor
@inherits LgPage

<LgToolbar>
<LgToolbarGroup>
<LgToolbarButton Link="@CustomersPage.Link()" />
<LgToolbarButton Link="@ReportsPage.Link()" Target="_blank" Text="#OpenReportInNewTab" />
</LgToolbarGroup>
</LgToolbar>
Priorité des valeurs

Si Text ou IconName sont fournis sur le bouton, ils remplacent les valeurs issues de Link. L'URI vient de Uri si elle est renseignée, sinon de Link.Uri.

Commande relayée à la toolbar​

Utilisez CommandName pour éviter de déclarer un handler sur chaque bouton. CommandArgument peut transporter l'identifiant métier ou le filtre courant.

OrdersPage.razor
@inherits LgPage

<LgToolbar OnCommand="OnToolbarCommandAsync">
<LgToolbarGroup>
<LgToolbarButton Text="#Open" CommandName="open" CommandArgument="@_selectedOrderId" />
<LgToolbarButton Text="#Export" CommandName="export" ShortcutKey="e" Tooltip="#ExportShortcut" />
</LgToolbarGroup>
</LgToolbar>
OrdersPage.razor.cs
public partial class OrdersPage : LgPage
{
// Identifiant de la ligne courante transmis par CommandArgument aux actions centralisées.
private int _selectedOrderId = 42;

// Traite les commandes émises par les boutons et marque les commandes consommées.
private Task OnToolbarCommandAsync(CommandEventArgs args)
{
if (args.CommandName == "open")
{
args.Handled = true;
App.NavigateTo(OrderDetailPage.Link((int)args.CommandArgument).Uri);
}
return Task.CompletedTask;
}
}
Combinaisons à éviter

Comme pour LgButton, ConfirmationMessage ne doit pas être combiné avec CommandName ni avec IsSubmit. Pour une action confirmée, utilisez plutôt OnClick.

Propriétés​

Toutes les propriétés [Parameter] du composant, y compris celles héritées.

NomTypeDéfautDéclaré dansDescription
AdditionalAttributesIReadOnlyDictionary<string, object>nullLgButtonAttributs HTML additionnels appliqués à l'élément rendu (capture des valeurs non mappées).
AutoFocusboolfalseLgButtonDonne le focus au bouton lors du premier rendu.
ButtonSizeButtonSize?Toolbar.ButtonSize ou ButtonSize.MediumLgButtonTaille du bouton. LgToolbarButton.OnInitialized reprend la taille de la toolbar parente, sinon Medium.
ChildContentRenderFragmentnullLgButtonContenu personnalisé du bouton.
CommandArgumentobjectnullLgButtonArgument associé à la commande envoyée au gestionnaire. Utilisez des types primitifs ou string pour optimiser le rendu.
CommandNamestringnullLgButtonNom de la commande envoyée au gestionnaire de commandes parent (ICommandListener).
ConfirmationMessagestringnullLgButtonMessage de confirmation affiché avant l'action. Incompatible avec CommandName et IsSubmit.
CssClassstringnullLgButtonClasses CSS additionnelles. Dans un menu, elles sont ajoutées à l'élément dropdown-item d-flex.
DisabledboolfalseLgButtonDésactive le bouton.
IconNamestringnullLgButtonIcône affichée. S'utilise via IconName="@IconNames.All.MyIcon".
IsSubmitboolfalseLgButtonSi true, le bouton est de type submit et déclenche le LgEditForm parent.
KindButtonKindToolbar.ButtonKind ou ButtonKind.SecondaryLgButtonStyle du bouton. Le constructeur initialise une valeur sentinelle, puis OnInitialized reprend la valeur de la toolbar ou Secondary.
LinkLgPageLinknullLgButtonInformations de lien vers une page. Le Text et l'IconName du lien sont repris s'ils ne sont pas définis.
OnClickEventCallback<ActionEventArgs>—LgButtonCallback déclenché au clic sur le bouton.
PolicyEditstringnullLgButtonPolicy requise pour activer (éditer) le bouton.
PolicyVisiblestringnullLgButtonPolicy requise pour afficher le bouton.
PreventDefaultboolfalseLgButtonAnnule le comportement par défaut de l'événement clic (@onclick:preventDefault). Dans un menu, le rendu force true.
PreventDoubleClickbooltrueLgButtonDésactive le bouton pendant l'exécution de l'action pour empêcher le double-clic.
ShortcutKeystringnullLgButtonCaractère du raccourci clavier. Associé à Ctrl, ou à Alt si préfixé par @.
StopPropagationbooltrueLgButtonStoppe la propagation de l'événement clic (@onclick:stopPropagation). Dans un menu, le rendu force true.
TargetstringnullLgButtonNom de la fenêtre du navigateur dans laquelle ouvrir l'Uri.
TextstringnullLgButtonLibellé du bouton ou de l'entrée de menu.
TooltipstringnullLgButtonBulle d'aide.
TooltipIsHtmlboolfalseLgButtonIndique si le contenu du Tooltip est au format HTML (sinon texte brut).
TooltipPositionTooltipPositionTooltipPosition.BottomLgButtonPosition de la bulle d'aide. Le constructeur de LgToolbarButton définit Bottom.
UristringnullLgButtonURI / route à ouvrir au clic. Dans un menu, l'attribut href vaut # si l'URI est vide.
AriaLabelstringnullLgAriaComponentBaseValeur de l'attribut aria-label (traduite par GetTranslatedAriaLabel).
AriaLabelledBystringnullLgAriaComponentBaseValeur de l'attribut aria-labelledby.
Paramètres en cascade

LgToolbarButton consomme Toolbar (LgToolbar) pour récupérer les valeurs par défaut, ToolbarMenuParent (LgToolbarMenu) pour adapter son rendu en menu, et les paramètres en cascade hérités de LgButton : ParentAuthorizeView, EditForm, ButtonSizeCascading et ParentCommandListener.

Événements​

ÉvénementTypeDescription
OnClickEventCallback<ActionEventArgs>Déclenché lors du clic (ou du raccourci clavier). ActionEventArgs expose notamment un CancellationToken lorsque l'action est exécutée dans un WaitingContext.

Énumérations associées​

ButtonKind​

Style visuel du bouton.

ValeurDescription
PrimaryStyle principal.
SecondaryStyle secondaire (valeur par défaut hors toolbar personnalisée).
SuccessStyle « succès ».
ErrorStyle « erreur » (danger).
WarningStyle « avertissement ».
InfoStyle « information ».
LinkApparence de lien.
GhostStyle « ghost » (fond transparent).
CustomStyle personnalisé (aucune classe de variante imposée).

ButtonSize​

ValeurDescription
MediumTaille standard (valeur par défaut hors toolbar personnalisée).
SmallTaille réduite.
LargeGrande taille.

TooltipPosition​

ValeurDescription
NonePosition indéfinie.
TopAu-dessus.
RightÀ droite.
BottomEn dessous (valeur définie par LgToolbarButton).
LeftÀ gauche.

Accessibilité​

  • Dans un menu, le composant rend role="menuitem" et conserve tabindex="0".
  • Renseignez AriaLabel ou AriaLabelledBy lorsque le bouton n'affiche qu'une icône.
  • Text reste le libellé le plus simple pour rendre l'action compréhensible aux utilisateurs et aux technologies d'assistance.

Composants liés​