Skip to main content

Type Alias: ConvenienceCommandId

ConvenienceCommandId = "freegantt.undo" | "freegantt.redo" | "freegantt.selectAll" | "freegantt.deleteSelection" | "freegantt.zoomIn" | "freegantt.zoomOut" | "freegantt.panToToday" | "freegantt.panRight" | "freegantt.panLeft" | "freegantt.panToStart" | "freegantt.panToEnd"

Defined in: api/command.ts:84

#262: the default chords a keyboard user can already do the same job through another door — a button, a menu item, or a public method — so an app author who wants that chord for something else may turn it off. undo/redo have Undo/Redo, deleteSelection has entries.remove(), zoomIn/zoomOut/panToToday/the pans have their own methods, selectAll has gantt.selectedEntryIds = .... Gantt.convenienceChords's per-command map takes only these ids. api/command.test.ts's own EVERY_CONVENIENCE_ID — the same Record<Id, true> exhaustiveness shape BuiltInCommandId's test above already uses — pins this list against convenienceCommandIds below, so the two can never drift.

Every other command's default chord is an obligation chord: [S5-A4] and WCAG 2.1.1 keep it bound no matter what this config says, because it is the only keyboard path to what it does — clearSelection (Escape), the column keys, Mod+Arrow reach, and Enter (activateEntry — the only keyboard path to click activation, #434). plans/02 §4.1 states the full split next to the chord table.