diff --git a/packages/propel/src/calendar/calendar.stories.tsx b/packages/propel/src/calendar/calendar.stories.tsx index a6a7a7a3fd0..85c427c7db3 100644 --- a/packages/propel/src/calendar/calendar.stories.tsx +++ b/packages/propel/src/calendar/calendar.stories.tsx @@ -97,7 +97,7 @@ export const DisabledWeekends: Story = { mode="single" selected={date} onSelect={setDate} - disabled={(date) => date.getDay() === 0 || date.getDay() === 6} + disabled={(day) => day.getDay() === 0 || day.getDay() === 6} className="rounded-md border" /> @@ -121,7 +121,7 @@ export const MinMaxDates: Story = { mode="single" selected={date} onSelect={setDate} - disabled={(date) => date < tenDaysAgo || date > tenDaysFromNow} + disabled={(day) => day < tenDaysAgo || day > tenDaysFromNow} className="rounded-md border" /> @@ -198,3 +198,22 @@ export const Uncontrolled: Story = { ); }, }; + +export const WithMonthYearDropdowns: Story = { + render(args) { + const [date, setDate] = useState(new Date()); + + return ( +
+ +
+ ); + }, +}; diff --git a/packages/propel/src/calendar/root.tsx b/packages/propel/src/calendar/root.tsx index eb962064be6..fd9516c614f 100644 --- a/packages/propel/src/calendar/root.tsx +++ b/packages/propel/src/calendar/root.tsx @@ -5,13 +5,149 @@ */ import * as React from "react"; -import { DayPicker } from "react-day-picker"; +import { createPortal } from "react-dom"; +import { DayPicker, UI } from "react-day-picker"; +import type { DropdownProps } from "react-day-picker"; +import { ChevronDownIcon } from "../icons/arrows/chevron-down"; import { ChevronLeftIcon } from "../icons/arrows/chevron-left"; import { cn } from "../utils"; export type CalendarProps = React.ComponentProps; +/** + * Replacement for react-day-picker's caption dropdowns (month/year). + * + * The default implementation renders an invisible native `