Skip to content

Editors, Toolbar, And Export

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

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

Convert scheduler diagnostics or projected row warnings into grouped data for a dependency validation panel. This helper is intentionally presentation-free.

export function buildDependencyValidationSummary(input: DependencyValidationSummaryInput = {}): DependencyValidationSummary;
ParameterTypeRequiredDefaultDescription
inputDependencyValidationSummaryInputNo{}

Related types: DependencyValidationSummary, DependencyValidationSummaryInput

function

Convert projected resource-planning rows, raw load summaries, or scheduler over-allocation diagnostics into grouped data for an overload summary panel. The return value is presentation-free so UI layers can render it however they need.

export function buildResourceOverallocationSummary(input: ResourceOverallocationSummaryInput = {}): ResourceOverallocationSummary;
ParameterTypeRequiredDefaultDescription
inputResourceOverallocationSummaryInputNo{}

Related types: ResourceOverallocationSummary, ResourceOverallocationSummaryInput

function

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

Related types: BaselineSnapshot

function

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

Related types: AssignResourceMenuItemOptions

function

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

Related types: DeleteTaskMenuItemOptions

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 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

export function createGanttRoleEditabilityHelpers(policy: GanttRoleEditabilityPolicy): GanttRoleEditabilityHelpers;
ParameterTypeRequiredDefaultDescription
policyGanttRoleEditabilityPolicyYes—

Related types: GanttRoleEditabilityPolicy

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

Creates a framework-agnostic data model for a task detail popover.

The helper intentionally returns plain sections and fields only. Rendering, interaction, positioning, and DOM ownership stay with the consuming UI.

export function createTaskDetailPopoverModel(options: CreateTaskDetailPopoverModelOptions): TaskDetailPopoverModel;
ParameterTypeRequiredDefaultDescription
optionsCreateTaskDetailPopoverModelOptionsYes—

Related types: TaskDetailPopoverModel

function

export function createTaskEditorDialogLocaleText(localeText: GanttTaskEditorDialogLocaleTextOptions | undefined, inheritedLocaleText?: GanttTaskEditorDialogLocaleTextOptions): GanttTaskEditorDialogLocaleText;
ParameterTypeRequiredDefaultDescription
localeTextGanttTaskEditorDialogLocaleTextOptions | undefinedYes—
inheritedLocaleTextGanttTaskEditorDialogLocaleTextOptions | undefinedNo—

Related types: GanttTaskEditorDialogLocaleText, GanttTaskEditorDialogLocaleTextOptions

function

export function createTaskEditorFormValues(task: TaskEntity, resources: readonly ResourceEntity[] = [], assignments: readonly AssignmentEntity[] = [], options: Pick<NormalizeTaskEditorSubmitOptions, 'durationSettings' | 'calendars'> = {}): TaskEditorFormValues;
ParameterTypeRequiredDefaultDescription
taskTaskEntityYes—
resourcesreadonly ResourceEntity[]No[]
assignmentsreadonly AssignmentEntity[]No[]
optionsPick<NormalizeTaskEditorSubmitOptions, "durationSettings" | "calendars">No{}

Related types: AssignmentEntity, NormalizeTaskEditorSubmitOptions, ResourceEntity, TaskEditorFormValues, TaskEntity

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/gantt';
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 DependencyValidationSummary {
readonly totalCount: number;
readonly conflictCount: number;
readonly warningCount: number;
readonly groups: readonly DependencyValidationSummaryGroup[];
}
MemberType / returnRequiredDefaultDescription
totalCountnumberYes—
conflictCountnumberYes—
warningCountnumberYes—
groupsreadonly DependencyValidationSummaryGroup[]Yes—

interface

export interface DependencyValidationSummaryInput {
readonly conflicts?: readonly SchedulerConflict[];
readonly issues?: readonly SchedulerIssue[];
readonly rows?: readonly DependencyValidationSummaryRow[];
}
MemberType / returnRequiredDefaultDescription
conflictsreadonly SchedulerConflict[] | undefinedNo—
issuesreadonly SchedulerIssue[] | undefinedNo—
rowsreadonly DependencyValidationSummaryRow[] | undefinedNo—

Related types: SchedulerConflict, SchedulerIssue

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

constant

export const GANTT_TOOLBAR_SELECT_ALL_COLUMNS: "__select_all__";

interface

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

Related types: BaselineSnapshot

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 | ContextMenuItemStateResolver | 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 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 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 GanttExcelExportRow {
readonly Project: string;
readonly WBS: string;
readonly 'Task ID': string;
readonly 'Parent ID': string;
readonly Name: string;
readonly 'Task Type': string;
readonly Status: string;
readonly 'Workflow Status': string;
readonly 'Start Date': string;
readonly 'Finish Date': string;
readonly Duration: string;
readonly Work: string;
readonly 'Remaining Duration': string;
readonly '% Complete': string;
readonly Cost: string | number | '';
readonly Assignees: string;
readonly Predecessors: string;
readonly Successors: string;
readonly 'Task Mode': string;
readonly 'Scheduled By': string;
readonly Constraint: string;
readonly 'Constraint Date': string;
readonly Deadline: string;
readonly 'Actual Start': string;
readonly 'Actual Finish': string;
readonly 'Effort Mode': string;
readonly 'Effort Driven': string;
readonly Inactive: string;
readonly Priority: number | '';
readonly 'Can Level': string;
readonly 'Leveling Delay (days)': number | '';
readonly 'Total Slack (days)': number | '';
readonly Critical: string;
readonly 'Early Start': string;
readonly 'Early Finish': string;
readonly 'Late Start': string;
readonly 'Late Finish': string;
readonly 'Start Variance (days)': number | '';
readonly 'Finish Variance (days)': number | '';
readonly 'Duration Variance': string;
readonly 'Progress Variance (%)': number | '';
readonly Calendar: string;
readonly Tags: string;
readonly Notes: string;
readonly 'Scheduling Warnings': string;
}
MemberType / returnRequiredDefaultDescription
ProjectstringYes—
WBSstringYes—
'Task ID'stringYes—
'Parent ID'stringYes—
NamestringYes—
'Task Type'stringYes—
StatusstringYes—
'Workflow Status'stringYes—
'Start Date'stringYes—
'Finish Date'stringYes—
DurationstringYes—
WorkstringYes—
'Remaining Duration'stringYes—
'% Complete'stringYes—
Coststring | numberYes—
AssigneesstringYes—
PredecessorsstringYes—
SuccessorsstringYes—
'Task Mode'stringYes—
'Scheduled By'stringYes—
ConstraintstringYes—
'Constraint Date'stringYes—
DeadlinestringYes—
'Actual Start'stringYes—
'Actual Finish'stringYes—
'Effort Mode'stringYes—
'Effort Driven'stringYes—
InactivestringYes—
Prioritynumber | ""Yes—
'Can Level'stringYes—
'Leveling Delay (days)'number | ""Yes—
'Total Slack (days)'number | ""Yes—
CriticalstringYes—
'Early Start'stringYes—
'Early Finish'stringYes—
'Late Start'stringYes—
'Late Finish'stringYes—
'Start Variance (days)'number | ""Yes—
'Finish Variance (days)'number | ""Yes—
'Duration Variance'stringYes—
'Progress Variance (%)'number | ""Yes—
CalendarstringYes—
TagsstringYes—
NotesstringYes—
'Scheduling Warnings'stringYes—

interface

export interface GanttExcelMappingOptions {
/**
* Resource-planning rows contain load bar metadata rather than task data.
* They are skipped by default so task exports do not leak timeline layout fields.
*/
readonly includeResourceRows?: boolean;
}
MemberType / returnRequiredDefaultDescription
includeResourceRowsboolean | undefinedNo—Resource-planning rows contain load bar metadata rather than task data. They are skipped by default so task exports do not leak timeline layout fields.

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
widthnumberYes—The 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;
syncTimelineScrollPosition(coordinate: number): void;
destroy(): void;
}
MemberType / returnRequiredDefaultDescription
handleHTMLDivElementYes—
ghostHTMLDivElementYes—
taskListScrollPanelScrollElementYes—
timelineScrollPanelScrollElementYes—
rAFIdnumber | nullYesnull
dragRafIdnumber | nullYesnull
dragWidthnumber | nullYesnull
dragStartWidthnumber | nullYesnull
dragStartDividerLeftnumber | nullYesnull
dragColPinEndHTMLElement | nullYesnull
dragMovedbooleanYesfalse
isDraggingbooleanYesfalse
isDestroyedbooleanYesfalse
pendingInitialWidthstring | number | nullYesnull
fullWidthBecauseNoTaskColumnsbooleanYesfalse
desiredPanelWidthnumber | nullYesnull
lastTaskListPanelWidthnumber | nullYesnull
lastTaskListViewportWidthnumber | nullYesnull
lastAppliedTaskListViewportWidthnumber | nullYesnull
pendingPanelForward{ side: PanelScrollSide; coordinate: number; } | nullYesnull
leftEdgeSyncGenerationRecord<PanelScrollSide, number>Yes{ 'task-list': 0, timeline: 0, }
setPanelWidth(width: number)voidYes—Programmatically set the gantt panel width.
getPanelWidth()number | nullYes—Returns the current gantt panel (colPinEnd) width in pixels, or null if the viewport is not yet rendered.
syncTimelineScrollPosition(coordinate: number)voidYes—Mirror a programmatic timeline viewport scroll into the visible panel scrollbar without forwarding the change back through the viewport.
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 pinEndRect = colPinEnd.getBoundingClientRect(); const gridRect = this.revogrid.getBoundingClientRect(); const startWidth = this.getCommittedPanelWidth(colPinEnd, pinEndRect.width); this.dragWidth = startWidth; this.dragStartWidth = startWidth; this.dragStartDividerLeft = pinEndRect.left - gridRect.left; this.dragMoved = false; 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; this.dragMoved ||= delta !== 0; const nextWidth = this.clampWidth(startWidth + delta, colPinEnd); this.dragWidth = nextWidth; this.scheduleDragUpdate(); }; const finishDrag = (commit: boolean): void => { if (commit && this.dragMoved) { this.applyPendingDragWidth(); } this.isDragging = false; this.dragColPinEnd = null; this.dragWidth = null; this.dragStartWidth = null; this.dragStartDividerLeft = null; this.dragMoved = false; 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', onPointerCancel); this.schedulePositionUpdate(); }; const onPointerUp = (): void => finishDrag(true); const onPointerCancel = (): void => finishDrag(false); this.handle.addEventListener('pointermove', onPointerMove); this.handle.addEventListener('pointerup', onPointerUp); this.handle.addEventListener('pointercancel', onPointerCancel); }
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—
getCommittedPanelWidth(colPinEnd: HTMLElement, renderedWidth: number)numberYes—
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 => { const generation = this.invalidateLeftEdgeSync('task-list'); this.syncViewportLeftEdgeFromPanel('task-list'); this.scheduleViewportLeftEdgeSyncFromPanel('task-list', generation); }
onTimelinePanelNativeScroll() => voidYes(): void => { const generation = this.invalidateLeftEdgeSync('timeline'); this.syncViewportLeftEdgeFromPanel('timeline'); this.scheduleViewportLeftEdgeSyncFromPanel('timeline', generation); }
syncViewportLeftEdgeFromPanel(side: PanelScrollSide)voidYes—
invalidateLeftEdgeSync(side: PanelScrollSide)numberYes—
scheduleViewportLeftEdgeSyncFromPanel(side: PanelScrollSide, generation: number)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 | undefinedNo—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.

interface

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

Related types: GanttTimelineNavigationOptions

interface

export interface GanttRoleEditabilityContext {
readonly roles: readonly GanttRoleId[] | GanttRoleId | null | undefined;
}
MemberType / returnRequiredDefaultDescription
rolesstring | readonly string[] | null | undefinedYes—

interface

export interface GanttRoleEditabilityPolicy {
/**
* Permission list per role. Multiple active roles are merged additively.
*/
readonly roles: Readonly<Record<GanttRoleId, readonly GanttEditPermission[]>>;
/**
* Decision for users with no matching permission. Defaults to `deny`.
*/
readonly fallback?: 'allow' | 'deny';
}
MemberType / returnRequiredDefaultDescription
rolesReadonly<Record<string, readonly GanttEditPermission[]>>Yes—Permission list per role. Multiple active roles are merged additively.
fallback"allow" | "deny" | undefinedNo—Decision for users with no matching permission. Defaults to deny.

type

export type GanttTaskEditorControlId =
| 'header'
| 'title'
| 'description'
| 'close'
| 'tabs'
| 'validation'
| 'preview'
| 'cancel'
/** @deprecated Use `cancel`. */
| 'reset'
| 'apply'
| 'footer';

function

export function GanttTaskEditorDialog({
grid,
task,
tasks,
resources,
assignments,
dependencies,
project,
allowedTaskTypes,
calendars,
options,
open,
status,
onClose,
fieldReadonly = EMPTY_FIELD_READONLY,
onSubmit,
}: GanttTaskEditorDialogProps): h.JSX.Element | null;
ParameterTypeRequiredDefaultDescription
{ grid, task, tasks, resources, assignments, dependencies, project, allowedTaskTypes, calendars, options, open, status, onClose, fieldReadonly = EMPTY_FIELD_READONLY, 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 cancelLabel: string;
/** @deprecated Use `cancelLabel`. */
readonly resetLabel: string;
readonly menuItemName: string;
readonly tabListAriaLabel: string;
readonly readOnlyLabel: string;
readonly noResourcesAvailable: string;
readonly noAssignedResources: string;
readonly assignedResourcesAriaLabel: string;
readonly colorPaletteAriaLabel: string;
readonly defaultColorOption: 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—
cancelLabelstringYes—
resetLabelstringYes—
menuItemNamestringYes—
tabListAriaLabelstringYes—
readOnlyLabelstringYes—
noResourcesAvailablestringYes—
noAssignedResourcesstringYes—
assignedResourcesAriaLabelstringYes—
colorPaletteAriaLabelstringYes—
defaultColorOptionstringYes—
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, TaskEditorFieldId

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, TaskEditorFieldId

interface

export interface GanttTaskEditorDialogOptions {
readonly fields?: readonly TaskEditorFieldId[];
readonly localeText?: GanttTaskEditorDialogLocaleTextOptions;
readonly menuItemName?: string;
readonly title?: string;
readonly description?: string;
readonly applyLabel?: string;
/** Label for the footer action that discards drafts and closes the dialog. */
readonly cancelLabel?: string;
/** @deprecated Use `cancelLabel`. */
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;
/**
* Overrides inherited task-table editability for packaged dialog fields.
* `true` enables a field and `false` makes it read-only. Gantt-wide read-only
* mode and `resources: false` remain hard restrictions.
*/
readonly fieldEditability?: Partial<Record<GanttTaskEditorFieldEditabilityId, boolean>>;
/**
* Configures task colors in the packaged editor. Omit to inherit the Gantt
* context-menu palette; set to `false` to remove the editor field.
*/
readonly colorPalette?: GanttColorPaletteConfig | false;
/**
* 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—
cancelLabelstring | undefinedNo—Label for the footer action that discards drafts and closes the dialog.
resetLabelstring | undefinedNo—
closeLabelstring | undefinedNo—
contextMenuboolean | undefinedNo—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.
openOnCreateboolean | undefinedNo—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.
resourcesfalse | GanttTaskEditorDialogResourcesOptions | undefinedNo—Controls the built-in resource assignment picker. Set to false to keep the resources field read-only.
fieldEditabilityPartial<Record<GanttTaskEditorFieldEditabilityId, boolean>> | undefinedNo—Overrides inherited task-table editability for packaged dialog fields. true enables a field and false makes it read-only. Gantt-wide read-only mode and resources: false remain hard restrictions.
colorPalettefalse | GanttColorPaletteConfig | undefinedNo—Configures task colors in the packaged editor. Omit to inherit the Gantt context-menu palette; set to false to remove the editor field.
previewboolean | undefinedNo—Shows 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: GanttColorPaletteConfig, GanttTaskEditorDialogCustomization, GanttTaskEditorDialogLocaleTextOptions, GanttTaskEditorDialogResourcesOptions, GanttTaskEditorDialogSubmitContext, GanttTaskEditorFieldEditabilityId, TaskEditorFieldId, 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
hostHTMLDivElementYes—
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—
getFieldReadonly(task: TaskEntity)Partial<Record<GanttTaskEditorFieldEditabilityId, boolean>>Yes—
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: TaskEditorFormValues, 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, TaskEditorFormValues, 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, TaskEditorFormValues

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, TaskEditorFormValues

type

Packaged task-dialog controls that can inherit task-table editability.

export type GanttTaskEditorFieldEditabilityId =
| TaskEditorFieldId
| 'predecessors'
| 'successors';

Related types: TaskEditorFieldId

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, TaskEditorFieldId

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 GanttTimelineNavigationOptions {
align?: number;
}
MemberType / returnRequiredDefaultDescription
alignnumber | undefinedNo—

interface

export interface GanttTimelineNavigationRuntime {
providers?: PluginProviders;
scrollToTimelineCoordinate?: (position: { x: number }) => Promise<void> | void;
scrollToToday?: () => Promise<void> | void;
fitToProject?: () => Promise<void> | void;
getZoomLevel?: () => { id?: string } | null | undefined;
setZoomLevel?: (levelId: string) => boolean;
}
MemberType / returnRequiredDefaultDescription
providersPluginProviders | undefinedNo—
scrollToTimelineCoordinate((position: { x: number; }) => Promise<void> | void) | undefinedNo—
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
propstringYes—Property name matching a task-table column (e.g. 'wbs', 'status').
labelstringYes—Human-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
gridHTMLRevoGridElementYes—The revo-grid element the toolbar should control.
columnsGanttToolbarColumnOption[] | undefinedNo—Column options to show in the visibility dropdown. If omitted, no column dropdown is rendered.
visualsGanttToolbarVisuals | undefinedNo—Initial state of the visual/scheduling toggles. When omitted, values are read from the current grid.gantt.visuals config.
controlsGanttToolbarControls | undefinedNo—Per-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—

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 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

function

Maps projected Gantt task grid rows to spreadsheet-ready row objects.

This function intentionally uses an allowlist of user-facing columns instead of spreading GanttGridRow, because projected rows contain renderer and timeline layout fields that should never be serialized to Excel.

export function mapGanttRowsToExcelExport(rows: readonly GanttGridRow[], project: ProjectSnapshot, options: GanttExcelMappingOptions = {}): GanttExcelExportRow[];
ParameterTypeRequiredDefaultDescription
rowsreadonly GanttGridRow[]Yes—
projectProjectSnapshotYes—
optionsGanttExcelMappingOptionsNo{}

Related types: GanttExcelExportRow, GanttExcelMappingOptions, GanttGridRow, ProjectSnapshot

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 normalizeTaskEditorSubmit(task: TaskEntity, values: TaskEditorFormValues, options: NormalizeTaskEditorSubmitOptions = {}): TaskEditorSubmitResult;
ParameterTypeRequiredDefaultDescription
taskTaskEntityYes—
valuesPartial<Record<TaskEditorFieldId, unknown>>Yes—
optionsNormalizeTaskEditorSubmitOptionsNo{}

Related types: NormalizeTaskEditorSubmitOptions, TaskEditorFormValues, TaskEditorSubmitResult, TaskEntity

interface

export interface NormalizeTaskEditorSubmitOptions {
/**
* When false, fields equal to the current task value are omitted from the
* returned patch. Defaults to false so forms can submit their whole state.
*/
readonly includeUnchanged?: boolean;
/** Calendar ids accepted by calendarId edits. Omit for presentation-only/standalone normalization. */
readonly calendars?: readonly CalendarEntity[];
/** Project duration conversion settings used for unitless values and date-derived duration. */
readonly durationSettings?: import('../../core').DurationSettings;
/** Task kinds accepted for type changes. Omit to accept every supported task kind. */
readonly allowedTaskTypes?: readonly TaskType[];
/** Gantt labels used to resolve validation messages. */
readonly labels?: GanttRuntimeLabelsConfig;
}
MemberType / returnRequiredDefaultDescription
includeUnchangedboolean | undefinedNo—When false, fields equal to the current task value are omitted from the returned patch. Defaults to false so forms can submit their whole state.
calendarsreadonly CalendarEntity[] | undefinedNo—Calendar ids accepted by calendarId edits. Omit for presentation-only/standalone normalization.
durationSettingsDurationSettings | undefinedNo—Project duration conversion settings used for unitless values and date-derived duration.
allowedTaskTypesreadonly TaskType[] | undefinedNo—Task kinds accepted for type changes. Omit to accept every supported task kind.
labelsGanttRuntimeLabelsConfig | undefinedNo—Gantt labels used to resolve validation messages.

Related types: GanttRuntimeLabelsConfig, TaskType

function

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

Related types: GanttDependencyDropdownTaskOption, GanttDependencyDropdownValue

function

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

interface

export interface ResourceOverallocationLoadSummary {
readonly resourceId: ResourceId;
readonly resourceName?: string;
readonly resourceRole?: string;
readonly planning?: ResourcePlanningRowData;
readonly segments?: readonly ResourceLoadSegment[];
}
MemberType / returnRequiredDefaultDescription
resourceIdstringYes—
resourceNamestring | undefinedNo—
resourceRolestring | undefinedNo—
planningResourcePlanningRowData | undefinedNo—
segmentsreadonly ResourceLoadSegment[] | undefinedNo—

Related types: ResourceId, ResourceLoadSegment, ResourcePlanningRowData

interface

export interface ResourceOverallocationSummary {
readonly totalCount: number;
readonly resourceCount: number;
readonly peakOverloadUnits: number;
readonly groups: readonly ResourceOverallocationSummaryGroup[];
}
MemberType / returnRequiredDefaultDescription
totalCountnumberYes—
resourceCountnumberYes—
peakOverloadUnitsnumberYes—
groupsreadonly ResourceOverallocationSummaryGroup[]Yes—

interface

export interface ResourceOverallocationSummaryInput {
readonly conflicts?: readonly SchedulerConflict[];
readonly rows?: readonly ResourceOverallocationSummaryRow[];
readonly loadSummaries?: readonly ResourceOverallocationLoadSummary[];
}
MemberType / returnRequiredDefaultDescription
conflictsreadonly SchedulerConflict[] | undefinedNo—
rowsreadonly ResourceOverallocationSummaryRow[] | undefinedNo—
loadSummariesreadonly ResourceOverallocationLoadSummary[] | undefinedNo—

Related types: ResourceOverallocationLoadSummary, SchedulerConflict

interface

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

Related types: GanttCsvExportOptions

function

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

Related types: GanttTodayNavigationOptions

constant

export const TASK_EDITOR_FIELD_SCHEMA: readonly [{ readonly id: "name"; readonly label: "Task Name"; readonly kind: "text"; readonly taskField: "name"; readonly updateField: "name"; }, { readonly id: "workflowStatus"; readonly label: "Workflow Status"; readonly kind: "select"; readonly taskField: "workflowStatus"; readonly updateField: "workflowStatus"; readonly options: readonly TaskEditorFieldOption<TaskWorkflowStatus>[]; }, { readonly id: "type"; readonly label: "Task Kind"; readonly kind: "select"; readonly taskField: "type"; readonly updateField: "type"; readonly options: readonly TaskEditorFieldOption<TaskType>[]; }, { readonly id: "startDate"; readonly label: "Start"; readonly kind: "date"; readonly taskField: "startDate"; readonly updateField: "startDate"; }, { readonly id: "endDate"; readonly label: "Finish"; readonly kind: "date"; readonly taskField: "endDate"; readonly updateField: "endDate"; }, { readonly id: "duration"; readonly label: "Duration"; readonly kind: "duration"; readonly taskField: "duration"; readonly updateField: "duration"; readonly min: 0; readonly step: 1; }, { readonly id: "progressPercent"; readonly label: "Progress"; readonly kind: "percent"; readonly taskField: "progressPercent"; readonly updateField: "progressPercent"; readonly min: 0; readonly max: 100; readonly step: 1; }, { readonly id: "color"; readonly label: "Color"; readonly kind: "color"; readonly taskField: "color"; readonly updateField: "color"; }, { readonly id: "constraintType"; readonly label: "Constraint"; readonly kind: "select"; readonly taskField: "constraintType"; readonly updateField: "constraintType"; readonly options: readonly TaskEditorFieldOption<TaskConstraintType>[]; }, { readonly id: "constraintDate"; readonly label: "Constraint Date"; readonly kind: "date"; readonly taskField: "constraintDate"; readonly updateField: "constraintDate"; }, { readonly id: "deadlineDate"; readonly label: "Deadline"; readonly kind: "date"; readonly taskField: "deadlineDate"; readonly updateField: "deadlineDate"; }, { readonly id: "actualStartDate"; readonly label: "Actual Start"; readonly kind: "date"; readonly taskField: "actualStartDate"; readonly updateField: "actualStartDate"; }, { readonly id: "actualFinishDate"; readonly label: "Actual Finish"; readonly kind: "date"; readonly taskField: "actualFinishDate"; readonly updateField: "actualFinishDate"; }, { readonly id: "remainingDuration"; readonly label: "Remaining Duration"; readonly kind: "duration"; readonly taskField: "remainingDuration"; readonly updateField: "remainingDuration"; readonly min: 0; }, { readonly id: "workHours"; readonly label: "Work"; readonly kind: "duration"; readonly taskField: "workHours"; readonly updateField: "workHours"; readonly min: 0; }, { readonly id: "effortMode"; readonly label: "Task Type"; readonly kind: "select"; readonly taskField: "effortMode"; readonly updateField: "effortMode"; readonly options: readonly TaskEditorFieldOption<TaskEffortMode>[]; }, { readonly id: "effortDriven"; readonly label: "Effort Driven"; readonly kind: "switch"; readonly taskField: "effortDriven"; readonly updateField: "effortDriven"; }, { readonly id: "inactive"; readonly label: "Inactive"; readonly kind: "switch"; readonly taskField: "inactive"; readonly updateField: "inactive"; }, { readonly id: "priority"; readonly label: "Priority"; readonly kind: "number"; readonly taskField: "priority"; readonly updateField: "priority"; readonly min: 0; readonly max: 1000; readonly step: 1; }, { readonly id: "canLevel"; readonly label: "Can Level"; readonly kind: "switch"; readonly taskField: "canLevel"; readonly updateField: "canLevel"; }, { readonly id: "levelingDelayDays"; readonly label: "Leveling Delay"; readonly kind: "number"; readonly taskField: "levelingDelayDays"; readonly updateField: "levelingDelayDays"; readonly min: 0; readonly step: 1; }, { readonly id: "manuallyScheduled"; readonly label: "Manual Scheduling"; readonly kind: "switch"; readonly taskField: "manuallyScheduled"; readonly updateField: "manuallyScheduled"; }, { readonly id: "resourceLabels"; readonly label: "Resources"; readonly kind: "labels"; readonly readonly: true; }, { readonly id: "calendarId"; readonly label: "Calendar"; readonly kind: "select"; readonly taskField: "calendarId"; readonly updateField: "calendarId"; }, { readonly id: "tags"; readonly label: "Tags"; readonly kind: "tags"; readonly taskField: "tags"; readonly updateField: "tags"; }, { readonly id: "notes"; readonly label: "Notes"; readonly kind: "textarea"; readonly taskField: "notes"; readonly updateField: "notes"; }];

Related types: TaskConstraintType, TaskEffortMode, TaskType, TaskWorkflowStatus

interface

export interface TaskDetailPopoverModel {
readonly taskId: string;
readonly title: string;
readonly subtitle: string;
readonly sections: readonly TaskDetailPopoverSection[];
readonly resourceAssignments: readonly TaskDetailPopoverResourceAssignment[];
}
MemberType / returnRequiredDefaultDescription
taskIdstringYes—
titlestringYes—
subtitlestringYes—
sectionsreadonly TaskDetailPopoverSection[]Yes—
resourceAssignmentsreadonly TaskDetailPopoverResourceAssignment[]Yes—

type

export type TaskEditorFieldId = TaskEditorEditableFieldId | TaskEditorDisplayFieldId;

interface

export interface TaskEditorFieldSchema<TField extends TaskEditorFieldId = TaskEditorFieldId> {
readonly id: TField;
readonly label: string;
readonly kind: TaskEditorFieldKind;
readonly taskField?: keyof TaskEntity;
readonly updateField?: keyof TaskUpdate;
readonly readonly?: boolean;
readonly min?: number;
readonly max?: number;
readonly step?: number;
readonly options?: readonly TaskEditorFieldOption[];
}
MemberType / returnRequiredDefaultDescription
idTFieldYes—
labelstringYes—
kindTaskEditorFieldKindYes—
taskFieldkeyof TaskEntity | undefinedNo—
updateField"name" | "workflowStatus" | "type" | "startDate" | "endDate" | "duration" | "actualStartDate" | "actualFinishDate" | "deadlineDate" | "progressPercent" | "color" | "constraintType" | "constraintDate" | "manuallyScheduled" | "workHours" | "remainingDuration" | "notes" | "calendarId" | "tags" | "effortMode" | "effortDriven" | "inactive" | "priority" | "canLevel" | "levelingDelayDays" | "durationUnit" | "durationIsElapsed" | "workUnit" | "splitRanges" | undefinedNo—
readonlyboolean | undefinedNo—
minnumber | undefinedNo—
maxnumber | undefinedNo—
stepnumber | undefinedNo—
optionsreadonly TaskEditorFieldOption<string>[] | undefinedNo—

Related types: TaskEditorFieldId, TaskEntity, TaskUpdate

type

export type TaskEditorFormValues = Partial<Record<TaskEditorFieldId, unknown>>;

Related types: TaskEditorFieldId

type

export type TaskEditorSubmitResult = TaskEditorSubmitSuccess | TaskEditorSubmitFailure;

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—