UNPKG

@progress/kendo-angular-gantt

Version:
754 lines (753 loc) 30.8 kB
/**----------------------------------------------------------------------------------------- * Copyright © 2025 Progress Software Corporation. All rights reserved. * Licensed under commercial license. See LICENSE.md in the project root for more information *-------------------------------------------------------------------------------------------*/ import { EventEmitter, OnChanges, QueryList, SimpleChanges, Renderer2, AfterContentInit, OnDestroy, ElementRef, NgZone } from '@angular/core'; import { FormGroup } from '@angular/forms'; import { TreeListComponent, DataBoundTreeComponent, ExpandableTreeComponent, SelectionChangeEvent as TreeListSelectionChangeEvent, CellClickEvent as TreeListCellClickEvent } from '@progress/kendo-angular-treelist'; import { CompositeFilterDescriptor, SortDescriptor } from '@progress/kendo-data-query'; import { Day } from '@progress/kendo-date-math'; import { Observable } from 'rxjs'; import { GanttTimelineComponent } from './timeline/gantt-timeline.component'; import { GanttColumnBase } from './columns/columns'; import { DataStateChangeEvent, ColumnMenuSettings, RowClassFn, TaskClassFn, ColumnVisibilityChangeEvent, ColumnResizeEvent, ColumnLockedChangeEvent, ColumnReorderEvent, ColumnReorderConfig, GanttTaskModelFields, GanttDependencyModelFields, SortSettings, CellClickEvent, TaskClickEvent, DependencyAddEvent, TaskDeleteEvent } from './models/models'; import { LocalizationService } from '@progress/kendo-angular-l10n'; import { TimelineViewService } from './timeline/timeline-view.service'; import { TimelineViewType } from './models/timeline-view'; import { TimelineBaseViewService } from './timeline/timeline-base-view.service'; import { ScrollSyncService } from './scrolling/scroll-sync.service'; import { DependencyDomService } from './dependencies/dependency-dom.service'; import { MappingService } from './common/mapping.service'; import { OptionChangesService } from './common/option-changes.service'; import { EditService } from './editing/edit.service'; import { NavigationService } from './navigation/navigation.service'; import { TimelinePaneOptions, TreeListPaneOptions } from './models/splitter-pane-options.interface'; import { GanttTaskTemplateDirective } from './template-directives/task-template.directive'; import { GanttSummaryTaskTemplateDirective } from './template-directives/summary-task-template.directive'; import { GanttTaskContentTemplateDirective } from './template-directives/task-content-template.directive'; import { ToolbarTemplateDirective } from './toolbar/toolbar-template.directive'; import { ToolbarSettings } from './models/toolbar-settings'; import { ExpandEvent } from './expanded-state/expand-event'; import { ViewBase } from './timeline/view-base'; import { SelectionChangeEvent } from './selection/selection-change-event'; import { TaskEditEvent } from './models/events/task-edit-event.interface'; import { CellCloseEvent } from './models/events/cell-close-event.interface'; import { CellCloseEvent as TreeListCellCloseEvent } from '@progress/kendo-angular-treelist'; import { TaskAddEvent } from './models/events/task-add-event.interface'; import { ViewItem } from './models/view-item.interface'; import { DragScrollSettings } from './scrolling/drag-scroll-settings'; import { FilterableSettings } from './models/filterable-settings'; import { CurrentTimeMarkerService } from './timeline/current-time-marker.service'; import { CurrentTimeSettings } from './models/current-time-settings.interface'; import { GanttTaskTooltipTemplateDirective } from './template-directives/task-tooltip-template.directive'; import { TaskTooltipOptions } from './models/tooltip-options.interface'; import { IntlService } from '@progress/kendo-angular-intl'; import * as i0 from "@angular/core"; /** * Represents the [Kendo UI Gantt component for Angular](slug:overview_gantt). * * Use the Gantt component to display and manage project tasks and dependencies in a timeline view. * * @example * ```ts * import { Component } from '@angular/core'; * import { GanttComponent, DependencyType } from '@progress/kendo-angular-gantt'; * * @Component({ * selector: 'my-app', * template: ` * <kendo-gantt * [style.height.px]="500" * [kendoGanttHierarchyBinding]="data" * childrenField="subtasks" * [dependencies]="dependencies"> * <kendo-gantt-column field="title" title="Task" [width]="200" [expandable]="true"></kendo-gantt-column> * <kendo-gantt-column field="start" title="Start" format="dd-MMM-yyyy" [width]="120"></kendo-gantt-column> * <kendo-gantt-column field="end" title="End" format="dd-MMM-yyyy" [width]="120"></kendo-gantt-column> * <kendo-gantt-timeline-day-view></kendo-gantt-timeline-day-view> * <kendo-gantt-timeline-week-view></kendo-gantt-timeline-week-view> * <kendo-gantt-timeline-month-view></kendo-gantt-timeline-month-view> * </kendo-gantt> * ` * }) * export class AppComponent { * public data: Task[] = [ * { * id: 1, * title: 'Planning', * start: new Date('2024-01-01'), * end: new Date('2024-01-05'), * subtasks: [] * } * ]; * public dependencies = [ * { id: 1, fromId: 1, toId: 2, type: DependencyType.FS } * ]; * } * ``` * * @remarks * Supported children components are: * {@link GanttColumnComponent}, * {@link GanttSpanColumnComponent}, * {@link GanttColumnGroupComponent}, * {@link TimelineDayViewComponent}, * {@link TimelineWeekViewComponent}, * {@link TimelineMonthViewComponent}, * {@link TimelineYearViewComponent}, * {@link CustomMessagesComponent}. */ export declare class GanttComponent implements AfterContentInit, OnChanges, OnDestroy, DataBoundTreeComponent, ExpandableTreeComponent { private timelineViewService; private scrollSyncService; private renderer; private mapper; private optionChangesService; private dependencyDomService; private editService; private localizationService; hostElement: ElementRef<HTMLElement>; private zone; private navigation; private currentTimeMarkerService; private intlService; localeId: string; treeList: TreeListComponent; timeline: GanttTimelineComponent; /** * @hidden * * Queries the template for a task content template declaration. * In newer Angular versions the ngIf-ed value gets evaluated after the static query is resolved. * Therefore the `static` property needs to be set to `false`. */ taskContentTemplate: GanttTaskContentTemplateDirective; /** * @hidden * * Queries the template for a task template declaration. * In newer Angular versions the ngIf-ed value gets evaluated after the static query is resolved. * Therefore the `static` property needs to be set to `false`. */ taskTemplate: GanttTaskTemplateDirective; /** * @hidden * * Queries the template for a task tooltip template declaration. * In newer Angular versions the ngIf-ed value gets evaluated after the static query is resolved. * Therefore the `static` property needs to be set to `false`. */ taskTooltipTemplate: GanttTaskTooltipTemplateDirective; /** * @hidden * * Queries the template for a task summary template declaration. * In newer Angular versions the ngIf-ed value gets evaluated after the static query is resolved. * Therefore the `static` property needs to be set to `false`. */ summaryTaskTemplate: GanttSummaryTaskTemplateDirective; toolbarTemplateChildren: QueryList<ToolbarTemplateDirective>; get toolbarTemplate(): ToolbarTemplateDirective; set toolbarTemplate(customToolbarTemplate: ToolbarTemplateDirective); /** * @hidden */ roleDescription: string; get hostRoleDescriptionAttr(): string; /** * @hidden */ role: string; get hostRoleAttr(): string; hostClasses: boolean; get dir(): string; /** * A query list of all declared columns. */ set columns(columns: QueryList<GanttColumnBase>); get columns(): QueryList<GanttColumnBase>; /** * Sets the fields used to extract task data from the `data` array items. * The `id` field is also used as a unique identifier for TreeList data items. * If not set, task data items must match the [`GanttTask`](slug:api_gantt_gantttask) interface. */ set taskModelFields(fields: GanttTaskModelFields); /** * Sets the fields used to extract dependency data from the `dependencies` array items. * If not set, dependency data items must match the [`GanttDependency`](slug:api_gantt_ganttdependency) interface. */ set dependencyModelFields(fields: GanttDependencyModelFields); /** * A query list of all declared views. */ views: QueryList<ViewBase>; /** * Sets the active timeline view. * @default 'week' */ set activeView(view: TimelineViewType); get activeView(): TimelineViewType; /** * @hidden * */ get activeViewCurrentTimeMarker(): boolean | CurrentTimeSettings; /** * Gets or sets the Gantt data. * The task data items must match the [`GanttTask`]({% slug api_gantt_gantttask %}) interface or use [`taskModelFields`]({% slug api_gantt_ganttcomponent %}#toc-taskmodelfields). */ set data(data: any[]); get data(): any[]; /** * Specifies a callback to determine if a task is selected ([see example]({% slug selection_gantt %}#toc-custom-selection)). * Set [`selectable`]({% slug api_gantt_ganttcomponent %}#toc-selectable) to `true` to use this callback. */ isSelected: (dataItem: object) => boolean; /** * Specifies a callback to validate new dependencies. * Use this callback to control the valid dependencies that users can create ([see example]({% slug editing_drag_create_dependencies_gantt %}#toc-validation)). */ validateNewDependency: (dependency: object) => boolean; /** * Fires when the Gantt selection changes through user interaction. * The event data contains the affected items and the action type. */ selectionChange: EventEmitter<SelectionChangeEvent>; /** * Enables or disables selection in the Gantt ([see example]({% slug selection_gantt %}#toc-custom-selection)). * Set to `true` to allow selection. * > When set to `true`, the [`isSelected`]({% slug api_gantt_ganttcomponent %}#toc-isselected) callback has to be provided. * > When applied, the [`SelectableDirective`]({% slug api_gantt_selectabledirective %}) sets `selectable` to `true` internally. * @default false */ selectable: boolean; /** * Configures the toolbar position and content. * Set `position`, `addTaskTool`, and `viewSelectorTool` as needed. */ set toolbarSettings(value: ToolbarSettings); get toolbarSettings(): ToolbarSettings; /** * Sets the `aria-label` attribute value for the toolbar. * Use this to improve accessibility. * @default "Toolbar" */ toolbarAriaLabel: string; /** * Sets the callback function to retrieve child items for a data item. */ set fetchChildren(fn: (dataItem: any) => Observable<object[]> | object[]); get fetchChildren(): (dataItem: any) => Observable<object[]> | object[]; /** * Sets the callback function to indicate if a data item has child items. */ set hasChildren(fn: (dataItem: any) => boolean); get hasChildren(): (dataItem: any) => boolean; /** * Sets the dependencies to display between tasks. * Dependency data items must match the [`GanttDependency`]({% slug api_gantt_ganttdependency %}) interface or use [`dependencyModelFields`]({% slug api_gantt_ganttcomponent %}#toc-dependencymodelfields). */ dependencies: any[]; /** * Enables sorting for columns with a `field` option. */ sortable: SortSettings; /** * Sets the descriptors for sorting the data. */ sort: SortDescriptor[]; /** * Enables filtering for columns with a `field` option. * @default false */ filterable: boolean; /** * Sets the descriptor for filtering the data. */ filter: CompositeFilterDescriptor; /** * Sets the start time of the work day in `HH:mm` format. * @default "08:00" */ workDayStart: string; /** * Sets the end time of the work day in `HH:mm` format. * @default "17:00" */ workDayEnd: string; /** * Sets the start day of the work week (index based). * @default 1 */ workWeekStart: Day; /** * Sets the end day of the work week (index based). * @default 5 */ workWeekEnd: Day; /** * Enables keyboard navigation for the Gantt. * By default, navigation is enabled for the TreeList and Timeline parts of the component ([see example]({% slug keyboard_navigation_gantt %})). * @default true */ navigable: boolean; /** * Sets the options for the timeline splitter pane. * By default, the pane is collapsible, resizable, not collapsed, and its size is `'50%'`. */ set timelinePaneOptions(value: TimelinePaneOptions); get timelinePaneOptions(): TimelinePaneOptions; /** * Sets the options for the treelist splitter pane. * By default the pane is collapsible and not collapsed. */ set treeListPaneOptions(value: TreeListPaneOptions); get treeListPaneOptions(): TreeListPaneOptions; /** * Sets a function to apply custom CSS classes to each task. * The function receives the task data item. */ set taskClass(fn: TaskClassFn); get taskClass(): TaskClassFn; /** * Sets a function to apply custom CSS classes to each data row. * The function receives the row data item. */ set rowClass(fn: RowClassFn); get rowClass(): RowClassFn; /** * Gets the name of the field that contains the unique identifier for task data items. * @default "id" */ get taskIdField(): any; /** * Sets a callback function to indicate if a data item is expanded. * If not set, all items are expanded and no expand icons are shown. */ isExpanded: (item: object) => boolean; /** * Enables automatic resizing of columns to fit their content. * @default false */ columnsAutoSize: boolean; /** * Sets the current time marker settings for the Gantt. * Applies to all views unless overridden by the settings of a particular view. * @default true */ currentTimeMarker: boolean | CurrentTimeSettings; /** * Enables the column menu for all columns. * @default false */ columnMenu: boolean | ColumnMenuSettings; /** * Enables reordering of the columns by dragging their header cells. * @default false */ columnsReorderable: boolean; /** * Enables resizing of the columns by dragging the header cell edges (resize handles). * @default false */ columnsResizable: boolean; /** * Defines the settings for auto-scrolling during dragging when the pointer moves outside the container ([see example](slug:editing_drag_create_dependencies_gantt#auto-scrolling)). */ set dragScrollSettings(settings: DragScrollSettings); get dragScrollSettings(): DragScrollSettings; /** * Sets the options for the task tooltip, such as `position`, `callout`, and `showAfter`. * @default { position: 'top', callout: true, showAfter: 100 } */ taskTooltipOptions: TaskTooltipOptions; /** * Fires when a row is expanded. */ rowExpand: EventEmitter<ExpandEvent>; /** * Fires when a Gantt task in the timeline pane is double-clicked. * The event data contains the clicked task. Use this event to open a task editing dialog if needed. */ taskDblClick: EventEmitter<TaskClickEvent>; /** * Fires when a cell is double-clicked. */ cellDblClick: EventEmitter<CellClickEvent>; /** * Fires when an edited cell is closed. */ cellClose: EventEmitter<CellCloseEvent>; /** * Fires when the user clicks the `Delete` button in the task editing dialog, * the task delete icon, or presses the `Delete` key on a focused task. * Use this event to open a confirmation dialog if needed. */ taskDelete: EventEmitter<TaskDeleteEvent>; /** * Fires when a row is collapsed. */ rowCollapse: EventEmitter<ExpandEvent>; /** * Fires when the user confirms deleting a task. */ remove: EventEmitter<TaskEditEvent>; /** * Fires when the user cancels editing a task. */ cancel: EventEmitter<TaskEditEvent>; /** * Fires when the user saves an edited task. */ save: EventEmitter<TaskEditEvent>; /** * Fires when the user adds a task. */ taskAdd: EventEmitter<TaskAddEvent>; /** * Fires when the user adds a dependency by dragging [see example]({% slug editing_drag_create_dependencies_gantt %}#toc-basic-concepts). */ dependencyAdd: EventEmitter<DependencyAddEvent>; /** * Fires when there are changes in the Gantt sorting. * Handle this event to sort the data. */ sortChange: EventEmitter<SortDescriptor[]>; /** * Fires when there are changes in the Gantt filtering. * Handle this event to filter the data. */ filterChange: EventEmitter<CompositeFilterDescriptor>; /** * Fires when the filter or sort state changes. */ dataStateChange: EventEmitter<DataStateChangeEvent>; /** * Fires when the collapsed state of the treelist pane changes. */ treeListPaneCollapsedChange: EventEmitter<boolean>; /** * Fires when the collapsed state of the timeline pane changes. */ timelinePaneCollapsedChange: EventEmitter<boolean>; /** * Fires when the user resizes the timeline pane. */ timelinePaneSizeChange: EventEmitter<string>; /** * Fires when the user selects a different view type. * The event data contains the type of the new view. */ activeViewChange: EventEmitter<TimelineViewType>; /** * Fires when the user completes resizing a column. */ columnResize: EventEmitter<ColumnResizeEvent[]>; /** * Fires when the user completes reordering a column. */ columnReorder: EventEmitter<ColumnReorderEvent>; /** * Fires when the user changes column visibility from the column menu or chooser. */ columnVisibilityChange: EventEmitter<ColumnVisibilityChangeEvent>; /** * @hidden * * Fires when the user changes the locked state of the columns from the column menu or by reordering the columns. */ columnLockedChange: EventEmitter<ColumnLockedChangeEvent>; /** * Fires when a cell is clicked. */ cellClick: EventEmitter<CellClickEvent>; /** * Fires when a task is clicked. */ taskClick: EventEmitter<TaskClickEvent>; /** * @hidden */ get renderedTreeListItems(): any[]; /** * @hidden */ get viewItems(): ViewItem[]; /** * @hidden */ get filterMenu(): FilterableSettings; /** * @hidden * * Specifies whether the dependency drag clues will be rendered. * Set internally by the dependency-drag-create directive. * * @default false */ renderDependencyDragClues: boolean; /** * @hidden */ timelineSlots: any[]; /** * @hidden */ timelineGroupSlots: any[]; /** * @hidden */ tableWidth: number; /** * @hidden */ get viewService(): TimelineBaseViewService; /** * @hidden * * Retrieves the `isSelected` callback if `selectable` is set to `true` * Otherwise returns the default callback, which always returns `false`. */ get isTaskSelected(): (dataItem: any) => boolean; /** * @hidden * * Used by the GanttExpandableDirective. */ get idGetter(): any; /** * @hidden * * Used by the views selector. */ get viewTypes(): TimelineViewType[]; /** * @hidden * * Used by the GanttExpandableDirective. */ expandStateChange: EventEmitter<any>; /** * @hidden */ showEditingDialog: boolean; /** * @hidden */ showConfirmationDialog: boolean; /** * @hidden */ get isInEditMode(): boolean; /** * @hidden */ showLicenseWatermark: boolean; /** * @hidden */ licenseMessage?: string; private _columns; private _data; private _dragScrollSettings; private _timelinePaneOptions; private _treeListPaneOptions; private _customToolbarTemplate; private _rowClass; private _taskClass; private _activeView; private _toolbarSettings; private _fetchChildren; private _hasChildren; private lastTreeListCellClick; private direction; private rtl; private editItem; private optionChangesSubscriptions; private editServiceSubscription; private localizationSubscription; private intlSubscription; private keydownListenerDisposers; constructor(timelineViewService: TimelineViewService, scrollSyncService: ScrollSyncService, renderer: Renderer2, mapper: MappingService, optionChangesService: OptionChangesService, dependencyDomService: DependencyDomService, editService: EditService, localizationService: LocalizationService, hostElement: ElementRef<HTMLElement>, zone: NgZone, navigation: NavigationService, currentTimeMarkerService: CurrentTimeMarkerService, intlService: IntlService, localeId: string); ngOnChanges(changes: SimpleChanges): void; ngAfterViewInit(): void; ngAfterContentInit(): void; ngOnDestroy(): void; /** * Focuses the last active cell or task in the Gantt. * If no item was previously focused, focuses the first TreeList cell ([see example]({% slug keyboard_navigation_gantt %}#toc-controlling-the-focus)). */ focus(): void; /** * Focuses the specified cell in the TreeList ([see example]({% slug keyboard_navigation_gantt %}#toc-controlling-the-focus)). * @param rowIndex The row index. * @param colIndex The column index. */ focusCell(rowIndex: number, colIndex: number): void; /** * Focuses the specified task in the Timeline ([see example]({% slug keyboard_navigation_gantt %}#toc-controlling-the-focus)). * @param taskIndex The index of the task. */ focusTask(taskIndex: number): void; /** * Sets the minimum width for the specified column so that its content fits. * The Gantt must be resizable. * @param column The column to auto-fit. */ autoFitColumn(column: GanttColumnBase): void; /** * Adjusts the width of the specified columns to fit their content. * If no columns are specified, fits all columns. * The Gantt must be resizable to use this method. * @param columns The columns to auto-fit. */ autoFitColumns(columns?: Array<GanttColumnBase> | QueryList<GanttColumnBase>): void; /** * Clears loaded children for the data item so the Gantt fetches them again. * @param dataItem The data item to reload. * @param reloadChildren Whether to reload children. */ reload(dataItem: any, reloadChildren?: boolean): void; /** * Changes the position of the specified column. * The source column must be visible. * @param source The column to move. * @param destIndex The new position index. * @param options Additional options. */ reorderColumn(source: GanttColumnBase, destIndex: number, options?: ColumnReorderConfig): void; /** * Forces the Gantt to re-evaluate data items and re-render the rows and Timeline period, if needed. * Also redraws dependencies and executes row-related callbacks. */ updateView(): void; /** * Opens the task editing dialog for the specified data item. * @param dataItem The task data item. * @param formGroup The form group for editing. */ editTask(dataItem: any, formGroup: FormGroup): void; /** * Closes the task editing dialog. */ closeTaskDialog(): void; /** * Opens the delete task confirmation dialog. */ openConfirmationDialog(): void; /** * @hidden */ handleConfirmationDialogClose(): void; /** * Opens a cell for editing. * @param dataItem The data item. * @param column The column index, name, or object. * @param formGroup The form group for editing. */ editCell(dataItem: any, column: number | string | any, formGroup?: FormGroup): void; /** * Closes the currently edited cell. */ closeCell(): void; /** * @hidden */ handleCellClose(e: TreeListCellCloseEvent): void; /** * @hidden */ onTreeListCollapsedChange(collapsed: boolean): void; /** * @hidden */ onTimelineCollapsedChange(collapsed: boolean): void; /** * @hidden */ loadTimelineData(): void; /** * @hidden */ showToolbar(position: string): boolean; /** * @hidden */ handleColumnVisibilityChange(event: ColumnVisibilityChangeEvent): void; /** * @hidden */ onTimelinePaneSizeChange(e: string): void; /** * @hidden */ handleTimelineRightClick(event: PointerEvent): void; /** * @hidden */ handleTimelineClick(event: PointerEvent): void; /** * @hidden */ handleTreeListDoubleClick(event: PointerEvent): void; /** * @hidden */ handleTreeListSelectionChange(event: TreeListSelectionChangeEvent): void; /** * @hidden */ handleTreeListCellClick(event: TreeListCellClickEvent): void; /** * @hidden */ handleDeleteConfirmation(): void; /** * @hidden */ handleTimelineMouseDown(event: MouseEvent): void; /** * @hidden */ handleTimelineDblClick(event: PointerEvent): void; /** * @hidden */ getText(token: string): string; /** * @hidden */ changeActiveView(view: TimelineViewType): void; /** * @hidden */ notifyTaskClick(event: PointerEvent | KeyboardEvent, dataItem: any, itemIndex: number): void; /** * @hidden */ notifySelectionChange(dataItem: any, action: 'select' | 'remove'): void; /** * @hidden */ notifyTaskDelete(task: any): void; /** * @hidden */ isSameSelection(action: 'select' | 'remove', dataItem: any): boolean; /** * @hidden */ getSelectionAction({ ctrlKey, metaKey }: PointerEvent | KeyboardEvent, dataItem: any): 'select' | 'remove'; private updateTreeListGroupClass; /** * Used to hide the vertical scrollbar */ private updateTreeListMargin; private get activeTimelineIndex(); private getActiveViewOptions; private getFirstSelectedItem; private defaultValidateNewDependencyCallback; private handleKeydown; static ɵfac: i0.ɵɵFactoryDeclaration<GanttComponent, never>; static ɵcmp: i0.ɵɵComponentDeclaration<GanttComponent, "kendo-gantt", ["kendoGantt"], { "roleDescription": { "alias": "aria-roledescription"; "required": false; }; "role": { "alias": "role"; "required": false; }; "taskModelFields": { "alias": "taskModelFields"; "required": false; }; "dependencyModelFields": { "alias": "dependencyModelFields"; "required": false; }; "activeView": { "alias": "activeView"; "required": false; }; "data": { "alias": "data"; "required": false; }; "isSelected": { "alias": "isSelected"; "required": false; }; "validateNewDependency": { "alias": "validateNewDependency"; "required": false; }; "selectable": { "alias": "selectable"; "required": false; }; "toolbarSettings": { "alias": "toolbarSettings"; "required": false; }; "toolbarAriaLabel": { "alias": "toolbarAriaLabel"; "required": false; }; "fetchChildren": { "alias": "fetchChildren"; "required": false; }; "hasChildren": { "alias": "hasChildren"; "required": false; }; "dependencies": { "alias": "dependencies"; "required": false; }; "sortable": { "alias": "sortable"; "required": false; }; "sort": { "alias": "sort"; "required": false; }; "filterable": { "alias": "filterable"; "required": false; }; "filter": { "alias": "filter"; "required": false; }; "workDayStart": { "alias": "workDayStart"; "required": false; }; "workDayEnd": { "alias": "workDayEnd"; "required": false; }; "workWeekStart": { "alias": "workWeekStart"; "required": false; }; "workWeekEnd": { "alias": "workWeekEnd"; "required": false; }; "navigable": { "alias": "navigable"; "required": false; }; "timelinePaneOptions": { "alias": "timelinePaneOptions"; "required": false; }; "treeListPaneOptions": { "alias": "treeListPaneOptions"; "required": false; }; "taskClass": { "alias": "taskClass"; "required": false; }; "rowClass": { "alias": "rowClass"; "required": false; }; "isExpanded": { "alias": "isExpanded"; "required": false; }; "columnsAutoSize": { "alias": "columnsAutoSize"; "required": false; }; "currentTimeMarker": { "alias": "currentTimeMarker"; "required": false; }; "columnMenu": { "alias": "columnMenu"; "required": false; }; "columnsReorderable": { "alias": "columnsReorderable"; "required": false; }; "columnsResizable": { "alias": "columnsResizable"; "required": false; }; "dragScrollSettings": { "alias": "dragScrollSettings"; "required": false; }; "taskTooltipOptions": { "alias": "taskTooltipOptions"; "required": false; }; }, { "selectionChange": "selectionChange"; "rowExpand": "rowExpand"; "taskDblClick": "taskDblClick"; "cellDblClick": "cellDblClick"; "cellClose": "cellClose"; "taskDelete": "taskDelete"; "rowCollapse": "rowCollapse"; "remove": "remove"; "cancel": "cancel"; "save": "save"; "taskAdd": "taskAdd"; "dependencyAdd": "dependencyAdd"; "sortChange": "sortChange"; "filterChange": "filterChange"; "dataStateChange": "dataStateChange"; "treeListPaneCollapsedChange": "treeListPaneCollapsedChange"; "timelinePaneCollapsedChange": "timelinePaneCollapsedChange"; "timelinePaneSizeChange": "timelinePaneSizeChange"; "activeViewChange": "activeViewChange"; "columnResize": "columnResize"; "columnReorder": "columnReorder"; "columnVisibilityChange": "columnVisibilityChange"; "columnLockedChange": "columnLockedChange"; "cellClick": "cellClick"; "taskClick": "taskClick"; }, ["taskContentTemplate", "taskTemplate", "taskTooltipTemplate", "summaryTaskTemplate", "toolbarTemplateChildren", "columns", "views"], never, true, never>; }