Skip to content

Plugin And Configuration

This page documents 74 public symbols exported by @revolist/gantt.

function

Creates the project-aware adapter used by managed Gantt date columns.

export function createGanttDateAdapter(getProject: () => GanttPluginConfig | null | undefined, field: string): GanttDateAdapter;
ParameterTypeRequiredDefaultDescription
getProject() => GanttPluginConfig | null | undefinedYes—
fieldstringYes—

Related types: GanttDateAdapter, GanttPluginConfig

function

export function createGanttDateFormatContext(project: Pick<GanttPluginConfig, 'timeZone' | 'dateFormats'> | null | undefined, surface: GanttDateFormatSurface, field?: string, fallbackLocale = 'en-US'): GanttDateFormatContext;
ParameterTypeRequiredDefaultDescription
projectPick<GanttPluginConfig, "timeZone" | "dateFormats"> | null | undefinedYes—
surfaceGanttDateFormatSurfaceYes—
fieldstring | undefinedNo—
fallbackLocalestringNo'en-US'

Related types: GanttDateFormatContext, GanttDateFormatSurface, GanttPluginConfig

function

One-shot helper that runs the scheduling engine_and_ builds the full grid configuration (scale + projected rows) in a single call.

export function createTaskGridConfig(project: ProjectSnapshot, taskStore: TaskStore, resourceStore: ResourceStore, assignmentStore: AssignmentStore, zoomLevel: TimelineZoomLevel | TimelineZoomPreset, schedulerEngine: SchedulerEngine = createSchedulerEngine(), locale = 'en-US', defaultHeaderFormatter?: TimelineDateFormatter, projectionOptions: TaskRowProjectionOptions = {}, scaleOptions: TaskGridScaleOptions = {}): TaskGridConfig;
ParameterTypeRequiredDefaultDescription
projectProjectSnapshotYes—- The resolved project snapshot.
taskStoreTaskStoreYes—- Task store instance.
resourceStoreResourceStoreYes—- Resource store instance.
assignmentStoreAssignmentStoreYes—- Assignment store instance.
zoomLevelTimelineZoomLevel | TimelineZoomPresetYes—- Zoom level descriptor or named preset.
schedulerEngineSchedulerEngineNocreateSchedulerEngine()- Optional pre-configured scheduler engine.
localestringNo'en-US'- BCP 47 locale tag (default "en-US").
defaultHeaderFormatterTimelineDateFormatter | undefinedNo—- Optional custom header formatter.
projectionOptionsTaskRowProjectionOptionsNo{}- Optional row projection overrides.
scaleOptionsTaskGridScaleOptionsNo{}

Returns: A complete TaskGridConfig.

Related types: AssignmentStore, ProjectSnapshot, ResourceStore, SchedulerEngine, TaskGridConfig, TaskGridScaleOptions, TaskRowProjectionOptions, TaskStore, TimelineDateFormatter, TimelineZoomLevel, TimelineZoomPreset

function

Build the timeline scale configuration from a scheduling result and zoom level.

Determines the visible date range, creates the timeline scale, and derives the header rows, ticks, bands, and visible range for the gantt view-model.

export function createTaskGridScaleConfig(schedulingResult: SchedulingResult, zoomLevelOrPreset: TimelineZoomLevel | TimelineZoomPreset, locale = 'en-US', defaultHeaderFormatter?: TimelineDateFormatter, options: TaskGridScaleOptions = {}): TaskGridScaleConfig;
ParameterTypeRequiredDefaultDescription
schedulingResultSchedulingResultYes—- The output of the scheduling engine.
zoomLevelOrPresetTimelineZoomLevel | TimelineZoomPresetYes—- A concrete zoom level descriptor or a named preset string.
localestringNo'en-US'- BCP 47 locale tag used for date formatting (default "en-US").
defaultHeaderFormatterTimelineDateFormatter | undefinedNo—- Optional custom formatter for header cell labels.
optionsTaskGridScaleOptionsNo{}

Returns: A TaskGridScaleConfig ready for rendering.

Related types: SchedulingResult, TaskGridScaleConfig, TaskGridScaleOptions, TimelineDateFormatter, TimelineZoomLevel, TimelineZoomPreset

function

Project tasks into grid rows using a pre-built timeline scale.

export function createTaskGridSource(project: ProjectSnapshot, taskStore: TaskStore, resourceStore: ResourceStore, assignmentStore: AssignmentStore, scale: TimelineScale, schedulingResult: SchedulingResult, projectionOptions: TaskRowProjectionOptions = {}): readonly DataType[];
ParameterTypeRequiredDefaultDescription
projectProjectSnapshotYes—- The resolved project snapshot.
taskStoreTaskStoreYes—- The task store providing the ordered task list.
resourceStoreResourceStoreYes—- The resource store for resource name lookups.
assignmentStoreAssignmentStoreYes—- The assignment store for task–resource links.
scaleTimelineScaleYes—- The timeline scale used for coordinate projection.
schedulingResultSchedulingResultYes—- The scheduling engine output.
projectionOptionsTaskRowProjectionOptionsNo{}- Optional overrides for row projection behaviour.

Returns: An array of data rows suitable for the grid source.

Related types: AssignmentStore, ProjectSnapshot, ResourceStore, SchedulingResult, TaskRowProjectionOptions, TaskStore, TimelineScale

constant

export const DEFAULT_GANTT_ERROR_LABELS: { readonly taskEdit: { readonly invalidField: ({ field }: GanttMessageContext) => string; readonly booleanRequired: ({ field }: GanttMessageContext) => string; readonly unsupportedConstraintType: ({ value }: GanttMessageContext) => string; readonly invalidDate: ({ field }: GanttMessageContext) => string; readonly summaryDatesDerived: "Summary task dates are derived from children."; readonly invalidScheduledDate: ({ label }: GanttMessageContext) => string; readonly startAfterEnd: "Start date must not be later than the current computed end date."; readonly endBeforeStart: "End date must not be earlier than the current computed start date."; readonly invalidEffortMode: "Effort mode must be Fixed Duration, Fixed Work, or Fixed Units."; readonly taskNameEmpty: "Task name cannot be empty."; readonly invalidLevelingDelay: "Leveling delay must be a non-negative number."; readonly invalidPriority: "Priority must be a number between 0 and 1000."; readonly summaryProgressDerived: "Summary task progress is derived from children."; readonly invalidPercentDone: "Percent done must be numeric."; readonly statusCalculated: "Task status is calculated from progress, scheduled dates, and the project status date."; readonly invalidWorkflowStatus: "Workflow status must be Not Started, In Progress, Done, or Blocked."; readonly invalidTaskMode: "Task mode must be Auto or Manual."; readonly unsupportedTaskType: ({ value }: GanttMessageContext) => string; readonly disallowedTaskType: ({ value }: GanttMessageContext) => string; readonly summaryDurationDerived: "Summary duration is derived from children."; readonly invalidDuration: "Duration must be a value such as 5h, 2d, 3w, or 30m."; readonly invalidRemainingDuration: "Remaining duration must be a value such as 5h, 2d, 3w, or 30m."; readonly milestoneDurationZero: "Milestone duration is fixed at zero in scheduling v1."; readonly invalidWork: "Work must be a value such as 5h, 2d, 3w, or 30m; elapsed units are not supported."; }; readonly taskMutation: { readonly readOnly: ({ action }: GanttMessageContext) => string; readonly lockedTask: ({ taskId, action }: GanttMessageContext) => string; readonly taskNotFound: ({ taskId, action }: GanttMessageContext) => string; readonly serviceNotConfigured: "Task mutation service is not configured."; readonly invalidDate: ({ date }: GanttMessageContext) => string; readonly invalidRange: "End date must not be earlier than start date."; readonly invalidOptionalDate: ({ label, value }: GanttMessageContext) => string; readonly invalidNonNegativeNumber: ({ label }: GanttMessageContext) => string; readonly invalidBoolean: ({ label }: GanttMessageContext) => string; readonly summaryProgressDerived: "Summary task progress is derived from children."; readonly invalidDuration: "Duration must be a non-negative number."; readonly invalidPriority: "Priority must be a number between 0 and 1000."; readonly unsupportedEffortMode: ({ value }: GanttMessageContext) => string; readonly unsupportedTaskType: ({ value }: GanttMessageContext) => string; readonly nonWorkingDate: ({ date }: GanttMessageContext) => string; readonly actualDateRange: "Actual finish date must not be earlier than actual start date."; readonly firstTaskIndent: "The first task cannot be indented."; readonly firstSiblingIndent: "The first sibling task cannot be indented."; readonly rootTaskOutdent: "Root tasks cannot be outdented."; readonly taskOutdentFailed: ({ taskId }: GanttMessageContext) => string; readonly splitRangesArray: "Split ranges must be an array."; readonly invalidSplitStart: ({ startDate }: GanttMessageContext) => string; readonly invalidSplitEnd: ({ endDate }: GanttMessageContext) => string; readonly invalidSplitRange: "Split end date must not be earlier than split start date."; readonly regularTaskSplitOnly: "Only regular task bars can be split."; readonly splitOverlapRequired: "Split range must overlap the task date range."; readonly regularSplitMoveOnly: "Only regular task split ranges can be moved."; readonly splitNotFound: ({ splitIndex, taskId }: GanttMessageContext) => string; readonly summaryMove: "Summary tasks cannot be moved directly on the timeline."; readonly actualFinishMove: "Tasks with an actual finish date cannot be moved on the timeline."; readonly resizeTaskOnly: "Only non-summary task bars can be resized in this milestone."; readonly noWorkingDays: "Selected range contains no working days."; readonly alreadyMilestone: ({ taskId }: GanttMessageContext) => string; readonly summaryMilestone: "Summary tasks with children cannot be converted to milestones."; }; readonly assignment: { readonly invalidUnitsForResource: ({ resourceId }: GanttMessageContext) => string; readonly invalidWorkForResource: ({ resourceId }: GanttMessageContext) => string; readonly resourceNotFound: ({ resourceName, resourceId }: GanttMessageContext) => string; readonly invalidUnitsForName: ({ resourceName }: GanttMessageContext) => string; readonly serviceNotConfigured: "Assignment mutation service is not configured."; readonly taskNotFound: ({ taskId }: GanttMessageContext) => string; readonly readOnly: ({ action }: GanttMessageContext) => string; readonly editCanceled: "Assignment edit was canceled."; }; readonly dependency: { readonly duplicate: "Dependency already exists."; readonly notFound: ({ dependencyId }: GanttMessageContext) => string; readonly taskNotFound: ({ taskId }: GanttMessageContext) => string; readonly tasksMustExist: "Dependency tasks must exist."; readonly selfReference: "A task cannot depend on itself."; readonly invalidType: ({ dependencyType }: GanttMessageContext) => string; readonly invalidReference: ({ value }: GanttMessageContext) => string; readonly unsupportedReferenceType: ({ value }: GanttMessageContext) => string; readonly taskReferenceNotFound: ({ value }: GanttMessageContext) => string; readonly invalidReferenceValue: "Invalid dependency reference value."; readonly cycle: "Dependency would create a circular relationship."; readonly readOnly: ({ action }: GanttMessageContext) => string; readonly replacementCanceled: "Dependency replacement was canceled."; }; readonly taskEditor: { readonly invalidDate: ({ field }: GanttMessageContext) => string; readonly invalidNonNegativeNumber: ({ field }: GanttMessageContext) => string; readonly invalidRangeNumber: ({ field, min, max }: GanttMessageContext) => string; readonly invalidBoolean: ({ field }: GanttMessageContext) => string; readonly unsupportedField: ({ field }: GanttMessageContext) => string; readonly taskNameEmpty: "Task name cannot be empty."; readonly unsupportedWorkflowStatus: ({ value }: GanttMessageContext) => string; readonly disallowedTaskType: ({ value }: GanttMessageContext) => string; readonly summaryDurationDerived: "Summary duration is derived from children."; readonly invalidDuration: "Duration must be a value such as 5h, 2d, 3w, or 30m."; readonly invalidDateRange: "End date must not be earlier than start date."; readonly unsupportedConstraintType: ({ value }: GanttMessageContext) => string; readonly invalidWork: "Work must be a value such as 5h, 2d, 3w, or 30m; elapsed units are not supported."; readonly invalidRemainingDuration: "Remaining duration must be a value such as 5h, 2d, 3w, or 30m."; readonly unsupportedEffortMode: ({ value }: GanttMessageContext) => string; readonly calendarUnavailable: ({ calendarId }: GanttMessageContext) => string; readonly invalidTags: "Tags must be a comma-separated string or string array."; }; };

Related types: GanttMessageContext

constant

export const DEFAULT_GANTT_WARNING_LABELS: { readonly scheduler: { readonly duplicateId: ({ entityName, entityId }: GanttMessageContext) => string; readonly calendarWithoutWorkingDay: ({ calendarId }: GanttMessageContext) => string; readonly invalidWorkingCalendar: ({ calendarId }: GanttMessageContext) => string; readonly invalidTaskConstraint: ({ taskId }: GanttMessageContext) => string; readonly missingTaskCalendar: ({ taskId, calendarId }: GanttMessageContext) => string; readonly invalidTaskDateRange: ({ taskId }: GanttMessageContext) => string; readonly invalidTaskDuration: ({ taskId }: GanttMessageContext) => string; readonly invalidTaskProgress: ({ taskId }: GanttMessageContext) => string; readonly invalidTaskWork: ({ taskId }: GanttMessageContext) => string; readonly invalidTaskPriority: ({ taskId }: GanttMessageContext) => string; readonly missingDependencyTask: ({ dependencyId }: GanttMessageContext) => string; readonly missingResourceCalendar: ({ resourceId, calendarId }: GanttMessageContext) => string; readonly invalidResourceUnits: ({ resourceId }: GanttMessageContext) => string; readonly invalidResourceCost: ({ resourceId }: GanttMessageContext) => string; readonly missingAssignmentTask: ({ assignmentId, taskId }: GanttMessageContext) => string; readonly missingAssignmentResource: ({ assignmentId, resourceId }: GanttMessageContext) => string; readonly invalidAssignmentUnits: ({ assignmentId }: GanttMessageContext) => string; readonly invalidAssignmentWork: ({ assignmentId }: GanttMessageContext) => string; readonly dependencyCycle: "Dependencies contain a cycle."; readonly dependencyConstraint: ({ taskId, constraintType, dependencyId }: GanttMessageContext) => string; readonly hardConstraintOverride: ({ taskId, constraintType }: GanttMessageContext) => string; readonly constraintWindowForward: ({ taskId, constraintType }: GanttMessageContext) => string; readonly constraintWindowBackward: ({ taskId, constraintType }: GanttMessageContext) => string; readonly autoDependencyAdjustment: ({ taskId, startDate, dependencyId }: GanttMessageContext) => string; readonly finishConstraint: ({ taskId, endDate, constraintType, constraintDate }: GanttMessageContext) => string; readonly manualDependencyForward: ({ taskId, dependencyId }: GanttMessageContext) => string; readonly manualDependencyBackward: ({ taskId, dependencyId }: GanttMessageContext) => string; readonly deadlineMissed: ({ taskId, date }: GanttMessageContext) => string; readonly resourceOverallocation: ({ resourceId, date, allocatedUnits, capacityUnits }: GanttMessageContext) => string; readonly storedLevelingDelay: ({ taskId }: GanttMessageContext) => string; readonly resourceLevelingAdjustment: ({ taskId, resourceId }: GanttMessageContext) => string; }; };

Related types: GanttMessageContext

function

export function formatGanttDateWithOption(value: string | null | undefined, option: GanttDateFormatOption | undefined, context: GanttDateFormatContext): string;
ParameterTypeRequiredDefaultDescription
valuestring | null | undefinedYes—
optionGanttDateFormatOption | undefinedYes—
contextGanttDateFormatContextYes—

Related types: GanttDateFormatContext, GanttDateFormatOption

function

export function formatGanttEditorDate(value: string | null | undefined, project: Pick<GanttPluginConfig, 'timeZone' | 'dateFormats'> | null | undefined, field?: string): string;
ParameterTypeRequiredDefaultDescription
valuestring | null | undefinedYes—
projectPick<GanttPluginConfig, "timeZone" | "dateFormats"> | null | undefinedYes—
fieldstring | undefinedNo—

Related types: GanttPluginConfig

function

export function formatGanttTableDate(value: string | null | undefined, project: Pick<GanttPluginConfig, 'timeZone' | 'dateFormats'> | null | undefined, field?: string): string;
ParameterTypeRequiredDefaultDescription
valuestring | null | undefinedYes—
projectPick<GanttPluginConfig, "timeZone" | "dateFormats"> | null | undefinedYes—
fieldstring | undefinedNo—

Related types: GanttPluginConfig

function

export function formatGanttTooltipDate(value: string, project: Pick<GanttPluginConfig, 'timeZone' | 'dateFormats'> | null | undefined, field?: string): string;
ParameterTypeRequiredDefaultDescription
valuestringYes—
projectPick<GanttPluginConfig, "timeZone" | "dateFormats"> | null | undefinedYes—
fieldstring | undefinedNo—

Related types: GanttPluginConfig

constant

export const GANTT_DEPENDENCY_DROPDOWN_COLUMN_TYPE: "gantt-dependency-dropdown";

interface

Committed assignment mutation exposed through EventManager’s gridedit.

export interface GanttAssignmentDomainChangeDetail {
readonly action: GanttBeforeAssignmentChangeAction;
readonly taskId: TaskId;
readonly previousAssignments: readonly AssignmentEntity[];
readonly assignments: readonly AssignmentEntity[];
}
MemberType / returnRequiredDefaultDescription
action"edit"Yes—
taskIdstringYes—
previousAssignmentsreadonly AssignmentEntity[]Yes—
assignmentsreadonly AssignmentEntity[]Yes—

Related types: AssignmentEntity, GanttBeforeAssignmentChangeAction, TaskId

type

export type GanttAssignmentErrorLabelKey =
| 'invalidUnitsForResource'
| 'invalidWorkForResource'
| 'resourceNotFound'
| 'invalidUnitsForName'
| 'serviceNotConfigured'
| 'taskNotFound'
| 'readOnly'
| 'editCanceled';

interface

export interface GanttColorPaletteConfig {
/** Replace the shared default palette with these options. */
readonly options?: readonly ColorPaletteOption[];
/** Append options to either `options` or the shared default palette. */
readonly extendOptions?: readonly ColorPaletteOption[];
/** Disable every palette choice while retaining the visible submenu. */
readonly disabled?: boolean;
/** Configure the inherited/default choice, or set to `false` to remove it. */
readonly defaultOption?: false | {
readonly label?: string;
readonly disabled?: boolean;
};
/** Accessible label resolver for individual swatches. */
readonly colorAriaLabel?: (option: ColorPaletteOption) => string;
}
MemberType / returnRequiredDefaultDescription
optionsreadonly ColorPaletteOption[] | undefinedNo—Replace the shared default palette with these options.
extendOptionsreadonly ColorPaletteOption[] | undefinedNo—Append options to either options or the shared default palette.
disabledboolean | undefinedNo—Disable every palette choice while retaining the visible submenu.
defaultOptionfalse | { readonly label?: string; readonly disabled?: boolean; } | undefinedNo—Configure the inherited/default choice, or set to false to remove it.
colorAriaLabel((option: ColorPaletteOption) => string) | undefinedNo—Accessible label resolver for individual swatches.

type

export type GanttConstraintTypeLabelValue = '' | TaskConstraintType;

Related types: TaskConstraintType

type

export type GanttConstraintTypeOption = '' | TaskConstraintType;

Related types: TaskConstraintType

interface

export interface GanttContextMenuConfig {
/**
* Enables generated task row and task bar actions such as Add, Indent,
* Outdent, and Delete. Defaults to `true`.
*/
readonly row?: boolean;
/**
* Enables generated task-table column actions and pinned timeline zoom
* actions. Defaults to `true`.
*/
readonly column?: boolean;
/** Label overrides for built-in Gantt context-menu items. */
readonly labels?: GanttContextMenuLabels;
/** Hide specific built-in Gantt context-menu items by id or task-aware predicate. */
readonly hidden?: GanttContextMenuHiddenItems;
/** Disable specific built-in items while keeping them visible, optionally per targeted task. */
readonly disabled?: GanttContextMenuDisabledItems;
/** Shared task-color submenu configuration. Set to `false` to remove color editing. */
readonly colorPalette?: GanttColorPaletteConfig | false;
}
MemberType / returnRequiredDefaultDescription
rowboolean | undefinedNo—Enables generated task row and task bar actions such as Add, Indent, Outdent, and Delete. Defaults to true.
columnboolean | undefinedNo—Enables generated task-table column actions and pinned timeline zoom actions. Defaults to true.
labelsPartial<Record<GanttContextMenuItemId, string>> | undefinedNo—Label overrides for built-in Gantt context-menu items.
hiddenPartial<Record<GanttContextMenuItemId, GanttContextMenuItemState>> | undefinedNo—Hide specific built-in Gantt context-menu items by id or task-aware predicate.
disabledPartial<Record<GanttContextMenuItemId, GanttContextMenuItemState>> | undefinedNo—Disable specific built-in items while keeping them visible, optionally per targeted task.
colorPalettefalse | GanttColorPaletteConfig | undefinedNo—Shared task-color submenu configuration. Set to false to remove color editing.

Related types: GanttColorPaletteConfig, GanttContextMenuDisabledItems, GanttContextMenuHiddenItems, GanttContextMenuLabels

type

export type GanttContextMenuDisabledItems = Partial<Record<GanttContextMenuItemId, GanttContextMenuItemState>>;

Related types: GanttContextMenuItemId, GanttContextMenuItemState

type

export type GanttContextMenuHiddenItems = Partial<Record<GanttContextMenuItemId, GanttContextMenuItemState>>;

Related types: GanttContextMenuItemId, GanttContextMenuItemState

type

export type GanttContextMenuItemId =
| 'edit'
| 'add'
| 'addTaskAbove'
| 'addTaskBelow'
| 'addMilestone'
| 'addSubtask'
| 'addSuccessor'
| 'addPredecessor'
| 'convertToMilestone'
| 'indent'
| 'outdent'
| 'color'
| 'delete'
| 'search'
| 'sortAsc'
| 'sortDesc'
| 'filter'
| 'hideColumn'
| 'columns'
| 'zoom'
| 'dateRange'
| 'showToday'
| 'showFlags'
/** @deprecated Configure the `zoom` item instead. */
| 'zoomIn'
/** @deprecated Configure the `zoom` item instead. */
| 'zoomOut';

type

export type GanttContextMenuItemState = boolean | ((context: GanttContextMenuItemStateContext) => boolean);

Related types: GanttContextMenuItemStateContext

interface

export interface GanttContextMenuItemStateContext {
/** Built-in item currently being evaluated. */
readonly itemId: GanttContextMenuItemId;
/** Tasks targeted by the menu invocation. */
readonly taskIds: readonly TaskId[];
/** Resolved tasks for the target ids. */
readonly tasks: readonly TaskEntity[];
}
MemberType / returnRequiredDefaultDescription
itemIdGanttContextMenuItemIdYes—Built-in item currently being evaluated.
taskIdsreadonly string[]Yes—Tasks targeted by the menu invocation.
tasksreadonly TaskEntity[]Yes—Resolved tasks for the target ids.

Related types: GanttContextMenuItemId, TaskEntity, TaskId

type

export type GanttContextMenuLabels = Partial<Record<GanttContextMenuItemId, string>>;

Related types: GanttContextMenuItemId

interface

Options for programmatic task creation via the {@link GANTT_TASK_CREATE_EVENT} event.

export interface GanttCreateTaskOptions {
/** Parent task id, or `null` for a root-level task. */
readonly parentId?: TaskId | null;
/** Insert the new task after this sibling. */
readonly insertAfterTaskId?: TaskId | null;
/** Insert the task before this sibling. Mutually exclusive with `insertAfterTaskId`. */
readonly insertBeforeTaskId?: TaskId | null;
/** Initial canonical task type. Defaults to `task`. */
readonly type?: TaskType;
/** Initial start date. */
readonly startDate?: ISODateString;
/** Initial end date. */
readonly endDate?: ISODateString;
/** Initial task name. */
readonly name?: string;
/** Initial custom source-row values used when creating a task. */
readonly initialValues?: DataType;
/** Optionally link the new task to an existing task in the same transaction. */
readonly dependency?: {
readonly taskId: TaskId;
/** Role of the newly created task relative to `taskId`. */
readonly relation: 'predecessor' | 'successor';
/** Dependency type. Defaults to `finish-to-start`. */
readonly type?: DependencyType;
/** Dependency lag in days. Defaults to `0`. */
readonly lagDays?: number;
};
/**
* Whether task-created listeners such as the packaged editor should open a
* follow-up UI for the new task. Defaults to `true`.
*/
readonly openEditor?: boolean;
}
MemberType / returnRequiredDefaultDescription
parentIdstring | null | undefinedNo—Parent task id, or null for a root-level task.
insertAfterTaskIdstring | null | undefinedNo—Insert the new task after this sibling.
insertBeforeTaskIdstring | null | undefinedNo—Insert the task before this sibling. Mutually exclusive with insertAfterTaskId.
typeTaskType | undefinedNo—Initial canonical task type. Defaults to task.
startDateISODateString | undefinedNo—Initial start date.
endDateISODateString | undefinedNo—Initial end date.
namestring | undefinedNo—Initial task name.
initialValuesDataType | undefinedNo—Initial custom source-row values used when creating a task.
dependency{ readonly taskId: TaskId; readonly relation: "predecessor" | "successor"; readonly type?: DependencyType; readonly lagDays?: number; } | undefinedNo—Optionally link the new task to an existing task in the same transaction.
openEditorboolean | undefinedNo—Whether task-created listeners such as the packaged editor should open a follow-up UI for the new task. Defaults to true.

Related types: DependencyType, TaskId, TaskType

interface

Structural Duet adapter shape kept independent from the optional date-column runtime.

export interface GanttDateAdapter {
parse(value: string, createDate: (year: string, month: string, day: string) => Date): Date | undefined;
format(date: Date): string;
}
MemberType / returnRequiredDefaultDescription
parse(value: string, createDate: (year: string, month: string, day: string) => Date)Date | undefinedYes—
format(date: Date)stringYes—

interface

export interface GanttDateEditorFormatConfig {
readonly formatter?: GanttDateFormatter;
readonly parser?: GanttDateParser;
readonly options?: Intl.DateTimeFormatOptions;
}
MemberType / returnRequiredDefaultDescription
formatterGanttDateFormatter | undefinedNo—
parserGanttDateParser | undefinedNo—
optionsIntl.DateTimeFormatOptions | undefinedNo—

Related types: GanttDateFormatter, GanttDateParser

interface

export interface GanttDateFormatConfig {
/** BCP 47 locale tag used by Intl-based Gantt date formatting. */
readonly locale?: string;
/** IANA time zone used by Intl-based Gantt date formatting. Defaults to the project time zone. */
readonly timeZone?: string;
/** Managed task-table date cell format. Defaults to locale-aware medium date output. */
readonly table?: GanttDateFormatOption;
/** Task-bar tooltip date format. Omit to keep the existing UTC tooltip labels. */
readonly tooltip?: GanttDateFormatOption;
/** Task editor date display/parser configuration. */
readonly editor?: GanttDateEditorFormatConfig;
/** Timeline header formatter. Preferred over `zoom.defaultHeaderFormatter` when set. */
readonly timeline?: TimelineDateFormatter;
/** Fallback parser for custom table/editor date text. */
readonly parser?: GanttDateParser;
}
MemberType / returnRequiredDefaultDescription
localestring | undefinedNo—BCP 47 locale tag used by Intl-based Gantt date formatting.
timeZonestring | undefinedNo—IANA time zone used by Intl-based Gantt date formatting. Defaults to the project time zone.
tableGanttDateFormatOption | undefinedNo—Managed task-table date cell format. Defaults to locale-aware medium date output.
tooltipGanttDateFormatOption | undefinedNo—Task-bar tooltip date format. Omit to keep the existing UTC tooltip labels.
editorGanttDateEditorFormatConfig | undefinedNo—Task editor date display/parser configuration.
timelineTimelineDateFormatter | undefinedNo—Timeline header formatter. Preferred over zoom.defaultHeaderFormatter when set.
parserGanttDateParser | undefinedNo—Fallback parser for custom table/editor date text.

Related types: GanttDateEditorFormatConfig, GanttDateFormatOption, GanttDateParser, TimelineDateFormatter

interface

export interface GanttDateFormatContext {
readonly surface: GanttDateFormatSurface;
readonly field?: string;
readonly locale: string;
readonly timeZone: string;
readonly levelId?: string;
readonly rowId?: string;
readonly unit?: string;
readonly count?: number;
readonly rowIndex?: number;
readonly isLeafRow?: boolean;
}
MemberType / returnRequiredDefaultDescription
surfaceGanttDateFormatSurfaceYes—
fieldstring | undefinedNo—
localestringYes—
timeZonestringYes—
levelIdstring | undefinedNo—
rowIdstring | undefinedNo—
unitstring | undefinedNo—
countnumber | undefinedNo—
rowIndexnumber | undefinedNo—
isLeafRowboolean | undefinedNo—

Related types: GanttDateFormatSurface

type

export type GanttDateFormatOption = Intl.DateTimeFormatOptions | GanttDateFormatter;

Related types: GanttDateFormatter

type

export type GanttDateFormatSurface = 'table' | 'tooltip' | 'editor' | 'timeline';

type

export type GanttDateFormatter = (
value: ISODateString | ISODateTimeString | string,
context: GanttDateFormatContext,
) => string;

Related types: GanttDateFormatContext

type

export type GanttDateParser = (
value: string,
context: GanttDateFormatContext,
) => ISODateString | ISODateTimeString | null;

Related types: GanttDateFormatContext

interface

Committed dependency mutation exposed through EventManager’s gridedit.

export interface GanttDependencyDomainChangeDetail {
readonly action: GanttBeforeDependencyChangeAction;
readonly dependencyId: DependencyId;
readonly previousDependency: DependencyEntity | null;
readonly dependency: DependencyEntity | null;
}
MemberType / returnRequiredDefaultDescription
actionGanttBeforeDependencyChangeActionYes—
dependencyIdstringYes—
previousDependencyDependencyEntity | nullYes—
dependencyDependencyEntity | nullYes—

Related types: DependencyEntity, DependencyId, GanttBeforeDependencyChangeAction

constant

export const ganttDependencyDropdownCellTemplate: CellTemplate<DataType<any, ColumnProp>> | undefined;

class

export class GanttDependencyDropdownEditor {
element?: HTMLElement | null | undefined;
editCell?: EditCell | undefined;
constructor(private readonly data: ColumnDataSchemaModel, private readonly saveCallback: (value: unknown, preventFocus?: boolean) => void, private readonly closeCallback: (focusNext?: boolean) => void);
componentDidRender(): Promise<void>;
getValue(): readonly GanttDependencyDropdownValue[];
disconnectedCallback(): void;
render(createElement: HyperFunc<VNode>): VNode;
}
MemberType / returnRequiredDefaultDescription
elementHTMLElement | null | undefinedNo—
editCellEditCell | undefinedNo—
hostHTMLElement | null | undefinedNo—
valuereadonly GanttDependencyDropdownValue[]Yes—
mountedbooleanYesfalse
closedbooleanYesfalse
componentDidRender()Promise<void>Yes—
getValue()readonly GanttDependencyDropdownValue[]Yes—
disconnectedCallback()voidYes—
render(createElement: HyperFunc<VNode>)VNodeYes—
onChange(value: readonly GanttDependencyDropdownValue[])voidYes—
closeEditor(focusNext?: boolean)voidYes—

Related types: GanttDependencyDropdownValue

type

export type GanttDependencyErrorLabelKey =
| 'duplicate'
| 'notFound'
| 'taskNotFound'
| 'tasksMustExist'
| 'selfReference'
| 'invalidType'
| 'invalidReference'
| 'unsupportedReferenceType'
| 'taskReferenceNotFound'
| 'invalidReferenceValue'
| 'cycle'
| 'readOnly'
| 'replacementCanceled';

interface

Context supplied when building dependency-arrow tooltip content.

export interface GanttDependencyTooltipContext {
/** Dependency relationship under the pointer. */
readonly dependency: DependencyEntity;
/** Predecessor/source task when present in the current task store. */
readonly predecessorTask: TaskEntity | null;
/** Successor/target task when present in the current task store. */
readonly successorTask: TaskEntity | null;
/** Display label used for the From row. Falls back to the predecessor task id. */
readonly predecessorName: string;
/** Display label used for the To row. Falls back to the successor task id. */
readonly successorName: string;
/** Newline-delimited default tooltip body. */
readonly defaultTooltip: string;
}
MemberType / returnRequiredDefaultDescription
dependencyDependencyEntityYes—Dependency relationship under the pointer.
predecessorTaskTaskEntity | nullYes—Predecessor/source task when present in the current task store.
successorTaskTaskEntity | nullYes—Successor/target task when present in the current task store.
predecessorNamestringYes—Display label used for the From row. Falls back to the predecessor task id.
successorNamestringYes—Display label used for the To row. Falls back to the successor task id.
defaultTooltipstringYes—Newline-delimited default tooltip body.

Related types: DependencyEntity, TaskEntity

type

Callback that replaces dependency-arrow tooltip content. Return null or undefined to keep the default From/To tooltip.

export type GanttDependencyTooltipHook = (context: GanttDependencyTooltipContext) => string | null | undefined;

Related types: GanttDependencyTooltipContext

interface

export interface GanttErrorLabelsConfig {
readonly taskEdit?: Partial<Record<GanttTaskEditErrorLabelKey, GanttMessageTemplate>>;
readonly taskMutation?: Partial<Record<GanttTaskMutationErrorLabelKey, GanttMessageTemplate>>;
readonly assignment?: Partial<Record<GanttAssignmentErrorLabelKey, GanttMessageTemplate>>;
readonly dependency?: Partial<Record<GanttDependencyErrorLabelKey, GanttMessageTemplate>>;
readonly taskEditor?: Partial<Record<GanttTaskEditorErrorLabelKey, GanttMessageTemplate>>;
}
MemberType / returnRequiredDefaultDescription
taskEditPartial<Record<GanttTaskEditErrorLabelKey, GanttMessageTemplate>> | undefinedNo—
taskMutationPartial<Record<GanttTaskMutationErrorLabelKey, GanttMessageTemplate>> | undefinedNo—
assignmentPartial<Record<GanttAssignmentErrorLabelKey, GanttMessageTemplate>> | undefinedNo—
dependencyPartial<Record<GanttDependencyErrorLabelKey, GanttMessageTemplate>> | undefinedNo—
taskEditorPartial<Record<GanttTaskEditorErrorLabelKey, GanttMessageTemplate>> | undefinedNo—

Related types: GanttAssignmentErrorLabelKey, GanttDependencyErrorLabelKey, GanttMessageTemplate, GanttTaskEditErrorLabelKey, GanttTaskEditorErrorLabelKey, GanttTaskMutationErrorLabelKey

interface

export interface GanttLabelsConfig extends GanttRuntimeLabelsConfig {
/** Packaged task-editor text inherited by `GanttTaskEditorDialogPlugin`. */
readonly taskEditor?: GanttTaskEditorDialogLocaleTextOptions;
}
MemberType / returnRequiredDefaultDescription
taskEditorGanttTaskEditorDialogLocaleTextOptions | undefinedNo—Packaged task-editor text inherited by GanttTaskEditorDialogPlugin.

Related types: GanttRuntimeLabelsConfig, GanttTaskEditorDialogLocaleTextOptions, GanttTaskEditorDialogPlugin

interface

Values available to parameterized Gantt error and warning labels.

export interface GanttMessageContext {
readonly action?: string;
readonly allocatedUnits?: number;
readonly assignmentId?: string;
readonly calendarId?: string | number;
readonly capacityUnits?: number;
readonly constraintDate?: string;
readonly constraintType?: string;
readonly date?: string;
readonly dependencyId?: string;
readonly dependencyType?: string;
readonly endDate?: string;
readonly entityId?: string;
readonly entityName?: string;
readonly field?: string;
readonly label?: string;
readonly max?: number;
readonly min?: number;
readonly parentId?: string;
readonly resourceId?: string;
readonly resourceName?: string;
readonly splitIndex?: number;
readonly startDate?: string;
readonly taskId?: string;
readonly value?: unknown;
}
MemberType / returnRequiredDefaultDescription
actionstring | undefinedNo—
allocatedUnitsnumber | undefinedNo—
assignmentIdstring | undefinedNo—
calendarIdstring | number | undefinedNo—
capacityUnitsnumber | undefinedNo—
constraintDatestring | undefinedNo—
constraintTypestring | undefinedNo—
datestring | undefinedNo—
dependencyIdstring | undefinedNo—
dependencyTypestring | undefinedNo—
endDatestring | undefinedNo—
entityIdstring | undefinedNo—
entityNamestring | undefinedNo—
fieldstring | undefinedNo—
labelstring | undefinedNo—
maxnumber | undefinedNo—
minnumber | undefinedNo—
parentIdstring | undefinedNo—
resourceIdstring | undefinedNo—
resourceNamestring | undefinedNo—
splitIndexnumber | undefinedNo—
startDatestring | undefinedNo—
taskIdstring | undefinedNo—
valueunknownNo—

type

export type GanttMessageTemplate = string | ((context: GanttMessageContext) => string);

Related types: GanttMessageContext

interface

A vertical flag line pinned to a specific date on the gantt timeline. Shows a cap/flag at the top of the canvas and a full-height vertical line.

export interface GanttMilestoneLine {
/** Unique identifier. */
readonly id: string;
/** Date the line is pinned to. */
readonly date: ISODateString;
/** Label displayed on the flag cap. */
readonly label?: string;
/** Optional CSS color for the line and flag (defaults to CSS variable). */
readonly color?: string;
}
MemberType / returnRequiredDefaultDescription
idstringYes—Unique identifier.
dateISODateStringYes—Date the line is pinned to.
labelstring | undefinedNo—Label displayed on the flag cap.
colorstring | undefinedNo—Optional CSS color for the line and flag (defaults to CSS variable).

class

export class GanttPlugin extends CorePlugin {
[DATA_GRID_CONTEXT_MENU_EXTERNAL_ROW_OWNER]: true;
pluginDependencies: PluginDependency[];
constructor(revogrid: HTMLRevoGridElement, providers: PluginProviders);
applyGantt(config?: GanttPluginConfig): void;
clearGantt(): void;
destroy(): void;
zoomIn(): boolean;
zoomOut(): boolean;
setZoomLevel(levelId: string): boolean;
getZoomLevel(): TimelineZoomLevel;
canZoomIn(): boolean;
canZoomOut(): boolean;
scrollToTimelineCoordinate(position: { x: number }): Promise<void>;
getVisibleRange(): { startDate: ISODateString; endDate: ISODateString; } | null;
captureBaseline(options?: CaptureBaselineOptions): BaselineSnapshot | null;
createTask(options?: GanttCreateTaskOptions): TaskId | null;
updateTask(taskId: TaskId, patch: TaskUpdate): boolean;
updateTasks(taskIds: readonly TaskId[], patch: TaskUpdate): boolean;
getProjectSnapshot(): ProjectSnapshot | null;
finalizeTaskCreate(taskId: TaskId): boolean;
discardTaskCreate(taskId: TaskId): boolean;
indentTasks(taskIds?: readonly TaskId[]): readonly TaskId[];
indentTask(taskId?: TaskId): TaskId | null;
outdentTasks(taskIds?: readonly TaskId[]): readonly TaskId[];
outdentTask(taskId?: TaskId): TaskId | null;
convertTasksToMilestones(taskIds?: readonly TaskId[]): readonly TaskId[];
convertTaskToMilestone(taskId?: TaskId): TaskId | null;
deleteTasks(taskIds?: readonly TaskId[]): readonly TaskId[];
deleteTask(taskId?: TaskId): TaskId | null;
}
MemberType / returnRequiredDefaultDescription
[DATA_GRID_CONTEXT_MENU_EXTERNAL_ROW_OWNER]trueYestrue as const
pluginDependenciesPluginDependency[]Yes[ { kind: 'auto-installed', target: { type: 'plugins', plugins: [() => OverlayPlugin, () => EventManagerPlugin, () => HistoryPlugin, () => TooltipPlugin, () => ContextMenuPlugin, () => DataGridContextMenuPlugin] }, description: 'Installs these Pro plugins internally when absent, including the shared semantic grid context menu used by Gantt.', }, { kind: 'auto-installed', target: { type: 'plugins', plugins: [() => RowOrderPlugin, () => TreeDataPlugin, () => ColumnHidePlugin, () => ColumnDialogPlugin, () => GanttPanelResizePlugin, () => GanttTaskEditorDialogPlugin, () => GanttAddTaskRowPlugin, () => GanttTimelineHeaderPlugin] }, description: 'Installs these plugins internally for Gantt grid structure, row reordering, column visibility management, panel resizing, task editing, the pinned add-task row, and timeline header rendering.', }, { kind: 'auto-installed', target: { type: 'plugin', plugin: () => AdvanceFilterPlugin }, description: 'Installs advanced filtering when Gantt enables task-table filters after RevoGrid core plugin bootstrap.', }, { kind: 'config-integration', target: [ { type: 'contract', contract: 'direct-tree-config' }, { type: 'contract', contract: 'direct-event-manager-config' }, { type: 'contract', contract: 'direct-history-config' }, ], description: 'Reads and writes direct plugin config props while synchronizing Gantt state.', }, ]
tooltipSuppressionGanttTooltipSuppressionYes—
ganttConfigGanttPluginConfig | nullYesnull
gridStateGanttGridStateYesnew GanttGridState()
schedulerEngineSchedulerEngineYescreateSchedulerEngine()
dependencyLayoutServiceDependencyLayoutServiceYescreateDependencyLayoutService()
gridSyncGanttGridSyncYes—
timelineHeaderPluginGanttTimelineHeaderPluginYes—
rowOrderStateGanttRowOrderStateYes—
searchToolGanttSearchToolYes—
historyToolGanttHistoryToolYes—
taskMutationServiceDefaultTaskMutationServiceYescreateTaskMutationService()
assignmentMutationServiceAssignmentMutationServiceYescreateAssignmentMutationService()
dependencyMutationServiceDependencyMutationServiceYescreateDependencyMutationService()
isApplyingGridRowsbooleanYesfalse
resourcePlanningNameColumnEnabledboolean | nullYesnull
toolContextGanttCoordinatorContextYes—
taskBarsPluginGanttTaskBarsPluginYes—
addTaskRowPluginGanttAddTaskRowPluginYes—
timelineViewportGanttTimelineViewportControllerYes—
timelineBackgroundToolTimelineBackgroundToolYes—
taskSelectionToolGanttTaskSelectionToolYes—
selectionCoordinatorGanttSelectionCoordinatorYes—
calendarToolCalendarToolYesnew CalendarTool()
timelineToolTimelineToolYes—
timelineStateTimelineViewStateYesnew TimelineViewState()
baselineToolBaselineToolYesnew BaselineTool()
criticalPathToolCriticalPathToolYesnew CriticalPathTool()
assignmentsToolAssignmentsToolYes—
dependencyToolDependencyToolYes—
dependencyOverlayPluginGanttDependencyOverlayPluginYes—
contextMenuToolGanttContextMenuToolYes—
featureToolsreadonly GanttFeatureTool[]Yes—
hasHydratedTaskRowsbooleanYesfalse
hasHydratedDependenciesbooleanYesfalse
hasHydratedAssignmentsbooleanYesfalse
hasHydratedBaselinesbooleanYesfalse
externalDependenciesreadonly DependencyEntity[] | undefinedYes—
externalCalendarsreadonly CalendarEntity[] | undefinedYes—
externalResourcesreadonly ResourceEntity[] | undefinedYes—
externalAssignmentsreadonly AssignmentEntity[] | undefinedYes—
externalBaselinesreadonly BaselineSnapshot[] | undefinedYes—
pendingTaskCreateSnapshotsMap<string, { readonly sourceRows: readonly DataType[]; readonly tasks: readonly TaskEntity[]; }>Yesnew Map<TaskId, { readonly sourceRows: readonly DataType[]; readonly tasks: readonly TaskEntity[]; }>()
timelineHeaderRefreshFramenumber | nullYesnull
viewportScrollRefreshFramenumber | nullYesnull
rowOrderCommitTimernumber | nullYesnull
pluginsInitializedbooleanYesfalse
disposeTooltipThemeVariables(() => void) | undefinedNo—
featureToolsSetupbooleanYesfalse
hasObservedGanttConfigChangebooleanYesfalse
sourceFieldsResolvedGanttFieldMapYesresolveGanttFieldMap()
authoredSourcereadonly DataType[]Yes[]
onGridKeyDown(event: CustomEvent<KeyboardEvent> | KeyboardEvent) => voidYescreateKeyboardEventAdapter((event) => this.onKeyDown(event))
onGridWheel(event: WheelEvent) => voidYes(event: WheelEvent) => this.onWheel(event)
onGridNativeScroll(event: Event) => voidYes(event: Event) => this.onNativeViewportScroll(event)
applyGantt(config?: GanttPluginConfig)voidYes—
clearGantt()voidYes—
destroy()voidYes—
applyInitialState(initialBindings: GanttObservableBindings)voidYes—
enableRangeSelectionDefault()voidYes—
initPlugins()voidYes—
collectEdit(detail: EventManagerEvent)voidYes—
setupFeatureTools()voidYes—
registerEventListeners()GanttObservableBindingsYes—
bootstrapProject(project: GanttPluginConfig)voidYes—
handleSourceChange(source: DataType[] | undefined, updateMode: GridUpdateMode = 'none')GanttGridRenderResult | nullYes—
scheduleRowOrderCommit(previousTasks: readonly DataType[], movedTaskIds: readonly TaskId[] = [], projectedRows: readonly DataType[] = [])voidYes—
cancelRowOrderCommit()voidYes—
commitRowOrder(previousTasks: readonly DataType[], movedTaskIds: readonly TaskId[] = [], projectedRows: readonly DataType[] = [])voidYes—
refreshSearchAfterSourceSet()voidYes—
handleDependenciesChange(dependencies: readonly DependencyEntity[] | undefined)voidYes—
handleCalendarsChange(calendars: readonly CalendarEntity[] | undefined)voidYes—
resolveConfiguredCalendars(config: GanttPluginConfig | null)readonly CalendarEntity[]Yes—
handleResourcesChange(resources: readonly ResourceEntity[] | undefined)voidYes—
handleAssignmentsChange(assignments: readonly AssignmentEntity[] | undefined)voidYes—
handleBaselinesChange(baselines: readonly BaselineSnapshot[] | undefined)voidYes—
emitDependencyHistoryIfChanged(previousDependencies: readonly DependencyEntity[], nextDependencies: readonly DependencyEntity[])voidYes—
emitAssignmentHistoryIfChanged(previousAssignments: readonly AssignmentEntity[], nextAssignments: readonly AssignmentEntity[])voidYes—
emitBaselineHistoryIfChanged(previousBaselines: readonly BaselineSnapshot[], nextBaselines: readonly BaselineSnapshot[])voidYes—
renderGrid(updateMode: GridUpdateMode = 'structure', preserveAuthoredSource = false)GanttGridRenderResult | nullYes—
refreshGanttViewport(updateMode: GridUpdateMode = 'viewport')GanttGridRenderResult | nullYes—
syncGridRows(rows: readonly DataType[], updateMode: GridUpdateMode)voidYes—
collectRenderContributions()GanttRenderContributionsYes—
getTaskRowPatchContext(taskId: TaskId | null, patch: Partial<TaskEntity>)GanttSourcePatchContextYes—
commitGridEdit(detail: EventManagerEvent)booleanYes—
commitRowStatusChange(detail: RowStatusChangeEvent)voidYes—
replayHistoryEdit(detail: EventManagerEvent)booleanYes—
applyGridEditData(detail: EventManagerEvent, options: { emitBeforeTaskChange: boolean; preferRawTaskPatch: boolean })booleanYes—
applyDirectSourcePatch(taskId: TaskId, sourcePatch: Record<string, unknown>)voidYes—
commitDerivedTaskStoreToSource()voidYes—
normalizeGridEditValue(field: string, value: unknown)unknownYes—
onLayoutChanged()voidYes—
onViewportScrollSource(event: CustomEvent<ViewPortScrollEvent>)voidYes—
onNativeViewportScroll(event: Event)voidYes—
onViewportScrollApplied()voidYes—
shouldSyncViewportFromScrollSource(event: CustomEvent<ViewPortScrollEvent>)booleanYes—
shouldSyncViewportFromNativeScroll(event: Event)booleanYes—
scheduleViewportScrollRefresh()voidYes—
cancelViewportScrollRefresh()voidYes—
onViewportChanged()voidYes—
scrollGanttViewport(position: { x?: number; y?: number })Promise<void>Yes—
scheduleTimelineHeaderRefresh()voidYes—
cancelTimelineHeaderRefresh()voidYes—
syncTimelineBackground(viewport: GanttViewportSnapshot | null = this.timelineViewport.syncFrame())voidYes—
hasTimelineBackgroundHeaderStateChanged(state: TimelineBackgroundHeaderState)booleanYes—
onKeyDown(event: KeyboardEvent)voidYes—
onWheel(event: WheelEvent)voidYes—
zoomIn()booleanYes—
zoomOut()booleanYes—
setZoomLevel(levelId: string)booleanYes—
getZoomLevel()TimelineZoomLevelYes—
canZoomIn()booleanYes—
canZoomOut()booleanYes—
scrollToTimelineCoordinate(position: { x: number })Promise<void>Yes—Scroll the visible Gantt timeline pane without moving the task table.
getVisibleRange(){ startDate: ISODateString; endDate: ISODateString; } | nullYes—
captureBaseline(options?: CaptureBaselineOptions)BaselineSnapshot | nullYes—
createTask(options?: GanttCreateTaskOptions)TaskId | nullYes—
createTaskFromPinnedRow(name: string)TaskId | nullYes—
updateTask(taskId: TaskId, patch: TaskUpdate)booleanYes—
updateTasks(taskIds: readonly TaskId[], patch: TaskUpdate)booleanYes—
getProjectSnapshot()ProjectSnapshot | nullYes—Return the project collections currently owned by the Gantt runtime.
finalizeTaskCreate(taskId: TaskId)booleanYes—
discardTaskCreate(taskId: TaskId)booleanYes—
commitTaskCreate(options?: GanttCreateTaskOptions)TaskId | nullYes—
shouldDeferTaskCreateHistory(options?: GanttCreateTaskOptions)booleanYes—
syncPublicTaskRows(options: { createdTaskId?: TaskId; initialValues?: DataType } = {})voidYes—
resolveBulkTaskIds(taskIds?: readonly TaskId[])TaskId[]Yes—
validateTaskMutation(action: GanttBulkTaskAction, taskIds: readonly TaskId[], options: { startDate?: string } = {})GanttBulkActionValidationYes—
emitBulkBeforeTaskChanges(action: 'indent' | 'outdent' | 'delete' | 'convert-to-milestone', taskIds: readonly TaskId[])booleanYes—
commitBulkTaskAction(action: 'indent' | 'outdent' | 'delete' | 'convert-to-milestone', taskIds: readonly TaskId[])readonly TaskId[]Yes—
syncTaskMutationService()voidYes—
indentTasks(taskIds?: readonly TaskId[])readonly TaskId[]Yes—
indentTask(taskId?: TaskId)TaskId | nullYes—
outdentTasks(taskIds?: readonly TaskId[])readonly TaskId[]Yes—
outdentTask(taskId?: TaskId)TaskId | nullYes—
convertTasksToMilestones(taskIds?: readonly TaskId[])readonly TaskId[]Yes—
convertTaskToMilestone(taskId?: TaskId)TaskId | nullYes—
deleteTasks(taskIds?: readonly TaskId[])readonly TaskId[]Yes—
deleteTask(taskId?: TaskId)TaskId | nullYes—
refreshTree(parentId?: TaskId | null)voidYes—
translateGridEditDetailToAuthored(detail: EventManagerEvent)voidYes—
normalizeHistoryTaskRows(rows: readonly DataType[])readonly DataType[]Yes—
getTaskIdFromModel(model: unknown)TaskId | nullYes—
clearRowSelectSelection()voidYes—

Related types: BaselineSnapshot, GanttCreateTaskOptions, GanttPluginConfig, ProjectSnapshot, TaskId, TaskUpdate, TimelineZoomLevel

interface

Top-level configuration for the {@link GanttPlugin}. Pass this object to the grid element’s gantt property.

export interface GanttPluginConfig {
// Project metadata (required)
/** Unique project identifier. */
readonly id: EntityId;
/** Project display name. */
readonly name: string;
/** Project data schema version. */
readonly version: string;
/** Currency code for cost calculations (e.g. `\"USD\"`). */
readonly currency: string;
/** Default IANA time zone (e.g. `\"America/New_York\"`). */
readonly timeZone: string;
/** Calendar used by default for new tasks. */
readonly primaryCalendarId: CalendarId;
/** Timestamp of last project modification. */
readonly updatedAt: ISODateTimeString;
/** Reporting date used for calculated task status. Defaults to today. */
readonly statusDate?: ISODateString;
/** Working calendars for tasks/resources, including optional intraday `workingHours`. */
readonly calendars?: readonly CalendarEntity[];
/** Duration display unit and working-time conversion settings. */
readonly durationSettings?: DurationSettings;
/** Maps shared view meanings to task properties in the grid source. */
readonly fields?: ViewFieldMap;
// Configuration (all optional)
/** When `true`, packaged Gantt task, dependency, and assignment mutations are rejected. */
readonly readOnly?: boolean;
/**
* Task kinds available in packaged Task Type editors.
* Omit to allow `task`, `milestone`, and `summary`.
*/
readonly allowedTaskTypes?: readonly TaskType[];
/** Pre-defined zoom level — see {@link TimelineZoomPreset}. */
readonly zoomPreset?: TimelineZoomPreset;
/** Timeline precision used by the default zoom and when a timeline mode has no interaction snap unit. Defaults to `'day'`. */
readonly timelinePrecision?: 'day' | 'hour';
/** Timeline interaction snapping options for task move and resize. */
readonly snap?: GanttSnapConfig;
/** Advanced zoom configuration overriding the preset. */
readonly zoom?: TimelineZoomConfig;
/** First day of week for timeline week headers/ticks, where `0` is Sunday and `1` is Monday. Defaults to Sunday. */
readonly weekStartsOn?: 0 | 1;
/**
* Scheduling engine options.
* These are MSP-inspired policies, not display preferences: they decide
* whether authored dates move, warn, or stay anchored during recalculation.
*/
readonly scheduling?: GanttSchedulingConfig;
/** When `true`, enables packaged task-creation controls such as the pinned add-task row. */
readonly allowTaskCreate?: boolean;
/** When `true`, shows a pinned bottom row for typing a new task name. Requires `allowTaskCreate`. */
readonly taskCreateRow?: boolean;
/**
* When `true`, clicking or tapping a task-table cell horizontally reveals
* that task's bar in the timeline. Disabled by default.
*/
readonly scrollToTaskOnCellClick?: boolean;
/**
* Optional inclusive timeline bounds. When omitted, bounds are derived from
* scheduled task dates with zoom-appropriate padding.
*/
readonly timelineRange?: GanttTimelineRange;
/**
* Built-in Gantt context menu integration. Enabled by default. Set to `false`
* to opt out of generated row, column, and timeline menu items while keeping
* application-provided RevoGrid context menu configuration untouched.
*/
readonly contextMenu?: GanttContextMenuConfig | false;
/** Restricts which dependency types the user may create. */
readonly allowedDependencyTypes?: readonly DependencyType[];
/** Filters the resource list to only show selected resources. */
readonly resourceFilterIds?: readonly ResourceId[];
/** Resource planning row view and load bar options. */
readonly resourcePlanning?: GanttResourcePlanningConfig;
/** Project-level date display and parsing preferences. */
readonly dateFormats?: GanttDateFormatConfig;
/** Built-in Gantt UI label overrides for localization. */
readonly labels?: GanttLabelsConfig;
/** Visual appearance options — see {@link GanttVisualConfig}. */
readonly visuals?: GanttVisualConfig;
}
MemberType / returnRequiredDefaultDescription
idstringYes—Unique project identifier.
namestringYes—Project display name.
versionstringYes—Project data schema version.
currencystringYes—Currency code for cost calculations (e.g. \"USD\").
timeZonestringYes—Default IANA time zone (e.g. \"America/New_York\").
primaryCalendarIdCalendarIdYes—Calendar used by default for new tasks.
updatedAt${number}-${number}-${number}T${string}Yes—Timestamp of last project modification.
statusDateISODateString | undefinedNo—Reporting date used for calculated task status. Defaults to today.
calendarsreadonly CalendarEntity[] | undefinedNo—Working calendars for tasks/resources, including optional intraday workingHours.
durationSettingsDurationSettings | undefinedNo—Duration display unit and working-time conversion settings.
fieldsViewFieldMap | undefinedNo—Maps shared view meanings to task properties in the grid source.
readOnlyboolean | undefinedNo—When true, packaged Gantt task, dependency, and assignment mutations are rejected.
allowedTaskTypesreadonly TaskType[] | undefinedNo—Task kinds available in packaged Task Type editors. Omit to allow task, milestone, and summary.
zoomPresetTimelineZoomPreset | undefinedNo—Pre-defined zoom level — see {@link TimelineZoomPreset}.
timelinePrecision"hour" | "day" | undefinedNo—Timeline precision used by the default zoom and when a timeline mode has no interaction snap unit. Defaults to 'day'.
snapGanttSnapConfig | undefinedNo—Timeline interaction snapping options for task move and resize.
zoomTimelineZoomConfig | undefinedNo—Advanced zoom configuration overriding the preset.
weekStartsOn0 | 1 | undefinedNo—First day of week for timeline week headers/ticks, where 0 is Sunday and 1 is Monday. Defaults to Sunday.
schedulingGanttSchedulingConfig | undefinedNo—Scheduling engine options. These are MSP-inspired policies, not display preferences: they decide whether authored dates move, warn, or stay anchored during recalculation.
allowTaskCreateboolean | undefinedNo—When true, enables packaged task-creation controls such as the pinned add-task row.
taskCreateRowboolean | undefinedNo—When true, shows a pinned bottom row for typing a new task name. Requires allowTaskCreate.
scrollToTaskOnCellClickboolean | undefinedNo—When true, clicking or tapping a task-table cell horizontally reveals that task’s bar in the timeline. Disabled by default.
timelineRangeGanttTimelineRange | undefinedNo—Optional inclusive timeline bounds. When omitted, bounds are derived from scheduled task dates with zoom-appropriate padding.
contextMenufalse | GanttContextMenuConfig | undefinedNo—Built-in Gantt context menu integration. Enabled by default. Set to false to opt out of generated row, column, and timeline menu items while keeping application-provided RevoGrid context menu configuration untouched.
allowedDependencyTypesreadonly DependencyType[] | undefinedNo—Restricts which dependency types the user may create.
resourceFilterIdsreadonly string[] | undefinedNo—Filters the resource list to only show selected resources.
resourcePlanningGanttResourcePlanningConfig | undefinedNo—Resource planning row view and load bar options.
dateFormatsGanttDateFormatConfig | undefinedNo—Project-level date display and parsing preferences.
labelsGanttLabelsConfig | undefinedNo—Built-in Gantt UI label overrides for localization.
visualsGanttVisualConfig | undefinedNo—Visual appearance options — see {@link GanttVisualConfig}.

Related types: DependencyType, EntityId, GanttContextMenuConfig, GanttDateFormatConfig, GanttLabelsConfig, GanttResourcePlanningConfig, GanttSchedulingConfig, GanttSnapConfig, GanttTimelineRange, GanttVisualConfig, ResourceId, TaskType, TimelineZoomConfig, TimelineZoomPreset

interface

Resource planning/load view configuration.

export interface GanttResourcePlanningConfig {
/** When `true`, the grid projects one row per resource instead of one row per task. */
readonly enabled?: boolean;
/** Restrict the resource planning rows to these resources. */
readonly visibleResourceIds?: readonly ResourceId[];
/** Load bucket size. `day` shows one bar per day; `week` aggregates by calendar week. */
readonly loadGranularity?: 'day' | 'week';
/** Capacity threshold display. */
readonly capacityDisplay?: 'line' | 'none';
/** How over-allocation is shown on load bars. */
readonly overAllocationDisplay?: 'highlight' | 'none';
}
MemberType / returnRequiredDefaultDescription
enabledboolean | undefinedNo—When true, the grid projects one row per resource instead of one row per task.
visibleResourceIdsreadonly string[] | undefinedNo—Restrict the resource planning rows to these resources.
loadGranularity"day" | "week" | undefinedNo—Load bucket size. day shows one bar per day; week aggregates by calendar week.
capacityDisplay"line" | "none" | undefinedNo—Capacity threshold display.
overAllocationDisplay"none" | "highlight" | undefinedNo—How over-allocation is shown on load bars.

Related types: ResourceId

interface

Shared labels understood by the Gantt engine, mutation services, and grid.

export interface GanttRuntimeLabelsConfig {
readonly taskMode?: Partial<Record<GanttTaskModeLabelValue, string>>;
readonly status?: Partial<Record<TaskStatus, string>>;
readonly workflowStatus?: Partial<Record<TaskWorkflowStatus, string>>;
readonly effortMode?: Partial<Record<TaskEffortMode, string>>;
readonly constraintType?: Partial<Record<GanttConstraintTypeLabelValue, string>>;
readonly taskType?: Partial<Record<TaskType, string>>;
readonly errors?: GanttErrorLabelsConfig;
readonly warnings?: GanttWarningLabelsConfig;
}
MemberType / returnRequiredDefaultDescription
taskModePartial<Record<GanttTaskModeLabelValue, string>> | undefinedNo—
statusPartial<Record<TaskStatus, string>> | undefinedNo—
workflowStatusPartial<Record<TaskWorkflowStatus, string>> | undefinedNo—
effortModePartial<Record<TaskEffortMode, string>> | undefinedNo—
constraintTypePartial<Record<GanttConstraintTypeLabelValue, string>> | undefinedNo—
taskTypePartial<Record<TaskType, string>> | undefinedNo—
errorsGanttErrorLabelsConfig | undefinedNo—
warningsGanttWarningLabelsConfig | undefinedNo—

Related types: GanttConstraintTypeLabelValue, GanttErrorLabelsConfig, GanttTaskModeLabelValue, GanttWarningLabelsConfig, TaskEffortMode, TaskStatus, TaskType, TaskWorkflowStatus

type

export type GanttSchedulerWarningLabelKey =
| 'duplicateId'
| 'calendarWithoutWorkingDay'
| 'invalidWorkingCalendar'
| 'invalidTaskConstraint'
| 'missingTaskCalendar'
| 'invalidTaskDateRange'
| 'invalidTaskDuration'
| 'invalidTaskProgress'
| 'invalidTaskWork'
| 'invalidTaskPriority'
| 'missingDependencyTask'
| 'missingResourceCalendar'
| 'invalidResourceUnits'
| 'invalidResourceCost'
| 'missingAssignmentTask'
| 'missingAssignmentResource'
| 'invalidAssignmentUnits'
| 'invalidAssignmentWork'
| 'dependencyCycle'
| 'dependencyConstraint'
| 'hardConstraintOverride'
| 'constraintWindowForward'
| 'constraintWindowBackward'
| 'autoDependencyAdjustment'
| 'finishConstraint'
| 'manualDependencyForward'
| 'manualDependencyBackward'
| 'deadlineMissed'
| 'resourceOverallocation'
| 'storedLevelingDelay'
| 'resourceLevelingAdjustment';

interface

Scheduling engine configuration.

export interface GanttSchedulingConfig {
/**
* When enabled, task duration is evaluated in working days only,
* excluding calendar holidays and non-working weekdays.
*/
readonly excludeHolidaysFromDuration?: boolean;
/** Default task mode when a source row does not explicitly set `taskMode`. */
readonly taskModeDefault?: 'auto' | 'manual';
/**
* Behaviour for dependency violations on auto-scheduled tasks.
* Both modes keep effective dates dependency-valid; `warn` additionally
* creates diagnostics so the UI can explain why the task moved.
*/
readonly autoDependencyViolationBehavior?: 'clamp' | 'warn';
/**
* Behaviour for dependency violations on manually scheduled tasks.
* Manual tasks preserve authored dates; this option controls whether the
* violation is surfaced to users.
*/
readonly manualDependencyViolationBehavior?: 'warn' | 'ignore';
/** Calendar basis used for dependency lag/lead. */
readonly lagCalendar?: 'calendar-days' | 'working-days';
/** Direction of scheduling. */
readonly scheduleFrom?: 'project-start' | 'project-finish';
/** Optional project start anchor used by forward scheduling policies. */
readonly projectStartDate?: ISODateString;
/** Optional project finish anchor used by backward scheduling policies. */
readonly projectFinishDate?: ISODateString;
/**
* Resource capacity policy.
* `warn` reports over-allocation; `auto` shifts eligible forward-scheduled
* auto tasks. Backward/project-finish schedules remain warning-only.
*/
readonly resourceLeveling?: 'off' | 'warn' | 'auto';
/** When true, auto-leveling only delays tasks up to their pre-leveling total slack. */
readonly resourceLevelingWithinSlack?: boolean;
/** Default task type used for work/duration/unit calculations. Defaults to `fixed-duration`. */
readonly effortModeDefault?: TaskEffortMode;
/** Progress-aware scheduling policy for actual start and remaining duration fields. Actual finish is always authoritative. */
readonly progressRescheduling?: 'off' | 'remaining-duration';
}
MemberType / returnRequiredDefaultDescription
excludeHolidaysFromDurationboolean | undefinedNo—When enabled, task duration is evaluated in working days only, excluding calendar holidays and non-working weekdays.
taskModeDefault"manual" | "auto" | undefinedNo—Default task mode when a source row does not explicitly set taskMode.
autoDependencyViolationBehavior"clamp" | "warn" | undefinedNo—Behaviour for dependency violations on auto-scheduled tasks. Both modes keep effective dates dependency-valid; warn additionally creates diagnostics so the UI can explain why the task moved.
manualDependencyViolationBehavior"warn" | "ignore" | undefinedNo—Behaviour for dependency violations on manually scheduled tasks. Manual tasks preserve authored dates; this option controls whether the violation is surfaced to users.
lagCalendar"calendar-days" | "working-days" | undefinedNo—Calendar basis used for dependency lag/lead.
scheduleFrom"project-start" | "project-finish" | undefinedNo—Direction of scheduling.
projectStartDateISODateString | undefinedNo—Optional project start anchor used by forward scheduling policies.
projectFinishDateISODateString | undefinedNo—Optional project finish anchor used by backward scheduling policies.
resourceLeveling"auto" | "warn" | "off" | undefinedNo—Resource capacity policy. warn reports over-allocation; auto shifts eligible forward-scheduled auto tasks. Backward/project-finish schedules remain warning-only.
resourceLevelingWithinSlackboolean | undefinedNo—When true, auto-leveling only delays tasks up to their pre-leveling total slack.
effortModeDefaultTaskEffortMode | undefinedNo—Default task type used for work/duration/unit calculations. Defaults to fixed-duration.
progressRescheduling"off" | "remaining-duration" | undefinedNo—Progress-aware scheduling policy for actual start and remaining duration fields. Actual finish is always authoritative.

Related types: TaskEffortMode

interface

export interface GanttSnapConfig {
/** Unit used for timeline interaction snapping. Overrides the active timeline mode's `interactionSnapUnit`. */
readonly unit?: 'day' | 'hour' | 'minute';
/** When `true`, snapping skips calendar holidays, closed weekdays, and closed working time. Defaults to `true`. */
readonly workingTime?: boolean;
}
MemberType / returnRequiredDefaultDescription
unit"minute" | "hour" | "day" | undefinedNo—Unit used for timeline interaction snapping. Overrides the active timeline mode’s interactionSnapUnit.
workingTimeboolean | undefinedNo—When true, snapping skips calendar holidays, closed weekdays, and closed working time. Defaults to true.

interface

Committed task mutation exposed through EventManager’s gridedit.

export interface GanttTaskDomainChangeDetail {
readonly action: GanttBeforeTaskChangeAction;
readonly taskId: TaskId;
readonly previousTask: TaskEntity | null;
readonly task: TaskEntity | null;
/** Canonical source positions, present when ordering is part of the change. */
readonly previousIndex?: number;
readonly index?: number;
}
MemberType / returnRequiredDefaultDescription
actionGanttBeforeTaskChangeActionYes—
taskIdstringYes—
previousTaskTaskEntity | nullYes—
taskTaskEntity | nullYes—
previousIndexnumber | undefinedNo—Canonical source positions, present when ordering is part of the change.
indexnumber | undefinedNo—

Related types: GanttBeforeTaskChangeAction, TaskEntity, TaskId

type

export type GanttTaskEditErrorLabelKey =
| 'invalidField'
| 'booleanRequired'
| 'unsupportedConstraintType'
| 'invalidDate'
| 'summaryDatesDerived'
| 'invalidScheduledDate'
| 'startAfterEnd'
| 'endBeforeStart'
| 'invalidEffortMode'
| 'taskNameEmpty'
| 'invalidLevelingDelay'
| 'invalidPriority'
| 'summaryProgressDerived'
| 'invalidPercentDone'
| 'statusCalculated'
| 'invalidWorkflowStatus'
| 'invalidTaskMode'
| 'unsupportedTaskType'
| 'disallowedTaskType'
| 'summaryDurationDerived'
| 'invalidDuration'
| 'invalidRemainingDuration'
| 'milestoneDurationZero'
| 'invalidWork';

type

export type GanttTaskEditorErrorLabelKey =
| 'invalidDate'
| 'invalidNonNegativeNumber'
| 'invalidRangeNumber'
| 'invalidBoolean'
| 'unsupportedField'
| 'taskNameEmpty'
| 'unsupportedWorkflowStatus'
| 'disallowedTaskType'
| 'summaryDurationDerived'
| 'invalidDuration'
| 'invalidDateRange'
| 'unsupportedConstraintType'
| 'invalidWork'
| 'invalidRemainingDuration'
| 'unsupportedEffortMode'
| 'calendarUnavailable'
| 'invalidTags';

interface

Detail payload for indent/outdent events.

export interface GanttTaskHierarchyActionDetail {
/** Target task id (defaults to the currently selected task). */
readonly taskId?: TaskId;
/** Target task ids for bulk task actions. */
readonly taskIds?: readonly TaskId[];
}
MemberType / returnRequiredDefaultDescription
taskIdstring | undefinedNo—Target task id (defaults to the currently selected task).
taskIdsreadonly string[] | undefinedNo—Target task ids for bulk task actions.

Related types: TaskId

type

export type GanttTaskModeLabelValue = 'auto' | 'manual';

type

export type GanttTaskModeOption = 'auto' | 'manual';

type

export type GanttTaskMutationErrorLabelKey =
| 'readOnly'
| 'lockedTask'
| 'taskNotFound'
| 'serviceNotConfigured'
| 'invalidDate'
| 'invalidRange'
| 'invalidOptionalDate'
| 'invalidNonNegativeNumber'
| 'invalidBoolean'
| 'summaryProgressDerived'
| 'invalidDuration'
| 'invalidPriority'
| 'unsupportedEffortMode'
| 'unsupportedTaskType'
| 'nonWorkingDate'
| 'actualDateRange'
| 'firstTaskIndent'
| 'firstSiblingIndent'
| 'rootTaskOutdent'
| 'taskOutdentFailed'
| 'splitRangesArray'
| 'invalidSplitStart'
| 'invalidSplitEnd'
| 'invalidSplitRange'
| 'regularTaskSplitOnly'
| 'splitOverlapRequired'
| 'regularSplitMoveOnly'
| 'splitNotFound'
| 'summaryMove'
| 'actualFinishMove'
| 'resizeTaskOnly'
| 'noWorkingDays'
| 'alreadyMilestone'
| 'summaryMilestone';

type

Flat authored task row shape consumed from grid.source by Gantt.

export type GanttTaskSourceRow = GanttTaskSourceBase & (
| { readonly duration: number | string }
| { readonly endDate: ISODateString | ISODateTimeString }
);

interface

Context supplied when building task-bar tooltip content. The task name is rendered as the tooltip title outside hook output.

export interface GanttTaskTooltipContext extends GanttTaskBarVisualContext {
/** Current Gantt project/config, when available. */
readonly project?: GanttPluginConfig | null;
/** Built-in fields used by the fallback tooltip body. */
readonly defaultFields: readonly GanttTaskTooltipField[];
/** Newline-delimited fallback tooltip body, excluding the task title. */
readonly defaultTooltip: string;
}
MemberType / returnRequiredDefaultDescription
projectGanttPluginConfig | null | undefinedNo—Current Gantt project/config, when available.
defaultFieldsreadonly GanttTaskTooltipField[]Yes—Built-in fields used by the fallback tooltip body.
defaultTooltipstringYes—Newline-delimited fallback tooltip body, excluding the task title.

Related types: GanttPluginConfig, GanttTaskBarVisualContext, GanttTaskTooltipField

type

A built-in tooltip field id, or a field descriptor with a custom label.

export type GanttTaskTooltipField = GanttTaskTooltipFieldId | GanttTaskTooltipFieldConfig;

Related types: GanttTaskTooltipFieldConfig, GanttTaskTooltipFieldId

interface

export interface GanttTaskTooltipFieldConfig {
/** Built-in task field to render in the task-bar tooltip at this position. */
readonly field: GanttTaskTooltipFieldId;
/** Optional label override. Set to an empty string to render only the value. */
readonly label?: string;
}
MemberType / returnRequiredDefaultDescription
fieldGanttTaskTooltipFieldIdYes—Built-in task field to render in the task-bar tooltip at this position.
labelstring | undefinedNo—Optional label override. Set to an empty string to render only the value.

Related types: GanttTaskTooltipFieldId

type

export type GanttTaskTooltipFieldId =
/** Legacy combined line: task name and completion percent. Prefer the always-visible tooltip title. */
| 'summary'
/** Task name. */
| 'name'
/** Completion percentage. */
| 'percentDone'
/** Human-readable task kind, such as Task, Summary, or Milestone. */
| 'taskType'
/** Human-readable task status. */
| 'status'
/** Scheduled task start date, formatted through `gantt.dateFormats.tooltip`. */
| 'startDate'
/** Scheduled task end date, formatted through `gantt.dateFormats.tooltip`. */
| 'endDate'
/** Duration in days with a singular/plural day suffix. */
| 'duration'
/** Scheduling mode label, either Auto Scheduled or Manually Scheduled. */
| 'taskMode'
/** Scheduling warnings joined into one tooltip line. Skipped when empty. */
| 'schedulingWarnings'
/** Formatted task cost. Skipped when empty. */
| 'cost'
/** Comma-separated assignee names. Skipped when empty. */
| 'assignees';

type

Callback that replaces the task-bar tooltip body below the always-visible task title. Return null or undefined to fall back to taskTooltipFields or the default tooltip.

export type GanttTaskTooltipHook = (context: GanttTaskTooltipContext) => string | null | undefined;

Related types: GanttTaskTooltipContext

interface

A highlighted date range rendered as a coloured band on the timeline. Use to mark sprints, milestones windows, or other periods of interest.

export interface GanttTimeRange {
/** Unique identifier. */
readonly id: string;
/** Range start date (inclusive). */
readonly startDate: ISODateString;
/** Range end date (inclusive). */
readonly endDate: ISODateString;
/** Optional label displayed inside the range band. */
readonly label?: string;
/** Optional CSS colour for the range band. */
readonly color?: string;
}
MemberType / returnRequiredDefaultDescription
idstringYes—Unique identifier.
startDateISODateStringYes—Range start date (inclusive).
endDateISODateStringYes—Range end date (inclusive).
labelstring | undefinedNo—Optional label displayed inside the range band.
colorstring | undefinedNo—Optional CSS colour for the range band.

interface

export interface GanttWarningLabelsConfig {
readonly scheduler?: Partial<Record<GanttSchedulerWarningLabelKey, GanttMessageTemplate>>;
}
MemberType / returnRequiredDefaultDescription
schedulerPartial<Record<GanttSchedulerWarningLabelKey, GanttMessageTemplate>> | undefinedNo—

Related types: GanttMessageTemplate, GanttSchedulerWarningLabelKey

function

export function hasCustomGanttEditorDateFormat(project: Pick<GanttPluginConfig, 'dateFormats'> | null | undefined): boolean;
ParameterTypeRequiredDefaultDescription
projectPick<GanttPluginConfig, "dateFormats"> | null | undefinedYes—

Related types: GanttPluginConfig

function

export function parseGanttDateInput(value: unknown, project: Pick<GanttPluginConfig, 'timeZone' | 'dateFormats'> | null | undefined, surface: GanttDateFormatSurface, field?: string): ISODateString | ISODateTimeString | null;
ParameterTypeRequiredDefaultDescription
valueunknownYes—
projectPick<GanttPluginConfig, "timeZone" | "dateFormats"> | null | undefinedYes—
surfaceGanttDateFormatSurfaceYes—
fieldstring | undefinedNo—

Related types: GanttDateFormatSurface, GanttPluginConfig

function

export function resolveGanttErrorLabel<TCategory extends keyof typeof DEFAULT_GANTT_ERROR_LABELS, TKey extends keyof (typeof DEFAULT_GANTT_ERROR_LABELS)[TCategory]>(labels: GanttRuntimeLabelsConfig | null | undefined, category: TCategory, key: TKey, context: GanttMessageContext = {}): string;
ParameterTypeRequiredDefaultDescription
labelsGanttRuntimeLabelsConfig | null | undefinedYes—
categoryTCategoryYes—
keyTKeyYes—
contextGanttMessageContextNo{}

Related types: GanttMessageContext, GanttRuntimeLabelsConfig

function

export function resolveGanttWarningLabel<TCategory extends keyof typeof DEFAULT_GANTT_WARNING_LABELS, TKey extends keyof (typeof DEFAULT_GANTT_WARNING_LABELS)[TCategory]>(labels: GanttRuntimeLabelsConfig | null | undefined, category: TCategory, key: TKey, context: GanttMessageContext = {}): string;
ParameterTypeRequiredDefaultDescription
labelsGanttRuntimeLabelsConfig | null | undefinedYes—
categoryTCategoryYes—
keyTKeyYes—
contextGanttMessageContextNo{}

Related types: GanttMessageContext, GanttRuntimeLabelsConfig

function

export function shouldReplayRawGanttTaskPatch(eventTypes: readonly string[], model: unknown, field: string): field is keyof TaskUpdate;
ParameterTypeRequiredDefaultDescription
eventTypesreadonly string[]Yes—
modelunknownYes—
fieldstringYes—

Related types: TaskUpdate

interface

Complete grid configuration bundle containing projected row data, the timeline scale config, and scheduling results.

export interface TaskGridConfig {
/** The projected grid rows (one per visible task). */
readonly source: readonly DataType[];
/** Timeline scale configuration for the gantt column. */
readonly scale: TaskGridScaleConfig;
/** Scheduling engine output. */
readonly scheduling: SchedulingResult;
}
MemberType / returnRequiredDefaultDescription
sourcereadonly DataType[]Yes—The projected grid rows (one per visible task).
scaleTaskGridScaleConfigYes—Timeline scale configuration for the gantt column.
schedulingSchedulingResultYes—Scheduling engine output.

Related types: SchedulingResult, TaskGridScaleConfig

interface

Pre-computed timeline scale and view-model for the gantt grid.

export interface TaskGridScaleConfig {
/** The timeline scale instance used for coordinate calculations. */
readonly scale: TimelineScale;
/** The derived view-model consumed by the gantt column type renderer. */
readonly timeline: GanttTimelineViewModel;
/** ISO date string of the timeline start boundary. */
readonly startDate: ISODateString;
/** ISO date string of the timeline end boundary. */
readonly endDate: ISODateString;
}
MemberType / returnRequiredDefaultDescription
scaleTimelineScaleYes—The timeline scale instance used for coordinate calculations.
timelineGanttTimelineViewModelYes—The derived view-model consumed by the gantt column type renderer.
startDateISODateStringYes—ISO date string of the timeline start boundary.
endDateISODateStringYes—ISO date string of the timeline end boundary.

Related types: TimelineScale

interface

export interface TaskGridScaleOptions {
/** First day of week for weekly timeline cells. `0` is Sunday and `1` is Monday. Defaults to Sunday. */
readonly weekStartsOn?: 0 | 1;
/** Optional inclusive bounds overriding the task-derived timeline range. */
readonly timelineRange?: GanttTimelineRange;
}
MemberType / returnRequiredDefaultDescription
weekStartsOn0 | 1 | undefinedNo—First day of week for weekly timeline cells. 0 is Sunday and 1 is Monday. Defaults to Sunday.
timelineRangeGanttTimelineRange | undefinedNo—Optional inclusive bounds overriding the task-derived timeline range.

Related types: GanttTimelineRange