Loading...
Installation
Usage
import { DropdownMultiCalendar } from "@/components/ruixen/dropdown-multi-calendar";
import { useState } from "react";
export default function App() {
const [dates, setDates] = useState<Date[]>([]);
return (
<DropdownMultiCalendar
selectedDates={dates}
onChange={(newDates) => setDates(newDates)}
minYear={2000}
maxYear={2030}
maxSelectable={10}
label="Select your important dates"
monthFormat="MMM"
className="max-w-md"
/>
);
}
Props
Prop | Type | Default | Description |
---|---|---|---|
selectedDates | Date[] | [] | Currently selected dates |
onChange | (dates: Date[]) => void | - | Callback when selection changes |
minYear | number | 1900 | Minimum selectable year |
maxYear | number | current + 10 | Maximum selectable year |
maxSelectable | number | - | Maximum selectable dates |
label | string | "Select Dates" | Component title |
monthFormat | string | "MMMM" | Month dropdown format |
className | string | - | Container CSS classes |
calendarClassName | string | - | Calendar CSS classes |
dropdownClassName | string | - | Dropdown CSS classes |
Features
- Year/Month Dropdowns: Quick navigation to any month
- Multi-Selection: Select multiple dates across months
- Badge Display: Selected dates shown as removable badges
- Selection Limits: Optional maximum date constraints
- Sorted Display: Dates automatically sorted chronologically
- Easy Navigation: Jump to any year/month combination
Month Format Options
// Full month name
monthFormat = "MMMM"; // January
// Short month name
monthFormat = "MMM"; // Jan
// Numeric month
monthFormat = "M"; // 1
Use Cases
- Event Planning: Select multiple event dates
- Availability Tracking: Mark available dates
- Deadline Management: Set multiple project milestones
- Holiday Planning: Choose vacation dates