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