A
Adam Sherwood

Radzen Scheduler with Stacked Date

LIVE DEMO
Generated using Instruct UI - An AI for Blazor UI Generation
## What's implemented - Three month calendar pickers (current, next, next+1) rendered as reusable DatePickerCalendar components. - A day schedule view (SchedulerView) showing hourly slots and appointments in a table. - Navigation between months, selectable days via EventCallback/@bind-SelectedDate, and mocked appointment data. ## Key components - DatePickerCalendar (custom Razor component) - SchedulerView (custom Razor component) - AppointmentModel (plain C# model) - Bootstrap elements: card, table, buttons, grid (container-fluid, row, col-*) - Razor features: EventCallback<DateTime>, [Parameter], OnParametersSet, OnInitialized ## How it works - DatePickerCalendar generates a 6x7 calendar matrix in GenerateCalendar() and exposes SelectedDateChanged via EventCallback to parent components. - SchedulerWithCalendars binds selectedDate to three DatePickerCalendar instances using @bind-SelectedDate and passes the value to SchedulerView. - SchedulerView filters a local allAppointments list in OnParametersSet to build dayAppointments for the DisplayDate and renders hourly rows (8 AM–5 PM) in a Bootstrap table. - Interaction patterns use click handlers on table cells, month navigation methods (PreviousMonth/NextMonth), and component parameters for data flow. ## Styling - Visual layout uses Bootstrap classes (container-fluid, row, col-lg-*, card, table-responsive, table-striped). - Local component styles live in component-scoped CSS files (DatePickerCalendar.razor.css, SchedulerView.razor.css) for hover states and table alignment. - Responsive behavior uses Bootstrap grid; calendar columns stack on small screens via col-lg breakpoints and table-responsive wrapper for schedule. ## Reuse steps 1. Add Bootstrap CSS and Font Awesome to the project (index.html or _Host.cshtml) if not present. 2. Drop the Razor components and AppointmentModel into a Blazor project and register any namespaces used. 3. Replace mock data in SchedulerView.OnInitialized with a service call (inject a repository or HttpClient) and map to AppointmentModel. 4. Maintain EventCallback/@bind-SelectedDate usage for parent-child date binding; adapt GenerateCalendar logic for culture or first-day-of-week changes. 5. Optionally add persistence, CRUD methods, and a shared appointments service for state across pages. ## Limitations & next steps - The demo uses in-memory mock appointments; no persistence, authentication, or server API is wired. - No drag-and-drop or multi-slot appointments; EndTime is present on the model but not rendered or validated. - Accessibility, localization of weekday start, and timezone handling require enhancement. - Next steps: inject a data service, add appointment editing dialog or form, implement paging or multi-day views, and add unit tests for calendar generation logic.