@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
@@ -12,8 +12,11 @@ var rxjs_1 = require("rxjs");
12
12
  var kendo_licensing_1 = require("@progress/kendo-licensing");
13
13
  var package_metadata_1 = require("./package-metadata");
14
14
  var kendo_angular_common_1 = require("@progress/kendo-angular-common");
15
+ var gantt_timeline_component_1 = require("./timeline/gantt-timeline.component");
15
16
  var columns_1 = require("./columns/columns");
16
17
  var default_callbacks_1 = require("./common/default-callbacks");
18
+ var models_1 = require("./models/models");
19
+ var kendo_angular_l10n_1 = require("@progress/kendo-angular-l10n");
17
20
  var timeline_view_service_1 = require("./timeline/timeline-view.service");
18
21
  var timeline_day_view_service_1 = require("./timeline/timeline-day-view.service");
19
22
  var timeline_week_view_service_1 = require("./timeline/timeline-week-view.service");
@@ -23,7 +26,9 @@ var dependency_dom_service_1 = require("./dependencies/dependency-dom.service");
23
26
  var mapping_service_1 = require("./common/mapping.service");
24
27
  var option_changes_service_1 = require("./common/option-changes.service");
25
28
  var edit_service_1 = require("./editing/edit.service");
26
- var kendo_angular_l10n_1 = require("@progress/kendo-angular-l10n");
29
+ var timeline_scroll_service_1 = require("./scrolling/timeline-scroll.service");
30
+ var gantt_localization_service_1 = require("./localization/gantt-localization.service");
31
+ var navigation_service_1 = require("./navigation/navigation.service");
27
32
  var utils_1 = require("./utils");
28
33
  var splitter_pane_options_interface_1 = require("./models/splitter-pane-options.interface");
29
34
  var task_template_directive_1 = require("./template-directives/task-template.directive");
@@ -31,9 +36,15 @@ var summary_task_template_directive_1 = require("./template-directives/summary-t
31
36
  var task_content_template_directive_1 = require("./template-directives/task-content-template.directive");
32
37
  var toolbar_template_directive_1 = require("./toolbar/toolbar-template.directive");
33
38
  var view_base_1 = require("./timeline/view-base");
34
- var util_1 = require("./editing/util");
39
+ var utils_2 = require("./editing/utils");
35
40
  var TREELIST_GROUP_COLUMNS_CLASS = 'k-gantt-treelist-nested-columns';
36
41
  var DEFAULT_VIEW = 'week';
42
+ var DEFAULT_DRAG_SCROLL_SETTINGS = {
43
+ enabled: true,
44
+ step: 3,
45
+ interval: 1,
46
+ threshold: 10
47
+ };
37
48
  /**
38
49
  * Represents the Kendo UI Gantt component for Angular.
39
50
  *
@@ -106,7 +117,7 @@ var DEFAULT_VIEW = 'week';
106
117
  * ```
107
118
  */
108
119
  var GanttComponent = /** @class */ (function () {
109
- function GanttComponent(timelineViewService, scrollSyncService, renderer, mapper, optionChangesService, dependencyDomService, editService, localizationService, hostElement, zone) {
120
+ function GanttComponent(timelineViewService, scrollSyncService, renderer, mapper, optionChangesService, dependencyDomService, editService, localizationService, hostElement, zone, navigationService) {
110
121
  var _this = this;
111
122
  this.timelineViewService = timelineViewService;
112
123
  this.scrollSyncService = scrollSyncService;
@@ -118,13 +129,33 @@ var GanttComponent = /** @class */ (function () {
118
129
  this.localizationService = localizationService;
119
130
  this.hostElement = hostElement;
120
131
  this.zone = zone;
132
+ this.navigationService = navigationService;
133
+ /**
134
+ * @hidden
135
+ */
136
+ this.roleDescription = 'Gantt Chart';
137
+ /**
138
+ * @hidden
139
+ */
140
+ this.role = 'application';
121
141
  this.hostClasses = true;
122
142
  /**
123
- * Provides a callback that determines if the given task is selected ([see example]({% slug selection_gantt %}#toc-custom-selection))
143
+ * Specifies a callback that determines if the given task is selected ([see example]({% slug selection_gantt %}#toc-custom-selection)).
124
144
  *
125
145
  * > The [`selectable`]({% slug api_gantt_ganttcomponent %}#toc-selectable) prop has to be set to `true` in order for this callback to be executed.
126
146
  */
127
147
  this.isSelected = default_callbacks_1.isSelected;
148
+ /**
149
+ * Specifies a callback that determines if a new dependency is valid.
150
+ * Used when evaluating if an attempt to create a new dependency will result in a valid link between the two tasks
151
+ * [see example]({% slug editing_drag_create_dependencies_gantt %}#toc-validation).
152
+ *
153
+ * By defalut, dependencies are deemed invalid when:
154
+ * - The two tasks are in a parent-child relationship.
155
+ * - The two tasks are already dependent on one another. Only one dependency is allowed per pair.
156
+ * - The start or end times of the two tasks are incompatible with the attempted dependency type.
157
+ */
158
+ this.validateNewDependency = this.defaultValidateNewDependencyCallback.bind(this);
128
159
  /**
129
160
  * Fires when the Gantt selection is changed through user interaction.
130
161
  *
@@ -140,14 +171,6 @@ var GanttComponent = /** @class */ (function () {
140
171
  * > When applied, the [`SelectableDirective`]({% slug api_gantt_selectabledirective %}) sets `selectable` to `true` internally.
141
172
  */
142
173
  this.selectable = false;
143
- /**
144
- * Gets or sets the callback function that retrieves the child items for a particular item.
145
- */
146
- this.fetchChildren = default_callbacks_1.fetchChildren;
147
- /**
148
- * Gets or sets the callback function that indicates if a particular item has child items.
149
- */
150
- this.hasChildren = default_callbacks_1.hasChildren;
151
174
  /**
152
175
  * Defines the dependencies that will be drawn between the rendered tasks.
153
176
  *
@@ -186,6 +209,12 @@ var GanttComponent = /** @class */ (function () {
186
209
  * The end of the work week (index based).
187
210
  */
188
211
  this.workWeekEnd = 5;
212
+ /**
213
+ * If set to `true`, the user can use dedicated shortcuts to interact with the Gantt.
214
+ * By default, navigation is disabled for the TreeList and Timeline parts of the component,
215
+ * ([see example]({% slug keyboard_navigation_gantt %})).
216
+ */
217
+ this.navigable = false;
189
218
  /**
190
219
  * Indicates whether the Gantt columns will be resized during initialization so that they fit their headers and row content.
191
220
  * Columns with autoSize set to false are excluded.
@@ -229,7 +258,8 @@ var GanttComponent = /** @class */ (function () {
229
258
  */
230
259
  this.cellClose = new core_1.EventEmitter();
231
260
  /**
232
- * Fires when the end user clicks the `Delete` button in the task editing dialog or the task delete icon.
261
+ * Fires when the end user clicks the `Delete` button in the task editing dialog,
262
+ * the task delete icon, or presses the `Delete` key on the keyboard when a task in the timeline is focused.
233
263
  * Use the event handler to open a confirmation dialog when necessary.
234
264
  */
235
265
  this.taskDelete = new core_1.EventEmitter();
@@ -253,6 +283,11 @@ var GanttComponent = /** @class */ (function () {
253
283
  * Fires when the user adds a task.
254
284
  */
255
285
  this.taskAdd = new core_1.EventEmitter();
286
+ /**
287
+ * Fires when the user adds a dependency via dragging
288
+ * [see example]({% slug editing_drag_create_dependencies_gantt %}#toc-basic-concepts).
289
+ */
290
+ this.dependencyAdd = new core_1.EventEmitter();
256
291
  /**
257
292
  * Fires when the sorting of the Gantt is changed.
258
293
  * You have to handle the event yourself and sort the data.
@@ -309,6 +344,15 @@ var GanttComponent = /** @class */ (function () {
309
344
  * Fires when a task is clicked.
310
345
  */
311
346
  this.taskClick = new core_1.EventEmitter();
347
+ /**
348
+ * @hidden
349
+ *
350
+ * Specifies whether the dependency drag clues will be rendered.
351
+ * Set internally by the dependency-drag-create directive.
352
+ *
353
+ * @default false
354
+ */
355
+ this.renderDependencyDragClues = false;
312
356
  /**
313
357
  * @hidden
314
358
  *
@@ -325,6 +369,7 @@ var GanttComponent = /** @class */ (function () {
325
369
  this.showConfirmationDialog = false;
326
370
  this._columns = new core_1.QueryList();
327
371
  this._data = [];
372
+ this._dragScrollSettings = tslib_1.__assign({}, DEFAULT_DRAG_SCROLL_SETTINGS);
328
373
  this._timelinePaneOptions = tslib_1.__assign({}, splitter_pane_options_interface_1.DEFAULT_TIMELINE_PANE_SETTINGS);
329
374
  this._treeListPaneOptions = tslib_1.__assign({}, splitter_pane_options_interface_1.DEFAULT_TREELIST_PANE_SETTINGS);
330
375
  this._rowClass = default_callbacks_1.rowClassCallback;
@@ -335,6 +380,8 @@ var GanttComponent = /** @class */ (function () {
335
380
  addTaskTool: 'none',
336
381
  viewSelectorTool: 'top'
337
382
  };
383
+ this._fetchChildren = default_callbacks_1.fetchChildren;
384
+ this._hasChildren = default_callbacks_1.hasChildren;
338
385
  this.rtl = false;
339
386
  this.optionChangesSubscriptions = new rxjs_1.Subscription();
340
387
  this.editServiceSubscription = new rxjs_1.Subscription();
@@ -347,22 +394,32 @@ var GanttComponent = /** @class */ (function () {
347
394
  }));
348
395
  this.editService.getSelectedItem = this.getFirstSelectedItem.bind(this);
349
396
  this.editServiceSubscription.add(this.editService.showEditingDialog.subscribe(function (show) { return _this.showEditingDialog = show; }));
350
- this.editServiceSubscription.add(this.editService.showConfirmationDialog.subscribe(function () { return _this.taskDelete.emit(); }));
397
+ this.editServiceSubscription.add(this.editService.taskDelete.subscribe(function (task) {
398
+ if (kendo_angular_common_1.hasObservers(_this.taskDelete)) {
399
+ _this.zone.run(function () {
400
+ return _this.notifyTaskDelete(task);
401
+ });
402
+ }
403
+ }));
351
404
  this.editServiceSubscription.add(this.editService.editEvent.subscribe(function (args) {
352
405
  _this[args.editResultType].emit({
353
- formGroup: args.formGroup,
354
- item: util_1.getEditItem(args.dataItem, _this.treeList.view.data, _this.mapper),
406
+ taskFormGroup: args.taskFormGroup,
407
+ item: utils_2.getEditItem(args.dataItem, _this.treeList.view.data, _this.mapper),
408
+ dependencies: args.dependencies,
355
409
  sender: _this
356
410
  });
357
411
  _this.showConfirmationDialog = _this.showEditingDialog = false;
358
- _this.editService.dataItem = _this.editService.formGroup = null;
412
+ _this.editService.dataItem = _this.editService.taskFormGroup = null;
359
413
  _this.updateView();
414
+ if (_this.navigable) {
415
+ _this.focus();
416
+ }
360
417
  }));
361
418
  this.editServiceSubscription.add(this.editService.addEvent.subscribe(function (args) {
362
419
  var selectedItem = _this.getFirstSelectedItem();
363
420
  _this.taskAdd.emit({
364
421
  actionType: args.actionType,
365
- selectedItem: selectedItem ? util_1.getEditItem(selectedItem, _this.treeList.view.data, _this.mapper) : null
422
+ selectedItem: selectedItem ? utils_2.getEditItem(selectedItem, _this.treeList.view.data, _this.mapper) : null
366
423
  });
367
424
  _this.updateView();
368
425
  }));
@@ -386,6 +443,20 @@ var GanttComponent = /** @class */ (function () {
386
443
  enumerable: true,
387
444
  configurable: true
388
445
  });
446
+ Object.defineProperty(GanttComponent.prototype, "hostRoleDescriptionAttr", {
447
+ get: function () {
448
+ return this.roleDescription;
449
+ },
450
+ enumerable: true,
451
+ configurable: true
452
+ });
453
+ Object.defineProperty(GanttComponent.prototype, "hostRoleAttr", {
454
+ get: function () {
455
+ return this.role;
456
+ },
457
+ enumerable: true,
458
+ configurable: true
459
+ });
389
460
  Object.defineProperty(GanttComponent.prototype, "dir", {
390
461
  get: function () {
391
462
  return this.direction;
@@ -497,6 +568,34 @@ var GanttComponent = /** @class */ (function () {
497
568
  enumerable: true,
498
569
  configurable: true
499
570
  });
571
+ Object.defineProperty(GanttComponent.prototype, "fetchChildren", {
572
+ get: function () {
573
+ return this._fetchChildren;
574
+ },
575
+ /**
576
+ * Gets or sets the callback function that retrieves the child items for a particular item.
577
+ */
578
+ set: function (fn) {
579
+ this._fetchChildren = fn;
580
+ this.editService.fetchChildren = fn;
581
+ },
582
+ enumerable: true,
583
+ configurable: true
584
+ });
585
+ Object.defineProperty(GanttComponent.prototype, "hasChildren", {
586
+ get: function () {
587
+ return this._hasChildren;
588
+ },
589
+ /**
590
+ * Gets or sets the callback function that indicates if a particular item has child items.
591
+ */
592
+ set: function (fn) {
593
+ this._hasChildren = fn;
594
+ this.editService.hasChildren = fn;
595
+ },
596
+ enumerable: true,
597
+ configurable: true
598
+ });
500
599
  Object.defineProperty(GanttComponent.prototype, "timelinePaneOptions", {
501
600
  get: function () {
502
601
  return tslib_1.__assign({}, this._timelinePaneOptions, { size: this.treeListPaneOptions.collapsed ? '100%' : this._timelinePaneOptions.size });
@@ -572,6 +671,21 @@ var GanttComponent = /** @class */ (function () {
572
671
  enumerable: true,
573
672
  configurable: true
574
673
  });
674
+ Object.defineProperty(GanttComponent.prototype, "dragScrollSettings", {
675
+ get: function () {
676
+ return this._dragScrollSettings;
677
+ },
678
+ /**
679
+ * Specifies the settings for auto-scrolling during dragging
680
+ * when the pointer moves outside of the container bounderies
681
+ * [see example]({% slug editing_drag_create_dependencies_gantt %}#toc-auto-scrolling).
682
+ */
683
+ set: function (settings) {
684
+ this._dragScrollSettings = tslib_1.__assign({}, DEFAULT_DRAG_SCROLL_SETTINGS, settings);
685
+ },
686
+ enumerable: true,
687
+ configurable: true
688
+ });
575
689
  Object.defineProperty(GanttComponent.prototype, "renderedTreeListItems", {
576
690
  /**
577
691
  * @hidden
@@ -585,6 +699,19 @@ var GanttComponent = /** @class */ (function () {
585
699
  enumerable: true,
586
700
  configurable: true
587
701
  });
702
+ Object.defineProperty(GanttComponent.prototype, "viewItems", {
703
+ /**
704
+ * @hidden
705
+ */
706
+ get: function () {
707
+ if (!utils_1.isPresent(this.treeList)) {
708
+ return [];
709
+ }
710
+ return this.treeList.view.data;
711
+ },
712
+ enumerable: true,
713
+ configurable: true
714
+ });
588
715
  Object.defineProperty(GanttComponent.prototype, "filterMenu", {
589
716
  /**
590
717
  * @hidden
@@ -648,12 +775,12 @@ var GanttComponent = /** @class */ (function () {
648
775
  enumerable: true,
649
776
  configurable: true
650
777
  });
651
- Object.defineProperty(GanttComponent.prototype, "editDialogFormGroup", {
778
+ Object.defineProperty(GanttComponent.prototype, "isInEditMode", {
652
779
  /**
653
780
  * @hidden
654
781
  */
655
782
  get: function () {
656
- return this.editService.formGroup;
783
+ return this.showEditingDialog || this.showConfirmationDialog || this.treeList.isEditing();
657
784
  },
658
785
  enumerable: true,
659
786
  configurable: true
@@ -665,6 +792,14 @@ var GanttComponent = /** @class */ (function () {
665
792
  };
666
793
  GanttComponent.prototype.ngAfterViewInit = function () {
667
794
  this.updateTreeListMargin();
795
+ if (this.navigable) {
796
+ this.navigationService.initialize({
797
+ gantt: this,
798
+ host: this.hostElement.nativeElement,
799
+ treeListElement: this.treeList.wrapper.nativeElement,
800
+ timelineElement: this.timeline.timelineContent.nativeElement
801
+ });
802
+ }
668
803
  var leftContainer = this.treeList.wrapper.nativeElement.querySelector('kendo-treelist-list > div');
669
804
  this.scrollSyncService.registerElement(leftContainer, 'treelist');
670
805
  };
@@ -682,6 +817,34 @@ var GanttComponent = /** @class */ (function () {
682
817
  this.localizationSubscription.unsubscribe();
683
818
  }
684
819
  };
820
+ /**
821
+ * Focuses the last active cell or task in the Gantt.
822
+ * If no item has previously been focused, the first cell of the TreeList part will receive focus,
823
+ * ([see example]({% slug keyboard_navigation_gantt %}#toc-controlling-the-focus)).
824
+ */
825
+ GanttComponent.prototype.focus = function () {
826
+ if (this.navigable) {
827
+ this.navigationService.focusLastActiveItem();
828
+ }
829
+ };
830
+ /**
831
+ * Focuses the targeted cell in the TreeList part of the component,
832
+ * ([see example]({% slug keyboard_navigation_gantt %}#toc-controlling-the-focus)).
833
+ */
834
+ GanttComponent.prototype.focusCell = function (rowIndex, colIndex) {
835
+ if (this.navigable) {
836
+ this.navigationService.focusCell(rowIndex, colIndex);
837
+ }
838
+ };
839
+ /**
840
+ * Focuses the targeted task in the Timeline part of the component,
841
+ * ([see example]({% slug keyboard_navigation_gantt %}#toc-controlling-the-focus)).
842
+ */
843
+ GanttComponent.prototype.focusTask = function (taskIndex) {
844
+ if (this.navigable) {
845
+ this.navigationService.focusTask(taskIndex);
846
+ }
847
+ };
685
848
  /**
686
849
  * Applies the minimum possible width for the specified column,
687
850
  * so that the whole text fits without wrapping. This method expects the Gantt
@@ -747,8 +910,14 @@ var GanttComponent = /** @class */ (function () {
747
910
  * Opens the task editing dialog.
748
911
  */
749
912
  GanttComponent.prototype.editTask = function (dataItem, formGroup) {
913
+ var _this = this;
750
914
  if (!this.showEditingDialog) {
751
- this.editService.createEditDialog(dataItem, formGroup);
915
+ var taskId_1 = this.mapper.extractFromTask(dataItem, 'id');
916
+ var dependencies = this.dependencies.filter(function (item) {
917
+ return _this.mapper.extractFromDependency(item, 'toId') === taskId_1
918
+ || _this.mapper.extractFromDependency(item, 'fromId') === taskId_1;
919
+ });
920
+ this.editService.createEditDialog(dataItem, formGroup, dependencies);
752
921
  }
753
922
  };
754
923
  /**
@@ -765,6 +934,15 @@ var GanttComponent = /** @class */ (function () {
765
934
  GanttComponent.prototype.openConfirmationDialog = function () {
766
935
  this.showConfirmationDialog = true;
767
936
  };
937
+ /**
938
+ * @hidden
939
+ */
940
+ GanttComponent.prototype.handleConfirmationDialogClose = function () {
941
+ this.showConfirmationDialog = false;
942
+ if (this.navigable) {
943
+ this.focus();
944
+ }
945
+ };
768
946
  /**
769
947
  * Opens a cell for editing.
770
948
  */
@@ -850,7 +1028,7 @@ var GanttComponent = /** @class */ (function () {
850
1028
  if (kendo_angular_common_1.hasObservers(this.taskClick)) {
851
1029
  var taskIndex_1 = utils_1.getClosestTaskIndex(target, gantt);
852
1030
  var task_1 = this.renderedTreeListItems[taskIndex_1];
853
- this.zone.run(function () { return _this.emitTaskClick(event, task_1, taskIndex_1); });
1031
+ this.zone.run(function () { return _this.notifyTaskClick(event, task_1, taskIndex_1); });
854
1032
  }
855
1033
  };
856
1034
  /**
@@ -869,8 +1047,8 @@ var GanttComponent = /** @class */ (function () {
869
1047
  if ((kendo_angular_common_1.hasObservers(this.selectionChange) && !this.isSameSelection(selectionAction, task)) ||
870
1048
  kendo_angular_common_1.hasObservers(this.taskClick)) {
871
1049
  this.zone.run(function () {
872
- _this.emitSelectionChange(task, selectionAction);
873
- _this.emitTaskClick(event, task, taskIndex);
1050
+ _this.notifySelectionChange(task, selectionAction);
1051
+ _this.notifyTaskClick(event, task, taskIndex);
874
1052
  });
875
1053
  }
876
1054
  };
@@ -882,7 +1060,7 @@ var GanttComponent = /** @class */ (function () {
882
1060
  if (!utils_1.isPresent(this.lastTreeListCellClick) || event.target !== this.lastTreeListCellClick.originalEvent.target) {
883
1061
  return;
884
1062
  }
885
- this.editItem = util_1.getEditItem(this.lastTreeListCellClick.dataItem, this.treeList.view.data, this.mapper);
1063
+ this.editItem = utils_2.getEditItem(this.lastTreeListCellClick.dataItem, this.treeList.view.data, this.mapper);
886
1064
  if (kendo_angular_common_1.hasObservers(this.cellDblClick)) {
887
1065
  this.zone.run(function () {
888
1066
  _this.cellDblClick.emit({
@@ -908,7 +1086,7 @@ var GanttComponent = /** @class */ (function () {
908
1086
  }
909
1087
  var task = event.items.map(function (item) { return item.dataItem; })[0]; // single selection only currently available
910
1088
  var action = event.action;
911
- this.emitSelectionChange(task, action);
1089
+ this.notifySelectionChange(task, action);
912
1090
  };
913
1091
  /**
914
1092
  * @hidden
@@ -960,7 +1138,7 @@ var GanttComponent = /** @class */ (function () {
960
1138
  dataItem: task_2,
961
1139
  originalEvent: event,
962
1140
  sender: _this,
963
- rowIndex: taskIndex_2,
1141
+ index: taskIndex_2,
964
1142
  type: 'dblclick'
965
1143
  }); });
966
1144
  }
@@ -971,16 +1149,35 @@ var GanttComponent = /** @class */ (function () {
971
1149
  GanttComponent.prototype.getText = function (token) {
972
1150
  return this.localizationService.get(token);
973
1151
  };
974
- GanttComponent.prototype.emitTaskClick = function (event, dataItem, itemIndex) {
1152
+ /**
1153
+ * @hidden
1154
+ */
1155
+ GanttComponent.prototype.changeActiveView = function (view) {
1156
+ if (view !== this.activeView) {
1157
+ this.activeView = view;
1158
+ this.loadTimelineData();
1159
+ this.scrollSyncService.resetTimelineScrollLeft();
1160
+ this.activeViewChange.emit(view);
1161
+ }
1162
+ };
1163
+ /**
1164
+ * @hidden
1165
+ */
1166
+ GanttComponent.prototype.notifyTaskClick = function (event, dataItem, itemIndex) {
1167
+ // simulates the TreeList `cellClick` event triggered by enter press (type: 'click')
1168
+ var type = event instanceof KeyboardEvent ? 'click' : event.type;
975
1169
  this.taskClick.emit({
976
1170
  originalEvent: event,
977
1171
  dataItem: dataItem,
978
- rowIndex: itemIndex,
979
- type: event.type,
1172
+ index: itemIndex,
1173
+ type: type,
980
1174
  sender: this
981
1175
  });
982
1176
  };
983
- GanttComponent.prototype.emitSelectionChange = function (dataItem, action) {
1177
+ /**
1178
+ * @hidden
1179
+ */
1180
+ GanttComponent.prototype.notifySelectionChange = function (dataItem, action) {
984
1181
  if (this.isSameSelection(action, dataItem)) {
985
1182
  return;
986
1183
  }
@@ -991,6 +1188,30 @@ var GanttComponent = /** @class */ (function () {
991
1188
  });
992
1189
  this.treeList.updateView();
993
1190
  };
1191
+ /**
1192
+ * @hidden
1193
+ */
1194
+ GanttComponent.prototype.notifyTaskDelete = function (task) {
1195
+ this.editService.dataItem = task;
1196
+ this.taskDelete.emit({
1197
+ item: utils_2.getEditItem(task, this.treeList.view.data, this.mapper),
1198
+ sender: this
1199
+ });
1200
+ };
1201
+ /**
1202
+ * @hidden
1203
+ */
1204
+ GanttComponent.prototype.isSameSelection = function (action, dataItem) {
1205
+ return action === 'select' && this.isSelected(dataItem);
1206
+ };
1207
+ /**
1208
+ * @hidden
1209
+ */
1210
+ GanttComponent.prototype.getSelectionAction = function (_a, dataItem) {
1211
+ var ctrlKey = _a.ctrlKey, metaKey = _a.metaKey;
1212
+ var shouldToggleSelection = ctrlKey || metaKey;
1213
+ return (shouldToggleSelection && this.isSelected(dataItem)) ? 'remove' : 'select';
1214
+ };
994
1215
  GanttComponent.prototype.updateTreeListGroupClass = function (columns) {
995
1216
  if (columns === void 0) { columns = this.columns; }
996
1217
  if (!utils_1.isPresent(this.treeList)) {
@@ -1021,24 +1242,70 @@ var GanttComponent = /** @class */ (function () {
1021
1242
  }
1022
1243
  return this.views.find(function (view) { return view.type === _this.activeView; });
1023
1244
  };
1024
- GanttComponent.prototype.isSameSelection = function (action, dataItem) {
1025
- return action === 'select' && this.isSelected(dataItem);
1026
- };
1027
- GanttComponent.prototype.getSelectionAction = function (_a, dataItem) {
1028
- var ctrlKey = _a.ctrlKey, metaKey = _a.metaKey;
1029
- var shouldToggleSelection = ctrlKey || metaKey;
1030
- return (shouldToggleSelection && this.isSelected(dataItem)) ? 'remove' : 'select';
1031
- };
1032
1245
  GanttComponent.prototype.getFirstSelectedItem = function () {
1033
1246
  var isSelectedCallback = this.isSelected || default_callbacks_1.isSelected;
1034
1247
  var loadedItems = this.renderedTreeListItems || [];
1035
1248
  return loadedItems.find(isSelectedCallback);
1036
1249
  };
1250
+ GanttComponent.prototype.defaultValidateNewDependencyCallback = function (dependency) {
1251
+ var _this = this;
1252
+ var fromTaskId = this.mapper.extractFromDependency(dependency, 'fromId');
1253
+ var toTaskId = this.mapper.extractFromDependency(dependency, 'toId');
1254
+ var fromTask = this.treeList.view.data.find(function (task) {
1255
+ return _this.mapper.extractFromTask(task.data, 'id') === fromTaskId;
1256
+ });
1257
+ var toTask = this.treeList.view.data.find(function (task) {
1258
+ return _this.mapper.extractFromTask(task.data, 'id') === toTaskId;
1259
+ });
1260
+ // mark as invalid if the attempted dependency is lacking valid from- and to-tasks
1261
+ // or when the from- and to-tasks are actually the same task
1262
+ if (!utils_1.isPresent(fromTask) || !utils_1.isPresent(fromTask.data) ||
1263
+ !utils_1.isPresent(toTask) || !utils_1.isPresent(toTask.data) ||
1264
+ fromTask.data === toTask.data) {
1265
+ return false;
1266
+ }
1267
+ var tasksDependentOnOneAnother = this.dependencies.some(function (current) {
1268
+ var currentFromId = _this.mapper.extractFromDependency(current, 'fromId');
1269
+ var currentToId = _this.mapper.extractFromDependency(current, 'toId');
1270
+ return (fromTaskId === currentFromId && toTaskId === currentToId) ||
1271
+ (toTaskId === currentFromId && fromTaskId === currentToId);
1272
+ });
1273
+ // mark as invalid if the attempted dependency is trying to connect already dependent tasks
1274
+ // mark as invalid if the two tasks are in parent-child relationship
1275
+ if (tasksDependentOnOneAnother || utils_1.areParentChild(fromTask, toTask)) {
1276
+ return false;
1277
+ }
1278
+ var fromTaskStart = this.mapper.extractFromTask(fromTask.data, 'start');
1279
+ var fromTaskEnd = this.mapper.extractFromTask(fromTask.data, 'end');
1280
+ var toTaskStart = this.mapper.extractFromTask(toTask.data, 'start');
1281
+ var toTaskEnd = this.mapper.extractFromTask(toTask.data, 'end');
1282
+ // if the two tasks are available to be connected via a dependency,
1283
+ // check if their start and end time allow for the attempted dependency type
1284
+ switch (this.mapper.extractFromDependency(dependency, 'type')) {
1285
+ // finish to finish (FF) — the from-task ends before the to-task can end
1286
+ case models_1.DependencyType.FF:
1287
+ return fromTaskEnd <= toTaskEnd;
1288
+ // finish to start (FS) — the from-task ends before the to-task can begin
1289
+ case models_1.DependencyType.FS:
1290
+ return fromTaskEnd <= toTaskStart;
1291
+ // start to finish (SF) — the from-task begins before the to-task can end
1292
+ case models_1.DependencyType.SF:
1293
+ return fromTaskStart <= toTaskEnd;
1294
+ // start to start (SS) — the from-task begins before the to-task can begin
1295
+ case models_1.DependencyType.SS:
1296
+ return fromTaskStart <= toTaskStart;
1297
+ default: return false;
1298
+ }
1299
+ };
1037
1300
  var GanttComponent_1;
1038
1301
  tslib_1.__decorate([
1039
1302
  core_1.ViewChild(kendo_angular_treelist_1.TreeListComponent, { static: true }),
1040
1303
  tslib_1.__metadata("design:type", kendo_angular_treelist_1.TreeListComponent)
1041
1304
  ], GanttComponent.prototype, "treeList", void 0);
1305
+ tslib_1.__decorate([
1306
+ core_1.ViewChild(gantt_timeline_component_1.GanttTimelineComponent, { static: false }),
1307
+ tslib_1.__metadata("design:type", gantt_timeline_component_1.GanttTimelineComponent)
1308
+ ], GanttComponent.prototype, "timeline", void 0);
1042
1309
  tslib_1.__decorate([
1043
1310
  core_1.ContentChild(task_content_template_directive_1.GanttTaskContentTemplateDirective, { static: true }),
1044
1311
  tslib_1.__metadata("design:type", task_content_template_directive_1.GanttTaskContentTemplateDirective)
@@ -1055,6 +1322,24 @@ var GanttComponent = /** @class */ (function () {
1055
1322
  core_1.ContentChildren(toolbar_template_directive_1.ToolbarTemplateDirective),
1056
1323
  tslib_1.__metadata("design:type", core_1.QueryList)
1057
1324
  ], GanttComponent.prototype, "toolbarTemplateChildren", void 0);
1325
+ tslib_1.__decorate([
1326
+ core_1.Input('aria-roledescription'),
1327
+ tslib_1.__metadata("design:type", String)
1328
+ ], GanttComponent.prototype, "roleDescription", void 0);
1329
+ tslib_1.__decorate([
1330
+ core_1.HostBinding('attr.aria-roledescription'),
1331
+ tslib_1.__metadata("design:type", String),
1332
+ tslib_1.__metadata("design:paramtypes", [])
1333
+ ], GanttComponent.prototype, "hostRoleDescriptionAttr", null);
1334
+ tslib_1.__decorate([
1335
+ core_1.Input('role'),
1336
+ tslib_1.__metadata("design:type", String)
1337
+ ], GanttComponent.prototype, "role", void 0);
1338
+ tslib_1.__decorate([
1339
+ core_1.HostBinding('attr.role'),
1340
+ tslib_1.__metadata("design:type", String),
1341
+ tslib_1.__metadata("design:paramtypes", [])
1342
+ ], GanttComponent.prototype, "hostRoleAttr", null);
1058
1343
  tslib_1.__decorate([
1059
1344
  core_1.HostBinding('class.k-gantt'),
1060
1345
  tslib_1.__metadata("design:type", Boolean)
@@ -1097,6 +1382,10 @@ var GanttComponent = /** @class */ (function () {
1097
1382
  core_1.Input(),
1098
1383
  tslib_1.__metadata("design:type", Function)
1099
1384
  ], GanttComponent.prototype, "isSelected", void 0);
1385
+ tslib_1.__decorate([
1386
+ core_1.Input(),
1387
+ tslib_1.__metadata("design:type", Function)
1388
+ ], GanttComponent.prototype, "validateNewDependency", void 0);
1100
1389
  tslib_1.__decorate([
1101
1390
  core_1.Output(),
1102
1391
  tslib_1.__metadata("design:type", core_1.EventEmitter)
@@ -1112,12 +1401,14 @@ var GanttComponent = /** @class */ (function () {
1112
1401
  ], GanttComponent.prototype, "toolbarSettings", null);
1113
1402
  tslib_1.__decorate([
1114
1403
  core_1.Input(),
1115
- tslib_1.__metadata("design:type", Function)
1116
- ], GanttComponent.prototype, "fetchChildren", void 0);
1404
+ tslib_1.__metadata("design:type", Function),
1405
+ tslib_1.__metadata("design:paramtypes", [Function])
1406
+ ], GanttComponent.prototype, "fetchChildren", null);
1117
1407
  tslib_1.__decorate([
1118
1408
  core_1.Input(),
1119
- tslib_1.__metadata("design:type", Function)
1120
- ], GanttComponent.prototype, "hasChildren", void 0);
1409
+ tslib_1.__metadata("design:type", Function),
1410
+ tslib_1.__metadata("design:paramtypes", [Function])
1411
+ ], GanttComponent.prototype, "hasChildren", null);
1121
1412
  tslib_1.__decorate([
1122
1413
  core_1.Input(),
1123
1414
  tslib_1.__metadata("design:type", Array)
@@ -1154,6 +1445,10 @@ var GanttComponent = /** @class */ (function () {
1154
1445
  core_1.Input(),
1155
1446
  tslib_1.__metadata("design:type", Number)
1156
1447
  ], GanttComponent.prototype, "workWeekEnd", void 0);
1448
+ tslib_1.__decorate([
1449
+ core_1.Input(),
1450
+ tslib_1.__metadata("design:type", Boolean)
1451
+ ], GanttComponent.prototype, "navigable", void 0);
1157
1452
  tslib_1.__decorate([
1158
1453
  core_1.Input(),
1159
1454
  tslib_1.__metadata("design:type", Object),
@@ -1194,6 +1489,11 @@ var GanttComponent = /** @class */ (function () {
1194
1489
  core_1.Input(),
1195
1490
  tslib_1.__metadata("design:type", Boolean)
1196
1491
  ], GanttComponent.prototype, "columnsResizable", void 0);
1492
+ tslib_1.__decorate([
1493
+ core_1.Input(),
1494
+ tslib_1.__metadata("design:type", Object),
1495
+ tslib_1.__metadata("design:paramtypes", [Object])
1496
+ ], GanttComponent.prototype, "dragScrollSettings", null);
1197
1497
  tslib_1.__decorate([
1198
1498
  core_1.Output(),
1199
1499
  tslib_1.__metadata("design:type", core_1.EventEmitter)
@@ -1234,6 +1534,10 @@ var GanttComponent = /** @class */ (function () {
1234
1534
  core_1.Output(),
1235
1535
  tslib_1.__metadata("design:type", core_1.EventEmitter)
1236
1536
  ], GanttComponent.prototype, "taskAdd", void 0);
1537
+ tslib_1.__decorate([
1538
+ core_1.Output(),
1539
+ tslib_1.__metadata("design:type", core_1.EventEmitter)
1540
+ ], GanttComponent.prototype, "dependencyAdd", void 0);
1237
1541
  tslib_1.__decorate([
1238
1542
  core_1.Output(),
1239
1543
  tslib_1.__metadata("design:type", core_1.EventEmitter)
@@ -1291,6 +1595,7 @@ var GanttComponent = /** @class */ (function () {
1291
1595
  selector: 'kendo-gantt',
1292
1596
  exportAs: 'kendoGantt',
1293
1597
  providers: [
1598
+ gantt_localization_service_1.GanttLocalizationService,
1294
1599
  kendo_angular_l10n_1.LocalizationService,
1295
1600
  {
1296
1601
  provide: kendo_angular_treelist_1.DataBoundTreeComponent,
@@ -1308,9 +1613,11 @@ var GanttComponent = /** @class */ (function () {
1308
1613
  dependency_dom_service_1.DependencyDomService,
1309
1614
  mapping_service_1.MappingService,
1310
1615
  option_changes_service_1.OptionChangesService,
1311
- edit_service_1.EditService
1616
+ edit_service_1.EditService,
1617
+ timeline_scroll_service_1.TimelineScrollService,
1618
+ navigation_service_1.NavigationService
1312
1619
  ],
1313
- 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 "
1620
+ 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 "
1314
1621
  }),
1315
1622
  tslib_1.__metadata("design:paramtypes", [timeline_view_service_1.TimelineViewService,
1316
1623
  scroll_sync_service_1.ScrollSyncService,
@@ -1321,7 +1628,8 @@ var GanttComponent = /** @class */ (function () {
1321
1628
  edit_service_1.EditService,
1322
1629
  kendo_angular_l10n_1.LocalizationService,
1323
1630
  core_1.ElementRef,
1324
- core_1.NgZone])
1631
+ core_1.NgZone,
1632
+ navigation_service_1.NavigationService])
1325
1633
  ], GanttComponent);
1326
1634
  return GanttComponent;
1327
1635
  }());