UNPKG

devextreme-angular

Version:

DevExtreme UI and Visualization Components for Angular

1 lines • 68.2 kB
{"version":3,"file":"devextreme-angular-ui-gantt.mjs","sources":["../../../dist/ui/gantt/index.ts","../../../dist/ui/gantt/devextreme-angular-ui-gantt.ts"],"sourcesContent":["/*!\n * devextreme-angular\n * Version: 26.1.3\n * Build date: Wed Jun 10 2026\n *\n * Copyright (c) 2012 - 2026 Developer Express Inc. ALL RIGHTS RESERVED\n *\n * This software may be modified and distributed under the terms\n * of the MIT license. See the LICENSE file in the root of the project for details.\n *\n * https://github.com/DevExpress/DevExtreme\n */\n\n/* tslint:disable:max-line-length */\n\n\nimport {\n TransferState,\n Component,\n NgModule,\n ElementRef,\n NgZone,\n PLATFORM_ID,\n Inject,\n\n Input,\n Output,\n OnDestroy,\n EventEmitter,\n OnChanges,\n DoCheck,\n SimpleChanges,\n ContentChildren,\n QueryList\n} from '@angular/core';\n\n\nimport type { dxGanttColumn, dxGanttContextMenu, dxGanttFilterRow, dxGanttHeaderFilter, ContentReadyEvent, ContextMenuPreparingEvent, CustomCommandEvent, DependencyDeletedEvent, DependencyDeletingEvent, DependencyInsertedEvent, DependencyInsertingEvent, DisposingEvent, InitializedEvent, OptionChangedEvent, ResourceAssignedEvent, ResourceAssigningEvent, ResourceDeletedEvent, ResourceDeletingEvent, ResourceInsertedEvent, ResourceInsertingEvent, ResourceManagerDialogShowingEvent, ResourceUnassignedEvent, ResourceUnassigningEvent, ScaleCellPreparedEvent, SelectionChangedEvent, TaskClickEvent, TaskDblClickEvent, TaskDeletedEvent, TaskDeletingEvent, TaskEditDialogShowingEvent, TaskInsertedEvent, TaskInsertingEvent, TaskMovingEvent, TaskUpdatedEvent, TaskUpdatingEvent, GanttScaleType, dxGanttSorting, dxGanttStripLine, GanttTaskTitlePosition, dxGanttToolbar } from 'devextreme/ui/gantt';\nimport type { default as DataSource, DataSourceOptions } from 'devextreme/data/data_source';\nimport type { Store } from 'devextreme/data/store';\nimport type { DayOfWeek } from 'devextreme/common';\n\nimport DxGantt from 'devextreme/ui/gantt';\n\n\nimport {\n DxComponent,\n DxTemplateHost,\n DxIntegrationModule,\n DxTemplateModule,\n NestedOptionHost,\n IterableDifferHelper,\n WatcherHelper,\n CollectionNestedOption,\n} from 'devextreme-angular/core';\n\nimport { DxiColumnModule } from 'devextreme-angular/ui/nested';\nimport { DxoFormatModule } from 'devextreme-angular/ui/nested';\nimport { DxoHeaderFilterModule } from 'devextreme-angular/ui/nested';\nimport { DxoSearchModule } from 'devextreme-angular/ui/nested';\nimport { DxoContextMenuModule } from 'devextreme-angular/ui/nested';\nimport { DxiItemModule } from 'devextreme-angular/ui/nested';\nimport { DxoDependenciesModule } from 'devextreme-angular/ui/nested';\nimport { DxoEditingModule } from 'devextreme-angular/ui/nested';\nimport { DxoFilterRowModule } from 'devextreme-angular/ui/nested';\nimport { DxoOperationDescriptionsModule } from 'devextreme-angular/ui/nested';\nimport { DxoTextsModule } from 'devextreme-angular/ui/nested';\nimport { DxoResourceAssignmentsModule } from 'devextreme-angular/ui/nested';\nimport { DxoResourcesModule } from 'devextreme-angular/ui/nested';\nimport { DxoScaleTypeRangeModule } from 'devextreme-angular/ui/nested';\nimport { DxoSortingModule } from 'devextreme-angular/ui/nested';\nimport { DxiStripLineModule } from 'devextreme-angular/ui/nested';\nimport { DxoTasksModule } from 'devextreme-angular/ui/nested';\nimport { DxoToolbarModule } from 'devextreme-angular/ui/nested';\nimport { DxoValidationModule } from 'devextreme-angular/ui/nested';\n\nimport { DxiGanttColumnModule } from 'devextreme-angular/ui/gantt/nested';\nimport { DxoGanttColumnHeaderFilterModule } from 'devextreme-angular/ui/gantt/nested';\nimport { DxoGanttColumnHeaderFilterSearchModule } from 'devextreme-angular/ui/gantt/nested';\nimport { DxoGanttContextMenuModule } from 'devextreme-angular/ui/gantt/nested';\nimport { DxiGanttContextMenuItemModule } from 'devextreme-angular/ui/gantt/nested';\nimport { DxiGanttContextMenuItemItemModule } from 'devextreme-angular/ui/gantt/nested';\nimport { DxoGanttDependenciesModule } from 'devextreme-angular/ui/gantt/nested';\nimport { DxoGanttEditingModule } from 'devextreme-angular/ui/gantt/nested';\nimport { DxoGanttFilterRowModule } from 'devextreme-angular/ui/gantt/nested';\nimport { DxoGanttFormatModule } from 'devextreme-angular/ui/gantt/nested';\nimport { DxoGanttGanttHeaderFilterModule } from 'devextreme-angular/ui/gantt/nested';\nimport { DxoGanttGanttHeaderFilterSearchModule } from 'devextreme-angular/ui/gantt/nested';\nimport { DxoGanttHeaderFilterModule } from 'devextreme-angular/ui/gantt/nested';\nimport { DxiGanttItemModule } from 'devextreme-angular/ui/gantt/nested';\nimport { DxoGanttOperationDescriptionsModule } from 'devextreme-angular/ui/gantt/nested';\nimport { DxoGanttResourceAssignmentsModule } from 'devextreme-angular/ui/gantt/nested';\nimport { DxoGanttResourcesModule } from 'devextreme-angular/ui/gantt/nested';\nimport { DxoGanttScaleTypeRangeModule } from 'devextreme-angular/ui/gantt/nested';\nimport { DxoGanttSearchModule } from 'devextreme-angular/ui/gantt/nested';\nimport { DxoGanttSortingModule } from 'devextreme-angular/ui/gantt/nested';\nimport { DxiGanttStripLineModule } from 'devextreme-angular/ui/gantt/nested';\nimport { DxoGanttTasksModule } from 'devextreme-angular/ui/gantt/nested';\nimport { DxoGanttTextsModule } from 'devextreme-angular/ui/gantt/nested';\nimport { DxoGanttToolbarModule } from 'devextreme-angular/ui/gantt/nested';\nimport { DxiGanttToolbarItemModule } from 'devextreme-angular/ui/gantt/nested';\nimport { DxoGanttValidationModule } from 'devextreme-angular/ui/gantt/nested';\nimport { \n PROPERTY_TOKEN_columns,\n PROPERTY_TOKEN_items,\n PROPERTY_TOKEN_stripLines,\n } from 'devextreme-angular/core/tokens';\n\n\n/**\n * The Gantt is a UI component that displays the task flow and dependencies between tasks.\n\n */\n@Component({\n selector: 'dx-gantt',\n template: '',\n host: { ngSkipHydration: 'true' },\n imports: [ DxIntegrationModule ],\n providers: [\n DxTemplateHost,\n WatcherHelper,\n NestedOptionHost,\n IterableDifferHelper\n ]\n})\nexport class DxGanttComponent extends DxComponent implements OnDestroy, OnChanges, DoCheck {\n\n @ContentChildren(PROPERTY_TOKEN_columns)\n set _columnsContentChildren(value: QueryList<CollectionNestedOption>) {\n this.setChildren('columns', value);\n }\n\n @ContentChildren(PROPERTY_TOKEN_items)\n set _itemsContentChildren(value: QueryList<CollectionNestedOption>) {\n this.setChildren('items', value);\n }\n\n @ContentChildren(PROPERTY_TOKEN_stripLines)\n set _stripLinesContentChildren(value: QueryList<CollectionNestedOption>) {\n this.setChildren('stripLines', value);\n }\n\n instance: DxGantt = null;\n\n /**\n * Specifies the shortcut key that sets focus on the UI component.\n \n */\n @Input()\n get accessKey(): string | undefined {\n return this._getOption('accessKey');\n }\n set accessKey(value: string | undefined) {\n this._setOption('accessKey', value);\n }\n\n\n /**\n * Specifies whether the UI component changes its visual state as a result of user interaction.\n \n */\n @Input()\n get activeStateEnabled(): boolean {\n return this._getOption('activeStateEnabled');\n }\n set activeStateEnabled(value: boolean) {\n this._setOption('activeStateEnabled', value);\n }\n\n\n /**\n * Specifies whether users can select tasks in the Gantt.\n \n */\n @Input()\n get allowSelection(): boolean {\n return this._getOption('allowSelection');\n }\n set allowSelection(value: boolean) {\n this._setOption('allowSelection', value);\n }\n\n\n /**\n * An array of columns in the Gantt.\n \n */\n @Input()\n get columns(): Array<dxGanttColumn | string> {\n return this._getOption('columns');\n }\n set columns(value: Array<dxGanttColumn | string>) {\n this._setOption('columns', value);\n }\n\n\n /**\n * Configures the context menu settings.\n \n */\n @Input()\n get contextMenu(): dxGanttContextMenu {\n return this._getOption('contextMenu');\n }\n set contextMenu(value: dxGanttContextMenu) {\n this._setOption('contextMenu', value);\n }\n\n\n /**\n * Configures dependencies.\n \n */\n @Input()\n get dependencies(): { dataSource?: Array<any> | DataSource | DataSourceOptions | null | Store | string, keyExpr?: ((dependency: any) => any) | string, predecessorIdExpr?: ((dependency: any, value: any) => any) | string, successorIdExpr?: ((dependency: any, value: any) => any) | string, typeExpr?: ((dependency: any, value: any) => any) | string } {\n return this._getOption('dependencies');\n }\n set dependencies(value: { dataSource?: Array<any> | DataSource | DataSourceOptions | null | Store | string, keyExpr?: ((dependency: any) => any) | string, predecessorIdExpr?: ((dependency: any, value: any) => any) | string, successorIdExpr?: ((dependency: any, value: any) => any) | string, typeExpr?: ((dependency: any, value: any) => any) | string }) {\n this._setOption('dependencies', value);\n }\n\n\n /**\n * Specifies whether the UI component responds to user interaction.\n \n */\n @Input()\n get disabled(): boolean {\n return this._getOption('disabled');\n }\n set disabled(value: boolean) {\n this._setOption('disabled', value);\n }\n\n\n /**\n * Configures edit properties.\n \n */\n @Input()\n get editing(): { allowDependencyAdding?: boolean, allowDependencyDeleting?: boolean, allowResourceAdding?: boolean, allowResourceDeleting?: boolean, allowResourceUpdating?: boolean, allowTaskAdding?: boolean, allowTaskDeleting?: boolean, allowTaskResourceUpdating?: boolean, allowTaskUpdating?: boolean, enabled?: boolean } {\n return this._getOption('editing');\n }\n set editing(value: { allowDependencyAdding?: boolean, allowDependencyDeleting?: boolean, allowResourceAdding?: boolean, allowResourceDeleting?: boolean, allowResourceUpdating?: boolean, allowTaskAdding?: boolean, allowTaskDeleting?: boolean, allowTaskResourceUpdating?: boolean, allowTaskUpdating?: boolean, enabled?: boolean }) {\n this._setOption('editing', value);\n }\n\n\n /**\n * Specifies the global attributes to be attached to the UI component&apos;s container element.\n \n */\n @Input()\n get elementAttr(): Record<string, any> {\n return this._getOption('elementAttr');\n }\n set elementAttr(value: Record<string, any>) {\n this._setOption('elementAttr', value);\n }\n\n\n /**\n * Specifies the end date of the date interval in the Gantt chart.\n \n */\n @Input()\n get endDateRange(): Date {\n return this._getOption('endDateRange');\n }\n set endDateRange(value: Date) {\n this._setOption('endDateRange', value);\n }\n\n\n /**\n * Configures filter row settings.\n \n */\n @Input()\n get filterRow(): dxGanttFilterRow {\n return this._getOption('filterRow');\n }\n set filterRow(value: dxGanttFilterRow) {\n this._setOption('filterRow', value);\n }\n\n\n /**\n * Specifies the first day of a week.\n \n */\n @Input()\n get firstDayOfWeek(): DayOfWeek | undefined {\n return this._getOption('firstDayOfWeek');\n }\n set firstDayOfWeek(value: DayOfWeek | undefined) {\n this._setOption('firstDayOfWeek', value);\n }\n\n\n /**\n * Specifies whether the UI component can be focused using keyboard navigation.\n \n */\n @Input()\n get focusStateEnabled(): boolean {\n return this._getOption('focusStateEnabled');\n }\n set focusStateEnabled(value: boolean) {\n this._setOption('focusStateEnabled', value);\n }\n\n\n /**\n * Configures the header filter settings.\n \n */\n @Input()\n get headerFilter(): dxGanttHeaderFilter {\n return this._getOption('headerFilter');\n }\n set headerFilter(value: dxGanttHeaderFilter) {\n this._setOption('headerFilter', value);\n }\n\n\n /**\n * Specifies the UI component&apos;s height.\n \n */\n @Input()\n get height(): number | string | undefined {\n return this._getOption('height');\n }\n set height(value: number | string | undefined) {\n this._setOption('height', value);\n }\n\n\n /**\n * Specifies text for a hint that appears when a user pauses on the UI component.\n \n */\n @Input()\n get hint(): string | undefined {\n return this._getOption('hint');\n }\n set hint(value: string | undefined) {\n this._setOption('hint', value);\n }\n\n\n /**\n * Specifies whether the UI component changes its state when a user pauses on it.\n \n */\n @Input()\n get hoverStateEnabled(): boolean {\n return this._getOption('hoverStateEnabled');\n }\n set hoverStateEnabled(value: boolean) {\n this._setOption('hoverStateEnabled', value);\n }\n\n\n /**\n * Configures resource assignments.\n \n */\n @Input()\n get resourceAssignments(): { dataSource?: Array<any> | DataSource | DataSourceOptions | null | Store | string, keyExpr?: ((resourceAssignment: any) => any) | string, resourceIdExpr?: ((resourceAssignment: any, value: any) => any) | string, taskIdExpr?: ((resourceAssignment: any, value: any) => any) | string } {\n return this._getOption('resourceAssignments');\n }\n set resourceAssignments(value: { dataSource?: Array<any> | DataSource | DataSourceOptions | null | Store | string, keyExpr?: ((resourceAssignment: any) => any) | string, resourceIdExpr?: ((resourceAssignment: any, value: any) => any) | string, taskIdExpr?: ((resourceAssignment: any, value: any) => any) | string }) {\n this._setOption('resourceAssignments', value);\n }\n\n\n /**\n * Configures task resources.\n \n */\n @Input()\n get resources(): { colorExpr?: ((resource: any, value: any) => any) | string, dataSource?: Array<any> | DataSource | DataSourceOptions | null | Store | string, keyExpr?: ((resource: any) => any) | string, textExpr?: ((resource: any, value: any) => string) | string } {\n return this._getOption('resources');\n }\n set resources(value: { colorExpr?: ((resource: any, value: any) => any) | string, dataSource?: Array<any> | DataSource | DataSourceOptions | null | Store | string, keyExpr?: ((resource: any) => any) | string, textExpr?: ((resource: any, value: any) => string) | string }) {\n this._setOption('resources', value);\n }\n\n\n /**\n * Specifies the root task&apos;s identifier.\n \n */\n @Input()\n get rootValue(): any {\n return this._getOption('rootValue');\n }\n set rootValue(value: any) {\n this._setOption('rootValue', value);\n }\n\n\n /**\n * Specifies the zoom level of tasks in the Gantt chart.\n \n */\n @Input()\n get scaleType(): GanttScaleType {\n return this._getOption('scaleType');\n }\n set scaleType(value: GanttScaleType) {\n this._setOption('scaleType', value);\n }\n\n\n /**\n * Configures zoom range settings.\n \n */\n @Input()\n get scaleTypeRange(): { max?: GanttScaleType, min?: GanttScaleType } {\n return this._getOption('scaleTypeRange');\n }\n set scaleTypeRange(value: { max?: GanttScaleType, min?: GanttScaleType }) {\n this._setOption('scaleTypeRange', value);\n }\n\n\n /**\n * Allows you to select a row or determine which row is selected.\n \n */\n @Input()\n get selectedRowKey(): any | undefined {\n return this._getOption('selectedRowKey');\n }\n set selectedRowKey(value: any | undefined) {\n this._setOption('selectedRowKey', value);\n }\n\n\n /**\n * Specifies whether to display dependencies between tasks.\n \n */\n @Input()\n get showDependencies(): boolean {\n return this._getOption('showDependencies');\n }\n set showDependencies(value: boolean) {\n this._setOption('showDependencies', value);\n }\n\n\n /**\n * Specifies whether to display task resources.\n \n */\n @Input()\n get showResources(): boolean {\n return this._getOption('showResources');\n }\n set showResources(value: boolean) {\n this._setOption('showResources', value);\n }\n\n\n /**\n * Specifies whether to show/hide horizontal faint lines that separate tasks.\n \n */\n @Input()\n get showRowLines(): boolean {\n return this._getOption('showRowLines');\n }\n set showRowLines(value: boolean) {\n this._setOption('showRowLines', value);\n }\n\n\n /**\n * Configures sort settings.\n \n */\n @Input()\n get sorting(): dxGanttSorting {\n return this._getOption('sorting');\n }\n set sorting(value: dxGanttSorting) {\n this._setOption('sorting', value);\n }\n\n\n /**\n * Specifies the start date of the date interval in the Gantt chart.\n \n */\n @Input()\n get startDateRange(): Date {\n return this._getOption('startDateRange');\n }\n set startDateRange(value: Date) {\n this._setOption('startDateRange', value);\n }\n\n\n /**\n * Configures strip lines.\n \n */\n @Input()\n get stripLines(): Array<dxGanttStripLine> {\n return this._getOption('stripLines');\n }\n set stripLines(value: Array<dxGanttStripLine>) {\n this._setOption('stripLines', value);\n }\n\n\n /**\n * Specifies the number of the element when the Tab key is used for navigating.\n \n */\n @Input()\n get tabIndex(): number {\n return this._getOption('tabIndex');\n }\n set tabIndex(value: number) {\n this._setOption('tabIndex', value);\n }\n\n\n /**\n * Specifies custom content for the task.\n \n */\n @Input()\n get taskContentTemplate(): any {\n return this._getOption('taskContentTemplate');\n }\n set taskContentTemplate(value: any) {\n this._setOption('taskContentTemplate', value);\n }\n\n\n /**\n * Specifies the width of task list columns in pixels.\n \n */\n @Input()\n get taskListWidth(): number {\n return this._getOption('taskListWidth');\n }\n set taskListWidth(value: number) {\n this._setOption('taskListWidth', value);\n }\n\n\n /**\n * Specifies custom content for the tooltip that displays the task&apos;s progress while the progress handler is resized in the UI.\n \n */\n @Input()\n get taskProgressTooltipContentTemplate(): any {\n return this._getOption('taskProgressTooltipContentTemplate');\n }\n set taskProgressTooltipContentTemplate(value: any) {\n this._setOption('taskProgressTooltipContentTemplate', value);\n }\n\n\n /**\n * Configures tasks.\n \n */\n @Input()\n get tasks(): { colorExpr?: ((task: any, value: any) => any) | string, dataSource?: Array<any> | DataSource | DataSourceOptions | null | Store | string, endExpr?: ((task: any, value: any) => any) | string, keyExpr?: ((task: any) => any) | string, parentIdExpr?: ((task: any, value: any) => any) | string, progressExpr?: ((task: any, value: any) => any) | string, startExpr?: ((task: any, value: any) => any) | string, titleExpr?: ((task: any, value: any) => any) | string } {\n return this._getOption('tasks');\n }\n set tasks(value: { colorExpr?: ((task: any, value: any) => any) | string, dataSource?: Array<any> | DataSource | DataSourceOptions | null | Store | string, endExpr?: ((task: any, value: any) => any) | string, keyExpr?: ((task: any) => any) | string, parentIdExpr?: ((task: any, value: any) => any) | string, progressExpr?: ((task: any, value: any) => any) | string, startExpr?: ((task: any, value: any) => any) | string, titleExpr?: ((task: any, value: any) => any) | string }) {\n this._setOption('tasks', value);\n }\n\n\n /**\n * Specifies custom content for the tooltip that displays the task&apos;s start and end time while the task is resized in the UI.\n \n */\n @Input()\n get taskTimeTooltipContentTemplate(): any {\n return this._getOption('taskTimeTooltipContentTemplate');\n }\n set taskTimeTooltipContentTemplate(value: any) {\n this._setOption('taskTimeTooltipContentTemplate', value);\n }\n\n\n /**\n * Specifies a task&apos;s title position.\n \n */\n @Input()\n get taskTitlePosition(): GanttTaskTitlePosition {\n return this._getOption('taskTitlePosition');\n }\n set taskTitlePosition(value: GanttTaskTitlePosition) {\n this._setOption('taskTitlePosition', value);\n }\n\n\n /**\n * Specifies custom content for the task tooltip.\n \n */\n @Input()\n get taskTooltipContentTemplate(): any {\n return this._getOption('taskTooltipContentTemplate');\n }\n set taskTooltipContentTemplate(value: any) {\n this._setOption('taskTooltipContentTemplate', value);\n }\n\n\n /**\n * Configures toolbar settings.\n \n */\n @Input()\n get toolbar(): dxGanttToolbar {\n return this._getOption('toolbar');\n }\n set toolbar(value: dxGanttToolbar) {\n this._setOption('toolbar', value);\n }\n\n\n /**\n * Configures validation properties.\n \n */\n @Input()\n get validation(): { autoUpdateParentTasks?: boolean, enablePredecessorGap?: boolean, validateDependencies?: boolean } {\n return this._getOption('validation');\n }\n set validation(value: { autoUpdateParentTasks?: boolean, enablePredecessorGap?: boolean, validateDependencies?: boolean }) {\n this._setOption('validation', value);\n }\n\n\n /**\n * Specifies whether the UI component is visible.\n \n */\n @Input()\n get visible(): boolean {\n return this._getOption('visible');\n }\n set visible(value: boolean) {\n this._setOption('visible', value);\n }\n\n\n /**\n * Specifies the UI component&apos;s width.\n \n */\n @Input()\n get width(): number | string | undefined {\n return this._getOption('width');\n }\n set width(value: number | string | undefined) {\n this._setOption('width', value);\n }\n\n /**\n \n * A function that is executed when the UI component is rendered and each time the component is repainted.\n \n \n */\n @Output() onContentReady: EventEmitter<ContentReadyEvent>;\n\n /**\n \n * A function that is executed before the context menu is rendered.\n \n \n */\n @Output() onContextMenuPreparing: EventEmitter<ContextMenuPreparingEvent>;\n\n /**\n \n * A function that is executed after a custom command item was clicked. Allows you to implement a custom command&apos;s functionality.\n \n \n */\n @Output() onCustomCommand: EventEmitter<CustomCommandEvent>;\n\n /**\n \n * A function that is executed when a dependency is deleted.\n \n \n */\n @Output() onDependencyDeleted: EventEmitter<DependencyDeletedEvent>;\n\n /**\n \n * A function that is executed before a dependency is deleted.\n \n \n */\n @Output() onDependencyDeleting: EventEmitter<DependencyDeletingEvent>;\n\n /**\n \n * A function that is executed when a dependency is inserted.\n \n \n */\n @Output() onDependencyInserted: EventEmitter<DependencyInsertedEvent>;\n\n /**\n \n * A function that is executed before a dependency is inserted.\n \n \n */\n @Output() onDependencyInserting: EventEmitter<DependencyInsertingEvent>;\n\n /**\n \n * A function that is executed before the UI component is disposed of.\n \n \n */\n @Output() onDisposing: EventEmitter<DisposingEvent>;\n\n /**\n \n * A function used in JavaScript frameworks to save the UI component instance.\n \n \n */\n @Output() onInitialized: EventEmitter<InitializedEvent>;\n\n /**\n \n * A function that is executed after a UI component property is changed.\n \n \n */\n @Output() onOptionChanged: EventEmitter<OptionChangedEvent>;\n\n /**\n \n * A function that is executed when a resource is assigned to a task.\n \n \n */\n @Output() onResourceAssigned: EventEmitter<ResourceAssignedEvent>;\n\n /**\n \n * A function that is executed before a resource is assigned to a task.\n \n \n */\n @Output() onResourceAssigning: EventEmitter<ResourceAssigningEvent>;\n\n /**\n \n * A function that is executed when a resource is deleted.\n \n \n */\n @Output() onResourceDeleted: EventEmitter<ResourceDeletedEvent>;\n\n /**\n \n * A function that is executed before a resource is deleted.\n \n \n */\n @Output() onResourceDeleting: EventEmitter<ResourceDeletingEvent>;\n\n /**\n \n * A function that is executed when a resource is inserted.\n \n \n */\n @Output() onResourceInserted: EventEmitter<ResourceInsertedEvent>;\n\n /**\n \n * A function that is executed before a resource is inserted.\n \n \n */\n @Output() onResourceInserting: EventEmitter<ResourceInsertingEvent>;\n\n /**\n \n * A function that is executed before the Resource Manager dialog is shown.\n \n \n */\n @Output() onResourceManagerDialogShowing: EventEmitter<ResourceManagerDialogShowingEvent>;\n\n /**\n \n * A function that is executed when a resource is unassigned from a task.\n \n \n */\n @Output() onResourceUnassigned: EventEmitter<ResourceUnassignedEvent>;\n\n /**\n \n * A function that is executed before a resource is unassigned from a task.\n \n \n */\n @Output() onResourceUnassigning: EventEmitter<ResourceUnassigningEvent>;\n\n /**\n \n * A function that is executed before a scale cell is prepared.\n \n \n */\n @Output() onScaleCellPrepared: EventEmitter<ScaleCellPreparedEvent>;\n\n /**\n \n * A function that is executed after users select a task or clear its selection.\n \n \n */\n @Output() onSelectionChanged: EventEmitter<SelectionChangedEvent>;\n\n /**\n \n * A function that is executed when a user clicks a task.\n \n \n */\n @Output() onTaskClick: EventEmitter<TaskClickEvent>;\n\n /**\n \n * A function that is executed when a user double-clicks a task.\n \n \n */\n @Output() onTaskDblClick: EventEmitter<TaskDblClickEvent>;\n\n /**\n \n * A function that is executed when a task is deleted.\n \n \n */\n @Output() onTaskDeleted: EventEmitter<TaskDeletedEvent>;\n\n /**\n \n * A function that is executed before a task is deleted.\n \n \n */\n @Output() onTaskDeleting: EventEmitter<TaskDeletingEvent>;\n\n /**\n \n * A function that is executed before the edit dialog is shown.\n \n \n */\n @Output() onTaskEditDialogShowing: EventEmitter<TaskEditDialogShowingEvent>;\n\n /**\n \n * A function that is executed when a task is inserted.\n \n \n */\n @Output() onTaskInserted: EventEmitter<TaskInsertedEvent>;\n\n /**\n \n * A function that is executed before a task is inserted.\n \n \n */\n @Output() onTaskInserting: EventEmitter<TaskInsertingEvent>;\n\n /**\n \n * A function that is executed before a task is moved.\n \n \n */\n @Output() onTaskMoving: EventEmitter<TaskMovingEvent>;\n\n /**\n \n * A function that is executed when a task is updated.\n \n \n */\n @Output() onTaskUpdated: EventEmitter<TaskUpdatedEvent>;\n\n /**\n \n * A function that is executed before a task is updated.\n \n \n */\n @Output() onTaskUpdating: EventEmitter<TaskUpdatingEvent>;\n\n /**\n \n * This member supports the internal infrastructure and is not intended to be used directly from your code.\n \n */\n @Output() accessKeyChange: EventEmitter<string | undefined>;\n\n /**\n \n * This member supports the internal infrastructure and is not intended to be used directly from your code.\n \n */\n @Output() activeStateEnabledChange: EventEmitter<boolean>;\n\n /**\n \n * This member supports the internal infrastructure and is not intended to be used directly from your code.\n \n */\n @Output() allowSelectionChange: EventEmitter<boolean>;\n\n /**\n \n * This member supports the internal infrastructure and is not intended to be used directly from your code.\n \n */\n @Output() columnsChange: EventEmitter<Array<dxGanttColumn | string>>;\n\n /**\n \n * This member supports the internal infrastructure and is not intended to be used directly from your code.\n \n */\n @Output() contextMenuChange: EventEmitter<dxGanttContextMenu>;\n\n /**\n \n * This member supports the internal infrastructure and is not intended to be used directly from your code.\n \n */\n @Output() dependenciesChange: EventEmitter<{ dataSource?: Array<any> | DataSource | DataSourceOptions | null | Store | string, keyExpr?: ((dependency: any) => any) | string, predecessorIdExpr?: ((dependency: any, value: any) => any) | string, successorIdExpr?: ((dependency: any, value: any) => any) | string, typeExpr?: ((dependency: any, value: any) => any) | string }>;\n\n /**\n \n * This member supports the internal infrastructure and is not intended to be used directly from your code.\n \n */\n @Output() disabledChange: EventEmitter<boolean>;\n\n /**\n \n * This member supports the internal infrastructure and is not intended to be used directly from your code.\n \n */\n @Output() editingChange: EventEmitter<{ allowDependencyAdding?: boolean, allowDependencyDeleting?: boolean, allowResourceAdding?: boolean, allowResourceDeleting?: boolean, allowResourceUpdating?: boolean, allowTaskAdding?: boolean, allowTaskDeleting?: boolean, allowTaskResourceUpdating?: boolean, allowTaskUpdating?: boolean, enabled?: boolean }>;\n\n /**\n \n * This member supports the internal infrastructure and is not intended to be used directly from your code.\n \n */\n @Output() elementAttrChange: EventEmitter<Record<string, any>>;\n\n /**\n \n * This member supports the internal infrastructure and is not intended to be used directly from your code.\n \n */\n @Output() endDateRangeChange: EventEmitter<Date>;\n\n /**\n \n * This member supports the internal infrastructure and is not intended to be used directly from your code.\n \n */\n @Output() filterRowChange: EventEmitter<dxGanttFilterRow>;\n\n /**\n \n * This member supports the internal infrastructure and is not intended to be used directly from your code.\n \n */\n @Output() firstDayOfWeekChange: EventEmitter<DayOfWeek | undefined>;\n\n /**\n \n * This member supports the internal infrastructure and is not intended to be used directly from your code.\n \n */\n @Output() focusStateEnabledChange: EventEmitter<boolean>;\n\n /**\n \n * This member supports the internal infrastructure and is not intended to be used directly from your code.\n \n */\n @Output() headerFilterChange: EventEmitter<dxGanttHeaderFilter>;\n\n /**\n \n * This member supports the internal infrastructure and is not intended to be used directly from your code.\n \n */\n @Output() heightChange: EventEmitter<number | string | undefined>;\n\n /**\n \n * This member supports the internal infrastructure and is not intended to be used directly from your code.\n \n */\n @Output() hintChange: EventEmitter<string | undefined>;\n\n /**\n \n * This member supports the internal infrastructure and is not intended to be used directly from your code.\n \n */\n @Output() hoverStateEnabledChange: EventEmitter<boolean>;\n\n /**\n \n * This member supports the internal infrastructure and is not intended to be used directly from your code.\n \n */\n @Output() resourceAssignmentsChange: EventEmitter<{ dataSource?: Array<any> | DataSource | DataSourceOptions | null | Store | string, keyExpr?: ((resourceAssignment: any) => any) | string, resourceIdExpr?: ((resourceAssignment: any, value: any) => any) | string, taskIdExpr?: ((resourceAssignment: any, value: any) => any) | string }>;\n\n /**\n \n * This member supports the internal infrastructure and is not intended to be used directly from your code.\n \n */\n @Output() resourcesChange: EventEmitter<{ colorExpr?: ((resource: any, value: any) => any) | string, dataSource?: Array<any> | DataSource | DataSourceOptions | null | Store | string, keyExpr?: ((resource: any) => any) | string, textExpr?: ((resource: any, value: any) => string) | string }>;\n\n /**\n \n * This member supports the internal infrastructure and is not intended to be used directly from your code.\n \n */\n @Output() rootValueChange: EventEmitter<any>;\n\n /**\n \n * This member supports the internal infrastructure and is not intended to be used directly from your code.\n \n */\n @Output() scaleTypeChange: EventEmitter<GanttScaleType>;\n\n /**\n \n * This member supports the internal infrastructure and is not intended to be used directly from your code.\n \n */\n @Output() scaleTypeRangeChange: EventEmitter<{ max?: GanttScaleType, min?: GanttScaleType }>;\n\n /**\n \n * This member supports the internal infrastructure and is not intended to be used directly from your code.\n \n */\n @Output() selectedRowKeyChange: EventEmitter<any | undefined>;\n\n /**\n \n * This member supports the internal infrastructure and is not intended to be used directly from your code.\n \n */\n @Output() showDependenciesChange: EventEmitter<boolean>;\n\n /**\n \n * This member supports the internal infrastructure and is not intended to be used directly from your code.\n \n */\n @Output() showResourcesChange: EventEmitter<boolean>;\n\n /**\n \n * This member supports the internal infrastructure and is not intended to be used directly from your code.\n \n */\n @Output() showRowLinesChange: EventEmitter<boolean>;\n\n /**\n \n * This member supports the internal infrastructure and is not intended to be used directly from your code.\n \n */\n @Output() sortingChange: EventEmitter<dxGanttSorting>;\n\n /**\n \n * This member supports the internal infrastructure and is not intended to be used directly from your code.\n \n */\n @Output() startDateRangeChange: EventEmitter<Date>;\n\n /**\n \n * This member supports the internal infrastructure and is not intended to be used directly from your code.\n \n */\n @Output() stripLinesChange: EventEmitter<Array<dxGanttStripLine>>;\n\n /**\n \n * This member supports the internal infrastructure and is not intended to be used directly from your code.\n \n */\n @Output() tabIndexChange: EventEmitter<number>;\n\n /**\n \n * This member supports the internal infrastructure and is not intended to be used directly from your code.\n \n */\n @Output() taskContentTemplateChange: EventEmitter<any>;\n\n /**\n \n * This member supports the internal infrastructure and is not intended to be used directly from your code.\n \n */\n @Output() taskListWidthChange: EventEmitter<number>;\n\n /**\n \n * This member supports the internal infrastructure and is not intended to be used directly from your code.\n \n */\n @Output() taskProgressTooltipContentTemplateChange: EventEmitter<any>;\n\n /**\n \n * This member supports the internal infrastructure and is not intended to be used directly from your code.\n \n */\n @Output() tasksChange: EventEmitter<{ colorExpr?: ((task: any, value: any) => any) | string, dataSource?: Array<any> | DataSource | DataSourceOptions | null | Store | string, endExpr?: ((task: any, value: any) => any) | string, keyExpr?: ((task: any) => any) | string, parentIdExpr?: ((task: any, value: any) => any) | string, progressExpr?: ((task: any, value: any) => any) | string, startExpr?: ((task: any, value: any) => any) | string, titleExpr?: ((task: any, value: any) => any) | string }>;\n\n /**\n \n * This member supports the internal infrastructure and is not intended to be used directly from your code.\n \n */\n @Output() taskTimeTooltipContentTemplateChange: EventEmitter<any>;\n\n /**\n \n * This member supports the internal infrastructure and is not intended to be used directly from your code.\n \n */\n @Output() taskTitlePositionChange: EventEmitter<GanttTaskTitlePosition>;\n\n /**\n \n * This member supports the internal infrastructure and is not intended to be used directly from your code.\n \n */\n @Output() taskTooltipContentTemplateChange: EventEmitter<any>;\n\n /**\n \n * This member supports the internal infrastructure and is not intended to be used directly from your code.\n \n */\n @Output() toolbarChange: EventEmitter<dxGanttToolbar>;\n\n /**\n \n * This member supports the internal infrastructure and is not intended to be used directly from your code.\n \n */\n @Output() validationChange: EventEmitter<{ autoUpdateParentTasks?: boolean, enablePredecessorGap?: boolean, validateDependencies?: boolean }>;\n\n /**\n \n * This member supports the internal infrastructure and is not intended to be used directly from your code.\n \n */\n @Output() visibleChange: EventEmitter<boolean>;\n\n /**\n \n * This member supports the internal infrastructure and is not intended to be used directly from your code.\n \n */\n @Output() widthChange: EventEmitter<number | string | undefined>;\n\n\n\n\n constructor(elementRef: ElementRef, ngZone: NgZone, templateHost: DxTemplateHost,\n private _watcherHelper: WatcherHelper,\n private _idh: IterableDifferHelper,\n optionHost: NestedOptionHost,\n transferState: TransferState,\n @Inject(PLATFORM_ID) platformId: any) {\n\n super(elementRef, ngZone, templateHost, _watcherHelper, transferState, platformId);\n\n this._createEventEmitters([\n { subscribe: 'contentReady', emit: 'onContentReady' },\n { subscribe: 'contextMenuPreparing', emit: 'onContextMenuPreparing' },\n { subscribe: 'customCommand', emit: 'onCustomCommand' },\n { subscribe: 'dependencyDeleted', emit: 'onDependencyDeleted' },\n { subscribe: 'dependencyDeleting', emit: 'onDependencyDeleting' },\n { subscribe: 'dependencyInserted', emit: 'onDependencyInserted' },\n { subscribe: 'dependencyInserting', emit: 'onDependencyInserting' },\n { subscribe: 'disposing', emit: 'onDisposing' },\n { subscribe: 'initialized', emit: 'onInitialized' },\n { subscribe: 'optionChanged', emit: 'onOptionChanged' },\n { subscribe: 'resourceAssigned', emit: 'onResourceAssigned' },\n { subscribe: 'resourceAssigning', emit: 'onResourceAssigning' },\n { subscribe: 'resourceDeleted', emit: 'onResourceDeleted' },\n { subscribe: 'resourceDeleting', emit: 'onResourceDeleting' },\n { subscribe: 'resourceInserted', emit: 'onResourceInserted' },\n { subscribe: 'resourceInserting', emit: 'onResourceInserting' },\n { subscribe: 'resourceManagerDialogShowing', emit: 'onResourceManagerDialogShowing' },\n { subscribe: 'resourceUnassigned', emit: 'onResourceUnassigned' },\n { subscribe: 'resourceUnassigning', emit: 'onResourceUnassigning' },\n { subscribe: 'scaleCellPrepared', emit: 'onScaleCellPrepared' },\n { subscribe: 'selectionChanged', emit: 'onSelectionChanged' },\n { subscribe: 'taskClick', emit: 'onTaskClick' },\n { subscribe: 'taskDblClick', emit: 'onTaskDblClick' },\n { subscribe: 'taskDeleted', emit: 'onTaskDeleted' },\n { subscribe: 'taskDeleting', emit: 'onTaskDeleting' },\n { subscribe: 'taskEditDialogShowing', emit: 'onTaskEditDialogShowing' },\n { subscribe: 'taskInserted', emit: 'onTaskInserted' },\n { subscribe: 'taskInserting', emit: 'onTaskInserting' },\n { subscribe: 'taskMoving', emit: 'onTaskMoving' },\n { subscribe: 'taskUpdated', emit: 'onTaskUpdated' },\n { subscribe: 'taskUpdating', emit: 'onTaskUpdating' },\n { emit: 'accessKeyChange' },\n { emit: 'activeStateEnabledChange' },\n { emit: 'allowSelectionChange' },\n { emit: 'columnsChange' },\n { emit: 'contextMenuChange' },\n { emit: 'dependenciesChange' },\n { emit: 'disabledChange' },\n { emit: 'editingChange' },\n { emit: 'elementAttrChange' },\n { emit: 'endDateRangeChange' },\n { emit: 'filterRowChange' },\n { emit: 'firstDayOfWeekChange' },\n { emit: 'focusStateEnabledChange' },\n { emit: 'headerFilterChange' },\n { emit: 'heightChange' },\n { emit: 'hintChange' },\n { emit: 'hoverStateEnabledChange' },\n { emit: 'resourceAssignmentsChange' },\n { emit: 'resourcesChange' },\n { emit: 'rootValueChange' },\n { emit: 'scaleTypeChange' },\n { emit: 'scaleTypeRangeChange' },\n { emit: 'selectedRowKeyChange' },\n { emit: 'showDependenciesChange' },\n { emit: 'showResourcesChange' },\n { emit: 'showRowLinesChange' },\n { emit: 'sortingChange' },\n { emit: 'startDateRangeChange' },\n { emit: 'stripLinesChange' },\n { emit: 'tabIndexChange' },\n { emit: 'taskContentTemplateChange' },\n { emit: 'taskListWidthChange' },\n { emit: 'taskProgressTooltipContentTemplateChange' },\n { emit: 'tasksChange' },\n { emit: 'taskTimeTooltipContentTemplateChange' },\n { emit: 'taskTitlePositionChange' },\n { emit: 'taskTooltipContentTemplateChange' },\n { emit: 'toolbarChange' },\n { emit: 'validationChange' },\n { emit: 'visibleChange' },\n { emit: 'widthChange' }\n ]);\n\n this._idh.setHost(this);\n optionHost.setHost(this);\n }\n\n protected _createInstance(element, options) {\n\n return new DxGantt(element, options);\n }\n\n\n ngOnDestroy() {\n this._destroyWidget();\n }\n\n ngOnChanges(changes: SimpleChanges) {\n super.ngOnChanges(changes);\n this.setupChanges('columns', changes);\n this.setupChanges('stripLines', changes);\n }\n\n setupChanges(prop: string, changes: SimpleChanges) {\n if (!(prop in this._optionsToUpdate)) {\n this._idh.setup(prop, changes);\n }\n }\n\n ngDoCheck() {\n this._idh.doCheck('columns');\n this._idh.doCheck('stripLines');\n this._watcherHelper.checkWatchers();\n super.ngDoCheck();\n super.clearChangedOptions();\n }\n\n _setOption(name: string, value: any) {\n let isSetup = this._idh.setupSingle(name, value);\n let isChanged = this._idh.getChanges(name, value) !== null;\n\n if (isSetup || isChanged) {\n super._setOption(name, value);\n }\n }\n}\n\n@NgModule({\n imports: [\n DxGanttComponent,\n DxiColumnModule,\n DxoFormatModule,\n DxoHeaderFilterModule,\n DxoSearchModule,\n DxoContextMenuModule,\n DxiItemModule,\n DxoDependenciesModule,\n DxoEditingModule,\n DxoFilterRowModule,\n DxoOperationDescriptionsModule,\n DxoTextsModule,\n DxoResourceAssignmentsModule,\n DxoResourcesModule,\n DxoScaleTypeRangeModule,\n DxoSortingModule,\n DxiStripLineModule,\n DxoTasksModule,\n DxoToolbarModule,\n DxoValidationModule,\n DxiGanttColumnModule,\n DxoGanttColumnHeaderFilterModule,\n DxoGanttColumnHeaderFilterSearchModule,\n DxoGanttContextMenuModule,\n DxiGanttContextMenuItemModule,\n DxiGanttContextMenuItemItemModule,\n DxoGanttDependenciesModule,\n DxoGanttEditingModule,\n DxoGanttFilterRowModule,\n DxoGanttFormatModule,\n DxoGanttGanttHeaderFilterModule,\n DxoGanttGanttHeaderFilterSearchModule,\n DxoGanttHeaderFilterModule,\n DxiGanttItemModule,\n DxoGanttOperationDescriptionsModule,\n DxoGanttResourceAssignmentsModule,\n DxoGanttResourcesModule,\n DxoGanttScaleTypeRangeModule,\n DxoGanttSearchModule,\n DxoGanttSortingModule,\n DxiGanttStripLineModule,\n DxoGanttTasksModule,\n DxoGanttTextsModule,\n DxoGanttToolbarModule,\n DxiGanttToolbarItemModule,\n DxoGanttValidationModule,\n DxIntegrationModule,\n DxTemplateModule\n ],\n exports: [\n DxGanttComponent,\n DxiColumnModule,\n DxoFormatModule,\n DxoHeaderFilterModule,\n DxoSearchModule,\n DxoContextMenuModule,\n DxiItemModule,\n DxoDependenciesModule,\n DxoEditingModule,\n DxoFilterRowModule,\n DxoOperationDescriptionsModule,\n DxoTextsModule,\n DxoResourceAssignmentsModule,\n DxoResourcesModule,\n DxoScaleTypeRangeModule,\n DxoSortingModule,\n DxiStripLineModule,\n DxoTasksModule,\n DxoToolbarModule,\n DxoValidationModule,\n DxiGanttColumnModule,\n DxoGanttColumnHeaderFilterModule,\n DxoGanttColumnHeaderFilterSearchModule,\n DxoGanttContextMenuModule,\n DxiGanttContextMenuItemModule,\n DxiGanttContextMenuItemItemModule,\n DxoGanttDependenciesModule,\n DxoGanttEditingModule,\n DxoGanttFilterRowModule,\n DxoGanttFormatModule,\n DxoGanttGanttHeaderFilterModule,\n DxoGanttGanttHeaderFilterSearchModule,\n DxoGanttHeaderFilterModule,\n DxiGanttItemModule,\n DxoGanttOperationDescriptionsModule,\n DxoGanttResourceAssignmentsModule,\n DxoGanttResourcesModule,\n DxoGanttScaleTypeRangeModule,\n DxoGanttSearchModule,\n DxoGanttSortingModule,\n DxiGanttStripLineModule,\n DxoGanttTasksModule,\n DxoGanttTextsModule,\n DxoGanttToolbarModule,\n DxiGanttToolbarItemModule,\n DxoGanttValidationModule,\n DxTemplateModule\n ]\n})\nexport class DxGanttModule { }\n\nexport * from 'devextreme-angular/ui/gantt/nested';\n\nimport type * as DxGanttTypes from \"devextreme/ui/gantt_types\";\nexport { DxGanttTypes };\n\n\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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