@progress/kendo-angular-gantt 0.3.0-dev.202112141015 → 1.0.0-dev.202201191538

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 (151) hide show
  1. package/dist/cdn/js/kendo-angular-gantt.js +2 -2
  2. package/dist/cdn/main.js +1 -23
  3. package/dist/es/common/touch-enabled.js +9 -0
  4. package/dist/es/dependencies/utils.js +40 -5
  5. package/dist/es/dragging/dependency-drag-create.directive.js +347 -0
  6. package/dist/es/dragging/drag-validation-tooltip.component.js +27 -0
  7. package/dist/es/editing/dependencies-table.component.js +131 -0
  8. package/dist/es/editing/edit-dialog.component.js +39 -8
  9. package/dist/es/editing/edit.service.js +91 -8
  10. package/dist/es/editing/task-fields.component.js +43 -0
  11. package/dist/es/editing/{util.js → utils.js} +0 -0
  12. package/dist/es/gantt.component.js +352 -44
  13. package/dist/es/gantt.module.js +35 -9
  14. package/dist/es/index.js +8 -0
  15. package/dist/es/localization/gantt-localization.service.js +26 -0
  16. package/dist/es/main.js +1 -0
  17. package/dist/es/models/dependency-type.enum.js +16 -0
  18. package/dist/es/models/events/{edit-event.interface.js → dependency-add-event.interface.js} +0 -0
  19. package/dist/es/models/events/{remove-event.interface.js → task-delete-event.interface.js} +0 -0
  20. package/dist/es/models/models.js +1 -0
  21. package/dist/{es2015/models/events/edit-event.interface.js → es/models/view-item.interface.js} +0 -0
  22. package/dist/{es2015/models/events/remove-event.interface.js → es/navigation/navigation-models.js} +0 -0
  23. package/dist/es/navigation/navigation.service.js +390 -0
  24. package/dist/es/navigation/utils.js +77 -0
  25. package/dist/es/package-metadata.js +1 -1
  26. package/dist/es/rendering/gantt-milestone-task.component.js +12 -6
  27. package/dist/es/rendering/gantt-summary-task.component.js +27 -6
  28. package/dist/es/rendering/gantt-task-base.js +84 -22
  29. package/dist/es/rendering/gantt-task.component.js +13 -8
  30. package/dist/es/rendering/gantt-tasks-table-body.component.js +13 -5
  31. package/dist/es/scrolling/drag-scroll-settings.js +20 -0
  32. package/dist/es/scrolling/timeline-scroll.directive.js +89 -0
  33. package/dist/es/scrolling/timeline-scroll.service.js +39 -0
  34. package/dist/es/scrolling/utils.js +80 -0
  35. package/dist/es/timeline/gantt-timeline.component.js +50 -4
  36. package/dist/es/toolbar/toolbar.component.js +12 -13
  37. package/dist/es/toolbar/view-selector.component.js +1 -1
  38. package/dist/es/utils.js +153 -12
  39. package/dist/es2015/common/touch-enabled.d.ts +9 -0
  40. package/dist/es2015/common/touch-enabled.js +9 -0
  41. package/dist/es2015/dependencies/utils.d.ts +15 -0
  42. package/dist/es2015/dependencies/utils.js +40 -5
  43. package/dist/es2015/dragging/dependency-drag-create.directive.d.ts +72 -0
  44. package/dist/es2015/dragging/dependency-drag-create.directive.js +324 -0
  45. package/dist/es2015/dragging/drag-validation-tooltip.component.d.ts +29 -0
  46. package/dist/es2015/dragging/drag-validation-tooltip.component.js +76 -0
  47. package/dist/es2015/editing/dependencies-table.component.d.ts +39 -0
  48. package/dist/es2015/editing/dependencies-table.component.js +160 -0
  49. package/dist/es2015/editing/edit-dialog.component.d.ts +11 -4
  50. package/dist/es2015/editing/edit-dialog.component.js +66 -36
  51. package/dist/es2015/editing/edit.service.d.ts +22 -5
  52. package/dist/es2015/editing/edit.service.js +80 -11
  53. package/dist/es2015/editing/task-fields.component.d.ts +22 -0
  54. package/dist/es2015/editing/task-fields.component.js +67 -0
  55. package/dist/es2015/editing/{util.d.ts → utils.d.ts} +2 -2
  56. package/dist/es2015/editing/{util.js → utils.js} +0 -0
  57. package/dist/es2015/gantt.component.d.ts +116 -23
  58. package/dist/es2015/gantt.component.js +329 -48
  59. package/dist/es2015/gantt.module.js +35 -9
  60. package/dist/es2015/index.d.ts +8 -0
  61. package/dist/es2015/index.js +8 -0
  62. package/dist/es2015/index.metadata.json +1 -1
  63. package/dist/es2015/{models/events/remove-event.interface.d.ts → localization/gantt-localization.service.d.ts} +6 -7
  64. package/dist/es2015/localization/gantt-localization.service.js +25 -0
  65. package/dist/es2015/main.d.ts +1 -0
  66. package/dist/es2015/main.js +1 -0
  67. package/dist/es2015/models/dependency-type.enum.d.ts +1 -1
  68. package/dist/es2015/models/dependency-type.enum.js +16 -0
  69. package/dist/es2015/models/events/dependency-add-event.interface.d.ts +26 -0
  70. package/dist/es2015/models/events/dependency-add-event.interface.js +4 -0
  71. package/dist/es2015/models/events/task-click-event.interface.d.ts +3 -3
  72. package/dist/es2015/models/events/task-delete-event.interface.d.ts +21 -0
  73. package/dist/es2015/models/events/task-delete-event.interface.js +4 -0
  74. package/dist/es2015/models/events/task-edit-event.interface.d.ts +36 -6
  75. package/dist/es2015/models/models.d.ts +4 -2
  76. package/dist/es2015/models/models.js +1 -0
  77. package/dist/es2015/models/view-item.interface.d.ts +35 -0
  78. package/dist/es2015/models/view-item.interface.js +4 -0
  79. package/dist/es2015/navigation/navigation-models.d.ts +34 -0
  80. package/dist/es2015/navigation/navigation-models.js +4 -0
  81. package/dist/es2015/navigation/navigation.service.d.ts +126 -0
  82. package/dist/es2015/navigation/navigation.service.js +355 -0
  83. package/dist/es2015/navigation/utils.d.ts +26 -0
  84. package/dist/es2015/navigation/utils.js +69 -0
  85. package/dist/es2015/package-metadata.js +1 -1
  86. package/dist/es2015/rendering/gantt-milestone-task.component.d.ts +3 -1
  87. package/dist/es2015/rendering/gantt-milestone-task.component.js +35 -8
  88. package/dist/es2015/rendering/gantt-summary-task.component.d.ts +5 -1
  89. package/dist/es2015/rendering/gantt-summary-task.component.js +47 -8
  90. package/dist/es2015/rendering/gantt-task-base.d.ts +20 -6
  91. package/dist/es2015/rendering/gantt-task-base.js +75 -22
  92. package/dist/es2015/rendering/gantt-task.component.d.ts +4 -2
  93. package/dist/es2015/rendering/gantt-task.component.js +47 -13
  94. package/dist/es2015/rendering/gantt-tasks-table-body.component.d.ts +6 -3
  95. package/dist/es2015/rendering/gantt-tasks-table-body.component.js +27 -9
  96. package/dist/es2015/scrolling/drag-scroll-settings.d.ts +47 -0
  97. package/dist/es2015/scrolling/drag-scroll-settings.js +20 -0
  98. package/dist/es2015/scrolling/scroll-sync.service.d.ts +1 -1
  99. package/dist/es2015/scrolling/timeline-scroll.directive.d.ts +24 -0
  100. package/dist/es2015/scrolling/timeline-scroll.directive.js +78 -0
  101. package/dist/es2015/scrolling/timeline-scroll.service.d.ts +20 -0
  102. package/dist/es2015/scrolling/timeline-scroll.service.js +44 -0
  103. package/dist/es2015/scrolling/utils.d.ts +29 -0
  104. package/dist/es2015/scrolling/utils.js +80 -0
  105. package/dist/es2015/timeline/gantt-timeline.component.d.ts +29 -4
  106. package/dist/es2015/timeline/gantt-timeline.component.js +67 -5
  107. package/dist/es2015/toolbar/toolbar.component.d.ts +4 -5
  108. package/dist/es2015/toolbar/toolbar.component.js +12 -13
  109. package/dist/es2015/toolbar/view-selector.component.js +3 -1
  110. package/dist/es2015/utils.d.ts +77 -8
  111. package/dist/es2015/utils.js +153 -12
  112. package/dist/fesm2015/index.js +2807 -788
  113. package/dist/fesm5/index.js +2633 -688
  114. package/dist/{es2015/models/events/edit-event.interface.d.ts → npm/common/touch-enabled.js} +4 -12
  115. package/dist/npm/dependencies/utils.js +40 -5
  116. package/dist/npm/dragging/dependency-drag-create.directive.js +349 -0
  117. package/dist/npm/dragging/drag-validation-tooltip.component.js +29 -0
  118. package/dist/npm/editing/dependencies-table.component.js +133 -0
  119. package/dist/npm/editing/edit-dialog.component.js +38 -7
  120. package/dist/npm/editing/edit.service.js +90 -7
  121. package/dist/npm/editing/task-fields.component.js +45 -0
  122. package/dist/npm/editing/{util.js → utils.js} +0 -0
  123. package/dist/npm/gantt.component.js +354 -46
  124. package/dist/npm/gantt.module.js +33 -7
  125. package/dist/npm/index.js +16 -0
  126. package/dist/npm/localization/gantt-localization.service.js +28 -0
  127. package/dist/npm/main.js +2 -0
  128. package/dist/npm/models/dependency-type.enum.js +16 -0
  129. package/dist/npm/models/events/{edit-event.interface.js → dependency-add-event.interface.js} +0 -0
  130. package/dist/npm/models/events/{remove-event.interface.js → task-delete-event.interface.js} +0 -0
  131. package/dist/npm/models/models.js +2 -0
  132. package/dist/npm/models/view-item.interface.js +6 -0
  133. package/dist/npm/navigation/navigation-models.js +6 -0
  134. package/dist/npm/navigation/navigation.service.js +392 -0
  135. package/dist/npm/navigation/utils.js +79 -0
  136. package/dist/npm/package-metadata.js +1 -1
  137. package/dist/npm/rendering/gantt-milestone-task.component.js +11 -5
  138. package/dist/npm/rendering/gantt-summary-task.component.js +26 -5
  139. package/dist/npm/rendering/gantt-task-base.js +84 -22
  140. package/dist/npm/rendering/gantt-task.component.js +12 -7
  141. package/dist/npm/rendering/gantt-tasks-table-body.component.js +13 -5
  142. package/dist/npm/scrolling/drag-scroll-settings.js +22 -0
  143. package/dist/npm/scrolling/timeline-scroll.directive.js +91 -0
  144. package/dist/npm/scrolling/timeline-scroll.service.js +41 -0
  145. package/dist/npm/scrolling/utils.js +83 -0
  146. package/dist/npm/timeline/gantt-timeline.component.js +49 -3
  147. package/dist/npm/toolbar/toolbar.component.js +10 -11
  148. package/dist/npm/toolbar/view-selector.component.js +1 -1
  149. package/dist/npm/utils.js +153 -12
  150. package/dist/systemjs/kendo-angular-gantt.js +1 -1
  151. package/package.json +23 -19
@@ -10,8 +10,11 @@ import { Subscription } from 'rxjs';
10
10
  import { validatePackage } from '@progress/kendo-licensing';
11
11
  import { packageMetadata } from './package-metadata';
12
12
  import { anyChanged, hasObservers } from '@progress/kendo-angular-common';
13
+ import { GanttTimelineComponent } from './timeline/gantt-timeline.component';
13
14
  import { GanttColumnBase } from './columns/columns';
14
15
  import { fetchChildren, hasChildren, isSelected, rowClassCallback, taskClassCallback } from './common/default-callbacks';
16
+ import { DependencyType } from './models/models';
17
+ import { LocalizationService } from '@progress/kendo-angular-l10n';
15
18
  import { TimelineViewService } from './timeline/timeline-view.service';
16
19
  import { TimelineDayViewService } from './timeline/timeline-day-view.service';
17
20
  import { TimelineWeekViewService } from './timeline/timeline-week-view.service';
@@ -21,17 +24,25 @@ import { DependencyDomService } from './dependencies/dependency-dom.service';
21
24
  import { MappingService } from './common/mapping.service';
22
25
  import { OptionChangesService } from './common/option-changes.service';
23
26
  import { EditService } from './editing/edit.service';
24
- import { LocalizationService } from '@progress/kendo-angular-l10n';
25
- import { getClosestTaskIndex, isClearButton, isColumnGroup, isPresent, isTask, normalizeGanttData, scrollbarWidth } from './utils';
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, normalizeGanttData, scrollbarWidth } from './utils';
26
31
  import { DEFAULT_TIMELINE_PANE_SETTINGS, DEFAULT_TREELIST_PANE_SETTINGS } from './models/splitter-pane-options.interface';
27
32
  import { GanttTaskTemplateDirective } from './template-directives/task-template.directive';
28
33
  import { GanttSummaryTaskTemplateDirective } from './template-directives/summary-task-template.directive';
29
34
  import { GanttTaskContentTemplateDirective } from './template-directives/task-content-template.directive';
30
35
  import { ToolbarTemplateDirective } from './toolbar/toolbar-template.directive';
31
36
  import { ViewBase } from './timeline/view-base';
32
- import { getEditItem } from './editing/util';
37
+ import { getEditItem } from './editing/utils';
33
38
  var TREELIST_GROUP_COLUMNS_CLASS = 'k-gantt-treelist-nested-columns';
34
39
  var DEFAULT_VIEW = 'week';
40
+ var DEFAULT_DRAG_SCROLL_SETTINGS = {
41
+ enabled: true,
42
+ step: 3,
43
+ interval: 1,
44
+ threshold: 10
45
+ };
35
46
  /**
36
47
  * Represents the Kendo UI Gantt component for Angular.
37
48
  *
@@ -104,7 +115,7 @@ var DEFAULT_VIEW = 'week';
104
115
  * ```
105
116
  */
106
117
  var GanttComponent = /** @class */ (function () {
107
- function GanttComponent(timelineViewService, scrollSyncService, renderer, mapper, optionChangesService, dependencyDomService, editService, localizationService, hostElement, zone) {
118
+ function GanttComponent(timelineViewService, scrollSyncService, renderer, mapper, optionChangesService, dependencyDomService, editService, localizationService, hostElement, zone, navigationService) {
108
119
  var _this = this;
109
120
  this.timelineViewService = timelineViewService;
110
121
  this.scrollSyncService = scrollSyncService;
@@ -116,13 +127,33 @@ var GanttComponent = /** @class */ (function () {
116
127
  this.localizationService = localizationService;
117
128
  this.hostElement = hostElement;
118
129
  this.zone = zone;
130
+ this.navigationService = navigationService;
131
+ /**
132
+ * @hidden
133
+ */
134
+ this.roleDescription = 'Gantt Chart';
135
+ /**
136
+ * @hidden
137
+ */
138
+ this.role = 'application';
119
139
  this.hostClasses = true;
120
140
  /**
121
- * Provides a callback that determines if the given task is selected ([see example]({% slug selection_gantt %}#toc-custom-selection))
141
+ * Specifies a callback that determines if the given task is selected ([see example]({% slug selection_gantt %}#toc-custom-selection)).
122
142
  *
123
143
  * > The [`selectable`]({% slug api_gantt_ganttcomponent %}#toc-selectable) prop has to be set to `true` in order for this callback to be executed.
124
144
  */
125
145
  this.isSelected = isSelected;
146
+ /**
147
+ * Specifies a callback that determines if a new dependency is valid.
148
+ * Used when evaluating if an attempt to create a new dependency will result in a valid link between the two tasks
149
+ * [see example]({% slug editing_drag_create_dependencies_gantt %}#toc-validation).
150
+ *
151
+ * By defalut, dependencies are deemed invalid when:
152
+ * - The two tasks are in a parent-child relationship.
153
+ * - The two tasks are already dependent on one another. Only one dependency is allowed per pair.
154
+ * - The start or end times of the two tasks are incompatible with the attempted dependency type.
155
+ */
156
+ this.validateNewDependency = this.defaultValidateNewDependencyCallback.bind(this);
126
157
  /**
127
158
  * Fires when the Gantt selection is changed through user interaction.
128
159
  *
@@ -138,14 +169,6 @@ var GanttComponent = /** @class */ (function () {
138
169
  * > When applied, the [`SelectableDirective`]({% slug api_gantt_selectabledirective %}) sets `selectable` to `true` internally.
139
170
  */
140
171
  this.selectable = false;
141
- /**
142
- * Gets or sets the callback function that retrieves the child items for a particular item.
143
- */
144
- this.fetchChildren = fetchChildren;
145
- /**
146
- * Gets or sets the callback function that indicates if a particular item has child items.
147
- */
148
- this.hasChildren = hasChildren;
149
172
  /**
150
173
  * Defines the dependencies that will be drawn between the rendered tasks.
151
174
  *
@@ -184,6 +207,12 @@ var GanttComponent = /** @class */ (function () {
184
207
  * The end of the work week (index based).
185
208
  */
186
209
  this.workWeekEnd = 5;
210
+ /**
211
+ * If set to `true`, the user can use dedicated shortcuts to interact with the Gantt.
212
+ * By default, navigation is disabled for the TreeList and Timeline parts of the component,
213
+ * ([see example]({% slug keyboard_navigation_gantt %})).
214
+ */
215
+ this.navigable = false;
187
216
  /**
188
217
  * Indicates whether the Gantt columns will be resized during initialization so that they fit their headers and row content.
189
218
  * Columns with autoSize set to false are excluded.
@@ -227,7 +256,8 @@ var GanttComponent = /** @class */ (function () {
227
256
  */
228
257
  this.cellClose = new EventEmitter();
229
258
  /**
230
- * Fires when the end user clicks the `Delete` button in the task editing dialog or the task delete icon.
259
+ * Fires when the end user clicks the `Delete` button in the task editing dialog,
260
+ * the task delete icon, or presses the `Delete` key on the keyboard when a task in the timeline is focused.
231
261
  * Use the event handler to open a confirmation dialog when necessary.
232
262
  */
233
263
  this.taskDelete = new EventEmitter();
@@ -251,6 +281,11 @@ var GanttComponent = /** @class */ (function () {
251
281
  * Fires when the user adds a task.
252
282
  */
253
283
  this.taskAdd = new EventEmitter();
284
+ /**
285
+ * Fires when the user adds a dependency via dragging
286
+ * [see example]({% slug editing_drag_create_dependencies_gantt %}#toc-basic-concepts).
287
+ */
288
+ this.dependencyAdd = new EventEmitter();
254
289
  /**
255
290
  * Fires when the sorting of the Gantt is changed.
256
291
  * You have to handle the event yourself and sort the data.
@@ -307,6 +342,15 @@ var GanttComponent = /** @class */ (function () {
307
342
  * Fires when a task is clicked.
308
343
  */
309
344
  this.taskClick = new EventEmitter();
345
+ /**
346
+ * @hidden
347
+ *
348
+ * Specifies whether the dependency drag clues will be rendered.
349
+ * Set internally by the dependency-drag-create directive.
350
+ *
351
+ * @default false
352
+ */
353
+ this.renderDependencyDragClues = false;
310
354
  /**
311
355
  * @hidden
312
356
  *
@@ -323,6 +367,7 @@ var GanttComponent = /** @class */ (function () {
323
367
  this.showConfirmationDialog = false;
324
368
  this._columns = new QueryList();
325
369
  this._data = [];
370
+ this._dragScrollSettings = tslib_1.__assign({}, DEFAULT_DRAG_SCROLL_SETTINGS);
326
371
  this._timelinePaneOptions = tslib_1.__assign({}, DEFAULT_TIMELINE_PANE_SETTINGS);
327
372
  this._treeListPaneOptions = tslib_1.__assign({}, DEFAULT_TREELIST_PANE_SETTINGS);
328
373
  this._rowClass = rowClassCallback;
@@ -333,6 +378,8 @@ var GanttComponent = /** @class */ (function () {
333
378
  addTaskTool: 'none',
334
379
  viewSelectorTool: 'top'
335
380
  };
381
+ this._fetchChildren = fetchChildren;
382
+ this._hasChildren = hasChildren;
336
383
  this.rtl = false;
337
384
  this.optionChangesSubscriptions = new Subscription();
338
385
  this.editServiceSubscription = new Subscription();
@@ -345,16 +392,26 @@ var GanttComponent = /** @class */ (function () {
345
392
  }));
346
393
  this.editService.getSelectedItem = this.getFirstSelectedItem.bind(this);
347
394
  this.editServiceSubscription.add(this.editService.showEditingDialog.subscribe(function (show) { return _this.showEditingDialog = show; }));
348
- this.editServiceSubscription.add(this.editService.showConfirmationDialog.subscribe(function () { return _this.taskDelete.emit(); }));
395
+ this.editServiceSubscription.add(this.editService.taskDelete.subscribe(function (task) {
396
+ if (hasObservers(_this.taskDelete)) {
397
+ _this.zone.run(function () {
398
+ return _this.notifyTaskDelete(task);
399
+ });
400
+ }
401
+ }));
349
402
  this.editServiceSubscription.add(this.editService.editEvent.subscribe(function (args) {
350
403
  _this[args.editResultType].emit({
351
- formGroup: args.formGroup,
404
+ taskFormGroup: args.taskFormGroup,
352
405
  item: getEditItem(args.dataItem, _this.treeList.view.data, _this.mapper),
406
+ dependencies: args.dependencies,
353
407
  sender: _this
354
408
  });
355
409
  _this.showConfirmationDialog = _this.showEditingDialog = false;
356
- _this.editService.dataItem = _this.editService.formGroup = null;
410
+ _this.editService.dataItem = _this.editService.taskFormGroup = null;
357
411
  _this.updateView();
412
+ if (_this.navigable) {
413
+ _this.focus();
414
+ }
358
415
  }));
359
416
  this.editServiceSubscription.add(this.editService.addEvent.subscribe(function (args) {
360
417
  var selectedItem = _this.getFirstSelectedItem();
@@ -384,6 +441,20 @@ var GanttComponent = /** @class */ (function () {
384
441
  enumerable: true,
385
442
  configurable: true
386
443
  });
444
+ Object.defineProperty(GanttComponent.prototype, "hostRoleDescriptionAttr", {
445
+ get: function () {
446
+ return this.roleDescription;
447
+ },
448
+ enumerable: true,
449
+ configurable: true
450
+ });
451
+ Object.defineProperty(GanttComponent.prototype, "hostRoleAttr", {
452
+ get: function () {
453
+ return this.role;
454
+ },
455
+ enumerable: true,
456
+ configurable: true
457
+ });
387
458
  Object.defineProperty(GanttComponent.prototype, "dir", {
388
459
  get: function () {
389
460
  return this.direction;
@@ -495,6 +566,34 @@ var GanttComponent = /** @class */ (function () {
495
566
  enumerable: true,
496
567
  configurable: true
497
568
  });
569
+ Object.defineProperty(GanttComponent.prototype, "fetchChildren", {
570
+ get: function () {
571
+ return this._fetchChildren;
572
+ },
573
+ /**
574
+ * Gets or sets the callback function that retrieves the child items for a particular item.
575
+ */
576
+ set: function (fn) {
577
+ this._fetchChildren = fn;
578
+ this.editService.fetchChildren = fn;
579
+ },
580
+ enumerable: true,
581
+ configurable: true
582
+ });
583
+ Object.defineProperty(GanttComponent.prototype, "hasChildren", {
584
+ get: function () {
585
+ return this._hasChildren;
586
+ },
587
+ /**
588
+ * Gets or sets the callback function that indicates if a particular item has child items.
589
+ */
590
+ set: function (fn) {
591
+ this._hasChildren = fn;
592
+ this.editService.hasChildren = fn;
593
+ },
594
+ enumerable: true,
595
+ configurable: true
596
+ });
498
597
  Object.defineProperty(GanttComponent.prototype, "timelinePaneOptions", {
499
598
  get: function () {
500
599
  return tslib_1.__assign({}, this._timelinePaneOptions, { size: this.treeListPaneOptions.collapsed ? '100%' : this._timelinePaneOptions.size });
@@ -570,6 +669,21 @@ var GanttComponent = /** @class */ (function () {
570
669
  enumerable: true,
571
670
  configurable: true
572
671
  });
672
+ Object.defineProperty(GanttComponent.prototype, "dragScrollSettings", {
673
+ get: function () {
674
+ return this._dragScrollSettings;
675
+ },
676
+ /**
677
+ * Specifies the settings for auto-scrolling during dragging
678
+ * when the pointer moves outside of the container bounderies
679
+ * [see example]({% slug editing_drag_create_dependencies_gantt %}#toc-auto-scrolling).
680
+ */
681
+ set: function (settings) {
682
+ this._dragScrollSettings = tslib_1.__assign({}, DEFAULT_DRAG_SCROLL_SETTINGS, settings);
683
+ },
684
+ enumerable: true,
685
+ configurable: true
686
+ });
573
687
  Object.defineProperty(GanttComponent.prototype, "renderedTreeListItems", {
574
688
  /**
575
689
  * @hidden
@@ -583,6 +697,19 @@ var GanttComponent = /** @class */ (function () {
583
697
  enumerable: true,
584
698
  configurable: true
585
699
  });
700
+ Object.defineProperty(GanttComponent.prototype, "viewItems", {
701
+ /**
702
+ * @hidden
703
+ */
704
+ get: function () {
705
+ if (!isPresent(this.treeList)) {
706
+ return [];
707
+ }
708
+ return this.treeList.view.data;
709
+ },
710
+ enumerable: true,
711
+ configurable: true
712
+ });
586
713
  Object.defineProperty(GanttComponent.prototype, "filterMenu", {
587
714
  /**
588
715
  * @hidden
@@ -646,12 +773,12 @@ var GanttComponent = /** @class */ (function () {
646
773
  enumerable: true,
647
774
  configurable: true
648
775
  });
649
- Object.defineProperty(GanttComponent.prototype, "editDialogFormGroup", {
776
+ Object.defineProperty(GanttComponent.prototype, "isInEditMode", {
650
777
  /**
651
778
  * @hidden
652
779
  */
653
780
  get: function () {
654
- return this.editService.formGroup;
781
+ return this.showEditingDialog || this.showConfirmationDialog || this.treeList.isEditing();
655
782
  },
656
783
  enumerable: true,
657
784
  configurable: true
@@ -663,6 +790,14 @@ var GanttComponent = /** @class */ (function () {
663
790
  };
664
791
  GanttComponent.prototype.ngAfterViewInit = function () {
665
792
  this.updateTreeListMargin();
793
+ if (this.navigable) {
794
+ this.navigationService.initialize({
795
+ gantt: this,
796
+ host: this.hostElement.nativeElement,
797
+ treeListElement: this.treeList.wrapper.nativeElement,
798
+ timelineElement: this.timeline.timelineContent.nativeElement
799
+ });
800
+ }
666
801
  var leftContainer = this.treeList.wrapper.nativeElement.querySelector('kendo-treelist-list > div');
667
802
  this.scrollSyncService.registerElement(leftContainer, 'treelist');
668
803
  };
@@ -680,6 +815,34 @@ var GanttComponent = /** @class */ (function () {
680
815
  this.localizationSubscription.unsubscribe();
681
816
  }
682
817
  };
818
+ /**
819
+ * Focuses the last active cell or task in the Gantt.
820
+ * If no item has previously been focused, the first cell of the TreeList part will receive focus,
821
+ * ([see example]({% slug keyboard_navigation_gantt %}#toc-controlling-the-focus)).
822
+ */
823
+ GanttComponent.prototype.focus = function () {
824
+ if (this.navigable) {
825
+ this.navigationService.focusLastActiveItem();
826
+ }
827
+ };
828
+ /**
829
+ * Focuses the targeted cell in the TreeList part of the component,
830
+ * ([see example]({% slug keyboard_navigation_gantt %}#toc-controlling-the-focus)).
831
+ */
832
+ GanttComponent.prototype.focusCell = function (rowIndex, colIndex) {
833
+ if (this.navigable) {
834
+ this.navigationService.focusCell(rowIndex, colIndex);
835
+ }
836
+ };
837
+ /**
838
+ * Focuses the targeted task in the Timeline part of the component,
839
+ * ([see example]({% slug keyboard_navigation_gantt %}#toc-controlling-the-focus)).
840
+ */
841
+ GanttComponent.prototype.focusTask = function (taskIndex) {
842
+ if (this.navigable) {
843
+ this.navigationService.focusTask(taskIndex);
844
+ }
845
+ };
683
846
  /**
684
847
  * Applies the minimum possible width for the specified column,
685
848
  * so that the whole text fits without wrapping. This method expects the Gantt
@@ -745,8 +908,14 @@ var GanttComponent = /** @class */ (function () {
745
908
  * Opens the task editing dialog.
746
909
  */
747
910
  GanttComponent.prototype.editTask = function (dataItem, formGroup) {
911
+ var _this = this;
748
912
  if (!this.showEditingDialog) {
749
- this.editService.createEditDialog(dataItem, formGroup);
913
+ var taskId_1 = this.mapper.extractFromTask(dataItem, 'id');
914
+ var dependencies = this.dependencies.filter(function (item) {
915
+ return _this.mapper.extractFromDependency(item, 'toId') === taskId_1
916
+ || _this.mapper.extractFromDependency(item, 'fromId') === taskId_1;
917
+ });
918
+ this.editService.createEditDialog(dataItem, formGroup, dependencies);
750
919
  }
751
920
  };
752
921
  /**
@@ -763,6 +932,15 @@ var GanttComponent = /** @class */ (function () {
763
932
  GanttComponent.prototype.openConfirmationDialog = function () {
764
933
  this.showConfirmationDialog = true;
765
934
  };
935
+ /**
936
+ * @hidden
937
+ */
938
+ GanttComponent.prototype.handleConfirmationDialogClose = function () {
939
+ this.showConfirmationDialog = false;
940
+ if (this.navigable) {
941
+ this.focus();
942
+ }
943
+ };
766
944
  /**
767
945
  * Opens a cell for editing.
768
946
  */
@@ -848,7 +1026,7 @@ var GanttComponent = /** @class */ (function () {
848
1026
  if (hasObservers(this.taskClick)) {
849
1027
  var taskIndex_1 = getClosestTaskIndex(target, gantt);
850
1028
  var task_1 = this.renderedTreeListItems[taskIndex_1];
851
- this.zone.run(function () { return _this.emitTaskClick(event, task_1, taskIndex_1); });
1029
+ this.zone.run(function () { return _this.notifyTaskClick(event, task_1, taskIndex_1); });
852
1030
  }
853
1031
  };
854
1032
  /**
@@ -867,8 +1045,8 @@ var GanttComponent = /** @class */ (function () {
867
1045
  if ((hasObservers(this.selectionChange) && !this.isSameSelection(selectionAction, task)) ||
868
1046
  hasObservers(this.taskClick)) {
869
1047
  this.zone.run(function () {
870
- _this.emitSelectionChange(task, selectionAction);
871
- _this.emitTaskClick(event, task, taskIndex);
1048
+ _this.notifySelectionChange(task, selectionAction);
1049
+ _this.notifyTaskClick(event, task, taskIndex);
872
1050
  });
873
1051
  }
874
1052
  };
@@ -906,7 +1084,7 @@ var GanttComponent = /** @class */ (function () {
906
1084
  }
907
1085
  var task = event.items.map(function (item) { return item.dataItem; })[0]; // single selection only currently available
908
1086
  var action = event.action;
909
- this.emitSelectionChange(task, action);
1087
+ this.notifySelectionChange(task, action);
910
1088
  };
911
1089
  /**
912
1090
  * @hidden
@@ -958,7 +1136,7 @@ var GanttComponent = /** @class */ (function () {
958
1136
  dataItem: task_2,
959
1137
  originalEvent: event,
960
1138
  sender: _this,
961
- rowIndex: taskIndex_2,
1139
+ index: taskIndex_2,
962
1140
  type: 'dblclick'
963
1141
  }); });
964
1142
  }
@@ -969,16 +1147,35 @@ var GanttComponent = /** @class */ (function () {
969
1147
  GanttComponent.prototype.getText = function (token) {
970
1148
  return this.localizationService.get(token);
971
1149
  };
972
- GanttComponent.prototype.emitTaskClick = function (event, dataItem, itemIndex) {
1150
+ /**
1151
+ * @hidden
1152
+ */
1153
+ GanttComponent.prototype.changeActiveView = function (view) {
1154
+ if (view !== this.activeView) {
1155
+ this.activeView = view;
1156
+ this.loadTimelineData();
1157
+ this.scrollSyncService.resetTimelineScrollLeft();
1158
+ this.activeViewChange.emit(view);
1159
+ }
1160
+ };
1161
+ /**
1162
+ * @hidden
1163
+ */
1164
+ GanttComponent.prototype.notifyTaskClick = function (event, dataItem, itemIndex) {
1165
+ // simulates the TreeList `cellClick` event triggered by enter press (type: 'click')
1166
+ var type = event instanceof KeyboardEvent ? 'click' : event.type;
973
1167
  this.taskClick.emit({
974
1168
  originalEvent: event,
975
1169
  dataItem: dataItem,
976
- rowIndex: itemIndex,
977
- type: event.type,
1170
+ index: itemIndex,
1171
+ type: type,
978
1172
  sender: this
979
1173
  });
980
1174
  };
981
- GanttComponent.prototype.emitSelectionChange = function (dataItem, action) {
1175
+ /**
1176
+ * @hidden
1177
+ */
1178
+ GanttComponent.prototype.notifySelectionChange = function (dataItem, action) {
982
1179
  if (this.isSameSelection(action, dataItem)) {
983
1180
  return;
984
1181
  }
@@ -989,6 +1186,30 @@ var GanttComponent = /** @class */ (function () {
989
1186
  });
990
1187
  this.treeList.updateView();
991
1188
  };
1189
+ /**
1190
+ * @hidden
1191
+ */
1192
+ GanttComponent.prototype.notifyTaskDelete = function (task) {
1193
+ this.editService.dataItem = task;
1194
+ this.taskDelete.emit({
1195
+ item: getEditItem(task, this.treeList.view.data, this.mapper),
1196
+ sender: this
1197
+ });
1198
+ };
1199
+ /**
1200
+ * @hidden
1201
+ */
1202
+ GanttComponent.prototype.isSameSelection = function (action, dataItem) {
1203
+ return action === 'select' && this.isSelected(dataItem);
1204
+ };
1205
+ /**
1206
+ * @hidden
1207
+ */
1208
+ GanttComponent.prototype.getSelectionAction = function (_a, dataItem) {
1209
+ var ctrlKey = _a.ctrlKey, metaKey = _a.metaKey;
1210
+ var shouldToggleSelection = ctrlKey || metaKey;
1211
+ return (shouldToggleSelection && this.isSelected(dataItem)) ? 'remove' : 'select';
1212
+ };
992
1213
  GanttComponent.prototype.updateTreeListGroupClass = function (columns) {
993
1214
  if (columns === void 0) { columns = this.columns; }
994
1215
  if (!isPresent(this.treeList)) {
@@ -1019,24 +1240,70 @@ var GanttComponent = /** @class */ (function () {
1019
1240
  }
1020
1241
  return this.views.find(function (view) { return view.type === _this.activeView; });
1021
1242
  };
1022
- GanttComponent.prototype.isSameSelection = function (action, dataItem) {
1023
- return action === 'select' && this.isSelected(dataItem);
1024
- };
1025
- GanttComponent.prototype.getSelectionAction = function (_a, dataItem) {
1026
- var ctrlKey = _a.ctrlKey, metaKey = _a.metaKey;
1027
- var shouldToggleSelection = ctrlKey || metaKey;
1028
- return (shouldToggleSelection && this.isSelected(dataItem)) ? 'remove' : 'select';
1029
- };
1030
1243
  GanttComponent.prototype.getFirstSelectedItem = function () {
1031
1244
  var isSelectedCallback = this.isSelected || isSelected;
1032
1245
  var loadedItems = this.renderedTreeListItems || [];
1033
1246
  return loadedItems.find(isSelectedCallback);
1034
1247
  };
1248
+ GanttComponent.prototype.defaultValidateNewDependencyCallback = function (dependency) {
1249
+ var _this = this;
1250
+ var fromTaskId = this.mapper.extractFromDependency(dependency, 'fromId');
1251
+ var toTaskId = this.mapper.extractFromDependency(dependency, 'toId');
1252
+ var fromTask = this.treeList.view.data.find(function (task) {
1253
+ return _this.mapper.extractFromTask(task.data, 'id') === fromTaskId;
1254
+ });
1255
+ var toTask = this.treeList.view.data.find(function (task) {
1256
+ return _this.mapper.extractFromTask(task.data, 'id') === toTaskId;
1257
+ });
1258
+ // mark as invalid if the attempted dependency is lacking valid from- and to-tasks
1259
+ // or when the from- and to-tasks are actually the same task
1260
+ if (!isPresent(fromTask) || !isPresent(fromTask.data) ||
1261
+ !isPresent(toTask) || !isPresent(toTask.data) ||
1262
+ fromTask.data === toTask.data) {
1263
+ return false;
1264
+ }
1265
+ var tasksDependentOnOneAnother = this.dependencies.some(function (current) {
1266
+ var currentFromId = _this.mapper.extractFromDependency(current, 'fromId');
1267
+ var currentToId = _this.mapper.extractFromDependency(current, 'toId');
1268
+ return (fromTaskId === currentFromId && toTaskId === currentToId) ||
1269
+ (toTaskId === currentFromId && fromTaskId === currentToId);
1270
+ });
1271
+ // mark as invalid if the attempted dependency is trying to connect already dependent tasks
1272
+ // mark as invalid if the two tasks are in parent-child relationship
1273
+ if (tasksDependentOnOneAnother || areParentChild(fromTask, toTask)) {
1274
+ return false;
1275
+ }
1276
+ var fromTaskStart = this.mapper.extractFromTask(fromTask.data, 'start');
1277
+ var fromTaskEnd = this.mapper.extractFromTask(fromTask.data, 'end');
1278
+ var toTaskStart = this.mapper.extractFromTask(toTask.data, 'start');
1279
+ var toTaskEnd = this.mapper.extractFromTask(toTask.data, 'end');
1280
+ // if the two tasks are available to be connected via a dependency,
1281
+ // check if their start and end time allow for the attempted dependency type
1282
+ switch (this.mapper.extractFromDependency(dependency, 'type')) {
1283
+ // finish to finish (FF) — the from-task ends before the to-task can end
1284
+ case DependencyType.FF:
1285
+ return fromTaskEnd <= toTaskEnd;
1286
+ // finish to start (FS) — the from-task ends before the to-task can begin
1287
+ case DependencyType.FS:
1288
+ return fromTaskEnd <= toTaskStart;
1289
+ // start to finish (SF) — the from-task begins before the to-task can end
1290
+ case DependencyType.SF:
1291
+ return fromTaskStart <= toTaskEnd;
1292
+ // start to start (SS) — the from-task begins before the to-task can begin
1293
+ case DependencyType.SS:
1294
+ return fromTaskStart <= toTaskStart;
1295
+ default: return false;
1296
+ }
1297
+ };
1035
1298
  var GanttComponent_1;
1036
1299
  tslib_1.__decorate([
1037
1300
  ViewChild(TreeListComponent, { static: true }),
1038
1301
  tslib_1.__metadata("design:type", TreeListComponent)
1039
1302
  ], GanttComponent.prototype, "treeList", void 0);
1303
+ tslib_1.__decorate([
1304
+ ViewChild(GanttTimelineComponent, { static: false }),
1305
+ tslib_1.__metadata("design:type", GanttTimelineComponent)
1306
+ ], GanttComponent.prototype, "timeline", void 0);
1040
1307
  tslib_1.__decorate([
1041
1308
  ContentChild(GanttTaskContentTemplateDirective, { static: true }),
1042
1309
  tslib_1.__metadata("design:type", GanttTaskContentTemplateDirective)
@@ -1053,6 +1320,24 @@ var GanttComponent = /** @class */ (function () {
1053
1320
  ContentChildren(ToolbarTemplateDirective),
1054
1321
  tslib_1.__metadata("design:type", QueryList)
1055
1322
  ], GanttComponent.prototype, "toolbarTemplateChildren", void 0);
1323
+ tslib_1.__decorate([
1324
+ Input('aria-roledescription'),
1325
+ tslib_1.__metadata("design:type", String)
1326
+ ], GanttComponent.prototype, "roleDescription", void 0);
1327
+ tslib_1.__decorate([
1328
+ HostBinding('attr.aria-roledescription'),
1329
+ tslib_1.__metadata("design:type", String),
1330
+ tslib_1.__metadata("design:paramtypes", [])
1331
+ ], GanttComponent.prototype, "hostRoleDescriptionAttr", null);
1332
+ tslib_1.__decorate([
1333
+ Input('role'),
1334
+ tslib_1.__metadata("design:type", String)
1335
+ ], GanttComponent.prototype, "role", void 0);
1336
+ tslib_1.__decorate([
1337
+ HostBinding('attr.role'),
1338
+ tslib_1.__metadata("design:type", String),
1339
+ tslib_1.__metadata("design:paramtypes", [])
1340
+ ], GanttComponent.prototype, "hostRoleAttr", null);
1056
1341
  tslib_1.__decorate([
1057
1342
  HostBinding('class.k-gantt'),
1058
1343
  tslib_1.__metadata("design:type", Boolean)
@@ -1095,6 +1380,10 @@ var GanttComponent = /** @class */ (function () {
1095
1380
  Input(),
1096
1381
  tslib_1.__metadata("design:type", Function)
1097
1382
  ], GanttComponent.prototype, "isSelected", void 0);
1383
+ tslib_1.__decorate([
1384
+ Input(),
1385
+ tslib_1.__metadata("design:type", Function)
1386
+ ], GanttComponent.prototype, "validateNewDependency", void 0);
1098
1387
  tslib_1.__decorate([
1099
1388
  Output(),
1100
1389
  tslib_1.__metadata("design:type", EventEmitter)
@@ -1110,12 +1399,14 @@ var GanttComponent = /** @class */ (function () {
1110
1399
  ], GanttComponent.prototype, "toolbarSettings", null);
1111
1400
  tslib_1.__decorate([
1112
1401
  Input(),
1113
- tslib_1.__metadata("design:type", Function)
1114
- ], GanttComponent.prototype, "fetchChildren", void 0);
1402
+ tslib_1.__metadata("design:type", Function),
1403
+ tslib_1.__metadata("design:paramtypes", [Function])
1404
+ ], GanttComponent.prototype, "fetchChildren", null);
1115
1405
  tslib_1.__decorate([
1116
1406
  Input(),
1117
- tslib_1.__metadata("design:type", Function)
1118
- ], GanttComponent.prototype, "hasChildren", void 0);
1407
+ tslib_1.__metadata("design:type", Function),
1408
+ tslib_1.__metadata("design:paramtypes", [Function])
1409
+ ], GanttComponent.prototype, "hasChildren", null);
1119
1410
  tslib_1.__decorate([
1120
1411
  Input(),
1121
1412
  tslib_1.__metadata("design:type", Array)
@@ -1152,6 +1443,10 @@ var GanttComponent = /** @class */ (function () {
1152
1443
  Input(),
1153
1444
  tslib_1.__metadata("design:type", Number)
1154
1445
  ], GanttComponent.prototype, "workWeekEnd", void 0);
1446
+ tslib_1.__decorate([
1447
+ Input(),
1448
+ tslib_1.__metadata("design:type", Boolean)
1449
+ ], GanttComponent.prototype, "navigable", void 0);
1155
1450
  tslib_1.__decorate([
1156
1451
  Input(),
1157
1452
  tslib_1.__metadata("design:type", Object),
@@ -1192,6 +1487,11 @@ var GanttComponent = /** @class */ (function () {
1192
1487
  Input(),
1193
1488
  tslib_1.__metadata("design:type", Boolean)
1194
1489
  ], GanttComponent.prototype, "columnsResizable", void 0);
1490
+ tslib_1.__decorate([
1491
+ Input(),
1492
+ tslib_1.__metadata("design:type", Object),
1493
+ tslib_1.__metadata("design:paramtypes", [Object])
1494
+ ], GanttComponent.prototype, "dragScrollSettings", null);
1195
1495
  tslib_1.__decorate([
1196
1496
  Output(),
1197
1497
  tslib_1.__metadata("design:type", EventEmitter)
@@ -1232,6 +1532,10 @@ var GanttComponent = /** @class */ (function () {
1232
1532
  Output(),
1233
1533
  tslib_1.__metadata("design:type", EventEmitter)
1234
1534
  ], GanttComponent.prototype, "taskAdd", void 0);
1535
+ tslib_1.__decorate([
1536
+ Output(),
1537
+ tslib_1.__metadata("design:type", EventEmitter)
1538
+ ], GanttComponent.prototype, "dependencyAdd", void 0);
1235
1539
  tslib_1.__decorate([
1236
1540
  Output(),
1237
1541
  tslib_1.__metadata("design:type", EventEmitter)
@@ -1289,6 +1593,7 @@ var GanttComponent = /** @class */ (function () {
1289
1593
  selector: 'kendo-gantt',
1290
1594
  exportAs: 'kendoGantt',
1291
1595
  providers: [
1596
+ GanttLocalizationService,
1292
1597
  LocalizationService,
1293
1598
  {
1294
1599
  provide: DataBoundTreeComponent,
@@ -1306,9 +1611,11 @@ var GanttComponent = /** @class */ (function () {
1306
1611
  DependencyDomService,
1307
1612
  MappingService,
1308
1613
  OptionChangesService,
1309
- EditService
1614
+ EditService,
1615
+ TimelineScrollService,
1616
+ NavigationService
1310
1617
  ],
1311
- template: "\n <ng-container kendoGanttLocalizedMessages\n i18n-taskEditingGeneralTabTitle=\"kendo.gantt.taskEditingGeneralTabTitle|The title of the 'General' tab of the editing dialog TabStrip\"\n taskEditingGeneralTabTitle=\"General\"\n\n i18n-taskEditingPredecessorsTabTitle=\"kendo.gantt.taskEditingPredecessorsTabTitle|The title of the 'Predecessors' dependencies tab of the editing dialog TabStrip\"\n taskEditingPredecessorsTabTitle=\"Predecessors\"\n\n i18n-taskEditingSuccessorsTabTitle=\"kendo.gantt.taskEditingSuccessorsTabTitle|The title of the 'Successors' dependencies tab of the editing dialog TabStrip\"\n taskEditingSuccessorsTabTitle=\"Successors\"\n\n i18n-taskEditingDependenciesAddButtonText=\"kendo.gantt.taskEditingDependenciesAddButtonText|The text of the 'Add' button in the dependencies tabs of the editing dialog TabStrip\"\n taskEditingDependenciesAddButtonText=\"Add\"\n\n i18n-taskEditingDependenciesRemoveButtonText=\"kendo.gantt.taskEditingDependenciesRemoveButtonText|The text of the 'Remove' button in the dependencies tabs of the editing dialog TabStrip\"\n taskEditingDependenciesRemoveButtonText=\"Remove\"\n\n i18n-taskEditingDependenciesGridNameColumnTitle=\"kendo.gantt.taskEditingDependenciesGridNameColumnTitle|The title of the 'Task Title' Grid column in the dependencies tabs of the editing dialog TabStrip\"\n taskEditingDependenciesGridNameColumnTitle=\"Task Title\"\n\n i18n-taskEditingDependenciesGridTypeColumnTitle=\"kendo.gantt.taskEditingDependenciesGridTypeColumnTitle|The title of the 'Type' Grid column in the dependencies tabs of the editing dialog TabStrip\"\n taskEditingDependenciesGridTypeColumnTitle=\"Type\"\n\n i18n-taskDeleteLabel=\"kendo.gantt.taskDeleteLabel|The label of the task delete icon\"\n taskDeleteLabel=\"Delete\"\n\n i18n-taskEditingDialogTitle=\"kendo.gantt.taskEditingDialogTitle|The title of the task editing dialog\"\n taskEditingDialogTitle=\"Editing Task\"\n\n i18n-taskEditingDialogCloseTitle=\"kendo.gantt.taskEditingDialogCloseTitle|The title of the task editing dialog close button\"\n taskEditingDialogCloseTitle=\"Close\"\n\n i18n-confirmationDialogCloseTitle=\"kendo.gantt.confirmationDialogCloseTitle|The title of the confirmation dialog close button\"\n confirmationDialogCloseTitle=\"Close\"\n\n i18n-confirmationDialogTitle=\"kendo.gantt.confirmationDialogTitle|The title of the delete task confirmation dialog\"\n confirmationDialogTitle=\"Delete Task\"\n\n i18n-confirmationDialogContent=\"kendo.gantt.confirmationDialogContent|The content of the delete task confirmation dialog\"\n confirmationDialogContent=\"Are you sure you want to delete this task?\"\n\n i18n-deleteButtonText=\"kendo.gantt.deleteButtonText|The text of the task editing dialog 'Delete' button\"\n deleteButtonText=\"Delete\"\n\n i18n-cancelButtonText=\"kendo.gantt.cancelButtonText|The text of the task editing dialog 'Cancel' button\"\n cancelButtonText=\"Cancel\"\n\n i18n-saveButtonText=\"kendo.gantt.saveButtonText|The text of the task editing dialog 'Save' button\"\n saveButtonText=\"Save\"\n\n i18n-titleFieldInputLabel=\"kendo.gantt.titleFieldInputLabel|The label of the 'title' field input in editing mode\"\n titleFieldInputLabel=\"Title\"\n\n i18n-startFieldInputLabel=\"kendo.gantt.startFieldInputLabel|The label of the 'start' field input in editing mode\"\n startFieldInputLabel=\"Start\"\n\n i18n-endFieldInputLabel=\"kendo.gantt.endFieldInputLabel|The label of the 'end' field input in editing mode\"\n endFieldInputLabel=\"End\"\n\n i18n-completionRatioFieldInputLabel=\"kendo.gantt.completionRatioFieldInputLabel|The label of the 'completionRatio' field input in editing mode\"\n completionRatioFieldInputLabel=\"Progress\"\n\n i18n-dayViewText=\"kendo.gantt.dayViewText|The text of the day view in the ViewSelector component\"\n dayViewText=\"Day\"\n\n i18n-weekViewText=\"kendo.gantt.weekViewText|The text of the week view in the ViewSelector component\"\n weekViewText=\"Week\"\n\n i18n-monthViewText=\"kendo.gantt.monthViewText|The text of the month view in the ViewSelector component\"\n monthViewText=\"Month\"\n\n i18n-yearViewText-disabled=\"kendo.gantt.yearViewText|The text of the year view in the ViewSelector component\"\n yearViewText=\"Year\"\n\n i18n-addTaskText=\"kendo.gantt.addTaskText|The text of the DropDownButton in the AddTask component\"\n addTaskText=\"Add Task\"\n\n i18n-addChildText=\"kendo.gantt.addChildText|The text of the 'Add Child' option in the AddTask component\"\n addChildText=\"Add Child\"\n\n i18n-addAboveText=\"kendo.gantt.addAboveText|The text of the 'Add Above' option in the AddTask component\"\n addAboveText=\"Add Above\"\n\n i18n-addBelowText=\"kendo.gantt.addBelowText|The text of the 'Add Below' option in the AddTask component\"\n addBelowText=\"Add Below\"\n\n i18n-noRecords=\"kendo.gantt.noRecords|The label visible in the TreeList when there are no records\"\n noRecords=\"No records available.\"\n\n i18n-filter=\"kendo.gantt.filter|The label of the filter cell or icon\"\n filter=\"Filter\"\n\n i18n-filterEqOperator=\"kendo.gantt.filterEqOperator|The text of the equal filter operator\"\n filterEqOperator=\"Is equal to\"\n\n i18n-filterNotEqOperator=\"kendo.gantt.filterNotEqOperator|The text of the not equal filter operator\"\n filterNotEqOperator=\"Is not equal to\"\n\n i18n-filterIsNullOperator=\"kendo.gantt.filterIsNullOperator|The text of the is null filter operator\"\n filterIsNullOperator=\"Is null\"\n\n i18n-filterIsNotNullOperator=\"kendo.gantt.filterIsNotNullOperator|The text of the is not null filter operator\"\n filterIsNotNullOperator=\"Is not null\"\n\n i18n-filterIsEmptyOperator=\"kendo.gantt.filterIsEmptyOperator|The text of the is empty filter operator\"\n filterIsEmptyOperator=\"Is empty\"\n\n i18n-filterIsNotEmptyOperator=\"kendo.gantt.filterIsNotEmptyOperator|The text of the is not empty filter operator\"\n filterIsNotEmptyOperator=\"Is not empty\"\n\n i18n-filterStartsWithOperator=\"kendo.gantt.filterStartsWithOperator|The text of the starts with filter operator\"\n filterStartsWithOperator=\"Starts with\"\n\n i18n-filterContainsOperator=\"kendo.gantt.filterContainsOperator|The text of the contains filter operator\"\n filterContainsOperator=\"Contains\"\n\n i18n-filterNotContainsOperator=\"kendo.gantt.filterNotContainsOperator|The text of the does not contain filter operator\"\n filterNotContainsOperator=\"Does not contain\"\n\n i18n-filterEndsWithOperator=\"kendo.gantt.filterEndsWithOperator|The text of the ends with filter operator\"\n filterEndsWithOperator=\"Ends with\"\n\n i18n-filterGteOperator=\"kendo.gantt.filterGteOperator|The text of the greater than or equal filter operator\"\n filterGteOperator=\"Is greater than or equal to\"\n\n i18n-filterGtOperator=\"kendo.gantt.filterGtOperator|The text of the greater than filter operator\"\n filterGtOperator=\"Is greater than\"\n\n i18n-filterLteOperator=\"kendo.gantt.filterLteOperator|The text of the less than or equal filter operator\"\n filterLteOperator=\"Is less than or equal to\"\n\n i18n-filterLtOperator=\"kendo.gantt.filterLtOperator|The text of the less than filter operator\"\n filterLtOperator=\"Is less than\"\n\n i18n-filterIsTrue=\"kendo.gantt.filterIsTrue|The text of the IsTrue boolean filter option\"\n filterIsTrue=\"Is True\"\n\n i18n-filterIsFalse=\"kendo.gantt.filterIsFalse|The text of the IsFalse boolean filter option\"\n filterIsFalse=\"Is False\"\n\n i18n-filterBooleanAll=\"kendo.gantt.filterBooleanAll|The text of the (All) boolean filter option\"\n filterBooleanAll=\"(All)\"\n\n i18n-filterAfterOrEqualOperator=\"kendo.gantt.filterAfterOrEqualOperator|The text of the after or equal date filter operator\"\n filterAfterOrEqualOperator=\"Is after or equal to\"\n\n i18n-filterAfterOperator=\"kendo.gantt.filterAfterOperator|The text of the after date filter operator\"\n filterAfterOperator=\"Is after\"\n\n i18n-filterBeforeOperator=\"kendo.gantt.filterBeforeOperator|The text of the before date filter operator\"\n filterBeforeOperator=\"Is before\"\n\n i18n-filterBeforeOrEqualOperator=\"kendo.gantt.filterBeforeOrEqualOperator|The text of the before or equal date filter operator\"\n filterBeforeOrEqualOperator=\"Is before or equal to\"\n\n i18n-filterFilterButton=\"kendo.gantt.filterFilterButton|The text of the filter button\"\n filterFilterButton=\"Filter\"\n\n i18n-filterClearButton=\"kendo.gantt.filterClearButton|The text of the clear filter button\"\n filterClearButton=\"Clear\"\n\n i18n-filterAndLogic=\"kendo.gantt.filterAndLogic|The text of the And filter logic\"\n filterAndLogic=\"And\"\n\n i18n-filterOrLogic=\"kendo.gantt.filterOrLogic|The text of the Or filter logic\"\n filterOrLogic=\"Or\"\n\n i18n-loading=\"kendo.gantt.loading|The loading text\"\n loading=\"Loading\"\n\n i18n-columnMenu=\"kendo.gantt.columnMenu|The title of the column menu icon\"\n columnMenu=\"Column Menu\"\n\n i18n-columns=\"kendo.gantt.columns|The text shown in the column menu for the columns item\"\n columns=\"Columns\"\n\n i18n-lock-disabled=\"kendo.gantt.lock|The text shown in the column menu for the lock item\"\n lock-disabled=\"Lock\"\n\n i18n-unlock-disabled=\"kendo.gantt.unlock|The text shown in the column menu for the unlock item\"\n unlock-disabled=\"Unlock\"\n\n i18n-sortable=\"kendo.gantt.sortable|The label of the sort icon\"\n sortable=\"Sortable\"\n\n i18n-sortAscending=\"kendo.gantt.sortAscending|The text shown in the column menu for the sort ascending item\"\n sortAscending=\"Sort Ascending\"\n\n i18n-sortDescending=\"kendo.gantt.sortDescending|The text shown in the column menu for the sort descending item\"\n sortDescending=\"Sort Descending\"\n\n i18n-sortedAscending=\"kendo.gantt.sortedAscending|The status announcement when a column is sorted ascending\"\n sortedAscending=\"Sorted Ascending\"\n\n i18n-sortedDescending=\"kendo.gantt.sortedDescending|The status announcement when a column is sorted descending\"\n sortedDescending=\"Sorted Descending\"\n\n i18n-sortedDefault=\"kendo.gantt.sortedDefault|The status announcement when a column is no longer sorted\"\n sortedDefault=\"Not Sorted\"\n\n i18n-columnsApply=\"kendo.gantt.columnsApply|The text shown in the column menu or column chooser for the columns apply button\"\n columnsApply=\"Apply\"\n\n i18n-columnsReset=\"kendo.gantt.columnsReset|The text shown in the column menu or column chooser for the columns reset button\"\n columnsReset=\"Reset\"></ng-container>\n <kendo-gantt-toolbar\n *ngIf=\"showToolbar('top')\"\n [showAddTask]=\"toolbarSettings.addTaskTool === 'top' || toolbarSettings.addTaskTool === 'both'\"\n [showViewSelector]=\"toolbarSettings.viewSelectorTool === 'top' || toolbarSettings.viewSelectorTool === 'both'\"\n class=\"k-gantt-header k-toolbar k-gantt-toolbar\"\n position=\"top\"></kendo-gantt-toolbar>\n <div class=\"k-gantt-content\">\n <kendo-splitter [style.border]=\"0\">\n <kendo-splitter-pane\n class=\"k-gantt-treelist k-gantt-treelist-scrollable\"\n [collapsible]=\"treeListPaneOptions?.collapsible\"\n [collapsed]=\"treeListPaneOptions?.collapsed\"\n (collapsedChange)=\"onTreeListCollapsedChange($event)\"\n [scrollable]=\"false\">\n <kendo-treelist\n [idField]=\"taskIdField\"\n [columns]=\"columns\"\n [data]=\"data\"\n [hasChildren]=\"hasChildren\"\n [fetchChildren]=\"fetchChildren\"\n [isExpanded]=\"isExpanded\"\n [autoSize]=\"columnsAutoSize\"\n [columnMenu]=\"columnMenu\"\n [reorderable]=\"columnsReorderable\"\n [resizable]=\"columnsResizable\"\n [rowClass]=\"rowClass\"\n [isSelected]=\"isSelected\"\n [selectable]=\"selectable\"\n [sortable]=\"sortable\"\n [sort]=\"sort\"\n [filterable]=\"filterMenu\"\n [filter]=\"filter\"\n (filterChange)=\"filterChange.emit($event)\"\n (sortChange)=\"sortChange.emit($event)\"\n (dataStateChange)=\"dataStateChange.emit({\n filter: $event.filter,\n sort: $event.sort\n })\"\n (expandStateChange)=\"expandStateChange.emit($event)\"\n (expand)=\"rowExpand.emit({ dataItem: $event.dataItem })\"\n (collapse)=\"rowCollapse.emit({ dataItem: $event.dataItem })\"\n (columnReorder)=\"columnReorder.emit($event)\"\n (columnResize)=\"columnResize.emit($event)\"\n (columnVisibilityChange)=\"handleColumnVisibilityChange($event)\"\n (columnLockedChange)=\"columnLockedChange.emit($event)\"\n (selectionChange)=\"handleTreeListSelectionChange($event)\"\n (cellClick)=\"handleTreeListCellClick($event)\"\n (cellClose)=\"handleCellClose($event)\"\n [kendoEventsOutsideAngular]=\"{\n dblclick: handleTreeListDoubleClick\n }\"\n [scope]=\"this\"\n >\n <kendo-treelist-messages\n [noRecords]=\"getText('noRecords')\"\n [filter]=\"getText('filter')\"\n [filterEqOperator]=\"getText('filterEqOperator')\"\n [filterNotEqOperator]=\"getText('filterNotEqOperator')\"\n [filterIsNullOperator]=\"getText('filterIsNullOperator')\"\n [filterIsNotNullOperator]=\"getText('filterIsNotNullOperator')\"\n [filterIsEmptyOperator]=\"getText('filterIsEmptyOperator')\"\n [filterIsNotEmptyOperator]=\"getText('filterIsNotEmptyOperator')\"\n [filterStartsWithOperator]=\"getText('filterStartsWithOperator')\"\n [filterContainsOperator]=\"getText('filterContainsOperator')\"\n [filterNotContainsOperator]=\"getText('filterNotContainsOperator')\"\n [filterEndsWithOperator]=\"getText('filterEndsWithOperator')\"\n [filterGteOperator]=\"getText('filterGteOperator')\"\n [filterGtOperator]=\"getText('filterGtOperator')\"\n [filterLteOperator]=\"getText('filterLteOperator')\"\n [filterLtOperator]=\"getText('filterLtOperator')\"\n [filterIsTrue]=\"getText('filterIsTrue')\"\n [filterIsFalse]=\"getText('filterIsFalse')\"\n [filterBooleanAll]=\"getText('filterBooleanAll')\"\n [filterAfterOrEqualOperator]=\"getText('filterAfterOrEqualOperator')\"\n [filterAfterOperator]=\"getText('filterAfterOperator')\"\n [filterBeforeOperator]=\"getText('filterBeforeOperator')\"\n [filterBeforeOrEqualOperator]=\"getText('filterBeforeOrEqualOperator')\"\n [filterFilterButton]=\"getText('filterFilterButton')\"\n [filterClearButton]=\"getText('filterClearButton')\"\n [filterAndLogic]=\"getText('filterAndLogic')\"\n [filterOrLogic]=\"getText('filterOrLogic')\"\n [loading]=\"getText('loading')\"\n [columnMenu]=\"getText('columnMenu')\"\n [columns]=\"getText('columns')\"\n [sortable]=\"getText('sortable')\"\n [sortAscending]=\"getText('sortAscending')\"\n [sortDescending]=\"getText('sortDescending')\"\n [sortedAscending]=\"getText('sortedAscending')\"\n [sortedDescending]=\"getText('sortedDescending')\"\n [sortedDefault]=\"getText('sortedDefault')\"\n [columnsApply]=\"getText('columnsApply')\"\n [columnsReset]=\"getText('columnsReset')\"\n >\n </kendo-treelist-messages>\n </kendo-treelist>\n </kendo-splitter-pane>\n <kendo-splitter-pane\n [collapsible]=\"timelinePaneOptions?.collapsible\"\n [resizable]=\"timelinePaneOptions?.resizable\"\n [collapsed]=\"timelinePaneOptions?.collapsed\"\n [min]=\"timelinePaneOptions?.min\"\n [max]=\"timelinePaneOptions?.max\"\n [size]=\"timelinePaneOptions?.size\"\n (collapsedChange)=\"onTimelineCollapsedChange($event)\"\n (sizeChange)=\"onTimelinePaneSizeChange($event)\"\n [scrollable]=\"false\">\n <kendo-gantt-timeline\n *ngIf=\"views && views.length\"\n [rows]=\"renderedTreeListItems\"\n [slots]=\"timelineSlots\"\n [groupSlots]=\"timelineGroupSlots\"\n [tableWidth]=\"tableWidth\"\n [activeView]=\"activeView\"\n [taskContentTemplate]=\"taskContentTemplate?.templateRef\"\n [taskTemplate]=\"taskTemplate?.templateRef\"\n [summaryTaskTemplate]=\"summaryTaskTemplate?.templateRef\"\n [taskClass]=\"taskClass\"\n [dependencies]=\"dependencies\"\n [hasChildren]=\"hasChildren\"\n [isTaskSelected]=\"isTaskSelected\"\n [kendoEventsOutsideAngular]=\"{\n click: handleTimelineClick,\n contextmenu: handleTimelineRightClick,\n dblclick: handleTimelineDblClick,\n mousedown: handleTimelineMouseDown\n }\"\n [scope]=\"this\"\n ></kendo-gantt-timeline>\n </kendo-splitter-pane>\n </kendo-splitter>\n </div>\n <kendo-gantt-toolbar\n *ngIf=\"showToolbar('bottom')\"\n [showAddTask]=\"toolbarSettings.addTaskTool === 'bottom' || toolbarSettings.addTaskTool === 'both'\"\n [showViewSelector]=\"toolbarSettings.viewSelectorTool === 'bottom' || toolbarSettings.viewSelectorTool === 'both'\"\n class=\"k-gantt-footer k-toolbar k-gantt-toolbar\"\n position=\"bottom\"></kendo-gantt-toolbar>\n <kendo-gantt-edit-dialog *ngIf=\"showEditingDialog\" [formGroup]=\"editDialogFormGroup\"></kendo-gantt-edit-dialog>\n <kendo-dialog\n *ngIf=\"showConfirmationDialog\"\n [width]=\"575\"\n [height]=\"170\"\n [title]=\"getText('confirmationDialogTitle')\"\n (close)=\"showConfirmationDialog = false;\">\n <span>{{getText('confirmationDialogContent')}}</span>\n <kendo-dialog-actions layout=\"normal\">\n <kendo-treelist-spacer></kendo-treelist-spacer>\n <button kendoButton [primary]=\"true\" (click)=\"handleDeleteConfirmation()\">{{ getText('deleteButtonText') }}</button>\n <button kendoButton (click)=\"showConfirmationDialog = false;\">{{ getText('cancelButtonText') }}</button>\n </kendo-dialog-actions>\n </kendo-dialog>\n "
1618
+ template: "\n <ng-container kendoGanttLocalizedMessages\n i18n-taskEditingGeneralTabTitle=\"kendo.gantt.taskEditingGeneralTabTitle|The title of the 'General' tab of the editing dialog TabStrip\"\n taskEditingGeneralTabTitle=\"General\"\n\n i18n-taskEditingPredecessorsTabTitle=\"kendo.gantt.taskEditingPredecessorsTabTitle|The title of the 'Predecessors' dependencies tab of the editing dialog TabStrip\"\n taskEditingPredecessorsTabTitle=\"Predecessors\"\n\n i18n-taskEditingSuccessorsTabTitle=\"kendo.gantt.taskEditingSuccessorsTabTitle|The title of the 'Successors' dependencies tab of the editing dialog TabStrip\"\n taskEditingSuccessorsTabTitle=\"Successors\"\n\n i18n-taskEditingDependenciesAddButtonText=\"kendo.gantt.taskEditingDependenciesAddButtonText|The text of the 'Add' button in the dependencies tabs of the editing dialog TabStrip\"\n taskEditingDependenciesAddButtonText=\"Add\"\n\n i18n-taskEditingDependenciesRemoveButtonText=\"kendo.gantt.taskEditingDependenciesRemoveButtonText|The text of the 'Remove' button in the dependencies tabs of the editing dialog TabStrip\"\n taskEditingDependenciesRemoveButtonText=\"Remove\"\n\n i18n-taskEditingDependenciesGridNameColumnTitle=\"kendo.gantt.taskEditingDependenciesGridNameColumnTitle|The title of the 'Task Title' Grid column in the dependencies tabs of the editing dialog TabStrip\"\n taskEditingDependenciesGridNameColumnTitle=\"Task Title\"\n\n i18n-taskEditingDependenciesGridTypeColumnTitle=\"kendo.gantt.taskEditingDependenciesGridTypeColumnTitle|The title of the 'Type' Grid column in the dependencies tabs of the editing dialog TabStrip\"\n taskEditingDependenciesGridTypeColumnTitle=\"Type\"\n\n i18n-taskDeleteLabel=\"kendo.gantt.taskDeleteLabel|The label of the task delete icon\"\n taskDeleteLabel=\"Delete\"\n\n i18n-taskEditingDialogTitle=\"kendo.gantt.taskEditingDialogTitle|The title of the task editing dialog\"\n taskEditingDialogTitle=\"Editing Task\"\n\n i18n-taskEditingDialogCloseTitle=\"kendo.gantt.taskEditingDialogCloseTitle|The title of the task editing dialog close button\"\n taskEditingDialogCloseTitle=\"Close\"\n\n i18n-confirmationDialogCloseTitle=\"kendo.gantt.confirmationDialogCloseTitle|The title of the confirmation dialog close button\"\n confirmationDialogCloseTitle=\"Close\"\n\n i18n-confirmationDialogTitle=\"kendo.gantt.confirmationDialogTitle|The title of the delete task confirmation dialog\"\n confirmationDialogTitle=\"Delete Task\"\n\n i18n-confirmationDialogContent=\"kendo.gantt.confirmationDialogContent|The content of the delete task confirmation dialog\"\n confirmationDialogContent=\"Are you sure you want to delete this task?\"\n\n i18n-deleteButtonText=\"kendo.gantt.deleteButtonText|The text of the task editing dialog 'Delete' button\"\n deleteButtonText=\"Delete\"\n\n i18n-cancelButtonText=\"kendo.gantt.cancelButtonText|The text of the task editing dialog 'Cancel' button\"\n cancelButtonText=\"Cancel\"\n\n i18n-saveButtonText=\"kendo.gantt.saveButtonText|The text of the task editing dialog 'Save' button\"\n saveButtonText=\"Save\"\n\n i18n-titleFieldInputLabel=\"kendo.gantt.titleFieldInputLabel|The label of the 'title' field input in editing mode\"\n titleFieldInputLabel=\"Title\"\n\n i18n-startFieldInputLabel=\"kendo.gantt.startFieldInputLabel|The label of the 'start' field input in editing mode\"\n startFieldInputLabel=\"Start\"\n\n i18n-endFieldInputLabel=\"kendo.gantt.endFieldInputLabel|The label of the 'end' field input in editing mode\"\n endFieldInputLabel=\"End\"\n\n i18n-completionRatioFieldInputLabel=\"kendo.gantt.completionRatioFieldInputLabel|The label of the 'completionRatio' field input in editing mode\"\n completionRatioFieldInputLabel=\"Progress\"\n\n i18n-dayViewText=\"kendo.gantt.dayViewText|The text of the day view in the ViewSelector component\"\n dayViewText=\"Day\"\n\n i18n-weekViewText=\"kendo.gantt.weekViewText|The text of the week view in the ViewSelector component\"\n weekViewText=\"Week\"\n\n i18n-monthViewText=\"kendo.gantt.monthViewText|The text of the month view in the ViewSelector component\"\n monthViewText=\"Month\"\n\n i18n-yearViewText-disabled=\"kendo.gantt.yearViewText|The text of the year view in the ViewSelector component\"\n yearViewText=\"Year\"\n\n i18n-addTaskText=\"kendo.gantt.addTaskText|The text of the DropDownButton in the AddTask component\"\n addTaskText=\"Add Task\"\n\n i18n-addChildText=\"kendo.gantt.addChildText|The text of the 'Add Child' option in the AddTask component\"\n addChildText=\"Add Child\"\n\n i18n-addAboveText=\"kendo.gantt.addAboveText|The text of the 'Add Above' option in the AddTask component\"\n addAboveText=\"Add Above\"\n\n i18n-addBelowText=\"kendo.gantt.addBelowText|The text of the 'Add Below' option in the AddTask component\"\n addBelowText=\"Add Below\"\n\n i18n-noRecords=\"kendo.gantt.noRecords|The label visible in the TreeList when there are no records\"\n noRecords=\"No records available.\"\n\n i18n-filter=\"kendo.gantt.filter|The label of the filter cell or icon\"\n filter=\"Filter\"\n\n i18n-filterEqOperator=\"kendo.gantt.filterEqOperator|The text of the equal filter operator\"\n filterEqOperator=\"Is equal to\"\n\n i18n-filterNotEqOperator=\"kendo.gantt.filterNotEqOperator|The text of the not equal filter operator\"\n filterNotEqOperator=\"Is not equal to\"\n\n i18n-filterIsNullOperator=\"kendo.gantt.filterIsNullOperator|The text of the is null filter operator\"\n filterIsNullOperator=\"Is null\"\n\n i18n-filterIsNotNullOperator=\"kendo.gantt.filterIsNotNullOperator|The text of the is not null filter operator\"\n filterIsNotNullOperator=\"Is not null\"\n\n i18n-filterIsEmptyOperator=\"kendo.gantt.filterIsEmptyOperator|The text of the is empty filter operator\"\n filterIsEmptyOperator=\"Is empty\"\n\n i18n-filterIsNotEmptyOperator=\"kendo.gantt.filterIsNotEmptyOperator|The text of the is not empty filter operator\"\n filterIsNotEmptyOperator=\"Is not empty\"\n\n i18n-filterStartsWithOperator=\"kendo.gantt.filterStartsWithOperator|The text of the starts with filter operator\"\n filterStartsWithOperator=\"Starts with\"\n\n i18n-filterContainsOperator=\"kendo.gantt.filterContainsOperator|The text of the contains filter operator\"\n filterContainsOperator=\"Contains\"\n\n i18n-filterNotContainsOperator=\"kendo.gantt.filterNotContainsOperator|The text of the does not contain filter operator\"\n filterNotContainsOperator=\"Does not contain\"\n\n i18n-filterEndsWithOperator=\"kendo.gantt.filterEndsWithOperator|The text of the ends with filter operator\"\n filterEndsWithOperator=\"Ends with\"\n\n i18n-filterGteOperator=\"kendo.gantt.filterGteOperator|The text of the greater than or equal filter operator\"\n filterGteOperator=\"Is greater than or equal to\"\n\n i18n-filterGtOperator=\"kendo.gantt.filterGtOperator|The text of the greater than filter operator\"\n filterGtOperator=\"Is greater than\"\n\n i18n-filterLteOperator=\"kendo.gantt.filterLteOperator|The text of the less than or equal filter operator\"\n filterLteOperator=\"Is less than or equal to\"\n\n i18n-filterLtOperator=\"kendo.gantt.filterLtOperator|The text of the less than filter operator\"\n filterLtOperator=\"Is less than\"\n\n i18n-filterIsTrue=\"kendo.gantt.filterIsTrue|The text of the IsTrue boolean filter option\"\n filterIsTrue=\"Is True\"\n\n i18n-filterIsFalse=\"kendo.gantt.filterIsFalse|The text of the IsFalse boolean filter option\"\n filterIsFalse=\"Is False\"\n\n i18n-filterBooleanAll=\"kendo.gantt.filterBooleanAll|The text of the (All) boolean filter option\"\n filterBooleanAll=\"(All)\"\n\n i18n-filterAfterOrEqualOperator=\"kendo.gantt.filterAfterOrEqualOperator|The text of the after or equal date filter operator\"\n filterAfterOrEqualOperator=\"Is after or equal to\"\n\n i18n-filterAfterOperator=\"kendo.gantt.filterAfterOperator|The text of the after date filter operator\"\n filterAfterOperator=\"Is after\"\n\n i18n-filterBeforeOperator=\"kendo.gantt.filterBeforeOperator|The text of the before date filter operator\"\n filterBeforeOperator=\"Is before\"\n\n i18n-filterBeforeOrEqualOperator=\"kendo.gantt.filterBeforeOrEqualOperator|The text of the before or equal date filter operator\"\n filterBeforeOrEqualOperator=\"Is before or equal to\"\n\n i18n-filterFilterButton=\"kendo.gantt.filterFilterButton|The text of the filter button\"\n filterFilterButton=\"Filter\"\n\n i18n-filterClearButton=\"kendo.gantt.filterClearButton|The text of the clear filter button\"\n filterClearButton=\"Clear\"\n\n i18n-filterAndLogic=\"kendo.gantt.filterAndLogic|The text of the And filter logic\"\n filterAndLogic=\"And\"\n\n i18n-filterOrLogic=\"kendo.gantt.filterOrLogic|The text of the Or filter logic\"\n filterOrLogic=\"Or\"\n\n i18n-loading=\"kendo.gantt.loading|The loading text\"\n loading=\"Loading\"\n\n i18n-columnMenu=\"kendo.gantt.columnMenu|The title of the column menu icon\"\n columnMenu=\"Column Menu\"\n\n i18n-columns=\"kendo.gantt.columns|The text shown in the column menu for the columns item\"\n columns=\"Columns\"\n\n i18n-lock-disabled=\"kendo.gantt.lock|The text shown in the column menu for the lock item\"\n lock-disabled=\"Lock\"\n\n i18n-unlock-disabled=\"kendo.gantt.unlock|The text shown in the column menu for the unlock item\"\n unlock-disabled=\"Unlock\"\n\n i18n-sortable=\"kendo.gantt.sortable|The label of the sort icon\"\n sortable=\"Sortable\"\n\n i18n-sortAscending=\"kendo.gantt.sortAscending|The text shown in the column menu for the sort ascending item\"\n sortAscending=\"Sort Ascending\"\n\n i18n-sortDescending=\"kendo.gantt.sortDescending|The text shown in the column menu for the sort descending item\"\n sortDescending=\"Sort Descending\"\n\n i18n-sortedAscending=\"kendo.gantt.sortedAscending|The status announcement when a column is sorted ascending\"\n sortedAscending=\"Sorted Ascending\"\n\n i18n-sortedDescending=\"kendo.gantt.sortedDescending|The status announcement when a column is sorted descending\"\n sortedDescending=\"Sorted Descending\"\n\n i18n-sortedDefault=\"kendo.gantt.sortedDefault|The status announcement when a column is no longer sorted\"\n sortedDefault=\"Not Sorted\"\n\n i18n-columnsApply=\"kendo.gantt.columnsApply|The text shown in the column menu or column chooser for the columns apply button\"\n columnsApply=\"Apply\"\n\n i18n-columnsReset=\"kendo.gantt.columnsReset|The text shown in the column menu or column chooser for the columns reset button\"\n columnsReset=\"Reset\"></ng-container>\n <kendo-gantt-toolbar\n *ngIf=\"showToolbar('top')\"\n [showAddTask]=\"toolbarSettings.addTaskTool === 'top' || toolbarSettings.addTaskTool === 'both'\"\n [showViewSelector]=\"toolbarSettings.viewSelectorTool === 'top' || toolbarSettings.viewSelectorTool === 'both'\"\n class=\"k-gantt-header k-toolbar k-gantt-toolbar\"\n position=\"top\"></kendo-gantt-toolbar>\n <div class=\"k-gantt-content\">\n <kendo-splitter [style.border]=\"0\">\n <kendo-splitter-pane\n class=\"k-gantt-treelist k-gantt-treelist-scrollable\"\n [collapsible]=\"treeListPaneOptions?.collapsible\"\n [collapsed]=\"treeListPaneOptions?.collapsed\"\n (collapsedChange)=\"onTreeListCollapsedChange($event)\"\n [scrollable]=\"false\">\n <kendo-treelist\n [idField]=\"taskIdField\"\n [columns]=\"columns\"\n [data]=\"data\"\n [hasChildren]=\"hasChildren\"\n [fetchChildren]=\"fetchChildren\"\n [navigable]=\"navigable\"\n [isExpanded]=\"isExpanded\"\n [autoSize]=\"columnsAutoSize\"\n [columnMenu]=\"columnMenu\"\n [reorderable]=\"columnsReorderable\"\n [resizable]=\"columnsResizable\"\n [rowClass]=\"rowClass\"\n [isSelected]=\"isSelected\"\n [selectable]=\"selectable\"\n [sortable]=\"sortable\"\n [sort]=\"sort\"\n [filterable]=\"filterMenu\"\n [filter]=\"filter\"\n (filterChange)=\"filterChange.emit($event)\"\n (sortChange)=\"sortChange.emit($event)\"\n (dataStateChange)=\"dataStateChange.emit({\n filter: $event.filter,\n sort: $event.sort\n })\"\n (expandStateChange)=\"expandStateChange.emit($event)\"\n (expand)=\"rowExpand.emit({ dataItem: $event.dataItem })\"\n (collapse)=\"rowCollapse.emit({ dataItem: $event.dataItem })\"\n (columnReorder)=\"columnReorder.emit($event)\"\n (columnResize)=\"columnResize.emit($event)\"\n (columnVisibilityChange)=\"handleColumnVisibilityChange($event)\"\n (columnLockedChange)=\"columnLockedChange.emit($event)\"\n (selectionChange)=\"handleTreeListSelectionChange($event)\"\n (cellClick)=\"handleTreeListCellClick($event)\"\n (cellClose)=\"handleCellClose($event)\"\n [kendoEventsOutsideAngular]=\"{\n dblclick: handleTreeListDoubleClick\n }\"\n [scope]=\"this\"\n >\n <kendo-treelist-messages\n [noRecords]=\"getText('noRecords')\"\n [filter]=\"getText('filter')\"\n [filterEqOperator]=\"getText('filterEqOperator')\"\n [filterNotEqOperator]=\"getText('filterNotEqOperator')\"\n [filterIsNullOperator]=\"getText('filterIsNullOperator')\"\n [filterIsNotNullOperator]=\"getText('filterIsNotNullOperator')\"\n [filterIsEmptyOperator]=\"getText('filterIsEmptyOperator')\"\n [filterIsNotEmptyOperator]=\"getText('filterIsNotEmptyOperator')\"\n [filterStartsWithOperator]=\"getText('filterStartsWithOperator')\"\n [filterContainsOperator]=\"getText('filterContainsOperator')\"\n [filterNotContainsOperator]=\"getText('filterNotContainsOperator')\"\n [filterEndsWithOperator]=\"getText('filterEndsWithOperator')\"\n [filterGteOperator]=\"getText('filterGteOperator')\"\n [filterGtOperator]=\"getText('filterGtOperator')\"\n [filterLteOperator]=\"getText('filterLteOperator')\"\n [filterLtOperator]=\"getText('filterLtOperator')\"\n [filterIsTrue]=\"getText('filterIsTrue')\"\n [filterIsFalse]=\"getText('filterIsFalse')\"\n [filterBooleanAll]=\"getText('filterBooleanAll')\"\n [filterAfterOrEqualOperator]=\"getText('filterAfterOrEqualOperator')\"\n [filterAfterOperator]=\"getText('filterAfterOperator')\"\n [filterBeforeOperator]=\"getText('filterBeforeOperator')\"\n [filterBeforeOrEqualOperator]=\"getText('filterBeforeOrEqualOperator')\"\n [filterFilterButton]=\"getText('filterFilterButton')\"\n [filterClearButton]=\"getText('filterClearButton')\"\n [filterAndLogic]=\"getText('filterAndLogic')\"\n [filterOrLogic]=\"getText('filterOrLogic')\"\n [loading]=\"getText('loading')\"\n [columnMenu]=\"getText('columnMenu')\"\n [columns]=\"getText('columns')\"\n [sortable]=\"getText('sortable')\"\n [sortAscending]=\"getText('sortAscending')\"\n [sortDescending]=\"getText('sortDescending')\"\n [sortedAscending]=\"getText('sortedAscending')\"\n [sortedDescending]=\"getText('sortedDescending')\"\n [sortedDefault]=\"getText('sortedDefault')\"\n [columnsApply]=\"getText('columnsApply')\"\n [columnsReset]=\"getText('columnsReset')\"\n >\n </kendo-treelist-messages>\n </kendo-treelist>\n </kendo-splitter-pane>\n <kendo-splitter-pane\n [collapsible]=\"timelinePaneOptions?.collapsible\"\n [resizable]=\"timelinePaneOptions?.resizable\"\n [collapsed]=\"timelinePaneOptions?.collapsed\"\n [min]=\"timelinePaneOptions?.min\"\n [max]=\"timelinePaneOptions?.max\"\n [size]=\"timelinePaneOptions?.size\"\n (collapsedChange)=\"onTimelineCollapsedChange($event)\"\n (sizeChange)=\"onTimelinePaneSizeChange($event)\"\n [scrollable]=\"false\">\n <kendo-gantt-timeline\n *ngIf=\"views && views.length\"\n [renderDependencyDragClues]=\"renderDependencyDragClues\"\n [dragScrollSettings]=\"dragScrollSettings\"\n [rows]=\"viewItems\"\n [slots]=\"timelineSlots\"\n [groupSlots]=\"timelineGroupSlots\"\n [tableWidth]=\"tableWidth\"\n [activeView]=\"activeView\"\n [taskContentTemplate]=\"taskContentTemplate?.templateRef\"\n [taskTemplate]=\"taskTemplate?.templateRef\"\n [summaryTaskTemplate]=\"summaryTaskTemplate?.templateRef\"\n [taskClass]=\"taskClass\"\n [dependencies]=\"dependencies\"\n [isExpanded]=\"isExpanded\"\n [selectable]=\"selectable\"\n [isTaskSelected]=\"isTaskSelected\"\n [kendoEventsOutsideAngular]=\"{\n click: handleTimelineClick,\n contextmenu: handleTimelineRightClick,\n dblclick: handleTimelineDblClick,\n mousedown: handleTimelineMouseDown\n }\"\n [scope]=\"this\"\n ></kendo-gantt-timeline>\n </kendo-splitter-pane>\n </kendo-splitter>\n </div>\n <kendo-gantt-toolbar\n *ngIf=\"showToolbar('bottom')\"\n [showAddTask]=\"toolbarSettings.addTaskTool === 'bottom' || toolbarSettings.addTaskTool === 'both'\"\n [showViewSelector]=\"toolbarSettings.viewSelectorTool === 'bottom' || toolbarSettings.viewSelectorTool === 'both'\"\n class=\"k-gantt-footer k-toolbar k-gantt-toolbar\"\n position=\"bottom\"></kendo-gantt-toolbar>\n <kendo-gantt-edit-dialog\n *ngIf=\"showEditingDialog\"\n [data]=\"data\">\n </kendo-gantt-edit-dialog>\n <kendo-dialog\n *ngIf=\"showConfirmationDialog\"\n [width]=\"575\"\n [height]=\"170\"\n [title]=\"getText('confirmationDialogTitle')\"\n (close)=\"handleConfirmationDialogClose()\">\n <span>{{ getText('confirmationDialogContent') }}</span>\n <kendo-dialog-actions layout=\"normal\">\n <kendo-treelist-spacer></kendo-treelist-spacer>\n <button kendoButton [primary]=\"true\" (click)=\"handleDeleteConfirmation()\">{{ getText('deleteButtonText') }}</button>\n <button kendoButton (click)=\"handleConfirmationDialogClose()\">{{ getText('cancelButtonText') }}</button>\n </kendo-dialog-actions>\n </kendo-dialog>\n "
1312
1619
  }),
1313
1620
  tslib_1.__metadata("design:paramtypes", [TimelineViewService,
1314
1621
  ScrollSyncService,
@@ -1319,7 +1626,8 @@ var GanttComponent = /** @class */ (function () {
1319
1626
  EditService,
1320
1627
  LocalizationService,
1321
1628
  ElementRef,
1322
- NgZone])
1629
+ NgZone,
1630
+ NavigationService])
1323
1631
  ], GanttComponent);
1324
1632
  return GanttComponent;
1325
1633
  }());