Scheduler - Keyboard

Navigate Scheduler views, activate items, and keep custom controls keyboard-safe.

#Usage

import { Scheduler } from '@primeui/vue-scheduler';
<Scheduler.Root selectable :selection-mode="selectionMode" :aria-label="ariaLabel" @date-select="onDateSelect" @selection-change="onSelectionChange">
    <!-- Scheduler parts -->
</Scheduler.Root>

Keyboard support is part of the same Scheduler surface as pointer selection. Enable selectable, choose the selection mode the workflow needs, and provide an ariaLabel that names the schedule for assistive technology.

#Options

selectionMode controls how keyboard date selection is stored. Use single for one target, multiple for a set of dates, range when the user needs a start and end, and none when keyboard navigation should not create a selection.

import type { SchedulerSelectionMode } from '@primeui/vue-scheduler';

const selectionMode: SchedulerSelectionMode = 'range';
const ariaLabel: string = 'Team schedule';

date-select fires when the focused date or time target is activated. selection-change is useful when the page needs the full selected-date set, especially in multiple and range modes.

#Focus Model

Scheduler uses visible keyboard targets instead of hidden focus state. When focus is on a Scheduler-owned date, time slot, event, agenda row, timeline cell, appointment slot, or resource row, Scheduler handles the relevant keyboard movement and activation.

Toolbar controls, view selectors, inputs, menus, listboxes, dialogs, tabs, and other nested controls own their own keys. Arrowing through a select or pressing keys inside an editor should not move the Scheduler grid behind it.

#Keys

KeyScheduler-owned targetBehavior
Tab / Shift + TabPage, toolbar, Scheduler targetsMoves to the next or previous focusable control
ArrowLeftDate, time, timeline, and grouped targetsMoves to the previous logical date, slot, or cell
ArrowRightDate, time, timeline, and grouped targetsMoves to the next logical date, slot, or cell
ArrowUpTime-grid and grouped targetsMoves to the previous slot, row, or related target
ArrowDownTime-grid and grouped targetsMoves to the next slot, row, or related target
Home / EndGrid-like targetsMoves to the start or end of the supported row or range
PageUp / PageDownScheduler date navigationMoves by the larger visible range where supported
EnterDates, slots, events, resources, overlaysActivates the focused target
SpaceSelectable targets and controlsActivates the target or toggles selection where the surface supports toggle
EscapeOverlays and transient Scheduler stateCloses the active overlay first, then clears selection or focus state
Delete / BackspaceSelected eventsRemoves selected events only when focus is not in an editing field

Right-to-left layouts keep logical date movement. ArrowRight moves to the next date or slot and ArrowLeft moves to the previous date or slot in both LTR and RTL schedules.

#Scheduler Targets

Keyboard targets are view-aware, so the same keys stay close to the shape of the current view.

SurfaceKeyboard behavior
Month cellsMove by day or week, activate selection, and skip disabled or constrained dates
Week and day time slotsMove by slot or day, activate date-select, and stay inside the visible scheduler body
All-day eventsReceive focus and activate the same event path as pointer interaction
Timeline cellsMove through horizontal time cells and keep the focused cell visible
Resource timeline cellsPreserve resource and date context while moving through the timeline
Year mini-month daysActivate real days and keep placeholder days unfocusable
Agenda rowsActivate event rows without changing the visible agenda range
Resource rowsExpand or collapse parent rows with keyboard and activate leaf rows
Appointment slotsActivate booking or slot-click flows without conflicting with date selection
More popover rowsKeep overflow events reachable, draggable where the view supports it, and dismissible by keyboard
Quick info and popoversKeep overlay content keyboard dismissible without moving grid focus behind the overlay
Context menuRuns menu actions from keyboard and closes without changing Scheduler focus

#Timed Week

Focus a time slot or event, then use the arrow keys and Enter to move and activate the Scheduler target.

Loading Demo...

#Selection Modes

Keyboard selection follows the pointer-selection mode on the same root.

ModeKeyboard selection behavior
noneNavigation can move focus, but date activation does not store a selection
singleActivation replaces the current selected date
multipleActivation toggles dates in the selected set
rangeFirst activation sets the anchor; the next activation completes the range

Use selectAllow, selectConstraint, minDate, and maxDate the same way you use them for pointer selection. Disabled and constrained dates should not become keyboard-selectable targets.

#Month Grid

Month view uses the same visible-focus contract on date cells. Focus a date, move by day or week with the arrow keys, and activate the focused date with Enter or Space.

Loading Demo...

#Custom Controls

When a custom child outlet renders a native button, input, select, menu item, tab, or listbox, keep the native element or ARIA role. Scheduler ignores those nested controls so their arrow keys and activation keys stay local.

For a custom composite control that uses a non-standard wrapper, add data-scheduler-keyboard-owner to the element that should own keyboard input.

<div role="listbox" tabindex="0" data-scheduler-keyboard-owner>
    <!-- Custom options -->
</div>

Do not add tabindex to decorative wrappers. A focusable element should either activate something, move inside a real control, or expose a Scheduler target.

#Overlays

Scheduler overlays have their own keyboard path. Escape closes more popovers, quick info, event popovers, and context menus from inside the overlay. Dialog-style overlays should keep a visible close action, and custom overlay content should avoid trapping focus unless it implements a complete modal interaction.

#API

Keyboard behavior is affected by ariaLabel, selectable, selectionMode, selectAllow, selectConstraint, eventSelection, quickInfo, overlays, custom child outlets, and the focused Scheduler view.