Uso
Descripción general
El selector de intervalo de fechas permite a los usuarios especificar las fechas de inicio y finalización. Los usuarios pueden seleccionar estas fechas en un calendario o ingresarlas manualmente. Este componente se utiliza en aplicaciones de seguros para especificar un intervalo de fechas para tareas como estas:
- Seleccionar el período de cobertura de una póliza de seguros.
- Filtrar datos de siniestros.
Cuándo se debe utilizar
Para seleccionar un período con una fecha de inicio y finalización distintas.
Cuándo no se debe utilizar
Para seleccionar una sola fecha. En este caso, utilice el componente selector de fecha.
Consulte también
Anatomía

El componente intervalo de fechas consta de los siguientes elementos:
- Fecha de inicio
- Todas las fechas intermedias
- Fecha de finalización
Tanto la fecha de inicio como la de finalización incluyen un campo donde los usuarios pueden ingresar manualmente una fecha. También hay un ícono de calendario que, cuando se hace clic en él, abre un menú desplegable para la selección de fechas.
El formato de la fecha que se muestra en el selector de fecha depende de la configuración regional del usuario. Esto significa que el formato de fecha variará según la ubicación del usuario y la configuración de idioma.
Por ejemplo, en los Estados Unidos, el formato de la fecha suele ser MM/DD/YYYY, mientras que en muchos países europeos, el formato es DD/MM/YYYY.
El formato de fecha se muestra como un marcador de posición dentro del selector de fecha para ayudar al usuario a ingresar la fecha. Esto asegura que el formato permanezca visible durante todo el proceso de ingreso de información.
Contenido
Pautas generales de redacción
- En todos los aspectos del diseño de las interfaces de productos de Guidewire, utilice mayúsculas como se usan en las oraciones. No use mayúsculas en todas las palabras.
- Use verbos en tiempo presente y voz activa en la mayoría de las situaciones.
- Use contracciones comunes para darle al texto un tono más natural e informal (pauta correspondiente al inglés).
- Use un lenguaje sencillo. Evite la jerga innecesaria y el lenguaje complejo.
- Las palabras y las oraciones deben ser breves.
Inclusión de un rótulo
Rotule el selector de intervalo de fechas con texto claro y descriptivo. Este rótulo debe comunicar su propósito y el tipo específico de año que se selecciona.
Los rótulos aparecen encima del campo de entrada de fecha, están alineadas a la izquierda y utilizan mayúsculas como se usan en las oraciones.
Coloque un rótulo permanente fuera del campo.
No utilice texto de marcador de posición como sustituto del rótulo.
Comportamientos
Estados
El componente selector de intervalo de fechas se comporta como un campo de entrada, con los mismos estados interactivos.
Interacciones
Ratón
Los usuarios pueden interactuar con este elemento haciendo clic en el área dentro del borde.

Teclado
El selector de fecha se expande y se contrae con Spacebar. Los usuarios pueden navegar por las opciones utilizando las teclas de flecha y seleccionar por medio de la tecla Spacebar o Enter .
Aparece un widget de calendario cuando el usuario se desplaza con el tabulador al campo de entrada selector de fecha. La fecha actual se resalta y los usuarios que solo usan teclado pueden ingresar la fecha manualmente aquí. Los usuarios también pueden colocar el foco del teclado en el widget presionando la tecla de flecha hacia abajo cuando está expandido. Navegue por el calendario con las teclas de flecha. Los botones “Anterior”, “Mes”, “Año” y “Siguiente” pueden recibir el foco con la tecla Tab cuando el widget está abierto.
Lector de pantalla
Se informa a los usuarios el valor de fecha completado automáticamente, cuando van al campo de entrada del selector de fecha con el tabulador, y que este valor está seleccionado actualmente. Se puede ingresar la fecha manualmente desde este campo de entrada. Si bien el foco permanece en la fecha completada automáticamente, también hay un widget de calendario disponible. Los usuarios también pueden mover el foco hacia el widget presionando la tecla de flecha hacia abajo. La navegación por la parte del calendario del widget se realiza con las teclas de flecha, y el valor actualmente en foco es narrado por los lectores de pantalla mediante un atributo WAI-ARIA aria-label. Los botones “Anterior”, “Mes”, “Año” y “Siguiente” pueden recibir el foco con la tecla Tab cuando el widget está abierto. El selector de fecha de React no habilita actualmente la navegación por teclado al enlace “Hoy”.
Accesibilidad
Este componente de Jutro ha sido validado para cumplir con las pautas de accesibilidad de WCAG 2.2 AA en su configuración base predeterminada. Esto incluye garantizar que se cumpla lo siguiente:
- La relación de contraste de los elementos textuales con respecto a su fondo es superior a 4,5:1.
- El contenido no textual que debe transmitir significado (como íconos e indicadores de foco) tiene una relación de contraste de al menos 3:1 con sus colores adyacentes.
- El elemento se puede operar con teclado, así como con mouse.
- Se puede acceder al contenido mediante lectores de pantalla, como JAWS y VoiceOver.
El cumplimiento de los criterios de accesibilidad depende, en última instancia, de cómo se implementa y personaliza este componente. Los cambios realizados por el autor del contenido pueden afectar la accesibilidad. Para obtener más información sobre nuestro modelo de responsabilidad compartida, revise nuestra declaración completa sobre accesibilidad de Jutro.
Cuando utilice este componente, asegúrese de que los rótulos comuniquen claramente las fechas que el usuario debe ingresar o seleccionar.
Código
<DateRangePicker
label={{ start: 'Choose start date', end: 'Choose end date' }}
onChange={(event, value) =>
console.log('The dates chosen are', value.start, value.end)
}
/>
Instrucción de importación
import { DateRangePicker } from '@jutro/components';
Contrato de componentes
Asegúrese de comprender la superficie de la API de componentes del sistema de diseño, así como sus implicaciones, ventajas y desventajas. Obtenga más información en nuestra introducción a la API de componentes.
Propiedades
labelobligatorio
Tipo{ start: IntlMessageShape, end: IntlMessageShape }
DescripciónLabels 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
DescripciónCSS class name for this component.
disabled
DescripciónIf set to true, the component is rendered in disabled state.
Tipo'vshort' | 'short' | 'long' | 'abbreviated' | 'full'
DescripciónThe date format. This value along with locale will determine how the date is displayed to the user.
Valor predeterminado'short'
displayOnly
DescripciónIf 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
Tipo{ start: boolean, end: boolean }
DescripciónIf 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.
DescripciónIf set to true, hides the Today button in the calendar.
initialValue
Tipo{start: { day: number, month: number, year: number }, end: { day: number, month: number, year: number }}
DescripciónInitial 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
DescripciónAllows selection of label position.
maxDate
Tipo{ day: number, month: number, year: number }
DescripciónMaximum allowed date value.
minDate
Tipo{ day: number, month: number, year: number }
DescripciónMinimum allowed date value.
onBlur
Tipofunction (FocusEvent<HTMLInputElement>)
DescripciónA callback called after the component is focused.
onChange
Tipofunction (React.ChangeEvent<HTMLInputElement>, {start: { day: number, month: number, year: number }, end: { day: number, month: number, year: number }})
DescripciónCallback invoked when component value is changed.
onFocus
Tipofunction (FocusEvent<HTMLInputElement>)
DescripciónA callback called after the component is focused.
placeholder
DescripciónPlaceholder 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
DescripciónIf set to true, component is rendered in a read-only state. For values in plain text, consider using displayOnly.
required
DescripciónIf set to true, the component is rendered as required and the label will display an asterisk.
secondaryLabel
Tipo{ start: IntlMessageShape, end: IntlMessageShape }
DescripciónSecondary 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
DescripciónAn object with a list of error messages for the current state.
Tipo{ text: intlMessageShape, trigger: string } | intlMessageShapetext
DescripciónText to show tooltip content.
trigger
DescripciónThe trigger to show the tooltip.
DescripciónText to be displayed in the tooltip or tooltip object that includes: text - to show tooltip content, trigger - to set tooltip trigger.
value
Tipo{start: { day: number, month: number, year: number }, end: { day: number, month: number, year: number }}
DescripciónValue 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.
Comportamientos personalizados
El componente DateRangePicker proporciona un mecanismo de validación mediante la propiedad onChange. Esta propiedad acepta los parámetros event, value y errorCode. Estos contienen propiedades start y end independientes para distinguir a qué entrada se hace referencia. Los valores de errorCode pueden ser:
INVALID_DATE: El formato de fecha es incorrecto, por ejemplo, al introducir un valor de mes mayor que 12.
MIN_EXCEEDED: El valor de entrada es menor que el mínimo definido por la propiedad minDate.
MAX_EXCEEDED: El valor de entrada es mayor que el máximo definido por la propiedad maxDate.
Consulte el ejemplo de validación para ver cómo funciona.
Puede usar la propiedad displayFormat para modificar el formato de las fechas cuando utiliza las propiedades readOnly o displayOnly. Hay cinco alternativas diferentes:
vshort: 20/6/2024
short: 20 jun. 2024
long: 20 de junio de 2024
abbreviated: juev., 20 de jun. de 2024
full: jueves, 20 de junio de 2024
Ganchos
No hay ganchos para DateRangePicker.
Claves de traducción
El componente DateRangePickerdefine dos claves de traducción para aria-label:
| Clave | Se usa para |
|---|
| jutro-components.fields.DatePicker.chooseStartDate | Fecha de inicio aria-label |
| jutro-components.fields.DatePicker.chooseEndDate | Fecha de finalización aria-label |
selector de intervalo de fechas también hereda las siguientes traducciones:
| Clave | Se usa para |
|---|
| jutro-components.DateCalendar.previousMonth | El texto del rótulo para el botón Mes anterior. |
| jutro-components.DateCalendar.nextMonth | El texto del rótulo para el botón del mes siguiente. |
| jutro-components.DateCalendar.currentDay | El texto del rótulo para el botón Ir a la fecha actual. |
| jutro-components.DateCalendar.currentDayAriaLabel | El texto del rótulo para el botón para seleccionar la fecha actual como valor. |
| jutro-components.MonthSkeleton.previousYear | El texto del rótulo para el botón del año anterior. |
| jutro-components.MonthSkeleton.nextYear | El texto del rótulo para ir al botón del año siguiente. |
| jutro-components.MonthSkeleton.currentMonth | El texto del rótulo para ir al botón del mes actual. |
| jutro-components.MonthSkeleton.currentMonthAriaLabel | El texto del rótulo para el botón para seleccionar el mes actual como valor. |
| jutro-components.YearCalendar.previousYears | El texto del rótulo para el botón de intervalo del año anterior. |
| jutro-components.YearCalendar.currentYear | El texto del rótulo para el botón Ir al año actual. |
| jutro-components.YearCalendar.currentYearAriaLabel | El texto del rótulo para el botón para seleccionar el año actual como valor. |
Escotillas de escape
Para obtener más información, consulte nuestra documentación sobre escotillas de escape.
¿Está utilizando la versión heredada de este componente?
- Para ver los documentos del componente antiguo, consulte una versión de la documentación anterior a la 10.5.x.
- El componente heredado también está disponible en Storybook:
Ejemplos
Consulte la sección Uso para obtener detalles sobre cómo diseñar un DateRangePicker correctamente y las diferentes opciones de configuración que ofrecemos.
Ejemplo de intervalo de fechas básico
Puede agregar una entrada que permita a un usuario ingresar un intervalo fecha, ya sea manualmente o a través de modales de calendario.
<DateRangePicker
label={{ start: 'Choose start date', end: 'Choose end date' }}
onChange={(event, value) =>
console.log('The dates chosen are', value.start, value.end)
}
/>
Ejemplo mín./máx.
Es posible limitar el intervalo de fechas que un usuario puede seleccionar.
Note: Esto no incluye la validación, solo limita las opciones en el modal de calendario. El usuario puede ingresar cualquier fecha en la entrada.
<DateRangePicker
label={{ start: 'Choose start date', end: 'Choose end date' }}
minDate={{ day: 1, month: 1, year: 2024 }}
maxDate={{ day: 31, month: 12, year: 2024 }}
/>
Ejemplo de validación
Puede utilizar la propiedad onChange para llamar a una función que actualiza stateMessages para mostrar errores al usuario. En el siguiente ejemplo, se muestran errores para fechas no válidas o fechas que no están en 2024.
Note: Como se mencionó en el ejemplo anterior, el usuario puede escribir cualquier fecha en la entrada, independientemente de las propiedades minDate y 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}
/>
);
}
Registro de cambios
10.13.0
Se agregó una ruta de importación desde @jutro/components para el componente DateRangePicker.
La ruta de importación anterior desde @jutro/components/new se eliminará en una futura versión principal.
Recomendamos a los usuarios ejecutar el siguiente comando para aplicar un codemod, a fin de actualizar las rutas de importación en su código.
jutro codemod:apply --name=MigrateDateRangePickerImportFromNew
Para obtener más información sobre los codemods de Jutro, consulte la documentación sobre codemods.
10.5.0
Se introdujo un nuevo componente @jutro/components/new/DateRangePicker que sustituye a DateRangeField.
DateRangeField todavía se puede importar desde @jutro/components/DateRangeField, pero al hacerlo recibirá una advertencia de que está obsoleto.