Aller au contenu principal

LgTextBox

LgTextBox est le champ de saisie de texte : ligne simple, zone multiligne, mot de passe, avec masque de saisie optionnel. La valeur (une chaîne) se lie avec @bind-Value.

<LgTextBox Label="#ContactName" @bind-Value="_model.Name" />
  • Espace de noms : Lagoon.UI.Components
  • Hérite de : LgInputRenderBase<string> → LgInputBase<string> → LgAriaComponentBase → LgComponentBase
  • Package NuGet : Lagoon.UI
Variantes spécialisées

LgTextBox sert de base à plusieurs champs prêts à l'emploi : LgSuggestBox (suggestions pendant la saisie) et LgColorPickerBox (sélecteur de couleur).

Utilisation​

Démonstration​

Essayez ce composant dans le showcase Lagoon.

Saisie simple​

Placeholder affiche un texte d'attente, Disabled désactive le champ et ReadOnly l'affiche en lecture seule.

ContactPage.razor
<LgTextBox Label="#ContactName" @bind-Value="_model.Name" />

<LgTextBox Label="#FirstName"
Placeholder="#TypeYourFirstName"
Disabled="_isDisabled"
ReadOnly="_isReadOnly"
@bind-Value="_model.FirstName" />
ContactPage.razor.cs
public partial class ContactPage : LgPage
{
// États pilotés par l'écran : désactivation et lecture seule du second champ.
private bool _isDisabled;
private bool _isReadOnly;

private readonly ContactVm _model = new();

private sealed class ContactVm
{
public string Name { get; set; }
public string FirstName { get; set; }
}
}

Mot de passe​

TextMode="TextBoxMode.Password" masque les caractères saisis.

AccountPage.razor
<LgTextBox Label="#Password"
TextMode="TextBoxMode.Password"
@bind-Value="_model.Password" />
AccountPage.razor.cs
public partial class AccountPage : LgPage
{
private readonly AccountVm _model = new();

private sealed class AccountVm
{
public string Password { get; set; }
}
}

Zone multiligne​

TextMode="TextBoxMode.Multiline" rend une zone de texte. Rows fixe le nombre de lignes, MinRows / MaxRows bornent l'ajustement automatique et AllowResize autorise le redimensionnement manuel.

CommentPage.razor
<LgTextBox Label="#Comment"
TextMode="TextBoxMode.Multiline"
Rows="5"
MaxLength="500"
AllowResize="true"
@bind-Value="_model.Comment" />
CommentPage.razor.cs
public partial class CommentPage : LgPage
{
private readonly CommentVm _model = new();

private sealed class CommentVm
{
public string Comment { get; set; }
}
}

Masque de saisie​

InputMaskKind choisit le type de masque et InputMask le motif (9 : chiffre, a : lettre, * : alphanumérique pour le type Mask). InputMaskPlaceholder fixe le caractère qui remplit les positions encore vides du masque (# avec le masque 99-99-99-99-99 affiche ##-##-##-##-##) ; sans valeur, le caractère par défaut _ est conservé. Il ne doit pas être confondu avec Placeholder, qui reste le texte indicatif affiché quand le champ est vide. AutoUnmask retourne la valeur sans le masque et ClearIncomplete vide la saisie si le masque est incomplet.

remarque

Le masque de saisie ne s'applique qu'au mode texte simple. Il est ignoré, sans erreur, quand TextMode vaut TextBoxMode.Multiline ou TextBoxMode.Password : la bibliothèque de masque cible les champs sur une seule ligne, et un caractère de remplissage n'aurait aucun sens sur des caractères de mot de passe déjà masqués.

PhonePage.razor
<LgTextBox Label="#Phone"
InputMaskKind="InputMaskKind.Mask"
InputMask="99 99 99 99 99"
InputMaskPlaceholder="#"
Placeholder="#PhoneHint"
AutoUnmask="true"
@bind-Value="_model.Phone" />

@* Masque de saisie email intégré. *@
<LgTextBox Label="#Email"
InputMaskKind="InputMaskKind.Email"
@bind-Value="_model.Email" />
PhonePage.razor.cs
public partial class PhonePage : LgPage
{
private readonly PhoneVm _model = new();

private sealed class PhoneVm
{
public string Phone { get; set; }
public string Email { get; set; }
}
}

Préfixe, suffixe et datalist​

Prefix / Suffix affichent un texte ou une icône dans le champ. DataList rend un datalist HTML proposant des valeurs pendant la saisie.

ReferencePage.razor
<LgTextBox Label="#Reference"
Prefix="REF-"
PrefixType="InputLabelType.Text"
DataList="_knownReferences"
@bind-Value="_model.Reference" />
ReferencePage.razor.cs
public partial class ReferencePage : LgPage
{
// Valeurs proposées par le navigateur pendant la saisie (datalist HTML).
private readonly List<string> _knownReferences = new() { "1001", "1002", "2001" };

private readonly ReferenceVm _model = new();

private sealed class ReferenceVm
{
public string Reference { get; set; }
}
}

Réagir au changement de valeur​

OnChangingAsync est appelé avant l'affectation et permet d'annuler le changement (args.Cancel) ; OnChange est appelé après. OnInput notifie chaque frappe et OnKeyUp chaque touche relâchée. La réinitialisation par le bouton d'effacement déclenche aussi OnInput, avec une valeur vide (""), comme le navigateur pour un champ de recherche vidé par sa croix : un champ de filtre qui n'écoute que OnInput n'a donc pas besoin de brancher OnReset sur le même gestionnaire. Elle ne le déclenche pas si elle est annulée (OnChangingAsync, ConfirmationMessage).

CodePage.razor
<LgTextBox Label="#ProjectCode"
OnChangingAsync="OnCodeChangingAsync"
@bind-Value="_model.Code" />
CodePage.razor.cs
public partial class CodePage : LgPage
{
private readonly CodeVm _model = new();

// Appelé avant le changement : refuse les codes réservés.
private Task OnCodeChangingAsync(ChangingEventArgs<string> args)
{
if (args.NewValue == "ADMIN")
{
args.Cancel = true;
ShowWarning("#ReservedCode");
}
return Task.CompletedTask;
}

private sealed class CodeVm
{
public string Code { get; set; }
}
}

Propriétés​

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

NomTypeDéfautDéclaré dansDescription
AllowResizeboolfalseLgTextBoxAutorise le redimensionnement lorsque TextMode vaut TextBoxMode.Multiline.
AutoCompleteboolfalseLgTextBoxActive l'autocomplétion du navigateur si true ; sinon l'attribut autocomplete="off" est rendu.
AutoUnmaskboolfalseLgTextBoxRetourne la valeur sans le masque lorsque InputMask est utilisé.
ClearIncompleteboolfalseLgTextBoxVide la valeur si le masque de saisie est incomplet.
DataListList<string>nullLgTextBoxListe de valeurs utilisée pour rendre un datalist associé à l'entrée.
InputMaskstringnullLgTextBoxMasque de saisie appliqué au champ texte.
InputMaskKindInputMaskKindNoneLgTextBoxType de masque de saisie.
InputMaskPlaceholderstringnullLgTextBoxCaractère remplissant les positions vides du masque de saisie (par exemple # avec le masque 99-99-99-99-99 affiche ##-##-##-##-##). À ne pas confondre avec Placeholder. Sans valeur, le caractère par défaut du masque (_) est conservé. Ignoré lorsque InputMaskKind vaut Regex.
MaxLengthint?nullLgTextBoxNombre maximal de caractères. Si non défini, il est déduit de l'attribut MaxLength du modèle.
MaxRowsint?nullLgTextBoxNombre maximal de lignes lorsque TextMode vaut TextBoxMode.Multiline.
MinRowsint?nullLgTextBoxNombre minimal de lignes lorsque TextMode vaut TextBoxMode.Multiline.
OnChangeDisabledboolfalseLgTextBoxDésactive le gestionnaire onchange natif du champ.
OnChangingAsyncFunc<ChangingEventArgs<string>, Task>nullLgTextBoxCallback appelé avant le changement de valeur ; le changement peut y être annulé.
OnFocusEventCallback<FocusEventArgs>—LgTextBoxCallback appelé à la prise de focus.
OnInputEventCallback<ChangeEventArgs>—LgTextBoxCallback appelé à la saisie (oninput) et à la réinitialisation par le bouton d'effacement (valeur "").
OnKeyUpEventCallback<KeyboardEventArgs>—LgTextBoxCallback appelé au relâchement d'une touche.
PlaceholderstringnullLgTextBoxTexte indicatif affiché quand le champ est vide. Distinct de InputMaskPlaceholder.
Rowsint?nullLgTextBoxNombre de lignes lorsque TextMode vaut TextBoxMode.Multiline.
TextModeTextBoxMode?nullLgTextBoxMode du champ texte. null rend un champ texte simple.
PrefixstringnullLgInputRenderBasePréfixe affiché dans le champ.
PrefixTypeInputLabelTypeTextLgInputRenderBaseNature du préfixe.
SuffixstringnullLgInputRenderBaseSuffixe affiché dans le champ.
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<string>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.
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).
ValuestringnullLgInputBaseValeur liée (@bind-Value).
ValueChangedEventCallback<string>—LgInputBaseCallback de mise à jour de la valeur liée.
ValueExpressionExpression<Func<string>>—LgInputBaseExpression identifiant la propriété liée.
AriaLabelstringnullLgAriaComponentBaseValeur de l'attribut aria-label.
AriaLabelledBystringnullLgAriaComponentBaseValeur de l'attribut aria-labelledby.
Paramètres en cascade

LgTextBox 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<string>, 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).
OnKeyUpEventCallback<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.

Énumérations associées​

TextBoxMode​

Mode de rendu du champ (propriété TextMode ; null rend un champ texte simple).

ValeurDescription
MultilineRend une zone de texte multiligne.
PasswordRend un champ mot de passe.

InputMaskKind​

Type de masque de saisie (propriété InputMaskKind).

ValeurDescription
NoneAucun masque (valeur par défaut).
MaskMasque basé sur 9 (chiffre), a (lettre) et * (alphanumérique).
RegexMasque basé sur une expression régulière.
EmailMasque de saisie email.

Bonnes pratiques / accessibilité​

  • Renseignez Label (ou AriaLabel) : le libellé porte l'accessibilité du champ et l'indicateur de champ obligatoire.
  • MaxLength est déduit de l'attribut MaxLength du modèle : posez la contrainte sur le vue-modèle plutôt qu'en dur dans le markup.
  • Pour un texte long édité en modale, préférez LgSummaryBox.
Référence complète

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

Composants liés​