Aller au contenu principal

LgPasteButton

LgPasteButton est un bouton qui récupère le texte du presse-papiers du navigateur lorsqu'il est cliqué. Il dérive de LgButton et prend en charge la liaison de données (Value / ValueChanged) ainsi que la validation au sein d'un EditForm.

<LgPasteButton @bind-Value="Model.Reference" />
  • Espace de noms : Lagoon.UI.Components
  • Hérite de : LgButton → LgAriaComponentBase → LgComponentBase
  • Package NuGet : Lagoon.UI
Valeurs par défaut

Le constructeur prédéfinit l'icône (IconNames.All.Clipboard), la bulle d'aide (#lgPasteButtonTooltip) et l'action de clic (collage). Lorsque le navigateur n'autorise pas l'accès direct au presse-papiers, une fenêtre modale de collage est ouverte automatiquement.

Utilisation​

Démonstration​

Essayez ce composant dans le showcase Lagoon.

Liaison de données​

Utilisez @bind-Value pour affecter directement le texte collé au modèle. Le composant conserve les propriétés de LgButton pour l'apparence, les policies et les raccourcis.

ReferencePastePage.razor
<LgPasteButton @bind-Value="Model.Reference"
Text="#PasteReference"
Kind="ButtonKind.Secondary" />
ReferencePastePage.razor.cs
public partial class ReferencePastePage : LgPage
{
// Champ mis à jour par le presse-papiers lors du clic sur le bouton.
private ReferenceVm Model { get; } = new();

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

Avec interception du collage​

OnPaste est déclenché avant l'affectation de Value. Modifiez ClipboardTextEventArg.Value pour nettoyer, convertir ou remplacer la valeur collée.

ReferencePasteNormalizePage.razor
<LgPasteButton Value="@Model.Reference"
ValueChanged="OnReferenceChangedAsync"
OnPaste="NormalizePasteAsync" />
ReferencePasteNormalizePage.razor.cs
public partial class ReferencePasteNormalizePage : LgPage
{
// Référence métier alimentée soit par collage direct, soit par le callback ValueChanged.
private ReferenceVm Model { get; } = new();

// Nettoie le texte avant affectation pour stocker une référence homogène dans le modèle.
private Task NormalizePasteAsync(ClipboardTextEventArg arg)
{
arg.Value = arg.Value?.Trim().ToUpperInvariant();
return Task.CompletedTask;
}

// Met à jour le modèle après normalisation, comme le ferait @bind-Value.
private Task OnReferenceChangedAsync(string value)
{
Model.Reference = value;
return Task.CompletedTask;
}

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

Validation dans un formulaire​

Dans un LgEditForm, fournissez ValueExpression avec la liaison pour notifier l'EditContext après le collage et déclencher les messages de validation du champ.

ReferenceFormPage.razor
<LgEditForm Model="Model">
<LgPasteButton @bind-Value="Model.Reference"
ValueExpression="@(() => Model.Reference)"
Text="#PasteReference" />
</LgEditForm>
ReferenceFormPage.razor.cs
public partial class ReferenceFormPage : LgPage
{
// Modèle validé par le formulaire : le collage notifie ce champ via ValueExpression.
private ReferenceVm Model { get; } = new();

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

Fenêtre de collage de secours​

Si le navigateur refuse l'accès direct au presse-papiers, LgPasteButton ouvre automatiquement une modale de collage. Aucun paramètre supplémentaire n'est nécessaire : gardez simplement OnPaste et ValueChanged pour traiter la valeur finale de la même manière.

ReferencePasteFallbackPage.razor
<LgPasteButton @bind-Value="Model.Reference"
OnPaste="NormalizePasteAsync"
Tooltip="#PasteReferenceTooltip" />
ReferencePasteFallbackPage.razor.cs
public partial class ReferencePasteFallbackPage : LgPage
{
// Valeur finale alimentée aussi bien par l'accès direct que par la modale de secours.
private ReferenceVm Model { get; } = new();

// Applique la même règle métier quelle que soit la méthode de collage utilisée par le navigateur.
private Task NormalizePasteAsync(ClipboardTextEventArg arg)
{
arg.Value = arg.Value?.Trim();
return Task.CompletedTask;
}

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

Propriétés​

Propriétés propres​

NomTypeDéfautDéclaré dansDescription
ValuestringnullLgPasteButtonValeur récupérée depuis le presse-papiers après le clic.
ValueChangedEventCallback<string>—LgPasteButtonCallback de mise à jour de la valeur liée (@bind-Value).
ValueExpressionExpression<Func<string>>nullLgPasteButtonExpression identifiant la valeur liée (validation EditContext).
OnPasteEventCallback<ClipboardTextEventArg>—LgPasteButtonCallback déclenché lors du collage ; permet de lire ou modifier la valeur collée.

Propriétés héritées​

LgPasteButton hérite de toutes les propriétés de LgButton (Kind, ButtonSize, Disabled, CssClass, Tooltip, PolicyVisible, etc.).

Paramètre en cascade

Le composant consomme l'EditContext (CascadingParameter) fourni par un EditForm parent : il est utilisé, conjointement à ValueExpression, pour déclencher la validation du champ après un collage.

Événements​

ÉvénementTypeDescription
OnPasteEventCallback<ClipboardTextEventArg>Déclenché au moment du collage, avant l'affectation de Value.
ValueChangedEventCallback<string>Déclenché lorsque la valeur liée change.

Paramètres hérités de LgButton​

ParamètreTypeDescription
TextstringLibellé du bouton.
IconNamestringIcône du bouton.
ChildContentRenderFragmentContenu personnalisé du bouton.
OnClickEventCallback<ActionEventArgs>Déclenché au clic.
IsSubmitboolLe bouton est de type « submit ».
ConfirmationMessagestringMessage de confirmation avant l'action (incompatible avec CommandName).
CommandName / CommandArgumentstring / objectCommande envoyée au gestionnaire de commandes et son argument.
Link / Uri / TargetLgPageLink / string / stringNavigation : lien typé, URI à ouvrir, fenêtre cible.
ShortcutKeystringCaractère (avec CTRL) déclenchant le clic.
PreventDoubleClickboolDésactive le bouton pendant l'exécution de l'action.
PreventDefault / StopPropagationboolContrôle de la propagation de l'évènement.
AutoFocusboolDonne le focus au composant au premier rendu.
PolicyEdit / PolicyVisiblestringPolicies d'édition/visibilité.
Tooltip / TooltipIsHtmlstring / boolBulle d'aide et son format.
AriaLabel / AriaLabelledBystringAccessibilité ARIA.
AdditionalAttributesIReadOnlyDictionary<string, object>Attributs HTML additionnels.

En cascade : ButtonSizeCascading (taille héritée d'un ancêtre) et ParentAuthorizeView (policies d'un ancêtre).

Énumérations associées​

Ces boutons héritent des énumérations de LgButton : ButtonKind, ButtonSize, TooltipPosition.

Composants liés​