@progress/kendo-angular-gantt 21.4.1-develop.1 → 22.0.0-develop.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (127) hide show
  1. package/columns/column-base.component.d.ts +1 -1
  2. package/fesm2022/progress-kendo-angular-gantt.mjs +201 -201
  3. package/localization/messages.d.ts +1 -1
  4. package/package.json +22 -30
  5. package/rendering/gantt-task-base.d.ts +1 -1
  6. package/schematics/ngAdd/index.js +7 -7
  7. package/timeline/view-base.d.ts +1 -1
  8. package/esm2022/binding-directives/flat-binding.directive.mjs +0 -50
  9. package/esm2022/binding-directives/hierarchy-binding.directive.mjs +0 -49
  10. package/esm2022/columns/cell-template.directive.mjs +0 -47
  11. package/esm2022/columns/column-base.component.mjs +0 -22
  12. package/esm2022/columns/column-group.component.mjs +0 -80
  13. package/esm2022/columns/column-menu-template.directive.mjs +0 -40
  14. package/esm2022/columns/column.component.mjs +0 -122
  15. package/esm2022/columns/columns.mjs +0 -15
  16. package/esm2022/columns/edit-template.directive.mjs +0 -46
  17. package/esm2022/columns/filter-cell-template.directive.mjs +0 -32
  18. package/esm2022/columns/filter-menu-template.directive.mjs +0 -41
  19. package/esm2022/columns/footer-template.directive.mjs +0 -44
  20. package/esm2022/columns/header-template.directive.mjs +0 -43
  21. package/esm2022/columns/span-column.component.mjs +0 -82
  22. package/esm2022/common/default-callbacks.mjs +0 -25
  23. package/esm2022/common/mapping.service.mjs +0 -62
  24. package/esm2022/common/option-changes.service.mjs +0 -28
  25. package/esm2022/dependencies/dependency-dom.service.mjs +0 -80
  26. package/esm2022/dependencies/dom-dependency-args.mjs +0 -5
  27. package/esm2022/dependencies/gantt-dependency.directive.mjs +0 -91
  28. package/esm2022/dependencies/utils.mjs +0 -195
  29. package/esm2022/directives.mjs +0 -63
  30. package/esm2022/dragging/dependency-drag-create.directive.mjs +0 -337
  31. package/esm2022/dragging/drag-validation-tooltip.component.mjs +0 -70
  32. package/esm2022/dragging/task-drag.directive.mjs +0 -94
  33. package/esm2022/dragging/task-drag.service.mjs +0 -239
  34. package/esm2022/editing/add-task.component.mjs +0 -127
  35. package/esm2022/editing/dependencies-table.component.mjs +0 -233
  36. package/esm2022/editing/edit-dialog.component.mjs +0 -225
  37. package/esm2022/editing/edit.service.mjs +0 -118
  38. package/esm2022/editing/task-fields.component.mjs +0 -127
  39. package/esm2022/editing/utils.mjs +0 -15
  40. package/esm2022/expanded-state/expand-event.mjs +0 -18
  41. package/esm2022/expanded-state/expandable.directive.mjs +0 -39
  42. package/esm2022/gantt.component.mjs +0 -2415
  43. package/esm2022/gantt.module.mjs +0 -132
  44. package/esm2022/index.mjs +0 -42
  45. package/esm2022/localization/custom-messages.component.mjs +0 -52
  46. package/esm2022/localization/gantt-localization.service.mjs +0 -27
  47. package/esm2022/localization/localized-messages.directive.mjs +0 -39
  48. package/esm2022/localization/messages.mjs +0 -453
  49. package/esm2022/models/cell-content-type.interface.mjs +0 -5
  50. package/esm2022/models/class-callbacks.mjs +0 -5
  51. package/esm2022/models/column-menu-settings.interface.mjs +0 -5
  52. package/esm2022/models/column-reorder-config.mjs +0 -5
  53. package/esm2022/models/current-time-settings.interface.mjs +0 -5
  54. package/esm2022/models/date-range.interface.mjs +0 -5
  55. package/esm2022/models/dependency-type.enum.mjs +0 -32
  56. package/esm2022/models/events/cell-click-event.interface.mjs +0 -5
  57. package/esm2022/models/events/cell-close-event.interface.mjs +0 -44
  58. package/esm2022/models/events/click-event.interface.mjs +0 -5
  59. package/esm2022/models/events/column-locked-change-event.interface.mjs +0 -5
  60. package/esm2022/models/events/column-reorder-event.interface.mjs +0 -5
  61. package/esm2022/models/events/column-resize-event.interface.mjs +0 -5
  62. package/esm2022/models/events/column-visibility-change-event.interface.mjs +0 -5
  63. package/esm2022/models/events/data-state-change-event.interface.mjs +0 -5
  64. package/esm2022/models/events/dependency-add-event.interface.mjs +0 -5
  65. package/esm2022/models/events/index.mjs +0 -5
  66. package/esm2022/models/events/selected-view-change-event.interface.mjs +0 -5
  67. package/esm2022/models/events/task-add-event.interface.mjs +0 -5
  68. package/esm2022/models/events/task-click-event.interface.mjs +0 -5
  69. package/esm2022/models/events/task-delete-event.interface.mjs +0 -5
  70. package/esm2022/models/events/task-drag-event.interface.mjs +0 -5
  71. package/esm2022/models/events/task-edit-event.interface.mjs +0 -5
  72. package/esm2022/models/filterable-settings.mjs +0 -5
  73. package/esm2022/models/gantt-dependency-model-fields.interface.mjs +0 -13
  74. package/esm2022/models/gantt-dependency.interface.mjs +0 -5
  75. package/esm2022/models/gantt-task-model-fields.interface.mjs +0 -15
  76. package/esm2022/models/gantt-task.interface.mjs +0 -5
  77. package/esm2022/models/models.mjs +0 -8
  78. package/esm2022/models/slot.interface.mjs +0 -5
  79. package/esm2022/models/sort-settings.mjs +0 -17
  80. package/esm2022/models/splitter-pane-options.interface.mjs +0 -20
  81. package/esm2022/models/timeline-header-date-format.mjs +0 -5
  82. package/esm2022/models/timeline-options.interface.mjs +0 -5
  83. package/esm2022/models/timeline-view.mjs +0 -5
  84. package/esm2022/models/toolbar-settings.mjs +0 -5
  85. package/esm2022/models/tooltip-options.interface.mjs +0 -5
  86. package/esm2022/models/view-item.interface.mjs +0 -5
  87. package/esm2022/navigation/navigation-models.mjs +0 -5
  88. package/esm2022/navigation/navigation.service.mjs +0 -271
  89. package/esm2022/navigation/utils.mjs +0 -61
  90. package/esm2022/package-metadata.mjs +0 -16
  91. package/esm2022/progress-kendo-angular-gantt.mjs +0 -8
  92. package/esm2022/rendering/gantt-header-table-body.component.mjs +0 -61
  93. package/esm2022/rendering/gantt-milestone-task.component.mjs +0 -102
  94. package/esm2022/rendering/gantt-summary-task.component.mjs +0 -157
  95. package/esm2022/rendering/gantt-task-base.mjs +0 -230
  96. package/esm2022/rendering/gantt-task.component.mjs +0 -227
  97. package/esm2022/rendering/gantt-tasks-table-body.component.mjs +0 -206
  98. package/esm2022/scrolling/drag-scroll-settings.mjs +0 -20
  99. package/esm2022/scrolling/scroll-sync.service.mjs +0 -83
  100. package/esm2022/scrolling/timeline-scroll.directive.mjs +0 -83
  101. package/esm2022/scrolling/timeline-scroll.service.mjs +0 -37
  102. package/esm2022/scrolling/utils.mjs +0 -77
  103. package/esm2022/selection/selectable.directive.mjs +0 -126
  104. package/esm2022/selection/selection-change-event.mjs +0 -5
  105. package/esm2022/template-directives/summary-task-template.directive.mjs +0 -43
  106. package/esm2022/template-directives/task-content-template.directive.mjs +0 -46
  107. package/esm2022/template-directives/task-drag-tooltip-template.directive.mjs +0 -47
  108. package/esm2022/template-directives/task-template.directive.mjs +0 -41
  109. package/esm2022/template-directives/task-tooltip-template.directive.mjs +0 -48
  110. package/esm2022/timeline/current-time-marker.service.mjs +0 -90
  111. package/esm2022/timeline/gantt-timeline.component.mjs +0 -624
  112. package/esm2022/timeline/timeline-base-view.service.mjs +0 -201
  113. package/esm2022/timeline/timeline-day-view.component.mjs +0 -49
  114. package/esm2022/timeline/timeline-day-view.service.mjs +0 -68
  115. package/esm2022/timeline/timeline-month-view.component.mjs +0 -49
  116. package/esm2022/timeline/timeline-month-view.service.mjs +0 -66
  117. package/esm2022/timeline/timeline-view.service.mjs +0 -38
  118. package/esm2022/timeline/timeline-week-view.component.mjs +0 -49
  119. package/esm2022/timeline/timeline-week-view.service.mjs +0 -62
  120. package/esm2022/timeline/timeline-year-view.component.mjs +0 -49
  121. package/esm2022/timeline/timeline-year-view.service.mjs +0 -57
  122. package/esm2022/timeline/view-base.mjs +0 -73
  123. package/esm2022/toolbar/toolbar-navigation.service.mjs +0 -29
  124. package/esm2022/toolbar/toolbar-template.directive.mjs +0 -56
  125. package/esm2022/toolbar/toolbar.component.mjs +0 -181
  126. package/esm2022/toolbar/view-selector.component.mjs +0 -112
  127. package/esm2022/utils.mjs +0 -311
@@ -1,2415 +0,0 @@
1
- /**-----------------------------------------------------------------------------------------
2
- * Copyright © 2026 Progress Software Corporation. All rights reserved.
3
- * Licensed under commercial license. See LICENSE.md in the project root for more information
4
- *-------------------------------------------------------------------------------------------*/
5
- import { Component, forwardRef, HostBinding, Input, Output, EventEmitter, ViewChild, ContentChildren, ContentChild, QueryList, isDevMode, Renderer2, ElementRef, NgZone, Inject, LOCALE_ID } from '@angular/core';
6
- import { TreeListComponent, DataBoundTreeComponent, ExpandableTreeComponent, TreeListSpacerComponent, CustomMessagesComponent } from '@progress/kendo-angular-treelist';
7
- import { Day } from '@progress/kendo-date-math';
8
- import { Subscription } from 'rxjs';
9
- import { validatePackage } from '@progress/kendo-licensing';
10
- import { packageMetadata } from './package-metadata';
11
- import { anyChanged, EventsOutsideAngularDirective, hasObservers, Keys, shouldShowValidationUI, getLicenseMessage, WatermarkOverlayComponent, normalizeKeys } from '@progress/kendo-angular-common';
12
- import { getIndexFromViewDigitKeyCode, isArrowUpDownKey, isExpandCollapseKey, isNavigationKey, isViewDigitKey } from './navigation/utils';
13
- import { GanttTimelineComponent } from './timeline/gantt-timeline.component';
14
- import { GanttColumnBase } from './columns/columns';
15
- import { fetchChildren, hasChildren, isSelected, rowClassCallback, taskClassCallback } from './common/default-callbacks';
16
- import { DependencyType } from './models/models';
17
- import { L10N_PREFIX, LocalizationService } from '@progress/kendo-angular-l10n';
18
- import { TimelineViewService } from './timeline/timeline-view.service';
19
- import { TimelineDayViewService } from './timeline/timeline-day-view.service';
20
- import { TimelineWeekViewService } from './timeline/timeline-week-view.service';
21
- import { TimelineMonthViewService } from './timeline/timeline-month-view.service';
22
- import { ScrollSyncService } from './scrolling/scroll-sync.service';
23
- import { DependencyDomService } from './dependencies/dependency-dom.service';
24
- import { MappingService } from './common/mapping.service';
25
- import { OptionChangesService } from './common/option-changes.service';
26
- import { EditService } from './editing/edit.service';
27
- import { TimelineScrollService } from './scrolling/timeline-scroll.service';
28
- import { GanttLocalizationService } from './localization/gantt-localization.service';
29
- import { NavigationService } from './navigation/navigation.service';
30
- import { areParentChild, getClosestTaskIndex, isClearButton, isColumnGroup, isPresent, isTask, isToolbar, normalizeGanttData, scrollbarWidth } from './utils';
31
- import { DEFAULT_TIMELINE_PANE_SETTINGS, DEFAULT_TREELIST_PANE_SETTINGS } from './models/splitter-pane-options.interface';
32
- import { GanttTaskTemplateDirective } from './template-directives/task-template.directive';
33
- import { GanttSummaryTaskTemplateDirective } from './template-directives/summary-task-template.directive';
34
- import { GanttTaskContentTemplateDirective } from './template-directives/task-content-template.directive';
35
- import { ToolbarTemplateDirective } from './toolbar/toolbar-template.directive';
36
- import { ViewBase } from './timeline/view-base';
37
- import { getEditItem } from './editing/utils';
38
- import { CellCloseEvent } from './models/events/cell-close-event.interface';
39
- import { TimeLineYearViewService } from './timeline/timeline-year-view.service';
40
- import { CurrentTimeMarkerService } from './timeline/current-time-marker.service';
41
- import { EditDialogComponent } from './editing/edit-dialog.component';
42
- import { ToolbarComponent } from './toolbar/toolbar.component';
43
- import { LocalizedMessagesDirective } from './localization/localized-messages.directive';
44
- import { SplitterComponent, SplitterPaneComponent } from '@progress/kendo-angular-layout';
45
- import { DialogActionsComponent, DialogComponent } from '@progress/kendo-angular-dialog';
46
- import { ButtonComponent } from '@progress/kendo-angular-buttons';
47
- import { GanttTaskTooltipTemplateDirective } from './template-directives/task-tooltip-template.directive';
48
- import { IntlService } from '@progress/kendo-angular-intl';
49
- import { GanttTaskDragTooltipTemplateDirective } from './template-directives/task-drag-tooltip-template.directive';
50
- import * as i0 from "@angular/core";
51
- import * as i1 from "./timeline/timeline-view.service";
52
- import * as i2 from "./scrolling/scroll-sync.service";
53
- import * as i3 from "./common/mapping.service";
54
- import * as i4 from "./common/option-changes.service";
55
- import * as i5 from "./dependencies/dependency-dom.service";
56
- import * as i6 from "./editing/edit.service";
57
- import * as i7 from "@progress/kendo-angular-l10n";
58
- import * as i8 from "./navigation/navigation.service";
59
- import * as i9 from "./timeline/current-time-marker.service";
60
- import * as i10 from "@progress/kendo-angular-intl";
61
- const TREELIST_GROUP_COLUMNS_CLASS = 'k-gantt-treelist-nested-columns';
62
- const DEFAULT_VIEW = 'week';
63
- const DEFAULT_DRAG_SCROLL_SETTINGS = {
64
- enabled: true,
65
- step: 3,
66
- interval: 1,
67
- threshold: 10
68
- };
69
- /**
70
- * Represents the [Kendo UI Gantt component for Angular](slug:overview_gantt).
71
- *
72
- * Use the Gantt component to display and manage project tasks and dependencies in a timeline view.
73
- *
74
- * @example
75
- * ```ts
76
- * import { Component } from '@angular/core';
77
- * import { GanttComponent, DependencyType } from '@progress/kendo-angular-gantt';
78
- *
79
- * @Component({
80
- * selector: 'my-app',
81
- * template: `
82
- * <kendo-gantt
83
- * [style.height.px]="500"
84
- * [kendoGanttHierarchyBinding]="data"
85
- * childrenField="subtasks"
86
- * [dependencies]="dependencies">
87
- * <kendo-gantt-column field="title" title="Task" [width]="200" [expandable]="true"></kendo-gantt-column>
88
- * <kendo-gantt-column field="start" title="Start" format="dd-MMM-yyyy" [width]="120"></kendo-gantt-column>
89
- * <kendo-gantt-column field="end" title="End" format="dd-MMM-yyyy" [width]="120"></kendo-gantt-column>
90
- * <kendo-gantt-timeline-day-view></kendo-gantt-timeline-day-view>
91
- * <kendo-gantt-timeline-week-view></kendo-gantt-timeline-week-view>
92
- * <kendo-gantt-timeline-month-view></kendo-gantt-timeline-month-view>
93
- * </kendo-gantt>
94
- * `
95
- * })
96
- * export class AppComponent {
97
- * public data: Task[] = [
98
- * {
99
- * id: 1,
100
- * title: 'Planning',
101
- * start: new Date('2024-01-01'),
102
- * end: new Date('2024-01-05'),
103
- * subtasks: []
104
- * }
105
- * ];
106
- * public dependencies = [
107
- * { id: 1, fromId: 1, toId: 2, type: DependencyType.FS }
108
- * ];
109
- * }
110
- * ```
111
- *
112
- * @remarks
113
- * Supported children components are:
114
- * {@link GanttColumnComponent},
115
- * {@link GanttSpanColumnComponent},
116
- * {@link GanttColumnGroupComponent},
117
- * {@link TimelineDayViewComponent},
118
- * {@link TimelineWeekViewComponent},
119
- * {@link TimelineMonthViewComponent},
120
- * {@link TimelineYearViewComponent},
121
- * {@link CustomMessagesComponent}.
122
- */
123
- export class GanttComponent {
124
- timelineViewService;
125
- scrollSyncService;
126
- renderer;
127
- mapper;
128
- optionChangesService;
129
- dependencyDomService;
130
- editService;
131
- localizationService;
132
- hostElement;
133
- zone;
134
- navigation;
135
- currentTimeMarkerService;
136
- intlService;
137
- localeId;
138
- treeList;
139
- timeline;
140
- /**
141
- * @hidden
142
- *
143
- * Queries the template for a task content template declaration.
144
- * In newer Angular versions the ngIf-ed value gets evaluated after the static query is resolved.
145
- * Therefore the `static` property needs to be set to `false`.
146
- */
147
- taskContentTemplate;
148
- /**
149
- * @hidden
150
- *
151
- * Queries the template for a task template declaration.
152
- * In newer Angular versions the ngIf-ed value gets evaluated after the static query is resolved.
153
- * Therefore the `static` property needs to be set to `false`.
154
- */
155
- taskTemplate;
156
- /**
157
- * @hidden
158
- *
159
- * Queries the template for a task tooltip template declaration.
160
- * In newer Angular versions the ngIf-ed value gets evaluated after the static query is resolved.
161
- * Therefore the `static` property needs to be set to `false`.
162
- */
163
- taskTooltipTemplate;
164
- /**
165
- * @hidden
166
- *
167
- * Queries the template for a task drag tooltip template declaration.
168
- * In newer Angular versions the ngIf-ed value gets evaluated after the static query is resolved.
169
- * Therefore the `static` property needs to be set to `false`.
170
- */
171
- taskDragTooltipTemplate;
172
- /**
173
- * @hidden
174
- *
175
- * Queries the template for a task summary template declaration.
176
- * In newer Angular versions the ngIf-ed value gets evaluated after the static query is resolved.
177
- * Therefore the `static` property needs to be set to `false`.
178
- */
179
- summaryTaskTemplate;
180
- toolbarTemplateChildren;
181
- get toolbarTemplate() {
182
- if (this._customToolbarTemplate) {
183
- return this._customToolbarTemplate;
184
- }
185
- return this.toolbarTemplateChildren ? this.toolbarTemplateChildren.first : undefined;
186
- }
187
- set toolbarTemplate(customToolbarTemplate) {
188
- this._customToolbarTemplate = customToolbarTemplate;
189
- }
190
- /**
191
- * @hidden
192
- */
193
- roleDescription = 'Gantt Chart';
194
- get hostRoleDescriptionAttr() {
195
- return this.roleDescription;
196
- }
197
- /**
198
- * @hidden
199
- */
200
- role = 'application';
201
- get hostRoleAttr() {
202
- return this.role;
203
- }
204
- hostClasses = true;
205
- get dir() {
206
- return this.direction;
207
- }
208
- /**
209
- * A query list of all declared columns.
210
- */
211
- set columns(columns) {
212
- this._columns = columns;
213
- this.updateTreeListGroupClass(columns);
214
- }
215
- get columns() {
216
- return this._columns;
217
- }
218
- /**
219
- * Sets the fields used to extract task data from the `data` array items.
220
- * The `id` field is also used as a unique identifier for TreeList data items.
221
- * If not set, task data items must match the [`GanttTask`](slug:api_gantt_gantttask) interface.
222
- */
223
- set taskModelFields(fields) {
224
- this.mapper.taskFields = fields;
225
- }
226
- /**
227
- * Sets the fields used to extract dependency data from the `dependencies` array items.
228
- * If not set, dependency data items must match the [`GanttDependency`](slug:api_gantt_ganttdependency) interface.
229
- */
230
- set dependencyModelFields(fields) {
231
- this.mapper.dependencyFields = fields;
232
- }
233
- /**
234
- * A query list of all declared views.
235
- */
236
- views;
237
- /**
238
- * Sets the active timeline view.
239
- * @default 'week'
240
- */
241
- set activeView(view) {
242
- this._activeView = view;
243
- }
244
- get activeView() {
245
- /**
246
- * If the default/provided activeView is not among the provided views,
247
- * fallback to setting the first provided view as active
248
- */
249
- const view = this.views.find(view => view.type === this._activeView) ?
250
- this._activeView :
251
- this.views.first.type;
252
- this.currentTimeMarkerService.activeView = view;
253
- return view;
254
- }
255
- /**
256
- * @hidden
257
- *
258
- */
259
- get activeViewCurrentTimeMarker() {
260
- const activeViewCurrentTimeMarker = this.views.find(view => view.type === this._activeView)?.currentTimeMarker;
261
- if (activeViewCurrentTimeMarker === false) {
262
- return false;
263
- }
264
- return activeViewCurrentTimeMarker || this.currentTimeMarker;
265
- }
266
- /**
267
- * Gets or sets the Gantt data.
268
- * The task data items must match the [`GanttTask`]({% slug api_gantt_gantttask %}) interface or use [`taskModelFields`]({% slug api_gantt_ganttcomponent %}#toc-taskmodelfields).
269
- */
270
- set data(data) {
271
- this._data = normalizeGanttData(data);
272
- this.loadTimelineData();
273
- }
274
- get data() {
275
- return this._data;
276
- }
277
- /**
278
- * Specifies a callback to determine if a task is selected ([see example]({% slug selection_gantt %}#toc-custom-selection)).
279
- * Set [`selectable`]({% slug api_gantt_ganttcomponent %}#toc-selectable) to `true` to use this callback.
280
- */
281
- isSelected = isSelected;
282
- /**
283
- * Specifies a callback to validate new dependencies.
284
- * Use this callback to control the valid dependencies that users can create ([see example]({% slug editing_drag_create_dependencies_gantt %}#toc-validation)).
285
- */
286
- validateNewDependency = this.defaultValidateNewDependencyCallback.bind(this);
287
- /**
288
- * Fires when the Gantt selection changes through user interaction.
289
- * The event data contains the affected items and the action type.
290
- */
291
- selectionChange = new EventEmitter();
292
- /**
293
- * Enables or disables selection in the Gantt ([see example]({% slug selection_gantt %}#toc-custom-selection)).
294
- * Set to `true` to allow selection.
295
- * > When set to `true`, the [`isSelected`]({% slug api_gantt_ganttcomponent %}#toc-isselected) callback has to be provided.
296
- * > When applied, the [`SelectableDirective`]({% slug api_gantt_selectabledirective %}) sets `selectable` to `true` internally.
297
- * @default false
298
- */
299
- selectable = false;
300
- /**
301
- * Configures the toolbar position and content.
302
- * Set `position`, `addTaskTool`, and `viewSelectorTool` as needed.
303
- */
304
- set toolbarSettings(value) {
305
- this._toolbarSettings = {
306
- position: value.position || 'top',
307
- addTaskTool: value.addTaskTool || 'none',
308
- viewSelectorTool: value.viewSelectorTool || 'top'
309
- };
310
- }
311
- get toolbarSettings() {
312
- return this._toolbarSettings;
313
- }
314
- /**
315
- * Sets the `aria-label` attribute value for the toolbar.
316
- * Use this to improve accessibility.
317
- * @default "Toolbar"
318
- */
319
- toolbarAriaLabel = 'Toolbar';
320
- /**
321
- * Sets the callback function to retrieve child items for a data item.
322
- */
323
- set fetchChildren(fn) {
324
- this._fetchChildren = fn;
325
- this.editService.fetchChildren = fn;
326
- }
327
- get fetchChildren() {
328
- return this._fetchChildren;
329
- }
330
- /**
331
- * Sets the callback function to indicate if a data item has child items.
332
- */
333
- set hasChildren(fn) {
334
- this._hasChildren = fn;
335
- this.editService.hasChildren = fn;
336
- }
337
- get hasChildren() {
338
- return this._hasChildren;
339
- }
340
- /**
341
- * Sets the dependencies to display between tasks.
342
- * Dependency data items must match the [`GanttDependency`]({% slug api_gantt_ganttdependency %}) interface or use [`dependencyModelFields`]({% slug api_gantt_ganttcomponent %}#toc-dependencymodelfields).
343
- */
344
- dependencies = [];
345
- /**
346
- * Enables sorting for columns with a `field` option.
347
- */
348
- sortable = false;
349
- /**
350
- * Sets the descriptors for sorting the data.
351
- */
352
- sort = [];
353
- /**
354
- * Enables filtering for columns with a `field` option.
355
- * @default false
356
- */
357
- filterable = false;
358
- /**
359
- * Sets the descriptor for filtering the data.
360
- */
361
- filter;
362
- /**
363
- * Sets the start time of the work day in `HH:mm` format.
364
- * @default "08:00"
365
- */
366
- workDayStart = '08:00';
367
- /**
368
- * Sets the end time of the work day in `HH:mm` format.
369
- * @default "17:00"
370
- */
371
- workDayEnd = '17:00';
372
- /**
373
- * Sets the start day of the work week (index based).
374
- * @default 1
375
- */
376
- workWeekStart = 1;
377
- /**
378
- * Sets the end day of the work week (index based).
379
- * @default 5
380
- */
381
- workWeekEnd = 5;
382
- /**
383
- * Enables keyboard navigation for the Gantt.
384
- * By default, navigation is enabled for the TreeList and Timeline parts of the component ([see example]({% slug keyboard_navigation_gantt %})).
385
- * @default true
386
- */
387
- navigable = true;
388
- /**
389
- * Sets the options for the timeline splitter pane.
390
- * By default, the pane is collapsible, resizable, not collapsed, and its size is `'50%'`.
391
- */
392
- set timelinePaneOptions(value) {
393
- if (this._timelinePaneOptions.collapsed && !value.collapsed) {
394
- this.dependencyDomService.notifyChanges();
395
- }
396
- this._timelinePaneOptions = { ...DEFAULT_TIMELINE_PANE_SETTINGS, ...value };
397
- }
398
- get timelinePaneOptions() {
399
- return { ...this._timelinePaneOptions, size: this.treeListPaneOptions.collapsed ? '100%' : this._timelinePaneOptions.size };
400
- }
401
- /**
402
- * Sets the options for the treelist splitter pane.
403
- * By default the pane is collapsible and not collapsed.
404
- */
405
- set treeListPaneOptions(value) {
406
- this._treeListPaneOptions = { ...DEFAULT_TREELIST_PANE_SETTINGS, ...value };
407
- }
408
- get treeListPaneOptions() {
409
- return this._treeListPaneOptions;
410
- }
411
- /**
412
- * Sets a function to apply custom CSS classes to each task.
413
- * The function receives the task data item.
414
- */
415
- set taskClass(fn) {
416
- if (isDevMode() && typeof fn !== 'function') {
417
- throw new Error(`taskClass must be a function, but received ${JSON.stringify(fn)}.`);
418
- }
419
- this._taskClass = fn;
420
- }
421
- get taskClass() {
422
- return this._taskClass;
423
- }
424
- /**
425
- * Sets a function to apply custom CSS classes to each data row.
426
- * The function receives the row data item.
427
- */
428
- set rowClass(fn) {
429
- if (isDevMode() && typeof fn !== 'function') {
430
- throw new Error(`rowClass must be a function, but received ${JSON.stringify(fn)}.`);
431
- }
432
- this._rowClass = fn;
433
- }
434
- get rowClass() {
435
- return this._rowClass;
436
- }
437
- /**
438
- * Gets the name of the field that contains the unique identifier for task data items.
439
- * @default "id"
440
- */
441
- get taskIdField() {
442
- return this.mapper.taskFields.id;
443
- }
444
- /**
445
- * Sets a callback function to indicate if a data item is expanded.
446
- * If not set, all items are expanded and no expand icons are shown.
447
- */
448
- isExpanded;
449
- /**
450
- * Enables automatic resizing of columns to fit their content.
451
- * @default false
452
- */
453
- columnsAutoSize = false;
454
- /**
455
- * Sets the current time marker settings for the Gantt.
456
- * Applies to all views unless overridden by the settings of a particular view.
457
- * @default true
458
- */
459
- currentTimeMarker = true;
460
- /**
461
- * Enables the column menu for all columns.
462
- * @default false
463
- */
464
- columnMenu = false;
465
- /**
466
- * Enables reordering of the columns by dragging their header cells.
467
- * @default false
468
- */
469
- columnsReorderable = false;
470
- /**
471
- * Enables resizing of the columns by dragging the header cell edges (resize handles).
472
- * @default false
473
- */
474
- columnsResizable = false;
475
- /**
476
- * 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)).
477
- */
478
- set dragScrollSettings(settings) {
479
- this._dragScrollSettings = { ...DEFAULT_DRAG_SCROLL_SETTINGS, ...settings };
480
- }
481
- get dragScrollSettings() {
482
- return this._dragScrollSettings;
483
- }
484
- /**
485
- * Sets the options for the task tooltip, such as `position`, `callout`, and `showAfter`.
486
- * @default { position: 'top', callout: true, showAfter: 100 }
487
- */
488
- taskTooltipOptions = {
489
- position: 'top',
490
- callout: true,
491
- showAfter: 100
492
- };
493
- /**
494
- * Fires when a row is expanded.
495
- */
496
- rowExpand = new EventEmitter();
497
- /**
498
- * Fires when a Gantt task in the timeline pane is double-clicked.
499
- * The event data contains the clicked task. Use this event to open a task editing dialog if needed.
500
- */
501
- taskDblClick = new EventEmitter();
502
- /**
503
- * Fires when a cell is double-clicked.
504
- */
505
- cellDblClick = new EventEmitter();
506
- /**
507
- * Fires when an edited cell is closed.
508
- */
509
- cellClose = new EventEmitter();
510
- /**
511
- * Fires when the user clicks the `Delete` button in the task editing dialog,
512
- * the task delete icon, or presses the `Delete` key on a focused task.
513
- * Use this event to open a confirmation dialog if needed.
514
- */
515
- taskDelete = new EventEmitter();
516
- /**
517
- * Fires when a row is collapsed.
518
- */
519
- rowCollapse = new EventEmitter();
520
- /**
521
- * Fires when the user confirms deleting a task.
522
- */
523
- remove = new EventEmitter();
524
- /**
525
- * Fires when the user cancels editing a task.
526
- */
527
- cancel = new EventEmitter();
528
- /**
529
- * Fires when the user saves an edited task.
530
- */
531
- save = new EventEmitter();
532
- /**
533
- * Fires when the user adds a task.
534
- */
535
- taskAdd = new EventEmitter();
536
- /**
537
- * Fires when the user adds a dependency by dragging [see example]({% slug editing_drag_create_dependencies_gantt %}#toc-basic-concepts).
538
- */
539
- dependencyAdd = new EventEmitter();
540
- /**
541
- * Fires when there are changes in the Gantt sorting.
542
- * Handle this event to sort the data.
543
- */
544
- sortChange = new EventEmitter();
545
- /**
546
- * Fires when there are changes in the Gantt filtering.
547
- * Handle this event to filter the data.
548
- */
549
- filterChange = new EventEmitter();
550
- /**
551
- * Fires when the filter or sort state changes.
552
- */
553
- dataStateChange = new EventEmitter();
554
- /**
555
- * Fires when the collapsed state of the treelist pane changes.
556
- */
557
- treeListPaneCollapsedChange = new EventEmitter();
558
- /**
559
- * Fires when the collapsed state of the timeline pane changes.
560
- */
561
- timelinePaneCollapsedChange = new EventEmitter();
562
- /**
563
- * Fires when the user resizes the timeline pane.
564
- */
565
- timelinePaneSizeChange = new EventEmitter();
566
- /**
567
- * Fires when the user selects a different view type.
568
- * The event data contains the type of the new view.
569
- */
570
- activeViewChange = new EventEmitter();
571
- /**
572
- * Fires when the user completes resizing a column.
573
- */
574
- columnResize = new EventEmitter();
575
- /**
576
- * Fires when the user completes reordering a column.
577
- */
578
- columnReorder = new EventEmitter();
579
- /**
580
- * Fires when the user changes column visibility from the column menu or chooser.
581
- */
582
- columnVisibilityChange = new EventEmitter();
583
- /**
584
- * @hidden
585
- *
586
- * Fires when the user changes the locked state of the columns from the column menu or by reordering the columns.
587
- */
588
- columnLockedChange = new EventEmitter();
589
- /**
590
- * Fires when a cell is clicked.
591
- */
592
- cellClick = new EventEmitter();
593
- /**
594
- * Fires when a task is clicked.
595
- */
596
- taskClick = new EventEmitter();
597
- /**
598
- * @hidden
599
- */
600
- get renderedTreeListItems() {
601
- if (!isPresent(this.treeList)) {
602
- return [];
603
- }
604
- return this.treeList.view.data.map(item => item.data);
605
- }
606
- /**
607
- * @hidden
608
- */
609
- get viewItems() {
610
- if (!isPresent(this.treeList)) {
611
- return [];
612
- }
613
- return this.treeList.view.data;
614
- }
615
- /**
616
- * @hidden
617
- */
618
- get filterMenu() {
619
- return this.filterable ? 'menu' : false;
620
- }
621
- /**
622
- * @hidden
623
- *
624
- * Specifies whether the dependency drag clues will be rendered.
625
- * Set internally by the dependency-drag-create directive.
626
- *
627
- * @default false
628
- */
629
- renderDependencyDragClues = false;
630
- /**
631
- * @hidden
632
- */
633
- timelineSlots;
634
- /**
635
- * @hidden
636
- */
637
- timelineGroupSlots;
638
- /**
639
- * @hidden
640
- */
641
- tableWidth;
642
- /**
643
- * @hidden
644
- */
645
- get viewService() {
646
- if (!this.views || !this.views.length) {
647
- return null;
648
- }
649
- // TODO: review if this is a performance concern?
650
- return this.timelineViewService.service(this.activeView);
651
- }
652
- /**
653
- * @hidden
654
- *
655
- * Retrieves the `isSelected` callback if `selectable` is set to `true`
656
- * Otherwise returns the default callback, which always returns `false`.
657
- */
658
- get isTaskSelected() {
659
- return this.selectable ? this.isSelected : isSelected;
660
- }
661
- /**
662
- * @hidden
663
- *
664
- * Used by the GanttExpandableDirective.
665
- */
666
- get idGetter() {
667
- if (isPresent(this.treeList)) {
668
- return this.treeList.idGetter;
669
- }
670
- }
671
- /**
672
- * @hidden
673
- *
674
- * Used by the views selector.
675
- */
676
- get viewTypes() {
677
- return this.views.map(view => view.type);
678
- }
679
- /**
680
- * @hidden
681
- *
682
- * Used by the GanttExpandableDirective.
683
- */
684
- expandStateChange = new EventEmitter();
685
- /**
686
- * @hidden
687
- */
688
- showEditingDialog = false;
689
- /**
690
- * @hidden
691
- */
692
- showConfirmationDialog = false;
693
- /**
694
- * @hidden
695
- */
696
- get isInEditMode() {
697
- return this.showEditingDialog || this.showConfirmationDialog || this.treeList.isEditing();
698
- }
699
- /**
700
- * @hidden
701
- */
702
- showLicenseWatermark = false;
703
- /**
704
- * @hidden
705
- */
706
- licenseMessage;
707
- _columns = new QueryList();
708
- _data = [];
709
- _dragScrollSettings = { ...DEFAULT_DRAG_SCROLL_SETTINGS };
710
- _timelinePaneOptions = { ...DEFAULT_TIMELINE_PANE_SETTINGS };
711
- _treeListPaneOptions = { ...DEFAULT_TREELIST_PANE_SETTINGS };
712
- _customToolbarTemplate;
713
- _rowClass = rowClassCallback;
714
- _taskClass = taskClassCallback;
715
- _activeView = DEFAULT_VIEW;
716
- _toolbarSettings = {
717
- position: 'top',
718
- addTaskTool: 'none',
719
- viewSelectorTool: 'top'
720
- };
721
- _fetchChildren = fetchChildren;
722
- _hasChildren = hasChildren;
723
- lastTreeListCellClick;
724
- direction;
725
- rtl = false;
726
- editItem;
727
- optionChangesSubscriptions = new Subscription();
728
- editServiceSubscription = new Subscription();
729
- localizationSubscription;
730
- intlSubscription;
731
- keydownListenerDisposers;
732
- constructor(timelineViewService, scrollSyncService, renderer, mapper, optionChangesService, dependencyDomService, editService, localizationService, hostElement, zone, navigation, currentTimeMarkerService, intlService, localeId) {
733
- this.timelineViewService = timelineViewService;
734
- this.scrollSyncService = scrollSyncService;
735
- this.renderer = renderer;
736
- this.mapper = mapper;
737
- this.optionChangesService = optionChangesService;
738
- this.dependencyDomService = dependencyDomService;
739
- this.editService = editService;
740
- this.localizationService = localizationService;
741
- this.hostElement = hostElement;
742
- this.zone = zone;
743
- this.navigation = navigation;
744
- this.currentTimeMarkerService = currentTimeMarkerService;
745
- this.intlService = intlService;
746
- this.localeId = localeId;
747
- const isValid = validatePackage(packageMetadata);
748
- this.licenseMessage = getLicenseMessage(packageMetadata);
749
- this.showLicenseWatermark = shouldShowValidationUI(isValid);
750
- intlService.localeId = this.localeId;
751
- this.intlSubscription = this.intlService.changes.subscribe(() => {
752
- this.loadTimelineData();
753
- this.activeViewChange.emit(this.activeView);
754
- });
755
- this.optionChangesSubscriptions.add(this.optionChangesService.viewChanges.subscribe(() => {
756
- this.loadTimelineData();
757
- }));
758
- this.optionChangesSubscriptions.add(this.optionChangesService.dateFormatChanges.subscribe(() => {
759
- this.loadTimelineData();
760
- }));
761
- this.optionChangesSubscriptions.add(this.optionChangesService.columnChanges.subscribe(() => {
762
- this.treeList.columns.notifyOnChanges();
763
- }));
764
- this.editService.getSelectedItem = this.getFirstSelectedItem.bind(this);
765
- this.editServiceSubscription.add(this.editService.showEditingDialog.subscribe(show => this.showEditingDialog = show));
766
- this.editServiceSubscription.add(this.editService.taskDelete.subscribe(task => {
767
- if (hasObservers(this.taskDelete)) {
768
- this.zone.run(() => this.notifyTaskDelete(task));
769
- }
770
- }));
771
- this.editServiceSubscription.add(this.editService.editEvent.subscribe(args => {
772
- this[args.editResultType].emit({
773
- taskFormGroup: args.taskFormGroup,
774
- item: getEditItem(args.dataItem, this.treeList.view.data, this.mapper),
775
- dependencies: args.dependencies,
776
- sender: this
777
- });
778
- this.showConfirmationDialog = this.showEditingDialog = false;
779
- this.editService.dataItem = this.editService.taskFormGroup = null;
780
- this.updateView();
781
- if (this.navigable) {
782
- this.focus();
783
- }
784
- }));
785
- this.editServiceSubscription.add(this.editService.addEvent.subscribe(args => {
786
- const selectedItem = this.getFirstSelectedItem();
787
- this.taskAdd.emit({
788
- actionType: args.actionType,
789
- selectedItem: selectedItem ? getEditItem(selectedItem, this.treeList.view.data, this.mapper) : null
790
- });
791
- this.updateView();
792
- }));
793
- this.localizationSubscription = this.localizationService.changes.subscribe(({ rtl }) => {
794
- this.rtl = rtl;
795
- this.direction = this.rtl ? 'rtl' : 'ltr';
796
- this.currentTimeMarkerService.rtl = rtl;
797
- });
798
- }
799
- ngOnChanges(changes) {
800
- if (anyChanged(['data', 'activeView', 'workWeekStart', 'workWeekEnd', 'workDayStart', 'workDayEnd'], changes)) {
801
- this.loadTimelineData();
802
- }
803
- }
804
- ngAfterViewInit() {
805
- this.updateTreeListMargin();
806
- this.zone.runOutsideAngular(() => {
807
- this.keydownListenerDisposers = this.renderer.listen(this.hostElement.nativeElement, 'keydown', this.handleKeydown.bind(this));
808
- });
809
- if (this.navigable) {
810
- this.navigation.initialize({
811
- treeList: this.treeList,
812
- host: this.hostElement.nativeElement,
813
- treeListElement: this.treeList.wrapper.nativeElement,
814
- timelineElement: this.timeline.timelineContent.nativeElement,
815
- columns: this.columns,
816
- data: this.data
817
- });
818
- }
819
- const leftContainer = this.treeList.wrapper.nativeElement.querySelector('kendo-treelist-list > div');
820
- this.scrollSyncService.registerElement(leftContainer, 'treelist');
821
- }
822
- ngAfterContentInit() {
823
- if (isDevMode() && this.views.length === 0) {
824
- throw new Error('No views declared for <kendo-gantt>. Please, declare at least one view.');
825
- }
826
- this.loadTimelineData();
827
- this.updateTreeListGroupClass();
828
- }
829
- ngOnDestroy() {
830
- this.optionChangesSubscriptions.unsubscribe();
831
- this.editServiceSubscription.unsubscribe();
832
- if (this.localizationSubscription) {
833
- this.localizationSubscription.unsubscribe();
834
- }
835
- if (this.intlSubscription) {
836
- this.intlSubscription.unsubscribe();
837
- }
838
- if (isPresent(this.keydownListenerDisposers)) {
839
- this.keydownListenerDisposers();
840
- this.keydownListenerDisposers = null;
841
- }
842
- }
843
- /**
844
- * Focuses the last active cell or task in the Gantt.
845
- * If no item was previously focused, focuses the first TreeList cell ([see example]({% slug keyboard_navigation_gantt %}#toc-controlling-the-focus)).
846
- */
847
- focus() {
848
- if (this.navigable) {
849
- this.navigation.focusLastActiveItem();
850
- }
851
- }
852
- /**
853
- * Focuses the specified cell in the TreeList ([see example]({% slug keyboard_navigation_gantt %}#toc-controlling-the-focus)).
854
- * @param rowIndex The row index.
855
- * @param colIndex The column index.
856
- */
857
- focusCell(rowIndex, colIndex) {
858
- if (this.navigable) {
859
- this.navigation.focusCell(rowIndex, colIndex);
860
- }
861
- }
862
- /**
863
- * Focuses the specified task in the Timeline ([see example]({% slug keyboard_navigation_gantt %}#toc-controlling-the-focus)).
864
- * @param taskIndex The index of the task.
865
- */
866
- focusTask(taskIndex) {
867
- if (this.navigable) {
868
- this.navigation.focusTask(taskIndex);
869
- }
870
- }
871
- /**
872
- * Sets the minimum width for the specified column so that its content fits.
873
- * The Gantt must be resizable.
874
- * @param column The column to auto-fit.
875
- */
876
- autoFitColumn(column) {
877
- if (isPresent(this.treeList)) {
878
- this.treeList.autoFitColumn(column);
879
- }
880
- }
881
- /**
882
- * Adjusts the width of the specified columns to fit their content.
883
- * If no columns are specified, fits all columns.
884
- * The Gantt must be resizable to use this method.
885
- * @param columns The columns to auto-fit.
886
- */
887
- autoFitColumns(columns = this.columns) {
888
- if (isPresent(this.treeList)) {
889
- this.treeList.autoFitColumns(columns);
890
- }
891
- }
892
- /**
893
- * Clears loaded children for the data item so the Gantt fetches them again.
894
- * @param dataItem The data item to reload.
895
- * @param reloadChildren Whether to reload children.
896
- */
897
- reload(dataItem, reloadChildren) {
898
- if (isPresent(this.treeList)) {
899
- this.treeList.reload(dataItem, reloadChildren);
900
- }
901
- }
902
- /**
903
- * Changes the position of the specified column.
904
- * The source column must be visible.
905
- * @param source The column to move.
906
- * @param destIndex The new position index.
907
- * @param options Additional options.
908
- */
909
- reorderColumn(source, destIndex, options = { before: false }) {
910
- if (isPresent(this.treeList)) {
911
- this.treeList.reorderColumn(source, destIndex, options);
912
- }
913
- }
914
- /**
915
- * Forces the Gantt to re-evaluate data items and re-render the rows and Timeline period, if needed.
916
- * Also redraws dependencies and executes row-related callbacks.
917
- */
918
- updateView() {
919
- if (isPresent(this.treeList)) {
920
- this.treeList.updateView();
921
- }
922
- this.loadTimelineData();
923
- this.dependencyDomService.notifyChanges();
924
- }
925
- /**
926
- * Opens the task editing dialog for the specified data item.
927
- * @param dataItem The task data item.
928
- * @param formGroup The form group for editing.
929
- */
930
- editTask(dataItem, formGroup) {
931
- if (!this.showEditingDialog) {
932
- const taskId = this.mapper.extractFromTask(dataItem, 'id');
933
- const dependencies = this.dependencies.filter(item => this.mapper.extractFromDependency(item, 'toId') === taskId
934
- || this.mapper.extractFromDependency(item, 'fromId') === taskId);
935
- this.editService.createEditDialog(dataItem, formGroup, dependencies);
936
- }
937
- }
938
- /**
939
- * Closes the task editing dialog.
940
- */
941
- closeTaskDialog() {
942
- if (this.showEditingDialog) {
943
- this.editService.closeEditDialog();
944
- }
945
- }
946
- /**
947
- * Opens the delete task confirmation dialog.
948
- */
949
- openConfirmationDialog() {
950
- this.showConfirmationDialog = true;
951
- }
952
- /**
953
- * @hidden
954
- */
955
- handleConfirmationDialogClose() {
956
- this.showConfirmationDialog = false;
957
- if (this.navigable) {
958
- this.focus();
959
- }
960
- }
961
- /**
962
- * Opens a cell for editing.
963
- * @param dataItem The data item.
964
- * @param column The column index, name, or object.
965
- * @param formGroup The form group for editing.
966
- */
967
- editCell(dataItem, column, formGroup) {
968
- this.treeList.editCell(dataItem, column, formGroup);
969
- }
970
- /**
971
- * Closes the currently edited cell.
972
- */
973
- closeCell() {
974
- this.treeList.closeCell();
975
- }
976
- /**
977
- * @hidden
978
- */
979
- handleCellClose(e) {
980
- this.cellClose.emit(new CellCloseEvent({ ...e, item: this.editItem, sender: this }));
981
- this.dependencyDomService.notifyChanges();
982
- }
983
- /**
984
- * @hidden
985
- */
986
- onTreeListCollapsedChange(collapsed) {
987
- this.treeListPaneCollapsedChange.emit(collapsed);
988
- if (!collapsed) {
989
- this.scrollSyncService.syncScrollTop('timeline', 'treelist');
990
- }
991
- }
992
- /**
993
- * @hidden
994
- */
995
- onTimelineCollapsedChange(collapsed) {
996
- this.timelinePaneCollapsedChange.emit(collapsed);
997
- if (!collapsed) {
998
- this.scrollSyncService.syncScrollTop('treelist', 'timeline');
999
- this.dependencyDomService.notifyChanges();
1000
- }
1001
- }
1002
- /**
1003
- * @hidden
1004
- */
1005
- loadTimelineData() {
1006
- if (!isPresent(this.viewService)) {
1007
- return;
1008
- }
1009
- const activeViewOptions = this.getActiveViewOptions();
1010
- this.viewService.options = {
1011
- workWeekStart: this.workWeekStart,
1012
- workWeekEnd: this.workWeekEnd,
1013
- workDayStart: this.workDayStart,
1014
- workDayEnd: this.workDayEnd,
1015
- ...activeViewOptions
1016
- };
1017
- this.tableWidth = this.viewService.getTableWidth(this.data);
1018
- const [groupedSlots, slots] = this.viewService.getSlots(this.data);
1019
- this.timelineSlots = slots;
1020
- this.timelineGroupSlots = groupedSlots;
1021
- }
1022
- /**
1023
- * @hidden
1024
- */
1025
- showToolbar(position) {
1026
- return this.toolbarSettings.position !== 'none' && ([position, 'both'].indexOf(this.toolbarSettings.position) > -1);
1027
- }
1028
- /**
1029
- * @hidden
1030
- */
1031
- handleColumnVisibilityChange(event) {
1032
- this.columnVisibilityChange.emit(event);
1033
- this.updateTreeListGroupClass();
1034
- }
1035
- /**
1036
- * @hidden
1037
- */
1038
- onTimelinePaneSizeChange(e) {
1039
- this._timelinePaneOptions.size = e;
1040
- this.timelinePaneSizeChange.emit(e);
1041
- }
1042
- /**
1043
- * @hidden
1044
- */
1045
- handleTimelineRightClick(event) {
1046
- const target = event.target;
1047
- const gantt = this.hostElement.nativeElement;
1048
- if (!isTask(target, gantt) || isClearButton(target, gantt)) {
1049
- return;
1050
- }
1051
- if (hasObservers(this.taskClick)) {
1052
- const taskIndex = getClosestTaskIndex(target, gantt);
1053
- const task = this.renderedTreeListItems[taskIndex];
1054
- this.zone.run(() => this.notifyTaskClick(event, task, taskIndex));
1055
- }
1056
- }
1057
- /**
1058
- * @hidden
1059
- */
1060
- handleTimelineClick(event) {
1061
- const target = event.target;
1062
- const gantt = this.hostElement.nativeElement;
1063
- if (!isTask(target, gantt) || isClearButton(target, gantt)) {
1064
- return;
1065
- }
1066
- const taskIndex = getClosestTaskIndex(target, gantt);
1067
- const task = this.renderedTreeListItems[taskIndex];
1068
- const selectionAction = this.getSelectionAction(event, task);
1069
- if ((hasObservers(this.selectionChange) && !this.isSameSelection(selectionAction, task)) ||
1070
- hasObservers(this.taskClick)) {
1071
- this.zone.run(() => {
1072
- this.notifySelectionChange(task, selectionAction);
1073
- this.notifyTaskClick(event, task, taskIndex);
1074
- });
1075
- }
1076
- }
1077
- /**
1078
- * @hidden
1079
- */
1080
- handleTreeListDoubleClick(event) {
1081
- if (!isPresent(this.lastTreeListCellClick) || event.target !== this.lastTreeListCellClick.originalEvent.target) {
1082
- return;
1083
- }
1084
- this.editItem = getEditItem(this.lastTreeListCellClick.dataItem, this.treeList.view.data, this.mapper);
1085
- if (hasObservers(this.cellDblClick)) {
1086
- this.zone.run(() => {
1087
- this.cellDblClick.emit({
1088
- column: this.lastTreeListCellClick.column,
1089
- columnIndex: this.lastTreeListCellClick.columnIndex,
1090
- dataItem: this.lastTreeListCellClick.dataItem,
1091
- isEdited: this.lastTreeListCellClick.isEdited,
1092
- originalEvent: this.lastTreeListCellClick.originalEvent,
1093
- rowIndex: this.lastTreeListCellClick.rowIndex,
1094
- type: 'dblclick',
1095
- sender: this
1096
- });
1097
- });
1098
- }
1099
- }
1100
- /**
1101
- * @hidden
1102
- */
1103
- handleTreeListSelectionChange(event) {
1104
- // prevent selection change from right-click
1105
- if (isPresent(this.lastTreeListCellClick) && this.lastTreeListCellClick.type === 'contextmenu') {
1106
- return;
1107
- }
1108
- const task = event.items.map(item => item.dataItem)[0]; // single selection only currently available
1109
- const action = event.action;
1110
- this.notifySelectionChange(task, action);
1111
- }
1112
- /**
1113
- * @hidden
1114
- */
1115
- handleTreeListCellClick(event) {
1116
- this.lastTreeListCellClick = event;
1117
- this.cellClick.emit({
1118
- column: event.column,
1119
- columnIndex: event.columnIndex,
1120
- dataItem: event.dataItem,
1121
- isEdited: event.isEdited,
1122
- originalEvent: event.originalEvent,
1123
- rowIndex: event.rowIndex,
1124
- type: event.type,
1125
- sender: this
1126
- });
1127
- }
1128
- /**
1129
- * @hidden
1130
- */
1131
- handleDeleteConfirmation() {
1132
- this.editService.triggerEditEvent('remove');
1133
- }
1134
- /**
1135
- * @hidden
1136
- */
1137
- handleTimelineMouseDown(event) {
1138
- const target = event.target;
1139
- const gantt = this.hostElement.nativeElement;
1140
- if (!isTask(target, gantt) || isClearButton(target, gantt)) {
1141
- return;
1142
- }
1143
- event.preventDefault();
1144
- }
1145
- /**
1146
- * @hidden
1147
- */
1148
- handleTimelineDblClick(event) {
1149
- const target = event.target;
1150
- const gantt = this.hostElement.nativeElement;
1151
- if (!isTask(target, gantt) || isClearButton(target, gantt)) {
1152
- return;
1153
- }
1154
- if (hasObservers(this.taskDblClick)) {
1155
- const taskIndex = getClosestTaskIndex(target, gantt);
1156
- const task = this.renderedTreeListItems[taskIndex];
1157
- this.zone.run(() => this.taskDblClick.emit({
1158
- dataItem: task,
1159
- originalEvent: event,
1160
- sender: this,
1161
- index: taskIndex,
1162
- type: 'dblclick'
1163
- }));
1164
- }
1165
- }
1166
- /**
1167
- * @hidden
1168
- */
1169
- getText(token) {
1170
- return this.localizationService.get(token);
1171
- }
1172
- /**
1173
- * @hidden
1174
- */
1175
- changeActiveView(view) {
1176
- if (view !== this.activeView) {
1177
- this.activeView = view;
1178
- this.loadTimelineData();
1179
- this.scrollSyncService.resetTimelineScrollLeft();
1180
- this.activeViewChange.emit(view);
1181
- this.currentTimeMarkerService.slots = this.timelineSlots;
1182
- this.currentTimeMarkerService.rows = this.viewItems;
1183
- this.currentTimeMarkerService.activeView = view;
1184
- }
1185
- }
1186
- /**
1187
- * @hidden
1188
- */
1189
- notifyTaskClick(event, dataItem, itemIndex) {
1190
- // simulates the TreeList `cellClick` event triggered by enter press (type: 'click')
1191
- const type = event instanceof KeyboardEvent ? 'click' : event.type;
1192
- this.taskClick.emit({
1193
- originalEvent: event,
1194
- dataItem: dataItem,
1195
- index: itemIndex,
1196
- type: type,
1197
- sender: this
1198
- });
1199
- }
1200
- /**
1201
- * @hidden
1202
- */
1203
- notifySelectionChange(dataItem, action) {
1204
- if (this.isSameSelection(action, dataItem)) {
1205
- return;
1206
- }
1207
- this.selectionChange.emit({
1208
- action: action,
1209
- items: [dataItem],
1210
- sender: this
1211
- });
1212
- this.treeList.updateView();
1213
- }
1214
- /**
1215
- * @hidden
1216
- */
1217
- notifyTaskDelete(task) {
1218
- this.editService.dataItem = task;
1219
- this.taskDelete.emit({
1220
- item: getEditItem(task, this.treeList.view.data, this.mapper),
1221
- sender: this
1222
- });
1223
- }
1224
- /**
1225
- * @hidden
1226
- */
1227
- isSameSelection(action, dataItem) {
1228
- return action === 'select' && this.isSelected(dataItem);
1229
- }
1230
- /**
1231
- * @hidden
1232
- */
1233
- getSelectionAction({ ctrlKey, metaKey }, dataItem) {
1234
- const shouldToggleSelection = ctrlKey || metaKey;
1235
- return (shouldToggleSelection && this.isSelected(dataItem)) ? 'remove' : 'select';
1236
- }
1237
- updateTreeListGroupClass(columns = this.columns) {
1238
- if (!isPresent(this.treeList)) {
1239
- return;
1240
- }
1241
- const hasColumns = isPresent(columns) && columns.length > 0;
1242
- const hasVisibleGroupedColumns = hasColumns && columns.some(column => isColumnGroup(column) && column.childrenArray.some(childColumn => childColumn.isVisible));
1243
- if (hasVisibleGroupedColumns) {
1244
- this.renderer.addClass(this.treeList.wrapper.nativeElement, TREELIST_GROUP_COLUMNS_CLASS);
1245
- }
1246
- else {
1247
- this.renderer.removeClass(this.treeList.wrapper.nativeElement, TREELIST_GROUP_COLUMNS_CLASS);
1248
- }
1249
- }
1250
- /**
1251
- * Used to hide the vertical scrollbar
1252
- */
1253
- updateTreeListMargin() {
1254
- const treeListContentEl = this.treeList.wrapper.nativeElement.querySelector('.k-treelist .k-grid-content');
1255
- this.renderer.setStyle(treeListContentEl, 'margin-right', `${-Math.abs(scrollbarWidth() - 1)}px`);
1256
- }
1257
- get activeTimelineIndex() {
1258
- return this.navigation.activeTimelineIndex;
1259
- }
1260
- getActiveViewOptions() {
1261
- if (!this.views) {
1262
- return;
1263
- }
1264
- return this.views.find(view => view.type === this.activeView);
1265
- }
1266
- getFirstSelectedItem() {
1267
- const isSelectedCallback = this.isSelected || isSelected;
1268
- const loadedItems = this.renderedTreeListItems || [];
1269
- return loadedItems.find(isSelectedCallback);
1270
- }
1271
- defaultValidateNewDependencyCallback(dependency) {
1272
- const fromTaskId = this.mapper.extractFromDependency(dependency, 'fromId');
1273
- const toTaskId = this.mapper.extractFromDependency(dependency, 'toId');
1274
- const fromTask = this.treeList.view.data.find(task => this.mapper.extractFromTask(task.data, 'id') === fromTaskId);
1275
- const toTask = this.treeList.view.data.find(task => this.mapper.extractFromTask(task.data, 'id') === toTaskId);
1276
- // mark as invalid if the attempted dependency is lacking valid from- and to-tasks
1277
- // or when the from- and to-tasks are actually the same task
1278
- if (!isPresent(fromTask) || !isPresent(fromTask.data) ||
1279
- !isPresent(toTask) || !isPresent(toTask.data) ||
1280
- fromTask.data === toTask.data) {
1281
- return false;
1282
- }
1283
- const tasksDependentOnOneAnother = this.dependencies.some(current => {
1284
- const currentFromId = this.mapper.extractFromDependency(current, 'fromId');
1285
- const currentToId = this.mapper.extractFromDependency(current, 'toId');
1286
- return (fromTaskId === currentFromId && toTaskId === currentToId) ||
1287
- (toTaskId === currentFromId && fromTaskId === currentToId);
1288
- });
1289
- // mark as invalid if the attempted dependency is trying to connect already dependent tasks
1290
- // mark as invalid if the two tasks are in parent-child relationship
1291
- if (tasksDependentOnOneAnother || areParentChild(fromTask, toTask)) {
1292
- return false;
1293
- }
1294
- const fromTaskStart = this.mapper.extractFromTask(fromTask.data, 'start');
1295
- const fromTaskEnd = this.mapper.extractFromTask(fromTask.data, 'end');
1296
- const toTaskStart = this.mapper.extractFromTask(toTask.data, 'start');
1297
- const toTaskEnd = this.mapper.extractFromTask(toTask.data, 'end');
1298
- // if the two tasks are available to be connected via a dependency,
1299
- // check if their start and end time allow for the attempted dependency type
1300
- switch (this.mapper.extractFromDependency(dependency, 'type')) {
1301
- // finish to finish (FF) — the from-task ends before the to-task can end
1302
- case DependencyType.FF:
1303
- return fromTaskEnd <= toTaskEnd;
1304
- // finish to start (FS) — the from-task ends before the to-task can begin
1305
- case DependencyType.FS:
1306
- return fromTaskEnd <= toTaskStart;
1307
- // start to finish (SF) — the from-task begins before the to-task can end
1308
- case DependencyType.SF:
1309
- return fromTaskStart <= toTaskEnd;
1310
- // start to start (SS) — the from-task begins before the to-task can begin
1311
- case DependencyType.SS:
1312
- return fromTaskStart <= toTaskStart;
1313
- default: return false;
1314
- }
1315
- }
1316
- handleKeydown(event) {
1317
- const { target, altKey } = event;
1318
- // on some keyboards arrow keys, PageUp/Down, and Home/End are mapped to Numpad keys
1319
- const code = normalizeKeys(event);
1320
- const isTimelineActive = this.timeline.timelineContent.nativeElement.contains(target);
1321
- if (isTimelineActive) {
1322
- if (isArrowUpDownKey(code)) {
1323
- const direction = code === Keys.ArrowUp ? -1 : 1;
1324
- this.navigation.activeTimelineIndex = this.activeTimelineIndex + direction;
1325
- this.navigation.updateActiveTreeListCell();
1326
- }
1327
- else if (code === Keys.Home) {
1328
- this.navigation.activeTimelineIndex = 0;
1329
- this.navigation.updateActiveTreeListCell();
1330
- }
1331
- else if (code === Keys.End) {
1332
- const lastAvailableIndex = this.treeList.view.data.length - 1;
1333
- this.navigation.activeTimelineIndex = lastAvailableIndex;
1334
- this.navigation.updateActiveTreeListCell();
1335
- }
1336
- if (isNavigationKey(code)) {
1337
- this.navigation.scrollHorizontallyToTask();
1338
- this.scrollSyncService.syncScrollTop('timeline', 'treelist');
1339
- this.navigation.notifyTaskStatusChange();
1340
- event.preventDefault();
1341
- }
1342
- if (code === Keys.Space && hasObservers(this.selectionChange)) {
1343
- const task = this.renderedTreeListItems[this.activeTimelineIndex];
1344
- const selectionAction = this.getSelectionAction(event, task);
1345
- if (isPresent(task) && !this.isSameSelection(selectionAction, task)) {
1346
- this.zone.run(() => this.notifySelectionChange(task, selectionAction));
1347
- }
1348
- event.preventDefault();
1349
- }
1350
- if ((code === Keys.Enter) && hasObservers(this.taskClick)) {
1351
- const task = this.renderedTreeListItems[this.activeTimelineIndex];
1352
- if (isPresent(task)) {
1353
- this.zone.run(() => this.notifyTaskClick(event, task, this.activeTimelineIndex));
1354
- }
1355
- event.preventDefault();
1356
- }
1357
- if (isExpandCollapseKey(code, altKey)) {
1358
- const task = this.renderedTreeListItems[this.activeTimelineIndex];
1359
- if (isPresent(task) && this.hasChildren(task)) {
1360
- const shouldExpand = code === Keys.ArrowRight;
1361
- const isExpanded = this.isExpanded(task);
1362
- const sameState = shouldExpand === isExpanded;
1363
- if (!sameState) {
1364
- this.zone.run(() => {
1365
- const expandEvent = { dataItem: task };
1366
- // order is not arbitrary
1367
- // the TreeList emits the individual events first, then the combined `expandStateChange` event
1368
- const individualEmitter = shouldExpand ? this.rowExpand : this.rowCollapse;
1369
- individualEmitter.emit(expandEvent);
1370
- this.expandStateChange.emit({
1371
- ...expandEvent,
1372
- expand: shouldExpand
1373
- });
1374
- this.updateView();
1375
- this.navigation.scrollHorizontallyToTask();
1376
- });
1377
- }
1378
- }
1379
- event.preventDefault();
1380
- }
1381
- }
1382
- const isTreeListActive = this.treeList.wrapper.nativeElement.contains(target);
1383
- if (code === Keys.Delete && (isTimelineActive || isTreeListActive) && hasObservers(this.taskDelete)) {
1384
- const taskIndex = isTreeListActive ?
1385
- this.treeList.activeCell.dataRowIndex :
1386
- this.activeTimelineIndex;
1387
- const task = this.renderedTreeListItems[taskIndex];
1388
- if (isPresent(task)) {
1389
- this.zone.run(() => this.notifyTaskDelete(task));
1390
- }
1391
- }
1392
- if (isViewDigitKey(code) && !isToolbar(target, this.hostElement.nativeElement) && !this.isInEditMode) {
1393
- const targetViewIndex = getIndexFromViewDigitKeyCode(code);
1394
- const availableViews = this.views.toArray();
1395
- const targetView = availableViews[targetViewIndex];
1396
- if (isPresent(targetView) && targetView.type !== this.activeView) {
1397
- this.zone.run(() => this.changeActiveView(targetView.type));
1398
- }
1399
- }
1400
- }
1401
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: GanttComponent, deps: [{ token: i1.TimelineViewService }, { token: i2.ScrollSyncService }, { token: i0.Renderer2 }, { token: i3.MappingService }, { token: i4.OptionChangesService }, { token: i5.DependencyDomService }, { token: i6.EditService }, { token: i7.LocalizationService }, { token: i0.ElementRef }, { token: i0.NgZone }, { token: i8.NavigationService }, { token: i9.CurrentTimeMarkerService }, { token: i10.IntlService }, { token: LOCALE_ID }], target: i0.ɵɵFactoryTarget.Component });
1402
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: GanttComponent, isStandalone: true, selector: "kendo-gantt", inputs: { roleDescription: ["aria-roledescription", "roleDescription"], role: "role", taskModelFields: "taskModelFields", dependencyModelFields: "dependencyModelFields", activeView: "activeView", data: "data", isSelected: "isSelected", validateNewDependency: "validateNewDependency", selectable: "selectable", toolbarSettings: "toolbarSettings", toolbarAriaLabel: "toolbarAriaLabel", fetchChildren: "fetchChildren", hasChildren: "hasChildren", dependencies: "dependencies", sortable: "sortable", sort: "sort", filterable: "filterable", filter: "filter", workDayStart: "workDayStart", workDayEnd: "workDayEnd", workWeekStart: "workWeekStart", workWeekEnd: "workWeekEnd", navigable: "navigable", timelinePaneOptions: "timelinePaneOptions", treeListPaneOptions: "treeListPaneOptions", taskClass: "taskClass", rowClass: "rowClass", isExpanded: "isExpanded", columnsAutoSize: "columnsAutoSize", currentTimeMarker: "currentTimeMarker", columnMenu: "columnMenu", columnsReorderable: "columnsReorderable", columnsResizable: "columnsResizable", dragScrollSettings: "dragScrollSettings", taskTooltipOptions: "taskTooltipOptions" }, outputs: { 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" }, host: { properties: { "attr.aria-roledescription": "this.hostRoleDescriptionAttr", "attr.role": "this.hostRoleAttr", "class.k-gantt": "this.hostClasses", "attr.dir": "this.dir" } }, providers: [
1403
- GanttLocalizationService,
1404
- LocalizationService,
1405
- {
1406
- provide: L10N_PREFIX,
1407
- useValue: 'kendo.gantt'
1408
- },
1409
- {
1410
- provide: DataBoundTreeComponent,
1411
- useExisting: forwardRef(() => GanttComponent)
1412
- },
1413
- {
1414
- provide: ExpandableTreeComponent,
1415
- useExisting: forwardRef(() => GanttComponent)
1416
- },
1417
- TimelineViewService,
1418
- TimelineDayViewService,
1419
- TimelineWeekViewService,
1420
- TimelineMonthViewService,
1421
- TimeLineYearViewService,
1422
- ScrollSyncService,
1423
- DependencyDomService,
1424
- MappingService,
1425
- OptionChangesService,
1426
- EditService,
1427
- TimelineScrollService,
1428
- NavigationService,
1429
- CurrentTimeMarkerService
1430
- ], queries: [{ propertyName: "taskContentTemplate", first: true, predicate: GanttTaskContentTemplateDirective, descendants: true }, { propertyName: "taskTemplate", first: true, predicate: GanttTaskTemplateDirective, descendants: true }, { propertyName: "taskTooltipTemplate", first: true, predicate: GanttTaskTooltipTemplateDirective, descendants: true }, { propertyName: "taskDragTooltipTemplate", first: true, predicate: GanttTaskDragTooltipTemplateDirective, descendants: true }, { propertyName: "summaryTaskTemplate", first: true, predicate: GanttSummaryTaskTemplateDirective, descendants: true }, { propertyName: "toolbarTemplateChildren", predicate: ToolbarTemplateDirective }, { propertyName: "columns", predicate: GanttColumnBase }, { propertyName: "views", predicate: ViewBase }], viewQueries: [{ propertyName: "treeList", first: true, predicate: TreeListComponent, descendants: true, static: true }, { propertyName: "timeline", first: true, predicate: GanttTimelineComponent, descendants: true }], exportAs: ["kendoGantt"], usesOnChanges: true, ngImport: i0, template: `
1431
- <ng-container kendoGanttLocalizedMessages
1432
- i18n-taskEditingGeneralTabTitle="kendo.gantt.taskEditingGeneralTabTitle|The title of the 'General' tab of the editing dialog TabStrip"
1433
- taskEditingGeneralTabTitle="General"
1434
-
1435
- i18n-taskEditingPredecessorsTabTitle="kendo.gantt.taskEditingPredecessorsTabTitle|The title of the 'Predecessors' dependencies tab of the editing dialog TabStrip"
1436
- taskEditingPredecessorsTabTitle="Predecessors"
1437
-
1438
- i18n-taskEditingSuccessorsTabTitle="kendo.gantt.taskEditingSuccessorsTabTitle|The title of the 'Successors' dependencies tab of the editing dialog TabStrip"
1439
- taskEditingSuccessorsTabTitle="Successors"
1440
-
1441
- i18n-taskEditingDependenciesAddButtonText="kendo.gantt.taskEditingDependenciesAddButtonText|The text of the 'Add' button in the dependencies tabs of the editing dialog TabStrip"
1442
- taskEditingDependenciesAddButtonText="Add"
1443
-
1444
- i18n-taskEditingDependenciesRemoveButtonText="kendo.gantt.taskEditingDependenciesRemoveButtonText|The text of the 'Remove' button in the dependencies tabs of the editing dialog TabStrip"
1445
- taskEditingDependenciesRemoveButtonText="Remove"
1446
-
1447
- i18n-taskEditingDependenciesGridNameColumnTitle="kendo.gantt.taskEditingDependenciesGridNameColumnTitle|The title of the 'Task Title' Grid column in the dependencies tabs of the editing dialog TabStrip"
1448
- taskEditingDependenciesGridNameColumnTitle="Task Title"
1449
-
1450
- i18n-taskEditingDependenciesGridTypeColumnTitle="kendo.gantt.taskEditingDependenciesGridTypeColumnTitle|The title of the 'Type' Grid column in the dependencies tabs of the editing dialog TabStrip"
1451
- taskEditingDependenciesGridTypeColumnTitle="Type"
1452
-
1453
- i18n-taskDeleteLabel="kendo.gantt.taskDeleteLabel|The label of the task delete icon"
1454
- taskDeleteLabel="Delete"
1455
-
1456
- i18n-taskEditingDialogTitle="kendo.gantt.taskEditingDialogTitle|The title of the task editing dialog"
1457
- taskEditingDialogTitle="Editing Task"
1458
-
1459
- i18n-taskEditingDialogCloseTitle="kendo.gantt.taskEditingDialogCloseTitle|The title of the task editing dialog close button"
1460
- taskEditingDialogCloseTitle="Close"
1461
-
1462
- i18n-confirmationDialogCloseTitle="kendo.gantt.confirmationDialogCloseTitle|The title of the confirmation dialog close button"
1463
- confirmationDialogCloseTitle="Close"
1464
-
1465
- i18n-confirmationDialogTitle="kendo.gantt.confirmationDialogTitle|The title of the delete task confirmation dialog"
1466
- confirmationDialogTitle="Delete Task"
1467
-
1468
- i18n-confirmationDialogContent="kendo.gantt.confirmationDialogContent|The content of the delete task confirmation dialog"
1469
- confirmationDialogContent="Are you sure you want to delete this task?"
1470
-
1471
- i18n-deleteButtonText="kendo.gantt.deleteButtonText|The text of the task editing dialog 'Delete' button"
1472
- deleteButtonText="Delete"
1473
-
1474
- i18n-cancelButtonText="kendo.gantt.cancelButtonText|The text of the task editing dialog 'Cancel' button"
1475
- cancelButtonText="Cancel"
1476
-
1477
- i18n-saveButtonText="kendo.gantt.saveButtonText|The text of the task editing dialog 'Save' button"
1478
- saveButtonText="Save"
1479
-
1480
- i18n-titleFieldInputLabel="kendo.gantt.titleFieldInputLabel|The label of the 'title' field input in editing mode"
1481
- titleFieldInputLabel="Title"
1482
-
1483
- i18n-startFieldInputLabel="kendo.gantt.startFieldInputLabel|The label of the 'start' field input in editing mode"
1484
- startFieldInputLabel="Start"
1485
-
1486
- i18n-endFieldInputLabel="kendo.gantt.endFieldInputLabel|The label of the 'end' field input in editing mode"
1487
- endFieldInputLabel="End"
1488
-
1489
- i18n-completionRatioFieldInputLabel="kendo.gantt.completionRatioFieldInputLabel|The label of the 'completionRatio' field input in editing mode"
1490
- completionRatioFieldInputLabel="Progress"
1491
-
1492
- i18n-dayViewText="kendo.gantt.dayViewText|The text of the day view in the ViewSelector component"
1493
- dayViewText="Day"
1494
-
1495
- i18n-weekViewText="kendo.gantt.weekViewText|The text of the week view in the ViewSelector component"
1496
- weekViewText="Week"
1497
-
1498
- i18n-monthViewText="kendo.gantt.monthViewText|The text of the month view in the ViewSelector component"
1499
- monthViewText="Month"
1500
-
1501
- i18n-yearViewText-disabled="kendo.gantt.yearViewText|The text of the year view in the ViewSelector component"
1502
- yearViewText="Year"
1503
-
1504
- i18n-addTaskText="kendo.gantt.addTaskText|The text of the DropDownButton in the AddTask component"
1505
- addTaskText="Add Task"
1506
-
1507
- i18n-addChildText="kendo.gantt.addChildText|The text of the 'Add Child' option in the AddTask component"
1508
- addChildText="Add Child"
1509
-
1510
- i18n-addAboveText="kendo.gantt.addAboveText|The text of the 'Add Above' option in the AddTask component"
1511
- addAboveText="Add Above"
1512
-
1513
- i18n-addBelowText="kendo.gantt.addBelowText|The text of the 'Add Below' option in the AddTask component"
1514
- addBelowText="Add Below"
1515
-
1516
- i18n-noRecords="kendo.gantt.noRecords|The label visible in the TreeList when there are no records"
1517
- noRecords="No records available."
1518
-
1519
- i18n-filter="kendo.gantt.filter|The label of the filter cell or icon"
1520
- filter="Filter"
1521
-
1522
- i18n-filterEqOperator="kendo.gantt.filterEqOperator|The text of the equal filter operator"
1523
- filterEqOperator="Is equal to"
1524
-
1525
- i18n-filterNotEqOperator="kendo.gantt.filterNotEqOperator|The text of the not equal filter operator"
1526
- filterNotEqOperator="Is not equal to"
1527
-
1528
- i18n-filterIsNullOperator="kendo.gantt.filterIsNullOperator|The text of the is null filter operator"
1529
- filterIsNullOperator="Is null"
1530
-
1531
- i18n-filterIsNotNullOperator="kendo.gantt.filterIsNotNullOperator|The text of the is not null filter operator"
1532
- filterIsNotNullOperator="Is not null"
1533
-
1534
- i18n-filterIsEmptyOperator="kendo.gantt.filterIsEmptyOperator|The text of the is empty filter operator"
1535
- filterIsEmptyOperator="Is empty"
1536
-
1537
- i18n-filterIsNotEmptyOperator="kendo.gantt.filterIsNotEmptyOperator|The text of the is not empty filter operator"
1538
- filterIsNotEmptyOperator="Is not empty"
1539
-
1540
- i18n-filterStartsWithOperator="kendo.gantt.filterStartsWithOperator|The text of the starts with filter operator"
1541
- filterStartsWithOperator="Starts with"
1542
-
1543
- i18n-filterContainsOperator="kendo.gantt.filterContainsOperator|The text of the contains filter operator"
1544
- filterContainsOperator="Contains"
1545
-
1546
- i18n-filterNotContainsOperator="kendo.gantt.filterNotContainsOperator|The text of the does not contain filter operator"
1547
- filterNotContainsOperator="Does not contain"
1548
-
1549
- i18n-filterEndsWithOperator="kendo.gantt.filterEndsWithOperator|The text of the ends with filter operator"
1550
- filterEndsWithOperator="Ends with"
1551
-
1552
- i18n-filterGteOperator="kendo.gantt.filterGteOperator|The text of the greater than or equal filter operator"
1553
- filterGteOperator="Is greater than or equal to"
1554
-
1555
- i18n-filterGtOperator="kendo.gantt.filterGtOperator|The text of the greater than filter operator"
1556
- filterGtOperator="Is greater than"
1557
-
1558
- i18n-filterLteOperator="kendo.gantt.filterLteOperator|The text of the less than or equal filter operator"
1559
- filterLteOperator="Is less than or equal to"
1560
-
1561
- i18n-filterLtOperator="kendo.gantt.filterLtOperator|The text of the less than filter operator"
1562
- filterLtOperator="Is less than"
1563
-
1564
- i18n-filterIsTrue="kendo.gantt.filterIsTrue|The text of the IsTrue boolean filter option"
1565
- filterIsTrue="Is True"
1566
-
1567
- i18n-filterIsFalse="kendo.gantt.filterIsFalse|The text of the IsFalse boolean filter option"
1568
- filterIsFalse="Is False"
1569
-
1570
- i18n-filterBooleanAll="kendo.gantt.filterBooleanAll|The text of the (All) boolean filter option"
1571
- filterBooleanAll="(All)"
1572
-
1573
- i18n-filterAfterOrEqualOperator="kendo.gantt.filterAfterOrEqualOperator|The text of the after or equal date filter operator"
1574
- filterAfterOrEqualOperator="Is after or equal to"
1575
-
1576
- i18n-filterAfterOperator="kendo.gantt.filterAfterOperator|The text of the after date filter operator"
1577
- filterAfterOperator="Is after"
1578
-
1579
- i18n-filterBeforeOperator="kendo.gantt.filterBeforeOperator|The text of the before date filter operator"
1580
- filterBeforeOperator="Is before"
1581
-
1582
- i18n-filterBeforeOrEqualOperator="kendo.gantt.filterBeforeOrEqualOperator|The text of the before or equal date filter operator"
1583
- filterBeforeOrEqualOperator="Is before or equal to"
1584
-
1585
- i18n-filterFilterButton="kendo.gantt.filterFilterButton|The text of the filter button"
1586
- filterFilterButton="Filter"
1587
-
1588
- i18n-filterClearButton="kendo.gantt.filterClearButton|The text of the clear filter button"
1589
- filterClearButton="Clear"
1590
-
1591
- i18n-filterAndLogic="kendo.gantt.filterAndLogic|The text of the And filter logic"
1592
- filterAndLogic="And"
1593
-
1594
- i18n-filterOrLogic="kendo.gantt.filterOrLogic|The text of the Or filter logic"
1595
- filterOrLogic="Or"
1596
-
1597
- i18n-loading="kendo.gantt.loading|The loading text"
1598
- loading="Loading"
1599
-
1600
- i18n-columnMenu="kendo.gantt.columnMenu|The title of the column menu icon"
1601
- columnMenu="Column Menu"
1602
-
1603
- i18n-columns="kendo.gantt.columns|The text shown in the column menu for the columns item"
1604
- columns="Columns"
1605
-
1606
- i18n-lock-disabled="kendo.gantt.lock|The text shown in the column menu for the lock item"
1607
- lock-disabled="Lock"
1608
-
1609
- i18n-unlock-disabled="kendo.gantt.unlock|The text shown in the column menu for the unlock item"
1610
- unlock-disabled="Unlock"
1611
-
1612
- i18n-sortable="kendo.gantt.sortable|The label of the sort icon"
1613
- sortable="Sortable"
1614
-
1615
- i18n-sortAscending="kendo.gantt.sortAscending|The text shown in the column menu for the sort ascending item"
1616
- sortAscending="Sort Ascending"
1617
-
1618
- i18n-sortDescending="kendo.gantt.sortDescending|The text shown in the column menu for the sort descending item"
1619
- sortDescending="Sort Descending"
1620
-
1621
- i18n-sortedDefault="kendo.gantt.sortedDefault|The status announcement when a column is no longer sorted"
1622
- sortedDefault="Not Sorted"
1623
-
1624
- i18n-columnsApply="kendo.gantt.columnsApply|The text shown in the column menu or column chooser for the columns apply button"
1625
- columnsApply="Apply"
1626
-
1627
- i18n-columnsReset="kendo.gantt.columnsReset|The text shown in the column menu or column chooser for the columns reset button"
1628
- columnsReset="Reset"
1629
-
1630
- i18n-tooltipStartDateText="kendo.gantt.tooltipStartDateText|The text shown in the task tooltip before the task start date"
1631
- tooltipStartDateText="Start"
1632
-
1633
- i18n-tooltipEndDateText="kendo.gantt.tooltipEndDateText|The text shown in the task tooltip before the task end date"
1634
- tooltipEndDateText="End"></ng-container>
1635
- @if (showToolbar('top')) {
1636
- <kendo-gantt-toolbar
1637
- [attr.aria-label]="toolbarAriaLabel"
1638
- [showAddTask]="toolbarSettings.addTaskTool === 'top' || toolbarSettings.addTaskTool === 'both'"
1639
- [showViewSelector]="toolbarSettings.viewSelectorTool === 'top' || toolbarSettings.viewSelectorTool === 'both'"
1640
- [toolbarTemplate]="toolbarTemplate"
1641
- [views]="viewTypes"
1642
- [activeView]="activeView"
1643
- class="k-gantt-header"
1644
- position="top"
1645
- [navigable]="navigable"
1646
- (activeViewChange)="changeActiveView($event)"></kendo-gantt-toolbar>
1647
- }
1648
- <div class="k-gantt-content">
1649
- <kendo-splitter [style.border]="0">
1650
- <kendo-splitter-pane
1651
- class="k-gantt-treelist k-gantt-treelist-scrollable"
1652
- [collapsible]="treeListPaneOptions?.collapsible"
1653
- [collapsed]="treeListPaneOptions?.collapsed"
1654
- (collapsedChange)="onTreeListCollapsedChange($event)"
1655
- [scrollable]="false">
1656
- <kendo-treelist
1657
- [idField]="taskIdField"
1658
- [columns]="columns"
1659
- [data]="data"
1660
- [hasChildren]="hasChildren"
1661
- [fetchChildren]="fetchChildren"
1662
- [navigable]="navigable"
1663
- [isExpanded]="isExpanded"
1664
- [autoSize]="columnsAutoSize"
1665
- [columnMenu]="columnMenu"
1666
- [reorderable]="columnsReorderable"
1667
- [resizable]="columnsResizable"
1668
- [rowClass]="rowClass"
1669
- [isSelected]="isSelected"
1670
- [selectable]="selectable"
1671
- [sortable]="sortable"
1672
- [sort]="sort"
1673
- [filterable]="filterMenu"
1674
- [filter]="filter"
1675
- (filterChange)="filterChange.emit($event)"
1676
- (sortChange)="sortChange.emit($event)"
1677
- (dataStateChange)="dataStateChange.emit({
1678
- filter: $event.filter,
1679
- sort: $event.sort
1680
- })"
1681
- (expandStateChange)="expandStateChange.emit($event)"
1682
- (expand)="rowExpand.emit({ dataItem: $event.dataItem })"
1683
- (collapse)="rowCollapse.emit({ dataItem: $event.dataItem })"
1684
- (columnReorder)="columnReorder.emit($event)"
1685
- (columnResize)="columnResize.emit($event)"
1686
- (columnVisibilityChange)="handleColumnVisibilityChange($event)"
1687
- (columnLockedChange)="columnLockedChange.emit($event)"
1688
- (selectionChange)="handleTreeListSelectionChange($event)"
1689
- (cellClick)="handleTreeListCellClick($event)"
1690
- (cellClose)="handleCellClose($event)"
1691
- [kendoEventsOutsideAngular]="{
1692
- dblclick: handleTreeListDoubleClick
1693
- }"
1694
- [scope]="this"
1695
- >
1696
- <kendo-treelist-messages
1697
- [noRecords]="getText('noRecords')"
1698
- [filter]="getText('filter')"
1699
- [filterEqOperator]="getText('filterEqOperator')"
1700
- [filterNotEqOperator]="getText('filterNotEqOperator')"
1701
- [filterIsNullOperator]="getText('filterIsNullOperator')"
1702
- [filterIsNotNullOperator]="getText('filterIsNotNullOperator')"
1703
- [filterIsEmptyOperator]="getText('filterIsEmptyOperator')"
1704
- [filterIsNotEmptyOperator]="getText('filterIsNotEmptyOperator')"
1705
- [filterStartsWithOperator]="getText('filterStartsWithOperator')"
1706
- [filterContainsOperator]="getText('filterContainsOperator')"
1707
- [filterNotContainsOperator]="getText('filterNotContainsOperator')"
1708
- [filterEndsWithOperator]="getText('filterEndsWithOperator')"
1709
- [filterGteOperator]="getText('filterGteOperator')"
1710
- [filterGtOperator]="getText('filterGtOperator')"
1711
- [filterLteOperator]="getText('filterLteOperator')"
1712
- [filterLtOperator]="getText('filterLtOperator')"
1713
- [filterIsTrue]="getText('filterIsTrue')"
1714
- [filterIsFalse]="getText('filterIsFalse')"
1715
- [filterBooleanAll]="getText('filterBooleanAll')"
1716
- [filterAfterOrEqualOperator]="getText('filterAfterOrEqualOperator')"
1717
- [filterAfterOperator]="getText('filterAfterOperator')"
1718
- [filterBeforeOperator]="getText('filterBeforeOperator')"
1719
- [filterBeforeOrEqualOperator]="getText('filterBeforeOrEqualOperator')"
1720
- [filterFilterButton]="getText('filterFilterButton')"
1721
- [filterClearButton]="getText('filterClearButton')"
1722
- [filterAndLogic]="getText('filterAndLogic')"
1723
- [filterOrLogic]="getText('filterOrLogic')"
1724
- [loading]="getText('loading')"
1725
- [columnMenu]="getText('columnMenu')"
1726
- [columns]="getText('columns')"
1727
- [sortable]="getText('sortable')"
1728
- [sortAscending]="getText('sortAscending')"
1729
- [sortDescending]="getText('sortDescending')"
1730
- [sortedAscending]="getText('sortedAscending')"
1731
- [sortedDescending]="getText('sortedDescending')"
1732
- [sortedDefault]="getText('sortedDefault')"
1733
- [columnsApply]="getText('columnsApply')"
1734
- [columnsReset]="getText('columnsReset')"
1735
- >
1736
- </kendo-treelist-messages>
1737
- </kendo-treelist>
1738
- </kendo-splitter-pane>
1739
- <kendo-splitter-pane
1740
- [collapsible]="timelinePaneOptions?.collapsible"
1741
- [resizable]="timelinePaneOptions?.resizable"
1742
- [collapsed]="timelinePaneOptions?.collapsed"
1743
- [min]="timelinePaneOptions?.min"
1744
- [max]="timelinePaneOptions?.max"
1745
- [size]="timelinePaneOptions?.size"
1746
- (collapsedChange)="onTimelineCollapsedChange($event)"
1747
- (sizeChange)="onTimelinePaneSizeChange($event)"
1748
- [scrollable]="false"
1749
- class="k-gantt-timeline-pane">
1750
- @if (views && views.length) {
1751
- <kendo-gantt-timeline
1752
- [renderDependencyDragClues]="renderDependencyDragClues"
1753
- [dragScrollSettings]="dragScrollSettings"
1754
- [rows]="viewItems"
1755
- [slots]="timelineSlots"
1756
- [currentTimeMarker]="activeViewCurrentTimeMarker"
1757
- [groupSlots]="timelineGroupSlots"
1758
- [tableWidth]="tableWidth"
1759
- [activeView]="activeView"
1760
- [taskContentTemplate]="taskContentTemplate?.templateRef"
1761
- [taskTemplate]="taskTemplate?.templateRef"
1762
- [summaryTaskTemplate]="summaryTaskTemplate?.templateRef"
1763
- [taskClass]="taskClass"
1764
- [dependencies]="dependencies"
1765
- [isExpanded]="isExpanded"
1766
- [selectable]="selectable"
1767
- [isTaskSelected]="isTaskSelected"
1768
- [kendoEventsOutsideAngular]="{
1769
- click: handleTimelineClick,
1770
- contextmenu: handleTimelineRightClick,
1771
- dblclick: handleTimelineDblClick,
1772
- mousedown: handleTimelineMouseDown
1773
- }"
1774
- [customTooltipTemplate]="taskTooltipTemplate"
1775
- [customDragTooltipTemplate]="taskDragTooltipTemplate"
1776
- [tooltipOptions]="taskTooltipOptions"
1777
- [scope]="this"
1778
- ></kendo-gantt-timeline>
1779
- }
1780
- </kendo-splitter-pane>
1781
- </kendo-splitter>
1782
- </div>
1783
- @if (showToolbar('bottom')) {
1784
- <kendo-gantt-toolbar
1785
- [attr.aria-label]="toolbarAriaLabel"
1786
- [showAddTask]="toolbarSettings.addTaskTool === 'bottom' || toolbarSettings.addTaskTool === 'both'"
1787
- [showViewSelector]="toolbarSettings.viewSelectorTool === 'bottom' || toolbarSettings.viewSelectorTool === 'both'"
1788
- [toolbarTemplate]="toolbarTemplate"
1789
- [views]="viewTypes"
1790
- [activeView]="activeView"
1791
- [navigable]="navigable"
1792
- class="k-gantt-footer"
1793
- position="bottom"
1794
- (activeViewChange)="changeActiveView($event)"></kendo-gantt-toolbar>
1795
- }
1796
- @if (showEditingDialog) {
1797
- <kendo-gantt-edit-dialog
1798
- [data]="data">
1799
- </kendo-gantt-edit-dialog>
1800
- }
1801
- @if (showConfirmationDialog) {
1802
- <kendo-dialog
1803
- [width]="575"
1804
- [height]="170"
1805
- [title]="getText('confirmationDialogTitle')"
1806
- (close)="handleConfirmationDialogClose()">
1807
- <span>{{ getText('confirmationDialogContent') }}</span>
1808
- <kendo-dialog-actions layout="start">
1809
- <kendo-treelist-spacer></kendo-treelist-spacer>
1810
- <button kendoButton [primary]="true" (click)="handleDeleteConfirmation()">{{ getText('deleteButtonText') }}</button>
1811
- <button kendoButton (click)="handleConfirmationDialogClose()">{{ getText('cancelButtonText') }}</button>
1812
- </kendo-dialog-actions>
1813
- </kendo-dialog>
1814
- }
1815
-
1816
- @if (showLicenseWatermark) {
1817
- <div kendoWatermarkOverlay [licenseMessage]="licenseMessage"></div>
1818
- }
1819
- `, isInline: true, dependencies: [{ kind: "directive", type: LocalizedMessagesDirective, selector: "[kendoGanttLocalizedMessages]" }, { kind: "component", type: ToolbarComponent, selector: "kendo-gantt-toolbar", inputs: ["showAddTask", "showViewSelector", "views", "activeView", "toolbarTemplate", "navigable", "position"], outputs: ["activeViewChange"] }, { kind: "component", type: SplitterComponent, selector: "kendo-splitter", inputs: ["orientation", "splitbarWidth", "resizeStep", "splitterBarClass"], outputs: ["layoutChange"], exportAs: ["kendoSplitter"] }, { kind: "component", type: SplitterPaneComponent, selector: "kendo-splitter-pane", inputs: ["order", "size", "splitterBarAttributes", "splitterBarClass", "min", "max", "resizable", "collapsible", "scrollable", "collapsed", "orientation", "containsSplitter", "overlayContent"], outputs: ["sizeChange", "collapsedChange"], exportAs: ["kendoSplitterPane"] }, { kind: "component", type: TreeListComponent, selector: "kendo-treelist", inputs: ["aria-label", "data", "pageSize", "height", "rowHeight", "skip", "scrollable", "sort", "trackBy", "filter", "virtualColumns", "filterable", "sortable", "pageable", "navigable", "autoSize", "rowClass", "resizable", "reorderable", "loading", "columnMenu", "hideHeader", "idField", "selectable", "isSelected", "rowReorderable", "columns", "fetchChildren", "hasChildren", "isExpanded"], outputs: ["selectionChange", "filterChange", "pageChange", "sortChange", "dataStateChange", "edit", "cancel", "save", "remove", "add", "cellClose", "cellClick", "pdfExport", "excelExport", "columnResize", "columnReorder", "columnVisibilityChange", "columnLockedChange", "scrollBottom", "contentScroll", "expand", "collapse", "expandStateChange", "rowReorder"], exportAs: ["kendoTreeList"] }, { kind: "directive", type: EventsOutsideAngularDirective, selector: "[kendoEventsOutsideAngular]", inputs: ["kendoEventsOutsideAngular", "scope"] }, { kind: "component", type: CustomMessagesComponent, selector: "kendo-treelist-messages" }, { kind: "component", type: GanttTimelineComponent, selector: "kendo-gantt-timeline", inputs: ["rows", "slots", "groupSlots", "tableWidth", "activeView", "taskContentTemplate", "taskTemplate", "summaryTaskTemplate", "taskClass", "renderDependencyDragClues", "dragScrollSettings", "currentTimeMarker", "customTooltipTemplate", "customDragTooltipTemplate", "tooltipOptions", "selectable", "isTaskSelected", "isExpanded", "dependencies"], outputs: ["timelineContainerPress", "timelineContainerDrag", "timelineContainerRelease"] }, { kind: "component", type: EditDialogComponent, selector: "kendo-gantt-edit-dialog", inputs: ["data"] }, { kind: "component", type: DialogComponent, selector: "kendo-dialog", inputs: ["actions", "actionsLayout", "autoFocusedElement", "title", "width", "minWidth", "maxWidth", "height", "minHeight", "maxHeight", "animation", "themeColor"], outputs: ["action", "close"], exportAs: ["kendoDialog"] }, { kind: "component", type: DialogActionsComponent, selector: "kendo-dialog-actions", inputs: ["actions", "layout"], outputs: ["action"] }, { kind: "component", type: TreeListSpacerComponent, selector: "kendo-treelist-spacer", inputs: ["width"] }, { kind: "component", type: ButtonComponent, selector: "button[kendoButton]", inputs: ["arrowIcon", "toggleable", "togglable", "selected", "tabIndex", "imageUrl", "iconClass", "icon", "disabled", "size", "rounded", "fillMode", "themeColor", "svgIcon", "primary", "look"], outputs: ["selectedChange", "click"], exportAs: ["kendoButton"] }, { kind: "component", type: WatermarkOverlayComponent, selector: "div[kendoWatermarkOverlay]", inputs: ["licenseMessage"] }] });
1820
- }
1821
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: GanttComponent, decorators: [{
1822
- type: Component,
1823
- args: [{
1824
- selector: 'kendo-gantt',
1825
- exportAs: 'kendoGantt',
1826
- providers: [
1827
- GanttLocalizationService,
1828
- LocalizationService,
1829
- {
1830
- provide: L10N_PREFIX,
1831
- useValue: 'kendo.gantt'
1832
- },
1833
- {
1834
- provide: DataBoundTreeComponent,
1835
- useExisting: forwardRef(() => GanttComponent)
1836
- },
1837
- {
1838
- provide: ExpandableTreeComponent,
1839
- useExisting: forwardRef(() => GanttComponent)
1840
- },
1841
- TimelineViewService,
1842
- TimelineDayViewService,
1843
- TimelineWeekViewService,
1844
- TimelineMonthViewService,
1845
- TimeLineYearViewService,
1846
- ScrollSyncService,
1847
- DependencyDomService,
1848
- MappingService,
1849
- OptionChangesService,
1850
- EditService,
1851
- TimelineScrollService,
1852
- NavigationService,
1853
- CurrentTimeMarkerService
1854
- ],
1855
- template: `
1856
- <ng-container kendoGanttLocalizedMessages
1857
- i18n-taskEditingGeneralTabTitle="kendo.gantt.taskEditingGeneralTabTitle|The title of the 'General' tab of the editing dialog TabStrip"
1858
- taskEditingGeneralTabTitle="General"
1859
-
1860
- i18n-taskEditingPredecessorsTabTitle="kendo.gantt.taskEditingPredecessorsTabTitle|The title of the 'Predecessors' dependencies tab of the editing dialog TabStrip"
1861
- taskEditingPredecessorsTabTitle="Predecessors"
1862
-
1863
- i18n-taskEditingSuccessorsTabTitle="kendo.gantt.taskEditingSuccessorsTabTitle|The title of the 'Successors' dependencies tab of the editing dialog TabStrip"
1864
- taskEditingSuccessorsTabTitle="Successors"
1865
-
1866
- i18n-taskEditingDependenciesAddButtonText="kendo.gantt.taskEditingDependenciesAddButtonText|The text of the 'Add' button in the dependencies tabs of the editing dialog TabStrip"
1867
- taskEditingDependenciesAddButtonText="Add"
1868
-
1869
- i18n-taskEditingDependenciesRemoveButtonText="kendo.gantt.taskEditingDependenciesRemoveButtonText|The text of the 'Remove' button in the dependencies tabs of the editing dialog TabStrip"
1870
- taskEditingDependenciesRemoveButtonText="Remove"
1871
-
1872
- i18n-taskEditingDependenciesGridNameColumnTitle="kendo.gantt.taskEditingDependenciesGridNameColumnTitle|The title of the 'Task Title' Grid column in the dependencies tabs of the editing dialog TabStrip"
1873
- taskEditingDependenciesGridNameColumnTitle="Task Title"
1874
-
1875
- i18n-taskEditingDependenciesGridTypeColumnTitle="kendo.gantt.taskEditingDependenciesGridTypeColumnTitle|The title of the 'Type' Grid column in the dependencies tabs of the editing dialog TabStrip"
1876
- taskEditingDependenciesGridTypeColumnTitle="Type"
1877
-
1878
- i18n-taskDeleteLabel="kendo.gantt.taskDeleteLabel|The label of the task delete icon"
1879
- taskDeleteLabel="Delete"
1880
-
1881
- i18n-taskEditingDialogTitle="kendo.gantt.taskEditingDialogTitle|The title of the task editing dialog"
1882
- taskEditingDialogTitle="Editing Task"
1883
-
1884
- i18n-taskEditingDialogCloseTitle="kendo.gantt.taskEditingDialogCloseTitle|The title of the task editing dialog close button"
1885
- taskEditingDialogCloseTitle="Close"
1886
-
1887
- i18n-confirmationDialogCloseTitle="kendo.gantt.confirmationDialogCloseTitle|The title of the confirmation dialog close button"
1888
- confirmationDialogCloseTitle="Close"
1889
-
1890
- i18n-confirmationDialogTitle="kendo.gantt.confirmationDialogTitle|The title of the delete task confirmation dialog"
1891
- confirmationDialogTitle="Delete Task"
1892
-
1893
- i18n-confirmationDialogContent="kendo.gantt.confirmationDialogContent|The content of the delete task confirmation dialog"
1894
- confirmationDialogContent="Are you sure you want to delete this task?"
1895
-
1896
- i18n-deleteButtonText="kendo.gantt.deleteButtonText|The text of the task editing dialog 'Delete' button"
1897
- deleteButtonText="Delete"
1898
-
1899
- i18n-cancelButtonText="kendo.gantt.cancelButtonText|The text of the task editing dialog 'Cancel' button"
1900
- cancelButtonText="Cancel"
1901
-
1902
- i18n-saveButtonText="kendo.gantt.saveButtonText|The text of the task editing dialog 'Save' button"
1903
- saveButtonText="Save"
1904
-
1905
- i18n-titleFieldInputLabel="kendo.gantt.titleFieldInputLabel|The label of the 'title' field input in editing mode"
1906
- titleFieldInputLabel="Title"
1907
-
1908
- i18n-startFieldInputLabel="kendo.gantt.startFieldInputLabel|The label of the 'start' field input in editing mode"
1909
- startFieldInputLabel="Start"
1910
-
1911
- i18n-endFieldInputLabel="kendo.gantt.endFieldInputLabel|The label of the 'end' field input in editing mode"
1912
- endFieldInputLabel="End"
1913
-
1914
- i18n-completionRatioFieldInputLabel="kendo.gantt.completionRatioFieldInputLabel|The label of the 'completionRatio' field input in editing mode"
1915
- completionRatioFieldInputLabel="Progress"
1916
-
1917
- i18n-dayViewText="kendo.gantt.dayViewText|The text of the day view in the ViewSelector component"
1918
- dayViewText="Day"
1919
-
1920
- i18n-weekViewText="kendo.gantt.weekViewText|The text of the week view in the ViewSelector component"
1921
- weekViewText="Week"
1922
-
1923
- i18n-monthViewText="kendo.gantt.monthViewText|The text of the month view in the ViewSelector component"
1924
- monthViewText="Month"
1925
-
1926
- i18n-yearViewText-disabled="kendo.gantt.yearViewText|The text of the year view in the ViewSelector component"
1927
- yearViewText="Year"
1928
-
1929
- i18n-addTaskText="kendo.gantt.addTaskText|The text of the DropDownButton in the AddTask component"
1930
- addTaskText="Add Task"
1931
-
1932
- i18n-addChildText="kendo.gantt.addChildText|The text of the 'Add Child' option in the AddTask component"
1933
- addChildText="Add Child"
1934
-
1935
- i18n-addAboveText="kendo.gantt.addAboveText|The text of the 'Add Above' option in the AddTask component"
1936
- addAboveText="Add Above"
1937
-
1938
- i18n-addBelowText="kendo.gantt.addBelowText|The text of the 'Add Below' option in the AddTask component"
1939
- addBelowText="Add Below"
1940
-
1941
- i18n-noRecords="kendo.gantt.noRecords|The label visible in the TreeList when there are no records"
1942
- noRecords="No records available."
1943
-
1944
- i18n-filter="kendo.gantt.filter|The label of the filter cell or icon"
1945
- filter="Filter"
1946
-
1947
- i18n-filterEqOperator="kendo.gantt.filterEqOperator|The text of the equal filter operator"
1948
- filterEqOperator="Is equal to"
1949
-
1950
- i18n-filterNotEqOperator="kendo.gantt.filterNotEqOperator|The text of the not equal filter operator"
1951
- filterNotEqOperator="Is not equal to"
1952
-
1953
- i18n-filterIsNullOperator="kendo.gantt.filterIsNullOperator|The text of the is null filter operator"
1954
- filterIsNullOperator="Is null"
1955
-
1956
- i18n-filterIsNotNullOperator="kendo.gantt.filterIsNotNullOperator|The text of the is not null filter operator"
1957
- filterIsNotNullOperator="Is not null"
1958
-
1959
- i18n-filterIsEmptyOperator="kendo.gantt.filterIsEmptyOperator|The text of the is empty filter operator"
1960
- filterIsEmptyOperator="Is empty"
1961
-
1962
- i18n-filterIsNotEmptyOperator="kendo.gantt.filterIsNotEmptyOperator|The text of the is not empty filter operator"
1963
- filterIsNotEmptyOperator="Is not empty"
1964
-
1965
- i18n-filterStartsWithOperator="kendo.gantt.filterStartsWithOperator|The text of the starts with filter operator"
1966
- filterStartsWithOperator="Starts with"
1967
-
1968
- i18n-filterContainsOperator="kendo.gantt.filterContainsOperator|The text of the contains filter operator"
1969
- filterContainsOperator="Contains"
1970
-
1971
- i18n-filterNotContainsOperator="kendo.gantt.filterNotContainsOperator|The text of the does not contain filter operator"
1972
- filterNotContainsOperator="Does not contain"
1973
-
1974
- i18n-filterEndsWithOperator="kendo.gantt.filterEndsWithOperator|The text of the ends with filter operator"
1975
- filterEndsWithOperator="Ends with"
1976
-
1977
- i18n-filterGteOperator="kendo.gantt.filterGteOperator|The text of the greater than or equal filter operator"
1978
- filterGteOperator="Is greater than or equal to"
1979
-
1980
- i18n-filterGtOperator="kendo.gantt.filterGtOperator|The text of the greater than filter operator"
1981
- filterGtOperator="Is greater than"
1982
-
1983
- i18n-filterLteOperator="kendo.gantt.filterLteOperator|The text of the less than or equal filter operator"
1984
- filterLteOperator="Is less than or equal to"
1985
-
1986
- i18n-filterLtOperator="kendo.gantt.filterLtOperator|The text of the less than filter operator"
1987
- filterLtOperator="Is less than"
1988
-
1989
- i18n-filterIsTrue="kendo.gantt.filterIsTrue|The text of the IsTrue boolean filter option"
1990
- filterIsTrue="Is True"
1991
-
1992
- i18n-filterIsFalse="kendo.gantt.filterIsFalse|The text of the IsFalse boolean filter option"
1993
- filterIsFalse="Is False"
1994
-
1995
- i18n-filterBooleanAll="kendo.gantt.filterBooleanAll|The text of the (All) boolean filter option"
1996
- filterBooleanAll="(All)"
1997
-
1998
- i18n-filterAfterOrEqualOperator="kendo.gantt.filterAfterOrEqualOperator|The text of the after or equal date filter operator"
1999
- filterAfterOrEqualOperator="Is after or equal to"
2000
-
2001
- i18n-filterAfterOperator="kendo.gantt.filterAfterOperator|The text of the after date filter operator"
2002
- filterAfterOperator="Is after"
2003
-
2004
- i18n-filterBeforeOperator="kendo.gantt.filterBeforeOperator|The text of the before date filter operator"
2005
- filterBeforeOperator="Is before"
2006
-
2007
- i18n-filterBeforeOrEqualOperator="kendo.gantt.filterBeforeOrEqualOperator|The text of the before or equal date filter operator"
2008
- filterBeforeOrEqualOperator="Is before or equal to"
2009
-
2010
- i18n-filterFilterButton="kendo.gantt.filterFilterButton|The text of the filter button"
2011
- filterFilterButton="Filter"
2012
-
2013
- i18n-filterClearButton="kendo.gantt.filterClearButton|The text of the clear filter button"
2014
- filterClearButton="Clear"
2015
-
2016
- i18n-filterAndLogic="kendo.gantt.filterAndLogic|The text of the And filter logic"
2017
- filterAndLogic="And"
2018
-
2019
- i18n-filterOrLogic="kendo.gantt.filterOrLogic|The text of the Or filter logic"
2020
- filterOrLogic="Or"
2021
-
2022
- i18n-loading="kendo.gantt.loading|The loading text"
2023
- loading="Loading"
2024
-
2025
- i18n-columnMenu="kendo.gantt.columnMenu|The title of the column menu icon"
2026
- columnMenu="Column Menu"
2027
-
2028
- i18n-columns="kendo.gantt.columns|The text shown in the column menu for the columns item"
2029
- columns="Columns"
2030
-
2031
- i18n-lock-disabled="kendo.gantt.lock|The text shown in the column menu for the lock item"
2032
- lock-disabled="Lock"
2033
-
2034
- i18n-unlock-disabled="kendo.gantt.unlock|The text shown in the column menu for the unlock item"
2035
- unlock-disabled="Unlock"
2036
-
2037
- i18n-sortable="kendo.gantt.sortable|The label of the sort icon"
2038
- sortable="Sortable"
2039
-
2040
- i18n-sortAscending="kendo.gantt.sortAscending|The text shown in the column menu for the sort ascending item"
2041
- sortAscending="Sort Ascending"
2042
-
2043
- i18n-sortDescending="kendo.gantt.sortDescending|The text shown in the column menu for the sort descending item"
2044
- sortDescending="Sort Descending"
2045
-
2046
- i18n-sortedDefault="kendo.gantt.sortedDefault|The status announcement when a column is no longer sorted"
2047
- sortedDefault="Not Sorted"
2048
-
2049
- i18n-columnsApply="kendo.gantt.columnsApply|The text shown in the column menu or column chooser for the columns apply button"
2050
- columnsApply="Apply"
2051
-
2052
- i18n-columnsReset="kendo.gantt.columnsReset|The text shown in the column menu or column chooser for the columns reset button"
2053
- columnsReset="Reset"
2054
-
2055
- i18n-tooltipStartDateText="kendo.gantt.tooltipStartDateText|The text shown in the task tooltip before the task start date"
2056
- tooltipStartDateText="Start"
2057
-
2058
- i18n-tooltipEndDateText="kendo.gantt.tooltipEndDateText|The text shown in the task tooltip before the task end date"
2059
- tooltipEndDateText="End"></ng-container>
2060
- @if (showToolbar('top')) {
2061
- <kendo-gantt-toolbar
2062
- [attr.aria-label]="toolbarAriaLabel"
2063
- [showAddTask]="toolbarSettings.addTaskTool === 'top' || toolbarSettings.addTaskTool === 'both'"
2064
- [showViewSelector]="toolbarSettings.viewSelectorTool === 'top' || toolbarSettings.viewSelectorTool === 'both'"
2065
- [toolbarTemplate]="toolbarTemplate"
2066
- [views]="viewTypes"
2067
- [activeView]="activeView"
2068
- class="k-gantt-header"
2069
- position="top"
2070
- [navigable]="navigable"
2071
- (activeViewChange)="changeActiveView($event)"></kendo-gantt-toolbar>
2072
- }
2073
- <div class="k-gantt-content">
2074
- <kendo-splitter [style.border]="0">
2075
- <kendo-splitter-pane
2076
- class="k-gantt-treelist k-gantt-treelist-scrollable"
2077
- [collapsible]="treeListPaneOptions?.collapsible"
2078
- [collapsed]="treeListPaneOptions?.collapsed"
2079
- (collapsedChange)="onTreeListCollapsedChange($event)"
2080
- [scrollable]="false">
2081
- <kendo-treelist
2082
- [idField]="taskIdField"
2083
- [columns]="columns"
2084
- [data]="data"
2085
- [hasChildren]="hasChildren"
2086
- [fetchChildren]="fetchChildren"
2087
- [navigable]="navigable"
2088
- [isExpanded]="isExpanded"
2089
- [autoSize]="columnsAutoSize"
2090
- [columnMenu]="columnMenu"
2091
- [reorderable]="columnsReorderable"
2092
- [resizable]="columnsResizable"
2093
- [rowClass]="rowClass"
2094
- [isSelected]="isSelected"
2095
- [selectable]="selectable"
2096
- [sortable]="sortable"
2097
- [sort]="sort"
2098
- [filterable]="filterMenu"
2099
- [filter]="filter"
2100
- (filterChange)="filterChange.emit($event)"
2101
- (sortChange)="sortChange.emit($event)"
2102
- (dataStateChange)="dataStateChange.emit({
2103
- filter: $event.filter,
2104
- sort: $event.sort
2105
- })"
2106
- (expandStateChange)="expandStateChange.emit($event)"
2107
- (expand)="rowExpand.emit({ dataItem: $event.dataItem })"
2108
- (collapse)="rowCollapse.emit({ dataItem: $event.dataItem })"
2109
- (columnReorder)="columnReorder.emit($event)"
2110
- (columnResize)="columnResize.emit($event)"
2111
- (columnVisibilityChange)="handleColumnVisibilityChange($event)"
2112
- (columnLockedChange)="columnLockedChange.emit($event)"
2113
- (selectionChange)="handleTreeListSelectionChange($event)"
2114
- (cellClick)="handleTreeListCellClick($event)"
2115
- (cellClose)="handleCellClose($event)"
2116
- [kendoEventsOutsideAngular]="{
2117
- dblclick: handleTreeListDoubleClick
2118
- }"
2119
- [scope]="this"
2120
- >
2121
- <kendo-treelist-messages
2122
- [noRecords]="getText('noRecords')"
2123
- [filter]="getText('filter')"
2124
- [filterEqOperator]="getText('filterEqOperator')"
2125
- [filterNotEqOperator]="getText('filterNotEqOperator')"
2126
- [filterIsNullOperator]="getText('filterIsNullOperator')"
2127
- [filterIsNotNullOperator]="getText('filterIsNotNullOperator')"
2128
- [filterIsEmptyOperator]="getText('filterIsEmptyOperator')"
2129
- [filterIsNotEmptyOperator]="getText('filterIsNotEmptyOperator')"
2130
- [filterStartsWithOperator]="getText('filterStartsWithOperator')"
2131
- [filterContainsOperator]="getText('filterContainsOperator')"
2132
- [filterNotContainsOperator]="getText('filterNotContainsOperator')"
2133
- [filterEndsWithOperator]="getText('filterEndsWithOperator')"
2134
- [filterGteOperator]="getText('filterGteOperator')"
2135
- [filterGtOperator]="getText('filterGtOperator')"
2136
- [filterLteOperator]="getText('filterLteOperator')"
2137
- [filterLtOperator]="getText('filterLtOperator')"
2138
- [filterIsTrue]="getText('filterIsTrue')"
2139
- [filterIsFalse]="getText('filterIsFalse')"
2140
- [filterBooleanAll]="getText('filterBooleanAll')"
2141
- [filterAfterOrEqualOperator]="getText('filterAfterOrEqualOperator')"
2142
- [filterAfterOperator]="getText('filterAfterOperator')"
2143
- [filterBeforeOperator]="getText('filterBeforeOperator')"
2144
- [filterBeforeOrEqualOperator]="getText('filterBeforeOrEqualOperator')"
2145
- [filterFilterButton]="getText('filterFilterButton')"
2146
- [filterClearButton]="getText('filterClearButton')"
2147
- [filterAndLogic]="getText('filterAndLogic')"
2148
- [filterOrLogic]="getText('filterOrLogic')"
2149
- [loading]="getText('loading')"
2150
- [columnMenu]="getText('columnMenu')"
2151
- [columns]="getText('columns')"
2152
- [sortable]="getText('sortable')"
2153
- [sortAscending]="getText('sortAscending')"
2154
- [sortDescending]="getText('sortDescending')"
2155
- [sortedAscending]="getText('sortedAscending')"
2156
- [sortedDescending]="getText('sortedDescending')"
2157
- [sortedDefault]="getText('sortedDefault')"
2158
- [columnsApply]="getText('columnsApply')"
2159
- [columnsReset]="getText('columnsReset')"
2160
- >
2161
- </kendo-treelist-messages>
2162
- </kendo-treelist>
2163
- </kendo-splitter-pane>
2164
- <kendo-splitter-pane
2165
- [collapsible]="timelinePaneOptions?.collapsible"
2166
- [resizable]="timelinePaneOptions?.resizable"
2167
- [collapsed]="timelinePaneOptions?.collapsed"
2168
- [min]="timelinePaneOptions?.min"
2169
- [max]="timelinePaneOptions?.max"
2170
- [size]="timelinePaneOptions?.size"
2171
- (collapsedChange)="onTimelineCollapsedChange($event)"
2172
- (sizeChange)="onTimelinePaneSizeChange($event)"
2173
- [scrollable]="false"
2174
- class="k-gantt-timeline-pane">
2175
- @if (views && views.length) {
2176
- <kendo-gantt-timeline
2177
- [renderDependencyDragClues]="renderDependencyDragClues"
2178
- [dragScrollSettings]="dragScrollSettings"
2179
- [rows]="viewItems"
2180
- [slots]="timelineSlots"
2181
- [currentTimeMarker]="activeViewCurrentTimeMarker"
2182
- [groupSlots]="timelineGroupSlots"
2183
- [tableWidth]="tableWidth"
2184
- [activeView]="activeView"
2185
- [taskContentTemplate]="taskContentTemplate?.templateRef"
2186
- [taskTemplate]="taskTemplate?.templateRef"
2187
- [summaryTaskTemplate]="summaryTaskTemplate?.templateRef"
2188
- [taskClass]="taskClass"
2189
- [dependencies]="dependencies"
2190
- [isExpanded]="isExpanded"
2191
- [selectable]="selectable"
2192
- [isTaskSelected]="isTaskSelected"
2193
- [kendoEventsOutsideAngular]="{
2194
- click: handleTimelineClick,
2195
- contextmenu: handleTimelineRightClick,
2196
- dblclick: handleTimelineDblClick,
2197
- mousedown: handleTimelineMouseDown
2198
- }"
2199
- [customTooltipTemplate]="taskTooltipTemplate"
2200
- [customDragTooltipTemplate]="taskDragTooltipTemplate"
2201
- [tooltipOptions]="taskTooltipOptions"
2202
- [scope]="this"
2203
- ></kendo-gantt-timeline>
2204
- }
2205
- </kendo-splitter-pane>
2206
- </kendo-splitter>
2207
- </div>
2208
- @if (showToolbar('bottom')) {
2209
- <kendo-gantt-toolbar
2210
- [attr.aria-label]="toolbarAriaLabel"
2211
- [showAddTask]="toolbarSettings.addTaskTool === 'bottom' || toolbarSettings.addTaskTool === 'both'"
2212
- [showViewSelector]="toolbarSettings.viewSelectorTool === 'bottom' || toolbarSettings.viewSelectorTool === 'both'"
2213
- [toolbarTemplate]="toolbarTemplate"
2214
- [views]="viewTypes"
2215
- [activeView]="activeView"
2216
- [navigable]="navigable"
2217
- class="k-gantt-footer"
2218
- position="bottom"
2219
- (activeViewChange)="changeActiveView($event)"></kendo-gantt-toolbar>
2220
- }
2221
- @if (showEditingDialog) {
2222
- <kendo-gantt-edit-dialog
2223
- [data]="data">
2224
- </kendo-gantt-edit-dialog>
2225
- }
2226
- @if (showConfirmationDialog) {
2227
- <kendo-dialog
2228
- [width]="575"
2229
- [height]="170"
2230
- [title]="getText('confirmationDialogTitle')"
2231
- (close)="handleConfirmationDialogClose()">
2232
- <span>{{ getText('confirmationDialogContent') }}</span>
2233
- <kendo-dialog-actions layout="start">
2234
- <kendo-treelist-spacer></kendo-treelist-spacer>
2235
- <button kendoButton [primary]="true" (click)="handleDeleteConfirmation()">{{ getText('deleteButtonText') }}</button>
2236
- <button kendoButton (click)="handleConfirmationDialogClose()">{{ getText('cancelButtonText') }}</button>
2237
- </kendo-dialog-actions>
2238
- </kendo-dialog>
2239
- }
2240
-
2241
- @if (showLicenseWatermark) {
2242
- <div kendoWatermarkOverlay [licenseMessage]="licenseMessage"></div>
2243
- }
2244
- `,
2245
- standalone: true,
2246
- imports: [LocalizedMessagesDirective, ToolbarComponent, SplitterComponent, SplitterPaneComponent, TreeListComponent, EventsOutsideAngularDirective, CustomMessagesComponent, GanttTimelineComponent, EditDialogComponent, DialogComponent, DialogActionsComponent, TreeListSpacerComponent, ButtonComponent, WatermarkOverlayComponent]
2247
- }]
2248
- }], ctorParameters: () => [{ type: i1.TimelineViewService }, { type: i2.ScrollSyncService }, { type: i0.Renderer2 }, { type: i3.MappingService }, { type: i4.OptionChangesService }, { type: i5.DependencyDomService }, { type: i6.EditService }, { type: i7.LocalizationService }, { type: i0.ElementRef }, { type: i0.NgZone }, { type: i8.NavigationService }, { type: i9.CurrentTimeMarkerService }, { type: i10.IntlService }, { type: undefined, decorators: [{
2249
- type: Inject,
2250
- args: [LOCALE_ID]
2251
- }] }], propDecorators: { treeList: [{
2252
- type: ViewChild,
2253
- args: [TreeListComponent, { static: true }]
2254
- }], timeline: [{
2255
- type: ViewChild,
2256
- args: [GanttTimelineComponent]
2257
- }], taskContentTemplate: [{
2258
- type: ContentChild,
2259
- args: [GanttTaskContentTemplateDirective]
2260
- }], taskTemplate: [{
2261
- type: ContentChild,
2262
- args: [GanttTaskTemplateDirective]
2263
- }], taskTooltipTemplate: [{
2264
- type: ContentChild,
2265
- args: [GanttTaskTooltipTemplateDirective]
2266
- }], taskDragTooltipTemplate: [{
2267
- type: ContentChild,
2268
- args: [GanttTaskDragTooltipTemplateDirective]
2269
- }], summaryTaskTemplate: [{
2270
- type: ContentChild,
2271
- args: [GanttSummaryTaskTemplateDirective]
2272
- }], toolbarTemplateChildren: [{
2273
- type: ContentChildren,
2274
- args: [ToolbarTemplateDirective]
2275
- }], roleDescription: [{
2276
- type: Input,
2277
- args: ['aria-roledescription']
2278
- }], hostRoleDescriptionAttr: [{
2279
- type: HostBinding,
2280
- args: ['attr.aria-roledescription']
2281
- }], role: [{
2282
- type: Input,
2283
- args: ['role']
2284
- }], hostRoleAttr: [{
2285
- type: HostBinding,
2286
- args: ['attr.role']
2287
- }], hostClasses: [{
2288
- type: HostBinding,
2289
- args: ['class.k-gantt']
2290
- }], dir: [{
2291
- type: HostBinding,
2292
- args: ['attr.dir']
2293
- }], columns: [{
2294
- type: ContentChildren,
2295
- args: [GanttColumnBase]
2296
- }], taskModelFields: [{
2297
- type: Input
2298
- }], dependencyModelFields: [{
2299
- type: Input
2300
- }], views: [{
2301
- type: ContentChildren,
2302
- args: [ViewBase]
2303
- }], activeView: [{
2304
- type: Input
2305
- }], data: [{
2306
- type: Input
2307
- }], isSelected: [{
2308
- type: Input
2309
- }], validateNewDependency: [{
2310
- type: Input
2311
- }], selectionChange: [{
2312
- type: Output
2313
- }], selectable: [{
2314
- type: Input
2315
- }], toolbarSettings: [{
2316
- type: Input
2317
- }], toolbarAriaLabel: [{
2318
- type: Input
2319
- }], fetchChildren: [{
2320
- type: Input
2321
- }], hasChildren: [{
2322
- type: Input
2323
- }], dependencies: [{
2324
- type: Input
2325
- }], sortable: [{
2326
- type: Input
2327
- }], sort: [{
2328
- type: Input
2329
- }], filterable: [{
2330
- type: Input
2331
- }], filter: [{
2332
- type: Input
2333
- }], workDayStart: [{
2334
- type: Input
2335
- }], workDayEnd: [{
2336
- type: Input
2337
- }], workWeekStart: [{
2338
- type: Input
2339
- }], workWeekEnd: [{
2340
- type: Input
2341
- }], navigable: [{
2342
- type: Input
2343
- }], timelinePaneOptions: [{
2344
- type: Input
2345
- }], treeListPaneOptions: [{
2346
- type: Input
2347
- }], taskClass: [{
2348
- type: Input
2349
- }], rowClass: [{
2350
- type: Input
2351
- }], isExpanded: [{
2352
- type: Input
2353
- }], columnsAutoSize: [{
2354
- type: Input
2355
- }], currentTimeMarker: [{
2356
- type: Input
2357
- }], columnMenu: [{
2358
- type: Input
2359
- }], columnsReorderable: [{
2360
- type: Input
2361
- }], columnsResizable: [{
2362
- type: Input
2363
- }], dragScrollSettings: [{
2364
- type: Input
2365
- }], taskTooltipOptions: [{
2366
- type: Input
2367
- }], rowExpand: [{
2368
- type: Output
2369
- }], taskDblClick: [{
2370
- type: Output
2371
- }], cellDblClick: [{
2372
- type: Output
2373
- }], cellClose: [{
2374
- type: Output
2375
- }], taskDelete: [{
2376
- type: Output
2377
- }], rowCollapse: [{
2378
- type: Output
2379
- }], remove: [{
2380
- type: Output
2381
- }], cancel: [{
2382
- type: Output
2383
- }], save: [{
2384
- type: Output
2385
- }], taskAdd: [{
2386
- type: Output
2387
- }], dependencyAdd: [{
2388
- type: Output
2389
- }], sortChange: [{
2390
- type: Output
2391
- }], filterChange: [{
2392
- type: Output
2393
- }], dataStateChange: [{
2394
- type: Output
2395
- }], treeListPaneCollapsedChange: [{
2396
- type: Output
2397
- }], timelinePaneCollapsedChange: [{
2398
- type: Output
2399
- }], timelinePaneSizeChange: [{
2400
- type: Output
2401
- }], activeViewChange: [{
2402
- type: Output
2403
- }], columnResize: [{
2404
- type: Output
2405
- }], columnReorder: [{
2406
- type: Output
2407
- }], columnVisibilityChange: [{
2408
- type: Output
2409
- }], columnLockedChange: [{
2410
- type: Output
2411
- }], cellClick: [{
2412
- type: Output
2413
- }], taskClick: [{
2414
- type: Output
2415
- }] } });