@progress/kendo-angular-gantt 0.2.1-dev.202112091741 → 0.3.0-dev.202201131518

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 (158) hide show
  1. package/dist/cdn/js/kendo-angular-gantt.js +2 -2
  2. package/dist/cdn/main.js +4 -4
  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/add-task.component.js +94 -0
  8. package/dist/es/editing/dependencies-table.component.js +131 -0
  9. package/dist/es/editing/edit-dialog.component.js +37 -6
  10. package/dist/es/editing/edit.service.js +89 -7
  11. package/dist/es/editing/task-fields.component.js +43 -0
  12. package/dist/es/editing/{util.js → utils.js} +0 -0
  13. package/dist/es/expanded-state/expandable.directive.js +4 -6
  14. package/dist/es/gantt.component.js +230 -45
  15. package/dist/es/gantt.module.js +36 -10
  16. package/dist/es/index.js +8 -1
  17. package/dist/es/localization/gantt-localization.service.js +26 -0
  18. package/dist/es/localization/messages.js +45 -1
  19. package/dist/es/main.js +1 -0
  20. package/dist/es/models/dependency-type.enum.js +16 -0
  21. package/dist/es/models/events/{add-event.interface.js → dependency-add-event.interface.js} +0 -0
  22. package/dist/es/models/events/{edit-event.interface.js → task-add-event.interface.js} +0 -0
  23. package/dist/es/models/models.js +1 -0
  24. package/dist/es/models/{events/remove-event.interface.js → toolbar-settings.js} +0 -0
  25. package/dist/es/models/{toolbar-position.js → view-item.interface.js} +0 -0
  26. package/dist/es/package-metadata.js +1 -1
  27. package/dist/es/rendering/gantt-milestone-task.component.js +7 -4
  28. package/dist/es/rendering/gantt-summary-task.component.js +7 -4
  29. package/dist/es/rendering/gantt-task-base.js +30 -19
  30. package/dist/es/rendering/gantt-task.component.js +8 -6
  31. package/dist/es/rendering/gantt-tasks-table-body.component.js +5 -1
  32. package/dist/es/scrolling/drag-scroll-settings.js +20 -0
  33. package/dist/es/scrolling/timeline-scroll.directive.js +89 -0
  34. package/dist/es/scrolling/timeline-scroll.service.js +39 -0
  35. package/dist/es/scrolling/utils.js +80 -0
  36. package/dist/es/timeline/gantt-timeline.component.js +45 -3
  37. package/dist/es/toolbar/toolbar.component.js +9 -1
  38. package/dist/es/utils.js +143 -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/add-task.component.d.ts +45 -0
  48. package/dist/es2015/editing/add-task.component.js +102 -0
  49. package/dist/es2015/editing/dependencies-table.component.d.ts +39 -0
  50. package/dist/es2015/editing/dependencies-table.component.js +160 -0
  51. package/dist/es2015/editing/edit-dialog.component.d.ts +10 -3
  52. package/dist/es2015/editing/edit-dialog.component.js +55 -33
  53. package/dist/es2015/editing/edit.service.d.ts +24 -3
  54. package/dist/es2015/editing/edit.service.js +78 -10
  55. package/dist/es2015/editing/task-fields.component.d.ts +22 -0
  56. package/dist/es2015/editing/task-fields.component.js +67 -0
  57. package/dist/es2015/editing/{util.d.ts → utils.d.ts} +0 -0
  58. package/dist/es2015/editing/{util.js → utils.js} +0 -0
  59. package/dist/es2015/expanded-state/expandable.directive.d.ts +1 -2
  60. package/dist/es2015/expanded-state/expandable.directive.js +2 -7
  61. package/dist/es2015/gantt.component.d.ts +62 -18
  62. package/dist/es2015/gantt.component.js +290 -43
  63. package/dist/es2015/gantt.module.js +36 -10
  64. package/dist/es2015/index.d.ts +8 -1
  65. package/dist/es2015/index.js +8 -1
  66. package/dist/es2015/index.metadata.json +1 -1
  67. package/dist/es2015/localization/{treelist-messages.directive.d.ts → gantt-localization.service.d.ts} +4 -3
  68. package/dist/es2015/localization/gantt-localization.service.js +25 -0
  69. package/dist/es2015/localization/messages.d.ts +46 -2
  70. package/dist/es2015/localization/messages.js +45 -1
  71. package/dist/es2015/main.d.ts +1 -0
  72. package/dist/es2015/main.js +1 -0
  73. package/dist/es2015/models/dependency-type.enum.d.ts +1 -1
  74. package/dist/es2015/models/dependency-type.enum.js +16 -0
  75. package/dist/es2015/models/events/dependency-add-event.interface.d.ts +26 -0
  76. package/dist/es2015/models/events/{add-event.interface.js → dependency-add-event.interface.js} +0 -0
  77. package/dist/es2015/models/events/task-add-event.interface.d.ts +31 -0
  78. package/dist/es2015/models/events/{edit-event.interface.js → task-add-event.interface.js} +0 -0
  79. package/dist/es2015/models/events/task-edit-event.interface.d.ts +17 -4
  80. package/dist/es2015/models/models.d.ts +4 -3
  81. package/dist/es2015/models/models.js +1 -0
  82. package/dist/es2015/models/toolbar-settings.d.ts +29 -0
  83. package/dist/es2015/models/{events/remove-event.interface.js → toolbar-settings.js} +0 -0
  84. package/dist/es2015/models/view-item.interface.d.ts +35 -0
  85. package/dist/es2015/models/{toolbar-position.js → view-item.interface.js} +0 -0
  86. package/dist/es2015/package-metadata.js +1 -1
  87. package/dist/es2015/rendering/gantt-milestone-task.component.d.ts +2 -1
  88. package/dist/es2015/rendering/gantt-milestone-task.component.js +18 -5
  89. package/dist/es2015/rendering/gantt-summary-task.component.d.ts +2 -1
  90. package/dist/es2015/rendering/gantt-summary-task.component.js +18 -5
  91. package/dist/es2015/rendering/gantt-task-base.d.ts +11 -5
  92. package/dist/es2015/rendering/gantt-task-base.js +30 -19
  93. package/dist/es2015/rendering/gantt-task.component.d.ts +2 -1
  94. package/dist/es2015/rendering/gantt-task.component.js +19 -7
  95. package/dist/es2015/rendering/gantt-tasks-table-body.component.d.ts +1 -0
  96. package/dist/es2015/rendering/gantt-tasks-table-body.component.js +10 -3
  97. package/dist/es2015/scrolling/drag-scroll-settings.d.ts +47 -0
  98. package/dist/es2015/scrolling/drag-scroll-settings.js +20 -0
  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 +25 -2
  106. package/dist/es2015/timeline/gantt-timeline.component.js +56 -3
  107. package/dist/es2015/toolbar/toolbar-template.directive.d.ts +1 -1
  108. package/dist/es2015/toolbar/toolbar.component.d.ts +2 -0
  109. package/dist/es2015/toolbar/toolbar.component.js +10 -0
  110. package/dist/es2015/utils.d.ts +70 -8
  111. package/dist/es2015/utils.js +143 -12
  112. package/dist/fesm2015/index.js +1981 -424
  113. package/dist/fesm5/index.js +1784 -391
  114. package/dist/npm/common/touch-enabled.js +11 -0
  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/add-task.component.js +96 -0
  119. package/dist/npm/editing/dependencies-table.component.js +133 -0
  120. package/dist/npm/editing/edit-dialog.component.js +36 -5
  121. package/dist/npm/editing/edit.service.js +88 -6
  122. package/dist/npm/editing/task-fields.component.js +45 -0
  123. package/dist/npm/editing/{util.js → utils.js} +0 -0
  124. package/dist/npm/expanded-state/expandable.directive.js +3 -5
  125. package/dist/npm/gantt.component.js +231 -46
  126. package/dist/npm/gantt.module.js +34 -8
  127. package/dist/npm/index.js +16 -2
  128. package/dist/npm/localization/gantt-localization.service.js +28 -0
  129. package/dist/npm/localization/messages.js +45 -1
  130. package/dist/npm/main.js +2 -0
  131. package/dist/npm/models/dependency-type.enum.js +16 -0
  132. package/dist/npm/models/events/{add-event.interface.js → dependency-add-event.interface.js} +0 -0
  133. package/dist/npm/models/events/{edit-event.interface.js → task-add-event.interface.js} +0 -0
  134. package/dist/npm/models/models.js +2 -0
  135. package/dist/npm/models/{events/remove-event.interface.js → toolbar-settings.js} +0 -0
  136. package/dist/npm/models/{toolbar-position.js → view-item.interface.js} +0 -0
  137. package/dist/npm/package-metadata.js +1 -1
  138. package/dist/npm/rendering/gantt-milestone-task.component.js +6 -3
  139. package/dist/npm/rendering/gantt-summary-task.component.js +6 -3
  140. package/dist/npm/rendering/gantt-task-base.js +30 -19
  141. package/dist/npm/rendering/gantt-task.component.js +7 -5
  142. package/dist/npm/rendering/gantt-tasks-table-body.component.js +5 -1
  143. package/dist/npm/scrolling/drag-scroll-settings.js +22 -0
  144. package/dist/npm/scrolling/timeline-scroll.directive.js +91 -0
  145. package/dist/npm/scrolling/timeline-scroll.service.js +41 -0
  146. package/dist/npm/scrolling/utils.js +83 -0
  147. package/dist/npm/timeline/gantt-timeline.component.js +44 -2
  148. package/dist/npm/toolbar/toolbar.component.js +9 -1
  149. package/dist/npm/utils.js +143 -12
  150. package/dist/systemjs/kendo-angular-gantt.js +1 -1
  151. package/package.json +9 -6
  152. package/dist/es/localization/treelist-messages.directive.js +0 -31
  153. package/dist/es2015/localization/treelist-messages.directive.js +0 -29
  154. package/dist/es2015/models/events/add-event.interface.d.ts +0 -16
  155. package/dist/es2015/models/events/edit-event.interface.d.ts +0 -19
  156. package/dist/es2015/models/events/remove-event.interface.d.ts +0 -16
  157. package/dist/es2015/models/toolbar-position.d.ts +0 -9
  158. package/dist/npm/localization/treelist-messages.directive.js +0 -33
@@ -13,6 +13,8 @@ import { packageMetadata } from './package-metadata';
13
13
  import { anyChanged, hasObservers } from '@progress/kendo-angular-common';
14
14
  import { GanttColumnBase } from './columns/columns';
15
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';
16
18
  import { TimelineViewService } from './timeline/timeline-view.service';
17
19
  import { TimelineDayViewService } from './timeline/timeline-day-view.service';
18
20
  import { TimelineWeekViewService } from './timeline/timeline-week-view.service';
@@ -22,17 +24,25 @@ import { DependencyDomService } from './dependencies/dependency-dom.service';
22
24
  import { MappingService } from './common/mapping.service';
23
25
  import { OptionChangesService } from './common/option-changes.service';
24
26
  import { EditService } from './editing/edit.service';
25
- import { LocalizationService } from '@progress/kendo-angular-l10n';
26
- 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 { areParentChild, getClosestTaskIndex, isClearButton, isColumnGroup, isPresent, isTask, normalizeGanttData, scrollbarWidth } from './utils';
27
30
  import { DEFAULT_TIMELINE_PANE_SETTINGS, DEFAULT_TREELIST_PANE_SETTINGS } from './models/splitter-pane-options.interface';
28
31
  import { GanttTaskTemplateDirective } from './template-directives/task-template.directive';
29
32
  import { GanttSummaryTaskTemplateDirective } from './template-directives/summary-task-template.directive';
30
33
  import { GanttTaskContentTemplateDirective } from './template-directives/task-content-template.directive';
31
34
  import { ToolbarTemplateDirective } from './toolbar/toolbar-template.directive';
35
+ import { GanttTimelineComponent } from './timeline/gantt-timeline.component';
32
36
  import { ViewBase } from './timeline/view-base';
33
- import { getEditItem } from './editing/util';
37
+ import { getEditItem } from './editing/utils';
34
38
  const TREELIST_GROUP_COLUMNS_CLASS = 'k-gantt-treelist-nested-columns';
35
39
  const DEFAULT_VIEW = 'week';
40
+ const DEFAULT_DRAG_SCROLL_SETTINGS = {
41
+ enabled: true,
42
+ step: 3,
43
+ interval: 1,
44
+ threshold: 10
45
+ };
36
46
  /**
37
47
  * Represents the Kendo UI Gantt component for Angular.
38
48
  *
@@ -118,11 +128,22 @@ let GanttComponent = GanttComponent_1 = class GanttComponent {
118
128
  this.zone = zone;
119
129
  this.hostClasses = true;
120
130
  /**
121
- * Provides a callback that determines if the given task is selected ([see example]({% slug selection_gantt %}#toc-custom-selection))
131
+ * Specifies a callback that determines if the given task is selected ([see example]({% slug selection_gantt %}#toc-custom-selection)).
122
132
  *
123
133
  * > The [`selectable`]({% slug api_gantt_ganttcomponent %}#toc-selectable) prop has to be set to `true` in order for this callback to be executed.
124
134
  */
125
135
  this.isSelected = isSelected;
136
+ /**
137
+ * Specifies a callback that determines if a new dependency is valid.
138
+ * Used when evaluating if an attempt to create a new dependency will result in a valid link between the two tasks
139
+ * [see example]({% slug editing_drag_create_dependencies_gantt %}#toc-validation).
140
+ *
141
+ * By defalut, dependencies are deemed invalid when:
142
+ * - The two tasks are in a parent-child relationship.
143
+ * - The two tasks are already dependent on one another. Only one dependency is allowed per pair.
144
+ * - The start or end times of the two tasks are incompatible with the attempted dependency type.
145
+ */
146
+ this.validateNewDependency = this.defaultValidateNewDependencyCallback.bind(this);
126
147
  /**
127
148
  * Fires when the Gantt selection is changed through user interaction.
128
149
  *
@@ -138,25 +159,6 @@ let GanttComponent = GanttComponent_1 = class GanttComponent {
138
159
  * > When applied, the [`SelectableDirective`]({% slug api_gantt_selectabledirective %}) sets `selectable` to `true` internally.
139
160
  */
140
161
  this.selectable = false;
141
- /**
142
- * The position of the toolbar.
143
- *
144
- * The possible values are:
145
- * - `top`—Positions the toolbar above the Gantt panes.
146
- * - `bottom`—Positions the toolbar below the Gantt panes.
147
- * - `both`—Displays two toolbar instances. Positions the first one above,
148
- * and the second one - below the Gantt panes.
149
- * - `none`—No toolbar is rendered.
150
- */
151
- this.toolbarPosition = 'top';
152
- /**
153
- * Gets or sets the callback function that retrieves the child items for a particular item.
154
- */
155
- this.fetchChildren = fetchChildren;
156
- /**
157
- * Gets or sets the callback function that indicates if a particular item has child items.
158
- */
159
- this.hasChildren = hasChildren;
160
162
  /**
161
163
  * Defines the dependencies that will be drawn between the rendered tasks.
162
164
  *
@@ -258,6 +260,15 @@ let GanttComponent = GanttComponent_1 = class GanttComponent {
258
260
  * Fires when the user saves an edited task.
259
261
  */
260
262
  this.save = new EventEmitter();
263
+ /**
264
+ * Fires when the user adds a task.
265
+ */
266
+ this.taskAdd = new EventEmitter();
267
+ /**
268
+ * Fires when the user adds a dependency via dragging
269
+ * [see example]({% slug editing_drag_create_dependencies_gantt %}#toc-basic-concepts).
270
+ */
271
+ this.dependencyAdd = new EventEmitter();
261
272
  /**
262
273
  * Fires when the sorting of the Gantt is changed.
263
274
  * You have to handle the event yourself and sort the data.
@@ -314,6 +325,15 @@ let GanttComponent = GanttComponent_1 = class GanttComponent {
314
325
  * Fires when a task is clicked.
315
326
  */
316
327
  this.taskClick = new EventEmitter();
328
+ /**
329
+ * @hidden
330
+ *
331
+ * Specifies whether the dependency drag clues will be rendered.
332
+ * Set internally by the dependency-drag-create directive.
333
+ *
334
+ * @default false
335
+ */
336
+ this.renderDependencyDragClues = false;
317
337
  /**
318
338
  * @hidden
319
339
  *
@@ -330,11 +350,19 @@ let GanttComponent = GanttComponent_1 = class GanttComponent {
330
350
  this.showConfirmationDialog = false;
331
351
  this._columns = new QueryList();
332
352
  this._data = [];
353
+ this._dragScrollSettings = Object.assign({}, DEFAULT_DRAG_SCROLL_SETTINGS);
333
354
  this._timelinePaneOptions = Object.assign({}, DEFAULT_TIMELINE_PANE_SETTINGS);
334
355
  this._treeListPaneOptions = Object.assign({}, DEFAULT_TREELIST_PANE_SETTINGS);
335
356
  this._rowClass = rowClassCallback;
336
357
  this._taskClass = taskClassCallback;
337
358
  this._activeView = DEFAULT_VIEW;
359
+ this._toolbarSettings = {
360
+ position: 'top',
361
+ addTaskTool: 'none',
362
+ viewSelectorTool: 'top'
363
+ };
364
+ this._fetchChildren = fetchChildren;
365
+ this._hasChildren = hasChildren;
338
366
  this.rtl = false;
339
367
  this.optionChangesSubscriptions = new Subscription();
340
368
  this.editServiceSubscription = new Subscription();
@@ -345,16 +373,26 @@ let GanttComponent = GanttComponent_1 = class GanttComponent {
345
373
  this.optionChangesSubscriptions.add(this.optionChangesService.columnChanges.subscribe(() => {
346
374
  this.treeList.columns.notifyOnChanges();
347
375
  }));
376
+ this.editService.getSelectedItem = this.getFirstSelectedItem.bind(this);
348
377
  this.editServiceSubscription.add(this.editService.showEditingDialog.subscribe(show => this.showEditingDialog = show));
349
378
  this.editServiceSubscription.add(this.editService.showConfirmationDialog.subscribe(() => this.taskDelete.emit()));
350
379
  this.editServiceSubscription.add(this.editService.editEvent.subscribe(args => {
351
380
  this[args.editResultType].emit({
352
- formGroup: args.formGroup,
381
+ taskFormGroup: args.taskFormGroup,
353
382
  item: getEditItem(args.dataItem, this.treeList.view.data, this.mapper),
383
+ dependencies: args.dependencies,
354
384
  sender: this
355
385
  });
356
386
  this.showConfirmationDialog = this.showEditingDialog = false;
357
- this.editService.dataItem = this.editService.formGroup = null;
387
+ this.editService.dataItem = this.editService.taskFormGroup = null;
388
+ this.updateView();
389
+ }));
390
+ this.editServiceSubscription.add(this.editService.addEvent.subscribe(args => {
391
+ const selectedItem = this.getFirstSelectedItem();
392
+ this.taskAdd.emit({
393
+ actionType: args.actionType,
394
+ selectedItem: selectedItem ? getEditItem(selectedItem, this.treeList.view.data, this.mapper) : null
395
+ });
358
396
  this.updateView();
359
397
  }));
360
398
  this.localizationSubscription = this.localizationService.changes.subscribe(({ rtl }) => {
@@ -430,6 +468,49 @@ let GanttComponent = GanttComponent_1 = class GanttComponent {
430
468
  get data() {
431
469
  return this._data;
432
470
  }
471
+ /**
472
+ * The toolbar configuration. Defines the position and content of the toolbar(s).
473
+ * The available properties are `position`, `addTaskTool`, and `viewSelectorTool`.
474
+ * All are optional and default to `top`.
475
+ *
476
+ * The possible values for each option are:
477
+ * - `top`—Positions the toolbar above the Gantt panes. Renders the respective tool in the top toolbar.
478
+ * - `bottom`—Positions the toolbar below the Gantt panes. Renders the respective tool in the bottom toolbar.
479
+ * - `both`—Displays two toolbar instances. Positions the first one above,
480
+ * and the second one - below the Gantt panes. Renders the respective tool in the both toolbars.
481
+ * - `none`—No toolbar is rendered when used for setting `position`.
482
+ * No add task or view selector tool is rendered when used for setting `addTaskTool` or `viewSelectorTool`.
483
+ */
484
+ set toolbarSettings(value) {
485
+ this._toolbarSettings = {
486
+ position: value.position || 'top',
487
+ addTaskTool: value.addTaskTool || 'none',
488
+ viewSelectorTool: value.viewSelectorTool || 'top'
489
+ };
490
+ }
491
+ get toolbarSettings() {
492
+ return this._toolbarSettings;
493
+ }
494
+ /**
495
+ * Gets or sets the callback function that retrieves the child items for a particular item.
496
+ */
497
+ set fetchChildren(fn) {
498
+ this._fetchChildren = fn;
499
+ this.editService.fetchChildren = fn;
500
+ }
501
+ get fetchChildren() {
502
+ return this._fetchChildren;
503
+ }
504
+ /**
505
+ * Gets or sets the callback function that indicates if a particular item has child items.
506
+ */
507
+ set hasChildren(fn) {
508
+ this._hasChildren = fn;
509
+ this.editService.hasChildren = fn;
510
+ }
511
+ get hasChildren() {
512
+ return this._hasChildren;
513
+ }
433
514
  /**
434
515
  * The options of the timeline splitter pane. By default the pane is `collapsible`,
435
516
  * `resizable`, not `collapsed`, and its `size` is `'50%'`.
@@ -485,6 +566,17 @@ let GanttComponent = GanttComponent_1 = class GanttComponent {
485
566
  get taskIdField() {
486
567
  return this.mapper.taskFields.id;
487
568
  }
569
+ /**
570
+ * Specifies the settings for auto-scrolling during dragging
571
+ * when the pointer moves outside of the container bounderies
572
+ * [see example]({% slug editing_drag_create_dependencies_gantt %}#toc-auto-scrolling).
573
+ */
574
+ set dragScrollSettings(settings) {
575
+ this._dragScrollSettings = Object.assign({}, DEFAULT_DRAG_SCROLL_SETTINGS, settings);
576
+ }
577
+ get dragScrollSettings() {
578
+ return this._dragScrollSettings;
579
+ }
488
580
  /**
489
581
  * @hidden
490
582
  */
@@ -537,12 +629,6 @@ let GanttComponent = GanttComponent_1 = class GanttComponent {
537
629
  get viewTypes() {
538
630
  return this.views.map(view => view.type);
539
631
  }
540
- /**
541
- * @hidden
542
- */
543
- get editDialogFormGroup() {
544
- return this.editService.formGroup;
545
- }
546
632
  ngOnChanges(changes) {
547
633
  if (anyChanged(['data', 'activeView', 'workWeekStart', 'workWeekEnd', 'workDayStart', 'workDayEnd'], changes)) {
548
634
  this.loadTimelineData();
@@ -631,7 +717,10 @@ let GanttComponent = GanttComponent_1 = class GanttComponent {
631
717
  */
632
718
  editTask(dataItem, formGroup) {
633
719
  if (!this.showEditingDialog) {
634
- this.editService.createEditDialog(dataItem, formGroup);
720
+ const taskId = this.mapper.extractFromTask(dataItem, 'id');
721
+ const dependencies = this.dependencies.filter(item => this.mapper.extractFromDependency(item, 'toId') === taskId
722
+ || this.mapper.extractFromDependency(item, 'fromId') === taskId);
723
+ this.editService.createEditDialog(dataItem, formGroup, dependencies);
635
724
  }
636
725
  }
637
726
  /**
@@ -704,7 +793,7 @@ let GanttComponent = GanttComponent_1 = class GanttComponent {
704
793
  * @hidden
705
794
  */
706
795
  showToolbar(position) {
707
- return this.toolbarPosition !== 'none' && ([position, 'both'].indexOf(this.toolbarPosition) > -1);
796
+ return this.toolbarSettings.position !== 'none' && ([position, 'both'].indexOf(this.toolbarSettings.position) > -1);
708
797
  }
709
798
  /**
710
799
  * @hidden
@@ -903,11 +992,65 @@ let GanttComponent = GanttComponent_1 = class GanttComponent {
903
992
  const shouldToggleSelection = ctrlKey || metaKey;
904
993
  return (shouldToggleSelection && this.isSelected(dataItem)) ? 'remove' : 'select';
905
994
  }
995
+ getFirstSelectedItem() {
996
+ const isSelectedCallback = this.isSelected || isSelected;
997
+ const loadedItems = this.renderedTreeListItems || [];
998
+ return loadedItems.find(isSelectedCallback);
999
+ }
1000
+ defaultValidateNewDependencyCallback(dependency) {
1001
+ const fromTaskId = this.mapper.extractFromDependency(dependency, 'fromId');
1002
+ const toTaskId = this.mapper.extractFromDependency(dependency, 'toId');
1003
+ const fromTask = this.treeList.view.data.find(task => this.mapper.extractFromTask(task.data, 'id') === fromTaskId);
1004
+ const toTask = this.treeList.view.data.find(task => this.mapper.extractFromTask(task.data, 'id') === toTaskId);
1005
+ // mark as invalid if the attempted dependency is lacking valid from- and to-tasks
1006
+ // or when the from- and to-tasks are actually the same task
1007
+ if (!isPresent(fromTask) || !isPresent(fromTask.data) ||
1008
+ !isPresent(toTask) || !isPresent(toTask.data) ||
1009
+ fromTask.data === toTask.data) {
1010
+ return false;
1011
+ }
1012
+ const tasksDependentOnOneAnother = this.dependencies.some(current => {
1013
+ const currentFromId = this.mapper.extractFromDependency(current, 'fromId');
1014
+ const currentToId = this.mapper.extractFromDependency(current, 'toId');
1015
+ return (fromTaskId === currentFromId && toTaskId === currentToId) ||
1016
+ (toTaskId === currentFromId && fromTaskId === currentToId);
1017
+ });
1018
+ // mark as invalid if the attempted dependency is trying to connect already dependent tasks
1019
+ // mark as invalid if the two tasks are in parent-child relationship
1020
+ if (tasksDependentOnOneAnother || areParentChild(fromTask, toTask)) {
1021
+ return false;
1022
+ }
1023
+ const fromTaskStart = this.mapper.extractFromTask(fromTask.data, 'start');
1024
+ const fromTaskEnd = this.mapper.extractFromTask(fromTask.data, 'end');
1025
+ const toTaskStart = this.mapper.extractFromTask(toTask.data, 'start');
1026
+ const toTaskEnd = this.mapper.extractFromTask(toTask.data, 'end');
1027
+ // if the two tasks are available to be connected via a dependency,
1028
+ // check if their start and end time allow for the attempted dependency type
1029
+ switch (this.mapper.extractFromDependency(dependency, 'type')) {
1030
+ // finish to finish (FF) — the from-task ends before the to-task can end
1031
+ case DependencyType.FF:
1032
+ return fromTaskEnd <= toTaskEnd;
1033
+ // finish to start (FS) — the from-task ends before the to-task can begin
1034
+ case DependencyType.FS:
1035
+ return fromTaskEnd <= toTaskStart;
1036
+ // start to finish (SF) — the from-task begins before the to-task can end
1037
+ case DependencyType.SF:
1038
+ return fromTaskStart <= toTaskEnd;
1039
+ // start to start (SS) — the from-task begins before the to-task can begin
1040
+ case DependencyType.SS:
1041
+ return fromTaskStart <= toTaskStart;
1042
+ default: return false;
1043
+ }
1044
+ }
906
1045
  };
907
1046
  tslib_1.__decorate([
908
1047
  ViewChild(TreeListComponent, { static: true }),
909
1048
  tslib_1.__metadata("design:type", TreeListComponent)
910
1049
  ], GanttComponent.prototype, "treeList", void 0);
1050
+ tslib_1.__decorate([
1051
+ ViewChild(GanttTimelineComponent, { static: false }),
1052
+ tslib_1.__metadata("design:type", GanttTimelineComponent)
1053
+ ], GanttComponent.prototype, "timeline", void 0);
911
1054
  tslib_1.__decorate([
912
1055
  ContentChild(GanttTaskContentTemplateDirective, { static: true }),
913
1056
  tslib_1.__metadata("design:type", GanttTaskContentTemplateDirective)
@@ -966,6 +1109,10 @@ tslib_1.__decorate([
966
1109
  Input(),
967
1110
  tslib_1.__metadata("design:type", Function)
968
1111
  ], GanttComponent.prototype, "isSelected", void 0);
1112
+ tslib_1.__decorate([
1113
+ Input(),
1114
+ tslib_1.__metadata("design:type", Function)
1115
+ ], GanttComponent.prototype, "validateNewDependency", void 0);
969
1116
  tslib_1.__decorate([
970
1117
  Output(),
971
1118
  tslib_1.__metadata("design:type", EventEmitter)
@@ -976,16 +1123,19 @@ tslib_1.__decorate([
976
1123
  ], GanttComponent.prototype, "selectable", void 0);
977
1124
  tslib_1.__decorate([
978
1125
  Input(),
979
- tslib_1.__metadata("design:type", String)
980
- ], GanttComponent.prototype, "toolbarPosition", void 0);
1126
+ tslib_1.__metadata("design:type", Object),
1127
+ tslib_1.__metadata("design:paramtypes", [Object])
1128
+ ], GanttComponent.prototype, "toolbarSettings", null);
981
1129
  tslib_1.__decorate([
982
1130
  Input(),
983
- tslib_1.__metadata("design:type", Function)
984
- ], GanttComponent.prototype, "fetchChildren", void 0);
1131
+ tslib_1.__metadata("design:type", Function),
1132
+ tslib_1.__metadata("design:paramtypes", [Function])
1133
+ ], GanttComponent.prototype, "fetchChildren", null);
985
1134
  tslib_1.__decorate([
986
1135
  Input(),
987
- tslib_1.__metadata("design:type", Function)
988
- ], GanttComponent.prototype, "hasChildren", void 0);
1136
+ tslib_1.__metadata("design:type", Function),
1137
+ tslib_1.__metadata("design:paramtypes", [Function])
1138
+ ], GanttComponent.prototype, "hasChildren", null);
989
1139
  tslib_1.__decorate([
990
1140
  Input(),
991
1141
  tslib_1.__metadata("design:type", Array)
@@ -1062,6 +1212,11 @@ tslib_1.__decorate([
1062
1212
  Input(),
1063
1213
  tslib_1.__metadata("design:type", Boolean)
1064
1214
  ], GanttComponent.prototype, "columnsResizable", void 0);
1215
+ tslib_1.__decorate([
1216
+ Input(),
1217
+ tslib_1.__metadata("design:type", Object),
1218
+ tslib_1.__metadata("design:paramtypes", [Object])
1219
+ ], GanttComponent.prototype, "dragScrollSettings", null);
1065
1220
  tslib_1.__decorate([
1066
1221
  Output(),
1067
1222
  tslib_1.__metadata("design:type", EventEmitter)
@@ -1098,6 +1253,14 @@ tslib_1.__decorate([
1098
1253
  Output(),
1099
1254
  tslib_1.__metadata("design:type", EventEmitter)
1100
1255
  ], GanttComponent.prototype, "save", void 0);
1256
+ tslib_1.__decorate([
1257
+ Output(),
1258
+ tslib_1.__metadata("design:type", EventEmitter)
1259
+ ], GanttComponent.prototype, "taskAdd", void 0);
1260
+ tslib_1.__decorate([
1261
+ Output(),
1262
+ tslib_1.__metadata("design:type", EventEmitter)
1263
+ ], GanttComponent.prototype, "dependencyAdd", void 0);
1101
1264
  tslib_1.__decorate([
1102
1265
  Output(),
1103
1266
  tslib_1.__metadata("design:type", EventEmitter)
@@ -1155,6 +1318,7 @@ GanttComponent = GanttComponent_1 = tslib_1.__decorate([
1155
1318
  selector: 'kendo-gantt',
1156
1319
  exportAs: 'kendoGantt',
1157
1320
  providers: [
1321
+ GanttLocalizationService,
1158
1322
  LocalizationService,
1159
1323
  {
1160
1324
  provide: DataBoundTreeComponent,
@@ -1172,10 +1336,32 @@ GanttComponent = GanttComponent_1 = tslib_1.__decorate([
1172
1336
  DependencyDomService,
1173
1337
  MappingService,
1174
1338
  OptionChangesService,
1175
- EditService
1339
+ EditService,
1340
+ TimelineScrollService
1176
1341
  ],
1177
1342
  template: `
1178
1343
  <ng-container kendoGanttLocalizedMessages
1344
+ i18n-taskEditingGeneralTabTitle="kendo.gantt.taskEditingGeneralTabTitle|The title of the 'General' tab of the editing dialog TabStrip"
1345
+ taskEditingGeneralTabTitle="General"
1346
+
1347
+ i18n-taskEditingPredecessorsTabTitle="kendo.gantt.taskEditingPredecessorsTabTitle|The title of the 'Predecessors' dependencies tab of the editing dialog TabStrip"
1348
+ taskEditingPredecessorsTabTitle="Predecessors"
1349
+
1350
+ i18n-taskEditingSuccessorsTabTitle="kendo.gantt.taskEditingSuccessorsTabTitle|The title of the 'Successors' dependencies tab of the editing dialog TabStrip"
1351
+ taskEditingSuccessorsTabTitle="Successors"
1352
+
1353
+ i18n-taskEditingDependenciesAddButtonText="kendo.gantt.taskEditingDependenciesAddButtonText|The text of the 'Add' button in the dependencies tabs of the editing dialog TabStrip"
1354
+ taskEditingDependenciesAddButtonText="Add"
1355
+
1356
+ i18n-taskEditingDependenciesRemoveButtonText="kendo.gantt.taskEditingDependenciesRemoveButtonText|The text of the 'Remove' button in the dependencies tabs of the editing dialog TabStrip"
1357
+ taskEditingDependenciesRemoveButtonText="Remove"
1358
+
1359
+ i18n-taskEditingDependenciesGridNameColumnTitle="kendo.gantt.taskEditingDependenciesGridNameColumnTitle|The title of the 'Task Title' Grid column in the dependencies tabs of the editing dialog TabStrip"
1360
+ taskEditingDependenciesGridNameColumnTitle="Task Title"
1361
+
1362
+ i18n-taskEditingDependenciesGridTypeColumnTitle="kendo.gantt.taskEditingDependenciesGridTypeColumnTitle|The title of the 'Type' Grid column in the dependencies tabs of the editing dialog TabStrip"
1363
+ taskEditingDependenciesGridTypeColumnTitle="Type"
1364
+
1179
1365
  i18n-taskDeleteLabel="kendo.gantt.taskDeleteLabel|The label of the task delete icon"
1180
1366
  taskDeleteLabel="Delete"
1181
1367
 
@@ -1227,6 +1413,18 @@ GanttComponent = GanttComponent_1 = tslib_1.__decorate([
1227
1413
  i18n-yearViewText-disabled="kendo.gantt.yearViewText|The text of the year view in the ViewSelector component"
1228
1414
  yearViewText="Year"
1229
1415
 
1416
+ i18n-addTaskText="kendo.gantt.addTaskText|The text of the DropDownButton in the AddTask component"
1417
+ addTaskText="Add Task"
1418
+
1419
+ i18n-addChildText="kendo.gantt.addChildText|The text of the 'Add Child' option in the AddTask component"
1420
+ addChildText="Add Child"
1421
+
1422
+ i18n-addAboveText="kendo.gantt.addAboveText|The text of the 'Add Above' option in the AddTask component"
1423
+ addAboveText="Add Above"
1424
+
1425
+ i18n-addBelowText="kendo.gantt.addBelowText|The text of the 'Add Below' option in the AddTask component"
1426
+ addBelowText="Add Below"
1427
+
1230
1428
  i18n-noRecords="kendo.gantt.noRecords|The label visible in the TreeList when there are no records"
1231
1429
  noRecords="No records available."
1232
1430
 
@@ -1348,6 +1546,8 @@ GanttComponent = GanttComponent_1 = tslib_1.__decorate([
1348
1546
  columnsReset="Reset"></ng-container>
1349
1547
  <kendo-gantt-toolbar
1350
1548
  *ngIf="showToolbar('top')"
1549
+ [showAddTask]="toolbarSettings.addTaskTool === 'top' || toolbarSettings.addTaskTool === 'both'"
1550
+ [showViewSelector]="toolbarSettings.viewSelectorTool === 'top' || toolbarSettings.viewSelectorTool === 'both'"
1351
1551
  class="k-gantt-header k-toolbar k-gantt-toolbar"
1352
1552
  position="top"></kendo-gantt-toolbar>
1353
1553
  <div class="k-gantt-content">
@@ -1397,7 +1597,47 @@ GanttComponent = GanttComponent_1 = tslib_1.__decorate([
1397
1597
  }"
1398
1598
  [scope]="this"
1399
1599
  >
1400
- <kendo-treelist-messages [kendoGanttTreeListMessages]="localizationService"></kendo-treelist-messages>
1600
+ <kendo-treelist-messages
1601
+ [noRecords]="getText('noRecords')"
1602
+ [filter]="getText('filter')"
1603
+ [filterEqOperator]="getText('filterEqOperator')"
1604
+ [filterNotEqOperator]="getText('filterNotEqOperator')"
1605
+ [filterIsNullOperator]="getText('filterIsNullOperator')"
1606
+ [filterIsNotNullOperator]="getText('filterIsNotNullOperator')"
1607
+ [filterIsEmptyOperator]="getText('filterIsEmptyOperator')"
1608
+ [filterIsNotEmptyOperator]="getText('filterIsNotEmptyOperator')"
1609
+ [filterStartsWithOperator]="getText('filterStartsWithOperator')"
1610
+ [filterContainsOperator]="getText('filterContainsOperator')"
1611
+ [filterNotContainsOperator]="getText('filterNotContainsOperator')"
1612
+ [filterEndsWithOperator]="getText('filterEndsWithOperator')"
1613
+ [filterGteOperator]="getText('filterGteOperator')"
1614
+ [filterGtOperator]="getText('filterGtOperator')"
1615
+ [filterLteOperator]="getText('filterLteOperator')"
1616
+ [filterLtOperator]="getText('filterLtOperator')"
1617
+ [filterIsTrue]="getText('filterIsTrue')"
1618
+ [filterIsFalse]="getText('filterIsFalse')"
1619
+ [filterBooleanAll]="getText('filterBooleanAll')"
1620
+ [filterAfterOrEqualOperator]="getText('filterAfterOrEqualOperator')"
1621
+ [filterAfterOperator]="getText('filterAfterOperator')"
1622
+ [filterBeforeOperator]="getText('filterBeforeOperator')"
1623
+ [filterBeforeOrEqualOperator]="getText('filterBeforeOrEqualOperator')"
1624
+ [filterFilterButton]="getText('filterFilterButton')"
1625
+ [filterClearButton]="getText('filterClearButton')"
1626
+ [filterAndLogic]="getText('filterAndLogic')"
1627
+ [filterOrLogic]="getText('filterOrLogic')"
1628
+ [loading]="getText('loading')"
1629
+ [columnMenu]="getText('columnMenu')"
1630
+ [columns]="getText('columns')"
1631
+ [sortable]="getText('sortable')"
1632
+ [sortAscending]="getText('sortAscending')"
1633
+ [sortDescending]="getText('sortDescending')"
1634
+ [sortedAscending]="getText('sortedAscending')"
1635
+ [sortedDescending]="getText('sortedDescending')"
1636
+ [sortedDefault]="getText('sortedDefault')"
1637
+ [columnsApply]="getText('columnsApply')"
1638
+ [columnsReset]="getText('columnsReset')"
1639
+ >
1640
+ </kendo-treelist-messages>
1401
1641
  </kendo-treelist>
1402
1642
  </kendo-splitter-pane>
1403
1643
  <kendo-splitter-pane
@@ -1412,6 +1652,8 @@ GanttComponent = GanttComponent_1 = tslib_1.__decorate([
1412
1652
  [scrollable]="false">
1413
1653
  <kendo-gantt-timeline
1414
1654
  *ngIf="views && views.length"
1655
+ [renderDependencyDragClues]="renderDependencyDragClues"
1656
+ [dragScrollSettings]="dragScrollSettings"
1415
1657
  [rows]="renderedTreeListItems"
1416
1658
  [slots]="timelineSlots"
1417
1659
  [groupSlots]="timelineGroupSlots"
@@ -1437,16 +1679,21 @@ GanttComponent = GanttComponent_1 = tslib_1.__decorate([
1437
1679
  </div>
1438
1680
  <kendo-gantt-toolbar
1439
1681
  *ngIf="showToolbar('bottom')"
1682
+ [showAddTask]="toolbarSettings.addTaskTool === 'bottom' || toolbarSettings.addTaskTool === 'both'"
1683
+ [showViewSelector]="toolbarSettings.viewSelectorTool === 'bottom' || toolbarSettings.viewSelectorTool === 'both'"
1440
1684
  class="k-gantt-footer k-toolbar k-gantt-toolbar"
1441
1685
  position="bottom"></kendo-gantt-toolbar>
1442
- <kendo-gantt-edit-dialog *ngIf="showEditingDialog" [formGroup]="editDialogFormGroup"></kendo-gantt-edit-dialog>
1686
+ <kendo-gantt-edit-dialog
1687
+ *ngIf="showEditingDialog"
1688
+ [data]="data">
1689
+ </kendo-gantt-edit-dialog>
1443
1690
  <kendo-dialog
1444
1691
  *ngIf="showConfirmationDialog"
1445
1692
  [width]="575"
1446
1693
  [height]="170"
1447
1694
  [title]="getText('confirmationDialogTitle')"
1448
1695
  (close)="showConfirmationDialog = false;">
1449
- <span>{{getText('confirmationDialogContent')}}</span>
1696
+ <span>{{ getText('confirmationDialogContent') }}</span>
1450
1697
  <kendo-dialog-actions layout="normal">
1451
1698
  <kendo-treelist-spacer></kendo-treelist-spacer>
1452
1699
  <button kendoButton [primary]="true" (click)="handleDeleteConfirmation()">{{ getText('deleteButtonText') }}</button>
@@ -5,11 +5,19 @@
5
5
  import * as tslib_1 from "tslib";
6
6
  import { NgModule } from '@angular/core';
7
7
  import { CommonModule } from '@angular/common';
8
- import { SplitterModule } from '@progress/kendo-angular-layout';
8
+ import { ReactiveFormsModule } from '@angular/forms';
9
+ import { SplitterModule, TabStripModule } from '@progress/kendo-angular-layout';
9
10
  import { TreeListModule } from '@progress/kendo-angular-treelist';
10
11
  import { ButtonsModule } from '@progress/kendo-angular-buttons';
11
- import { EventsModule } from '@progress/kendo-angular-common';
12
+ import { DraggableModule, EventsModule } from '@progress/kendo-angular-common';
12
13
  import { DialogModule } from '@progress/kendo-angular-dialog';
14
+ import { LabelModule } from '@progress/kendo-angular-label';
15
+ import { InputsModule } from '@progress/kendo-angular-inputs';
16
+ import { DateInputsModule } from '@progress/kendo-angular-dateinputs';
17
+ import { L10N_PREFIX } from '@progress/kendo-angular-l10n';
18
+ import { PopupModule } from '@progress/kendo-angular-popup';
19
+ import { touchEnabled } from '@progress/kendo-common';
20
+ import { TOUCH_ENABLED } from './common/touch-enabled';
13
21
  import { GanttComponent } from './gantt.component';
14
22
  import { GanttTimelineComponent } from './timeline/gantt-timeline.component';
15
23
  import { GanttTasksTableBodyComponent } from './rendering/gantt-tasks-table-body.component';
@@ -28,19 +36,21 @@ import { ToolbarComponent } from './toolbar/toolbar.component';
28
36
  import { ToolbarTemplateDirective } from './toolbar/toolbar-template.directive';
29
37
  import { ViewSelectorComponent } from './toolbar/view-selector.component';
30
38
  import { GanttDependencyDirective } from './dependencies/gantt-dependency.directive';
39
+ import { DependencyDragCreateDirective } from './dragging/dependency-drag-create.directive';
40
+ import { DragValidationTooltipComponent } from './dragging/drag-validation-tooltip.component';
41
+ import { TimelineScrollableDirective } from './scrolling/timeline-scroll.directive';
31
42
  import { GanttColumnComponent, GanttColumnGroupComponent, GanttSpanColumnComponent, FilterMenuTemplateDirective, FilterCellTemplateDirective, CellTemplateDirective, ColumnMenuTemplateDirective, FooterTemplateDirective, HeaderTemplateDirective, EditTemplateDirective } from './columns/columns';
32
43
  import { TimelineDayViewComponent } from './timeline/timeline-day-view.component';
33
44
  import { TimelineWeekViewComponent } from './timeline/timeline-week-view.component';
34
45
  import { TimelineMonthViewComponent } from './timeline/timeline-month-view.component';
35
46
  import { EditDialogComponent } from './editing/edit-dialog.component';
36
- import { ReactiveFormsModule } from '@angular/forms';
37
- import { LabelModule } from '@progress/kendo-angular-label';
38
- import { InputsModule } from '@progress/kendo-angular-inputs';
39
- import { DateInputsModule } from '@progress/kendo-angular-dateinputs';
40
47
  import { CustomMessagesComponent } from './localization/custom-messages.component';
41
- import { L10N_PREFIX } from '@progress/kendo-angular-l10n';
42
48
  import { LocalizedMessagesDirective } from './localization/localized-messages.directive';
43
- import { GanttTreeListMessagesDirective } from './localization/treelist-messages.directive';
49
+ import { GanttAddTaskComponent } from './editing/add-task.component';
50
+ import { GridModule } from '@progress/kendo-angular-grid';
51
+ import { DropDownsModule } from '@progress/kendo-angular-dropdowns';
52
+ import { DependenciesTableComponent } from './editing/dependencies-table.component';
53
+ import { TaskFieldsComponent } from './editing/task-fields.component';
44
54
  const IMPORTED_MODULES = [
45
55
  CommonModule,
46
56
  ReactiveFormsModule,
@@ -52,7 +62,12 @@ const IMPORTED_MODULES = [
52
62
  TreeListModule,
53
63
  ButtonsModule,
54
64
  DialogModule,
55
- EventsModule
65
+ EventsModule,
66
+ PopupModule,
67
+ DraggableModule,
68
+ TabStripModule,
69
+ GridModule,
70
+ DropDownsModule
56
71
  ];
57
72
  const DECLARATIONS = [
58
73
  GanttComponent,
@@ -82,6 +97,7 @@ const DECLARATIONS = [
82
97
  FooterTemplateDirective,
83
98
  GanttExpandableDirective,
84
99
  GanttDependencyDirective,
100
+ DependencyDragCreateDirective,
85
101
  TimelineDayViewComponent,
86
102
  TimelineWeekViewComponent,
87
103
  TimelineMonthViewComponent,
@@ -89,8 +105,13 @@ const DECLARATIONS = [
89
105
  EditDialogComponent,
90
106
  CustomMessagesComponent,
91
107
  LocalizedMessagesDirective,
92
- GanttTreeListMessagesDirective
108
+ GanttAddTaskComponent,
109
+ DragValidationTooltipComponent,
110
+ TimelineScrollableDirective,
111
+ DependenciesTableComponent,
112
+ TaskFieldsComponent
93
113
  ];
114
+ const ɵ0 = touchEnabled;
94
115
  /**
95
116
  * Represents the [NgModule]({{ site.data.urls.angular['ngmoduleapi'] }})
96
117
  * definition for the Gantt component.
@@ -129,10 +150,15 @@ GanttModule = tslib_1.__decorate([
129
150
  imports: [...IMPORTED_MODULES],
130
151
  declarations: [...DECLARATIONS],
131
152
  exports: [...DECLARATIONS],
153
+ entryComponents: [DragValidationTooltipComponent],
132
154
  providers: [{
133
155
  provide: L10N_PREFIX,
134
156
  useValue: 'kendo.gantt'
157
+ }, {
158
+ provide: TOUCH_ENABLED,
159
+ useValue: ɵ0
135
160
  }]
136
161
  })
137
162
  ], GanttModule);
138
163
  export { GanttModule };
164
+ export { ɵ0 };