Aller au contenu principal

LgTimeBox

LgTimeBox<TValue> permet de saisir une heure, au clavier (masque de saisie) ou via une horloge interactive (clock picker). La valeur liée est un DateTime (dont seule la partie horaire est modifiée) ou un TimeSpan — ou leur version nullable.

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

Utilisation​

Démonstration​

Essayez ce composant dans le showcase Lagoon.

Saisie simple​

Par défaut, l'horloge interactive est affichée au focus et les secondes sont ignorées (format HH:mm). Le Placeholder par défaut est alors « HH:MM ».

ShiftPage.razor
<LgTimeBox Label="#StartTime" @bind-Value="_model.StartTime" />
ShiftPage.razor.cs
public partial class ShiftPage : LgPage
{
// Modèle édité : TimeSpan? pour une durée / heure du jour sans partie date.
private readonly ShiftVm _model = new();

private sealed class ShiftVm
{
public TimeSpan? StartTime { get; set; }
}
}

Saisie des secondes​

IgnoreSeconds="false" passe le format à HH:mm:ss. Dans ce mode (comme lorsque ShowClockPicker="false"), l'horloge interactive est remplacée par un masque de saisie clavier.

ChronoPage.razor
<LgTimeBox Label="#PreciseTime"
IgnoreSeconds="false"
@bind-Value="_model.PreciseTime" />

@* Saisie au masque uniquement, sans horloge. *@
<LgTimeBox Label="#AlarmTime"
ShowClockPicker="false"
@bind-Value="_model.AlarmTime" />
ChronoPage.razor.cs
public partial class ChronoPage : LgPage
{
private readonly ChronoVm _model = new();

private sealed class ChronoVm
{
public TimeSpan? PreciseTime { get; set; }
public TimeSpan? AlarmTime { get; set; }
}
}

Heure d'un DateTime​

Lié à un DateTime, le composant ne modifie que la partie horaire : la partie date de la valeur existante est conservée (la date du jour est utilisée si la valeur est vide).

AppointmentPage.razor
<LgDateBox Label="#AppointmentDate" @bind-Value="_model.Appointment" />
<LgTimeBox Label="#AppointmentTime"
OnChangingAsync="OnTimeChangingAsync"
@bind-Value="_model.Appointment" />
AppointmentPage.razor.cs
public partial class AppointmentPage : LgPage
{
private readonly AppointmentVm _model = new();

// Appelé avant le changement : refuse les rendez-vous hors des heures d'ouverture.
private Task OnTimeChangingAsync(ChangingEventArgs<DateTime?> args)
{
if (args.NewValue is DateTime value && (value.Hour < 8 || value.Hour >= 18))
{
args.Cancel = true;
ShowWarning("#OutsideOpeningHours");
}
return Task.CompletedTask;
}

private sealed class AppointmentVm
{
public DateTime? Appointment { get; set; }
}
}

Propriétés​

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

NomTypeDéfautDéclaré dansDescription
IgnoreSecondsbooltrueLgTimeBoxIgnore les secondes (format HH:mm). À false, le format devient HH:mm:ss et l'horloge interactive est remplacée par le masque de saisie.
OnChangingAsyncFunc<ChangingEventArgs<TValue>, Task>nullLgTimeBoxCallback appelé avant le changement de valeur ; le changement peut y être annulé.
OnFocusEventCallback<FocusEventArgs>—LgTimeBoxCallback appelé à la prise de focus.
PlaceholderstringnullLgTimeBoxTexte indicatif affiché quand le champ est vide (« HH:MM » par défaut quand l'horloge est active et que les secondes sont ignorées).
ShowClockPickerbooltrueLgTimeBoxAffiche l'horloge interactive au focus (uniquement quand IgnoreSeconds vaut true ; sinon le masque de saisie est utilisé).
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 DateTime(?) ou TimeSpan(?).
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

LgTimeBox 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.
OnFocusEventCallback<FocusEventArgs>À la prise de focus du champ.
OnResetEventCallback<ChangeEventArgs>À la réinitialisation par le bouton d'effacement.

Bonnes pratiques / accessibilité​

  • Utilisez TimeSpan? pour une heure « pure » (sans date) ; réservez DateTime aux cas où le même modèle porte la date et l'heure (souvent en binôme avec un LgDateBox lié à la même propriété).
  • L'horloge interactive ne gère pas les secondes : IgnoreSeconds="false" bascule automatiquement sur le masque de saisie.
Référence complète

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

Composants liés​