useTimePicker

Hook de bajo nivel para el selector de tiempo con rueda de desplazamiento. Gestiona la selección de hora/minuto/segundo basada en el desplazamiento con comportamiento de anclaje. Este hook se usa típicamente internamente por la interfaz de usuario del panel de tiempo, but se puede usar directamente para implementaciones personalizadas de selector de tiempo.

Importar

import { useTimePicker } from "react-date-range-picker-headless";

Uso

import { useState } from "react";
import { useTimePicker } from "react-date-range-picker-headless";
function MyTimePicker() {
const [hour, setHour] = useState(12);
const [minute, setMinute] = useState(0);
const picker = useTimePicker({
hour,
minute,
onHourChange: setHour,
onMinuteChange: setMinute,
precision: "minute",
hourFormat: "24",
minuteStep: 5,
});
return (
<div style={{ display: "flex", gap: 8 }}>
{/* Columna de hora */}
<div
ref={picker.hourListRef}
onScroll={picker.handleHourScroll}
style={{ height: picker.itemHeight * 5, overflow: "auto" }}
>
{picker.hours.map((h) => (
<div
key={h}
onClick={() => picker.handleHourClick(h)}
style={{
height: picker.itemHeight,
fontWeight: h === hour ? "bold" : "normal",
}}
>
{String(h).padStart(2, "0")}
</div>
))}
</div>
{/* Columna de minuto */}
{picker.showMinutes && (
<div
ref={picker.minuteListRef}
onScroll={picker.handleMinuteScroll}
style={{ height: picker.itemHeight * 5, overflow: "auto" }}
>
{picker.minutes.map((m) => (
<div
key={m}
onClick={() => picker.handleMinuteClick(m)}
style={{
height: picker.itemHeight,
fontWeight: m === minute ? "bold" : "normal",
}}
>
{String(m).padStart(2, "0")}
</div>
))}
</div>
)}
{/* Conmutador de período (modo 12 horas) */}
{picker.is12Hour && <button onClick={picker.handlePeriodToggle}>{picker.period}</button>}
</div>
);
}

Opciones

OpciónTipoPredeterminadoDescripción
hournumberRequerido. Hora actual. Modo 24h: 0-23, modo 12h: 1-12.
minutenumberRequerido. Minuto actual.
secondnumberSegundo actual.
periodTimePeriodPeríodo AM/PM actual (requerido para el modo 12h).
onHourChange(hour: number) => voidRequerido. Manejador de cambio de hora.
onMinuteChange(minute: number) => voidRequerido. Manejador de cambio de minuto.
onSecondChange(second: number) => voidManejador de cambio de segundo.
onPeriodChange(period: TimePeriod) => voidManejador de cambio de AM/PM.
precisionTimePrecision"minute"Precisión de tiempo: "hour", "minute", o "second".
hourFormatHourFormat"24"Formato de hora "12" o "24".
minuteStepMinuteStep5Incremento de minutos.
secondStepSecondStep1Incremento de segundos.