Skip to content

Add BitFullCalendar extras component (#12449)#12450

Open
msynk wants to merge 1 commit into
bitfoundation:developfrom
msynk:12449-blazorui-fullcalendar-extras
Open

Add BitFullCalendar extras component (#12449)#12450
msynk wants to merge 1 commit into
bitfoundation:developfrom
msynk:12449-blazorui-fullcalendar-extras

Conversation

@msynk

@msynk msynk commented Jun 13, 2026

Copy link
Copy Markdown
Member

closes #12449

Summary by CodeRabbit

Release Notes

  • New Features
    • Introduced BitFullCalendar component with multiple calendar views: Day, Week, Month, Year, and Agenda.
    • Added Timeline mode for resource scheduling and multi-resource event planning.
    • Implemented event management: create, edit, delete, and drag-and-drop events.
    • Added calendar customization: Dark mode, 24-hour format, color-coded events, and attendee tracking.
    • Included Fluent theme variant alongside the default theme.
    • Integrated localization support and event filtering by color and attendee.

@coderabbitai

coderabbitai Bot commented Jun 13, 2026

Copy link
Copy Markdown

Review Change Stack

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: Repository UI

Review profile: CHILL

Plan: Pro

Run ID: 33fa36a1-960a-4a09-8f2f-2fbe41f18b44

📥 Commits

Reviewing files that changed from the base of the PR and between f7ba0b3 and b27f335.

📒 Files selected for processing (65)
  • src/BlazorUI/Bit.BlazorUI.Extras/Components/FullCalendar/BitFcCalendarBody.razor
  • src/BlazorUI/Bit.BlazorUI.Extras/Components/FullCalendar/BitFcCalendarToast.razor
  • src/BlazorUI/Bit.BlazorUI.Extras/Components/FullCalendar/BitFullCalendar.fluent.scss
  • src/BlazorUI/Bit.BlazorUI.Extras/Components/FullCalendar/BitFullCalendar.razor
  • src/BlazorUI/Bit.BlazorUI.Extras/Components/FullCalendar/BitFullCalendar.scss
  • src/BlazorUI/Bit.BlazorUI.Extras/Components/FullCalendar/BitFullCalendar.ts
  • src/BlazorUI/Bit.BlazorUI.Extras/Components/FullCalendar/Dialogs/BitFcAddEditEventDialog.razor
  • src/BlazorUI/Bit.BlazorUI.Extras/Components/FullCalendar/Dialogs/BitFcDateTimePicker.razor
  • src/BlazorUI/Bit.BlazorUI.Extras/Components/FullCalendar/Dialogs/BitFcEventDetailsDialog.razor
  • src/BlazorUI/Bit.BlazorUI.Extras/Components/FullCalendar/Dialogs/BitFcEventListDialog.razor
  • src/BlazorUI/Bit.BlazorUI.Extras/Components/FullCalendar/DragDrop/BitFcDraggableEvent.razor
  • src/BlazorUI/Bit.BlazorUI.Extras/Components/FullCalendar/DragDrop/BitFcDroppableArea.razor
  • src/BlazorUI/Bit.BlazorUI.Extras/Components/FullCalendar/Enums/BitFullCalendarAgendaGroupBy.cs
  • src/BlazorUI/Bit.BlazorUI.Extras/Components/FullCalendar/Enums/BitFullCalendarBadgeVariant.cs
  • src/BlazorUI/Bit.BlazorUI.Extras/Components/FullCalendar/Enums/BitFullCalendarMode.cs
  • src/BlazorUI/Bit.BlazorUI.Extras/Components/FullCalendar/Enums/BitFullCalendarTheme.cs
  • src/BlazorUI/Bit.BlazorUI.Extras/Components/FullCalendar/Enums/BitFullCalendarView.cs
  • src/BlazorUI/Bit.BlazorUI.Extras/Components/FullCalendar/Header/BitFcCalendarHeader.razor
  • src/BlazorUI/Bit.BlazorUI.Extras/Components/FullCalendar/Header/BitFcDateNavigator.razor
  • src/BlazorUI/Bit.BlazorUI.Extras/Components/FullCalendar/Header/BitFcFilterEvents.razor
  • src/BlazorUI/Bit.BlazorUI.Extras/Components/FullCalendar/Header/BitFcModeTabs.razor
  • src/BlazorUI/Bit.BlazorUI.Extras/Components/FullCalendar/Header/BitFcSettings.razor
  • src/BlazorUI/Bit.BlazorUI.Extras/Components/FullCalendar/Header/BitFcTodayButton.razor
  • src/BlazorUI/Bit.BlazorUI.Extras/Components/FullCalendar/Header/BitFcViewTabs.razor
  • src/BlazorUI/Bit.BlazorUI.Extras/Components/FullCalendar/Models/BitFullCalendarAttendee.cs
  • src/BlazorUI/Bit.BlazorUI.Extras/Components/FullCalendar/Models/BitFullCalendarCell.cs
  • src/BlazorUI/Bit.BlazorUI.Extras/Components/FullCalendar/Models/BitFullCalendarChangeEventArgs.cs
  • src/BlazorUI/Bit.BlazorUI.Extras/Components/FullCalendar/Models/BitFullCalendarColorOption.cs
  • src/BlazorUI/Bit.BlazorUI.Extras/Components/FullCalendar/Models/BitFullCalendarColorScheme.cs
  • src/BlazorUI/Bit.BlazorUI.Extras/Components/FullCalendar/Models/BitFullCalendarDateChangeEventArgs.cs
  • src/BlazorUI/Bit.BlazorUI.Extras/Components/FullCalendar/Models/BitFullCalendarEvent.cs
  • src/BlazorUI/Bit.BlazorUI.Extras/Components/FullCalendar/Models/BitFullCalendarOptions.cs
  • src/BlazorUI/Bit.BlazorUI.Extras/Components/FullCalendar/Models/BitFullCalendarResource.cs
  • src/BlazorUI/Bit.BlazorUI.Extras/Components/FullCalendar/Models/BitFullCalendarTexts.cs
  • src/BlazorUI/Bit.BlazorUI.Extras/Components/FullCalendar/Services/BitFcAgendaScrollInterop.cs
  • src/BlazorUI/Bit.BlazorUI.Extras/Components/FullCalendar/Services/BitFcTimeGridScrollInterop.cs
  • src/BlazorUI/Bit.BlazorUI.Extras/Components/FullCalendar/Services/BitFcTimelineScrollInterop.cs
  • src/BlazorUI/Bit.BlazorUI.Extras/Components/FullCalendar/Services/BitFullCalendarChangeNotifier.cs
  • src/BlazorUI/Bit.BlazorUI.Extras/Components/FullCalendar/Services/BitFullCalendarHelpers.cs
  • src/BlazorUI/Bit.BlazorUI.Extras/Components/FullCalendar/Services/BitFullCalendarState.cs
  • src/BlazorUI/Bit.BlazorUI.Extras/Components/FullCalendar/Views/AgendaView/BitFcAgendaEvents.razor
  • src/BlazorUI/Bit.BlazorUI.Extras/Components/FullCalendar/Views/DayWeekView/BitFcCalendarDayView.razor
  • src/BlazorUI/Bit.BlazorUI.Extras/Components/FullCalendar/Views/DayWeekView/BitFcCalendarTimeline.razor
  • src/BlazorUI/Bit.BlazorUI.Extras/Components/FullCalendar/Views/DayWeekView/BitFcCalendarWeekView.razor
  • src/BlazorUI/Bit.BlazorUI.Extras/Components/FullCalendar/Views/DayWeekView/BitFcDayViewMultiDayEventsRow.razor
  • src/BlazorUI/Bit.BlazorUI.Extras/Components/FullCalendar/Views/DayWeekView/BitFcEventBlock.razor
  • src/BlazorUI/Bit.BlazorUI.Extras/Components/FullCalendar/Views/DayWeekView/BitFcMiniCalendar.razor
  • src/BlazorUI/Bit.BlazorUI.Extras/Components/FullCalendar/Views/DayWeekView/BitFcRenderGroupedEvents.razor
  • src/BlazorUI/Bit.BlazorUI.Extras/Components/FullCalendar/Views/DayWeekView/BitFcTimeColumn.razor
  • src/BlazorUI/Bit.BlazorUI.Extras/Components/FullCalendar/Views/DayWeekView/BitFcWeekViewMultiDayEventsRow.razor
  • src/BlazorUI/Bit.BlazorUI.Extras/Components/FullCalendar/Views/MonthView/BitFcCalendarMonthView.razor
  • src/BlazorUI/Bit.BlazorUI.Extras/Components/FullCalendar/Views/MonthView/BitFcDayCell.razor
  • src/BlazorUI/Bit.BlazorUI.Extras/Components/FullCalendar/Views/MonthView/BitFcEventBullet.razor
  • src/BlazorUI/Bit.BlazorUI.Extras/Components/FullCalendar/Views/MonthView/BitFcMonthEventBadge.razor
  • src/BlazorUI/Bit.BlazorUI.Extras/Components/FullCalendar/Views/TimelineMode/BitFcTimelineDayView.razor
  • src/BlazorUI/Bit.BlazorUI.Extras/Components/FullCalendar/Views/TimelineMode/BitFcTimelineEventBlock.razor
  • src/BlazorUI/Bit.BlazorUI.Extras/Components/FullCalendar/Views/TimelineMode/BitFcTimelineLayout.razor
  • src/BlazorUI/Bit.BlazorUI.Extras/Components/FullCalendar/Views/TimelineMode/BitFcTimelineMonthView.razor
  • src/BlazorUI/Bit.BlazorUI.Extras/Components/FullCalendar/Views/TimelineMode/BitFcTimelineWeekView.razor
  • src/BlazorUI/Bit.BlazorUI.Extras/Components/FullCalendar/Views/YearView/BitFcCalendarYearView.razor
  • src/BlazorUI/Bit.BlazorUI.Extras/Styles/extra-components.scss
  • src/BlazorUI/Demo/Client/Bit.BlazorUI.Demo.Client.Core/Pages/Components/Extras/FullCalendar/BitFullCalendarDemo.razor
  • src/BlazorUI/Demo/Client/Bit.BlazorUI.Demo.Client.Core/Pages/Components/Extras/FullCalendar/BitFullCalendarDemo.razor.cs
  • src/BlazorUI/Demo/Client/Bit.BlazorUI.Demo.Client.Core/Pages/Home/ComponentsSection.razor
  • src/BlazorUI/Demo/Client/Bit.BlazorUI.Demo.Client.Core/Shared/MainLayout.razor.NavItems.cs

Walkthrough

Adds a new FullCalendar Blazor component suite with shared models, state, helpers, views, timeline mode, styling, and a demo page. It also wires navigation, localization, change notifications, drag/drop, resizing, and JS scrolling helpers.

Changes

FullCalendar suite

Layer / File(s) Summary
Models, state, and helpers
src/BlazorUI/Bit.BlazorUI.Extras/Components/FullCalendar/*
Shared enums, models, helpers, state, change notification, and JS interop wrappers are added for calendar data, filtering, navigation, and resize/scroll behavior.
Calendar shell and header controls
src/BlazorUI/Bit.BlazorUI.Extras/Components/FullCalendar/*
The root component, header controls, filter/settings UI, mode/view tabs, date navigation, and toast surface are added and wired through shared cascading state and callbacks.
Day, week, month, year, and agenda views
src/BlazorUI/Bit.BlazorUI.Extras/Components/FullCalendar/*
Agenda, day/week, month, and year views plus their shared cells, dialogs, drag/drop surfaces, and event rendering components are added around the shared calendar state.
Timeline mode views
src/BlazorUI/Bit.BlazorUI.Extras/Components/FullCalendar/*
Timeline layout, day/week/month timeline views, and horizontal resize behavior are added with resource grouping, scroll targeting, and event block interactions.
Demo and navigation
src/BlazorUI/Demo/Client/.../FullCalendar/*, src/BlazorUI/Demo/Client/.../Home/*, src/BlazorUI/Demo/Client/.../Shared/*
The demo page, demo code-behind, and navigation entries are added for the new FullCalendar route.

Sequence Diagram(s)

sequenceDiagram
  participant BitFullCalendar
  participant BitFullCalendarState
  participant BitFcCalendarHeader
  participant BitFcCalendarBody
  participant BitFcCalendarDayView
  participant BitFcTimelineDayView
  participant BitFcAgendaEvents
  participant BitFcCalendarToast
  BitFullCalendar->>BitFullCalendarState: initialize events, culture, options
  BitFullCalendar->>BitFcCalendarHeader: cascade State, Texts, Options
  BitFullCalendar->>BitFcCalendarBody: cascade State and templates
  BitFullCalendarState->>BitFcCalendarHeader: OnStateChanged
  BitFullCalendarState->>BitFcCalendarBody: OnStateChanged
  BitFcCalendarBody->>BitFcCalendarDayView: render day/week view data
  BitFcCalendarBody->>BitFcTimelineDayView: render timeline view data
  BitFcCalendarBody->>BitFcAgendaEvents: render agenda view data
  BitFullCalendarState->>BitFcCalendarToast: update toast list
Loading

Estimated code review effort

🎯 5 (Critical) | ⏱️ ~120+ minutes

Poem

🐰 I hopped through views from dawn to dusk,
With calendar blooms and timeline musk.
Toasts went pop and headers gleamed,
New rabbit calendars softly dreamed.
Hop, hop—FullCalendar’s in the burrow!

✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

The new BitFullCalendar extras component

1 participant