@progress/kendo-angular-gantt 0.2.1-dev.202112081924 → 0.3.0-dev.202112141015

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 (69) hide show
  1. package/dist/cdn/js/kendo-angular-gantt.js +1 -1
  2. package/dist/cdn/main.js +2 -2
  3. package/dist/es/editing/add-task.component.js +94 -0
  4. package/dist/es/editing/edit.service.js +1 -0
  5. package/dist/es/expanded-state/expandable.directive.js +4 -6
  6. package/dist/es/gantt.component.js +68 -20
  7. package/dist/es/gantt.module.js +2 -2
  8. package/dist/es/index.js +2 -1
  9. package/dist/es/localization/messages.js +45 -1
  10. package/dist/es/models/events/{add-event.interface.js → task-add-event.interface.js} +0 -0
  11. package/dist/es/models/models.js +1 -0
  12. package/dist/es/models/{toolbar-position.js → toolbar-settings.js} +0 -0
  13. package/dist/es/package-metadata.js +1 -1
  14. package/dist/es/rendering/gantt-tasks-table-body.component.js +2 -2
  15. package/dist/es/timeline/timeline-base-view.service.js +12 -3
  16. package/dist/es/toolbar/toolbar.component.js +9 -1
  17. package/dist/es2015/editing/add-task.component.d.ts +45 -0
  18. package/dist/es2015/editing/add-task.component.js +102 -0
  19. package/dist/es2015/editing/edit.service.d.ts +3 -0
  20. package/dist/es2015/editing/edit.service.js +1 -0
  21. package/dist/es2015/expanded-state/expandable.directive.d.ts +1 -2
  22. package/dist/es2015/expanded-state/expandable.directive.js +2 -7
  23. package/dist/es2015/gantt.component.d.ts +25 -12
  24. package/dist/es2015/gantt.component.js +141 -20
  25. package/dist/es2015/gantt.module.js +2 -2
  26. package/dist/es2015/index.d.ts +2 -1
  27. package/dist/es2015/index.js +2 -1
  28. package/dist/es2015/index.metadata.json +1 -1
  29. package/dist/es2015/localization/messages.d.ts +46 -2
  30. package/dist/es2015/localization/messages.js +45 -1
  31. package/dist/es2015/models/events/cell-close-event.interface.d.ts +1 -1
  32. package/dist/es2015/models/events/task-add-event.interface.d.ts +31 -0
  33. package/dist/es2015/models/events/{add-event.interface.js → task-add-event.interface.js} +0 -0
  34. package/dist/es2015/models/events/task-edit-event.interface.d.ts +2 -2
  35. package/dist/es2015/models/models.d.ts +5 -1
  36. package/dist/es2015/models/models.js +1 -0
  37. package/dist/es2015/models/toolbar-settings.d.ts +29 -0
  38. package/dist/es2015/models/{toolbar-position.js → toolbar-settings.js} +0 -0
  39. package/dist/es2015/package-metadata.js +1 -1
  40. package/dist/es2015/rendering/gantt-tasks-table-body.component.js +2 -2
  41. package/dist/es2015/timeline/timeline-base-view.service.d.ts +12 -0
  42. package/dist/es2015/timeline/timeline-base-view.service.js +12 -3
  43. package/dist/es2015/toolbar/toolbar-template.directive.d.ts +1 -1
  44. package/dist/es2015/toolbar/toolbar.component.d.ts +2 -0
  45. package/dist/es2015/toolbar/toolbar.component.js +10 -0
  46. package/dist/fesm2015/index.js +334 -45
  47. package/dist/fesm5/index.js +257 -46
  48. package/dist/npm/editing/add-task.component.js +96 -0
  49. package/dist/npm/editing/edit.service.js +1 -0
  50. package/dist/npm/expanded-state/expandable.directive.js +3 -5
  51. package/dist/npm/gantt.component.js +68 -20
  52. package/dist/npm/gantt.module.js +2 -2
  53. package/dist/npm/index.js +4 -2
  54. package/dist/npm/localization/messages.js +45 -1
  55. package/dist/npm/models/events/{add-event.interface.js → task-add-event.interface.js} +0 -0
  56. package/dist/npm/models/models.js +2 -0
  57. package/dist/npm/models/{toolbar-position.js → toolbar-settings.js} +0 -0
  58. package/dist/npm/package-metadata.js +1 -1
  59. package/dist/npm/rendering/gantt-tasks-table-body.component.js +1 -1
  60. package/dist/npm/timeline/timeline-base-view.service.js +17 -8
  61. package/dist/npm/toolbar/toolbar.component.js +9 -1
  62. package/dist/systemjs/kendo-angular-gantt.js +1 -1
  63. package/package.json +3 -3
  64. package/dist/es/localization/treelist-messages.directive.js +0 -31
  65. package/dist/es2015/localization/treelist-messages.directive.d.ts +0 -14
  66. package/dist/es2015/localization/treelist-messages.directive.js +0 -29
  67. package/dist/es2015/models/events/add-event.interface.d.ts +0 -16
  68. package/dist/es2015/models/toolbar-position.d.ts +0 -9
  69. package/dist/npm/localization/treelist-messages.directive.js +0 -33
@@ -0,0 +1,94 @@
1
+ /**-----------------------------------------------------------------------------------------
2
+ * Copyright © 2021 Progress Software Corporation. All rights reserved.
3
+ * Licensed under commercial license. See LICENSE.md in the project root for more information
4
+ *-------------------------------------------------------------------------------------------*/
5
+ import * as tslib_1 from "tslib";
6
+ import { Component, Input, NgZone } from '@angular/core';
7
+ import { LocalizationService } from '@progress/kendo-angular-l10n';
8
+ import { EditService } from './edit.service';
9
+ /**
10
+ * The UI for adding new items to the Gantt.
11
+ * Use it within a toolbar template to provide a custom icon or list of options.
12
+ */
13
+ var GanttAddTaskComponent = /** @class */ (function () {
14
+ function GanttAddTaskComponent(localizationService, editService, ngZone) {
15
+ this.localizationService = localizationService;
16
+ this.editService = editService;
17
+ this.ngZone = ngZone;
18
+ /**
19
+ * Sets the data of the DropDownButton.
20
+ * > The data has to be provided in an array-like list.
21
+ */
22
+ this.data = [{
23
+ text: this.getText('addChildText'),
24
+ type: 'addChild'
25
+ }, {
26
+ text: this.getText('addAboveText'),
27
+ type: 'addAbove'
28
+ }, {
29
+ text: this.getText('addBelowText'),
30
+ type: 'addBelow'
31
+ }];
32
+ /**
33
+ * Defines the name of an existing icon in a Kendo UI theme.
34
+ * @default 'plus'
35
+ */
36
+ this.icon = 'plus';
37
+ }
38
+ /**
39
+ * @hidden
40
+ */
41
+ GanttAddTaskComponent.prototype.getText = function (message) {
42
+ return this.localizationService.get(message);
43
+ };
44
+ /**
45
+ * @hidden
46
+ */
47
+ GanttAddTaskComponent.prototype.handleOpen = function (e) {
48
+ if (!this.editService.getSelectedItem()) {
49
+ e.preventDefault();
50
+ }
51
+ };
52
+ /**
53
+ * @hidden
54
+ */
55
+ GanttAddTaskComponent.prototype.handleMouseClick = function () {
56
+ var _this = this;
57
+ if (!this.editService.getSelectedItem()) {
58
+ this.ngZone.run(function () {
59
+ _this.editService.addEvent.next({
60
+ selectedItem: null,
61
+ actionType: 'addTask'
62
+ });
63
+ });
64
+ }
65
+ };
66
+ /**
67
+ * @hidden
68
+ */
69
+ GanttAddTaskComponent.prototype.handleItemClick = function (e) {
70
+ this.editService.addEvent.next({
71
+ actionType: e.type,
72
+ selectedItem: null
73
+ });
74
+ };
75
+ tslib_1.__decorate([
76
+ Input(),
77
+ tslib_1.__metadata("design:type", Array)
78
+ ], GanttAddTaskComponent.prototype, "data", void 0);
79
+ tslib_1.__decorate([
80
+ Input(),
81
+ tslib_1.__metadata("design:type", String)
82
+ ], GanttAddTaskComponent.prototype, "icon", void 0);
83
+ GanttAddTaskComponent = tslib_1.__decorate([
84
+ Component({
85
+ selector: 'kendo-gantt-add-task',
86
+ template: "\n <kendo-dropdownbutton\n [data]=\"data\"\n [icon]=\"icon\"\n [kendoEventsOutsideAngular]=\"{ click: handleMouseClick }\"\n [scope]=\"this\"\n (itemClick)=\"handleItemClick($event)\"\n (open)=\"handleOpen($event)\">\n {{ getText('addTaskText') }}\n </kendo-dropdownbutton>\n "
87
+ }),
88
+ tslib_1.__metadata("design:paramtypes", [LocalizationService,
89
+ EditService,
90
+ NgZone])
91
+ ], GanttAddTaskComponent);
92
+ return GanttAddTaskComponent;
93
+ }());
94
+ export { GanttAddTaskComponent };
@@ -13,6 +13,7 @@ var EditService = /** @class */ (function () {
13
13
  this.showEditingDialog = new Subject();
14
14
  this.showConfirmationDialog = new Subject();
15
15
  this.editEvent = new Subject();
16
+ this.addEvent = new Subject();
16
17
  }
17
18
  EditService.prototype.createEditDialog = function (dataItem, formGroup) {
18
19
  this.dataItem = dataItem;
@@ -4,15 +4,14 @@
4
4
  *-------------------------------------------------------------------------------------------*/
5
5
  import * as tslib_1 from "tslib";
6
6
  import { Directive, Input } from '@angular/core';
7
- import { ExpandableDirective, ExpandableTreeComponent } from '@progress/kendo-angular-treelist';
7
+ import { ExpandableDirective } from '@progress/kendo-angular-treelist';
8
8
  /**
9
9
  * A directive which controls the expanded state of the items.
10
10
  */
11
11
  var GanttExpandableDirective = /** @class */ (function (_super) {
12
12
  tslib_1.__extends(GanttExpandableDirective, _super);
13
- // fixes an injection error in some builds/ng-versions (e.g. StackBlitz)
14
- function GanttExpandableDirective(gantt) {
15
- return _super.call(this, gantt) || this;
13
+ function GanttExpandableDirective() {
14
+ return _super !== null && _super.apply(this, arguments) || this;
16
15
  }
17
16
  tslib_1.__decorate([
18
17
  Input(),
@@ -22,8 +21,7 @@ var GanttExpandableDirective = /** @class */ (function (_super) {
22
21
  Directive({
23
22
  exportAs: 'kendoGanttExpandable',
24
23
  selector: '[kendoGanttExpandable]'
25
- }),
26
- tslib_1.__metadata("design:paramtypes", [ExpandableTreeComponent])
24
+ })
27
25
  ], GanttExpandableDirective);
28
26
  return GanttExpandableDirective;
29
27
  }(ExpandableDirective));
@@ -120,7 +120,7 @@ var GanttComponent = /** @class */ (function () {
120
120
  /**
121
121
  * Provides a callback that determines if the given task is selected ([see example]({% slug selection_gantt %}#toc-custom-selection))
122
122
  *
123
- * > The [`selectable`]({% slug gantt_api_ganttcomponent %}#toc-selectable) prop has to be set to `true` in order for this callback to be executed.
123
+ * > The [`selectable`]({% slug api_gantt_ganttcomponent %}#toc-selectable) prop has to be set to `true` in order for this callback to be executed.
124
124
  */
125
125
  this.isSelected = isSelected;
126
126
  /**
@@ -134,21 +134,10 @@ var GanttComponent = /** @class */ (function () {
134
134
  /**
135
135
  * Enables or disables the Gantt selection mechanism ([see example]({% slug selection_gantt %}#toc-custom-selection)).
136
136
  *
137
- * > When set to `true`, the [`isSelected`]({% slug gantt_api_ganttcomponent %}#toc-isselected) callback has to be provided.
137
+ * > When set to `true`, the [`isSelected`]({% slug api_gantt_ganttcomponent %}#toc-isselected) callback has to be provided.
138
138
  * > When applied, the [`SelectableDirective`]({% slug api_gantt_selectabledirective %}) sets `selectable` to `true` internally.
139
139
  */
140
140
  this.selectable = false;
141
- /**
142
- * The position of the toolbar.
143
- *
144
- * The possible values are:
145
- * - `top`&mdash;Positions the toolbar above the Gantt panes.
146
- * - `bottom`&mdash;Positions the toolbar below the Gantt panes.
147
- * - `both`&mdash;Displays two toolbar instances. Positions the first one above,
148
- * and the second one - below the Gantt panes.
149
- * - `none`&mdash;No toolbar is rendered.
150
- */
151
- this.toolbarPosition = 'top';
152
141
  /**
153
142
  * Gets or sets the callback function that retrieves the child items for a particular item.
154
143
  */
@@ -258,6 +247,10 @@ var GanttComponent = /** @class */ (function () {
258
247
  * Fires when the user saves an edited task.
259
248
  */
260
249
  this.save = new EventEmitter();
250
+ /**
251
+ * Fires when the user adds a task.
252
+ */
253
+ this.taskAdd = new EventEmitter();
261
254
  /**
262
255
  * Fires when the sorting of the Gantt is changed.
263
256
  * You have to handle the event yourself and sort the data.
@@ -335,6 +328,11 @@ var GanttComponent = /** @class */ (function () {
335
328
  this._rowClass = rowClassCallback;
336
329
  this._taskClass = taskClassCallback;
337
330
  this._activeView = DEFAULT_VIEW;
331
+ this._toolbarSettings = {
332
+ position: 'top',
333
+ addTaskTool: 'none',
334
+ viewSelectorTool: 'top'
335
+ };
338
336
  this.rtl = false;
339
337
  this.optionChangesSubscriptions = new Subscription();
340
338
  this.editServiceSubscription = new Subscription();
@@ -345,6 +343,7 @@ var GanttComponent = /** @class */ (function () {
345
343
  this.optionChangesSubscriptions.add(this.optionChangesService.columnChanges.subscribe(function () {
346
344
  _this.treeList.columns.notifyOnChanges();
347
345
  }));
346
+ this.editService.getSelectedItem = this.getFirstSelectedItem.bind(this);
348
347
  this.editServiceSubscription.add(this.editService.showEditingDialog.subscribe(function (show) { return _this.showEditingDialog = show; }));
349
348
  this.editServiceSubscription.add(this.editService.showConfirmationDialog.subscribe(function () { return _this.taskDelete.emit(); }));
350
349
  this.editServiceSubscription.add(this.editService.editEvent.subscribe(function (args) {
@@ -356,7 +355,14 @@ var GanttComponent = /** @class */ (function () {
356
355
  _this.showConfirmationDialog = _this.showEditingDialog = false;
357
356
  _this.editService.dataItem = _this.editService.formGroup = null;
358
357
  _this.updateView();
359
- _this.dependencyDomService.notifyChanges();
358
+ }));
359
+ this.editServiceSubscription.add(this.editService.addEvent.subscribe(function (args) {
360
+ var selectedItem = _this.getFirstSelectedItem();
361
+ _this.taskAdd.emit({
362
+ actionType: args.actionType,
363
+ selectedItem: selectedItem ? getEditItem(selectedItem, _this.treeList.view.data, _this.mapper) : null
364
+ });
365
+ _this.updateView();
360
366
  }));
361
367
  this.localizationSubscription = this.localizationService.changes.subscribe(function (_a) {
362
368
  var rtl = _a.rtl;
@@ -462,6 +468,33 @@ var GanttComponent = /** @class */ (function () {
462
468
  enumerable: true,
463
469
  configurable: true
464
470
  });
471
+ Object.defineProperty(GanttComponent.prototype, "toolbarSettings", {
472
+ get: function () {
473
+ return this._toolbarSettings;
474
+ },
475
+ /**
476
+ * The toolbar configuration. Defines the position and content of the toolbar(s).
477
+ * The available properties are `position`, `addTaskTool`, and `viewSelectorTool`.
478
+ * All are optional and default to `top`.
479
+ *
480
+ * The possible values for each option are:
481
+ * - `top`&mdash;Positions the toolbar above the Gantt panes. Renders the respective tool in the top toolbar.
482
+ * - `bottom`&mdash;Positions the toolbar below the Gantt panes. Renders the respective tool in the bottom toolbar.
483
+ * - `both`&mdash;Displays two toolbar instances. Positions the first one above,
484
+ * and the second one - below the Gantt panes. Renders the respective tool in the both toolbars.
485
+ * - `none`&mdash;No toolbar is rendered when used for setting `position`.
486
+ * No add task or view selector tool is rendered when used for setting `addTaskTool` or `viewSelectorTool`.
487
+ */
488
+ set: function (value) {
489
+ this._toolbarSettings = {
490
+ position: value.position || 'top',
491
+ addTaskTool: value.addTaskTool || 'none',
492
+ viewSelectorTool: value.viewSelectorTool || 'top'
493
+ };
494
+ },
495
+ enumerable: true,
496
+ configurable: true
497
+ });
465
498
  Object.defineProperty(GanttComponent.prototype, "timelinePaneOptions", {
466
499
  get: function () {
467
500
  return tslib_1.__assign({}, this._timelinePaneOptions, { size: this.treeListPaneOptions.collapsed ? '100%' : this._timelinePaneOptions.size });
@@ -696,12 +729,17 @@ var GanttComponent = /** @class */ (function () {
696
729
  }
697
730
  };
698
731
  /**
699
- * Updates the data of the Gantt and forces row-related callbacks to be called anew.
732
+ * Forces the TreeList to evaluate if some data items have changed and re-renders the rows information, if needed.
733
+ * Recalculates and re-renders the Timeline period, if needed.
734
+ * Redraws changed dependencies, if needed.
735
+ * Executes all row-related callbacks anew.
700
736
  */
701
737
  GanttComponent.prototype.updateView = function () {
702
738
  if (isPresent(this.treeList)) {
703
739
  this.treeList.updateView();
704
740
  }
741
+ this.loadTimelineData();
742
+ this.dependencyDomService.notifyChanges();
705
743
  };
706
744
  /**
707
745
  * Opens the task editing dialog.
@@ -781,7 +819,7 @@ var GanttComponent = /** @class */ (function () {
781
819
  * @hidden
782
820
  */
783
821
  GanttComponent.prototype.showToolbar = function (position) {
784
- return this.toolbarPosition !== 'none' && ([position, 'both'].indexOf(this.toolbarPosition) > -1);
822
+ return this.toolbarSettings.position !== 'none' && ([position, 'both'].indexOf(this.toolbarSettings.position) > -1);
785
823
  };
786
824
  /**
787
825
  * @hidden
@@ -949,7 +987,7 @@ var GanttComponent = /** @class */ (function () {
949
987
  items: [dataItem],
950
988
  sender: this
951
989
  });
952
- this.updateView();
990
+ this.treeList.updateView();
953
991
  };
954
992
  GanttComponent.prototype.updateTreeListGroupClass = function (columns) {
955
993
  if (columns === void 0) { columns = this.columns; }
@@ -989,6 +1027,11 @@ var GanttComponent = /** @class */ (function () {
989
1027
  var shouldToggleSelection = ctrlKey || metaKey;
990
1028
  return (shouldToggleSelection && this.isSelected(dataItem)) ? 'remove' : 'select';
991
1029
  };
1030
+ GanttComponent.prototype.getFirstSelectedItem = function () {
1031
+ var isSelectedCallback = this.isSelected || isSelected;
1032
+ var loadedItems = this.renderedTreeListItems || [];
1033
+ return loadedItems.find(isSelectedCallback);
1034
+ };
992
1035
  var GanttComponent_1;
993
1036
  tslib_1.__decorate([
994
1037
  ViewChild(TreeListComponent, { static: true }),
@@ -1062,8 +1105,9 @@ var GanttComponent = /** @class */ (function () {
1062
1105
  ], GanttComponent.prototype, "selectable", void 0);
1063
1106
  tslib_1.__decorate([
1064
1107
  Input(),
1065
- tslib_1.__metadata("design:type", String)
1066
- ], GanttComponent.prototype, "toolbarPosition", void 0);
1108
+ tslib_1.__metadata("design:type", Object),
1109
+ tslib_1.__metadata("design:paramtypes", [Object])
1110
+ ], GanttComponent.prototype, "toolbarSettings", null);
1067
1111
  tslib_1.__decorate([
1068
1112
  Input(),
1069
1113
  tslib_1.__metadata("design:type", Function)
@@ -1184,6 +1228,10 @@ var GanttComponent = /** @class */ (function () {
1184
1228
  Output(),
1185
1229
  tslib_1.__metadata("design:type", EventEmitter)
1186
1230
  ], GanttComponent.prototype, "save", void 0);
1231
+ tslib_1.__decorate([
1232
+ Output(),
1233
+ tslib_1.__metadata("design:type", EventEmitter)
1234
+ ], GanttComponent.prototype, "taskAdd", void 0);
1187
1235
  tslib_1.__decorate([
1188
1236
  Output(),
1189
1237
  tslib_1.__metadata("design:type", EventEmitter)
@@ -1260,7 +1308,7 @@ var GanttComponent = /** @class */ (function () {
1260
1308
  OptionChangesService,
1261
1309
  EditService
1262
1310
  ],
1263
- template: "\n <ng-container kendoGanttLocalizedMessages\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-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 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 [kendoGanttTreeListMessages]=\"localizationService\"></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 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 "
1311
+ template: "\n <ng-container kendoGanttLocalizedMessages\n i18n-taskEditingGeneralTabTitle=\"kendo.gantt.taskEditingGeneralTabTitle|The title of the 'General' tab of the editing dialog TabStrip\"\n taskEditingGeneralTabTitle=\"General\"\n\n i18n-taskEditingPredecessorsTabTitle=\"kendo.gantt.taskEditingPredecessorsTabTitle|The title of the 'Predecessors' dependencies tab of the editing dialog TabStrip\"\n taskEditingPredecessorsTabTitle=\"Predecessors\"\n\n i18n-taskEditingSuccessorsTabTitle=\"kendo.gantt.taskEditingSuccessorsTabTitle|The title of the 'Successors' dependencies tab of the editing dialog TabStrip\"\n taskEditingSuccessorsTabTitle=\"Successors\"\n\n i18n-taskEditingDependenciesAddButtonText=\"kendo.gantt.taskEditingDependenciesAddButtonText|The text of the 'Add' button in the dependencies tabs of the editing dialog TabStrip\"\n taskEditingDependenciesAddButtonText=\"Add\"\n\n i18n-taskEditingDependenciesRemoveButtonText=\"kendo.gantt.taskEditingDependenciesRemoveButtonText|The text of the 'Remove' button in the dependencies tabs of the editing dialog TabStrip\"\n taskEditingDependenciesRemoveButtonText=\"Remove\"\n\n i18n-taskEditingDependenciesGridNameColumnTitle=\"kendo.gantt.taskEditingDependenciesGridNameColumnTitle|The title of the 'Task Title' Grid column in the dependencies tabs of the editing dialog TabStrip\"\n taskEditingDependenciesGridNameColumnTitle=\"Task Title\"\n\n i18n-taskEditingDependenciesGridTypeColumnTitle=\"kendo.gantt.taskEditingDependenciesGridTypeColumnTitle|The title of the 'Type' Grid column in the dependencies tabs of the editing dialog TabStrip\"\n taskEditingDependenciesGridTypeColumnTitle=\"Type\"\n\n i18n-taskDeleteLabel=\"kendo.gantt.taskDeleteLabel|The label of the task delete icon\"\n taskDeleteLabel=\"Delete\"\n\n i18n-taskEditingDialogTitle=\"kendo.gantt.taskEditingDialogTitle|The title of the task editing dialog\"\n taskEditingDialogTitle=\"Editing Task\"\n\n i18n-taskEditingDialogCloseTitle=\"kendo.gantt.taskEditingDialogCloseTitle|The title of the task editing dialog close button\"\n taskEditingDialogCloseTitle=\"Close\"\n\n i18n-confirmationDialogCloseTitle=\"kendo.gantt.confirmationDialogCloseTitle|The title of the confirmation dialog close button\"\n confirmationDialogCloseTitle=\"Close\"\n\n i18n-confirmationDialogTitle=\"kendo.gantt.confirmationDialogTitle|The title of the delete task confirmation dialog\"\n confirmationDialogTitle=\"Delete Task\"\n\n i18n-confirmationDialogContent=\"kendo.gantt.confirmationDialogContent|The content of the delete task confirmation dialog\"\n confirmationDialogContent=\"Are you sure you want to delete this task?\"\n\n i18n-deleteButtonText=\"kendo.gantt.deleteButtonText|The text of the task editing dialog 'Delete' button\"\n deleteButtonText=\"Delete\"\n\n i18n-cancelButtonText=\"kendo.gantt.cancelButtonText|The text of the task editing dialog 'Cancel' button\"\n cancelButtonText=\"Cancel\"\n\n i18n-saveButtonText=\"kendo.gantt.saveButtonText|The text of the task editing dialog 'Save' button\"\n saveButtonText=\"Save\"\n\n i18n-titleFieldInputLabel=\"kendo.gantt.titleFieldInputLabel|The label of the 'title' field input in editing mode\"\n titleFieldInputLabel=\"Title\"\n\n i18n-startFieldInputLabel=\"kendo.gantt.startFieldInputLabel|The label of the 'start' field input in editing mode\"\n startFieldInputLabel=\"Start\"\n\n i18n-endFieldInputLabel=\"kendo.gantt.endFieldInputLabel|The label of the 'end' field input in editing mode\"\n endFieldInputLabel=\"End\"\n\n i18n-completionRatioFieldInputLabel=\"kendo.gantt.completionRatioFieldInputLabel|The label of the 'completionRatio' field input in editing mode\"\n completionRatioFieldInputLabel=\"Progress\"\n\n i18n-dayViewText=\"kendo.gantt.dayViewText|The text of the day view in the ViewSelector component\"\n dayViewText=\"Day\"\n\n i18n-weekViewText=\"kendo.gantt.weekViewText|The text of the week view in the ViewSelector component\"\n weekViewText=\"Week\"\n\n i18n-monthViewText=\"kendo.gantt.monthViewText|The text of the month view in the ViewSelector component\"\n monthViewText=\"Month\"\n\n i18n-yearViewText-disabled=\"kendo.gantt.yearViewText|The text of the year view in the ViewSelector component\"\n yearViewText=\"Year\"\n\n i18n-addTaskText=\"kendo.gantt.addTaskText|The text of the DropDownButton in the AddTask component\"\n addTaskText=\"Add Task\"\n\n i18n-addChildText=\"kendo.gantt.addChildText|The text of the 'Add Child' option in the AddTask component\"\n addChildText=\"Add Child\"\n\n i18n-addAboveText=\"kendo.gantt.addAboveText|The text of the 'Add Above' option in the AddTask component\"\n addAboveText=\"Add Above\"\n\n i18n-addBelowText=\"kendo.gantt.addBelowText|The text of the 'Add Below' option in the AddTask component\"\n addBelowText=\"Add Below\"\n\n i18n-noRecords=\"kendo.gantt.noRecords|The label visible in the TreeList when there are no records\"\n noRecords=\"No records available.\"\n\n i18n-filter=\"kendo.gantt.filter|The label of the filter cell or icon\"\n filter=\"Filter\"\n\n i18n-filterEqOperator=\"kendo.gantt.filterEqOperator|The text of the equal filter operator\"\n filterEqOperator=\"Is equal to\"\n\n i18n-filterNotEqOperator=\"kendo.gantt.filterNotEqOperator|The text of the not equal filter operator\"\n filterNotEqOperator=\"Is not equal to\"\n\n i18n-filterIsNullOperator=\"kendo.gantt.filterIsNullOperator|The text of the is null filter operator\"\n filterIsNullOperator=\"Is null\"\n\n i18n-filterIsNotNullOperator=\"kendo.gantt.filterIsNotNullOperator|The text of the is not null filter operator\"\n filterIsNotNullOperator=\"Is not null\"\n\n i18n-filterIsEmptyOperator=\"kendo.gantt.filterIsEmptyOperator|The text of the is empty filter operator\"\n filterIsEmptyOperator=\"Is empty\"\n\n i18n-filterIsNotEmptyOperator=\"kendo.gantt.filterIsNotEmptyOperator|The text of the is not empty filter operator\"\n filterIsNotEmptyOperator=\"Is not empty\"\n\n i18n-filterStartsWithOperator=\"kendo.gantt.filterStartsWithOperator|The text of the starts with filter operator\"\n filterStartsWithOperator=\"Starts with\"\n\n i18n-filterContainsOperator=\"kendo.gantt.filterContainsOperator|The text of the contains filter operator\"\n filterContainsOperator=\"Contains\"\n\n i18n-filterNotContainsOperator=\"kendo.gantt.filterNotContainsOperator|The text of the does not contain filter operator\"\n filterNotContainsOperator=\"Does not contain\"\n\n i18n-filterEndsWithOperator=\"kendo.gantt.filterEndsWithOperator|The text of the ends with filter operator\"\n filterEndsWithOperator=\"Ends with\"\n\n i18n-filterGteOperator=\"kendo.gantt.filterGteOperator|The text of the greater than or equal filter operator\"\n filterGteOperator=\"Is greater than or equal to\"\n\n i18n-filterGtOperator=\"kendo.gantt.filterGtOperator|The text of the greater than filter operator\"\n filterGtOperator=\"Is greater than\"\n\n i18n-filterLteOperator=\"kendo.gantt.filterLteOperator|The text of the less than or equal filter operator\"\n filterLteOperator=\"Is less than or equal to\"\n\n i18n-filterLtOperator=\"kendo.gantt.filterLtOperator|The text of the less than filter operator\"\n filterLtOperator=\"Is less than\"\n\n i18n-filterIsTrue=\"kendo.gantt.filterIsTrue|The text of the IsTrue boolean filter option\"\n filterIsTrue=\"Is True\"\n\n i18n-filterIsFalse=\"kendo.gantt.filterIsFalse|The text of the IsFalse boolean filter option\"\n filterIsFalse=\"Is False\"\n\n i18n-filterBooleanAll=\"kendo.gantt.filterBooleanAll|The text of the (All) boolean filter option\"\n filterBooleanAll=\"(All)\"\n\n i18n-filterAfterOrEqualOperator=\"kendo.gantt.filterAfterOrEqualOperator|The text of the after or equal date filter operator\"\n filterAfterOrEqualOperator=\"Is after or equal to\"\n\n i18n-filterAfterOperator=\"kendo.gantt.filterAfterOperator|The text of the after date filter operator\"\n filterAfterOperator=\"Is after\"\n\n i18n-filterBeforeOperator=\"kendo.gantt.filterBeforeOperator|The text of the before date filter operator\"\n filterBeforeOperator=\"Is before\"\n\n i18n-filterBeforeOrEqualOperator=\"kendo.gantt.filterBeforeOrEqualOperator|The text of the before or equal date filter operator\"\n filterBeforeOrEqualOperator=\"Is before or equal to\"\n\n i18n-filterFilterButton=\"kendo.gantt.filterFilterButton|The text of the filter button\"\n filterFilterButton=\"Filter\"\n\n i18n-filterClearButton=\"kendo.gantt.filterClearButton|The text of the clear filter button\"\n filterClearButton=\"Clear\"\n\n i18n-filterAndLogic=\"kendo.gantt.filterAndLogic|The text of the And filter logic\"\n filterAndLogic=\"And\"\n\n i18n-filterOrLogic=\"kendo.gantt.filterOrLogic|The text of the Or filter logic\"\n filterOrLogic=\"Or\"\n\n i18n-loading=\"kendo.gantt.loading|The loading text\"\n loading=\"Loading\"\n\n i18n-columnMenu=\"kendo.gantt.columnMenu|The title of the column menu icon\"\n columnMenu=\"Column Menu\"\n\n i18n-columns=\"kendo.gantt.columns|The text shown in the column menu for the columns item\"\n columns=\"Columns\"\n\n i18n-lock-disabled=\"kendo.gantt.lock|The text shown in the column menu for the lock item\"\n lock-disabled=\"Lock\"\n\n i18n-unlock-disabled=\"kendo.gantt.unlock|The text shown in the column menu for the unlock item\"\n unlock-disabled=\"Unlock\"\n\n i18n-sortable=\"kendo.gantt.sortable|The label of the sort icon\"\n sortable=\"Sortable\"\n\n i18n-sortAscending=\"kendo.gantt.sortAscending|The text shown in the column menu for the sort ascending item\"\n sortAscending=\"Sort Ascending\"\n\n i18n-sortDescending=\"kendo.gantt.sortDescending|The text shown in the column menu for the sort descending item\"\n sortDescending=\"Sort Descending\"\n\n i18n-sortedAscending=\"kendo.gantt.sortedAscending|The status announcement when a column is sorted ascending\"\n sortedAscending=\"Sorted Ascending\"\n\n i18n-sortedDescending=\"kendo.gantt.sortedDescending|The status announcement when a column is sorted descending\"\n sortedDescending=\"Sorted Descending\"\n\n i18n-sortedDefault=\"kendo.gantt.sortedDefault|The status announcement when a column is no longer sorted\"\n sortedDefault=\"Not Sorted\"\n\n i18n-columnsApply=\"kendo.gantt.columnsApply|The text shown in the column menu or column chooser for the columns apply button\"\n columnsApply=\"Apply\"\n\n i18n-columnsReset=\"kendo.gantt.columnsReset|The text shown in the column menu or column chooser for the columns reset button\"\n columnsReset=\"Reset\"></ng-container>\n <kendo-gantt-toolbar\n *ngIf=\"showToolbar('top')\"\n [showAddTask]=\"toolbarSettings.addTaskTool === 'top' || toolbarSettings.addTaskTool === 'both'\"\n [showViewSelector]=\"toolbarSettings.viewSelectorTool === 'top' || toolbarSettings.viewSelectorTool === 'both'\"\n class=\"k-gantt-header k-toolbar k-gantt-toolbar\"\n position=\"top\"></kendo-gantt-toolbar>\n <div class=\"k-gantt-content\">\n <kendo-splitter [style.border]=\"0\">\n <kendo-splitter-pane\n class=\"k-gantt-treelist k-gantt-treelist-scrollable\"\n [collapsible]=\"treeListPaneOptions?.collapsible\"\n [collapsed]=\"treeListPaneOptions?.collapsed\"\n (collapsedChange)=\"onTreeListCollapsedChange($event)\"\n [scrollable]=\"false\">\n <kendo-treelist\n [idField]=\"taskIdField\"\n [columns]=\"columns\"\n [data]=\"data\"\n [hasChildren]=\"hasChildren\"\n [fetchChildren]=\"fetchChildren\"\n [isExpanded]=\"isExpanded\"\n [autoSize]=\"columnsAutoSize\"\n [columnMenu]=\"columnMenu\"\n [reorderable]=\"columnsReorderable\"\n [resizable]=\"columnsResizable\"\n [rowClass]=\"rowClass\"\n [isSelected]=\"isSelected\"\n [selectable]=\"selectable\"\n [sortable]=\"sortable\"\n [sort]=\"sort\"\n [filterable]=\"filterMenu\"\n [filter]=\"filter\"\n (filterChange)=\"filterChange.emit($event)\"\n (sortChange)=\"sortChange.emit($event)\"\n (dataStateChange)=\"dataStateChange.emit({\n filter: $event.filter,\n sort: $event.sort\n })\"\n (expandStateChange)=\"expandStateChange.emit($event)\"\n (expand)=\"rowExpand.emit({ dataItem: $event.dataItem })\"\n (collapse)=\"rowCollapse.emit({ dataItem: $event.dataItem })\"\n (columnReorder)=\"columnReorder.emit($event)\"\n (columnResize)=\"columnResize.emit($event)\"\n (columnVisibilityChange)=\"handleColumnVisibilityChange($event)\"\n (columnLockedChange)=\"columnLockedChange.emit($event)\"\n (selectionChange)=\"handleTreeListSelectionChange($event)\"\n (cellClick)=\"handleTreeListCellClick($event)\"\n (cellClose)=\"handleCellClose($event)\"\n [kendoEventsOutsideAngular]=\"{\n dblclick: handleTreeListDoubleClick\n }\"\n [scope]=\"this\"\n >\n <kendo-treelist-messages\n [noRecords]=\"getText('noRecords')\"\n [filter]=\"getText('filter')\"\n [filterEqOperator]=\"getText('filterEqOperator')\"\n [filterNotEqOperator]=\"getText('filterNotEqOperator')\"\n [filterIsNullOperator]=\"getText('filterIsNullOperator')\"\n [filterIsNotNullOperator]=\"getText('filterIsNotNullOperator')\"\n [filterIsEmptyOperator]=\"getText('filterIsEmptyOperator')\"\n [filterIsNotEmptyOperator]=\"getText('filterIsNotEmptyOperator')\"\n [filterStartsWithOperator]=\"getText('filterStartsWithOperator')\"\n [filterContainsOperator]=\"getText('filterContainsOperator')\"\n [filterNotContainsOperator]=\"getText('filterNotContainsOperator')\"\n [filterEndsWithOperator]=\"getText('filterEndsWithOperator')\"\n [filterGteOperator]=\"getText('filterGteOperator')\"\n [filterGtOperator]=\"getText('filterGtOperator')\"\n [filterLteOperator]=\"getText('filterLteOperator')\"\n [filterLtOperator]=\"getText('filterLtOperator')\"\n [filterIsTrue]=\"getText('filterIsTrue')\"\n [filterIsFalse]=\"getText('filterIsFalse')\"\n [filterBooleanAll]=\"getText('filterBooleanAll')\"\n [filterAfterOrEqualOperator]=\"getText('filterAfterOrEqualOperator')\"\n [filterAfterOperator]=\"getText('filterAfterOperator')\"\n [filterBeforeOperator]=\"getText('filterBeforeOperator')\"\n [filterBeforeOrEqualOperator]=\"getText('filterBeforeOrEqualOperator')\"\n [filterFilterButton]=\"getText('filterFilterButton')\"\n [filterClearButton]=\"getText('filterClearButton')\"\n [filterAndLogic]=\"getText('filterAndLogic')\"\n [filterOrLogic]=\"getText('filterOrLogic')\"\n [loading]=\"getText('loading')\"\n [columnMenu]=\"getText('columnMenu')\"\n [columns]=\"getText('columns')\"\n [sortable]=\"getText('sortable')\"\n [sortAscending]=\"getText('sortAscending')\"\n [sortDescending]=\"getText('sortDescending')\"\n [sortedAscending]=\"getText('sortedAscending')\"\n [sortedDescending]=\"getText('sortedDescending')\"\n [sortedDefault]=\"getText('sortedDefault')\"\n [columnsApply]=\"getText('columnsApply')\"\n [columnsReset]=\"getText('columnsReset')\"\n >\n </kendo-treelist-messages>\n </kendo-treelist>\n </kendo-splitter-pane>\n <kendo-splitter-pane\n [collapsible]=\"timelinePaneOptions?.collapsible\"\n [resizable]=\"timelinePaneOptions?.resizable\"\n [collapsed]=\"timelinePaneOptions?.collapsed\"\n [min]=\"timelinePaneOptions?.min\"\n [max]=\"timelinePaneOptions?.max\"\n [size]=\"timelinePaneOptions?.size\"\n (collapsedChange)=\"onTimelineCollapsedChange($event)\"\n (sizeChange)=\"onTimelinePaneSizeChange($event)\"\n [scrollable]=\"false\">\n <kendo-gantt-timeline\n *ngIf=\"views && views.length\"\n [rows]=\"renderedTreeListItems\"\n [slots]=\"timelineSlots\"\n [groupSlots]=\"timelineGroupSlots\"\n [tableWidth]=\"tableWidth\"\n [activeView]=\"activeView\"\n [taskContentTemplate]=\"taskContentTemplate?.templateRef\"\n [taskTemplate]=\"taskTemplate?.templateRef\"\n [summaryTaskTemplate]=\"summaryTaskTemplate?.templateRef\"\n [taskClass]=\"taskClass\"\n [dependencies]=\"dependencies\"\n [hasChildren]=\"hasChildren\"\n [isTaskSelected]=\"isTaskSelected\"\n [kendoEventsOutsideAngular]=\"{\n click: handleTimelineClick,\n contextmenu: handleTimelineRightClick,\n dblclick: handleTimelineDblClick,\n mousedown: handleTimelineMouseDown\n }\"\n [scope]=\"this\"\n ></kendo-gantt-timeline>\n </kendo-splitter-pane>\n </kendo-splitter>\n </div>\n <kendo-gantt-toolbar\n *ngIf=\"showToolbar('bottom')\"\n [showAddTask]=\"toolbarSettings.addTaskTool === 'bottom' || toolbarSettings.addTaskTool === 'both'\"\n [showViewSelector]=\"toolbarSettings.viewSelectorTool === 'bottom' || toolbarSettings.viewSelectorTool === 'both'\"\n class=\"k-gantt-footer k-toolbar k-gantt-toolbar\"\n position=\"bottom\"></kendo-gantt-toolbar>\n <kendo-gantt-edit-dialog *ngIf=\"showEditingDialog\" [formGroup]=\"editDialogFormGroup\"></kendo-gantt-edit-dialog>\n <kendo-dialog\n *ngIf=\"showConfirmationDialog\"\n [width]=\"575\"\n [height]=\"170\"\n [title]=\"getText('confirmationDialogTitle')\"\n (close)=\"showConfirmationDialog = false;\">\n <span>{{getText('confirmationDialogContent')}}</span>\n <kendo-dialog-actions layout=\"normal\">\n <kendo-treelist-spacer></kendo-treelist-spacer>\n <button kendoButton [primary]=\"true\" (click)=\"handleDeleteConfirmation()\">{{ getText('deleteButtonText') }}</button>\n <button kendoButton (click)=\"showConfirmationDialog = false;\">{{ getText('cancelButtonText') }}</button>\n </kendo-dialog-actions>\n </kendo-dialog>\n "
1264
1312
  }),
1265
1313
  tslib_1.__metadata("design:paramtypes", [TimelineViewService,
1266
1314
  ScrollSyncService,
@@ -40,7 +40,7 @@ import { DateInputsModule } from '@progress/kendo-angular-dateinputs';
40
40
  import { CustomMessagesComponent } from './localization/custom-messages.component';
41
41
  import { L10N_PREFIX } from '@progress/kendo-angular-l10n';
42
42
  import { LocalizedMessagesDirective } from './localization/localized-messages.directive';
43
- import { GanttTreeListMessagesDirective } from './localization/treelist-messages.directive';
43
+ import { GanttAddTaskComponent } from './editing/add-task.component';
44
44
  var IMPORTED_MODULES = [
45
45
  CommonModule,
46
46
  ReactiveFormsModule,
@@ -89,7 +89,7 @@ var DECLARATIONS = [
89
89
  EditDialogComponent,
90
90
  CustomMessagesComponent,
91
91
  LocalizedMessagesDirective,
92
- GanttTreeListMessagesDirective
92
+ GanttAddTaskComponent
93
93
  ];
94
94
  /**
95
95
  * Represents the [NgModule]({{ site.data.urls.angular['ngmoduleapi'] }})
package/dist/es/index.js CHANGED
@@ -10,12 +10,13 @@ export { MappingService } from './common/mapping.service';
10
10
  export { OptionChangesService } from './common/option-changes.service';
11
11
  export { DependencyDomService } from './dependencies/dependency-dom.service';
12
12
  export { GanttDependencyDirective } from './dependencies/gantt-dependency.directive';
13
+ export { GanttAddTaskComponent } from './editing/add-task.component';
13
14
  export { EditDialogComponent } from './editing/edit-dialog.component';
14
15
  export { EditService } from './editing/edit.service';
15
16
  export { CustomMessagesComponent } from './localization/custom-messages.component';
16
17
  export { LocalizedMessagesDirective } from './localization/localized-messages.directive';
17
18
  export { Messages } from './localization/messages';
18
- export { GanttTreeListMessagesDirective } from './localization/treelist-messages.directive';
19
+ export { PreventableEvent } from './models/events/preventable-event';
19
20
  export { GanttHeaderTableBodyComponent } from './rendering/gantt-header-table-body.component';
20
21
  export { GanttMilestoneTaskComponent } from './rendering/gantt-milestone-task.component';
21
22
  export { GanttSummaryTaskComponent } from './rendering/gantt-summary-task.component';
@@ -13,6 +13,38 @@ var Messages = /** @class */ (function (_super) {
13
13
  function Messages() {
14
14
  return _super !== null && _super.apply(this, arguments) || this;
15
15
  }
16
+ tslib_1.__decorate([
17
+ Input(),
18
+ tslib_1.__metadata("design:type", String)
19
+ ], Messages.prototype, "taskEditingGeneralTabTitle", void 0);
20
+ tslib_1.__decorate([
21
+ Input(),
22
+ tslib_1.__metadata("design:type", String)
23
+ ], Messages.prototype, "taskEditingPredecessorsTabTitle", void 0);
24
+ tslib_1.__decorate([
25
+ Input(),
26
+ tslib_1.__metadata("design:type", String)
27
+ ], Messages.prototype, "taskEditingSuccessorsTabTitle", void 0);
28
+ tslib_1.__decorate([
29
+ Input(),
30
+ tslib_1.__metadata("design:type", String)
31
+ ], Messages.prototype, "taskEditingDependenciesAddButtonText", void 0);
32
+ tslib_1.__decorate([
33
+ Input(),
34
+ tslib_1.__metadata("design:type", String)
35
+ ], Messages.prototype, "taskEditingDependenciesRemoveButtonText", void 0);
36
+ tslib_1.__decorate([
37
+ Input(),
38
+ tslib_1.__metadata("design:type", String)
39
+ ], Messages.prototype, "taskEditingDependenciesGridNameColumnTitle", void 0);
40
+ tslib_1.__decorate([
41
+ Input(),
42
+ tslib_1.__metadata("design:type", String)
43
+ ], Messages.prototype, "taskEditingDependenciesGridTypeColumnTitle", void 0);
44
+ tslib_1.__decorate([
45
+ Input(),
46
+ tslib_1.__metadata("design:type", String)
47
+ ], Messages.prototype, "deleteButtonText", void 0);
16
48
  tslib_1.__decorate([
17
49
  Input(),
18
50
  tslib_1.__metadata("design:type", String)
@@ -36,7 +68,19 @@ var Messages = /** @class */ (function (_super) {
36
68
  tslib_1.__decorate([
37
69
  Input(),
38
70
  tslib_1.__metadata("design:type", String)
39
- ], Messages.prototype, "deleteButtonText", void 0);
71
+ ], Messages.prototype, "addTaskText", void 0);
72
+ tslib_1.__decorate([
73
+ Input(),
74
+ tslib_1.__metadata("design:type", String)
75
+ ], Messages.prototype, "addChildText", void 0);
76
+ tslib_1.__decorate([
77
+ Input(),
78
+ tslib_1.__metadata("design:type", String)
79
+ ], Messages.prototype, "addAboveText", void 0);
80
+ tslib_1.__decorate([
81
+ Input(),
82
+ tslib_1.__metadata("design:type", String)
83
+ ], Messages.prototype, "addBelowText", void 0);
40
84
  tslib_1.__decorate([
41
85
  Input(),
42
86
  tslib_1.__metadata("design:type", String)
@@ -2,3 +2,4 @@
2
2
  * Copyright © 2021 Progress Software Corporation. All rights reserved.
3
3
  * Licensed under commercial license. See LICENSE.md in the project root for more information
4
4
  *-------------------------------------------------------------------------------------------*/
5
+ export { CellCloseEvent } from './events/cell-close-event.interface';
@@ -9,7 +9,7 @@ export var packageMetadata = {
9
9
  name: '@progress/kendo-angular-gantt',
10
10
  productName: 'Kendo UI for Angular',
11
11
  productCodes: ['KENDOUIANGULAR', 'KENDOUICOMPLETE'],
12
- publishDate: 1638991092,
12
+ publishDate: 1639476447,
13
13
  version: '',
14
14
  licensingDocsUrl: 'https://www.telerik.com/kendo-angular-ui/my-license/?utm_medium=product&utm_source=kendoangular&utm_campaign=kendo-ui-angular-purchase-license-keys-warning'
15
15
  };
@@ -4,7 +4,7 @@
4
4
  *-------------------------------------------------------------------------------------------*/
5
5
  import * as tslib_1 from "tslib";
6
6
  import { Component, Input, TemplateRef, ViewChild, ElementRef } from '@angular/core';
7
- import { isEqualDate } from '@progress/kendo-date-math';
7
+ import { isEqual } from '@progress/kendo-date-math';
8
8
  import { DependencyDomService } from '../dependencies/dependency-dom.service';
9
9
  import { isPresent } from '../utils';
10
10
  import { MappingService } from '../common/mapping.service';
@@ -28,7 +28,7 @@ var GanttTasksTableBodyComponent = /** @class */ (function () {
28
28
  configurable: true
29
29
  });
30
30
  GanttTasksTableBodyComponent.prototype.isMileStone = function (task) {
31
- return !this.hasChildren(task) && isEqualDate(this.mapper.extractFromTask(task, 'start'), this.mapper.extractFromTask(task, 'end'));
31
+ return !this.hasChildren(task) && isEqual(this.mapper.extractFromTask(task, 'start'), this.mapper.extractFromTask(task, 'end'));
32
32
  };
33
33
  tslib_1.__decorate([
34
34
  ViewChild('timelineRow', { static: false }),
@@ -5,9 +5,18 @@
5
5
  import { orderBy } from '@progress/kendo-data-query';
6
6
  import { isWorkDay, isWorkHour, lastDayOfWeek } from '../utils';
7
7
  import { addDays, firstDayInWeek, getDate, firstDayOfMonth, lastDayOfMonth, addMonths, addWeeks } from '@progress/kendo-date-math';
8
- var DAY_FORMAT = 'E d/MM';
9
- var HOUR_FORMAT = 'HH:mm aa';
10
- var MONTH_FORMAT = 'MMM';
8
+ /**
9
+ * @hidden
10
+ */
11
+ export var DAY_FORMAT = 'E d/MM';
12
+ /**
13
+ * @hidden
14
+ */
15
+ export var HOUR_FORMAT = 'HH:mm aa';
16
+ /**
17
+ * @hidden
18
+ */
19
+ export var MONTH_FORMAT = 'MMM';
11
20
  /**
12
21
  * @hidden
13
22
  */
@@ -47,6 +47,14 @@ var ToolbarComponent = /** @class */ (function () {
47
47
  this.gantt.activeViewChange.emit(e);
48
48
  this.scrollSyncService.resetTimelineScrollLeft();
49
49
  };
50
+ tslib_1.__decorate([
51
+ Input(),
52
+ tslib_1.__metadata("design:type", Boolean)
53
+ ], ToolbarComponent.prototype, "showAddTask", void 0);
54
+ tslib_1.__decorate([
55
+ Input(),
56
+ tslib_1.__metadata("design:type", Boolean)
57
+ ], ToolbarComponent.prototype, "showViewSelector", void 0);
50
58
  tslib_1.__decorate([
51
59
  Input(),
52
60
  tslib_1.__metadata("design:type", String),
@@ -55,7 +63,7 @@ var ToolbarComponent = /** @class */ (function () {
55
63
  ToolbarComponent = tslib_1.__decorate([
56
64
  Component({
57
65
  selector: 'kendo-gantt-toolbar',
58
- template: "\n <ng-container *ngIf=\"!renderTemplate\">\n <span class=\"k-spacer k-toolbar-spacer\"></span>\n <kendo-gantt-view-selector\n [views]=\"gantt.viewTypes\"\n [activeView]=\"gantt.activeView\"\n (activeViewChange)=\"onViewChange($event)\"></kendo-gantt-view-selector>\n </ng-container>\n <ng-template\n *ngIf=\"renderTemplate\"\n [ngTemplateOutlet]=\"toolbarTemplateRef\"\n [ngTemplateOutletContext]=\"context\"\n >\n </ng-template>\n "
66
+ template: "\n <ng-container *ngIf=\"!renderTemplate\">\n <kendo-gantt-add-task *ngIf=\"showAddTask\"></kendo-gantt-add-task>\n <span class=\"k-spacer k-toolbar-spacer\"></span>\n <kendo-gantt-view-selector\n *ngIf=\"showViewSelector\"\n [views]=\"gantt.viewTypes\"\n [activeView]=\"gantt.activeView\"\n (activeViewChange)=\"onViewChange($event)\"></kendo-gantt-view-selector>\n </ng-container>\n <ng-template\n *ngIf=\"renderTemplate\"\n [ngTemplateOutlet]=\"toolbarTemplateRef\"\n [ngTemplateOutletContext]=\"context\"\n >\n </ng-template>\n "
59
67
  }),
60
68
  tslib_1.__metadata("design:paramtypes", [GanttComponent,
61
69
  ScrollSyncService])