Scheduler / calendar view

Any grid whose rows carry a date can render as a calendar instead of a table - a Month / Week / Day / Agenda (and Timeline) view where each row becomes an event placed by time. It is a view of the grid, exactly like the Kanban board: same rows, same data source, same edit form - only the presentation changes. Drag an event to reschedule it and the new time is written back through the data source.

The calendar renderer ships in @svgrid/enterprise; the generated app registers it once with enableSchedulerView() and then renders <SvGrid scheduler={...}>.

The scheduler view: the grid's rows rendered as a week calendar with timed events, an all-day lane, Month / Week / Day / Agenda switches, and a Calendar / Table toggle.

Turn it on

In the visual designer, select a grid block and expand Scheduler / calendar in the inspector. Tick Render rows as a calendar / scheduler and map the fields:

The canvas preview switches to the live calendar as soon as you map a start field, so you can try Month / Week / Day and drag events right in the designer.

The scheduler is a render mode: it is mutually exclusive with row grouping and tree data on the same grid. Pick one.

What it generates

The block compiles to the grid's own scheduler prop plus write-back handlers - real, typed Svelte, not a black box:

<script lang="ts">
  import { enableSchedulerView } from '@svgrid/enterprise'
  enableSchedulerView()
  // ... load allRows ...
</script>

<SvGrid
  data={allRows}
  columns={columns}
  getRowId={(r) => String(r.id)}
  scheduler={{
    startField: 'startedAt',
    endField: 'dueDate',
    titleField: 'title',
    colorField: 'priority',
    resourceField: 'assignee',
    initialView: 'week',
    editable: true,
    drawer: true,
    onEventMove: (e) => { /* patch start/end on the row, persist */ },
    onEventCommit: (e) => { /* save the drawer's edits */ },
  }}
/>

A resource / title / color field that points at a relation is resolved to its display column automatically (e.g. assigneeId renders as the assignee's name).

The calendar block

The standalone calendar block (a dedicated "Schedule" screen) uses the same renderer - a Month calendar with a detail drawer, read-first. Use it for a simple "events on a month grid" screen; use the grid Scheduler view above when you want Week / Day time-grids, per-resource columns, timelines, or drag-to-reschedule.

In the sample apps

Several starter apps ship a scheduler so you can see it end to end:

See also

Live examples

  • Scheduler / calendar mode - The same <SvGrid>, same data + columns, rendered as a full calendar by setting one `scheduler` prop: rows become events bucketed by time. Switch Month / Week / Day / Agenda in the toolbar; drag an event to reschedule, drag its edge to resize, click to edit in a drawer. onEventMove / onEventResize write the new times back onto your row. Toggle Calendar / Table to see it is one grid. The calendar renderer ships in @svgrid/enterprise.
  • Timeline views (Day / Week) - A horizontal resource timeline: teams are rows, time runs left→right on a scrollable axis, work items are bars sized to real durations (half-day blocks up to multi-day tasks). Switch Day (hour ticks) or Week (day ticks); drag a bar to re-time it, to another team's row to reassign, or an edge to resize. Click / drag empty space to select a range (arrows move, Shift+arrows extend, Enter creates); Ctrl-click bars to multi-select. Bar fill = team, left strip = status.
  • Horizon - Outlook-style calendar app - A full calendar client on the Scheduler + SvDockManager: NavPane module rail + mini date-picker + calendar toggles, and a dockable workspace (drag / resize / float panes) with the calendar over an Upcoming grid and an Inbox. Recurring events with per-occurrence edits, a second time-zone ruler, iCal import/export and undo.
  • Meridian Clinic - appointment scheduling - A front-desk appointment console: providers with their own hours as day columns, a drag-in patient waitlist, a utilization gauge, and a live patient-flow pipeline (Waiting / Checked in / In room / Completed) that updates as you work.
  • Dispatch - field-service operations board - A map-first field-service operations console: a live ops map with technician pins by status and job markers, an unassigned queue you drag onto the crew timeline, and SLA countdowns. No double-booking.
  • Portfolio roadmap - initiatives across squads - A dashboard-forward portfolio planner: a live portfolio-health strip (status mix, capacity by squad, delivery trend, on-track gauge) over a Gantt of squads x initiatives with progress bars and milestones.
  • Broadcast - content & marketing calendar - A content command center: one grid, two views - a Calendar / Board toggle over the same posts. The Board is the approval pipeline (Idea / Draft / In review / Scheduled / Published) with per-card engagement sparklines.