Aller au contenu principal

LgSummaryBox

LgSummaryBox affiche un texte long sur une seule ligne (tronqué) et ouvre une fenêtre modale pour l'éditer, dans une zone de texte multiligne ou un éditeur HTML. La saisie n'est appliquée à la valeur liée qu'à la validation par le bouton « Enregistrer » de la modale.

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

Le bouton d'effacement standard des champs (ResetButton) n'est jamais affiché : l'effacement passe par le bouton « Effacer » de la modale.

Utilisation​

Démonstration​

Essayez ce composant dans le showcase Lagoon.

Édition en modale​

Un clic sur le champ (ou la touche entrée quand il a le focus) ouvre la modale. ModalTitle remplace le Label comme titre et ModalSize fixe la taille de la fenêtre. Si l'utilisateur ferme la modale avec des modifications non enregistrées, une confirmation lui est demandée.

ReportPage.razor
<LgSummaryBox Label="#Summary"
ModalTitle="#EditSummary"
ModalSize="ModalSize.ExtraLarge"
TextareaHeight="300"
MaxLength="2000"
@bind-Value="_model.Summary" />
ReportPage.razor.cs
public partial class ReportPage : LgPage
{
private readonly ReportVm _model = new();

private sealed class ReportVm
{
public string Summary { get; set; }
}
}

Ouverture au focus et affichage multiligne​

OpenOnFocus ouvre la modale dès que le champ reçoit le focus (utile dans un parcours clavier). WrapContent affiche la valeur sur plusieurs lignes au lieu de la tronquer.

NotePage.razor
<LgSummaryBox Label="#Note"
OpenOnFocus="true"
WrapContent="true"
OnOpen="OnNoteOpen"
OnClose="OnNoteClose"
@bind-Value="_model.Note" />
NotePage.razor.cs
public partial class NotePage : LgPage
{
private readonly NoteVm _model = new();

// Déclenché à l'ouverture de la modale : utile pour tracer ou charger un contexte.
private void OnNoteOpen()
{
ShowInformation("#NoteOpened");
}

// Déclenché à la fermeture de la modale (après validation ou abandon).
private void OnNoteClose()
{
ShowInformation("#NoteClosed");
}

private sealed class NoteVm
{
public string Note { get; set; }
}
}

Éditeur HTML​

UseHtmlEditor="true" remplace la zone de texte par un éditeur HTML (LgHtmlEditor) ; la valeur liée contient alors du HTML, rendu tel quel dans le champ. HtmlEditorButtons restreint les boutons de la barre d'outils.

DescriptionPage.razor
<LgSummaryBox Label="#Description"
UseHtmlEditor="true"
HtmlEditorButtons="_editorButtons"
@bind-Value="_model.DescriptionHtml" />
DescriptionPage.razor.cs
public partial class DescriptionPage : LgPage
{
// Barre d'outils réduite : seuls les enrichissements autorisés sont proposés.
private readonly List<string> _editorButtons = new() { "bold", "italic", "underline", "ul", "ol" };

private readonly DescriptionVm _model = new();

private sealed class DescriptionVm
{
public string DescriptionHtml { get; set; }
}
}

Annuler un changement de valeur​

OnChangingAsync est appelé à la validation de la modale, avant l'affectation de la nouvelle valeur, et permet de l'annuler (args.Cancel).

JustificationPage.razor
<LgSummaryBox Label="#Justification"
OnChangingAsync="OnJustificationChangingAsync"
@bind-Value="_model.Justification" />
JustificationPage.razor.cs
public partial class JustificationPage : LgPage
{
private readonly JustificationVm _model = new();

// Appelé avant l'affectation : impose un contenu minimal à l'enregistrement.
private Task OnJustificationChangingAsync(ChangingEventArgs<string> args)
{
if (string.IsNullOrWhiteSpace(args.NewValue) || args.NewValue.Length < 20)
{
args.Cancel = true;
ShowWarning("#JustificationTooShort");
}
return Task.CompletedTask;
}

private sealed class JustificationVm
{
public string Justification { get; set; }
}
}

Propriétés​

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

NomTypeDéfautDéclaré dansDescription
HtmlEditorButtonsList<string>nullLgSummaryBoxBoutons de la barre d'outils de l'éditeur HTML. Si null, la barre complète est affichée.
MaxLengthint?nullLgSummaryBoxNombre maximal de caractères saisis.
ModalSizeModalSizeLargeLgSummaryBoxTaille de la fenêtre modale d'édition.
ModalTitlestringnullLgSummaryBoxTitre de la modale. Si null, le Label du champ est utilisé.
OnChangingAsyncFunc<ChangingEventArgs<string>, Task>nullLgSummaryBoxCallback appelé avant le changement de valeur ; le changement peut y être annulé.
OnCloseEventCallback—LgSummaryBoxCallback appelé à la fermeture de la modale.
OnFocusEventCallback<FocusEventArgs>—LgSummaryBoxCallback appelé à la prise de focus.
OnKeyUpEventCallback<KeyboardEventArgs>—LgSummaryBoxCallback appelé au relâchement d'une touche.
OnOpenEventCallback—LgSummaryBoxCallback appelé à l'ouverture de la modale.
OpenOnFocusboolfalseLgSummaryBoxOuvre la modale dès que le champ reçoit le focus.
PlaceholderstringnullLgSummaryBoxTexte indicatif affiché quand le champ est vide.
TextareaHeightint0LgSummaryBoxHauteur de la zone de texte de la modale, en pixels.
UseHtmlEditorboolfalseLgSummaryBoxRemplace la zone de texte par un éditeur HTML.
WrapContentboolfalseLgSummaryBoxAffiche la valeur sur plusieurs lignes au lieu de la tronquer.
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é à la réinitialisation (sans effet ici, le bouton d'effacement standard n'est pas affiché).
PolicyEditstringnullLgInputBasePolicy requise pour modifier le champ.
PolicyVisiblestringnullLgInputBasePolicy requise pour afficher le champ.
ReadOnlyboolfalseLgInputBaseAffiche la valeur en lecture seule (la modale reste consultable).
Requiredbool?nullLgInputBaseChamp obligatoire. Si null, déduit de l'attribut [Required] de la propriété liée.
ResetButtonbool?nullLgInputBaseSans effet : le bouton d'effacement standard n'est jamais affiché par ce composant.
ResetTextstringnullLgInputBaseTexte du bouton d'effacement (sans effet ici).
ResetTextAriaLabelstringnullLgInputBaseLibellé accessible du bouton d'effacement (sans effet ici).
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

LgSummaryBox 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
OnOpenEventCallbackÀ l'ouverture de la modale d'édition.
OnCloseEventCallbackÀ la fermeture de la modale d'édition.
OnChangingAsyncFunc<ChangingEventArgs<string>, Task>Avant l'affectation de la nouvelle valeur ; args.Cancel = true l'annule.
OnChangeEventCallback<ChangeEventArgs>Après l'affectation de la nouvelle valeur.
OnKeyUpEventCallback<KeyboardEventArgs>Au relâchement d'une touche sur le champ.
OnFocusEventCallback<FocusEventArgs>À la prise de focus du champ.

Bonnes pratiques / accessibilité​

  • Réservez UseHtmlEditor aux contenus réellement enrichis : la valeur liée contient alors du HTML qu'il faut assainir avant tout autre usage.
  • Pour un texte multiligne court, éditable en place, préférez LgTextBox avec TextMode="TextBoxMode.Multiline".
Référence complète

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

Composants liés​

  • LgTextBox — saisie de texte (mode multiligne en place).
  • LgHtmlEditor — éditeur HTML utilisé par le mode UseHtmlEditor.
  • LgModal — fenêtre modale utilisée pour l'édition.
  • LgGridSummaryColumn — colonne « résumé » d'un LgGridView.