FullCalendar plugin for displaying events in day grid views (month, week, day, and year calendar layouts)
npx @tessl/cli install tessl/npm-fullcalendar--daygrid@6.1.0FullCalendar Day Grid Plugin provides day grid view functionality for displaying calendar events in month, week, day, and year grid layouts. It extends the core FullCalendar system with comprehensive grid-based calendar views featuring event rendering, date profile generation, and interactive calendar functionality.
npm install @fullcalendar/core @fullcalendar/daygridimport dayGridPlugin from '@fullcalendar/daygrid';CommonJS:
const dayGridPlugin = require('@fullcalendar/daygrid');For internal components (advanced usage):
import { DayTable, TableView, DayTableSlicer } from '@fullcalendar/daygrid/internal';import { Calendar } from '@fullcalendar/core';
import dayGridPlugin from '@fullcalendar/daygrid';
const calendarEl = document.getElementById('calendar');
const calendar = new Calendar(calendarEl, {
plugins: [dayGridPlugin],
initialView: 'dayGridMonth',
events: [
{ title: 'Meeting', start: new Date() }
]
});
calendar.render();The Day Grid Plugin is built around several key components:
Main plugin export that registers day grid views with FullCalendar core. Provides five predefined view types for different time spans.
declare const plugin: PluginDef;
export default plugin;The plugin automatically registers these view types:
dayGrid: Base grid viewdayGridDay: Single day grid (1 day duration)dayGridWeek: Weekly grid (1 week duration)dayGridMonth: Monthly grid (1 month duration, fixed week count)dayGridYear: Yearly grid (1 year duration)Core view and table components for rendering day grid layouts. Handles layout management, scrolling, and responsive design.
abstract class TableView<State = Dictionary> extends DateComponent<ViewProps, State> {
protected headerElRef: RefObject<HTMLTableCellElement>;
renderSimpleLayout(
headerRowContent: ChunkConfigRowContent,
bodyContent: (contentArg: ChunkContentCallbackArgs) => VNode
): VNode;
renderHScrollLayout(
headerRowContent: ChunkConfigRowContent,
bodyContent: (contentArg: ChunkContentCallbackArgs) => VNode,
colCnt: number,
dayMinWidth: number
): VNode;
}
class DayTableView extends TableView {
render(): VNode;
}Event display and placement system supporting multiple display modes and overflow handling. Manages event positioning, visibility, and user interactions.
interface TableSegPlacement {
seg: TableSeg;
isVisible: boolean;
isAbsolute: boolean;
absoluteTop: number;
marginTop: number;
}
function computeFgSegPlacement(
segs: TableSeg[],
dayMaxEvents: boolean | number,
dayMaxEventRows: boolean | number,
strictOrder: boolean,
segHeights: { [segUid: string]: number },
maxContentHeight: number | null,
cells: DayTableCell[]
): {
singleColPlacements: TableSegPlacement[][];
multiColPlacements: TableSegPlacement[][];
moreCnts: number[];
moreMarginTops: number[];
};interface TableSeg extends Seg {
row: number;
firstCol: number;
lastCol: number;
}
interface TableSegPlacement {
seg: TableSeg;
isVisible: boolean;
isAbsolute: boolean;
absoluteTop: number;
marginTop: number;
}
interface DayTableProps {
dateProfile: DateProfile;
dayTableModel: DayTableModel;
nextDayThreshold: Duration;
businessHours: EventStore;
eventStore: EventStore;
eventUiBases: EventUiHash;
dateSelection: DateSpan | null;
eventSelection: string;
eventDrag: EventInteractionState | null;
eventResize: EventInteractionState | null;
colGroupNode: VNode;
tableMinWidth: CssDimValue;
renderRowIntro?: () => VNode;
dayMaxEvents: boolean | number;
dayMaxEventRows: boolean | number;
expandRows: boolean;
showWeekNumbers: boolean;
headerAlignElRef?: RefObject<HTMLElement>;
clientWidth: number | null;
clientHeight: number | null;
forPrint: boolean;
}
interface TableRowsProps {
dateProfile: DateProfile;
cells: DayTableCell[][];
renderRowIntro?: () => VNode;
showWeekNumbers: boolean;
clientWidth: number | null;
clientHeight: number | null;
businessHourSegs: TableSeg[];
bgEventSegs: TableSeg[];
fgEventSegs: TableSeg[];
dateSelectionSegs: TableSeg[];
eventSelection: string;
eventDrag: EventSegUiInteractionState | null;
eventResize: EventSegUiInteractionState | null;
dayMaxEvents: boolean | number;
dayMaxEventRows: boolean | number;
forPrint: boolean;
isHitComboAllowed?: (hit0: Hit, hit1: Hit) => boolean;
}
interface TableProps extends TableRowsProps {
colGroupNode: VNode;
tableMinWidth: CssDimValue;
expandRows: boolean;
headerAlignElRef?: RefObject<HTMLElement>;
}