Utilisation
Présentation
Le sélecteur de plage de dates permet aux utilisateurs de spécifier des dates de début et de fin. Les utilisateurs peuvent sélectionner ces dates dans un calendrier ou les saisir manuellement. Ce composant est utilisé dans les applications d’assurance pour spécifier une plage de dates pour des tâches telles que les suivantes :
- Sélection de la période de garantie d’une police d’assurance
- Filtrage des données des sinistres
Quand l'utiliser
Pour sélectionner une période avec une date de début et une date de fin distinctes.
Quand ne pas l'utiliser
Pour sélectionner une seule date. Dans ce cas, utilisez le composant Sélecteur de date.
Voir également
Structure

Le composant Plage de dates comporte les éléments suivants :
- Date de début
- Toutes les dates intermédiaires
- Date de fin
La date de début et la date de fin comprennent toutes les deux un champ dans lequel les utilisateurs peuvent saisir une date manuellement. Quant à l'icône Calendrier, elle déclenche un menu déroulant en vue de la sélection d'une date lorsque l'utilisateur clique dessus.
Le format de la date affichée dans le sélecteur de date dépend des paramètres régionaux de l'utilisateur. Cela signifie que le format de date varie en fonction de la localisation et des paramètres linguistiques de l'utilisateur.
Par exemple, aux États-Unis, le format de date est généralement MM/DD/YYYY, alors que dans de nombreux pays européens, le format est DD/MM/YYYY.
Le format de date est affiché sous la forme d'un espace réservé dans le sélecteur de date pour aider l'utilisateur à saisir la date. Cela garantit que le format reste visible tout au long du processus de saisie.
Contenu
Directives générales relatives à la rédaction
- Mettez une majuscule en début de phrase pour tous les aspects relatifs à la conception des interfaces de produit Guidewire. Ne mettez pas la 1re lettre du 1er mot du titre en majuscule.
- Utilisez des verbes au présent et la forme active dans la plupart des cas.
- Utilisez des contractions courantes pour donner à votre texte un ton plus naturel et informel.
- Utilisez un langage simple. Évitez tout jargon inutile et les formulations complexes.
- Utilisez des termes et des phrases concis.
Inclure une étiquette
Renseignez un texte clair et descriptif pour l'étiquette du sélecteur de plage de dates. Cette étiquette doit indiquer sa fonction et le type spécifique d'année sélectionné.
Les libellés apparaissent au-dessus du champ de saisie de date, sont alignées à gauche et commencent par une majuscule.
Placez une étiquette permanente en dehors du champ.
N'utilisez pas de texte de l'espace réservé pour remplacer une étiquette.
Comportements
États
Le composant Sélecteur de plage de dates se comporte comme un champ de saisie, avec les mêmes états interactifs.
Interactions
Souris
Les utilisateurs peuvent interagir avec cet élément en cliquant dans la zone située à l'intérieur de la bordure.

Clavier
Le sélecteur de date est développé et réduit avec Spacebar. Les utilisateurs naviguent parmi les options à l'aide des touches fléchées et les sélectionne à l'aide de la touche Spacebar ou Enter.
Un widget de calendrier apparaît lorsque l'utilisateur utilise la touche de tabulation pour accéder au champ de saisie du sélecteur de date. La date du jour est mise en surbrillance et les utilisateurs qui ne se servent que du clavier peuvent entrer la date manuellement ici. Les utilisateurs peuvent également placer le focus clavier sur le widget en appuyant sur la touche fléchée vers le bas lorsqu'il est développé. Parcourez le calendrier avec les touches fléchées. Il est possible de mettre les boutons « Précédent », « Mois », « Année » et « Suivant » en évidence via la touche Tab lorsque le widget est ouvert.
Lecteur d'écran
Les utilisateurs sont informés de la valeur de date préremplie lorsqu'ils accèdent au champ de saisie du sélecteur de date à l'aide de la touche Tabulation, ainsi que du fait que cette valeur est actuellement sélectionnée. La date peut être saisie manuellement à partir de ce champ de saisie. Bien que le focus reste placé sur la date préremplie, un widget de calendrier est également disponible. Les utilisateurs peuvent également déplacer le focus sur le widget en appuyant sur la touche fléchée vers le bas. La navigation dans la partie calendrier du widget s'effectue à l'aide des touches fléchées, et la valeur actuellement sélectionnée est lue par les lecteurs d'écran via un attribut WAI-ARIA aria-label. Il est possible de mettre les boutons « Précédent », « Mois », « Année » et « Suivant » en évidence via la touche Tab lorsque le widget est ouvert. Le sélecteur de date React n'active actuellement pas la navigation au clavier vers le lien « Aujourd'hui ».
Accessibilité
Ce composant a été validé pour répondre aux directives d’accessibilité WCAG 2.2 AA dans sa configuration de base par défaut. Il s’agit notamment de s’assurer que :
- Le rapport de contraste des éléments textuels par rapport à leur arrière-plan est supérieur à 4.5:1.
- Le contenu non textuel qui doit transmettre le sens (comme les icônes et les indicateurs de focus) a un rapport de contraste d’au moins 3:1 avec ses couleurs adjacentes.
- Cet élément peut être utilisé à l’aide d’un clavier et d’une souris.
- Le contenu est accessible à l’aide de lecteurs d’écran, tels que JAWS et VoiceOver.
La conformité de l’accessibilité dépend en définitive de la façon dont ce composant est implémenté et personnalisé. Les modifications apportées par l’auteur du contenu peuvent affecter l’accessibilité. Pour en savoir plus sur notre modèle de responsabilité partagée, consultez notre Déclaration d’accessibilité Jutro complète.
Lorsque vous utilisez ce composant, assurez-vous que les étiquettes indiquent clairement les dates que l'utilisateur doit saisir ou sélectionner.
Code
<DateRangePicker
label={{ start: 'Choose start date', end: 'Choose end date' }}
onChange={(event, value) =>
console.log('The dates chosen are', value.start, value.end)
}
/>
Instruction d'importation
import { DateRangePicker } from '@jutro/components';
Cahier des charges du composant
Assurez-vous de comprendre la surface de l'API des composants du système de conception, ainsi que les implications et les compromis. Pour en savoir plus, reportez-vous à notre introduction à l'API des composants.
Propriétés
labelobligatoire
Type{ start: IntlMessageShape, end: IntlMessageShape }
DescriptionLabels associated with the input fields, also passed as a default value to 'aria-label'. Must be in object format: start - an IntlMessageShape label for the start date picker, end - an IntlMessageShape label for the end date picker.
className
DescriptionCSS class name for this component.
disabled
DescriptionIf set to true, the component is rendered in disabled state.
Type'vshort' | 'short' | 'long' | 'abbreviated' | 'full'
DescriptionThe date format. This value along with locale will determine how the date is displayed to the user.
displayOnly
DescriptionIf set to true, displays the component value in plain text. Consider using readonly instead, if possible, because plain text is worse for accessibility than readonly inputs.
hideLabel
Type{ start: boolean, end: boolean }
DescriptionIf set to true, the label is not visible. Must be in object format: start - Boolean value for the start date picker, end - Boolean value for the end date picker.
DescriptionIf set to true, hides the Today button in the calendar.
initialValue
Type{start: { day: number, month: number, year: number }, end: { day: number, month: number, year: number }}
DescriptionInitial value of the input. Must be in object format: start - initial value for the start date picker, end - initial value for the end date picker. The start and end initial values must be in object format with day, month and year property where the month is indexed from 1. If the value prop is specified along with this prop, this prop's value is discarded.
labelPosition
DescriptionAllows selection of label position.
maxDate
Type{ day: number, month: number, year: number }
DescriptionMaximum allowed date value.
minDate
Type{ day: number, month: number, year: number }
DescriptionMinimum allowed date value.
onBlur
Typefunction (FocusEvent<HTMLInputElement>)
DescriptionA callback called after the component is focused.
onChange
Typefunction (React.ChangeEvent<HTMLInputElement>, {start: { day: number, month: number, year: number }, end: { day: number, month: number, year: number }})
DescriptionCallback invoked when component value is changed.
onFocus
Typefunction (FocusEvent<HTMLInputElement>)
DescriptionA callback called after the component is focused.
placeholder
DescriptionPlaceholder to display on an empty component. Must be in object format: start - an IntlMessageShape placeholder for the start date picker, end - an IntlMessageShape placeholder for the end date picker. If the value prop is specified along with this prop, this prop's value is discarded.
readOnly
DescriptionIf set to true, component is rendered in a read-only state. For values in plain text, consider using displayOnly.
required
DescriptionIf set to true, the component is rendered as required and the label will display an asterisk.
secondaryLabel
Type{ start: IntlMessageShape, end: IntlMessageShape }
DescriptionSecondary label text to display. Must be in object format: start - an IntlMessageShape secondary label for the start date picker, end - an IntlMessageShape secondary label for the end date picker.
stateMessages
DescriptionAn object with a list of error messages for the current state.
Type{ text: intlMessageShape, trigger: string } | intlMessageShapetext
DescriptionText to show tooltip content.
trigger
DescriptionThe trigger to show the tooltip.
DescriptionText to be displayed in the tooltip or tooltip object that includes: text - to show tooltip content, trigger - to set tooltip trigger.
value
Type{start: { day: number, month: number, year: number }, end: { day: number, month: number, year: number }}
DescriptionValue of the input. Takes precedence over initialValue. Must be in object format: start - the value for the start date picker, end - the value for the end date picker. Value must be in object format with day, month and year property where the month is indexed from 1. If this prop is passed, the component works in controlled mode and its value will change only if this prop changes.
Comportements personnalisés
Le composant DateRangePicker fournit un mécanisme de validation utilisant la propriété onChange. Cette propriété accepte les paramètres event, value et errorCode. Ils contiennent des propriétés start et end distinctes permettant de distinguer l'entrée à laquelle il est fait référence. Les valeurs errorCode peuvent être :
INVALID_DATE : le format de date est incorrect, par exemple, la valeur saisie pour le mois est supérieure à 12.
MIN_EXCEEDED : la valeur d'entrée est inférieure à la valeur minimale définie par la propriété minDate.
MAX_EXCEEDED : la valeur saisie est supérieure à la valeur maximale définie par la propriété maxDate.
Vous pouvez consulter l'exemple de validation pour voir comment fonctionne la validation.
Vous pouvez utiliser la propriété displayFormat pour modifier le format des dates lors de l'utilisation des propriétés readOnly ou displayOnly. Il existe cinq possibilités différentes :
vshort : 6/20/2024
short : 20 juin 2024
long : 20 juin 2024
abbreviated : sam., 20 juin 2024
full : samedi 20 juin 2024
Crochets
Aucun crochet n'est disponible pour DateRangePicker.
Clés de traduction
Le composant DateRangePicker définit deux clés de traduction pour aria-label :
| Clé | Utilisée pour |
|---|
| jutro-components.fields.DatePicker.chooseStartDate | Date de début aria-label |
| jutro-components.fields.DatePicker.chooseEndDate | Date de fin aria-label |
DateRangePicker hérite également des traductions suivantes :
| Clé | Utilisée pour |
|---|
| jutro-components.DateCalendar.previousMonth | Texte de l'étiquette du bouton Mois précédent. |
| jutro-components.DateCalendar.nextMonth | Texte de l'étiquette du bouton du mois suivant. |
| jutro-components.DateCalendar.currentDay | Texte de l'étiquette du bouton Date actuelle. |
| jutro-components.DateCalendar.currentDayAriaLabel | Texte de l'étiquette du bouton permettant de sélectionner la date en cours comme valeur. |
| jutro-components.MonthSkeleton.previousYear | Texte de l'étiquette du bouton Année précédente. |
| jutro-components.MonthSkeleton.nextYear | Texte de l'étiquette permettant d'accéder à l'année suivante. |
| jutro-components.MonthSkeleton.currentMonth | Texte de l'étiquette permettant d'accéder au bouton du mois en cours. |
| jutro-components.MonthSkeleton.currentMonthAriaLabel | Texte de l'étiquette du bouton permettant de sélectionner le mois en cours comme valeur. |
| jutro-components.YearCalendar.previousYears | Texte de l'étiquette du bouton de plage de l'année précédente. |
| jutro-components.YearCalendar.currentYear | Texte de l'étiquette du bouton Accéder à l'année en cours. |
| jutro-components.YearCalendar.currentYearAriaLabel | Texte de l'étiquette du bouton permettant de sélectionner l'année en cours comme valeur. |
Portes de sortie
Pour en savoir plus, reportez-vous à notre documentation sur les portes de sortie.
Utilisez-vous la version héritée de ce composant ?
- Pour consulter la documentation de l'ancien composant, passez à une version de la documentation antérieure à 10.5.x.
- Ce composant existant est également disponible dans Storybook :
Exemples
Consultez la section Utilisation pour découvrir comment concevoir correctement un sélecteur de plage de dates et connaître les différentes options de configuration que nous proposons.
Exemple de plage de dates de base
Vous pouvez ajouter une entrée qui permet à un utilisateur de saisir une plage de dates manuellement ou via des fenêtres modales de calendrier.
<DateRangePicker
label={{ start: 'Choose start date', end: 'Choose end date' }}
onChange={(event, value) =>
console.log('The dates chosen are', value.start, value.end)
}
/>
Exemple Min/Max
Vous pouvez limiter la plage de dates qu'un utilisateur peut sélectionner.
Note: Cela n'inclut pas la validation, mais limite uniquement les options dans la fenêtre modale du calendrier. Un utilisateur peut saisir n'importe quelle date dans l'entrée.
<DateRangePicker
label={{ start: 'Choose start date', end: 'Choose end date' }}
minDate={{ day: 1, month: 1, year: 2024 }}
maxDate={{ day: 31, month: 12, year: 2024 }}
/>
Exemple de validation
Vous pouvez utiliser la propriété onChange pour appeler une fonction qui met à jour stateMessages pour afficher les erreurs à l'utilisateur. L'exemple suivant affiche des erreurs pour des dates non valides ou des dates qui ne sont pas en 2024.
Note: Comme mentionné dans l'exemple précédent, un utilisateur peut saisir n'importe quelle date dans l'entrée, quelles que soient les propriétés minDate et maxDate.
import React, { useState } from 'react';
import { DateRangePicker } from '@jutro/components';
export function DateRangePickerError() {
const [stateMessages, setStateMessages] = useState({});
const parseErrorCode = (sideErrorObject) => {
let errorCode = sideErrorObject.errorCode;
if (errorCode === 'INVALID_DATE') {
return { error: ['Please enter a valid date.'] };
}
if (errorCode === 'MIN_EXCEEDED' || errorCode === 'MAX_EXCEEDED') {
return { error: ['Please enter a valid date.'] };
}
};
const handleChange = (event, value, errorObject) => {
let parsedMessages: {
start?: { error: string[] };
end?: { error: string[] };
} = {};
let start_error = errorObject?.start;
if (start_error) {
parsedMessages.start = parseErrorCode(start_error);
}
let end_error = errorObject?.end;
if (end_error) {
parsedMessages.end = parseErrorCode(end_error);
}
console.log(parsedMessages);
setStateMessages(parsedMessages);
};
return (
<DateRangePicker
label={{ start: 'Choose start date', end: 'Choose end date' }}
minDate={{ day: 1, month: 1, year: 2024 }}
maxDate={{ day: 31, month: 12, year: 2024 }}
onChange={handleChange}
stateMessages={stateMessages}
/>
);
}
Journal des modifications
10.13.0
Un chemin d’importation à partir de @jutro/components a été ajouté pour le composant DateRangePicker.
L’ancien chemin d’importation à partir de @jutro/components/new sera supprimé dans une prochaine version majeure.
Il est conseillé aux utilisateurs d’exécuter la commande suivante pour appliquer un codemod afin de mettre à jour les chemins d’importation dans votre code.
jutro codemod:apply --name=MigrateDateRangePickerImportFromNew
Pour en savoir plus sur les codemods Jutro, reportez-vous à la documentation sur les codemods.
10.5.0
Le nouveau composant @jutro/components/new/DateRangePicker a été introduit et remplace DateRangeField.
DateRangeField peut toujours être importé depuis @jutro/components/DateRangeField, mais vous recevrez un avertissement indiquant qu'il est obsolète.