Aller au contenu principal

LgMonthBox

LgMonthBox<TValue> permet de sélectionner un mois (et son année). Il fait partie de la famille des champs date (LgDateBox) dont il hérite tout le comportement : le calendrier s'ouvre directement au niveau mois. Le type lié peut être une date (DateOnly, DateTime, DateTimeOffset ou nullable) ou un int / int? — la valeur est alors le numéro du mois (1-12), sans année.

<LgMonthBox Label="#BillingMonth" @bind-Value="_model.BillingMonth" />
  • 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​

BillingPage.razor
<LgMonthBox Label="#BillingMonth" @bind-Value="_model.BillingMonth" />
BillingPage.razor.cs
public partial class BillingPage : LgPage
{
private readonly BillingVm _model = new();

private sealed class BillingVm
{
public DateTime? BillingMonth { get; set; }
}
}

Bornes de sélection​

Min et Max désactivent les mois hors bornes dans le calendrier.

PeriodPage.razor
<LgMonthBox Label="#Period"
Min="_minDate"
Max="_maxDate"
@bind-Value="_model.Period" />
PeriodPage.razor.cs
public partial class PeriodPage : LgPage
{
// Exercice comptable courant : borne la sélection de mois.
private readonly DateTime _minDate = new(2026, 1, 1);
private readonly DateTime _maxDate = new(2026, 12, 31);

private readonly PeriodVm _model = new();

private sealed class PeriodVm
{
public DateOnly? Period { get; set; }
}
}

Mois seul (sans année)​

Lié à un int?, le composant ne porte que le numéro du mois (1-12) : la navigation par année est désactivée dans le calendrier et l'affichage ne montre que le mois.

AnniversaryPage.razor
<LgMonthBox Label="#AnniversaryMonth" @bind-Value="_model.AnniversaryMonth" />
AnniversaryPage.razor.cs
public partial class AnniversaryPage : LgPage
{
private readonly AnniversaryVm _model = new();

private sealed class AnniversaryVm
{
// int? : seule l'information « quel mois » est stockée, sans année.
public int? AnniversaryMonth { 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.

ClosingPage.razor
<LgMonthBox Label="#ClosingMonth"
OnChangingAsync="OnClosingMonthChangingAsync"
@bind-Value="_model.ClosingMonth" />
ClosingPage.razor.cs
public partial class ClosingPage : LgPage
{
private readonly ClosingVm _model = new();

// Appelé avant le changement : refuse un mois de clôture déjà validé.
private Task OnClosingMonthChangingAsync(ChangingEventArgs<DateTime?> args)
{
if (args.NewValue < DateTime.Today.AddMonths(-1))
{
args.Cancel = true;
ShowWarning("#ClosingMonthLocked");
}
return Task.CompletedTask;
}

private sealed class ClosingVm
{
public DateTime? ClosingMonth { 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. Si null, le format de date court de la culture courante est utilisé, sans la partie jour (et sans l'année pour un int).
KeyboardDisabledboolfalseLgDateBoxInterdit la modification au clavier : la valeur ne peut être choisie que dans le calendrier.
MaxDateTime?nullLgDateBoxMois le plus tardif sélectionnable ; les mois ultérieurs sont désactivés.
MinDateTime?nullLgDateBoxMois le plus ancien sélectionnable ; les mois antérieurs sont désactivés.
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 dans le 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 int / int? (numéro du mois).
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

LgMonthBox 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é​

  • Liée à une date, la valeur porte le premier jour du mois ; liée à un int?, elle ne porte que le numéro du mois — choisissez le type selon que l'année compte ou non.
  • 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 — LgMonthBox.

Composants liés​