Sélecteur de date
Une grille de calendrier en ligne. Chaque date qu'il contient est une simple chaîne YYYY-MM-DD en heure locale et jamais un Date, si bien qu'une valeur ne peut pas glisser d'un jour d'un fuseau à l'autre.
Utilisation
Exemples
Période
selection à range fait de la valeur un début et une fin, la période sous le pointeur étant prévisualisée entre les deux clics.
Dates multiples
selection à multiple fait de la valeur une liste, un jour déjà présent en ressortant à un nouveau clic.
Raccourcis
Le slot #footer est une bande sous la grille, pour des actions ou pour les dates les plus demandées. Les boutons qui s'y trouvent écrivent le modèle comme n'importe quel autre contrôle.
Dates désactivées
disabledDates accepte une liste de jours, ou une fonction interrogée pour une date à la fois. Un jour fermé reste visible, barré, et atteignable au clavier.
Minimum et maximum
min et max bornent la navigation autant que le choix, dans toutes les vues.
Pastilles
events dessine jusqu'à trois points sous un jour. Chacun accepte n'importe quelle couleur CSS et un label, qui est ce que lisent les technologies d'assistance.
Jours adjacents
showAdjacentDays remplit les coins de la grille avec les mois voisins, grisés et inertes. selectAdjacentDays les rend aussi choisissables, et en choisir un déplace le calendrier vers son mois.
Localisation
locale décide des noms de mois et de jours et du jour où commencent les semaines, et l'emporte sur la locale globale. firstDayOfWeek remplace le jour que cette locale aurait choisi.
API
Props
| Prop | Type | Défaut |
|---|---|---|
selection | DatePickerSelection'single' | 'range' | 'multiple' | 'single' |
| Ce que le lecteur choisit : une date unique, une période entre deux dates, ou un nombre quelconque de dates séparées. Cela détermine la forme de la valeur. | ||
locale | string | aucune |
| Une locale BCP 47, qui décide des noms de mois et de jours et du premier jour de la semaine. Elle l'emporte sur la locale globale du design system et retombe dessus, ce pourquoi elle n'a pas de valeur par défaut littérale. | ||
firstDayOfWeek | number | aucune |
| Force le jour où commencent les semaines, de 0 pour dimanche à 6 pour samedi. Omise, la locale décide. | ||
min | string | aucune |
| La première date sélectionnable, en chaîne ISO. Ni la navigation ni la sélection ne remontent au-delà. | ||
max | string | aucune |
| La dernière date sélectionnable, en chaîne ISO. Ni la navigation ni la sélection ne vont au-delà. | ||
disabledDates | DatePickerMatcher | aucune |
| Les dates qui ne peuvent pas être choisies, en liste de chaînes ISO ou en fonction. Elles restent visibles, barrées, et restent atteignables au clavier. | ||
showAdjacentDays | boolean | false |
| Remplit aussi les coins vides de la grille avec les jours grisés des mois voisins. | ||
selectAdjacentDays | boolean | false |
| Permet de cliquer ces jours voisins, ce qui déplace le calendrier sur leur mois. Un jour cliquable doit être visible : cela implique donc de les afficher. | ||
events | DatePickerEvent[] | aucune |
| Les événements à marquer, en trois points colorés au plus sous le jour concerné. | ||
disabled | boolean | false |
| Rend tout le calendrier inutilisable : aucune date ne peut être choisie, aucun mois atteint, et tout se grise par les jetons de couleur. | ||
readonly | boolean | false |
Montre la sélection sans permettre de la changer. Le calendrier reste lisible et parcourable, un autre mois ou une autre année, ce qui le distingue de disabled. | ||
label | string | aucune |
Le nom accessible du sélecteur entier, son en-tête et sa grille ensemble. Une plage montrée comme deux calendriers côte à côte en demande un chacun, sinon un lecteur d'écran annonce deux fois le même groupe. Il retombe sur le dictionnaire, et un aria-label du consommateur l'emporte. | ||
v-model | DatePickerValue | null |
Ce qui est sélectionné, et sa forme suit selection : une chaîne ISO pour une date unique, une paire début et fin pour une période, un tableau pour plusieurs. Rien n'est sélectionné au départ. | ||
Événements
| Événement | Type |
|---|---|
select | [value: DatePickerValue] |
Une date a été choisie, avec la valeur telle qu'elle est désormais. Choisi ne veut pas dire terminé : une période ou une liste est encore en construction après lui, et c'est pourquoi VTimePicker nomme confirm la fin d'un choix. | |
Slots
| Slot | Type |
|---|---|
day | DatePickerDaySlotProps |
| Remplace le contenu d'une cellule de jour, pour afficher un prix ou une disponibilité sous le numéro. Elle reçoit tout ce que l'on sait de ce jour, y compris s'il appartient au mois affiché. | |
footer | {} |
| La bande sous la grille, pour des actions comme Fermer ou Enregistrer, ou pour des dates prédéfinies. | |
Types
Les types que les tables ci-dessus nomment, écrits comme la librairie les déclare. Ceux qui portent export s'importent depuis vectis-ui pour typer votre propre code ; les autres décrivent la forme de ce qu'un slot fournit.
export interface DatePickerDaySlotProps {
iso: string
day: number
inMonth: boolean
disabled: boolean
selected: boolean
today: boolean
inRange: boolean
events: DatePickerEvent[]
}export interface DatePickerEvent {
date: string
color?: string
label?: string
}export type DatePickerMatcher = string[] | ((iso: string) => boolean)
export interface DatePickerRange {
start: string | null
end: string | null
}export type DatePickerValue = string | null | DatePickerRange | string[]
Variables CSS
| Token | Valeur |
|---|---|
--vectis-control-size-date-picker-cell | 2.5rem |
--vectis-control-size-date-picker-day | var(--vectis-control-height-md) |
--vectis-control-size-date-picker-dot | 0.25rem |
--vectis-control-size-date-picker-nav-min | 5.375rem |