02examples
Conference agenda
A public, read-only programme in 24-hour time with tracks as locations and a details sheet on click.
Two days of a conference programme, this week's Wednesday and Thursday. "Programme" is the agenda list; "Timetable" is the day grid, where parallel tracks sit side by side. Click any session for its abstract and speakers. Nothing can be dragged: every session is read-only.
liveConference agenda
loading
uses
How it works
- Every event is
readOnly: true. The engine skips the drag half of a pointer-down on them and the keyboard layer refuses to move them — a public programme is read, not edited (Events). locale="en-GB"andhour12={false}put every label on a 24-hour clock; the sheet formats its own time line withformatRangeand the same options (Settings).viewanddateare controlled — plain React state passed down. The header is a child of<Kloq>, so its segmented control and ‹ › go throughuseKloq()(switchView,step) and come back asonViewChangeandonDateChange, the same way a click on a day heading in the programme opens that day's timetable (Controlled state, Views).datestarts on the first conference day. The agenda lists 30 days from there; the day view opens on it.- The details sheet is the
EventPanelslot, not a listener ononEventClick: a slot opens from every view, including the agenda list, and replaces the built-in editor rather than stacking on top of it (Slots). It receives aPlacedOccurrence—event.sourceis the stored session,startMin/endMinare the grid's minutes. The slot unmounts as soon asonCloseruns, so the sheet keeps its ownopenstate and callsonClosefromonOpenChangeComplete, after it has slid out. - Tracks are the
locationfield, and speakers areattendees; "Add to my calendar" isdownloadICS(session)(ICS).
Take it further
- Colour the tracks through registered calendars instead of per-event colours, and let attendees hide the ones they don't care about.
- Mark the sessions a visitor starred with a second, writable calendar and export just those.
- Multi-city programme:
displayTimeZonedraws the grid in the venue's zone wherever the visitor is (Time zones).