Each section below tests one parameter in isolation.
Extension Options
height (string)
Height set to 400px.
height (numeric)
Height set to 500 (coerced to 500px).
timegridHeight
Timegrid height set to 300%.
file (TSV)
Events loaded from data/events.tsv with tab separator.
file (CSV)
Events loaded from data/events.csv with comma separator.
date
Initial date set to 2026-04-16.
events (inline YAML)
Two inline events: one timed, one allday.
calendars
Two calendar definitions with distinct colors.
Pass-through TOAST UI Options
defaultView: week
defaultView: month
defaultView: day
useFormPopup: true
Click an empty time slot to see the create form popup (isReadOnly is false).
Detail items omitted
Timed events should show only time and title, and the time-grid axis should use 24-hour time. Click an event and confirm its popup shows only title and date. The fixture preserves same-day, cross-day, all-day, and outside-click dismissal checks.
timeFormat: 12h
Time labels should render in 12-hour format (e.g. “2:00 pm”) instead of the 24-hour default.
timeFormat: invalid value
An unsupported value should render a styled error block listing the accepted values.
eventDetailItems and popupDetailItems: YAML lists
The event below should show location, attendees, and the arbitrary project field inside the event card, even though every optional field is present. Click it and confirm that its popup shows only state, body, and project.
This second calendar shows only body inside the event and only location in its popup. Neither selection should affect the first calendar.
Invalid detail items
Both options accept arbitrary field names but require each item to be a string, so these numeric items should produce styled error blocks.
Long labels
isReadOnly: true
Events cannot be dragged or edited.
isReadOnly: false
Events can be dragged and edited.
usageStatistics: true
Usage statistics enabled (network request to NHN).
gridSelection: false
Date grid click selection disabled.
gridSelection: object
Click enabled, double-click disabled.
timezone
Timezone set to America/New_York.
timezone: naive timestamps, DST-aware
Both events use the same naive 09:00–10:00 wall-clock time, with no UTC offset in the source data. Confirm both render at 09:00–10:00 in the grid: the January event resolves against Stockholm’s CET (+01:00) offset and the July event against CEST (+02:00), automatically, with no difference in the source data between the two.
timezone: explicit offsets are preserved
Confirm the first event (naive) renders at 09:00–10:00 (resolved against Stockholm). Confirm the second event, which already carries an explicit +05:00 offset deliberately different from Stockholm’s own offset, is not renormalized and renders at its own distinct time instead of also landing on 09:00.
timezone: no zones configured
No timezone key is set here. Confirm this naive event still renders using the previous (viewer-local-clock) behavior, unaffected by the timezone.zones normalization demonstrated above.
theme
Custom background color applied via theme. This calendar’s background should stay light grey regardless of other calendars on this page — see README Limitations for why that specifically needs reinforcing. Its custom saturday/sunday colors are not reinforced the same way, so they may not look consistent depending on other theme-using calendars elsewhere on the page.
template
Milestone task view with a custom template.milestone. Confirm the milestone title renders as “Custom: Template test” instead of the default “Template test”.
WeekOptions
week.startDayOfWeek
Start day set to Monday (1).
week.dayNames
Custom day name labels.
week.narrowWeekend
Weekend columns narrowed.
week.workweek
Weekends excluded.
week.showNowIndicator: false
Current time indicator hidden.
week.timezonesCollapsed
Sub-timezones start collapsed.
week.hourStart
Time grid starts at hour 8.
week.hourEnd
Time grid ends at hour 18.
autoHourRange
Events at 09:00 and 16:00 (ending 17:00). Expect time grid exactly 09:00-17:00.
autoHourRange with explicit week.hourStart
Same events, but week.hourStart: 0 is set explicitly. Expect hourStart stays at 0 while hourEnd is still auto-fit to exactly 17:00.
autoHourRange with no timed events
Only an all-day event is present. Expect the full default day (00:00-24:00).
autoHourRange with a multi-day event
One event spans midnight (22:00-02:00 next day). Expect the full default day (00:00-24:00) rather than a clipped range.
autoHourRange with timezone.zones
Events at 09:00 and 14:00 (ending 15:00) Stockholm time, with timezone.zones[0]: Europe/Stockholm. Expect the time grid exactly 09:00-15:00, measured in Stockholm wall-clock time regardless of the viewer’s own browser timezone — not clipped or shifted for viewers in other zones.
autoHourRange with timezone.zones and a multi-day event
One event spans midnight in Stockholm time (22:00-02:00 next day), with timezone.zones[0]: Europe/Stockholm. Expect the full default day (00:00-24:00) — the “spans midnight” check must use Stockholm’s calendar date, not the viewer’s own, or this could wrongly measure as same-day for some viewers.
week.eventView: false
All event panels hidden.
week.eventView: [time]
Only time panel shown (allday hidden).
week.taskView: false
Task/milestone panels hidden.
week.taskView: [milestone]
Only milestone panel shown.
week.collapseDuplicateEvents
Two identical events collapsed.
MonthOptions
month.dayNames
Custom uppercase day labels.
month.startDayOfWeek
Start day set to Monday (1).
month.narrowWeekend
Weekend columns narrowed in month view.
month.visibleWeeksCount
Only 2 weeks visible.
month.isAlways6Weeks: false
Not forced to 6 rows.
month.workweek
Weekends excluded in month view.
month.visibleEventCount
Max 2 visible events per day (4 events on same day).