Aller au contenu principal

LgSlider

LgSlider<T> est le composant d’entrée Lagoon qui permet de choisir une valeur unique sur une échelle bornée. Utilisez-le lorsque l’utilisateur doit régler une quantité, un niveau ou une valeur ordonnée sans saisir un nombre au clavier. Pour sélectionner deux bornes, utilisez LgSliderRange<T>.

<LgSlider Min="0" Max="100" Step="5" @bind-Value="_volume" Label="#Volume" />
  • Espace de noms : Lagoon.UI.Components
  • Hérite de : LgSliderBase<T, T> → LgInputBase<T> → LgAriaComponentBase → LgComponentBase
  • Interfaces : ILgComponentPolicies, IInputBusy, ILgFocusableComponent
  • Package NuGet : Lagoon.UI

Utilisation​

Démonstration​

Essayez ce composant dans le showcase Lagoon.

Curseur simple​

Définissez Min, Max et Step pour construire l’échelle. Le binding two-way se fait avec @bind-Value.

VolumePage.razor
<LgSlider Min="0"
Max="100"
Step="5"
@bind-Value="_volume"
Label="#Volume" />
VolumePage.razor.cs
public partial class VolumePage : LgPage
{
// Valeur courante sélectionnée sur le curseur.
private int _volume = 50;
}

Marques, libellés et pas​

ShowScale affiche ou masque l’échelle. ShowScaleLabels contrôle les libellés sous les marques et ScaleLabelStep espace ces libellés.

ScorePage.razor
<LgSlider Min="_minScore"
Max="_maxScore"
Step="_scoreStep"
ScaleLabelStep="_labelStep"
ShowScale="true"
ShowScaleLabels="true"
@bind-Value="_score"
Label="#Score" />
ScorePage.razor.cs
public partial class ScorePage : LgPage
{
// Borne basse du score autorisé.
private int _minScore = 0;

// Borne haute du score autorisé.
private int _maxScore = 20;

// Incrément utilisé entre deux positions possibles.
private int _scoreStep = 1;

// Intervalle d’affichage des libellés de l’échelle.
private int _labelStep = 5;

// Score choisi par l’utilisateur.
private int _score = 10;
}

Formatage et info-bulles​

DisplayFormat formate les valeurs numériques affichées par les libellés, le rendu en lecture seule et les info-bulles. Si DisplayFormat est absent, il est initialisé à partir de Decimals.

ThresholdPage.razor
<LgSlider Min="0m"
Max="100m"
Step="0.5m"
Decimals="1"
DisplayFormat="N1"
ShowTooltips="true"
@bind-Value="_threshold"
Label="#Threshold" />
ThresholdPage.razor.cs
public partial class ThresholdPage : LgPage
{
// Seuil décimal réglé avec un affichage à une décimale.
private decimal _threshold = 12.5m;
}

Valeurs discrètes et énumérations​

Values limite le curseur à une liste explicite. Quand T est une énumération, les valeurs affichées utilisent le nom traduit défini par les attributs d’affichage.

RiskPage.razor
<LgSlider T="RiskLevel"
Min="RiskLevel.Low"
Max="RiskLevel.High"
Values="_riskLevels"
@bind-Value="_riskLevel"
Label="#RiskLevel" />
RiskPage.razor.cs
using System.ComponentModel.DataAnnotations;

public partial class RiskPage : LgPage
{
// Liste ordonnée des niveaux disponibles sur le curseur.
private readonly List<RiskLevel> _riskLevels = new()
{
RiskLevel.Low,
RiskLevel.Medium,
RiskLevel.High,
};

// Niveau de risque actuellement sélectionné.
private RiskLevel _riskLevel = RiskLevel.Medium;

private enum RiskLevel
{
[Display(Name = "#RiskLow")]
Low,

[Display(Name = "#RiskMedium")]
Medium,

[Display(Name = "#RiskHigh")]
High,
}
}

Désactivation et lecture seule​

Disabled garde le rendu interactif visible mais bloque la modification. ReadOnly remplace le curseur par le contenu de lecture seule.

LockedVolumePage.razor
<LgSlider Min="0"
Max="100"
Step="10"
Disabled="_isLocked"
ReadOnly="_isReadOnly"
@bind-Value="_volume"
Label="#Volume" />
LockedVolumePage.razor.cs
public partial class LockedVolumePage : LgPage
{
// Valeur affichée par le curseur.
private int _volume = 40;

// Verrouille temporairement la saisie sans changer le rendu.
private bool _isLocked;

// Affiche la valeur sous forme non éditable.
private bool _isReadOnly;
}

Intercepter un changement​

OnChangingAsync est appelé avant l’application de la nouvelle valeur et peut l’annuler. OnChange est déclenché après la modification effective.

ConfirmedVolumePage.razor
<LgSlider Min="0"
Max="100"
Step="5"
ConfirmationMessage="#ConfirmVolumeChange"
OnChangingAsync="ValidateVolumeChangeAsync"
OnChange="NotifyVolumeChangedAsync"
@bind-Value="_volume"
Label="#Volume" />
ConfirmedVolumePage.razor.cs
public partial class ConfirmedVolumePage : LgPage
{
// Valeur en cours avant validation métier.
private int _volume = 50;

// Annule les changements trop importants pour demander un réglage progressif.
private Task ValidateVolumeChangeAsync(ChangingEventArgs<int> args)
{
if (Math.Abs(args.NewValue - args.OldValue) > 30)
{
args.Cancel = true;
ShowWarning("#VolumeChangeTooLarge");
}
return Task.CompletedTask;
}

// Informe l’utilisateur lorsque la nouvelle valeur est appliquée.
private Task NotifyVolumeChangedAsync(ChangeEventArgs args)
{
ShowSuccess("#VolumeChanged");
return Task.CompletedTask;
}
}

Propriétés​

NomTypeDéfautDéclaré dansDescription
AdditionalAttributesIReadOnlyDictionary<string, object>nullLgInputBase<T>Attributs HTML additionnels capturés et appliqués au conteneur du composant.
AriaLabelstringnullLgAriaComponentBaseLibellé ARIA traduit utilisé quand aucun libellé visible ne décrit suffisamment le curseur.
AriaLabelledBystringnullLgAriaComponentBaseIdentifiant de l’élément qui labellise le curseur.
AutoFocusboolfalseLgInputBase<T>Place le focus sur le curseur au premier rendu.
ConfirmationMessagestringnullLgInputBase<T>Message traduit demandé avant d’appliquer une nouvelle valeur.
CssClassstringnullLgInputBase<T>Classes CSS additionnelles ajoutées au groupe de saisie.
CursorContentRenderFragmentrendu interneLgSliderBase<T, T>Fragment avancé permettant de remplacer le rendu du curseur.
Decimalsint?null → 2 pour décimal/réel, sinon 0LgSliderBase<T, T>Nombre de décimales utilisé pour initialiser le format numérique par défaut.
DisabledboolfalseLgInputBase<T>Désactive la saisie sans passer en lecture seule.
DisplayFormatstring"N{Decimals}"LgSliderBase<T, T>Format appliqué aux valeurs numériques affichées.
DisplayNamestringnullLgInputBase<T>Nom du champ utilisé dans certains messages de validation.
HideValidationMessageboolfalseLgInputBase<T>Masque les messages de validation inline pour ce champ.
IsRangeboolfalseLgSliderBase<T, T>Indicateur technique du mode plage ; laissez false pour LgSlider<T>.
LabelstringnullLgInputBase<T>Texte traduit du libellé associé au curseur.
LabelContentRenderFragmentnullLgInputBase<T>Fragment permettant de personnaliser le contenu du libellé.
MaxTdefault(T)LgSliderBase<T, T>Valeur maximale de l’échelle.
MinTdefault(T)LgSliderBase<T, T>Valeur minimale de l’échelle.
OnChangeEventCallback<ChangeEventArgs>non assignéLgInputBase<T>Callback déclenché après l’application d’une nouvelle valeur.
OnChangingAsyncFunc<ChangingEventArgs<T>, Task>nullLgSliderBase<T, T>Callback appelé avant l’application de la valeur ; il peut annuler le changement.
OnResetEventCallback<ChangeEventArgs>non assignéLgInputBase<T>Callback déclenché après l’utilisation du bouton de réinitialisation.
PolicyEditstringnullLgInputBase<T>Policy requise pour autoriser l’édition du curseur.
PolicyVisiblestringnullLgInputBase<T>Policy requise pour afficher le curseur.
ReadOnlyboolfalseLgInputBase<T>Affiche la valeur en mode non éditable.
ReadonlyContentRenderFragmentrendu interneLgSliderBase<T, T>Fragment avancé permettant de remplacer le rendu en lecture seule.
Requiredbool?nullLgInputBase<T>Force l’état obligatoire ou le déduit de l’attribut [Required] du modèle.
ResetButtonbool?configuration applicativeLgInputBase<T>Active l’affichage du bouton de réinitialisation si la valeur peut être remise à zéro.
ResetTextstringconfiguration applicativeLgInputBase<T>Texte traduit du bouton de réinitialisation.
ResetTextAriaLabelstringconfiguration applicativeLgInputBase<T>Libellé ARIA traduit du bouton de réinitialisation.
ScaleLabelStepTdefault(T)LgSliderBase<T, T>Espacement entre deux libellés visibles sur l’échelle.
ShowScalebooltrueLgSliderBase<T, T>Affiche les marques de l’échelle.
ShowScaleLabelsbooltrueLgSliderBase<T, T>Affiche les libellés sous les marques de l’échelle.
ShowTooltipsboolfalseLgSliderBase<T, T>Affiche la valeur dans une info-bulle attachée au curseur.
StepTdefault(T) → 1 si inférieur ou égal à zéroLgSliderBase<T, T>Incrément entre deux positions générées automatiquement.
TooltipstringnullLgInputBase<T>Bulle d’aide traduite associée au composant.
TooltipIsHtmlboolfalseLgInputBase<T>Indique si la bulle d’aide contient du HTML.
ValueTdefault(T)LgInputBase<T>Valeur sélectionnée, généralement liée avec @bind-Value.
ValueChangedEventCallback<T>non assignéLgInputBase<T>Callback généré par le binding two-way pour propager la valeur.
ValueExpressionExpression<Func<T>>nullLgInputBase<T>Expression du champ lié, utilisée par la validation Blazor.
ValuesICollection<T>nullLgSliderBase<T, T>Liste explicite des valeurs possibles ; si absente, la liste est générée avec Min, Max et Step.

Événements​

NomTypeDescription
ValueChangedEventCallback<T>Notifie la nouvelle valeur dans le binding two-way.
OnChangeEventCallback<ChangeEventArgs>Se déclenche après l’application effective de la valeur.
OnChangingAsyncFunc<ChangingEventArgs<T>, Task>Se déclenche avant l’application de la valeur et peut l’annuler.
OnResetEventCallback<ChangeEventArgs>Se déclenche après la réinitialisation de la valeur.

Accessibilité​

LgSlider<T> rend un curseur focusable au clavier et expose la valeur courante via le libellé ARIA du curseur. Fournissez toujours un Label, AriaLabel ou AriaLabelledBy explicite. Vérifiez que l’ordre des marques reste compréhensible, que Disabled n’est pas utilisé comme seule indication visuelle, et que les changements importants restent annoncés par un message ou une validation adaptée.

Composants liés​