react-day-picker / examples /CustomRollingWindow.tsx
AbdulElahGwaith's picture
Upload folder using huggingface_hub
cf86710 verified
import { addDays } from "date-fns";
import React, { useState } from "react";
import { type DateRange, DayPicker } from "react-day-picker";
/** Select a fixed-length range starting from the clicked day. */
export function CustomRollingWindow() {
const [range, setRange] = useState<DateRange | undefined>();
const windowLength = 7;
const applyRange = (start: Date): DateRange => ({
from: start,
to: addDays(start, windowLength - 1),
});
return (
<DayPicker
modifiers={{
selected: range,
range_start: range?.from,
range_end: range?.to,
range_middle: range,
}}
onDayClick={(day, modifiers) => {
if (modifiers.disabled || modifiers.hidden) return;
setRange(modifiers.selected ? undefined : applyRange(day));
}}
onDayKeyDown={(day, modifiers, e) => {
if (e.key === " " || e.key === "Enter") {
e.preventDefault();
if (modifiers.disabled || modifiers.hidden) return;
setRange(modifiers.selected ? undefined : applyRange(day));
}
}}
/>
);
}