Extras
FullCalendar
BitFullCalendar is a full-featured scheduling calendar: day, week, month, year, agenda and resource timeline views; recurring and all-day events; built-in create, edit and delete; drag-and-drop, resizing and range selection; business hours and booking rules; templates, keyboard navigation, theming, and culture-aware, right-to-left-ready rendering.
Notes
Introduction
Usage
Every example is live. Open its code to see exactly what produced the component running underneath.
Basic
Views
Settings
Time grid
Work week
Month grid
All-day events
Recurring events
Event colors
#db2777, oklch(...)); anything else takes --bit-FullCalendar-event-color.
Templates
Resource timeline
Date bounds
Booking rules
Read-only & permissions
OnChange & OnChanging
Binding
Loading
Custom toolbar
Localization
fa-IR).
Accessibility
Cascading parameters
Style & Class
RTL
CSS variables
The public custom properties this component reads off its root, for what no parameter covers.
Every variable is read with a fallback and never declared by the component, so it inherits like any other custom property:
set one on :root (or in a [bit-theme] block) to restyle every instance, on any ancestor to restyle the ones inside it,
or on the Style of one instance to restyle it - and any instance nested inside it, which inherits the value too; a parameter changes one alone,
as does the real CSS property on the instance's Style / Styles when that property does not inherit (opacity: 1 keeps
one disabled instance undimmed without undimming a disabled one inside it), while an inherited one such as color or
font-family also reaches the nested instances that do not set it themselves. Leave a variable unset and the component
falls back to the theme token beside it.
BitFullCalendar CSS variables
| Name | Default value | Description |
|---|---|---|
| --bit-FullCalendar-background | var(--bit-clr-bg-pri) | Surface of the calendar, its dialogs and popups. |
| --bit-FullCalendar-secondary-background | var(--bit-clr-bg-sec) | Secondary surfaces: the tab strips, the day-view sidebar, sticky group titles, the timeline gutter. |
| --bit-FullCalendar-hover-background | var(--bit-clr-bg-pri-hover) | Background of a hovered cell, slot, row or control. |
| --bit-FullCalendar-color | var(--bit-clr-fg-pri) | Text color. |
| --bit-FullCalendar-secondary-color | var(--bit-clr-fg-sec) | Secondary text: weekday headers, group titles, descriptions, and the placeholders of the search box and the event dialog's fields. |
| --bit-FullCalendar-muted-color | var(--bit-clr-fg-ter) | Muted text: hour labels, week numbers, days of the neighbouring months. |
| --bit-FullCalendar-border-color | var(--bit-clr-brd-ter) | Grid lines and the border of the calendar. |
| --bit-FullCalendar-control-border-color | var(--bit-clr-brd-pri) | Edges of the fields, selects, search box and switch tracks (kept at 3:1 against the surface). |
| --bit-FullCalendar-accent-color | var(--bit-clr-pri) | Accent: today's marker, the primary button, the selected choices, the focus outline of a slot. |
| --bit-FullCalendar-accent-hover-color | var(--bit-clr-pri-hover) | Accent of a hovered primary button. |
| --bit-FullCalendar-accent-text-color | var(--bit-clr-pri-text) | Text drawn on the accent color. |
| --bit-FullCalendar-event-color | --bit-FullCalendar-accent-color | Color of an event whose Color is neither a color option nor a CSS color. Its chip, swatch and bullet are derived from it. |
| --bit-FullCalendar-event-border-radius | var(--bit-shp-radius-control) | Corner radius of the event badges and blocks. |
| --bit-FullCalendar-background-event-opacity | 0.16 | How strongly a background event's color tints its band, from 0 to 1. |
| --bit-FullCalendar-today-background | 6% accent | Tint of today's column in the week grid. |
| --bit-FullCalendar-selection-background | 22% accent | The slots a range selection covers. |
| --bit-FullCalendar-off-hours-background | 7% secondary text | Shading outside the business hours (Settings.HighlightBusinessHours). |
| --bit-FullCalendar-now-indicator-color | var(--bit-clr-err) | The current-time line of the time grids and the timeline. |
| --bit-FullCalendar-border-radius | var(--bit-shp-radius-surface) | Corner radius of the calendar itself and of the year-view months. |
| --bit-FullCalendar-height | 600px | Height of the calendar. Use 100% inside a sized container. |
| --bit-FullCalendar-hour-height | 96px | Height of one hour of the day and week grids; events, the now line, scrolling and resizing follow it. |
| --bit-FullCalendar-time-gutter-width | 3.75rem | Width of the hour-label gutter beside the day and week grids. |
| --bit-FullCalendar-week-number-width | 34px | Width of the week-number rail of the month grid. |
| --bit-FullCalendar-month-cell-min-height | 6.25rem | Minimum height of a month-grid day. |
| --bit-FullCalendar-dialog-max-width | 30rem | Maximum width of the built-in dialogs. |
API
Every parameter, public member, sub-class and enum this component exposes.
BitFullCalendar parameters
| Name | Type | Default value | Description |
|---|---|---|---|
| AgendaEventTemplate | RenderFragment<BitFullCalendarEvent>? | null | Replaces the content of an event row in the agenda view and in the event lists ("+N more", a year-view day). The row stays the button that opens the event. |
| Classes | BitFullCalendarClassStyles? | null | Custom CSS classes for the different parts of the calendar. |
| Culture | CultureInfo? | CultureInfo.CurrentUICulture | Sets calendar/date rendering and formatting. Do not use with @rendermode="InteractiveServer" - use CultureName instead. |
| CultureName | string? | null | Culture name shortcut (e.g. "fa-IR", "ar-SA", "fr-FR"). Takes precedence over Culture when both are supplied. |
| Date | DateTime | DateTime.Today | The currently selected (anchor) date of the calendar that determines the visible date range. (two-way bound) |
| DayEventTemplate | RenderFragment<BitFullCalendarEvent>? | null | Replaces the default event card content inside day-view time-grid blocks. |
| DefaultDate | DateTime? | null | The default selected date used initially when the Date parameter is not set. Determines the date range shown on first render. |
| DefaultMode | BitFullCalendarMode? | null | The default layout mode used initially when the Mode parameter is not set. Event shows the day/week/month/year/agenda views. Timeline shows a resources × time grid (requires Resources to be non-empty) and supports only the day, week, and month layouts - Year and Agenda fall back to the week layout in Timeline mode. |
| DefaultView | BitFullCalendarView? | null | The default view used initially when the View parameter is not set. In Event mode any of Day, Week, Month, Year, or Agenda apply; in Timeline mode only Day, Week, and Month are supported (Year and Agenda fall back to the week layout). |
| EventColorOptions | IReadOnlyList<BitFullCalendarColorOption>? | null | Ordered list of event colors shown in pickers, filters, agenda headers, badges, and bullets. |
| EventDetailsTemplate | RenderFragment<BitFullCalendarEvent>? | null | Extra content for the built-in event details dialog, under the built-in rows. |
| EventEditorTemplate | RenderFragment<BitFullCalendarEvent>? | null | Extra fields for the built-in add/edit dialog. It receives the draft, whose Data the save commits; assign a new Data rather than changing the object it starts with, so Cancel leaves the event as it was. |
| Events | List<BitFullCalendarEvent>? | null | List of calendar events to display. |
| HideFilters | bool | false | When true, hides the built-in color and attendee filter dropdowns. Consumers provide their own filter UI and pass pre-filtered events. |
| HideHeader | bool | false | When true, the whole toolbar is removed - navigation, mode and view tabs, filters, the Add Event button, and the settings gear - so the calendar can be driven entirely from the consumer's own chrome through the bound View/Mode/Date parameters or the navigation methods. |
| HideSettings | bool | false | When true, hides the built-in settings gear button. Settings can still be driven programmatically through the Settings parameter. |
| IsLoading | bool | false | Runs an indeterminate progress bar across the top of the body and marks it busy for assistive technology, e.g. while the events of a range reported by OnDateChange are fetched. |
| MaxDate | DateTime? | null | The latest date the calendar can navigate to and display. Navigation past it is refused, the next button is disabled, and a bound Date beyond it is pulled back. |
| MinDate | DateTime? | null | The earliest date the calendar can navigate to and display. Navigation before it is refused, the previous button is disabled, and a bound Date before it is pulled forward. A window whose bounds are inverted is ignored. |
| Mode | BitFullCalendarMode | BitFullCalendarMode.Event | The currently active layout mode of the calendar (Event or Timeline). Timeline requires Resources to be non-empty and only supports the Day, Week, and Month views (Year and Agenda fall back to the week layout). (two-way bound) |
| MonthCellTemplate | RenderFragment<BitFullCalendarCell>? | null | Extra content for each day of the month grid, under the day number and above the events - a holiday, a price, an availability count. |
| MonthEventTemplate | RenderFragment<BitFullCalendarEvent>? | null | Replaces the default event badge content inside month-view cells. |
| OnAddClick | EventCallback<BitFullCalendarEvent?> | When assigned, the built-in add dialog is suppressed. Receives a draft event with the start/end dates pre-filled from the calendar's selected date and configured start hour (or the clicked slot when adding from a time grid). | |
| OnChange | EventCallback<BitFullCalendarChangeEventArgs> | Raised when a user adds, edits, or deletes an event (Kind: Add, Edit, Delete; Source: Dialog, Drag, Resize). | |
| OnChanging | EventCallback<BitFullCalendarChangingEventArgs> | Raised before a user-driven add, edit or delete is committed (after the built-in rules pass). Set Cancel to refuse it: the event goes back, no OnChange is raised, and the add/edit dialog stays open. | |
| OnDateChange | EventCallback<BitFullCalendarDateChangeEventArgs> | Raised on the first render - as the calendar initializes, and awaited, when it is prerendered, so the events fetched for it are in the prerendered page - and whenever the visible range moves (navigation, a view switch). Carries the inclusive Start/End and the active View - fetch that range here. | |
| OnEventClick | EventCallback<BitFullCalendarEvent> | When assigned, the built-in event details dialog is suppressed when an event is clicked. Receives the clicked event. | |
| OnModeChange | EventCallback<BitFullCalendarMode> | Raised when the active layout mode changes (switching between the Event and Timeline tabs). | |
| OnRefused | EventCallback<BitFullCalendarChangeRefusal> | Raised when the calendar refuses a user-driven change, from a drag, a resize, their keyboard equivalents or a save of the built-in dialog: an overlap while Settings.AllowEventOverlap is false, an event marked IsBlocking in the way, a target outside the MinDate/MaxDate window or the business hours (Settings.RestrictToBusinessHours), or a change to what is read-only (the calendar, its edit permissions or an event marked IsReadOnly). A drag or resize also shows the reason as a notice, a dialog next to its actions; a change OnChanging cancels is not reported here. | |
| OnSettingsChange | EventCallback<BitFullCalendarSettings> | Raised after the user changes a preference from the built-in settings panel, once the new values have been written back onto the Settings instance (which the callback receives). | |
| OnViewChange | EventCallback<BitFullCalendarView> | Raised when the active view changes (selecting a view tab or navigating from the year overview into a month). | |
| ReadOnly | bool | false | When true, the calendar becomes presentation-only: the add button and per-cell add affordances are hidden, drag-and-drop and resizing are disabled, and the edit/delete actions are removed from the event details dialog. Navigation, view/mode switching, filtering, and reading event details keep working. |
| ResourceTemplate | RenderFragment<BitFullCalendarResource>? | null | Replaces the title and subtitle in the header cell of a timeline resource row. |
| Resources | IReadOnlyList<BitFullCalendarResource>? | null | Resources displayed as rows in Timeline mode. Each event's Resource property is matched against the resource Id. The Timeline mode tab is hidden when null or empty. |
| Settings | BitFullCalendarSettings | new() | The preferences: time format, hour window, slot duration, hidden days, week numbers, business hours, booking rules, badge style, agenda grouping and event layout. Changes the user makes from the settings gear are written back onto it. |
| Styles | BitFullCalendarClassStyles? | null | Custom CSS styles for the different parts of the calendar. |
| Texts | BitFullCalendarTexts | new() | Custom UI strings for labels, placeholders, action buttons, aria labels, and validation messages. |
| TimeProvider | TimeProvider? | null | The clock "now" and "today" are read from: the today marker, the current-time line, the Today button and the opening date. Defaults to TimeProvider.System, which on Blazor Server is the server's clock - pass one whose LocalTimeZone is the user's, or a fixed one for tests. |
| TimelineEventTemplate | RenderFragment<BitFullCalendarEvent>? | null | Replaces the default event card content inside Timeline mode blocks. |
| View | BitFullCalendarView | BitFullCalendarView.Month | The currently active view of the calendar (Day, Week, Month, Year, Agenda). In Timeline mode only Day, Week, and Month are supported (Year and Agenda fall back to the week layout). (two-way bound) |
| Views | IReadOnlyList<BitFullCalendarView>? | null | The views the calendar offers, in the order the view tabs render them. When null or empty, every view (Day, Week, Month, Year, Agenda) is offered in that order; unknown and repeated entries are ignored. Excluded views are unreachable - the tabs omit them and View, DefaultView, and the indirect navigation paths are clamped into the list. The tab strip is hidden when a single view is left, and Timeline mode is unavailable when none of Day, Week, or Month is listed. |
| WeekEventTemplate | RenderFragment<BitFullCalendarEvent>? | null | Replaces the default event card content inside week-view time-grid blocks. |
BitFullCalendar public members
| Name | Type | Default value | Description |
|---|---|---|---|
| State | BitFullCalendarState | The live state: the active view, mode and date, the resolved settings and the event projections the views render from. Read it; drive the calendar through the parameters and the methods below. | |
| GoToDate | Action<DateTime> | Moves the calendar to the supplied date, clamped into the MinDate/MaxDate window. | |
| GoToToday | Action | Moves the calendar to today, clamped into the MinDate/MaxDate window. | |
| NavigateNext | Action | Steps one period forward (a day, week, month or year, depending on the view). Does nothing past MaxDate. | |
| NavigatePrevious | Action | Steps one period back. Does nothing before MinDate. | |
| ChangeView | Action<BitFullCalendarView> | Switches the active view, clamped into Views and, in Timeline mode, into the layouts the timeline renders. | |
| ChangeMode | Action<BitFullCalendarMode> | Switches the layout mode. Timeline falls back to Event while there is no resource or no timeline-capable view. | |
| GetVisibleRange | Func<(DateTime Start, DateTime End)> | The inclusive start and end dates currently on screen. | |
| ScrollToTimeAsync | Func<TimeSpan, Task<bool>> | Scrolls the day and week grids, or the day and week timeline, to a time (clamped into the visible hours). Returns false when the active view has no time axis. |
BitComponentBase parameters
| Name | Type | Default value | Description |
|---|---|---|---|
| AriaLabel | string? | null | Gets or sets the accessible label for the component, used by assistive technologies. |
| Class | string? | null | Gets or sets the CSS class name(s) to apply to the rendered element. |
| Dir | BitDir? | null | Gets or sets the text directionality for the component's content. |
| Disabled | bool | false | Gets or sets a value indicating whether the component is disabled and cannot respond to user interaction. |
| ForceAnimation | bool | false | Gets or sets a value indicating whether the component's animations play at their full duration even when reduced motion is requested. |
| HtmlAttributes | Dictionary<string, object> | new Dictionary<string, object>() | Captures additional HTML attributes to be applied to the rendered element, in addition to the component's parameters. An attribute written on the component wins over an entry of the same name. |
| Id | string? | null | Gets or sets the unique identifier for the component's root element. |
| Style | string? | null | Gets or sets the CSS style string to apply to the rendered element. |
| TabIndex | string? | null | Gets or sets the tab order index for the component when navigating with the keyboard. |
| Visibility | BitVisibility | BitVisibility.Visible | Gets or sets the visibility state (visible, hidden, or collapsed) of the component. |
BitComponentBase public members
| Name | Type | Default value | Description |
|---|---|---|---|
| UniqueId | Guid | Guid.NewGuid() | Gets the readonly unique identifier for the component's root element, assigned when the component instance is constructed. |
| RootElement | ElementReference | Gets the reference to the root HTML element associated with this component. |
BitFullCalendarClassStyles properties
Custom CSS classes/styles for the different parts of the BitFullCalendar.
| Name | Type | Default value | Description |
|---|---|---|---|
| Root | string? | null | Custom CSS classes/styles for the root element of the BitFullCalendar. |
| Header | string? | null | Custom CSS classes/styles for the toolbar. |
| Body | string? | null | Custom CSS classes/styles for the body that renders the active view. |
| Event | string? | null | Custom CSS classes/styles for every event surface (month badges, day/week and timeline blocks, agenda rows), beside the event's own CssClass. |
| Dialog | string? | null | Custom CSS classes/styles for the built-in dialogs. |
BitFullCalendarEvent properties
Represents a single calendar event rendered across the day, week, month, year, agenda, and timeline views.
| Name | Type | Default value | Description |
|---|---|---|---|
| Id | string | string.Empty | Unique identifier of the event. |
| Title | string | string.Empty | Event title shown on the event card, badge, and dialogs. |
| Description | string | string.Empty | Event description shown in the details and add/edit dialogs. |
| StartDate | DateTime | Start date and time of the event. | |
| EndDate | DateTime | End date and time of the event. | |
| Color | string | BitFullCalendarColorScheme.FallbackColorId | Id of a BitFullCalendarColorOption from the configured palette, or - when no option matches - a CSS color of its own (a hex or a color function such as rgb(), hsl(), oklch(), var()). Anything else is drawn in --bit-FullCalendar-event-color. |
| Attendees | List<BitFullCalendarAttendee> | [] | People attending the event. |
| Resource | string? | null | Optional resource identifier linking this event to a BitFullCalendarResource. Used by the timeline view to place the event on the matching resource row. null or empty means the event is unassigned. |
| IsAllDay | bool | false | Marks the event as lasting the whole day (or span of days) rather than a time range. It renders in the all-day row above the day and week time grids and its badge shows no clock time. |
| IsReadOnly | bool | false | Locks this single event: it cannot be dragged, resized, edited, or deleted even while the calendar itself is editable. Reading its details keeps working. |
| IsBackground | bool | false | Draws the event as a shaded band behind the grid (a lunch break, a holiday) instead of a card: never clicked, focused, dragged or listed, and not an overlap. The time grids and the timeline draw its range (on its Resource's row, or every row); the month grid tints the days it covers whole. Its title is spoken with the slots it covers. |
| IsBlocking | bool | false | Keeps every other event out of this event's range - an add, move or resize overlapping it is refused as Blocked, even while overlaps are allowed. With a Resource it blocks that resource only. A blocking background band is hatched. |
| CssClass | string? | null | Extra CSS class(es) applied to every element that renders this event - the month badge, the day/week block, the timeline block, and the agenda row. |
| Recurrence | BitFullCalendarRecurrence? | null | Repeat rule that turns this event into a series master. The calendar expands it into occurrences across the visible range; the master itself is never rendered once it has one. |
| SeriesId | string? | null | Set on a generated occurrence to the Id of the series master it came from. Null on every event a consumer supplied. |
| OccurrenceDate | DateTime? | null | Set on a generated occurrence to the date it falls on, so a click handler can tell which one of a series the user picked. |
| IsOccurrence | bool | Read-only. True when this event was generated by expanding a recurrence rule. | |
| IsSingleDay | bool | Read-only. True when the event starts and ends on the same date. | |
| IsMultiDay | bool | Read-only. True when the event spans more than one date. | |
| IsAllDayOrMultiDay | bool | Read-only. True when the event belongs in the all-day row: either it is marked IsAllDay or it spans more than one date. | |
| Duration | TimeSpan | Read-only. The difference between EndDate and StartDate. | |
| Data | object? | null | Optional consumer-defined payload available to templates and click handlers. |
BitFullCalendarRecurrence properties
The repeat rule of a recurring event. The event it sits on is the series master: it defines the first occurrence's date, time, and length, and every later occurrence repeats that same length. Recurrence is computed on the Gregorian calendar, independent of the culture the calendar renders in.
| Name | Type | Default value | Description |
|---|---|---|---|
| Frequency | BitFullCalendarRecurrenceFrequency | BitFullCalendarRecurrenceFrequency.Daily | How often the event repeats. |
| Interval | int | 1 | Number of frequency units between two occurrences - 2 with a weekly frequency means every other week. Values below 1 are treated as 1. |
| DaysOfWeek | IReadOnlyList<DayOfWeek>? | null | Weekdays the series occurs on: every week for a weekly series, or on that week of the month for a monthly or yearly series with a WeekOfMonth. When null or empty the series follows the start date's own weekday. Ignored by the other frequencies. |
| WeekOfMonth | BitFullCalendarWeekOfMonth? | null | Places a monthly or yearly series on a weekday of the month instead of the start date's day number - Third with DaysOfWeek set to Tuesday is the third Tuesday. A yearly series stays in the start date's month. Ignored by the other frequencies. |
| Count | int? | null | Total number of occurrences the pattern produces, counting the first. Null leaves the series open-ended unless Until closes it; when both are set, whichever ends the series first wins. |
| Until | DateTime? | null | Last date the pattern may occur on (inclusive). Null leaves the series open-ended unless Count closes it. |
| ExceptionDates | IReadOnlyList<DateTime>? | null | Dates the series skips - a cancelled occurrence, a holiday. Only the date part is compared, a skipped date still counts against Count, and it also removes an AdditionalDates entry on the same date. |
| AdditionalDates | IReadOnlyList<DateTime>? | null | Dates the series also occurs on outside its pattern - a make-up session. Each repeats the master's time of day and length, neither counts against Count nor stops at Until, and a date the pattern already produces is not doubled. |
BitFullCalendarAttendee properties
Represents a person attending an event, shown in the event details and add/edit dialogs.
| Name | Type | Default value | Description |
|---|---|---|---|
| FirstName | string | string.Empty | First name of the attendee. |
| LastName | string | string.Empty | Last name of the attendee. |
| Id | string? | null | Optional identifier of the attendee. |
| FullName | string | Read-only. The combined and trimmed first and last name. | |
| Initials | string | Read-only. The uppercased initials derived from the first and last name. |
BitFullCalendarColorOption properties
Describes one selectable event color shown in the picker, filters, agenda headers, badges, bullets, and swatches. Events reference a color through its Id.
| Name | Type | Default value | Description |
|---|---|---|---|
| Id | string | string.Empty | Stable identifier of the color matched against BitFullCalendarEvent.Color (case-insensitive). Use a short, slug-style value such as "blue" or "skyblue". |
| Title | string | string.Empty | Display label shown in pickers, filters, agenda headers, and event details. Used as-is with no localization. |
| Value | string | string.Empty | CSS color value used for swatches, bullets, badge accents, and chip surfaces. Any valid CSS color such as hex, rgb(), hsl(), or a named color. Badge background, border, and text contrast tints are derived from this value at runtime. |
| Defaults | static IReadOnlyList<BitFullCalendarColorOption> | Built-in palette (blue, green, red, yellow, purple, orange) used when EventColorOptions is null or empty. |
BitFullCalendarCell properties
One day of the month grid, as MonthCellTemplate receives it.
| Name | Type | Default value | Description |
|---|---|---|---|
| Day | int | 0 | The day number in the active calendar system (a Persian date shows its own day). |
| CurrentMonth | bool | false | True for a day of the month being shown; false for one borrowed from a neighbouring month. |
| Date | DateTime | The date of the day. |
BitFullCalendarResource properties
A schedulable resource shown as a row in the resource timeline view (for example a meeting room, a person, or a piece of equipment). Events are linked to a resource through BitFullCalendarEvent.Resource matching Id.
| Name | Type | Default value | Description |
|---|---|---|---|
| Id | string | Required. Stable, non-blank identifier matched against BitFullCalendarEvent.Resource. Cannot be null, empty, or whitespace - a blank id is rejected at assignment time. | |
| Title | string | string.Empty | Display name for the resource (for example "Bay Wing", "Alice Johnson", "Meeting Room 3B"). |
| Subtitle | string? | null | Optional subtitle shown below the resource title (for example building or department). |
| Data | object? | null | Optional consumer-defined payload available to templates and click handlers. |
BitFullCalendarSettings properties
The preferences of the calendar. Every value is applied on first render and again whenever it changes; what the user changes from the settings gear is written back onto the same instance.
| Name | Type | Default value | Description |
|---|---|---|---|
| Use24HourFormat | bool | true | Uses 24-hour time format instead of 12-hour (AM/PM). |
| BadgeVariant | BitFullCalendarBadgeVariant | BitFullCalendarBadgeVariant.Colored | Badge display style in the month view. |
| StartOfDayHour | int | 8 | Hour the day/week time grid scrolls to on first render. Clamped into the VisibleStartHour/VisibleEndHour window. |
| VisibleStartHour | int | 0 | First hour rendered by the day, week, and timeline day/week time grids (0–23). Equivalent to slotMinTime in other calendar libraries. |
| VisibleEndHour | int | 24 | Exclusive last hour rendered by the day, week, and timeline day/week time grids (1–24). Equivalent to slotMaxTime. A value at or below VisibleStartHour is corrected to one hour past it. |
| SlotDurationMinutes | int | 30 | Length in minutes of one slot inside an hour, and the granularity drag-and-drop and resizing snap to. Only divisors of 60 are accepted (5, 6, 10, 12, 15, 20, 30, 60); other values round to the nearest accepted one. |
| HiddenDays | IReadOnlyList<DayOfWeek>? | null | Days of the week removed from every date grid (week, month, year, and the timeline week layout). Use it to render a work week. A list that would hide every day is ignored. |
| BusinessDays | IReadOnlyList<DayOfWeek>? | null | The weekdays business hours run on. null means Monday to Friday; an empty list means no day is a business day. |
| BusinessStartHour | int | 9 | First hour of the business day (0–23). |
| BusinessEndHour | int | 17 | Exclusive last hour of the business day (1–24). A value at or below BusinessStartHour is corrected to one hour past it. |
| HighlightBusinessHours | bool | false | Shades everything outside the business hours - the off-hours slots of the day, week, and timeline grids and the non-business month cells. Also toggleable from the built-in settings panel. |
| RestrictToBusinessHours | bool | false | Refuses any drag, resize, or dialog save whose resulting range is not fully contained in the business hours, reported as BitFullCalendarChangeRefusal.OutsideBusinessHours. |
| FixedWeekCount | bool | false | Always renders six week rows in the month grid, so the calendar keeps the same height across months. |
| ShowNonCurrentDates | bool | true | Renders the leading and trailing days the month grid borrows from the neighbouring months. When false those cells stay blank and inert. |
| NavLinks | bool | false | Turns the month day numbers, the week-view column headers, and the month week numbers into links that navigate to the matching day or week view. A link whose target view is excluded by Views only selects the date. |
| FirstDayOfWeek | DayOfWeek? | null | Overrides the day the week starts on. When null the active culture's DateTimeFormat.FirstDayOfWeek is used. |
| ShowWeekNumbers | bool | false | Renders the ISO-8601 week number in the month grid and in the week view's time gutter. |
| ShowCurrentTimeIndicator | bool | true | Renders the current time indicator line on the day and week time grids. |
| MaxEventsPerDayCell | int | 3 | Number of event badges a month-grid cell renders before the rest collapse behind the "+N more" affordance. Clamped to 1–10. |
| RequireEventDescription | bool | false | Makes the description field of the built-in add/edit dialog mandatory. Only the title is required by default. |
| AllowEventOverlap | bool | true | Allows two events on the same resource to occupy the same time range. When false, a drag, resize, or dialog save that would create an overlap is refused. |
| AllowRangeSelection | bool | true | Lets the user press and drag across the day or week time grid to select a range of slots, which opens the new event already spanning it. A plain click still creates a one-slot event. |
| WeekDayCount | int? | null | Days the week view and the week timeline show (3 for a phone), starting at the selected date and skipping hidden days; prev/next turn by that length. null, or a value outside 1-6, is the culture's whole week. |
| AllowAdd | bool | true | Lets the user create events: the Add Event button, the add affordance of every day and slot, and range selection. |
| AllowEdit | bool | true | Lets the user change existing events: the Edit action of the details dialog and - since they are edits too - dragging and resizing. |
| AllowDelete | bool | true | Lets the user delete events from the details dialog. |
| AllowDrag | bool | true | Lets the user move events by dragging them or with Alt+Arrow keys, while AllowEdit is on. |
| AllowResize | bool | true | Lets the user change how long events last by dragging their edges or with Shift+Arrow keys, while AllowEdit is on. |
| AgendaModeGroupBy | BitFullCalendarAgendaGroupBy | BitFullCalendarAgendaGroupBy.Date | How events are grouped in the agenda view. |
| EventLayout | BitFullCalendarEventLayout | BitFullCalendarEventLayout.Overlap | How overlapping event cards are positioned in the day and week views. |
| ShowDayViewCalendar | bool | true | Renders the mini calendar shown in the day view sidebar. |
BitFullCalendarChangeEventArgs properties
Provides details about a user-applied calendar event change, passed to the OnChange callback.
| Name | Type | Default value | Description |
|---|---|---|---|
| Event | BitFullCalendarEvent | The current event snapshot after the change for Add/Edit, or the removed event snapshot for Delete. | |
| Kind | BitFullCalendarChangeKind | The change type that occurred (Add, Edit, Delete). | |
| OldEvent | BitFullCalendarEvent? | null | The event snapshot before the change for Edit/Delete. Null for Add. |
| Source | BitFullCalendarChangeSource | The UI source that triggered this change (Dialog, Drag, Resize). |
BitFullCalendarChangingEventArgs properties
A user-driven change about to be committed, passed to the OnChanging callback.
| Name | Type | Default value | Description |
|---|---|---|---|
| Event | BitFullCalendarEvent | The event as the change would leave it for Add/Edit, or the event about to be removed for Delete. | |
| Kind | BitFullCalendarChangeKind | The kind of change (Add, Edit, Delete). | |
| OldEvent | BitFullCalendarEvent? | null | The event before the change for Edit/Delete. Null for Add. |
| Source | BitFullCalendarChangeSource | The UI source (Dialog, Drag, Resize). | |
| Cancel | bool | false | Set to true to refuse the change. |
BitFullCalendarDateChangeEventArgs properties
Provides details about a date range change, fired when the user navigates (prev/next/today) or switches views. Passed to the OnDateChange callback.
| Name | Type | Default value | Description |
|---|---|---|---|
| Start | DateTime | Start of the visible date range (inclusive). | |
| End | DateTime | End of the visible date range (inclusive). | |
| View | BitFullCalendarView | The active calendar view when the change occurred. |
BitFullCalendarTexts properties
Custom UI strings for labels, placeholders, action buttons, aria labels, and validation messages. Used for localization and customization of all built-in text.
| Name | Type | Default value | Description |
|---|---|---|---|
| ViewDay | string | "Day" | Label for the day view tab. |
| ViewWeek | string | "Week" | Label for the week view tab. |
| ViewMonth | string | "Month" | Label for the month view tab. |
| ViewYear | string | "Year" | Label for the year view tab. |
| ViewAgenda | string | "Agenda" | Label for the agenda view tab. |
| ModeEvent | string | "Events" | Label for the event mode tab. |
| ModeTimeline | string | "Timeline" | Label for the timeline mode tab. |
| ViewTabsAriaLabel | string | "Views" | Accessible name of the view tab strip. |
| ModeTabsAriaLabel | string | "Modes" | Accessible name of the mode tab strip. |
| TodayButton | string | "Today" | Label for the today navigation button. |
| AddEventButton | string | "Add Event" | Label for the add event button. |
| AddEventHoverHint | string | "Add event" | Tooltip shown when hovering the add event affordance. |
| PreviousButtonTitle | string | "Previous" | Title for the previous navigation button. |
| NextButtonTitle | string | "Next" | Title for the next navigation button. |
| PreviousMonthAriaLabel | string | "Previous month" | Aria label for the mini calendar previous month navigation button. |
| NextMonthAriaLabel | string | "Next month" | Aria label for the mini calendar next month navigation button. |
| SettingsButtonTitle | string | "Settings" | Title for the settings gear button. |
| FilterByColorAriaLabel | string | "Filter events by color" | Aria label for the color filter dropdown. |
| FilterByPersonAriaLabel | string | "Filter events by person in current view" | Aria label for the attendee filter dropdown. |
| AllColorsOption | string | "All colors" | Option text for clearing the color filter. |
| AllPeopleOption | string | "All people" | Option text for clearing the attendee filter. |
| UnnamedAttendee | string | "(Unnamed)" | Fallback text for an attendee with no name. |
| CalendarSettingsLabel | string | "Calendar settings" | Heading for the settings panel. |
| DotBadgeLabel | string | "Dot badge" | Label for the dot badge setting toggle. |
| TwentyFourHourFormatLabel | string | "24-hour format" | Label for the 24-hour format setting toggle. |
| DayStartsAtLabel | string | "Day starts at" | Label for the day start hour setting. |
| HourSuffix | string | "h" | Suffix appended to hour values in the settings. |
| AgendaGroupByLabel | string | "Agenda group by" | Label for the agenda grouping setting. |
| AgendaGroupByDate | string | "Date" | Option text for grouping the agenda by date. |
| AgendaGroupByColor | string | "Color" | Option text for grouping the agenda by color. |
| StackedEventsLabel | string | "Stack overlapping events" | Label for the overlapping events layout toggle. |
| ShowDayViewCalendarLabel | string | "Show calendar in day view" | Label for the day view mini calendar toggle. |
| ShowWeekNumbersLabel | string | "Show week numbers" | Label for the week numbers setting toggle. |
| ShowCurrentTimeIndicatorLabel | string | "Show current time" | Label for the current time indicator setting toggle. |
| SlotDurationLabel | string | "Slot duration" | Label for the slot duration setting. |
| MinuteSuffix | string | "min" | Suffix appended to minute values in the settings. |
| WeekMobileWarning | string | "Weekly view is not recommended..." | Warning shown when using the week view on small devices. |
| HappeningNowTitle | string | "Happening now" | Title for the happening-now indicator. |
| NoAppointmentsNow | string | "No appointments at the moment" | Text shown when there are no current appointments. |
| SearchEventsPlaceholder | string | "Search events..." | Placeholder for the agenda search box. |
| NoEventsFound | string | "No events found." | Text shown when a search returns no events. |
| EventListTitleFormat | string | "Events on {0}" | Format template for the event list dialog title; {0} is the formatted date. |
| EventListCountFormat | string | "{0} event(s)" | Format template for the event count in the event list dialog; {0} is the count. |
| MoreEventsFormat | string | "+{0} more" | Format template for the "+N more" affordance in month cells; {0} is the hidden-event count. |
| AddEventDialogTitle | string | "Add New Event" | Title for the add event dialog. |
| EditEventDialogTitle | string | "Edit Event" | Title for the edit event dialog. |
| AddEventDialogSubtitle | string | "Create a new event for your calendar." | Subtitle for the add event dialog. |
| EditEventDialogSubtitle | string | "Modify your existing event." | Subtitle for the edit event dialog. |
| CloseAriaLabel | string | "Close" | Aria label for the dialog close button. |
| CloseButton | string | "Close" | Label for the close button. |
| CancelButton | string | "Cancel" | Label for the cancel button. |
| EditButton | string | "Edit" | Label for the edit button. |
| DeleteButton | string | "Delete" | Label for the delete button. |
| CreateEventButton | string | "Create Event" | Label for the create event button. |
| SaveChangesButton | string | "Save Changes" | Label for the save changes button. |
| TitleLabel | string | "Title" | Label for the event title field. |
| EventTitlePlaceholder | string | "Event title" | Placeholder for the event title field. |
| StartDateTimeLabel | string | "Start Date & Time" | Label for the start date and time field. |
| EndDateTimeLabel | string | "End Date & Time" | Label for the end date and time field. |
| ColorLabel | string | "Color" | Label for the color field. |
| EventColorAriaLabel | string | "Event color" | Aria label for the color picker. |
| DescriptionLabel | string | "Description" | Label for the description field. |
| EventDescriptionPlaceholder | string | "Event description" | Placeholder for the description field. |
| AttendeesLabel | string | "Attendees" | Label for the attendees field. |
| NoAttendeesText | string | "No attendees" | Text shown when an event has no attendees. |
| FirstNamePlaceholder | string | "First name" | Placeholder for the attendee first name field. |
| LastNamePlaceholder | string | "Last name" | Placeholder for the attendee last name field. |
| IdOptionalPlaceholder | string | "ID (optional)" | Placeholder for the optional attendee id field. |
| AddButton | string | "Add" | Label for the add attendee button. |
| RemoveAttendeeAriaLabel | string | "Remove attendee" | Aria label for the remove attendee button on an attendee chip. |
| StartDateLabel | string | "Start Date" | Label for the start date in the event details. |
| EndDateLabel | string | "End Date" | Label for the end date in the event details. |
| AtWord | string | "at" | Connector word between date and time in the event details. |
| AllDayLabel | string | "All day" | Label of the all-day switch in the add/edit dialog, and of an all-day event's badge and details. |
| WeekNumberFormat | string | "W{0}" | Format template of the week-number cell; {0} is the ISO-8601 week number. |
| WeekNumberAriaLabelFormat | string | "Week {0}" | Accessible name of a week-number cell; {0} is the ISO-8601 week number. |
| EventOverlapMessage | string | "This time range is already taken on that resource." | Notice shown when a move, resize, or save is refused because it would overlap another event. |
| OutOfRangeMessage | string | "That date is outside the allowed range." | Notice shown when a move or resize is refused because it falls outside the allowed date range. |
| OutsideBusinessHoursMessage | string | "That time is outside business hours." | Notice shown when a move, resize, or save is refused because it falls outside the business hours. |
| BlockedMessage | string | "That time is unavailable." | Notice shown when a move, resize, or save is refused because it overlaps a blocking event. |
| HighlightBusinessHoursLabel | string | "Highlight business hours" | Label for the business-hours toggle in the settings panel. |
| NavLinkDayAriaLabelFormat | string | "Go to {0}" | Accessible name of a day number or column header that navigates to that day; {0} is the formatted date. |
| NavLinkWeekAriaLabelFormat | string | "Go to week {0}" | Accessible name of a week number that navigates to that week; {0} is the ISO-8601 week number. |
| ValidationTitleRequired | string | "Title is required" | Validation message when the title is empty. |
| ValidationDescriptionRequired | string | "Description is required" | Validation message when the description is empty. |
| ValidationEndAfterStart | string | "End date must be after start date" | Validation message when the end date is not after the start date. |
| ValidationAttendeeNameRequired | string | "First name or last name is required" | Validation message when an attendee has no name. |
| ResizePreviewAriaLabel | string | "New time range" | Aria label for the resize preview indicator. |
| RepeatsLabel | string | "Repeats" | Label of the repeat-rule row in the event details dialog. |
| RepeatsDaily | string | "Daily" | Name of a daily repeat rule. |
| RepeatsWeekly | string | "Weekly" | Name of a weekly repeat rule. |
| RepeatsMonthly | string | "Monthly" | Name of a monthly repeat rule. |
| RepeatsYearly | string | "Yearly" | Name of a yearly repeat rule. |
| RepeatsIntervalFormat | string | "every {0}" | Appended to the frequency when the rule repeats every N units; {0} is the interval. |
| RepeatsCountFormat | string | "{0} times" | Appended when the series is closed by a number of occurrences; {0} is the count. |
| RepeatsUntilFormat | string | "until {0}" | Appended when the series is closed by a date; {0} is the formatted date. |
| RepeatsOnDaysFormat | string | "on {0}" | Appended when a weekly series names its weekdays; {0} is the abbreviated weekday names joined with ListSeparator. |
| RepeatsOnWeekOfMonthFormat | string | "on the {0} {1}" | Appended when a monthly or yearly series lands on a weekday of the month; {0} is the week of the month, {1} the weekday names. |
| ListSeparator | string | ", " | Separator between the items of a list in a summary, such as weekday names. |
| WeekOfMonthFirst | string | "first" | Name of BitFullCalendarWeekOfMonth.First. |
| WeekOfMonthSecond | string | "second" | Name of BitFullCalendarWeekOfMonth.Second. |
| WeekOfMonthThird | string | "third" | Name of BitFullCalendarWeekOfMonth.Third. |
| WeekOfMonthFourth | string | "fourth" | Name of BitFullCalendarWeekOfMonth.Fourth. |
| WeekOfMonthLast | string | "last" | Name of BitFullCalendarWeekOfMonth.Last. |
| RepeatLabel | string | "Repeat" | Label of the repeat picker in the add/edit dialog. |
| DoesNotRepeatOption | string | "Does not repeat" | The repeat picker's option for a one-off event. |
| RepeatEveryLabel | string | "Repeat every" | Label of the interval field in the add/edit dialog. |
| RepeatDaysUnit | string | "day(s)" | Unit shown after the interval of a daily series. |
| RepeatWeeksUnit | string | "week(s)" | Unit shown after the interval of a weekly series. |
| RepeatMonthsUnit | string | "month(s)" | Unit shown after the interval of a monthly series. |
| RepeatYearsUnit | string | "year(s)" | Unit shown after the interval of a yearly series. |
| RepeatOnLabel | string | "Repeat on" | Label of the weekday and day-of-the-month choices in the add/edit dialog. |
| RepeatOnDayOfMonthFormat | string | "Day {0}" | The option that keeps a monthly series on the start date's day number; {0} is that day. |
| RepeatOnWeekOfMonthFormat | string | "The {0}" | The option that moves a monthly or yearly series onto a weekday of the month; {0} is the week of the month. The weekdays are picked beside it. |
| EndsLabel | string | "Ends" | Label of the field that decides when a series ends. |
| EndsNeverOption | string | "Never" | The option for an open-ended series. |
| EndsOnDateOption | string | "On date" | The option for a series that ends on a date. |
| EndsAfterOption | string | "After" | The option for a series that ends after a number of occurrences. |
| OccurrencesLabel | string | "occurrence(s)" | Shown after the occurrence count of a series that ends after a number of occurrences. |
| RepeatExceptionsLabel | string | "Exceptions" | Label of the skipped and added dates of a series in the add/edit dialog. |
| SkipDateButton | string | "Skip date" | Button that adds the picked date to the dates a series skips. |
| AddDateButton | string | "Add date" | Button that adds the picked date to the dates a series also occurs on. |
| SkippedDatesLabel | string | "Skipped" | Caption of the dates a series skips. |
| AddedDatesLabel | string | "Added" | Caption of the dates a series also occurs on. |
| RemoveDateAriaLabel | string | "Remove date" | Accessible name of the button that removes a skipped or added date. |
| ValidationRepeatAtLeastOne | string | "Must be at least 1" | Validation message when an interval or an occurrence count is below 1. |
| ValidationUntilBeforeStart | string | "The series cannot end before it starts" | Validation message when a series is set to end before it starts. |
| RecurringEditTitle | string | "Edit recurring event" | Title of the prompt that asks whether an edit applies to one occurrence or the series. |
| RecurringDeleteTitle | string | "Delete recurring event" | Title of the prompt that asks whether a delete applies to one occurrence or the series. |
| ThisOccurrenceOption | string | "This event" | The choice that applies an edit or delete to the opened occurrence only. |
| AllOccurrencesOption | string | "All events in the series" | The choice that applies an edit or delete to the whole series. |
| OkButton | string | "OK" | Label of the button that confirms a prompt. |
| GetWeekOfMonthLabel(BitFullCalendarWeekOfMonth) | string | Method that returns the localized name of a week of the month. | |
| GetRecurrenceSummary(BitFullCalendarRecurrence, CultureInfo?, DateTime?) | string | Method that returns the one-line repeat summary shown in the event details dialog. Pass the master's start so a rule that names no weekday can still be described. | |
| ResourceLabel | string | "Resource" | Label for the resource field in the add/edit dialog. |
| ResourceColumnHeader | string | "Resource" | Header for the resource column in the timeline view. |
| NoResourceLabel | string | "Unassigned" | Label for events not assigned to a resource. |
| NoResourceOption | string | "(none)" | Option text for clearing the resource assignment. |
| NoResourcesMessage | string | "No resources to display." | Message shown when there are no resources in the timeline view. |
| GetViewLabel(BitFullCalendarView) | string | Method that returns the localized label for the given view. | |
| GetModeLabel(BitFullCalendarMode) | string | Method that returns the localized label for the given mode. |
BitFullCalendarMode enum
| Name | Value | Description |
|---|---|---|
| Event | 0 | Day, week, month, year, and agenda views on a date grid. |
| Timeline | 1 | Resource-centric layout (resources × time grid); requires Resources. Supports only the day, week, and month layouts. |
BitFullCalendarView enum
| Name | Value | Description |
|---|---|---|
| Day | 0 | Single-day detailed view. |
| Week | 1 | 7-day view with hourly time slots. |
| Month | 2 | Month grid with multi-day events. |
| Year | 3 | 12-month overview. Event mode only - falls back to the week layout in Timeline mode. |
| Agenda | 4 | Searchable list grouped by date or color. Event mode only - falls back to the week layout in Timeline mode. |
BitFullCalendarBadgeVariant enum
| Name | Value | Description |
|---|---|---|
| Colored | 0 | Colored badge. |
| Dot | 1 | Colored dot bullet. |
BitFullCalendarAgendaGroupBy enum
| Name | Value | Description |
|---|---|---|
| Date | 0 | Group agenda items by date. |
| Color | 1 | Group agenda items by color. |
BitFullCalendarEventLayout enum
| Name | Value | Description |
|---|---|---|
| Overlap | 0 | Overlapping cards cascade on top of each other, each offset to the right and extending to the column edge. |
| Stack | 1 | Overlapping cards are placed side by side in equal-width columns with no overlap. |
BitFullCalendarChangeKind enum
| Name | Value | Description |
|---|---|---|
| Add | 0 | An event was added. |
| Edit | 1 | An event was edited. |
| Delete | 2 | An event was deleted. |
BitFullCalendarChangeSource enum
| Name | Value | Description |
|---|---|---|
| Dialog | 0 | From the add/edit dialog. |
| Drag | 1 | From a drag-and-drop move. |
| Resize | 2 | From resizing an event block. |
BitFullCalendarRecurrenceFrequency enum
| Name | Value | Description |
|---|---|---|
| Daily | 0 | Repeats every Interval days. |
| Weekly | 1 | Repeats every Interval weeks, on the weekdays listed in DaysOfWeek (the start date's own weekday when none are listed). |
| Monthly | 2 | Repeats every Interval months on the start date's day of the month. A month too short for that day is skipped rather than shifted. With WeekOfMonth set it repeats on a weekday of the month instead (the third Tuesday). |
| Yearly | 3 | Repeats every Interval years on the start date's month and day. A 29 February series only occurs in leap years. With WeekOfMonth set it repeats on a weekday of the start date's month instead (the fourth Thursday of November). |
BitFullCalendarWeekOfMonth enum
| Name | Value | Description |
|---|---|---|
| First | 0 | The first such weekday of the month (days 1 to 7). |
| Second | 1 | The second such weekday of the month (days 8 to 14). |
| Third | 2 | The third such weekday of the month (days 15 to 21). |
| Fourth | 3 | The fourth such weekday of the month (days 22 to 28). |
| Last | 4 | The last such weekday of the month, whether that is its fourth or its fifth. |
BitFullCalendarChangeRefusal enum
| Name | Value | Description |
|---|---|---|
| None | 0 | The change was applied (or there was nothing to apply). |
| ReadOnly | 1 | The calendar, the single event, or the edit permissions (Settings.AllowEdit / AllowDrag / AllowResize) do not allow the change, so nothing was changed. |
| Overlap | 2 | The resulting range would overlap another event on the same resource while Settings.AllowEventOverlap is false. |
| OutOfRange | 3 | The resulting range falls outside the MinDate/MaxDate window the calendar is allowed to show. |
| OutsideBusinessHours | 4 | The resulting range is not fully contained in the business hours while Settings.RestrictToBusinessHours is true. |
| Blocked | 5 | The resulting range would overlap an event marked IsBlocking on the same resource (or one blocking every resource). |
BitVisibility enum
| Name | Value | Description |
|---|---|---|
| Visible | 0 | The content of the component is visible. |
| Hidden | 1 | The content of the component is hidden, but the space it takes on the page remains (visibility:hidden). |
| Collapsed | 2 | The component is hidden (display:none). |
BitDir enum
| Name | Value | Description |
|---|---|---|
| Ltr | 0 | Ltr (left to right) is to be used for languages that are written from the left to the right (like English). |
| Rtl | 1 | Rtl (right to left) is to be used for languages that are written from the right to the left (like Arabic). |
| Auto | 2 | Auto lets the user agent decide. It uses a basic algorithm as it parses the characters inside the element until it finds a character with a strong directionality, then applies that directionality to the whole element. |
Feedback
Found a mistake, a gap, or something that could be clearer? Every page and every component is one click from its source.