Aller au contenu principal

LgNumericBox

LgNumericBox<TValue> permet de saisir un nombre. Le champ filtre les caractères saisis, applique un format d'affichage, arrondit selon le mode configuré et peut afficher des boutons d'incrément / décrément. La valeur liée est un type numérique (int, long, decimal, double, float… ou leur version nullable).

<LgNumericBox Label="#Quantity" @bind-Value="_model.Quantity" />
  • Espace de noms : Lagoon.UI.Components
  • Hérite de : LgInputRenderBase<TValue> → LgInputBase<TValue> → LgAriaComponentBase → LgComponentBase
  • Package NuGet : Lagoon.UI

Utilisation​

Démonstration​

Essayez ce composant dans le showcase Lagoon.

Saisie simple​

Le nombre de décimales par défaut dépend du type lié (0 pour les entiers) et le format d'affichage par défaut est N<Decimals>. Sur mobile, le clavier virtuel numérique est forcé (inputmode="decimal").

OrderLinePage.razor
<LgNumericBox Label="#Quantity" @bind-Value="_model.Quantity" />
OrderLinePage.razor.cs
public partial class OrderLinePage : LgPage
{
private readonly OrderLineVm _model = new();

private sealed class OrderLineVm
{
public int? Quantity { get; set; }
}
}

Décimales, format et arrondi​

Decimals fixe le nombre de décimales, DisplayFormat remplace le format d'affichage et RoundValueMode le mode d'arrondi (par défaut, celui de la configuration de comportement de l'application). Prefix / Suffix (hérités) permettent d'afficher une unité.

PricePage.razor
<LgNumericBox Label="#UnitPrice"
Decimals="2"
RoundValueMode="MidpointRounding.AwayFromZero"
Suffix="€"
SuffixType="InputLabelType.Text"
@bind-Value="_model.UnitPrice" />
PricePage.razor.cs
public partial class PricePage : LgPage
{
private readonly PriceVm _model = new();

private sealed class PriceVm
{
public decimal? UnitPrice { get; set; }
}
}

Boutons d'incrément​

IncrementStep (non nul) affiche des boutons d'augmentation / diminution dans le champ, qui font varier la valeur du pas indiqué.

StockPage.razor
<LgNumericBox Label="#StockLevel"
IncrementStep="10"
@bind-Value="_model.StockLevel" />
StockPage.razor.cs
public partial class StockPage : LgPage
{
private readonly StockVm _model = new();

private sealed class StockVm
{
public int StockLevel { get; set; }
}
}

Réagir au changement de valeur​

OnChangingAsync est appelé avant l'affectation et permet d'annuler le changement (args.Cancel) ; OnChange (hérité) est appelé après. OnInput notifie chaque frappe, OnKey chaque touche relâchée et OnFocus la prise de focus. La réinitialisation par le bouton d'effacement déclenche aussi OnInput, avec une valeur vide (""), sauf si elle est annulée (OnChangingAsync, ConfirmationMessage). ParsingErrorMessage personnalise le message affiché quand la saisie n'est pas un nombre valide.

DiscountPage.razor
<LgNumericBox Label="#DiscountRate"
Decimals="1"
ParsingErrorMessage="#DiscountFormatError"
OnChangingAsync="OnDiscountChangingAsync"
@bind-Value="_model.DiscountRate" />
DiscountPage.razor.cs
public partial class DiscountPage : LgPage
{
private readonly DiscountVm _model = new();

// Appelé avant le changement : borne la remise sans passer par la validation du formulaire.
private Task OnDiscountChangingAsync(ChangingEventArgs<double?> args)
{
if (args.NewValue is < 0 or > 100)
{
args.Cancel = true;
ShowWarning("#DiscountOutOfRange");
}
return Task.CompletedTask;
}

private sealed class DiscountVm
{
public double? DiscountRate { get; set; }
}
}

Propriétés​

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

NomTypeDéfautDéclaré dansDescription
Decimalsint?nullLgNumericBoxNombre de décimales. Si null, déduit du type lié (0 pour les entiers).
DisplayFormatstringnullLgNumericBoxFormat d'affichage. Si null, N<Decimals> est utilisé.
IncrementStepTValuedefaultLgNumericBoxPas des boutons d'augmentation / diminution. Les boutons ne sont affichés que si le pas est non nul.
OnChangeDisabledboolfalseLgNumericBoxDésactive l'événement onchange DOM au profit de oninput (utilisé pour éviter des erreurs quand le contrôle est retiré du rendu).
OnChangingAsyncFunc<ChangingEventArgs<TValue>, Task>nullLgNumericBoxCallback appelé avant le changement de valeur ; le changement peut y être annulé.
OnFocusEventCallback<FocusEventArgs>—LgNumericBoxCallback appelé à la prise de focus.
OnInputEventCallback<ChangeEventArgs>—LgNumericBoxCallback appelé à chaque modification du contenu du champ, y compris sa réinitialisation par le bouton d'effacement (valeur "").
OnKeyEventCallback<KeyboardEventArgs>—LgNumericBoxCallback appelé au relâchement d'une touche.
ParsingErrorMessagestring#lgNumericBoxErrFormatLgNumericBoxMessage d'erreur affiché quand la saisie n'est pas un nombre valide.
PlaceholderstringnullLgNumericBoxTexte indicatif affiché quand le champ est vide.
RoundValueModeMidpointRounding?nullLgNumericBoxMode d'arrondi. Si null, le mode de la configuration de comportement de l'application s'applique.
PrefixstringnullLgInputRenderBasePréfixe affiché dans le champ (ex. une devise).
PrefixTypeInputLabelTypeTextLgInputRenderBaseNature du préfixe.
SuffixstringnullLgInputRenderBaseSuffixe affiché dans le champ (ex. une unité).
SuffixTypeInputLabelTypeTextLgInputRenderBaseNature du suffixe.
AdditionalAttributesIReadOnlyDictionary<string, object>nullLgInputBaseAttributs HTML additionnels appliqués à l'élément rendu.
AutoFocusboolfalseLgInputBaseDonne le focus au champ lors du premier rendu.
ConfirmationMessagestringnullLgInputBaseMessage de confirmation affiché avant d'appliquer un changement de valeur.
ContainerIInputContainer<TValue>nullLgInputBaseUsage interne : rattache une cellule de GridView au champ.
CssClassstringnullLgInputBaseClasses CSS additionnelles.
DisabledboolfalseLgInputBaseDésactive le champ.
DisplayNamestringnullLgInputBaseNom du champ utilisé dans les messages d'erreur de saisie.
HideValidationMessageboolfalseLgInputBaseMasque le message de validation sous le champ.
LabelstringnullLgInputBaseLibellé du champ.
LabelContentRenderFragmentnullLgInputBaseContenu personnalisé de la zone de libellé.
OnChangeEventCallback<ChangeEventArgs>—LgInputBaseCallback appelé après le changement de valeur.
OnResetEventCallback<ChangeEventArgs>—LgInputBaseCallback appelé quand le champ est réinitialisé par le bouton d'effacement.
PolicyEditstringnullLgInputBasePolicy requise pour modifier le champ.
PolicyVisiblestringnullLgInputBasePolicy requise pour afficher le champ.
ReadOnlyboolfalseLgInputBaseAffiche le champ 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.
TooltipIsHtmlboolfalseLgInputBaseIndique si le contenu du Tooltip est au format HTML (sinon texte brut).
ValueTValue—LgInputBaseValeur liée (@bind-Value), de type numérique.
ValueChangedEventCallback<TValue>—LgInputBaseCallback de mise à jour de la valeur liée.
ValueExpressionExpression<Func<TValue>>—LgInputBaseExpression identifiant la propriété liée.
AriaLabelstringnullLgAriaComponentBaseValeur de l'attribut aria-label.
AriaLabelledBystringnullLgAriaComponentBaseValeur de l'attribut aria-labelledby.
Paramètres en cascade

LgNumericBox 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<ChangingEventArgs<TValue>, Task>Avant le changement de valeur ; args.Cancel = true annule le changement.
OnChangeEventCallback<ChangeEventArgs>Après le changement de valeur.
OnInputEventCallback<ChangeEventArgs>À chaque modification du contenu du champ, y compris sa réinitialisation par le bouton d'effacement (valeur "", sauf si la réinitialisation est annulée).
OnKeyEventCallback<KeyboardEventArgs>Au relâchement d'une touche dans le champ.
OnFocusEventCallback<FocusEventArgs>À la prise de focus du champ.
OnResetEventCallback<ChangeEventArgs>À la réinitialisation par le bouton d'effacement.

Bonnes pratiques / accessibilité​

  • Choisissez le type lié en fonction du besoin métier (decimal pour les montants) : le nombre de décimales par défaut en découle.
  • Pour une unité ou une devise, préférez Prefix / Suffix à un libellé dans le Label : l'information reste visible au plus près de la valeur.
Référence complète

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

Composants liés​