Skip to content

Editors, Toolbar, Export, And Recipes

This page documents 206 public symbols exported by @revolist/revogrid-enterprise.

interface

export interface ApprovalGateValidatorOptions<TContext extends GanttValidationContext> {
readonly actions?: readonly GanttBeforeTaskChangeAction[];
readonly requiresApproval?: (
detail: GanttBeforeTaskChangeDetail,
context: TContext,
) => boolean;
readonly isApprovalValid?: (
approval: ApprovalRecord,
detail: GanttBeforeTaskChangeDetail,
context: TContext,
) => boolean;
readonly message?: string;
}
MemberType / returnRequiredDefaultDescription
actionsreadonly GanttBeforeTaskChangeAction[] | undefinedNo
requiresApproval((detail: GanttBeforeTaskChangeDetail, context: TContext) => boolean) | undefinedNo
isApprovalValid((approval: ApprovalRecord, detail: GanttBeforeTaskChangeDetail, context: TContext) => boolean) | undefinedNo
messagestring | undefinedNo

Related types: ApprovalRecord, GanttBeforeTaskChangeAction, GanttBeforeTaskChangeDetail, GanttValidationContext

interface

export interface ApprovalRecord {
readonly approved: boolean;
readonly approvedBy?: string;
readonly expiresAt?: string;
}
MemberType / returnRequiredDefaultDescription
approvedbooleanYes
approvedBystring | undefinedNo
expiresAtstring | undefinedNo

function

export function areGanttDependencyDropdownValuesEqual(left: readonly GanttDependencyDropdownValue[], right: readonly GanttDependencyDropdownValue[]): boolean;
ParameterTypeRequiredDefaultDescription
leftreadonly GanttDependencyDropdownValue[]Yes
rightreadonly GanttDependencyDropdownValue[]Yes

Related types: GanttDependencyDropdownValue

interface

export interface AssignResourceMenuItemOptions extends GanttContextMenuBaseItemOptions {
readonly onAssignResource: (context: GanttContextMenuExtensionContext) => void;
}
MemberType / returnRequiredDefaultDescription
onAssignResource(context: GanttContextMenuExtensionContext) => voidYes

Related types: GanttContextMenuBaseItemOptions, GanttContextMenuExtensionContext

function

SQL shape for storing one JSONB project snapshot per project id.

export function buildCreateProjectSnapshotTableSql(options: ProjectSnapshotPostgresOptions = {}): PostgresStatement;
ParameterTypeRequiredDefaultDescription
optionsProjectSnapshotPostgresOptionsNo{}

Related types: PostgresStatement, ProjectSnapshotPostgresOptions

function

export function buildLoadProjectSnapshotSql(projectId: string, options: ProjectSnapshotPostgresOptions = {}): PostgresStatement;
ParameterTypeRequiredDefaultDescription
projectIdstringYes
optionsProjectSnapshotPostgresOptionsNo{}

Related types: PostgresStatement, ProjectSnapshotPostgresOptions

function

export function buildSaveProjectSnapshotSql(project: ProjectSnapshot, options: ProjectSnapshotPostgresOptions = {}): PostgresStatement;
ParameterTypeRequiredDefaultDescription
projectProjectSnapshotYes
optionsProjectSnapshotPostgresOptionsNo{}

Related types: PostgresStatement, ProjectSnapshot, ProjectSnapshotPostgresOptions

function

export function captureGanttBaseline(grid: HTMLRevoGridElement, options?: CaptureBaselineOptions): Promise<BaselineSnapshot | null>;
ParameterTypeRequiredDefaultDescription
gridHTMLRevoGridElementYes
optionsCaptureBaselineOptions | undefinedNo

Related types: BaselineSnapshot

function

export function createApprovalGateValidator<TContext extends GanttValidationContext>(options: ApprovalGateValidatorOptions<TContext> = {}): GanttBeforeTaskChangeValidator<TContext>;
ParameterTypeRequiredDefaultDescription
optionsApprovalGateValidatorOptions<TContext>No{}

Related types: ApprovalGateValidatorOptions, GanttBeforeTaskChangeValidator, GanttValidationContext

function

export function createAssignResourceMenuItem(options: AssignResourceMenuItemOptions): ContextMenuItem;
ParameterTypeRequiredDefaultDescription
optionsAssignResourceMenuItemOptionsYes

Related types: AssignResourceMenuItemOptions

function

Recipe: use the schema to render any UI form, then normalize submitted values into the task mutation patch expected by Gantt task services.

export function createCustomTaskEditorFormRecipe(options: CustomTaskEditorRecipeOptions): CustomTaskEditorRecipe;
ParameterTypeRequiredDefaultDescription
optionsCustomTaskEditorRecipeOptionsYes

Related types: CustomTaskEditorRecipe, CustomTaskEditorRecipeOptions

function

Recipe: compose custom before-task-change validation from small validators. Add this handler to gantt-before-task-change and render onReject however the app reports validation failures.

export function createCustomValidationRecipe(options: CustomValidationRecipeOptions): CustomValidationRecipe;
ParameterTypeRequiredDefaultDescription
optionsCustomValidationRecipeOptionsYes

Related types: CustomValidationRecipe, CustomValidationRecipeOptions

function

export function createDeleteTaskMenuItem(options: DeleteTaskMenuItemOptions): ContextMenuItem;
ParameterTypeRequiredDefaultDescription
optionsDeleteTaskMenuItemOptionsYes

Related types: DeleteTaskMenuItemOptions

function

Recipe: combine scheduler diagnostics and projected row warnings into one compact dependency-health object for side panels, badges, or command palettes.

export function createDependencyValidationSummaryRecipe(input: DependencyValidationSummaryInput): DependencyValidationSummaryRecipe;
ParameterTypeRequiredDefaultDescription
inputDependencyValidationSummaryInputYes

Related types: DependencyValidationSummaryRecipe

function

export function createDuplicateTaskMenuItem(options: DuplicateTaskMenuItemOptions = {}): ContextMenuItem;
ParameterTypeRequiredDefaultDescription
optionsDuplicateTaskMenuItemOptionsNo{}

Related types: DuplicateTaskMenuItemOptions

function

export function createExportMenuItem(options: ExportMenuItemOptions = {}): ContextMenuItem;
ParameterTypeRequiredDefaultDescription
optionsExportMenuItemOptionsNo{}

Related types: ExportMenuItemOptions

function

export function createForbiddenDateRangeValidator<TContext extends GanttValidationContext>(options: ForbiddenDateRangeValidatorOptions): GanttBeforeTaskChangeValidator<TContext>;
ParameterTypeRequiredDefaultDescription
optionsForbiddenDateRangeValidatorOptionsYes

Related types: ForbiddenDateRangeValidatorOptions, GanttBeforeTaskChangeValidator, GanttValidationContext

function

Framework-neutral column recipe for switching between Gantt-aware presets and customer-defined columns before assigning the result to grid.columns.

export function createGanttColumnPresetRecipe(options: GanttColumnPresetRecipeOptions): GanttColumnPresetRecipe;
ParameterTypeRequiredDefaultDescription
optionsGanttColumnPresetRecipeOptionsYes

Related types: GanttColumnPresetRecipe, GanttColumnPresetRecipeOptions

function

export function createGanttContextMenuExtensionItems(options: {
readonly duplicate?: DuplicateTaskMenuItemOptions | false;
readonly delete?: DeleteTaskMenuItemOptions | false;
readonly assignResource?: AssignResourceMenuItemOptions | false;
readonly export?: ExportMenuItemOptions | false;
}): ContextMenuItem[];
ParameterTypeRequiredDefaultDescription
options{ readonly duplicate?: DuplicateTaskMenuItemOptions | false; readonly delete?: DeleteTaskMenuItemOptions | false; readonly assignResource?: AssignResourceMenuItemOptions | false; readonly export?: ExportMenuItemOptions | false; }Yes

Related types: AssignResourceMenuItemOptions, DeleteTaskMenuItemOptions, DuplicateTaskMenuItemOptions, ExportMenuItemOptions

function

Framework-neutral context-menu recipe for composing the Gantt quick actions with RevoGrid Pro’s context-menu plugin.

export function createGanttContextMenuQuickWinRecipe(options: GanttContextMenuQuickWinRecipeOptions): readonly ContextMenuItem[];
ParameterTypeRequiredDefaultDescription
optionsGanttContextMenuQuickWinRecipeOptionsYes

Related types: GanttContextMenuQuickWinRecipeOptions

function

Framework-neutral Excel recipe for customers that export the projected Gantt task table instead of serializing renderer-only timeline fields.

export function createGanttExcelExportRecipe(options: GanttExcelExportRecipeOptions): GanttExcelExportRecipe;
ParameterTypeRequiredDefaultDescription
optionsGanttExcelExportRecipeOptionsYes

Related types: GanttExcelExportRecipe, GanttExcelExportRecipeOptions

function

Framework-neutral reporting recipe for toolbars that offer both stakeholder PDF reports and spreadsheet handoff from the same Gantt grid.

export function createGanttPdfExcelReportingRecipe(options: GanttPdfExcelReportingRecipeOptions): GanttPdfExcelReportingRecipe;
ParameterTypeRequiredDefaultDescription
optionsGanttPdfExcelReportingRecipeOptionsYes

Related types: GanttPdfExcelReportingRecipe, GanttPdfExcelReportingRecipeOptions

function

export function createGanttPrintOptions(options: GanttPrintStyleOptions = {}): NormalizedGanttPrintOptions;
ParameterTypeRequiredDefaultDescription
optionsGanttPrintStyleOptionsNo{}

Related types: GanttPrintStyleOptions

function

export function createGanttPrintStyles(options: GanttPrintStyleOptions = {}): string;
ParameterTypeRequiredDefaultDescription
optionsGanttPrintStyleOptionsNo{}

Related types: GanttPrintStyleOptions

function

Framework-neutral visual-indicator recipe for read-only projects and locked tasks. The returned class/title values can be bound to a custom cell renderer or status column without changing the projected task row.

export function createGanttTaskStatusIndicatorRecipe(options: GanttTaskStatusIndicatorRecipeOptions): readonly GanttTaskStatusIndicatorRecipeRow[];
ParameterTypeRequiredDefaultDescription
optionsGanttTaskStatusIndicatorRecipeOptionsYes

Related types: GanttTaskStatusIndicatorRecipeOptions, GanttTaskStatusIndicatorRecipeRow

function

Framework-neutral command descriptors for common Gantt toolbar additions.

Render the returned commands in any toolbar UI and call run() from the button handler. Creating the descriptors does not dispatch events, scroll, or mutate the grid.

export function createGanttToolbarQuickWinActions(grid: HTMLRevoGridElement, options: GanttToolbarQuickWinOptions = {}): GanttToolbarQuickWinActions;
ParameterTypeRequiredDefaultDescription
gridHTMLRevoGridElementYes
optionsGanttToolbarQuickWinOptionsNo{}

Related types: GanttToolbarQuickWinActions, GanttToolbarQuickWinOptions

function

export function createGraphqlProjectPersistenceRecipe(options: ProjectSnapshotGraphqlAdapterOptions, state: ProjectSnapshotState): ProjectSnapshotPersistenceRecipe;
ParameterTypeRequiredDefaultDescription
optionsProjectSnapshotGraphqlAdapterOptionsYes
stateProjectSnapshotStateYes

Related types: ProjectSnapshotGraphqlAdapterOptions, ProjectSnapshotPersistenceRecipe, ProjectSnapshotState

function

export function createJsonSnapshotRecipe(options: ProjectSnapshotJsonRecipeOptions = {}): ProjectSnapshotJsonRecipe;
ParameterTypeRequiredDefaultDescription
optionsProjectSnapshotJsonRecipeOptionsNo{}

Related types: ProjectSnapshotJsonRecipe, ProjectSnapshotJsonRecipeOptions

function

export function createLockedPhaseValidator<TContext>(options: LockedPhaseValidatorOptions<TContext>): GanttBeforeTaskChangeValidator<TContext>;
ParameterTypeRequiredDefaultDescription
optionsLockedPhaseValidatorOptions<TContext>Yes

Related types: GanttBeforeTaskChangeValidator, LockedPhaseValidatorOptions

function

export function createPostgresSqlPersistenceRecipe(executor: ProjectSnapshotSqlExecutor, state: ProjectSnapshotState, options: ProjectSnapshotPostgresOptions = {}): ProjectSnapshotPostgresRecipe;
ParameterTypeRequiredDefaultDescription
executorProjectSnapshotSqlExecutorYes
stateProjectSnapshotStateYes
optionsProjectSnapshotPostgresOptionsNo{}

Related types: ProjectSnapshotPostgresOptions, ProjectSnapshotPostgresRecipe, ProjectSnapshotSqlExecutor, ProjectSnapshotState

function

export function createPrintableGanttMetadata(options: GanttPrintableMetadataOptions = {}): GanttPrintableMetadata;
ParameterTypeRequiredDefaultDescription
optionsGanttPrintableMetadataOptionsNo{}

Related types: GanttPrintableMetadata, GanttPrintableMetadataOptions

function

export function createPrintPdfExportRecipe(options: GanttPrintPdfRecipeOptions): GanttPrintPdfRecipe;
ParameterTypeRequiredDefaultDescription
optionsGanttPrintPdfRecipeOptionsYes

Related types: GanttPrintPdfRecipe, GanttPrintPdfRecipeOptions

function

export function createResourceLoadSummaryExample(resourceId: string, resourceName: string, planning: ResourcePlanningRowData): ResourceOverallocationLoadSummary;
ParameterTypeRequiredDefaultDescription
resourceIdstringYes
resourceNamestringYes
planningResourcePlanningRowDataYes

Related types: ResourcePlanningRowData

function

Recipe: feed either projected resource rows, raw load summaries, or scheduler conflicts into a summary object that a resource dashboard can render.

export function createResourceOverallocationSummaryRecipe(input: ResourceOverallocationSummaryInput): ResourceOverallocationSummaryRecipe;
ParameterTypeRequiredDefaultDescription
inputResourceOverallocationSummaryInputYes

Related types: ResourceOverallocationSummaryRecipe

function

export function createRestProjectPersistenceRecipe(options: ProjectSnapshotRestAdapterOptions, state: ProjectSnapshotState): ProjectSnapshotPersistenceRecipe;
ParameterTypeRequiredDefaultDescription
optionsProjectSnapshotRestAdapterOptionsYes
stateProjectSnapshotStateYes

Related types: ProjectSnapshotPersistenceRecipe, ProjectSnapshotRestAdapterOptions, ProjectSnapshotState

function

Recipe: attach these handlers to the three cancelable Gantt before-change events. The app owns role lookup; the helper only turns roles into deterministic decisions.

export function createRoleBasedEditabilityRecipe(options: GanttRoleBasedEditabilityRecipeOptions): GanttRoleBasedEditabilityRecipe;
ParameterTypeRequiredDefaultDescription
optionsGanttRoleBasedEditabilityRecipeOptionsYes

Related types: GanttRoleBasedEditabilityRecipe, GanttRoleBasedEditabilityRecipeOptions

function

export function createRoleGuardValidator<TContext extends GanttValidationContext>(options: RoleGuardValidatorOptions<TContext>): GanttBeforeTaskChangeValidator<TContext>;
ParameterTypeRequiredDefaultDescription
optionsRoleGuardValidatorOptions<TContext>Yes

Related types: GanttBeforeTaskChangeValidator, GanttValidationContext, RoleGuardValidatorOptions

function

export function createSchedulerDiagnosticsExample(conflicts: readonly SchedulerConflict[] = [], issues: readonly SchedulerIssue[] = []): DependencyValidationSummaryInput;
ParameterTypeRequiredDefaultDescription
conflictsreadonly SchedulerConflict[]No[]
issuesreadonly SchedulerIssue[]No[]

Related types: SchedulerConflict, SchedulerIssue

function

export function createSupabasePostgresPersistenceRecipe(client: SupabaseLikeClient<ProjectSnapshotPostgresRow>, state: ProjectSnapshotState, options: ProjectSnapshotPostgresOptions = {}): ProjectSnapshotStorageRecipe;
ParameterTypeRequiredDefaultDescription
clientSupabaseLikeClient<ProjectSnapshotPostgresRow>Yes
stateProjectSnapshotStateYes
optionsProjectSnapshotPostgresOptionsNo{}

Related types: ProjectSnapshotPostgresOptions, ProjectSnapshotPostgresRow, ProjectSnapshotState, ProjectSnapshotStorageRecipe, SupabaseLikeClient

function

Recipe: resolve the presentation-free popover model at hover/focus time and let the framework render sections, fields, warnings, and resource assignments.

export function createTaskDetailPopoverRecipe(options: TaskDetailPopoverRecipeOptions): TaskDetailPopoverRecipe;
ParameterTypeRequiredDefaultDescription
optionsTaskDetailPopoverRecipeOptionsYes

Related types: TaskDetailPopoverRecipe, TaskDetailPopoverRecipeOptions

function

export function createTaskEditorDialogLocaleText(localeText: GanttTaskEditorDialogLocaleTextOptions | undefined): GanttTaskEditorDialogLocaleText;
ParameterTypeRequiredDefaultDescription
localeTextGanttTaskEditorDialogLocaleTextOptions | undefinedYes

Related types: GanttTaskEditorDialogLocaleText, GanttTaskEditorDialogLocaleTextOptions

function

export function createTaskNameExcelExportMenuItem(workbookName: string): ContextMenuItem;
ParameterTypeRequiredDefaultDescription
workbookNamestringYes

interface

export interface CustomTaskEditorRecipe {
readonly fields: readonly TaskEditorFieldSchema[];
readonly initialValues: TaskEditorFormValues;
readonly submit: (values: TaskEditorFormValues, options?: NormalizeTaskEditorSubmitOptions) => TaskEditorSubmitResult;
}
MemberType / returnRequiredDefaultDescription
fieldsreadonly TaskEditorFieldSchema<TaskEditorFieldId>[]Yes
initialValuesPartial<Record<TaskEditorFieldId, unknown>>Yes
submit(values: TaskEditorFormValues, options?: NormalizeTaskEditorSubmitOptions) => TaskEditorSubmitResultYes

interface

export interface CustomTaskEditorRecipeOptions {
readonly task: TaskEntity;
readonly resources?: readonly ResourceEntity[];
readonly assignments?: readonly AssignmentEntity[];
readonly fieldIds?: readonly TaskEditorFieldId[];
readonly includeUnchanged?: boolean;
readonly onSubmitPatch?: (patch: TaskUpdate) => void;
}
MemberType / returnRequiredDefaultDescription
taskTaskEntityYes
resourcesreadonly ResourceEntity[] | undefinedNo
assignmentsreadonly AssignmentEntity[] | undefinedNo
fieldIdsreadonly TaskEditorFieldId[] | undefinedNo
includeUnchangedboolean | undefinedNo
onSubmitPatch((patch: TaskUpdate) => void) | undefinedNo

Related types: AssignmentEntity, ResourceEntity, TaskEntity, TaskUpdate

interface

export interface CustomValidationRecipe {
readonly validators: readonly GanttBeforeTaskChangeValidator<GanttValidationContext>[];
readonly handler: (event: GanttExampleCancelableEvent<GanttBeforeTaskChangeDetail>) => void;
readonly validate: (detail: GanttBeforeTaskChangeDetail) => GanttValidationDecision;
}
MemberType / returnRequiredDefaultDescription
validatorsreadonly GanttBeforeTaskChangeValidator<GanttValidationContext>[]Yes
handler(event: GanttExampleCancelableEvent<GanttBeforeTaskChangeDetail>) => voidYes
validate(detail: GanttBeforeTaskChangeDetail) => GanttValidationDecisionYes

Related types: GanttBeforeTaskChangeDetail, GanttBeforeTaskChangeValidator, GanttExampleCancelableEvent, GanttValidationContext, GanttValidationDecision

interface

export interface CustomValidationRecipeOptions {
readonly context: GanttValidationContext | (() => GanttValidationContext);
readonly rolePolicy?: GanttRoleEditabilityPolicy;
readonly freezeWindows?: readonly GanttDateRange[];
readonly lockedPhaseIds?: readonly string[];
readonly phaseByTaskId?: Readonly<Record<TaskId, string>>;
readonly validators?: readonly GanttBeforeTaskChangeValidator<GanttValidationContext>[];
readonly onReject?: (rejection: GanttValidationReject) => void;
}
MemberType / returnRequiredDefaultDescription
contextGanttValidationContext | (() => GanttValidationContext)Yes
rolePolicyGanttRoleEditabilityPolicy | undefinedNo
freezeWindowsreadonly GanttDateRange[] | undefinedNo
lockedPhaseIdsreadonly string[] | undefinedNo
phaseByTaskIdReadonly<Record<string, string>> | undefinedNo
validatorsreadonly GanttBeforeTaskChangeValidator<GanttValidationContext>[] | undefinedNo
onReject((rejection: GanttValidationReject) => void) | undefinedNo

Related types: GanttBeforeTaskChangeValidator, GanttDateRange, GanttValidationContext, GanttValidationReject, TaskId

constant

export const DEFAULT_GANTT_DEPENDENCY_TYPES: readonly ["finish-to-start", "start-to-start", "finish-to-finish", "start-to-finish"];

constant

export const DEFAULT_TASK_EDITOR_DIALOG_LOCALE_TEXT: GanttTaskEditorDialogLocaleText;

Related types: GanttTaskEditorDialogLocaleText

constant

Mounts the Gantt editing toolbar into el and wires it to the given revo-grid element. Call this once after the grid’s gantt property has been set so the toolbar can read the initial visual config.

controls hides built-in controls. Omitted flags are visible by default, except baseline, which is opt-in.

import { defineGanttToolbar } from '@revolist/revogrid-enterprise';
const toolbarEl = document.querySelector('#gantt-toolbar');
const grid = document.querySelector('revo-grid');
defineGanttToolbar(toolbarEl, {
grid,
columns: [
{ prop: 'wbs', label: 'WBS', visible: true },
{ prop: 'name', label: 'Name', visible: true },
{ prop: 'startDate', label: 'Start Date', visible: true },
{ prop: 'duration', label: 'Duration', visible: true },
{ prop: 'status', label: 'Status', visible: true },
{ prop: 'endDate', label: 'End Date', visible: false },
],
visuals: {
showDependencies: true,
showBaseline: true,
showCriticalPath: true,
},
controls: {
search: true,
history: true,
undo: true,
redo: true,
tree: true,
expandAll: true,
collapseAll: true,
zoom: true,
zoomIn: true,
zoomOut: true,
tasks: true,
addTask: true,
indent: true,
outdent: true,
export: true,
exportExcel: true,
columns: true,
dependencies: true,
baseline: true,
criticalPath: true,
},
});
export const defineGanttToolbar: (el: HTMLElement, options: GanttToolbarOptions) => void;

Related types: GanttToolbarOptions

interface

export interface DeleteTaskMenuItemOptions extends GanttContextMenuBaseItemOptions {
readonly onDeleteTask: (context: GanttContextMenuExtensionContext) => void;
readonly confirm?: (context: GanttContextMenuExtensionContext) => boolean;
}
MemberType / returnRequiredDefaultDescription
onDeleteTask(context: GanttContextMenuExtensionContext) => voidYes
confirm((context: GanttContextMenuExtensionContext) => boolean) | undefinedNo

Related types: GanttContextMenuBaseItemOptions, GanttContextMenuExtensionContext

interface

export interface DependencyEndpointPair {
readonly predecessor: GanttDependencyEndpoint;
readonly successor: GanttDependencyEndpoint;
}
MemberType / returnRequiredDefaultDescription
predecessorGanttDependencyEndpointYes
successorGanttDependencyEndpointYes

Related types: GanttDependencyEndpoint

function

export function dependencyEndpointsToType(predecessor: GanttDependencyEndpoint, successor: GanttDependencyEndpoint): DependencyType;
ParameterTypeRequiredDefaultDescription
predecessorGanttDependencyEndpointYes
successorGanttDependencyEndpointYes

Related types: DependencyType, GanttDependencyEndpoint

function

export function dependencyTypeToEndpoints(type: DependencyType): DependencyEndpointPair;
ParameterTypeRequiredDefaultDescription
typeDependencyTypeYes

Related types: DependencyEndpointPair, DependencyType

interface

export interface DependencyValidationSummaryRecipe {
readonly summary: DependencyValidationSummary;
readonly hasBlockingConflicts: boolean;
readonly badgeLabel: string;
readonly focusTaskIds: readonly TaskId[];
}
MemberType / returnRequiredDefaultDescription
summaryDependencyValidationSummaryYes
hasBlockingConflictsbooleanYes
badgeLabelstringYes
focusTaskIdsreadonly string[]Yes

Related types: TaskId

interface

export interface DuplicateTaskMenuItemOptions extends GanttContextMenuBaseItemOptions {
readonly copyName?: (task: Partial<TaskEntity>, context: GanttContextMenuExtensionContext) => string;
readonly createTaskOptions?: (
context: GanttContextMenuExtensionContext,
) => GanttCreateTaskOptions | null | undefined;
}
MemberType / returnRequiredDefaultDescription
copyName((task: Partial<TaskEntity>, context: GanttContextMenuExtensionContext) => string) | undefinedNo
createTaskOptions((context: GanttContextMenuExtensionContext) => GanttCreateTaskOptions | null | undefined) | undefinedNo

Related types: GanttContextMenuBaseItemOptions, GanttContextMenuExtensionContext, GanttCreateTaskOptions, TaskEntity

function

export function exportGanttCsv(grid: HTMLRevoGridElement, options: GanttCsvExportOptions = {}): Promise<boolean>;
ParameterTypeRequiredDefaultDescription
gridHTMLRevoGridElementYes
optionsGanttCsvExportOptionsNo{}

Related types: GanttCsvExportOptions

function

export function exportGanttExcel(grid: HTMLRevoGridElement, options: GanttExcelExportOptions = {}): CustomEvent<GanttExcelExportOptions>;
ParameterTypeRequiredDefaultDescription
gridHTMLRevoGridElementYes
optionsExportExcelEventNo{}

Related types: GanttExcelExportOptions

interface

export interface ExportMenuItemOptions extends GanttContextMenuBaseItemOptions {
readonly exportOptions?: ExportExcelEvent | ((context: GanttContextMenuExtensionContext) => ExportExcelEvent | undefined);
}
MemberType / returnRequiredDefaultDescription
exportOptionsExportExcelEvent | ((context: GanttContextMenuExtensionContext) => ExportExcelEvent | undefined) | undefinedNo

Related types: GanttContextMenuBaseItemOptions, GanttContextMenuExtensionContext

function

export function fitGanttToProject(grid: HTMLRevoGridElement, options: GanttProjectFitOptions = {}): Promise<boolean>;
ParameterTypeRequiredDefaultDescription
gridHTMLRevoGridElementYes
optionsGanttProjectFitOptionsNo{}

Related types: GanttProjectFitOptions

interface

export interface ForbiddenDateRangeValidatorOptions {
readonly ranges: readonly GanttDateRange[];
readonly actions?: readonly GanttBeforeTaskChangeAction[];
readonly message?: (range: GanttDateRange) => string;
}
MemberType / returnRequiredDefaultDescription
rangesreadonly GanttDateRange[]Yes
actionsreadonly GanttBeforeTaskChangeAction[] | undefinedNo
message((range: GanttDateRange) => string) | undefinedNo

Related types: GanttBeforeTaskChangeAction, GanttDateRange

function

export function formatGanttPrintRange(range: GanttPrintDateRange | undefined): string | undefined;
ParameterTypeRequiredDefaultDescription
rangeGanttPrintDateRange | undefinedYes

Related types: GanttPrintDateRange

constant

export const GANTT_PERSISTENCE_QUICK_WIN_EXAMPLES: readonly GanttPersistenceRecipeMetadata[];

Related types: GanttPersistenceRecipeMetadata

constant

export const GANTT_TOOLBAR_SELECT_ALL_COLUMNS: "__select_all__";

type

export type GanttApprovalRegistry =
| Readonly<Record<TaskId, ApprovalRecord | undefined>>
| ((detail: GanttBeforeTaskChangeDetail) => ApprovalRecord | null | undefined);

Related types: ApprovalRecord, GanttBeforeTaskChangeDetail, TaskId

interface

export interface GanttBaselineCaptureRuntime {
captureBaseline(options?: CaptureBaselineOptions): BaselineSnapshot | null;
}
MemberType / returnRequiredDefaultDescription
captureBaseline(options?: CaptureBaselineOptions)BaselineSnapshot | nullYes

Related types: BaselineSnapshot

interface

export interface GanttColumnPresetRecipe {
readonly preset: GanttColumnPresetName;
readonly presetProps: readonly GanttColumnPresetProp[];
readonly columns: readonly ColumnRegular[];
}
MemberType / returnRequiredDefaultDescription
presetGanttColumnPresetNameYes
presetPropsreadonly GanttColumnPresetProp[]Yes
columnsreadonly ColumnRegular<ColumnProp, DataType<any, ColumnProp>>[]Yes

Related types: GanttColumnPresetName, GanttColumnPresetProp

interface

export interface GanttColumnPresetRecipeOptions {
readonly preset: GanttColumnPresetName;
readonly extraColumns?: readonly ColumnRegular[];
}
MemberType / returnRequiredDefaultDescription
presetGanttColumnPresetNameYes
extraColumnsreadonly ColumnRegular<ColumnProp, DataType<any, ColumnProp>>[] | undefinedNo

Related types: GanttColumnPresetName

interface

export interface GanttContextMenuBaseItemOptions {
readonly name?: ContextMenuItem['name'];
readonly class?: string;
readonly rowClass?: ContextMenuItem['rowClass'];
readonly icon?: string;
readonly hidden?: ContextMenuItem['hidden'];
readonly keepOpen?: boolean;
}
MemberType / returnRequiredDefaultDescription
namestring | ((focused?: Cell | null, range?: RangeArea | null) => string) | undefinedNo
classstring | undefinedNo
rowClassstring | ((item: ContextMenuItem, focused?: Cell | null, range?: RangeArea | null) => string) | undefinedNo
iconstring | undefinedNo
hiddenboolean | ((item: ContextMenuItem, focused?: Cell | null, range?: RangeArea | null) => boolean) | undefinedNo
keepOpenboolean | undefinedNo

interface

export interface GanttContextMenuExtensionContext {
readonly event: MouseEvent;
readonly focused?: Cell | null;
readonly range?: RangeArea | null;
readonly close?: () => void;
readonly revogrid: HTMLRevoGridElement;
readonly providers: PluginProviders;
readonly taskId: TaskId | null;
readonly task: Partial<TaskEntity> | null;
}
MemberType / returnRequiredDefaultDescription
eventMouseEventYes
focusedCell | null | undefinedNo
rangeRangeArea | null | undefinedNo
close(() => void) | undefinedNo
revogridHTMLRevoGridElementYes
providersPluginProvidersYes
taskIdstring | nullYes
taskPartial<TaskEntity> | nullYes

Related types: TaskEntity, TaskId

interface

export interface GanttContextMenuQuickWinRecipeOptions {
readonly duplicate?: DuplicateTaskMenuItemOptions | false;
readonly delete?: DeleteTaskMenuItemOptions | false;
readonly assignResource?: AssignResourceMenuItemOptions | false;
readonly export?: ExportMenuItemOptions | false;
}
MemberType / returnRequiredDefaultDescription
duplicatefalse | DuplicateTaskMenuItemOptions | undefinedNo
deletefalse | DeleteTaskMenuItemOptions | undefinedNo
assignResourcefalse | AssignResourceMenuItemOptions | undefinedNo
exportfalse | ExportMenuItemOptions | undefinedNo

Related types: AssignResourceMenuItemOptions, DeleteTaskMenuItemOptions, DuplicateTaskMenuItemOptions, ExportMenuItemOptions

interface

export interface GanttCsvExportOptions {
filename?: string;
bom?: boolean;
columnDelimiter?: string;
rowDelimiter?: string;
mime?: string;
encoding?: string;
}
MemberType / returnRequiredDefaultDescription
filenamestring | undefinedNo
bomboolean | undefinedNo
columnDelimiterstring | undefinedNo
rowDelimiterstring | undefinedNo
mimestring | undefinedNo
encodingstring | undefinedNo

interface

export interface GanttDateRange {
readonly startDate: ISODateString;
readonly endDate: ISODateString;
readonly label?: string;
}
MemberType / returnRequiredDefaultDescription
startDateISODateStringYes
endDateISODateStringYes
labelstring | undefinedNo

interface

export interface GanttDependencyDropdownConfig {
readonly tasks: readonly GanttDependencyDropdownTaskOption[];
readonly getTasks?: () => readonly GanttDependencyDropdownTaskOption[];
readonly allowedTypes?: readonly DependencyType[];
}
MemberType / returnRequiredDefaultDescription
tasksreadonly GanttDependencyDropdownTaskOption[]Yes
getTasks(() => readonly GanttDependencyDropdownTaskOption[]) | undefinedNo
allowedTypesreadonly DependencyType[] | undefinedNo

Related types: DependencyType, GanttDependencyDropdownTaskOption

function

export function GanttDependencyDropdownControl({
getOptions,
currentTaskId,
value,
rawValue,
allowedTypes,
displayValue,
autoOpen = false,
theme,
onChange,
onClose,
}: GanttDependencyDropdownControlProps): h.JSX.Element;
ParameterTypeRequiredDefaultDescription
{ getOptions, currentTaskId, value, rawValue, allowedTypes, displayValue, autoOpen = false, theme, onChange, onClose, }GanttDependencyDropdownControlPropsYes

Related types: GanttDependencyDropdownControlProps

interface

export interface GanttDependencyDropdownControlProps {
readonly getOptions: () => readonly GanttDependencyDropdownTaskOption[];
readonly currentTaskId: TaskId;
readonly value: readonly GanttDependencyDropdownValue[];
readonly rawValue?: unknown;
readonly allowedTypes: readonly DependencyType[];
readonly displayValue: string;
readonly autoOpen?: boolean;
readonly theme?: string;
readonly onChange: (value: readonly GanttDependencyDropdownValue[]) => void;
readonly onClose?: (focusNext?: boolean) => void;
}
MemberType / returnRequiredDefaultDescription
getOptions() => readonly GanttDependencyDropdownTaskOption[]Yes
currentTaskIdstringYes
valuereadonly GanttDependencyDropdownValue[]Yes
rawValueunknownNo
allowedTypesreadonly DependencyType[]Yes
displayValuestringYes
autoOpenboolean | undefinedNo
themestring | undefinedNo
onChange(value: readonly GanttDependencyDropdownValue[]) => voidYes
onClose((focusNext?: boolean) => void) | undefinedNo

Related types: DependencyType, GanttDependencyDropdownTaskOption, GanttDependencyDropdownValue, TaskId

interface

export interface GanttDependencyDropdownTaskOption {
readonly taskId: TaskId;
readonly wbs: string;
readonly name: string;
readonly label: string;
}
MemberType / returnRequiredDefaultDescription
taskIdstringYes
wbsstringYes
namestringYes
labelstringYes

Related types: TaskId

interface

export interface GanttDependencyDropdownValue {
readonly taskId: TaskId;
readonly type: DependencyType;
readonly lagDays?: number;
}
MemberType / returnRequiredDefaultDescription
taskIdstringYes
typeDependencyTypeYes
lagDaysnumber | undefinedNo

Related types: DependencyType, TaskId

type

export type GanttDependencyEndpoint = 'start' | 'finish';

type

export type GanttExcelExportOptions = ExportExcelEvent;

interface

export interface GanttExcelExportRecipe {
readonly rows: readonly GanttExcelExportRow[];
readonly fieldNames: readonly (keyof GanttExcelExportRow)[];
}
MemberType / returnRequiredDefaultDescription
rowsreadonly GanttExcelExportRow[]Yes
fieldNamesreadonly (keyof GanttExcelExportRow)[]Yes

interface

export interface GanttExcelExportRecipeOptions extends GanttExcelMappingOptions {
readonly rows: readonly GanttGridRow[];
readonly project: ProjectSnapshot;
}
MemberType / returnRequiredDefaultDescription
rowsreadonly GanttGridRow[]Yes
projectProjectSnapshotYes

Related types: GanttGridRow, ProjectSnapshot

interface

Payload emitted with each gantt-panel-resize event.

export interface GanttPanelResizeDetail {
/** The current width of the gantt panel in pixels. */
readonly width: number;
}
MemberType / returnRequiredDefaultDescription
widthnumberYesThe current width of the gantt panel in pixels.

class

GanttPanelResizePlugin adds a drag handle on the left edge of the pinned-end (gantt chart) viewport, allowing the user to resize the split between the task-list columns (rgCol) and the gantt chart (colPinEnd).

Dragging the handle left expands the gantt panel; dragging right shrinks it. An gantt-panel-resize event is emitted on the revogrid element during and after each drag with { width: number } in its detail.

export class GanttPanelResizePlugin extends CorePlugin {
constructor(revogrid: HTMLRevoGridElement, providers: PluginProviders, config?: GanttPanelResizePluginConfig);
setPanelWidth(width: number): void;
getPanelWidth(): number | null;
destroy(): void;
}
MemberType / returnRequiredDefaultDescription
handleHTMLDivElementYes
ghostHTMLDivElementYes
taskListScrollPanelScrollElementYes
timelineScrollPanelScrollElementYes
rAFIdnumber | nullYesnull
dragRafIdnumber | nullYesnull
dragWidthnumber | nullYesnull
dragColPinEndHTMLElement | nullYesnull
isDraggingbooleanYesfalse
isDestroyedbooleanYesfalse
pendingInitialWidthstring | number | nullYesnull
fullWidthBecauseNoTaskColumnsbooleanYesfalse
desiredPanelWidthnumber | nullYesnull
lastTaskListPanelWidthnumber | nullYesnull
lastTaskListViewportWidthnumber | nullYesnull
lastAppliedTaskListViewportWidthnumber | nullYesnull
pendingPanelForward{ side: PanelScrollSide; coordinate: number; } | nullYesnull
setPanelWidth(width: number)voidYesProgrammatically set the gantt panel width.
getPanelWidth()number | nullYesReturns the current gantt panel (colPinEnd) width in pixels, or null if the viewport is not yet rendered.
destroy()voidYes
createPanelScroll(side: PanelScrollSide)PanelScrollElementYes
applyInitialWidth(initialWidth: number | string)booleanYes
getColPinEnd()HTMLElement | nullYes
getRgCol()HTMLElement | nullYes
schedulePositionUpdate()voidYes
updateHandlePosition()voidYes
onPointerDown(e: PointerEvent) => voidYes(e: PointerEvent): void => { const colPinEnd = this.getColPinEnd(); if (!colPinEnd || !this.hasVisibleTaskListColumns()) return; e.preventDefault(); this.isDragging = true; this.dragColPinEnd = colPinEnd; this.handle.classList.add('is-dragging'); const startX = e.clientX; const startWidth = colPinEnd.getBoundingClientRect().width; this.dragWidth = startWidth; this.updateGhostPosition(startWidth, colPinEnd); this.handle.setPointerCapture(e.pointerId); const onPointerMove = (moveEvent: PointerEvent): void => { // Dragging left = positive delta = wider gantt pane const delta = startX - moveEvent.clientX; const nextWidth = this.clampWidth(startWidth + delta, colPinEnd); this.dragWidth = nextWidth; this.scheduleDragUpdate(); }; const onPointerUp = (): void => { this.applyPendingDragWidth(); this.isDragging = false; this.dragColPinEnd = null; this.dragWidth = null; this.ghost.style.display = 'none'; this.handle.classList.remove('is-dragging'); if (this.handle.hasPointerCapture(e.pointerId)) { this.handle.releasePointerCapture(e.pointerId); } this.handle.removeEventListener('pointermove', onPointerMove); this.handle.removeEventListener('pointerup', onPointerUp); this.handle.removeEventListener('pointercancel', onPointerUp); this.schedulePositionUpdate(); }; this.handle.addEventListener('pointermove', onPointerMove); this.handle.addEventListener('pointerup', onPointerUp); this.handle.addEventListener('pointercancel', onPointerUp); }
clampWidth(desiredWidth: number, _colPinEnd: HTMLElement)numberYes
scheduleDragUpdate()voidYes
flushDragPreview()voidYes
applyPendingDragWidth()voidYes
applyPanelWidth(colPinEnd: HTMLElement, width: number, emitEvent = true, rememberWidth = true)voidYes
updateGhostPosition(width: number, colPinEnd: HTMLElement)voidYes
syncGridStoresWithPanelWidth(width: number)booleanYes
syncPanelScrollbars()voidYes
syncPanelScrollbar(side: PanelScrollSide)voidYes
getViewportBounds(viewport: HTMLElement){ left: number; bottom: number; width: number }Yes
getHorizontalRealSize(side: PanelScrollSide)numberYes
onTaskListPanelScroll(event: Event) => voidYes(event: Event): void => { this.forwardPanelScroll('task-list', event as CustomEvent<{ dimension?: unknown; coordinate?: unknown }>); }
onTimelinePanelScroll(event: Event) => voidYes(event: Event): void => { this.forwardPanelScroll('timeline', event as CustomEvent<{ dimension?: unknown; coordinate?: unknown }>); }
onTaskListPanelNativeScroll() => voidYes(): void => { this.syncViewportLeftEdgeFromPanel('task-list'); this.scheduleViewportLeftEdgeSyncFromPanel('task-list'); }
onTimelinePanelNativeScroll() => voidYes(): void => { this.syncViewportLeftEdgeFromPanel('timeline'); this.scheduleViewportLeftEdgeSyncFromPanel('timeline'); }
syncViewportLeftEdgeFromPanel(side: PanelScrollSide)voidYes
scheduleViewportLeftEdgeSyncFromPanel(side: PanelScrollSide)voidYes
forwardPanelScroll(side: PanelScrollSide, event: CustomEvent<{ dimension?: unknown; coordinate?: unknown }>)voidYes
syncPanelScrollFromViewport(event: CustomEvent<{ dimension?: unknown; coordinate?: unknown }>)voidYes
syncTimelineWidthWithTaskColumns()voidYes
getPanelWidthForTaskListAnchor(gridWidth: number)number | nullYes
getCurrentPanelWidth(colPinEnd: HTMLElement)numberYes
getMinimumTaskListWidth()numberYes
hasVisibleTaskListColumns()booleanYes
hasVisibleColumnsInDimension(type: TaskListColumnType)boolean | nullYes
emitResizeEvent(width: number)voidYes

Related types: GanttPanelResizePluginConfig

interface

export interface GanttPanelResizePluginConfig {
/**
* Initial width of the gantt (colPinEnd) panel in pixels or as a percentage
* of the grid width (e.g. `"40%"`).
* Defaults to the current rendered width of the panel.
*/
initialWidth?: number | string;
}
MemberType / returnRequiredDefaultDescription
initialWidthstring | number | undefinedNoInitial width of the gantt (colPinEnd) panel in pixels or as a percentage of the grid width (e.g. "40%"). Defaults to the current rendered width of the panel.

interface

export interface GanttPdfExcelReportingExportOptions {
readonly range?: GanttPrintDateRange;
readonly excel?: GanttExcelExportOptions;
}
MemberType / returnRequiredDefaultDescription
rangeGanttPrintDateRange | undefinedNo
excelExportExcelEvent | undefinedNo

Related types: GanttExcelExportOptions, GanttPrintDateRange

interface

export interface GanttPdfExcelReportingRecipe {
exportPdf(project: ProjectSnapshot, range?: GanttPrintDateRange): GanttPrintResult;
exportExcel(options?: GanttExcelExportOptions): CustomEvent<GanttExcelExportOptions>;
exportReport(project: ProjectSnapshot, options?: GanttPdfExcelReportingExportOptions): {
readonly pdf: GanttPrintResult;
readonly excel: CustomEvent<GanttExcelExportOptions>;
};
}
MemberType / returnRequiredDefaultDescription
exportPdf(project: ProjectSnapshot, range?: GanttPrintDateRange)GanttPrintResultYes
exportExcel(options?: GanttExcelExportOptions)CustomEvent<GanttExcelExportOptions>Yes
exportReport(project: ProjectSnapshot, options?: GanttPdfExcelReportingExportOptions){ readonly pdf: GanttPrintResult; readonly excel: CustomEvent<GanttExcelExportOptions>; }Yes

Related types: GanttExcelExportOptions, GanttPdfExcelReportingExportOptions, GanttPrintDateRange, GanttPrintResult, ProjectSnapshot

interface

export interface GanttPdfExcelReportingRecipeOptions {
readonly grid: HTMLRevoGridElement;
readonly target: Element | null | undefined;
readonly document?: Document;
readonly window?: GanttPrintOptions['window'];
readonly now?: () => Date | string;
readonly pdf?: Omit<GanttPrintOptions, 'document' | 'window' | 'metadata'>;
readonly excel?: GanttExcelExportOptions;
}
MemberType / returnRequiredDefaultDescription
gridHTMLRevoGridElementYes
targetElement | null | undefinedYes
documentDocument | undefinedNo
windowGanttPrintWindow | undefinedNo
now(() => Date | string) | undefinedNo
pdfOmit<GanttPrintOptions, "window" | "document" | "metadata"> | undefinedNo
excelExportExcelEvent | undefinedNo

Related types: GanttExcelExportOptions, GanttPrintOptions

type

export type GanttPersistenceRecipeChannel =
| 'persistence'
| 'export'
| 'reporting'
| 'framework';

type

export type GanttPersistenceRecipeFramework =
| 'framework-neutral'
| 'svelte'
| 'vanilla';

type

export type GanttPersistenceRecipeId =
| 'rest-project-snapshot'
| 'graphql-project-snapshot'
| 'supabase-postgres-project-snapshot'
| 'postgres-sql-project-snapshot'
| 'print-pdf-export'
| 'json-snapshot-helpers'
| 'portal-svelte-gantt'
| 'portal-resource-filter';

interface

export interface GanttPersistenceRecipeMetadata {
readonly id: GanttPersistenceRecipeId;
readonly title: string;
readonly channel: GanttPersistenceRecipeChannel;
readonly frameworks: readonly GanttPersistenceRecipeFramework[];
readonly sourceFiles: readonly string[];
readonly dependencies: readonly string[];
readonly summary: string;
}
MemberType / returnRequiredDefaultDescription
idGanttPersistenceRecipeIdYes
titlestringYes
channelGanttPersistenceRecipeChannelYes
frameworksreadonly GanttPersistenceRecipeFramework[]Yes
sourceFilesreadonly string[]Yes
dependenciesreadonly string[]Yes
summarystringYes

Related types: GanttPersistenceRecipeChannel, GanttPersistenceRecipeFramework, GanttPersistenceRecipeId

interface

export interface GanttPrintableMetadata {
readonly title: string;
readonly subtitle?: string;
readonly range?: GanttPrintDateRange;
readonly rangeLabel?: string;
readonly printedAt?: string;
}
MemberType / returnRequiredDefaultDescription
titlestringYes
subtitlestring | undefinedNo
rangeGanttPrintDateRange | undefinedNo
rangeLabelstring | undefinedNo
printedAtstring | undefinedNo

Related types: GanttPrintDateRange

interface

export interface GanttPrintableMetadataOptions {
readonly title?: string;
readonly subtitle?: string;
readonly range?: GanttPrintDateRange;
readonly printedAt?: Date | string;
}
MemberType / returnRequiredDefaultDescription
titlestring | undefinedNo
subtitlestring | undefinedNo
rangeGanttPrintDateRange | undefinedNo
printedAtstring | Date | undefinedNo

Related types: GanttPrintDateRange

interface

export interface GanttPrintDateRange {
readonly startDate?: ISODateString;
readonly endDate?: ISODateString;
readonly label?: string;
}
MemberType / returnRequiredDefaultDescription
startDateISODateString | undefinedNo
endDateISODateString | undefinedNo
labelstring | undefinedNo

interface

export interface GanttPrintOptions extends GanttPrintStyleOptions {
readonly metadata?: GanttPrintableMetadataOptions;
readonly document?: Document;
readonly window?: GanttPrintWindow;
readonly cleanupDelayMs?: number;
}
MemberType / returnRequiredDefaultDescription
metadataGanttPrintableMetadataOptions | undefinedNo
documentDocument | undefinedNo
windowGanttPrintWindow | undefinedNo
cleanupDelayMsnumber | undefinedNo

Related types: GanttPrintStyleOptions, GanttPrintWindow, GanttPrintableMetadataOptions

type

export type GanttPrintOrientation = 'portrait' | 'landscape';

interface

export interface GanttPrintPdfRecipe {
readonly metadata: GanttPersistenceRecipeMetadata;
exportProject(project: ProjectSnapshot, range?: GanttPrintDateRange): GanttPrintResult;
}
MemberType / returnRequiredDefaultDescription
metadataGanttPersistenceRecipeMetadataYes
exportProject(project: ProjectSnapshot, range?: GanttPrintDateRange)GanttPrintResultYes

Related types: GanttPersistenceRecipeMetadata, GanttPrintDateRange, GanttPrintResult, ProjectSnapshot

interface

export interface GanttPrintPdfRecipeOptions {
readonly target: Element | null | undefined;
readonly document?: Document;
readonly window?: GanttPrintOptions['window'];
readonly now?: () => Date | string;
}
MemberType / returnRequiredDefaultDescription
targetElement | null | undefinedYes
documentDocument | undefinedNo
windowGanttPrintWindow | undefinedNo
now(() => Date | string) | undefinedNo

Related types: GanttPrintOptions

interface

export interface GanttPrintResult {
readonly ok: boolean;
readonly reason?: 'missing-target' | 'missing-document' | 'missing-window-print' | 'print-failed';
readonly error?: unknown;
}
MemberType / returnRequiredDefaultDescription
okbooleanYes
reason"missing-target" | "missing-document" | "missing-window-print" | "print-failed" | undefinedNo
errorunknownNo

interface

export interface GanttPrintStyleOptions {
readonly pageSize?: string;
readonly orientation?: GanttPrintOrientation;
readonly margin?: string;
readonly printRootClass?: string;
readonly printHeaderClass?: string;
readonly hideSelectors?: readonly string[];
readonly preserveColor?: boolean;
}
MemberType / returnRequiredDefaultDescription
pageSizestring | undefinedNo
orientationGanttPrintOrientation | undefinedNo
marginstring | undefinedNo
printRootClassstring | undefinedNo
printHeaderClassstring | undefinedNo
hideSelectorsreadonly string[] | undefinedNo
preserveColorboolean | undefinedNo

Related types: GanttPrintOrientation

interface

export interface GanttPrintWindow {
print(): void;
addEventListener?(type: 'afterprint', listener: () => void, options?: AddEventListenerOptions): void;
}
MemberType / returnRequiredDefaultDescription
print()voidYes
addEventListener(type: 'afterprint', listener: () => void, options?: AddEventListenerOptions)voidYes

interface

export interface GanttProjectFitOptions extends GanttTimelineNavigationOptions {
viewportWidth?: number;
}
MemberType / returnRequiredDefaultDescription
viewportWidthnumber | undefinedNo

Related types: GanttTimelineNavigationOptions

interface

export interface GanttRoleBasedEditabilityRecipe {
readonly policy: GanttRoleEditabilityPolicy;
readonly handlers: {
readonly [GANTT_BEFORE_TASK_CHANGE_EVENT]: (event: GanttExampleCancelableEvent<GanttBeforeTaskChangeDetail>) => void;
readonly [GANTT_BEFORE_DEPENDENCY_CHANGE_EVENT]: (
event: GanttExampleCancelableEvent<GanttBeforeDependencyChangeDetail>,
) => void;
readonly [GANTT_BEFORE_ASSIGNMENT_CHANGE_EVENT]: (
event: GanttExampleCancelableEvent<GanttBeforeAssignmentChangeDetail>,
) => void;
};
readonly canEdit: <TEventName extends GanttBeforeChangeEventName>(
eventName: TEventName,
detail: Pick<GanttBeforeChangeDetailByEventName[TEventName], 'action'>,
) => boolean;
}
MemberType / returnRequiredDefaultDescription
policyGanttRoleEditabilityPolicyYes
handlers{ readonly "gantt-before-task-change": (event: GanttExampleCancelableEvent<GanttBeforeTaskChangeDetail>) => void; readonly "gantt-before-dependency-change": (event: GanttExampleCancelableEvent<GanttBeforeDependencyChangeDetail>) => void; readonly "gantt-before-assignment-change": (event: GanttExampleCancelableEvent<GanttBeforeAssignmentChangeDetail>) => void; }Yes
canEdit<TEventName extends GanttBeforeChangeEventName>(eventName: TEventName, detail: Pick<GanttBeforeChangeDetailByEventName[TEventName], "action">) => booleanYes

Related types: GanttBeforeAssignmentChangeDetail, GanttBeforeDependencyChangeDetail, GanttBeforeTaskChangeDetail, GanttExampleCancelableEvent

interface

export interface GanttRoleBasedEditabilityRecipeOptions {
readonly policy?: GanttRoleEditabilityPolicy;
readonly getRoleContext: () => GanttRoleEditabilityContext;
readonly onDeny?: (
eventName: GanttBeforeChangeEventName,
detail: GanttBeforeChangeDetailByEventName[GanttBeforeChangeEventName],
) => void;
}
MemberType / returnRequiredDefaultDescription
policyGanttRoleEditabilityPolicy | undefinedNo
getRoleContext() => GanttRoleEditabilityContextYes
onDeny((eventName: GanttBeforeChangeEventName, detail: GanttBeforeChangeDetailByEventName[GanttBeforeChangeEventName]) => void) | undefinedNo

type

export type GanttTaskEditorControlId =
| 'header'
| 'title'
| 'description'
| 'close'
| 'tabs'
| 'validation'
| 'preview'
| 'reset'
| 'apply'
| 'footer';

function

export function GanttTaskEditorDialog({
grid,
task,
tasks,
resources,
assignments,
dependencies,
project,
allowedTaskTypes,
calendars,
options,
open,
status,
onClose,
onReset,
onSubmit,
}: GanttTaskEditorDialogProps): h.JSX.Element | null;
ParameterTypeRequiredDefaultDescription
{ grid, task, tasks, resources, assignments, dependencies, project, allowedTaskTypes, calendars, options, open, status, onClose, onReset, onSubmit, }GanttTaskEditorDialogPropsYes

interface

export interface GanttTaskEditorDialogCustomization {
readonly tabs?: GanttTaskEditorTabsOptions;
readonly controls?: Partial<Record<GanttTaskEditorControlId, boolean>>;
readonly editor?: GanttTaskEditorDomRenderer;
}
MemberType / returnRequiredDefaultDescription
tabsGanttTaskEditorTabsOptions | undefinedNo
controlsPartial<Record<GanttTaskEditorControlId, boolean>> | undefinedNo
editorGanttTaskEditorDomRenderer | undefinedNo

Related types: GanttTaskEditorControlId, GanttTaskEditorDomRenderer, GanttTaskEditorTabsOptions

constant

export const ganttTaskEditorDialogDependencies: PluginDependency[];

interface

export interface GanttTaskEditorDialogDependencyDraft {
readonly id?: DependencyId;
readonly predecessorTaskId: TaskId | '';
readonly successorTaskId: TaskId | '';
readonly type: DependencyType;
readonly lagDays: number;
}
MemberType / returnRequiredDefaultDescription
idstring | undefinedNo
predecessorTaskIdstringYes
successorTaskIdstringYes
typeDependencyTypeYes
lagDaysnumberYes

Related types: DependencyId, DependencyType, TaskId

interface

export interface GanttTaskEditorDialogLocaleText {
readonly title: string;
readonly description: string;
readonly fallbackTaskTitle: string;
readonly closeLabel: string;
readonly closeButtonText: string;
readonly applyLabel: string;
readonly resetLabel: string;
readonly menuItemName: string;
readonly tabListAriaLabel: string;
readonly readOnlyLabel: string;
readonly noResourcesAvailable: string;
readonly noAssignedResources: string;
readonly assignedResourcesAriaLabel: string;
readonly projectDefaultOption: string;
readonly noConstraintOption: string;
readonly timeToggleLabel: string;
readonly switchOnLabel: string;
readonly switchOffLabel: string;
readonly manualSchedulingOnLabel: string;
readonly manualSchedulingOffLabel: string;
readonly dependencyTargetLabel: {
readonly predecessors: string;
readonly successors: string;
};
readonly dependencyEmptyLabel: {
readonly predecessors: string;
readonly successors: string;
};
readonly dependencySearch: {
readonly predecessors: GanttTaskEditorDialogSearchText;
readonly successors: GanttTaskEditorDialogSearchText;
};
readonly resourcesSearch: GanttTaskEditorDialogSearchText;
readonly dependencyTypeLabel: string;
readonly dependencyLagDaysLabel: string;
readonly removeDependencyLabel: (targetLabel: string) => string;
readonly removeDependencyButton: string;
readonly addDependencyButton: {
readonly predecessors: string;
readonly successors: string;
};
readonly tabs: Record<TaskEditorTabId, string>;
readonly dependencyTypes: Record<DependencyType, string>;
readonly fields: Partial<Record<TaskEditorFieldId, string>>;
readonly fieldOptions: Partial<Record<TaskEditorFieldId, readonly TaskEditorFieldOption[]>>;
readonly status: GanttTaskEditorDialogStatusText;
readonly validation: GanttTaskEditorDialogValidationText;
}
MemberType / returnRequiredDefaultDescription
titlestringYes
descriptionstringYes
fallbackTaskTitlestringYes
closeLabelstringYes
closeButtonTextstringYes
applyLabelstringYes
resetLabelstringYes
menuItemNamestringYes
tabListAriaLabelstringYes
readOnlyLabelstringYes
noResourcesAvailablestringYes
noAssignedResourcesstringYes
assignedResourcesAriaLabelstringYes
projectDefaultOptionstringYes
noConstraintOptionstringYes
timeToggleLabelstringYes
switchOnLabelstringYes
switchOffLabelstringYes
manualSchedulingOnLabelstringYes
manualSchedulingOffLabelstringYes
dependencyTargetLabel{ readonly predecessors: string; readonly successors: string; }Yes
dependencyEmptyLabel{ readonly predecessors: string; readonly successors: string; }Yes
dependencySearch{ readonly predecessors: GanttTaskEditorDialogSearchText; readonly successors: GanttTaskEditorDialogSearchText; }Yes
resourcesSearchGanttTaskEditorDialogSearchTextYes
dependencyTypeLabelstringYes
dependencyLagDaysLabelstringYes
removeDependencyLabel(targetLabel: string) => stringYes
removeDependencyButtonstringYes
addDependencyButton{ readonly predecessors: string; readonly successors: string; }Yes
tabsRecord<TaskEditorTabId, string>Yes
dependencyTypesRecord<DependencyType, string>Yes
fieldsPartial<Record<TaskEditorFieldId, string>>Yes
fieldOptionsPartial<Record<TaskEditorFieldId, readonly TaskEditorFieldOption<string>[]>>Yes
statusGanttTaskEditorDialogStatusTextYes
validationGanttTaskEditorDialogValidationTextYes

Related types: DependencyType, GanttTaskEditorDialogSearchText, GanttTaskEditorDialogStatusText, GanttTaskEditorDialogValidationText

type

export type GanttTaskEditorDialogLocaleTextOptions = Partial<Omit<
GanttTaskEditorDialogLocaleText,
| 'dependencyTargetLabel'
| 'dependencyEmptyLabel'
| 'dependencySearch'
| 'resourcesSearch'
| 'addDependencyButton'
| 'tabs'
| 'dependencyTypes'
| 'fields'
| 'fieldOptions'
| 'status'
| 'validation'
>> & {
readonly dependencyTargetLabel?: Partial<GanttTaskEditorDialogLocaleText['dependencyTargetLabel']>;
readonly dependencyEmptyLabel?: Partial<GanttTaskEditorDialogLocaleText['dependencyEmptyLabel']>;
readonly dependencySearch?: {
readonly predecessors?: Partial<GanttTaskEditorDialogSearchText>;
readonly successors?: Partial<GanttTaskEditorDialogSearchText>;
};
readonly resourcesSearch?: Partial<GanttTaskEditorDialogSearchText>;
readonly addDependencyButton?: Partial<GanttTaskEditorDialogLocaleText['addDependencyButton']>;
readonly tabs?: Partial<Record<TaskEditorTabId, string>>;
readonly dependencyTypes?: Partial<Record<DependencyType, string>>;
readonly fields?: Partial<Record<TaskEditorFieldId, string>>;
readonly fieldOptions?: Partial<Record<TaskEditorFieldId, readonly TaskEditorFieldOption[]>>;
readonly status?: Partial<GanttTaskEditorDialogStatusText>;
readonly validation?: Partial<GanttTaskEditorDialogValidationText>;
};

Related types: DependencyType, GanttTaskEditorDialogLocaleText, GanttTaskEditorDialogSearchText, GanttTaskEditorDialogStatusText, GanttTaskEditorDialogValidationText

interface

export interface GanttTaskEditorDialogOptions {
readonly fields?: readonly TaskEditorFieldId[];
readonly localeText?: GanttTaskEditorDialogLocaleTextOptions;
readonly menuItemName?: string;
readonly title?: string;
readonly description?: string;
readonly applyLabel?: string;
readonly resetLabel?: string;
readonly closeLabel?: string;
/**
* Controls the packaged row context-menu entry for opening the task editor.
* Defaults to the Gantt context-menu setting. Set to `false` to remove only
* the editor menu item, or `true` to keep it when `gantt.contextMenu` is
* disabled.
*/
readonly contextMenu?: boolean;
/**
* Opens the dialog immediately after the Gantt plugin creates a task. Defaults
* to `true`. Set to `false` to keep task creation silent. This
* covers task creation from the toolbar, row context menu, and custom
* dispatches of the task-create event.
*/
readonly openOnCreate?: boolean;
/**
* Controls the built-in resource assignment picker. Set to `false` to keep
* the resources field read-only.
*/
readonly resources?: false | GanttTaskEditorDialogResourcesOptions;
/**
* Shows the normalized TaskUpdate JSON preview. Intended for documentation,
* diagnostics, and custom developer tooling; hidden by default for end-user UI.
*/
readonly preview?: boolean;
readonly readOnly?: boolean;
readonly onSubmit?: (context: GanttTaskEditorDialogSubmitContext) => boolean | void | Promise<boolean | void>;
readonly getTask?: (taskId: TaskId, grid: HTMLRevoGridElement) => TaskEntity | null | undefined;
readonly customization?: GanttTaskEditorDialogCustomization;
}
MemberType / returnRequiredDefaultDescription
fieldsreadonly TaskEditorFieldId[] | undefinedNo
localeTextGanttTaskEditorDialogLocaleTextOptions | undefinedNo
menuItemNamestring | undefinedNo
titlestring | undefinedNo
descriptionstring | undefinedNo
applyLabelstring | undefinedNo
resetLabelstring | undefinedNo
closeLabelstring | undefinedNo
contextMenuboolean | undefinedNoControls the packaged row context-menu entry for opening the task editor. Defaults to the Gantt context-menu setting. Set to false to remove only the editor menu item, or true to keep it when gantt.contextMenu is disabled.
openOnCreateboolean | undefinedNoOpens the dialog immediately after the Gantt plugin creates a task. Defaults to true. Set to false to keep task creation silent. This covers task creation from the toolbar, row context menu, and custom dispatches of the task-create event.
resourcesfalse | GanttTaskEditorDialogResourcesOptions | undefinedNoControls the built-in resource assignment picker. Set to false to keep the resources field read-only.
previewboolean | undefinedNoShows the normalized TaskUpdate JSON preview. Intended for documentation, diagnostics, and custom developer tooling; hidden by default for end-user UI.
readOnlyboolean | undefinedNo
onSubmit((context: GanttTaskEditorDialogSubmitContext) => boolean | void | Promise<boolean | void>) | undefinedNo
getTask((taskId: TaskId, grid: HTMLRevoGridElement) => TaskEntity | null | undefined) | undefinedNo
customizationGanttTaskEditorDialogCustomization | undefinedNo

Related types: GanttTaskEditorDialogCustomization, GanttTaskEditorDialogLocaleTextOptions, GanttTaskEditorDialogResourcesOptions, GanttTaskEditorDialogSubmitContext, TaskEntity, TaskId, TaskUpdate

class

export class GanttTaskEditorDialogPlugin extends CorePlugin {
pluginDependencies: PluginDependency[];
constructor(revogrid: HTMLRevoGridElement, providers: PluginProviders);
openTask(taskId: TaskId | null): void;
closeTaskEditor(): void;
destroy(): void;
}
MemberType / returnRequiredDefaultDescription
pluginDependenciesPluginDependency[]YesganttTaskEditorDialogDependencies
hostHTMLDivElementYesdocument.createElement('div')
originalRowContextMenuContextMenuConfig | undefinedYes
appliedRowContextMenuContextMenuConfig | nullYesnull
selectedTaskIdstring | nullYesnull
recentCreatedTasksMap<string, TaskEntity>Yesnew Map<TaskId, TaskEntity>()
statusstringYesDEFAULT_TASK_EDITOR_DIALOG_LOCALE_TEXT.status.ready
openbooleanYesfalse
renderKeynumberYes0
taskEditorDialogOptionsGanttTaskEditorDialogOptionsYesDEFAULT_TASK_EDITOR_DIALOG_OPTIONS
ganttConfigGanttPluginConfig | undefinedYes
openTask(taskId: TaskId | null)voidYes
closeTaskEditor()voidYes
destroy()voidYes
removeContextMenu()voidYes
isContextMenuEnabled()booleanYes
getTaskRuntime()GanttTaskRuntime | undefinedYes
getCurrentProjectSnapshot()ProjectSnapshot | nullYes
getCurrentTasks()readonly TaskEntity[]Yes
getCurrentResources()readonly ResourceEntity[]Yes
getCurrentAssignments()readonly AssignmentEntity[]Yes
getCurrentDependencies()readonly DependencyEntity[]Yes
getCurrentCalendars()readonly CalendarEntity[]Yes
deleteUnsavedCreatedTask()voidYes
getTaskRowIndex(taskId: TaskId)number | nullYes
applyTaskPatch(task: TaskEntity, patch: TaskUpdate)booleanYes
getTask(taskId: TaskId)TaskEntity | nullYes
isReadOnly()booleanYes
createNextAssignments(taskId: TaskId, selectedResourceIds: readonly ResourceId[]){ assignments: readonly AssignmentEntity[]; changed: boolean; error: string | null }Yes
createNextDependencies(taskId: TaskId, dependencyDrafts: readonly GanttTaskEditorDialogDependencyDraft[]){ dependencies: readonly DependencyEntity[]; changed: boolean; error: string | null }Yes
applyContextMenu()voidYes
syncContextMenuPlugin()Promise<void>Yes
submit(values: TaskEditorFormValues, selectedResourceIds: readonly ResourceId[], dependencyDrafts: readonly GanttTaskEditorDialogDependencyDraft[], customValues: Readonly<Record<string, unknown>> = {})Promise<void>Yes
renderDialog()voidYes

Related types: TaskId

interface

export interface GanttTaskEditorDialogResourcesOptions {
readonly editable?: boolean;
readonly defaultAllocationUnits?: number;
readonly defaultResponsibility?: string;
}
MemberType / returnRequiredDefaultDescription
editableboolean | undefinedNo
defaultAllocationUnitsnumber | undefinedNo
defaultResponsibilitystring | undefinedNo

interface

export interface GanttTaskEditorDialogSearchText {
readonly placeholder: string;
readonly ariaLabel: string;
readonly empty: string;
}
MemberType / returnRequiredDefaultDescription
placeholderstringYes
ariaLabelstringYes
emptystringYes

interface

export interface GanttTaskEditorDialogState {
readonly taskId: TaskId | null;
readonly task: TaskEntity | null;
readonly values: TaskEditorFormValues;
readonly status: string;
}
MemberType / returnRequiredDefaultDescription
taskIdstring | nullYes
taskTaskEntity | nullYes
valuesPartial<Record<TaskEditorFieldId, unknown>>Yes
statusstringYes

Related types: TaskEntity, TaskId

interface

export interface GanttTaskEditorDialogStatusText {
readonly ready: string;
readonly closed: string;
readonly changesSaved: string;
readonly noChangesToSave: string;
readonly readOnlyProject: string;
readonly fixValidationErrors: string;
readonly saveFailed: string;
}
MemberType / returnRequiredDefaultDescription
readystringYes
closedstringYes
changesSavedstringYes
noChangesToSavestringYes
readOnlyProjectstringYes
fixValidationErrorsstringYes
saveFailedstringYes

interface

export interface GanttTaskEditorDialogSubmitContext {
readonly grid: HTMLRevoGridElement;
readonly task: TaskEntity;
readonly values: TaskEditorFormValues;
readonly result: TaskEditorSubmitSuccess;
readonly assignmentResourceIds: readonly ResourceId[];
readonly assignments: readonly AssignmentEntity[];
readonly assignmentsChanged: boolean;
readonly dependencyDrafts: readonly GanttTaskEditorDialogDependencyDraft[];
readonly dependencies: readonly DependencyEntity[];
readonly dependenciesChanged: boolean;
readonly customValues: Readonly<Record<string, unknown>>;
}
MemberType / returnRequiredDefaultDescription
gridHTMLRevoGridElementYes
taskTaskEntityYes
valuesPartial<Record<TaskEditorFieldId, unknown>>Yes
resultTaskEditorSubmitSuccessYes
assignmentResourceIdsreadonly string[]Yes
assignmentsreadonly AssignmentEntity[]Yes
assignmentsChangedbooleanYes
dependencyDraftsreadonly GanttTaskEditorDialogDependencyDraft[]Yes
dependenciesreadonly DependencyEntity[]Yes
dependenciesChangedbooleanYes
customValuesReadonly<Record<string, unknown>>Yes

Related types: AssignmentEntity, DependencyEntity, GanttTaskEditorDialogDependencyDraft, ResourceId, TaskEntity

interface

export interface GanttTaskEditorDialogValidationText {
readonly checkRequiredFields: string;
readonly couldNotSave: string;
readonly fieldError: (error: TaskEditorSubmitError, fieldLabel: string) => string;
readonly resourceNotFound: (resourceId: ResourceId) => string;
readonly taskCannotDependOnItself: string;
readonly predecessorTaskNotFound: (taskId: TaskId) => string;
readonly successorTaskNotFound: (taskId: TaskId) => string;
readonly dependencyMustIncludeCurrentTask: string;
readonly duplicateDependencyLinks: string;
}
MemberType / returnRequiredDefaultDescription
checkRequiredFieldsstringYes
couldNotSavestringYes
fieldError(error: TaskEditorSubmitError, fieldLabel: string) => stringYes
resourceNotFound(resourceId: ResourceId) => stringYes
taskCannotDependOnItselfstringYes
predecessorTaskNotFound(taskId: TaskId) => stringYes
successorTaskNotFound(taskId: TaskId) => stringYes
dependencyMustIncludeCurrentTaskstringYes
duplicateDependencyLinksstringYes

Related types: ResourceId, TaskId

interface

export interface GanttTaskEditorDomRenderer {
mount(container: HTMLElement, context: GanttTaskEditorRendererContext): void | GanttTaskEditorRendererLifecycle;
}
MemberType / returnRequiredDefaultDescription
mount(container: HTMLElement, context: GanttTaskEditorRendererContext)void | GanttTaskEditorRendererLifecycleYes

Related types: GanttTaskEditorRendererContext, GanttTaskEditorRendererLifecycle

interface

export interface GanttTaskEditorDraftController {
getState(): GanttTaskEditorDraftState;
setValues(values: Partial<TaskEditorFormValues>): void;
setResourceIds(resourceIds: readonly ResourceId[]): void;
setDependencyDrafts(drafts: readonly GanttTaskEditorDialogDependencyDraft[]): void;
setCustomValue(key: string, value: unknown): void;
setValidationErrors(errors: readonly string[]): void;
reset(): void;
close(): void;
submit(): void;
}
MemberType / returnRequiredDefaultDescription
getState()GanttTaskEditorDraftStateYes
setValues(values: Partial<TaskEditorFormValues>)voidYes
setResourceIds(resourceIds: readonly ResourceId[])voidYes
setDependencyDrafts(drafts: readonly GanttTaskEditorDialogDependencyDraft[])voidYes
setCustomValue(key: string, value: unknown)voidYes
setValidationErrors(errors: readonly string[])voidYes
reset()voidYes
close()voidYes
submit()voidYes

Related types: GanttTaskEditorDialogDependencyDraft, GanttTaskEditorDraftState, ResourceId

interface

export interface GanttTaskEditorDraftState {
readonly values: TaskEditorFormValues;
readonly resourceIds: readonly ResourceId[];
readonly dependencyDrafts: readonly GanttTaskEditorDialogDependencyDraft[];
readonly customValues: Readonly<Record<string, unknown>>;
readonly validationErrors: readonly string[];
readonly dirty: boolean;
}
MemberType / returnRequiredDefaultDescription
valuesPartial<Record<TaskEditorFieldId, unknown>>Yes
resourceIdsreadonly string[]Yes
dependencyDraftsreadonly GanttTaskEditorDialogDependencyDraft[]Yes
customValuesReadonly<Record<string, unknown>>Yes
validationErrorsreadonly string[]Yes
dirtybooleanYes

Related types: GanttTaskEditorDialogDependencyDraft, ResourceId

interface

export interface GanttTaskEditorRendererContext {
readonly grid: HTMLRevoGridElement;
readonly task: TaskEntity | null;
readonly project: ProjectSnapshot | null;
readonly open: boolean;
readonly status: string;
readonly state: GanttTaskEditorDraftState;
readonly controller: GanttTaskEditorDraftController;
}
MemberType / returnRequiredDefaultDescription
gridHTMLRevoGridElementYes
taskTaskEntity | nullYes
projectProjectSnapshot | nullYes
openbooleanYes
statusstringYes
stateGanttTaskEditorDraftStateYes
controllerGanttTaskEditorDraftControllerYes

Related types: GanttTaskEditorDraftController, GanttTaskEditorDraftState, ProjectSnapshot, TaskEntity

interface

export interface GanttTaskEditorRendererLifecycle {
update?(context: GanttTaskEditorRendererContext): void;
destroy?(): void;
}
MemberType / returnRequiredDefaultDescription
update(context: GanttTaskEditorRendererContext)voidYes
destroy()voidYes

Related types: GanttTaskEditorRendererContext

interface

export interface GanttTaskEditorTabOptions {
readonly title?: string;
readonly hidden?: boolean;
readonly fields?: readonly TaskEditorFieldId[];
readonly renderer?: GanttTaskEditorDomRenderer;
}
MemberType / returnRequiredDefaultDescription
titlestring | undefinedNo
hiddenboolean | undefinedNo
fieldsreadonly TaskEditorFieldId[] | undefinedNo
rendererGanttTaskEditorDomRenderer | undefinedNo

Related types: GanttTaskEditorDomRenderer

interface

export interface GanttTaskEditorTabsOptions {
readonly items?: Readonly<Record<string, false | GanttTaskEditorTabOptions>>;
readonly order?: readonly string[];
}
MemberType / returnRequiredDefaultDescription
itemsReadonly<Record<string, false | GanttTaskEditorTabOptions>> | undefinedNo
orderreadonly string[] | undefinedNo

Related types: GanttTaskEditorTabOptions

interface

export interface GanttTaskStatusIndicatorRecipeOptions {
readonly rows: readonly Pick<GanttGridRow, 'id'>[];
readonly projectReadOnly?: boolean;
readonly lockedTaskIds?: ReadonlySet<TaskId> | readonly TaskId[];
readonly labels?: Parameters<typeof createTaskStatusIndicators>[0]['labels'];
readonly classNames?: Parameters<typeof createTaskStatusIndicators>[0]['classNames'];
}
MemberType / returnRequiredDefaultDescription
rowsreadonly Pick<GanttGridRow, "id">[]Yes
projectReadOnlyboolean | undefinedNo
lockedTaskIdsreadonly string[] | ReadonlySet<string> | undefinedNo
labelsPartial<Record<TaskStatusIndicatorKind, string>> | undefinedNo
classNamesPartial<Record<TaskStatusIndicatorKind, string>> | undefinedNo

Related types: GanttGridRow, TaskId

interface

export interface GanttTaskStatusIndicatorRecipeRow {
readonly taskId: TaskId;
readonly status: TaskStatusIndicatorProjection;
readonly className: string;
readonly title: string;
readonly ariaLabel: string | undefined;
}
MemberType / returnRequiredDefaultDescription
taskIdstringYes
statusTaskStatusIndicatorProjectionYes
classNamestringYes
titlestringYes
ariaLabelstring | undefinedYes

Related types: TaskId

interface

export interface GanttTimelineNavigationOptions {
align?: number;
}
MemberType / returnRequiredDefaultDescription
alignnumber | undefinedNo

interface

export interface GanttTimelineNavigationRuntime {
scrollToToday?: () => Promise<void> | void;
fitToProject?: () => Promise<void> | void;
getZoomLevel?: () => { id?: string } | null | undefined;
setZoomLevel?: (levelId: string) => boolean;
}
MemberType / returnRequiredDefaultDescription
scrollToToday(() => Promise<void> | void) | undefinedNo
fitToProject(() => Promise<void> | void) | undefinedNo
getZoomLevel(() => { id?: string; } | null | undefined) | undefinedNo
setZoomLevel((levelId: string) => boolean) | undefinedNo

interface

export interface GanttTodayNavigationOptions extends GanttTimelineNavigationOptions {
date?: ISODateString;
}
MemberType / returnRequiredDefaultDescription
dateISODateString | undefinedNo

Related types: GanttTimelineNavigationOptions

constant

export const GanttToolbar: ({ grid, columns, visuals: initialVisuals, controls }: GanttToolbarComponentProps) => h.JSX.Element;

interface

A single column entry shown in the Gantt toolbar column-visibility dropdown.

export interface GanttToolbarColumnOption {
/** Property name matching a task-table column (e.g. `'wbs'`, `'status'`). */
prop: string;
/** Human-readable label shown in the dropdown. */
label: string;
/**
* Whether the column is visible by default.
* Columns with `visible: false` will be added to `grid.hideColumns` on mount.
* @default true
*/
visible?: boolean;
}
MemberType / returnRequiredDefaultDescription
propstringYesProperty name matching a task-table column (e.g. 'wbs', 'status').
labelstringYesHuman-readable label shown in the dropdown.
visibleboolean | undefinedNotrueWhether the column is visible by default. Columns with visible: false will be added to grid.hideColumns on mount.

interface

Visibility switches for each toolbar control or control group.

export interface GanttToolbarControls {
search?: boolean;
history?: boolean;
undo?: boolean;
redo?: boolean;
tree?: boolean;
expandAll?: boolean;
collapseAll?: boolean;
zoom?: boolean;
zoomIn?: boolean;
zoomOut?: boolean;
tasks?: boolean;
addTask?: boolean;
indent?: boolean;
outdent?: boolean;
export?: boolean;
exportExcel?: boolean;
columns?: boolean;
dependencies?: boolean;
baseline?: boolean;
criticalPath?: boolean;
}
MemberType / returnRequiredDefaultDescription
searchboolean | undefinedNo
historyboolean | undefinedNo
undoboolean | undefinedNo
redoboolean | undefinedNo
treeboolean | undefinedNo
expandAllboolean | undefinedNo
collapseAllboolean | undefinedNo
zoomboolean | undefinedNo
zoomInboolean | undefinedNo
zoomOutboolean | undefinedNo
tasksboolean | undefinedNo
addTaskboolean | undefinedNo
indentboolean | undefinedNo
outdentboolean | undefinedNo
exportboolean | undefinedNo
exportExcelboolean | undefinedNo
columnsboolean | undefinedNo
dependenciesboolean | undefinedNo
baselineboolean | undefinedNo
criticalPathboolean | undefinedNo

constant

export const ganttToolbarDependencies: PluginDependency[];

interface

Options accepted by {@link defineGanttToolbar}.

export interface GanttToolbarOptions {
/** The `revo-grid` element the toolbar should control. */
grid: HTMLRevoGridElement;
/**
* Column options to show in the visibility dropdown.
* If omitted, no column dropdown is rendered.
*/
columns?: GanttToolbarColumnOption[];
/**
* Initial state of the visual/scheduling toggles.
* When omitted, values are read from the current `grid.gantt.visuals` config.
*/
visuals?: GanttToolbarVisuals;
/**
* Per-control visibility. Omitted options default to visible, except
* `baseline`, which is opt-in to keep the default command bar compact.
*/
controls?: GanttToolbarControls;
}
MemberType / returnRequiredDefaultDescription
gridHTMLRevoGridElementYesThe revo-grid element the toolbar should control.
columnsGanttToolbarColumnOption[] | undefinedNoColumn options to show in the visibility dropdown. If omitted, no column dropdown is rendered.
visualsGanttToolbarVisuals | undefinedNoInitial state of the visual/scheduling toggles. When omitted, values are read from the current grid.gantt.visuals config.
controlsGanttToolbarControls | undefinedNoPer-control visibility. Omitted options default to visible, except baseline, which is opt-in to keep the default command bar compact.

Related types: GanttToolbarColumnOption, GanttToolbarControls, GanttToolbarVisuals

interface

export interface GanttToolbarQuickWinAction<Result = unknown> {
readonly id: GanttToolbarQuickWinActionId;
readonly label: string;
readonly title: string;
readonly run: () => Result | Promise<Result>;
}
MemberType / returnRequiredDefaultDescription
idGanttToolbarQuickWinActionIdYes
labelstringYes
titlestringYes
run() => Result | Promise<Result>Yes

Related types: GanttToolbarQuickWinActionId

type

export type GanttToolbarQuickWinActionId =
| 'export-csv'
| 'export-excel'
| 'capture-baseline'
| 'toggle-critical-path'
| 'timeline-today'
| 'timeline-fit-project';

interface

export interface GanttToolbarQuickWinActions {
readonly exportCsv?: GanttToolbarQuickWinAction<boolean>;
readonly exportExcel?: GanttToolbarQuickWinAction<CustomEvent<GanttExcelExportOptions>>;
readonly captureBaseline?: GanttToolbarQuickWinAction<BaselineSnapshot | null>;
readonly toggleCriticalPath?: GanttToolbarQuickWinAction<boolean | undefined>;
readonly scrollToToday?: GanttToolbarQuickWinAction<boolean>;
readonly fitToProject?: GanttToolbarQuickWinAction<boolean>;
}
MemberType / returnRequiredDefaultDescription
exportCsvGanttToolbarQuickWinAction<boolean> | undefinedNo
exportExcelGanttToolbarQuickWinAction<CustomEvent<ExportExcelEvent>> | undefinedNo
captureBaselineGanttToolbarQuickWinAction<BaselineSnapshot | null> | undefinedNo
toggleCriticalPathGanttToolbarQuickWinAction<boolean | undefined> | undefinedNo
scrollToTodayGanttToolbarQuickWinAction<boolean> | undefinedNo
fitToProjectGanttToolbarQuickWinAction<boolean> | undefinedNo

Related types: BaselineSnapshot, GanttExcelExportOptions, GanttToolbarQuickWinAction

interface

export interface GanttToolbarQuickWinOptions {
readonly csv?: GanttCsvExportOptions | false;
readonly excel?: GanttExcelExportOptions | false;
readonly baseline?: CaptureBaselineOptions | false;
readonly criticalPath?: false;
readonly today?: GanttTodayNavigationOptions | false;
readonly fitToProject?: GanttProjectFitOptions | false;
}
MemberType / returnRequiredDefaultDescription
csvfalse | GanttCsvExportOptions | undefinedNo
excelfalse | ExportExcelEvent | undefinedNo
baselinefalse | CaptureBaselineOptions | undefinedNo
criticalPathfalse | undefinedNo
todayfalse | GanttTodayNavigationOptions | undefinedNo
fitToProjectfalse | GanttProjectFitOptions | undefinedNo

Related types: GanttCsvExportOptions, GanttExcelExportOptions, GanttProjectFitOptions, GanttTodayNavigationOptions

interface

Initial visual toggle state passed to the toolbar.

export interface GanttToolbarVisuals {
showBaseline?: boolean;
showDependencies?: boolean;
showCriticalPath?: boolean;
}
MemberType / returnRequiredDefaultDescription
showBaselineboolean | undefinedNo
showDependenciesboolean | undefinedNo
showCriticalPathboolean | undefinedNo

interface

export interface GanttValidationContext {
readonly getTaskById?: (taskId: TaskId) => TaskEntity | null | undefined;
readonly roleContext?: GanttRoleEditabilityContext;
readonly approvals?: GanttApprovalRegistry;
}
MemberType / returnRequiredDefaultDescription
getTaskById((taskId: TaskId) => TaskEntity | null | undefined) | undefinedNo
roleContextGanttRoleEditabilityContext | undefinedNo
approvalsGanttApprovalRegistry | undefinedNo

Related types: GanttApprovalRegistry, TaskEntity, TaskId

interface

export interface GanttValidationDecision {
readonly ok: boolean;
readonly code?: string;
readonly message?: string;
}
MemberType / returnRequiredDefaultDescription
okbooleanYes
codestring | undefinedNo
messagestring | undefinedNo

interface

export interface GanttValidationHandlerOptions<TContext> {
readonly context: TContext | (() => TContext);
readonly validators: readonly GanttBeforeTaskChangeValidator<TContext>[];
readonly onReject?: (rejection: GanttValidationReject) => void;
}
MemberType / returnRequiredDefaultDescription
contextTContext | (() => TContext)Yes
validatorsreadonly GanttBeforeTaskChangeValidator<TContext>[]Yes
onReject((rejection: GanttValidationReject) => void) | undefinedNo

Related types: GanttBeforeTaskChangeValidator, GanttValidationReject

interface

export interface GanttValidationReject {
readonly detail: GanttBeforeTaskChangeDetail;
readonly decision: GanttValidationDecision;
}
MemberType / returnRequiredDefaultDescription
detailGanttBeforeTaskChangeDetailYes
decisionGanttValidationDecisionYes

Related types: GanttBeforeTaskChangeDetail, GanttValidationDecision

function

export function getCsvExportPlugin(grid: HTMLRevoGridElement): Promise<RevoGridCsvExportPlugin | undefined>;
ParameterTypeRequiredDefaultDescription
gridHTMLRevoGridElementYes

Related types: RevoGridCsvExportPlugin

function

export function getDefaultDependencyDropdownType(allowedTypes: readonly DependencyType[] = DEFAULT_GANTT_DEPENDENCY_TYPES): DependencyType | null;
ParameterTypeRequiredDefaultDescription
allowedTypesreadonly DependencyType[]NoDEFAULT_GANTT_DEPENDENCY_TYPES

Related types: DependencyType

function

export function getGanttBaselineCaptureRuntime(grid: HTMLRevoGridElement): Promise<GanttBaselineCaptureRuntime | undefined>;
ParameterTypeRequiredDefaultDescription
gridHTMLRevoGridElementYes

Related types: GanttBaselineCaptureRuntime

function

export function getGanttDependencyDropdownCellBadges(value: unknown, config: GanttDependencyDropdownConfig): string[];
ParameterTypeRequiredDefaultDescription
valueunknownYes
configGanttDependencyDropdownConfigYes

Related types: GanttDependencyDropdownConfig

function

export function getGanttDependencyDropdownSearchText(option: GanttDependencyDropdownTaskOption): string;
ParameterTypeRequiredDefaultDescription
optionGanttDependencyDropdownTaskOptionYes

Related types: GanttDependencyDropdownTaskOption

function

export function getGanttDependencyDropdownTasks(config: GanttDependencyDropdownConfig): readonly GanttDependencyDropdownTaskOption[];
ParameterTypeRequiredDefaultDescription
configGanttDependencyDropdownConfigYes

Related types: GanttDependencyDropdownConfig, GanttDependencyDropdownTaskOption

function

export function getGanttDependencyDropdownValue(value: unknown, config: GanttDependencyDropdownConfig): GanttDependencyDropdownValue[];
ParameterTypeRequiredDefaultDescription
valueunknownYes
configGanttDependencyDropdownConfigYes

Related types: GanttDependencyDropdownConfig, GanttDependencyDropdownValue

function

export function getGanttTimelineNavigationRuntime(grid: HTMLRevoGridElement): Promise<GanttTimelineNavigationRuntime | undefined>;
ParameterTypeRequiredDefaultDescription
gridHTMLRevoGridElementYes

Related types: GanttTimelineNavigationRuntime

function

export function getPersistenceRecipeMetadata(id: GanttPersistenceRecipeId): GanttPersistenceRecipeMetadata;
ParameterTypeRequiredDefaultDescription
idGanttPersistenceRecipeIdYes

Related types: GanttPersistenceRecipeId, GanttPersistenceRecipeMetadata

function

export function isGanttAddTaskRow(row: unknown): boolean;
ParameterTypeRequiredDefaultDescription
rowunknownYes

function

export function isGanttDependencyType(value: unknown): value is DependencyType;
ParameterTypeRequiredDefaultDescription
valueunknownYes

Related types: DependencyType

function

export function listGanttToolbarQuickWinActions(actions: GanttToolbarQuickWinActions): readonly GanttToolbarQuickWinAction[];
ParameterTypeRequiredDefaultDescription
actionsGanttToolbarQuickWinActionsYes

Related types: GanttToolbarQuickWinAction, GanttToolbarQuickWinActions

interface

export interface LockedPhaseValidatorOptions<TContext> {
readonly lockedPhaseIds: readonly string[];
readonly getPhaseId: (detail: GanttBeforeTaskChangeDetail, context: TContext) => string | null | undefined;
readonly actions?: readonly GanttBeforeTaskChangeAction[];
readonly message?: (phaseId: string) => string;
}
MemberType / returnRequiredDefaultDescription
lockedPhaseIdsreadonly string[]Yes
getPhaseId(detail: GanttBeforeTaskChangeDetail, context: TContext) => string | null | undefinedYes
actionsreadonly GanttBeforeTaskChangeAction[] | undefinedNo
message((phaseId: string) => string) | undefinedNo

Related types: GanttBeforeTaskChangeAction, GanttBeforeTaskChangeDetail

normalizeGanttDependencyDropdownAllowedTypes

Section titled “normalizeGanttDependencyDropdownAllowedTypes”

function

export function normalizeGanttDependencyDropdownAllowedTypes(allowedTypes: readonly DependencyType[] | undefined): readonly DependencyType[];
ParameterTypeRequiredDefaultDescription
allowedTypesreadonly DependencyType[] | undefinedYes

Related types: DependencyType

function

export function normalizeGanttDependencyDropdownValues(value: readonly GanttDependencyDropdownValue[], options: readonly GanttDependencyDropdownTaskOption[]): GanttDependencyDropdownValue[];
ParameterTypeRequiredDefaultDescription
valuereadonly GanttDependencyDropdownValue[]Yes
optionsreadonly GanttDependencyDropdownTaskOption[]Yes

Related types: GanttDependencyDropdownTaskOption, GanttDependencyDropdownValue

function

export function parseDependencyDropdownDisplayValue(displayValue: unknown, options: readonly GanttDependencyDropdownTaskOption[]): GanttDependencyDropdownValue[];
ParameterTypeRequiredDefaultDescription
displayValueunknownYes
optionsreadonly GanttDependencyDropdownTaskOption[]Yes

Related types: GanttDependencyDropdownTaskOption, GanttDependencyDropdownValue

interface

export interface PostgresStatement {
readonly text: string;
readonly values: readonly unknown[];
}
MemberType / returnRequiredDefaultDescription
textstringYes
valuesreadonly unknown[]Yes

function

export function printGanttContainer(target: Element | null | undefined, options: GanttPrintOptions = {}): GanttPrintResult;
ParameterTypeRequiredDefaultDescription
targetElement | null | undefinedYes
optionsGanttPrintOptionsNo{}

Related types: GanttPrintOptions, GanttPrintResult

constant

export const PROJECT_SNAPSHOT_TABLE: "gantt_project_snapshots";

class

Framework-neutral example for persisting project snapshots through GraphQL.

export class ProjectSnapshotGraphqlAdapter {
constructor(private readonly options: ProjectSnapshotGraphqlAdapterOptions);
load(request: ProjectSnapshotGraphqlRequestOptions = {}): Promise<ProjectSnapshot>;
save(project: ProjectSnapshot, request: ProjectSnapshotGraphqlRequestOptions = {}): Promise<void>;
}
MemberType / returnRequiredDefaultDescription
fetchImpltypeof fetchYes
load(request: ProjectSnapshotGraphqlRequestOptions = {})Promise<ProjectSnapshot>Yes
save(project: ProjectSnapshot, request: ProjectSnapshotGraphqlRequestOptions = {})Promise<void>Yes
execute(request: { readonly query: string; readonly variables?: Readonly<Record<string, unknown>>; readonly signal?: AbortSignal; })Promise<GraphqlResponsePayload>Yes
request(run: () => Promise<Response>)Promise<Response>Yes
readPayload(response: Response)Promise<GraphqlResponsePayload>Yes

Related types: ProjectSnapshot, ProjectSnapshotGraphqlAdapterOptions, ProjectSnapshotGraphqlRequestOptions

interface

export interface ProjectSnapshotGraphqlAdapterOptions {
/** GraphQL HTTP endpoint. */
readonly url: string;
/** Optional headers for authentication, tenancy, or content negotiation. */
readonly headers?: Readonly<Record<string, string>>;
/** Custom fetch implementation for tests, SSR, or framework adapters. */
readonly fetchImpl?: typeof fetch;
/** JSON indentation used for readable save payloads. */
readonly space?: number | string;
/** Query used by load(). Must return a serialized project snapshot string. */
readonly loadQuery?: string;
/** Mutation used by save(). Receives the serialized snapshot in `$snapshot`. */
readonly saveMutation?: string;
/** Response data field read by load(). */
readonly loadField?: string;
/** Response data field checked by save(). */
readonly saveField?: string;
}
MemberType / returnRequiredDefaultDescription
urlstringYesGraphQL HTTP endpoint.
headersReadonly<Record<string, string>> | undefinedNoOptional headers for authentication, tenancy, or content negotiation.
fetchImpltypeof fetch | undefinedNoCustom fetch implementation for tests, SSR, or framework adapters.
spacestring | number | undefinedNoJSON indentation used for readable save payloads.
loadQuerystring | undefinedNoQuery used by load(). Must return a serialized project snapshot string.
saveMutationstring | undefinedNoMutation used by save(). Receives the serialized snapshot in $snapshot.
loadFieldstring | undefinedNoResponse data field read by load().
saveFieldstring | undefinedNoResponse data field checked by save().

class

export class ProjectSnapshotGraphqlError extends Error {
constructor(public readonly code: ProjectSnapshotGraphqlErrorCode, message: string, public readonly details: ProjectSnapshotGraphqlErrorDetails = {});
}

Related types: ProjectSnapshotGraphqlErrorCode, ProjectSnapshotGraphqlErrorDetails

type

export type ProjectSnapshotGraphqlErrorCode =
| 'GRAPHQL_ERROR'
| 'HTTP_ERROR'
| 'INVALID_RESPONSE'
| 'INVALID_SNAPSHOT'
| 'NETWORK_ERROR';

interface

export interface ProjectSnapshotGraphqlErrorDetails {
readonly status?: number;
readonly payload?: unknown;
readonly cause?: unknown;
}
MemberType / returnRequiredDefaultDescription
statusnumber | undefinedNo
payloadunknownNo
causeunknownNo

interface

export interface ProjectSnapshotGraphqlRequestOptions {
readonly signal?: AbortSignal;
readonly variables?: Readonly<Record<string, unknown>>;
}
MemberType / returnRequiredDefaultDescription
signalAbortSignal | undefinedNo
variablesReadonly<Record<string, unknown>> | undefinedNo

interface

export interface ProjectSnapshotJsonRecipe {
readonly metadata: GanttPersistenceRecipeMetadata;
clone(project: ProjectSnapshot): ProjectSnapshot;
export(project: ProjectSnapshot, space?: number | string): string;
parse(json: string): ProjectSnapshotParseResult;
load(): Promise<ProjectSnapshot>;
save(project: ProjectSnapshot, space?: number | string): Promise<string>;
}
MemberType / returnRequiredDefaultDescription
metadataGanttPersistenceRecipeMetadataYes
clone(project: ProjectSnapshot)ProjectSnapshotYes
export(project: ProjectSnapshot, space?: number | string)stringYes
parse(json: string)ProjectSnapshotParseResultYes
load()Promise<ProjectSnapshot>Yes
save(project: ProjectSnapshot, space?: number | string)Promise<string>Yes

Related types: GanttPersistenceRecipeMetadata, ProjectSnapshot, ProjectSnapshotParseResult

interface

export interface ProjectSnapshotJsonRecipeOptions {
readonly readText?: () => string | Promise<string>;
readonly writeText?: (fileName: string, contents: string) => void | Promise<void>;
readonly fileName?: (project: ProjectSnapshot) => string;
}
MemberType / returnRequiredDefaultDescription
readText(() => string | Promise<string>) | undefinedNo
writeText((fileName: string, contents: string) => void | Promise<void>) | undefinedNo
fileName((project: ProjectSnapshot) => string) | undefinedNo

Related types: ProjectSnapshot

interface

export interface ProjectSnapshotPersistenceRecipe {
readonly metadata: GanttPersistenceRecipeMetadata;
load(request?: ProjectSnapshotRestRequestOptions | ProjectSnapshotGraphqlRequestOptions): Promise<ProjectSnapshot>;
save(request?: ProjectSnapshotRestRequestOptions | ProjectSnapshotGraphqlRequestOptions): Promise<void>;
}
MemberType / returnRequiredDefaultDescription
metadataGanttPersistenceRecipeMetadataYes
load(request?: ProjectSnapshotRestRequestOptions | ProjectSnapshotGraphqlRequestOptions)Promise<ProjectSnapshot>Yes
save(request?: ProjectSnapshotRestRequestOptions | ProjectSnapshotGraphqlRequestOptions)Promise<void>Yes

Related types: GanttPersistenceRecipeMetadata, ProjectSnapshot, ProjectSnapshotGraphqlRequestOptions, ProjectSnapshotRestRequestOptions

class

export class ProjectSnapshotPostgresError extends Error {
constructor(public readonly code: ProjectSnapshotPostgresErrorCode, message: string, public readonly details: ProjectSnapshotPostgresErrorDetails = {});
}

Related types: ProjectSnapshotPostgresErrorCode, ProjectSnapshotPostgresErrorDetails

type

export type ProjectSnapshotPostgresErrorCode =
| 'INVALID_IDENTIFIER'
| 'INVALID_SNAPSHOT'
| 'QUERY_ERROR';

interface

export interface ProjectSnapshotPostgresErrorDetails {
readonly cause?: unknown;
readonly payload?: unknown;
}
MemberType / returnRequiredDefaultDescription
causeunknownNo
payloadunknownNo

interface

export interface ProjectSnapshotPostgresOptions {
readonly tableName?: string;
}
MemberType / returnRequiredDefaultDescription
tableNamestring | undefinedNo

interface

export interface ProjectSnapshotPostgresRecipe {
readonly metadata: GanttPersistenceRecipeMetadata;
createTable(): Promise<void>;
load(projectId: string): Promise<ProjectSnapshot | null>;
save(): Promise<ProjectSnapshot>;
buildReportingStatement(projectId: string): PostgresStatement;
}
MemberType / returnRequiredDefaultDescription
metadataGanttPersistenceRecipeMetadataYes
createTable()Promise<void>Yes
load(projectId: string)Promise<ProjectSnapshot | null>Yes
save()Promise<ProjectSnapshot>Yes
buildReportingStatement(projectId: string)PostgresStatementYes

Related types: GanttPersistenceRecipeMetadata, PostgresStatement, ProjectSnapshot

interface

export interface ProjectSnapshotPostgresRow {
readonly project_id: string;
readonly version: string;
readonly snapshot: unknown;
readonly updated_at: string;
}
MemberType / returnRequiredDefaultDescription
project_idstringYes
versionstringYes
snapshotunknownYes
updated_atstringYes

class

Framework-neutral example for persisting project snapshots through REST.

export class ProjectSnapshotRestAdapter {
constructor(private readonly options: ProjectSnapshotRestAdapterOptions);
load(request: ProjectSnapshotRestRequestOptions = {}): Promise<ProjectSnapshot>;
save(project: ProjectSnapshot, request: ProjectSnapshotRestRequestOptions = {}): Promise<void>;
}
MemberType / returnRequiredDefaultDescription
fetchImpltypeof fetchYes
load(request: ProjectSnapshotRestRequestOptions = {})Promise<ProjectSnapshot>Yes
save(project: ProjectSnapshot, request: ProjectSnapshotRestRequestOptions = {})Promise<void>Yes
request(run: () => Promise<Response>)Promise<Response>Yes
assertOk(response: Response)Promise<void>Yes

Related types: ProjectSnapshot, ProjectSnapshotRestAdapterOptions, ProjectSnapshotRestRequestOptions

interface

export interface ProjectSnapshotRestAdapterOptions {
/** Endpoint that returns and accepts a serialized project snapshot. */
readonly url: string;
/** Optional headers for authentication, tenancy, or content negotiation. */
readonly headers?: Readonly<Record<string, string>>;
/** Custom fetch implementation for tests, SSR, or framework adapters. */
readonly fetchImpl?: typeof fetch;
/** JSON indentation used for readable save payloads. */
readonly space?: number | string;
}
MemberType / returnRequiredDefaultDescription
urlstringYesEndpoint that returns and accepts a serialized project snapshot.
headersReadonly<Record<string, string>> | undefinedNoOptional headers for authentication, tenancy, or content negotiation.
fetchImpltypeof fetch | undefinedNoCustom fetch implementation for tests, SSR, or framework adapters.
spacestring | number | undefinedNoJSON indentation used for readable save payloads.

class

export class ProjectSnapshotRestError extends Error {
constructor(public readonly code: ProjectSnapshotRestErrorCode, message: string, public readonly details: ProjectSnapshotRestErrorDetails = {});
}

Related types: ProjectSnapshotRestErrorCode, ProjectSnapshotRestErrorDetails

type

export type ProjectSnapshotRestErrorCode =
| 'HTTP_ERROR'
| 'INVALID_SNAPSHOT'
| 'NETWORK_ERROR';

interface

export interface ProjectSnapshotRestErrorDetails {
readonly status?: number;
readonly payload?: unknown;
readonly cause?: unknown;
}
MemberType / returnRequiredDefaultDescription
statusnumber | undefinedNo
payloadunknownNo
causeunknownNo

interface

export interface ProjectSnapshotRestRequestOptions {
readonly signal?: AbortSignal;
}
MemberType / returnRequiredDefaultDescription
signalAbortSignal | undefinedNo

interface

export interface ProjectSnapshotSqlExecutor {
query<T>(statement: PostgresStatement): Promise<{ readonly rows: readonly T[] }>;
}
MemberType / returnRequiredDefaultDescription
query(statement: PostgresStatement)Promise<{ readonly rows: readonly T[] }>Yes

Related types: PostgresStatement

interface

export interface ProjectSnapshotState {
getProject(): ProjectSnapshot;
setProject(project: ProjectSnapshot): void;
}
MemberType / returnRequiredDefaultDescription
getProject()ProjectSnapshotYes
setProject(project: ProjectSnapshot)voidYes

Related types: ProjectSnapshot

interface

export interface ProjectSnapshotStorageRecipe {
readonly metadata: GanttPersistenceRecipeMetadata;
load(projectId: string): Promise<ProjectSnapshot | null>;
save(): Promise<ProjectSnapshot>;
}
MemberType / returnRequiredDefaultDescription
metadataGanttPersistenceRecipeMetadataYes
load(projectId: string)Promise<ProjectSnapshot | null>Yes
save()Promise<ProjectSnapshot>Yes

Related types: GanttPersistenceRecipeMetadata, ProjectSnapshot

class

Framework-neutral Supabase-style example for storing ProjectSnapshot JSON. The client shape is intentionally local and minimal, so no Supabase package is required by the Gantt package or by consumers using another data client.

export class ProjectSnapshotSupabaseAdapter {
constructor(private readonly client: SupabaseLikeClient<ProjectSnapshotPostgresRow>, private readonly options: ProjectSnapshotPostgresOptions = {});
load(projectId: string): Promise<ProjectSnapshot | null>;
save(project: ProjectSnapshot): Promise<ProjectSnapshot>;
}
MemberType / returnRequiredDefaultDescription
load(projectId: string)Promise<ProjectSnapshot | null>Yes
save(project: ProjectSnapshot)Promise<ProjectSnapshot>Yes

Related types: ProjectSnapshot, ProjectSnapshotPostgresOptions, ProjectSnapshotPostgresRow, SupabaseLikeClient

function

export function resolveHiddenColumnsFromToolbarSelection(selectedValues: string | string[], allProps: string[], previousHiddenColumns: string[]): string[];
ParameterTypeRequiredDefaultDescription
selectedValuesstring | string[]Yes
allPropsstring[]Yes
previousHiddenColumnsstring[]Yes

interface

export interface ResourceOverallocationSummaryRecipe {
readonly summary: ResourceOverallocationSummary;
readonly hasOverallocations: boolean;
readonly badgeLabel: string;
readonly worstResourceId: string | null;
}
MemberType / returnRequiredDefaultDescription
summaryResourceOverallocationSummaryYes
hasOverallocationsbooleanYes
badgeLabelstringYes
worstResourceIdstring | nullYes

interface

export interface RevoGridCsvExportPlugin {
exportFile(options?: GanttCsvExportOptions): Promise<void>;
}
MemberType / returnRequiredDefaultDescription
exportFile(options?: GanttCsvExportOptions)Promise<void>Yes

Related types: GanttCsvExportOptions

interface

export interface RoleGuardValidatorOptions<TContext extends GanttValidationContext> {
readonly policy: GanttRoleEditabilityPolicy;
readonly getRoleContext?: (
detail: GanttBeforeTaskChangeDetail,
context: TContext,
) => GanttRoleEditabilityContext;
readonly message?: string;
}
MemberType / returnRequiredDefaultDescription
policyGanttRoleEditabilityPolicyYes
getRoleContext((detail: GanttBeforeTaskChangeDetail, context: TContext) => GanttRoleEditabilityContext) | undefinedNo
messagestring | undefinedNo

Related types: GanttBeforeTaskChangeDetail, GanttValidationContext

function

export function scrollGanttToToday(grid: HTMLRevoGridElement, options: GanttTodayNavigationOptions = {}): Promise<boolean>;
ParameterTypeRequiredDefaultDescription
gridHTMLRevoGridElementYes
optionsGanttTodayNavigationOptionsNo{}

Related types: GanttTodayNavigationOptions

interface

export interface SupabaseLikeClient<T> {
from(table: string): SupabaseLikeTable<T>;
}
MemberType / returnRequiredDefaultDescription
from(table: string)SupabaseLikeTable<T>Yes

Related types: SupabaseLikeTable

interface

export interface SupabaseLikeError {
readonly message: string;
readonly code?: string;
readonly details?: string;
readonly hint?: string;
}
MemberType / returnRequiredDefaultDescription
messagestringYes
codestring | undefinedNo
detailsstring | undefinedNo
hintstring | undefinedNo

interface

export interface SupabaseLikeFilterBuilder<T> {
eq(column: string, value: unknown): SupabaseLikeMaybeSingleQuery<T>;
}
MemberType / returnRequiredDefaultDescription
eq(column: string, value: unknown)SupabaseLikeMaybeSingleQuery<T>Yes

Related types: SupabaseLikeMaybeSingleQuery

interface

export interface SupabaseLikeMaybeSingleQuery<T> {
maybeSingle(): Promise<SupabaseLikeResult<T | null>>;
}
MemberType / returnRequiredDefaultDescription
maybeSingle()Promise<SupabaseLikeResult<T | null>>Yes

Related types: SupabaseLikeResult

interface

export interface SupabaseLikeResult<T> {
readonly data: T;
readonly error: SupabaseLikeError | null;
}
MemberType / returnRequiredDefaultDescription
dataTYes
errorSupabaseLikeError | nullYes

Related types: SupabaseLikeError

interface

export interface SupabaseLikeSingleQuery<T> {
single(): Promise<SupabaseLikeResult<T>>;
}
MemberType / returnRequiredDefaultDescription
single()Promise<SupabaseLikeResult<T>>Yes

Related types: SupabaseLikeResult

interface

export interface SupabaseLikeTable<T> {
select(columns?: string): SupabaseLikeFilterBuilder<T>;
upsert(row: T, options?: { readonly onConflict?: string }): SupabaseLikeUpsertBuilder<T>;
}
MemberType / returnRequiredDefaultDescription
select(columns?: string)SupabaseLikeFilterBuilder<T>Yes
upsert(row: T, options?: { readonly onConflict?: string })SupabaseLikeUpsertBuilder<T>Yes

Related types: SupabaseLikeFilterBuilder, SupabaseLikeUpsertBuilder

interface

export interface SupabaseLikeUpsertBuilder<T> {
select(columns?: string): SupabaseLikeSingleQuery<T>;
}
MemberType / returnRequiredDefaultDescription
select(columns?: string)SupabaseLikeSingleQuery<T>Yes

Related types: SupabaseLikeSingleQuery

interface

export interface TaskDetailPopoverRecipe {
readonly model: TaskDetailPopoverModel;
readonly sectionTitles: readonly string[];
readonly warningMessages: readonly string[];
}
MemberType / returnRequiredDefaultDescription
modelTaskDetailPopoverModelYes
sectionTitlesreadonly string[]Yes
warningMessagesreadonly string[]Yes

interface

export interface TaskDetailPopoverRecipeOptions {
readonly row: GanttGridRow;
readonly task?: TaskEntity;
readonly resources?: readonly ResourceEntity[];
readonly assignments?: readonly AssignmentEntity[];
}
MemberType / returnRequiredDefaultDescription
rowGanttGridRowYes
taskTaskEntity | undefinedNo
resourcesreadonly ResourceEntity[] | undefinedNo
assignmentsreadonly AssignmentEntity[] | undefinedNo

Related types: AssignmentEntity, GanttGridRow, ResourceEntity, TaskEntity

function

Toggle critical-path highlighting on the grid’s Gantt visual config.

Returns the next visibility state, or undefined when the grid has no Gantt config to update.

export function toggleGanttCriticalPath(grid: HTMLRevoGridElement): boolean | undefined;
ParameterTypeRequiredDefaultDescription
gridHTMLRevoGridElementYes

function

export function toProjectSnapshotRow(project: ProjectSnapshot): ProjectSnapshotPostgresRow;
ParameterTypeRequiredDefaultDescription
projectProjectSnapshotYes

Related types: ProjectSnapshot, ProjectSnapshotPostgresRow