Skip to content

Events & Hooks ​

Unified click & hover ​

HandlerDescription
onGanttClickClick on any timeline target
onGanttContextMenuRight-click; call preventDefault() to suppress browser menu
onGanttHoverHover on blocks, holidays, etc.

GanttTarget types ​

typeWhenKey fields
taskClick bar or milestonetask, rowIndex, element
baselineClick baseline markertask, rowIndex
blockDateClick blocked bandrange, index
holidayClick holiday banddate, label?
eventMarkerClick striplinemarker, index
draggableMarkerClick draggable markermarker, index
timelineClick empty areadate, rowIndex
dependencyClick a link (interactive links only)id, from, to, dependency
tsx
<GanttChart
  blockDates={[{ start: '2026-04-14', end: '2026-04-16', label: 'Offsite' }]}
  onGanttContextMenu={(e) => {
    e.preventDefault();
    const { target } = e;
    if (target.type === 'task') openMenu(e.clientX, e.clientY, ['Edit', 'Delete'], target.task);
    if (target.type === 'timeline') openMenu(e.clientX, e.clientY, ['Add task'], target.date);
  }}
  onGanttHover={({ target, phase }) => {
    if (target?.type === 'blockDate' && phase === 'enter') showTip(target.range.label);
    if (phase === 'leave') hideTip();
  }}
/>

All event hooks ​

PropEventPayload highlights
onTaskClicktaskClicktask, modifiers
onTaskDoubleClicktaskDoubleClicktask, rowIndex
onGanttClickganttClickGanttPointerDetail
onGanttContextMenuganttContextMenuGanttPointerDetail
onGanttHoverganttHoverGanttHoverDetail
onTaskHovertaskHoverenter/leave only
onTaskDragStart/Drag/DragEnddrag lifecycletask, dates
onTaskResizeStart/Resize/ResizeEndresize lifecycletask, edge
onProgressChangeprogressChangetask, progress
onDraggableMarkerDragStart/Drag/DragEndmarker drag lifecyclemarker, date, optional snapPoint
onDraggableMarkerDragToSnapPointmarker snapped to custom pointsnapPoint, phase: 'drag' | 'end'
onZoomChangezoomChangescaleId, columnWidth
onScrollscrollscrollLeft, scrollTop
onSidebarLayoutChangelayoutSidebarLayoutState
onSelectionChangeselection{ selectedIds, selectedDependencyIds }
onDependencyClickdependencyClickdependency target, modifiers (also Enter/Space)
onDependencyContextMenudependencyContextMenudependency target, preventDefault()
onDependencyHoverdependencyHoverdependency target, phase: 'enter' | 'leave'
onDependencyDeletedependencyDelete{ dependencies } — Delete/Backspace with links selected
onDependencyCreatedependencyCreate{ fromId, toId, type, source } — a link drawn by drag or L (enableDependencyCreate)
onTasksChange—Full GanttTask[] after edits

onTaskHover

Fires on enter and leave only — not on mousemove. Do not setState on every move from this hook.

See Advanced example and the GanttChart props reference.

Released under the MIT License.