Aller au contenu principal

LgCrudToolbarButton

LgCrudToolbarButton spécialise LgToolbarButton pour les menus de toolbar qui doivent proposer des actions secondaires de type renommer, enregistrer et supprimer à droite de l'entrée principale.

<LgCrudToolbarButton Text="Profil"
OnRename="OnRenameAsync"
OnSave="OnSaveAsync"
OnRemove="OnRemoveAsync" />
  • Espace de noms : Lagoon.UI.Components
  • Hérite de : LgToolbarButton → LgButton → LgAriaComponentBase → LgComponentBase
  • Interfaces : ILgComponentPolicies, IActionComponent, ILgFocusableComponent
  • Package NuGet : Lagoon.UI
Rendu spécialisé

Les boutons secondaires (OnRename, OnSave, OnRemove) ne sont rendus que lorsque le composant est placé dans un LgToolbarMenu et que le callback correspondant possède un gestionnaire.

Utilisation​

Démonstration​

Essayez ce composant dans le showcase Lagoon.

Entrée CRUD dans un menu​

LgCrudToolbarButton est prévu pour être placé dans un LgToolbarMenu. L'entrée principale reste cliquable, et les boutons secondaires sont affichés à droite uniquement pour les callbacks fournis.

ProfilesPage.razor
@inherits LgPage

<LgToolbar>
<LgToolbarGroup>
<LgToolbarMenu Text="#Profiles" IconName="@IconNames.All.PersonLinesFill">
<LgCrudToolbarButton Text="#DefaultProfile"
IconName="@IconNames.All.Person"
OnClick="OpenProfileAsync"
OnRename="RenameProfileAsync"
RenameButtonTooltip="#Rename"
RenameButtonAria="#RenameProfile"
OnSave="SaveProfileAsync"
OnSaveConfirmationMessage="#ConfirmSaveProfile"
SaveButtonTooltip="#Save"
SaveButtonAria="#SaveProfile"
OnRemove="RemoveProfileAsync"
OnRemoveConfirmationMessage="#ConfirmDeleteProfile"
RemoveButtonTooltip="#Delete"
RemoveButtonAria="#DeleteProfile" />
</LgToolbarMenu>
</LgToolbarGroup>
</LgToolbar>
ProfilesPage.razor.cs
public partial class ProfilesPage : LgPage
{
// Ouvre l'entrée principale du menu pour consulter le profil sélectionné.
private Task OpenProfileAsync(ActionEventArgs args)
{
return Task.CompletedTask;
}

// Lance le renommage ; le bouton secondaire n'est rendu que si ce callback est défini.
private Task RenameProfileAsync(ActionEventArgs args)
{
return Task.CompletedTask;
}

// Sauvegarde le profil après confirmation pour éviter une écriture involontaire.
private Task SaveProfileAsync(ActionEventArgs args)
{
return Task.CompletedTask;
}

// Supprime le profil après confirmation ; l'action est séparée de l'ouverture principale.
private Task RemoveProfileAsync(ActionEventArgs args)
{
return Task.CompletedTask;
}
}

Afficher seulement les actions disponibles​

Chaque bouton secondaire est conditionné par son EventCallback. Vous pouvez donc exposer uniquement les actions autorisées par le contexte métier.

ProfilesPage.razor
@inherits LgPage

<LgToolbarMenu Text="#Profiles">
<LgCrudToolbarButton Text="#ReadOnlyProfile"
IconName="@IconNames.All.Eye"
OnClick="OpenProfileAsync" />

<LgCrudToolbarButton Text="#EditableProfile"
IconName="@IconNames.Edit"
OnClick="OpenProfileAsync"
OnRename="RenameProfileAsync"
RenameButtonTooltip="#Rename"
RenameButtonAria="#RenameProfile"
OnSave="SaveProfileAsync"
SaveButtonTooltip="#Save"
SaveButtonAria="#SaveProfile" />
</LgToolbarMenu>
Rendu hors menu

Si LgCrudToolbarButton est placé directement dans une toolbar, il retombe sur le rendu de LgToolbarButton et n'affiche pas les actions secondaires. Utilisez-le dans LgToolbarMenu pour bénéficier de la colonne d'actions CRUD.

Combiner action principale et commande​

L'action principale hérite des capacités de LgToolbarButton : OnClick, CommandName, CommandArgument, Uri et Link. Les actions secondaires restent indépendantes.

ProfilesPage.razor
@inherits LgPage

<LgToolbar OnCommand="OnToolbarCommandAsync">
<LgToolbarGroup>
<LgToolbarMenu Text="#Profiles">
<LgCrudToolbarButton Text="#CurrentProfile"
CommandName="open-profile"
CommandArgument="@_profileId"
OnRemove="RemoveProfileAsync"
OnRemoveConfirmationMessage="#ConfirmDeleteProfile"
RemoveButtonTooltip="#Delete"
RemoveButtonAria="#DeleteProfile" />
</LgToolbarMenu>
</LgToolbarGroup>
</LgToolbar>
ProfilesPage.razor.cs
public partial class ProfilesPage : LgPage
{
// Identifiant du profil sélectionné, transmis par l'entrée principale via CommandArgument.
private int _profileId = 12;

// Centralise l'ouverture du profil sans impacter les boutons secondaires CRUD.
private Task OnToolbarCommandAsync(CommandEventArgs args)
{
if (args.CommandName == "open-profile")
{
args.Handled = true;
App.NavigateTo(ProfilePage.Link((int)args.CommandArgument).Uri);
}
return Task.CompletedTask;
}
}

Propriétés​

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

NomTypeDéfautDéclaré dansDescription
OnRemoveEventCallback<ActionEventArgs>—LgCrudToolbarButtonCallback du bouton secondaire de suppression. Le bouton est rendu uniquement si ce callback a un gestionnaire.
OnRemoveConfirmationMessagestringnullLgCrudToolbarButtonMessage de confirmation affiché avant l'action OnRemove.
OnRenameEventCallback<ActionEventArgs>—LgCrudToolbarButtonCallback du bouton secondaire de renommage. Le bouton est rendu uniquement si ce callback a un gestionnaire.
OnSaveEventCallback<ActionEventArgs>—LgCrudToolbarButtonCallback du bouton secondaire d'enregistrement. Le bouton est rendu uniquement si ce callback a un gestionnaire.
OnSaveConfirmationMessagestringnullLgCrudToolbarButtonMessage de confirmation affiché avant l'action OnSave.
RemoveButtonAriastringnullLgCrudToolbarButtonLibellé ARIA du bouton secondaire de suppression.
RemoveButtonTooltipstringnullLgCrudToolbarButtonBulle d'aide du bouton secondaire de suppression.
RenameButtonAriastringnullLgCrudToolbarButtonLibellé ARIA du bouton secondaire de renommage.
RenameButtonTooltipstringnullLgCrudToolbarButtonBulle d'aide du bouton secondaire de renommage.
SaveButtonAriastringnullLgCrudToolbarButtonLibellé ARIA du bouton secondaire d'enregistrement.
SaveButtonTooltipstringnullLgCrudToolbarButtonBulle d'aide du bouton secondaire d'enregistrement.
AdditionalAttributesIReadOnlyDictionary<string, object>nullLgButtonAttributs HTML additionnels appliqués à l'élément principal rendu.
AutoFocusboolfalseLgButtonDonne le focus au bouton principal lors du premier rendu.
ButtonSizeButtonSize?Toolbar.ButtonSize ou ButtonSize.MediumLgButtonTaille du bouton principal. LgToolbarButton.OnInitialized reprend la taille de la toolbar parente, sinon Medium.
ChildContentRenderFragmentnullLgButtonContenu personnalisé du bouton principal.
CommandArgumentobjectnullLgButtonArgument associé à la commande principale envoyée au gestionnaire.
CommandNamestringnullLgButtonNom de la commande principale envoyée au gestionnaire de commandes parent (ICommandListener).
ConfirmationMessagestringnullLgButtonMessage de confirmation affiché avant l'action principale. Incompatible avec CommandName et IsSubmit.
CssClassstringnullLgButtonClasses CSS additionnelles ajoutées à l'entrée principale.
DisabledboolfalseLgButtonDésactive l'entrée principale.
IconNamestringnullLgButtonIcône de l'entrée principale.
IsSubmitboolfalseLgButtonSi true, le bouton principal est de type submit et déclenche le LgEditForm parent.
KindButtonKindToolbar.ButtonKind ou ButtonKind.SecondaryLgButtonStyle de l'entrée principale. Le comportement par défaut est celui de LgToolbarButton.
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 l'entrée principale.
PolicyEditstringnullLgButtonPolicy requise pour activer (éditer) l'entrée principale.
PolicyVisiblestringnullLgButtonPolicy requise pour afficher l'entrée principale.
PreventDefaultboolfalseLgButtonAnnule le comportement par défaut de l'événement clic. Dans un menu, le rendu force true pour l'entrée principale.
PreventDoubleClickbooltrueLgButtonDésactive le bouton pendant l'exécution de l'action principale pour empêcher le double-clic.
ShortcutKeystringnullLgButtonCaractère du raccourci clavier de l'action principale. Associé à Ctrl, ou à Alt si préfixé par @.
StopPropagationbooltrueLgButtonStoppe la propagation de l'événement clic de l'action principale. Dans un menu, le rendu force true.
TargetstringnullLgButtonNom de la fenêtre du navigateur dans laquelle ouvrir l'Uri.
TextstringnullLgButtonLibellé de l'entrée principale.
TooltipstringnullLgButtonBulle d'aide de l'entrée principale.
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 sur l'entrée principale.
AriaLabelstringnullLgAriaComponentBaseValeur de l'attribut aria-label de l'entrée principale.
AriaLabelledBystringnullLgAriaComponentBaseValeur de l'attribut aria-labelledby de l'entrée principale.
Paramètres en cascade

LgCrudToolbarButton hérite des paramètres en cascade de LgToolbarButton : Toolbar (LgToolbar), ToolbarMenuParent (LgToolbarMenu), ainsi que les paramètres en cascade hérités de LgButton (ParentAuthorizeView, EditForm, ButtonSizeCascading, ParentCommandListener).

Événements​

ÉvénementTypeDescription
OnClickEventCallback<ActionEventArgs>Action principale héritée de LgButton.
OnRenameEventCallback<ActionEventArgs>Action du bouton secondaire de renommage.
OnSaveEventCallback<ActionEventArgs>Action du bouton secondaire d'enregistrement.
OnRemoveEventCallback<ActionEventArgs>Action du bouton secondaire de suppression.

Énumérations associées​

ButtonKind​

Style visuel de l'entrée principale.

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é​

  • Renseignez SaveButtonAria, RemoveButtonAria et RenameButtonAria lorsque les boutons secondaires sont affichés.
  • L'entrée principale conserve role="menuitem" lorsqu'elle est dans un menu.
  • Les boutons secondaires utilisent des icônes (PencilFill, Save2Fill, IconNames.Delete) ; leurs tooltips et libellés ARIA doivent donc être explicites.

Composants liés​