Skip to content

Interactions

Drag, resize & snap

PropDefaultDescription
enableDragtrueMove bar body
enableResizetrueLeft/right handles on hover
enableProgressDragtrueBottom progress handle
snapToGridtrueSnap to grid on pointer release
snapToGridBehavior
true (default)Smooth visual drag; dates snap on release
falsePixel-precision dates (sub-hour at hour zoom)

Per-task overrides: enableDrag, enableResize, enableProgressDrag. readOnly: true disables all editing.

Selection

tsx
const [ids, setIds] = useState<string[]>([]);

<GanttChart
  tasks={tasks}
  selectedTaskIds={ids}
  onSelectionChange={(e) => setIds(e.selectedIds)}
/>

Uncontrolled: click selects one task. Ctrl/⌘+click toggles without clearing.

Tooltips

PropDefaultDescription
showTooltipfalseBuilt-in floating tooltip
renderTaskTooltipCustom tooltip UI

onChange(patch) from custom tooltips applies Partial<GanttTask> to the hovered task.

Holidays, blocks & event markers

tsx
holidays={{
  weekends: true,
  dates: [{ date: '2026-04-25', label: 'ANZAC Day' }],
}}

blockDates={[
  { start: '2026-04-14', end: '2026-04-16', label: 'Offsite', color: '#fde8e8' },
]}

eventMarkers={[
  { id: 'e1', date: '2026-04-07T10:00:00', label: 'Review', color: '#6366f1' },
]}

See Advanced example for multi-select, read-only tasks, and block hover.

Released under the MIT License.