Saltar al contenido
EspañolEnglish
Todos los componentes (204)

Rango de fechas

Fechas y hora · DateRangePicker

Qué es y cuándo usarlo

Dos fechas que van juntas: «del 1 al 30 de septiembre». Cada extremo se escribe por partes, igual que en DatePicker, y el calendario enseña dos meses a la vez para elegir un periodo que cruza de mes sin ir y volver.

Cuándo usarlo

  • Periodos: el de un informe, unas vacaciones, un ejercicio fiscal, una promoción.
  • months={1} cuando no hay sitio para dos meses (una columna estrecha, un panel lateral).
  • minValue y maxValue para acotarlo: lo de fuera sale apagado en el calendario.

Cuándo no

  • Una sola fecha: DatePicker.
  • Un filtro de panel con atajos («hoy», «últimos siete días», «este mes») además del rango a medida: QuickRange.
  • El rango a la vista, sin campo: Calendar con range.

Teclado: cada segmento de las dos fechas es una parada de Tab, y flecha izquierda y derecha también pasan de uno a otro dentro de cada fecha; arriba y abajo suben y bajan el que tiene el foco, o se escribe el número. El calendario se abre con su botón. En el calendario: flechas por días y semanas, Re Pág y Av Pág cambian de mes (con Mayúsculas, de año), Inicio y Fin van al primer y al último día del mes, e Intro o Espacio marcan primero el inicio y después el final.

Accesibilidad: la etiqueta es obligatoria y nombra el grupo entero; la ayuda y el error se leen como su descripción. La raya entre las dos fechas es adorno (aria-hidden). El botón se llama «Abrir calendario» y los del mes, «Mes anterior» y «Mes siguiente».

Aspecto fino: variables CSS de la caja, las de todos los campos: --amset-field-height, -padding, -font, -label, -description, -radius, -background y -border. Las del campo de fecha: --amset-date-target (alto de cada segmento, 24 px; 44 con el dedo), --amset-date-button (el botón del calendario) y --amset-date-icon. Y las del calendario del panel: --amset-calendar-day (lado de cada día: 28, 32 o 40 px según el tamaño, y encoge en una pantalla estrecha), --amset-calendar-slot, --amset-calendar-padding, --amset-calendar-font y --amset-calendar-nav (los botones de mes). Si no cabe en una línea, la segunda fecha baja debajo de la primera en vez de salirse de la caja.

Contexto: va dentro de LocaleProvider (o de AmsetProvider).

Cómo se ve

Dentro del ejercicio 2026

<DateRangePicker
  label="Periodo del informe"
  defaultValue={{ start: { year: 2026, month: 9, day: 1 }, end: { year: 2026, month: 9, day: 30 } }}
  minValue={{ year: 2026, month: 1, day: 1 }}
  maxValue={{ year: 2026, month: 12, day: 31 }}
  hint="Dentro del ejercicio 2026"
/>

Props

Se importa con import { DateRangePicker } from '@amset/ui'. Las obligatorias van marcadas.

PropTipoPara qué sirve
labelobligatoriastring—
classNamestring—
defaultOpenbooleanEl calendario empieza abierto. Lo usa el banco para fotografiar el panel.
defaultValue{ readonly start: T; readonly end: T; } | nullEl rango al empezar, sin controlarlo desde fuera.
disabledboolean—
endNamestring—
errorstring—
firstDayOfWeekFirstDayOfWeekPor que dia empieza la semana. Sin esto manda el idioma.
hintstring—
invalidboolean—
isDateUnavailable(date: PlainDate) => booleanDias que no se pueden elegir aunque caigan dentro de los topes.
maxValuePlainDateEl ultimo dia que se puede elegir.
minValuePlainDateEl primer dia que se puede elegir.
months2 | 1Cuántos meses se ven a la vez. Dos es lo cómodo para elegir un rango; si no caben, van uno debajo de otro.
offsetnumber—
onChange(value: DateRange) => voidSolo se avisa con los DOS extremos puestos: medio rango no es un valor.
onOpenChange(open: boolean) => void—
openbooleanEl calendario abierto o cerrado, controlado desde fuera.
placeholderValuePlainDateEl dia de referencia: con que valor arranca un trozo vacio al tocarlo con una flecha. Por defecto HOY.
placementPlacement—
readOnlyboolean—
requiredboolean—
shouldCloseOnSelectbooleanCerrar el calendario al completar el intervalo. Por defecto si: con los dos extremos puestos, ya no hay nada que elegir.
shouldForceLeadingZerosbooleanCeros delante en el dia y el mes. Puesto por defecto.
size"sm" | "md" | "lg"—
startNamestringCon que nombre viaja cada extremo en un formulario de toda la vida.
validationBehavior"aria" | "native"`aria` (por defecto) anuncia el estado sin que el navegador interrumpa el envio con su globo; `native` añade ademas su validacion.
value{ readonly start: T; readonly end: T; } | nullEl rango elegido, controlado desde fuera.
variantFieldVariant—

Acepta además los atributos del elemento que pinta: className, style, data-*, aria-* y sus eventos.

En el banco de pruebas

Cada estado y cada variante, para tocarlos de uno en uno, en su ficha de ui.amset.tech: