File size: 1,151 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 37 38 39 40 41 42 43 | import React from "react";
import { DayButton, type DayButtonProps, DayPicker } from "react-day-picker";
const SelectedDateContext = React.createContext<{
selected?: Date;
setSelected?: React.Dispatch<React.SetStateAction<Date | undefined>>;
}>({});
function DayButtonWithContext(props: DayButtonProps) {
const { day, modifiers, ...buttonProps } = props;
const { setSelected } = React.use(SelectedDateContext);
return (
<DayButton
{...buttonProps}
day={day}
modifiers={modifiers}
onClick={() => setSelected?.(undefined)}
onDoubleClick={() => setSelected?.(day.date)}
/>
);
}
export function CustomDayButton() {
const [selected, setSelected] = React.useState<Date>();
return (
<SelectedDateContext.Provider value={{ selected, setSelected }}>
<p>Double click to select a date or single click to clear selection</p>
<DayPicker
mode="single"
selected={selected}
onSelect={setSelected}
components={{
DayButton: DayButtonWithContext,
}}
footer={selected?.toDateString()}
/>
</SelectedDateContext.Provider>
);
}
|