Aller au contenu principal

LgToggle

LgToggle est un interrupteur lié à une valeur booléenne. Il affiche un texte différent pour chaque état (TextOn / TextOff) et un libellé optionnel à gauche ou à droite du bouton.

<LgToggle Text="#Notifications" @bind-Value="_model.NotificationsEnabled" />
  • Espace de noms : Lagoon.UI.Components
  • Hérite de : LgInputBase<bool> → LgAriaComponentBase → LgComponentBase
  • Package NuGet : Lagoon.UI

Utilisation​

Démonstration​

Essayez ce composant dans le showcase Lagoon.

Interrupteur simple​

Text est le libellé affiché à côté de l'interrupteur ; TextPosition le place à gauche (par défaut) ou à droite.

SettingsPage.razor
<LgToggle Text="#Notifications"
TextPosition="ToggleTextPosition.Right"
@bind-Value="_model.NotificationsEnabled" />
SettingsPage.razor.cs
public partial class SettingsPage : LgPage
{
private readonly SettingsVm _model = new();

private sealed class SettingsVm
{
public bool NotificationsEnabled { get; set; }
}
}

Textes des états​

TextOn et TextOff sont affichés dans l'interrupteur selon l'état. En mode lecture seule (ReadOnly), c'est le texte de l'état courant qui est rendu.

PublicationPage.razor
<LgToggle Text="#Visibility"
TextOn="#Published"
TextOff="#DraftState"
@bind-Value="_model.IsPublished" />
PublicationPage.razor.cs
public partial class PublicationPage : LgPage
{
private readonly PublicationVm _model = new();

private sealed class PublicationVm
{
public bool IsPublished { get; set; }
}
}

Annuler ou confirmer le basculement​

OnChangingAsync est appelé avant le changement et permet de l'annuler (args.Cancel) ; args.Item restitue l'objet passé au paramètre Item, pratique quand l'interrupteur est répété dans une liste. ConfirmationMessage (hérité) affiche une demande de confirmation avant le basculement.

UserListPage.razor
@foreach (UserVm user in _users)
{
<LgToggle Text="@user.Name"
Item="user"
ConfirmationMessage="#ConfirmToggleUser"
OnChangingAsync="OnActiveChangingAsync"
@bind-Value="user.IsActive" />
}
UserListPage.razor.cs
public partial class UserListPage : LgPage
{
// Utilisateurs affichés : chaque interrupteur porte son utilisateur via Item.
private readonly List<UserVm> _users = new();

// Appelé avant le basculement : interdit de désactiver le dernier administrateur.
private Task OnActiveChangingAsync(ChangingItemEventArgs<bool> args)
{
if (args.Item is UserVm user && user.IsLastAdmin && !args.NewValue)
{
args.Cancel = true;
ShowWarning("#CannotDisableLastAdmin");
}
return Task.CompletedTask;
}

private sealed class UserVm
{
public string Name { get; set; }
public bool IsActive { get; set; }
public bool IsLastAdmin { get; set; }
}
}

Propriétés​

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

NomTypeDéfautDéclaré dansDescription
ItemobjectnullLgToggleDonnée associée au contrôle, restituée dans ChangingItemEventArgs.Item.
OnChangingAsyncFunc<ChangingItemEventArgs<bool>, Task>nullLgToggleCallback appelé avant le changement de valeur ; le changement peut y être annulé.
TextstringnullLgToggleLibellé affiché à côté de l'interrupteur.
TextOffstringnullLgToggleTexte affiché dans l'interrupteur à l'état « off ».
TextOnstringnullLgToggleTexte affiché dans l'interrupteur à l'état « on ».
TextPositionToggleTextPositionLeftLgTogglePosition du libellé Text par rapport à l'interrupteur.
AdditionalAttributesIReadOnlyDictionary<string, object>nullLgInputBaseAttributs HTML additionnels appliqués à l'élément rendu.
AutoFocusboolfalseLgInputBaseDonne le focus au contrôle lors du premier rendu.
ConfirmationMessagestringnullLgInputBaseMessage de confirmation affiché avant d'appliquer le basculement.
ContainerIInputContainer<bool>nullLgInputBaseUsage interne : rattache une cellule de GridView au contrôle.
CssClassstringnullLgInputBaseClasses CSS additionnelles.
DisabledboolfalseLgInputBaseDésactive le contrôle.
DisplayNamestringnullLgInputBaseNom du champ utilisé dans les messages d'erreur.
HideValidationMessageboolfalseLgInputBaseMasque le message de validation sous le contrôle.
LabelstringnullLgInputBaseLibellé du champ (zone de libellé standard des champs de formulaire).
LabelContentRenderFragmentnullLgInputBaseContenu personnalisé de la zone de libellé.
OnChangeEventCallback<ChangeEventArgs>—LgInputBaseCallback appelé après le changement de valeur.
OnResetEventCallback<ChangeEventArgs>—LgInputBaseCallback appelé quand le contrôle est réinitialisé.
PolicyEditstringnullLgInputBasePolicy requise pour modifier le contrôle.
PolicyVisiblestringnullLgInputBasePolicy requise pour afficher le contrôle.
ReadOnlyboolfalseLgInputBaseAffiche le texte de l'état courant en lecture seule.
Requiredbool?nullLgInputBaseChamp obligatoire. Si null, déduit de l'attribut [Required] de la propriété liée.
ResetButtonbool?nullLgInputBaseAffiche le bouton d'effacement. Si null, la configuration de comportement de l'application s'applique.
ResetTextstringnullLgInputBaseTexte du bouton d'effacement.
ResetTextAriaLabelstringnullLgInputBaseLibellé accessible (aria-label) du bouton d'effacement.
TooltipstringnullLgInputBaseBulle d'aide (appliquée au libellé Text).
TooltipIsHtmlboolfalseLgInputBaseIndique si le contenu du Tooltip est au format HTML (sinon texte brut).
ValueboolfalseLgInputBaseValeur liée (@bind-Value).
ValueChangedEventCallback<bool>—LgInputBaseCallback de mise à jour de la valeur liée.
ValueExpressionExpression<Func<bool>>—LgInputBaseExpression identifiant la propriété liée.
AriaLabelstringnullLgAriaComponentBaseValeur de l'attribut aria-label.
AriaLabelledBystringnullLgAriaComponentBaseValeur de l'attribut aria-labelledby.
Paramètres en cascade

LgToggle consomme aussi des paramètres fournis automatiquement par des composants ancêtres (vous n'avez pas à les définir) : ParentAuthorizeView (LgAuthorizeView) et le contexte d'édition d'un LgEditForm parent.

Événements​

ÉvénementTypeDescription
OnChangingAsyncFunc<ChangingItemEventArgs<bool>, Task>Avant le basculement ; args.Cancel = true l'annule, args.Item restitue la donnée associée.
OnChangeEventCallback<ChangeEventArgs>Après le basculement.
OnResetEventCallback<ChangeEventArgs>À la réinitialisation du contrôle.

Énumérations associées​

ToggleTextPosition​

Position du libellé Text par rapport à l'interrupteur.

ValeurDescription
LeftLibellé à gauche (valeur par défaut).
RightLibellé à droite.

Bonnes pratiques / accessibilité​

  • Utilisez LgToggle pour une action à effet immédiat (activer/désactiver) ; pour une case à cocher dans un formulaire soumis, préférez LgCheckBox.
  • Renseignez AriaLabel si aucun Text n'est fourni, afin de donner un libellé accessible à l'interrupteur.
Référence complète

Tous les paramètres (hérités compris) : Référence API — LgToggle.

Composants liés​