LilyDesignSystem.Blazor.Calendar
0.7.0
dotnet add package LilyDesignSystem.Blazor.Calendar --version 0.7.0
NuGet\Install-Package LilyDesignSystem.Blazor.Calendar -Version 0.7.0
<PackageReference Include="LilyDesignSystem.Blazor.Calendar" Version="0.7.0" />
<PackageVersion Include="LilyDesignSystem.Blazor.Calendar" Version="0.7.0" />
<PackageReference Include="LilyDesignSystem.Blazor.Calendar" />
paket add LilyDesignSystem.Blazor.Calendar --version 0.7.0
#r "nuget: LilyDesignSystem.Blazor.Calendar, 0.7.0"
#:package LilyDesignSystem.Blazor.Calendar@0.7.0
#addin nuget:?package=LilyDesignSystem.Blazor.Calendar&version=0.7.0
#tool nuget:?package=LilyDesignSystem.Blazor.Calendar&version=0.7.0
LilyDesignSystem.Blazor.Calendar
A headless, accessible calendar for Blazor: week, four-week and month views, previous/next/today,
keyboard navigation, a picked day, disabled days and event buttons. Composes the headless
CalendarTable family and the sibling DateTimePicker's civil-date arithmetic. Ships no CSS.
See spec/index.md and AGENTS.md.
Typed fields, editing and export
- Typed fields and editing (0.5.0):
EventFields(DataGridColumns) +event.Valuesshow typed values; a field'sEditablewith anOnFieldEdithandler edits it in place. See the spec's "Typed" section. - Export (0.5.0):
Labels.ExportCsv/ExportTsv/ExportExcelplusLabels.ExportHeadersadd CSV, TSV and Excel buttons.
Install
dotnet add package LilyDesignSystem.Blazor.Calendar
Quick start
@using LilyDesignSystem.Blazor.Helpers
<CalendarView Label="Appointments"
@bind-View="view"
@bind-AnchorDate="anchor"
Today="2026-01-08"
Events="events"
Labels="labels"
OnDayClick="d => picked = d"
OnEventClick="e => opened = e.Id" />
@code {
private CalendarViewMode view = CalendarViewMode.Month;
private string anchor = "2026-01-15";
private string? picked, opened;
private readonly IReadOnlyList<CalendarEvent> events = new[]
{
new CalendarEvent { Id = "e1", Date = "2026-01-06", Title = "Check-up" },
};
private readonly CalendarViewLabels labels = new()
{
MonthView = "Month",
Today = "Today",
Previous = v => $"Previous {v}",
Next = v => $"Next {v}",
WeekdayAbbr = d => new[] { "Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat" }[d],
};
}
Keyboard
Arrows move the cursor by a day or a week; Home/End go to the row's ends; PageUp/PageDown step by the
view's length; Enter/Space pick the day; t goes to today. Disabled days stay focusable but cannot be picked.
Search, copy, keyboard, validation and undo (0.6.0)
- Added search:
Labels.Searchrenders a field andSearchValue(bindable) keeps the events whose title and field text contain every typed word, in any order, ignoring case and diacritics; Escape clears it;Labels.SearchAnnouncement. The field carries the headlesssearch-inputclass (written by hand, not composed). - Added
EventCompare, which orders a day's events (stable). - Added copy to the clipboard:
Labels.Copy(needsExportHeaders),Labels.CopyAnnouncement,Labels.CopyFailed,OnCopy,CopyHandler(returnfalseto take over). - Added right-to-left arrow keys through the
Directionparameter (Blazor cannot read the DOM'sdirwithout JS interop, so the consumer says); Alt+Arrow event moves follow the arrow. - Added field
Validatemessages (Labels.EditRefused,aria-invalidon the open editor, cleared when the person types) and undo / redo of field edits (Ctrl/Cmd+Z, Ctrl/Cmd+Shift+Z / Ctrl+Y, in the grid and in the agenda list) throughOnFieldEdit, withLabels.FieldUndoAnnouncement/FieldRedoAnnouncement.
| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET | net10.0 is compatible. net10.0-android was computed. net10.0-browser was computed. net10.0-ios was computed. net10.0-maccatalyst was computed. net10.0-macos was computed. net10.0-tvos was computed. net10.0-windows was computed. |
-
net10.0
- LilyDesignSystem.Blazor.DataGrid (>= 0.11.0)
- LilyDesignSystem.Blazor.DateTimePicker (>= 0.3.0)
- LilyDesignSystem.Blazor.Headless (>= 0.5.1)
- Microsoft.AspNetCore.Components.Web (>= 10.0.13)
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories
This package is not used by any popular GitHub repositories.