Aller au contenu principal

LgWeekBox

LgWeekBox<TValue> permet de sélectionner une semaine. Il fait partie de la famille des champs date (LgDateBox) dont il hérite tout le comportement : le calendrier sélectionne une semaine entière et le champ affiche le numéro de semaine. Le type lié peut être une date classique (DateOnly, DateTime, DateTimeOffset ou nullable) ou le type dédié WeekYear, qui porte le numéro de semaine ISO et l'année.

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

Le suffixe du champ est réservé : le composant y place automatiquement l'icône calendrier (Suffix / SuffixType sont écrasés à l'initialisation).

Utilisation​

Démonstration​

Essayez ce composant dans le showcase Lagoon.

Sélection simple​

DeliveryPage.razor
<LgWeekBox Label="#DeliveryWeek" @bind-Value="_model.DeliveryWeek" />
DeliveryPage.razor.cs
public partial class DeliveryPage : LgPage
{
private readonly DeliveryVm _model = new();

private sealed class DeliveryVm
{
public DateTime? DeliveryWeek { get; set; }
}
}

Semaine et année avec WeekYear​

Lié à un WeekYear, le composant manipule directement le couple numéro de semaine ISO / année, sans passer par une date.

ProductionPage.razor
<LgWeekBox Label="#ProductionWeek" @bind-Value="_model.ProductionWeek" />
ProductionPage.razor.cs
public partial class ProductionPage : LgPage
{
private readonly ProductionVm _model = new();

private sealed class ProductionVm
{
// WeekYear? : porte le numéro de semaine ISO et l'année, sans jour précis.
public WeekYear? ProductionWeek { get; set; }
}
}

Premier jour de la semaine et bornes​

WeekStart change le premier jour de la semaine (lundi par défaut) ; Min et Max bornent la sélection.

SchedulePage.razor
<LgWeekBox Label="#ScheduledWeek"
WeekStart="DayOfWeek.Sunday"
Min="_minDate"
Max="_maxDate"
@bind-Value="_model.ScheduledWeek" />
SchedulePage.razor.cs
public partial class SchedulePage : LgPage
{
// Horizon de planification : borne le calendrier de sélection de semaine.
private readonly DateTime _minDate = new(2026, 1, 1);
private readonly DateTime _maxDate = new(2026, 12, 31);

private readonly ScheduleVm _model = new();

private sealed class ScheduleVm
{
public DateOnly? ScheduledWeek { get; set; }
}
}

Réagir au changement de valeur​

OnChangingAsync (hérité de LgDateBox) est appelé avant l'affectation et permet d'annuler le changement (args.Cancel) ; OnChange est appelé après.

MaintenancePage.razor
<LgWeekBox Label="#MaintenanceWeek"
OnChangingAsync="OnWeekChangingAsync"
@bind-Value="_model.MaintenanceWeek" />
MaintenancePage.razor.cs
public partial class MaintenancePage : LgPage
{
private readonly MaintenanceVm _model = new();

// Appelé avant le changement : refuse une semaine déjà passée.
private Task OnWeekChangingAsync(ChangingEventArgs<DateTime?> args)
{
if (args.NewValue < DateTime.Today)
{
args.Cancel = true;
ShowWarning("#WeekInPast");
}
return Task.CompletedTask;
}

private sealed class MaintenanceVm
{
public DateTime? MaintenanceWeek { get; set; }
}
}

Propriétés​

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

NomTypeDéfautDéclaré dansDescription
AssumeNearbyYearint20LgDateBoxNombre d'années dans le futur pendant lesquelles une année saisie sur deux chiffres est rattachée au siècle courant. Une valeur inférieure à 1 désactive ce comportement.
DefaultDateTimeKindDateTimeKindUnspecifiedLgDateBoxDateTimeKind utilisé pour créer un nouveau DateTime.
DefaultTimeTimeOnly?nullLgDateBoxHeure utilisée pour créer un nouveau DateTime ou DateTimeOffset (minuit si null).
DefaultTimeOffsetTimeSpan?nullLgDateBoxDécalage horaire utilisé pour créer un nouveau DateTimeOffset (décalage du fuseau local si null).
DisplayFormatstringnullLgDateBoxFormat d'affichage. Sans effet sur l'affichage du numéro de semaine.
KeyboardDisabledboolfalseLgDateBoxInterdit la modification au clavier : la valeur ne peut être choisie que dans le calendrier.
MaxDateTime?nullLgDateBoxSemaine la plus tardive sélectionnable ; les dates ultérieures sont désactivées.
MinDateTime?nullLgDateBoxSemaine la plus ancienne sélectionnable ; les dates antérieures sont désactivées.
OnChangeDisabledboolfalseLgDateBoxDé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>nullLgDateBoxCallback appelé avant le changement de valeur ; le changement peut y être annulé.
OnFocusEventCallback<FocusEventArgs>—LgDateBoxCallback appelé à la prise de focus.
PlaceholderstringnullLgDateBoxTexte indicatif affiché quand le champ est vide.
WeekStartDayOfWeekMondayLgDateBoxPremier jour de la semaine (utilisé pour le calcul du numéro de semaine et l'affichage du calendrier).
PrefixstringnullLgInputRenderBasePréfixe affiché dans le champ.
PrefixTypeInputLabelTypeTextLgInputRenderBaseNature du préfixe.
Suffixstring(icône calendrier)LgInputRenderBaseSuffixe affiché dans le champ. Réservé : le composant y place l'icône calendrier.
SuffixTypeInputLabelTypeIconNameLgInputRenderBaseNature du suffixe. Réservé par le composant.
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) : date (DateOnly, DateTime, DateTimeOffset ou nullable) ou WeekYear / WeekYear?.
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

LgWeekBox 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.

Énumérations associées​

L'énumération InputLabelType (préfixe / suffixe) est documentée sur LgDateBox, le composant de base de la famille date.

Bonnes pratiques / accessibilité​

  • Utilisez WeekYear? quand le métier raisonne en semaines : le couple semaine/année est porté tel quel, sans jour arbitraire. Liée à une date, la valeur est ramenée à la semaine sélectionnée (jour de référence de la semaine).
  • Ne définissez pas Suffix / SuffixType : ils sont écrasés par l'icône calendrier à l'initialisation du composant.
Référence complète

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

Composants liés​