Month grid view — the traditional calendar layout with 6 rows of 7 days.
Multi-day events render as full-width bars inside each day cell, occupying consistent slot positions across all days they span. This creates a visual continuous line without any absolute positioning — the grid handles sizing and wrapping naturally.
Day markers (holidays, notices) tint the cell background with a corner label.
A marker's own color class becomes the cell background (heatmap-style
views send one marker per day with an intensity class); text_color/class
style the corner chip; show_label: false renders the tint with no chip.
Unset fields fall back to the type-based defaults.
Summary
Functions
Renders a month grid — six rows of seven days.
Functions
Renders a month grid — six rows of seven days.
Multi-day events render as full-width bars that keep a consistent slot row across every day they span; day markers tint the matching cells.
Attributes
date— any date within the month to renderevents— list ofPhoenixLiveCalendar.Eventstructsday_markers— list ofPhoenixLiveCalendar.DayMarkerstructs. A marker'scolor/text_color/class/show_labelstyling fields are honored (seePhoenixLiveCalendar.DayMarker— "Styling"); unset fields fall back to the type-based tintsselected_date/today— dates to highlightweek_start—1(Monday, default) …7(Sunday)max_events— single-day events shown per cell before a "+N more" link (default3)max_multiday— cap on multi-day bar rows per cell (default: no cap)expand_cells— grow cells to fit all bars instead of clippingrespect_hours— position timed events by the hours they occupy (1h min width) instead of full-dayshow_week_numbers/show_weekends/fixed_weeks— layout toggleson_date_click/on_event_click/on_more_click— JS commands or event namesid— optional per-instance prefix for generated DOM idsmarker_ticker/marker_ticker_interval— cycle stacked marker chipstranslations/time_format/dir/class— presentation
Attributes
date(Date) (required)id(:string) - Optional prefix for generated DOM ids (marker tickers + per-event ids). Set it when two views on one page can render the same events/markers — without it their ids collide. Defaults tonil.events(:list) - Defaults to[].day_markers(:list) - Defaults to[].selected_date(Date) - Defaults tonil.today(:any) - Date | nil (server today) | :none (no today highlight). Defaults tonil.week_start(:integer) - Defaults to1.max_events(:integer) - Defaults to3.max_multiday(:integer) - Max multi-day bar rows to show per day cell; bars beyond it fold into the day's "+N more" link.nil(default) shows every bar (no cap). Defaults tonil.expand_cells(:boolean) - When true, day cells grow vertically to fit all their bars (min-height, no clipping) instead of a fixed height that clips overflow. Useful when every event must stay visible (e.g. project bars). Defaults tofalse.respect_hours(:boolean) - When true, TIMED events cover only the fraction of a day they actually occupy: a single-day event becomes a bar offset by its start-time and sized to its duration, while a multi-day bar's boundary days trim to their start/end hours (middle days stay full). Very short events are floored to a 1-hour width so they stay visible. All-day events always cover full days (no hours). Off by default — bars span whole cells edge to edge and single-day events render as chips. Defaults tofalse.show_week_numbers(:boolean) - Defaults tofalse.show_weekends(:boolean) - Defaults totrue.fixed_weeks(:boolean) - Defaults totrue.on_date_click(:any) - Defaults tonil.on_event_click(:any) - Defaults tonil.on_more_click(:any) - Defaults tonil.translations(:map) - Defaults to%{}.time_format(:atom) - Defaults to:h24.marker_ticker(:boolean) - Defaults totrue.marker_ticker_interval(:integer) - Defaults to3000.class(:string) - Defaults to"".dir(:atom) - Defaults to:ltr.
Slots
day_cellevent