File size: 983 Bytes
cf86710 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 | import { endOfMonth, startOfMonth } from "date-fns";
import React, { useState } from "react";
import { type DateRange, DayPicker } from "react-day-picker";
/** Toggle selection of an entire month. */
export function CustomMonthSelection() {
const [monthRange, setMonthRange] = useState<DateRange | undefined>();
const toMonthRange = (day: Date): DateRange => ({
from: startOfMonth(day),
to: endOfMonth(day),
});
const isInRange = (day: Date) =>
monthRange?.from && monthRange?.to
? day >= monthRange.from && day <= monthRange.to
: false;
return (
<DayPicker
showOutsideDays
modifiers={{
selected: monthRange,
range_start: monthRange?.from,
range_end: monthRange?.to,
range_middle: monthRange,
}}
onDayClick={(day, modifiers) => {
if (modifiers.disabled || modifiers.hidden) return;
setMonthRange(isInRange(day) ? undefined : toMonthRange(day));
}}
/>
);
}
|