shadcn.io is not affiliated with official shadcn/ui
Calendar examples · Dialog
Calendar as Appointment Picker in Dialog for React
A Book Appointment button that opens a dialog with a calendar and a list of time slots.
The appointment picker inside a Dialog: a Book Appointment button opens it, with the calendar on one side and fourteen time slots on the other. The dialog keeps the booking out of the page until someone asks for it, and its title names the task for screen readers.
Preview
Installation
FAQ
How do I read the date the person picked?
mode="single" makes selected one date and onSelect the setter. This demo stores that date in state, starting from new Date().
How does a time slot get selected?
Each time is a Button with that string as value. The click handler stores event.currentTarget.value in selectedTime, and that button uses variant="default" while the others stay outline.
Where does the list of times come from?
The times are a fixed availableTimes array: 9:00 AM through 11:30 AM, then 1:00 PM through 4:30 PM, in 30 minute steps. The date handler only updates the date, so the highlighted time stays until a time button is clicked.
How does the time list scroll?
The times column is w-62, filled by an absolute inset-0 wrapper. ScrollArea has min-h-0 flex-1 under the heading Available Times, so the buttons scroll inside the row.
Related
- Calendar with Range in DialogA button that opens a dialog with a
- Calendar with Date and Time in DialogA button that opens a dialog with a
- Standard DialogA share dialog with a read-only link, a
- Calendar as Appointment PickerA calendar beside a scrolling list of
- Basic ScrollArea Scroll AreaA basic vertical scroll area for long
- Button with Text (Standard)The one filled action