Scheduler - Events Reference
Reference tables for Scheduler interaction, overlay, resource, and appointment events.
#Import
import { Scheduler } from '@primeui/vue-scheduler';#Events
Scheduler emits user actions and normalized payloads. Keep the source of truth in application state. Accept a payload, write the change to the store or backend, then replace events, resources, selection, or date props with the accepted value.
Vue templates use kebab-case listener names: eventDrop in the type metadata is handled as @event-drop, quickInfoEdit as @quick-info-edit, and so on.
import type { EventDropPayload, SchedulerDateSelectPayload } from '@primeui/vue-scheduler';#Navigation
| Event | When it fires | Payload fields |
|---|---|---|
view-change | The active view changes | view, dateRange |
date-change | Navigation changes the focused date | Date |
dates-change | The rendered range changes | start, end |
<Scheduler.Root :view="view" :date="date" @view-change="({ view: nextView }) => (view = nextView)" @date-change="(nextDate) => (date = nextDate)" />#Date Selection
| Event | When it fires | Payload fields |
|---|---|---|
date-click | A date, time slot, or resource cell is activated | date, dateStr, view, resource, jsEvent |
date-dblclick | A date or slot is double-clicked | Same shape as date-click |
date-select | A selectable range is completed | start, end, startStr, endStr, allDay, view, resource, jsEvent |
date-unselect | Selection is cleared | view |
selection-change | Selected date list or range changes | selectedDates, selectedRange |
function onDateSelect(payload: SchedulerDateSelectPayload<MouseEvent>) {
draft.value = { start: payload.start, end: payload.end, allDay: payload.allDay === true };
}#Event Interaction
| Event | When it fires | Payload fields |
|---|---|---|
event-click | An event is activated | event, el, jsEvent, view |
event-dblclick | An event is double-clicked | Same shape as event-click |
event-mouseenter | Pointer enters an event | event, el, jsEvent, view |
event-mouseleave | Pointer leaves an event | event, el, jsEvent, view |
event-selection-change | Selected events change | selectedIds, events |
event-selection-limit-reached | A selection cap rejects an event | selectedIds, maxSelection |
#Editing
| Event | When it fires | Payload fields |
|---|---|---|
event-drag-start | Event drag begins | event, jsEvent, view |
event-drag | Event drag moves | event, drag coordinates, jsEvent, view |
event-drag-stop | Event drag interaction ends | event, jsEvent, view |
event-drop | Event is dropped on a valid target | event, oldEvent, delta, newStart, newEnd, newResource, revert, view |
event-resource-change | Event moves between resources | event, oldResourceId, newResourceId, resource objects, oldEvent, revert |
event-resize-start | Resize begins | event, jsEvent, view |
event-resize | Resize moves | event, startDelta, endDelta, jsEvent, view |
event-resize-stop | Resize completes | event, oldEvent, startDelta, endDelta, revert, view |
event-title-change | Inline title editing completes | event, oldTitle, newTitle, view |
inline-edit-start | Inline editing starts | event, field, el, view |
inline-edit-save | Inline editing is saved | event, field, oldValue, newValue, recurrence fields, view |
inline-edit-cancel | Inline editing is canceled | event, field, view |
Use revert() when the parent rejects a drag or resize after validation.
async function onEventDrop(payload: EventDropPayload) {
const accepted = await saveEvent(payload.event);
if (!accepted) {
payload.revert();
events.value = events.value.map((event) => (event.id === payload.oldEvent.id ? payload.oldEvent : event));
}
}#Bulk Actions
| Event | When it fires | Payload fields |
|---|---|---|
bulk-move | A selected event set moves together | events, delta |
bulk-update | A selected event set is updated together | events, changes |
bulk-delete | A selected event set is removed together | events |
#Data Changes
| Event | When it fires | Payload fields |
|---|---|---|
event-add | Scheduler requests a new event | SchedulerEvent |
event-change | Scheduler requests an event update | event, oldEvent |
event-remove | Scheduler requests event removal | event |
#Resources
| Event | When it fires | Payload fields |
|---|---|---|
resource-click | A resource row, group, or header is activated | resource, jsEvent, view |
resource-add | A resource is added | resource, parentId |
resource-update | A resource is updated | resource, oldResource |
resource-remove | A resource is removed | resource |
resource-expand | A resource group expands | resource, expanded |
resource-collapse | A resource group collapses | resource |
resources-refetch | Scheduler asks the app to reload resources | Empty object |
adaptive-auto-select | Adaptive resource mode selects a visible leaf automatically | resource |
#Overlays
| Event | When it fires | Payload fields |
|---|---|---|
more-click | A dense cell overflow link opens | date, resource, events, jsEvent, view, sourceView |
quick-info-show | Quick info opens | event, el, view |
quick-info-hide | Quick info closes | event, view |
quick-info-edit | Quick info edit action fires | event, recurrence fields, view |
quick-info-delete | Quick info delete action fires | event, recurrence fields, view |
context-menu-show | Context menu opens | Menu target, event or date context, resource context, native event |
#Recurrence
| Event | When it fires | Payload fields |
|---|---|---|
recurrence-edit | A recurring edit scope is chosen | source, scope, occurrence, series, changes, result, view |
recurrence-delete | A recurring delete scope is chosen | source, scope, occurrence, series, result, view |
#Appointment Slots
| Event | When it fires | Payload fields |
|---|---|---|
slot-click | An appointment slot is activated | slot, jsEvent, view |
slot-book | A slot booking is added | slot, event, view |
slot-cancel | A slot booking is removed | slot, event, view |
#Conflicts
| Event | When it fires | Payload fields |
|---|---|---|
conflict-detected | A proposed event conflicts with constraints | conflicts, event, canProceed |
capacity-exceeded | A resource capacity limit is exceeded | resourceId, current, max |
Conflict events only fire when the relevant constraint, capacity, or resource-conflict options are configured.