@progress/kendo-angular-gantt 0.2.1-dev.202112101349 → 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 (49) 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/gantt.component.js +59 -15
  6. package/dist/es/gantt.module.js +3 -1
  7. package/dist/es/index.js +1 -0
  8. package/dist/es/localization/messages.js +45 -1
  9. package/dist/es/models/events/{add-event.interface.js → task-add-event.interface.js} +0 -0
  10. package/dist/es/models/{toolbar-position.js → toolbar-settings.js} +0 -0
  11. package/dist/es/package-metadata.js +1 -1
  12. package/dist/es/toolbar/toolbar.component.js +9 -1
  13. package/dist/es2015/editing/add-task.component.d.ts +45 -0
  14. package/dist/es2015/editing/add-task.component.js +102 -0
  15. package/dist/es2015/editing/edit.service.d.ts +3 -0
  16. package/dist/es2015/editing/edit.service.js +1 -0
  17. package/dist/es2015/gantt.component.d.ts +18 -8
  18. package/dist/es2015/gantt.component.js +91 -14
  19. package/dist/es2015/gantt.module.js +3 -1
  20. package/dist/es2015/index.d.ts +1 -0
  21. package/dist/es2015/index.js +1 -0
  22. package/dist/es2015/index.metadata.json +1 -1
  23. package/dist/es2015/localization/messages.d.ts +46 -2
  24. package/dist/es2015/localization/messages.js +45 -1
  25. package/dist/es2015/models/events/task-add-event.interface.d.ts +31 -0
  26. package/dist/es2015/models/events/{add-event.interface.js → task-add-event.interface.js} +0 -0
  27. package/dist/es2015/models/models.d.ts +2 -1
  28. package/dist/es2015/models/toolbar-settings.d.ts +29 -0
  29. package/dist/es2015/models/{toolbar-position.js → toolbar-settings.js} +0 -0
  30. package/dist/es2015/package-metadata.js +1 -1
  31. package/dist/es2015/toolbar/toolbar-template.directive.d.ts +1 -1
  32. package/dist/es2015/toolbar/toolbar.component.d.ts +2 -0
  33. package/dist/es2015/toolbar/toolbar.component.js +10 -0
  34. package/dist/fesm2015/index.js +245 -18
  35. package/dist/fesm5/index.js +204 -20
  36. package/dist/npm/editing/add-task.component.js +96 -0
  37. package/dist/npm/editing/edit.service.js +1 -0
  38. package/dist/npm/gantt.component.js +59 -15
  39. package/dist/npm/gantt.module.js +3 -1
  40. package/dist/npm/index.js +2 -0
  41. package/dist/npm/localization/messages.js +45 -1
  42. package/dist/npm/models/events/{add-event.interface.js → task-add-event.interface.js} +0 -0
  43. package/dist/npm/models/{toolbar-position.js → toolbar-settings.js} +0 -0
  44. package/dist/npm/package-metadata.js +1 -1
  45. package/dist/npm/toolbar/toolbar.component.js +9 -1
  46. package/dist/systemjs/kendo-angular-gantt.js +1 -1
  47. package/package.json +1 -1
  48. package/dist/es2015/models/events/add-event.interface.d.ts +0 -16
  49. package/dist/es2015/models/toolbar-position.d.ts +0 -9
@@ -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;
@@ -138,17 +138,6 @@ var GanttComponent = /** @class */ (function () {
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) {
@@ -357,6 +356,14 @@ var GanttComponent = /** @class */ (function () {
357
356
  _this.editService.dataItem = _this.editService.formGroup = null;
358
357
  _this.updateView();
359
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();
366
+ }));
360
367
  this.localizationSubscription = this.localizationService.changes.subscribe(function (_a) {
361
368
  var rtl = _a.rtl;
362
369
  _this.rtl = rtl;
@@ -461,6 +468,33 @@ var GanttComponent = /** @class */ (function () {
461
468
  enumerable: true,
462
469
  configurable: true
463
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
+ });
464
498
  Object.defineProperty(GanttComponent.prototype, "timelinePaneOptions", {
465
499
  get: function () {
466
500
  return tslib_1.__assign({}, this._timelinePaneOptions, { size: this.treeListPaneOptions.collapsed ? '100%' : this._timelinePaneOptions.size });
@@ -785,7 +819,7 @@ var GanttComponent = /** @class */ (function () {
785
819
  * @hidden
786
820
  */
787
821
  GanttComponent.prototype.showToolbar = function (position) {
788
- return this.toolbarPosition !== 'none' && ([position, 'both'].indexOf(this.toolbarPosition) > -1);
822
+ return this.toolbarSettings.position !== 'none' && ([position, 'both'].indexOf(this.toolbarSettings.position) > -1);
789
823
  };
790
824
  /**
791
825
  * @hidden
@@ -993,6 +1027,11 @@ var GanttComponent = /** @class */ (function () {
993
1027
  var shouldToggleSelection = ctrlKey || metaKey;
994
1028
  return (shouldToggleSelection && this.isSelected(dataItem)) ? 'remove' : 'select';
995
1029
  };
1030
+ GanttComponent.prototype.getFirstSelectedItem = function () {
1031
+ var isSelectedCallback = this.isSelected || isSelected;
1032
+ var loadedItems = this.renderedTreeListItems || [];
1033
+ return loadedItems.find(isSelectedCallback);
1034
+ };
996
1035
  var GanttComponent_1;
997
1036
  tslib_1.__decorate([
998
1037
  ViewChild(TreeListComponent, { static: true }),
@@ -1066,8 +1105,9 @@ var GanttComponent = /** @class */ (function () {
1066
1105
  ], GanttComponent.prototype, "selectable", void 0);
1067
1106
  tslib_1.__decorate([
1068
1107
  Input(),
1069
- tslib_1.__metadata("design:type", String)
1070
- ], GanttComponent.prototype, "toolbarPosition", void 0);
1108
+ tslib_1.__metadata("design:type", Object),
1109
+ tslib_1.__metadata("design:paramtypes", [Object])
1110
+ ], GanttComponent.prototype, "toolbarSettings", null);
1071
1111
  tslib_1.__decorate([
1072
1112
  Input(),
1073
1113
  tslib_1.__metadata("design:type", Function)
@@ -1188,6 +1228,10 @@ var GanttComponent = /** @class */ (function () {
1188
1228
  Output(),
1189
1229
  tslib_1.__metadata("design:type", EventEmitter)
1190
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);
1191
1235
  tslib_1.__decorate([
1192
1236
  Output(),
1193
1237
  tslib_1.__metadata("design:type", EventEmitter)
@@ -1264,7 +1308,7 @@ var GanttComponent = /** @class */ (function () {
1264
1308
  OptionChangesService,
1265
1309
  EditService
1266
1310
  ],
1267
- 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\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 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 "
1268
1312
  }),
1269
1313
  tslib_1.__metadata("design:paramtypes", [TimelineViewService,
1270
1314
  ScrollSyncService,
@@ -40,6 +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 { GanttAddTaskComponent } from './editing/add-task.component';
43
44
  var IMPORTED_MODULES = [
44
45
  CommonModule,
45
46
  ReactiveFormsModule,
@@ -87,7 +88,8 @@ var DECLARATIONS = [
87
88
  SelectableDirective,
88
89
  EditDialogComponent,
89
90
  CustomMessagesComponent,
90
- LocalizedMessagesDirective
91
+ LocalizedMessagesDirective,
92
+ GanttAddTaskComponent
91
93
  ];
92
94
  /**
93
95
  * Represents the [NgModule]({{ site.data.urls.angular['ngmoduleapi'] }})
package/dist/es/index.js CHANGED
@@ -10,6 +10,7 @@ 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';
@@ -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)
@@ -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: 1639143747,
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
  };
@@ -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])
@@ -0,0 +1,45 @@
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 { NgZone } from '@angular/core';
6
+ import { LocalizationService } from '@progress/kendo-angular-l10n';
7
+ import { PreventableEvent } from '@progress/kendo-angular-treelist';
8
+ import { GanttAddTaskActionItem } from '../models/events/task-add-event.interface';
9
+ import { EditService } from './edit.service';
10
+ /**
11
+ * The UI for adding new items to the Gantt.
12
+ * Use it within a toolbar template to provide a custom icon or list of options.
13
+ */
14
+ export declare class GanttAddTaskComponent {
15
+ private localizationService;
16
+ private editService;
17
+ private ngZone;
18
+ /**
19
+ * Sets the data of the DropDownButton.
20
+ * > The data has to be provided in an array-like list.
21
+ */
22
+ data: GanttAddTaskActionItem[];
23
+ /**
24
+ * Defines the name of an existing icon in a Kendo UI theme.
25
+ * @default 'plus'
26
+ */
27
+ icon: string;
28
+ constructor(localizationService: LocalizationService, editService: EditService, ngZone: NgZone);
29
+ /**
30
+ * @hidden
31
+ */
32
+ getText(message: string): string;
33
+ /**
34
+ * @hidden
35
+ */
36
+ handleOpen(e: PreventableEvent): void;
37
+ /**
38
+ * @hidden
39
+ */
40
+ handleMouseClick(): void;
41
+ /**
42
+ * @hidden
43
+ */
44
+ handleItemClick(e: any): void;
45
+ }
@@ -0,0 +1,102 @@
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
+ let GanttAddTaskComponent = class GanttAddTaskComponent {
14
+ constructor(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
+ getText(message) {
42
+ return this.localizationService.get(message);
43
+ }
44
+ /**
45
+ * @hidden
46
+ */
47
+ handleOpen(e) {
48
+ if (!this.editService.getSelectedItem()) {
49
+ e.preventDefault();
50
+ }
51
+ }
52
+ /**
53
+ * @hidden
54
+ */
55
+ handleMouseClick() {
56
+ if (!this.editService.getSelectedItem()) {
57
+ this.ngZone.run(() => {
58
+ this.editService.addEvent.next({
59
+ selectedItem: null,
60
+ actionType: 'addTask'
61
+ });
62
+ });
63
+ }
64
+ }
65
+ /**
66
+ * @hidden
67
+ */
68
+ handleItemClick(e) {
69
+ this.editService.addEvent.next({
70
+ actionType: e.type,
71
+ selectedItem: null
72
+ });
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: `
87
+ <kendo-dropdownbutton
88
+ [data]="data"
89
+ [icon]="icon"
90
+ [kendoEventsOutsideAngular]="{ click: handleMouseClick }"
91
+ [scope]="this"
92
+ (itemClick)="handleItemClick($event)"
93
+ (open)="handleOpen($event)">
94
+ {{ getText('addTaskText') }}
95
+ </kendo-dropdownbutton>
96
+ `
97
+ }),
98
+ tslib_1.__metadata("design:paramtypes", [LocalizationService,
99
+ EditService,
100
+ NgZone])
101
+ ], GanttAddTaskComponent);
102
+ export { GanttAddTaskComponent };
@@ -4,6 +4,7 @@
4
4
  *-------------------------------------------------------------------------------------------*/
5
5
  import { FormGroup } from '@angular/forms';
6
6
  import { Subject } from 'rxjs';
7
+ import { TaskAddEvent } from '../models/events/task-add-event.interface';
7
8
  import { EditEvent, EditResultType } from '../models/events/task-edit-event.interface';
8
9
  /**
9
10
  * @hidden
@@ -12,8 +13,10 @@ export declare class EditService {
12
13
  showEditingDialog: Subject<boolean>;
13
14
  showConfirmationDialog: Subject<any>;
14
15
  editEvent: Subject<EditEvent>;
16
+ addEvent: Subject<TaskAddEvent>;
15
17
  formGroup: FormGroup;
16
18
  dataItem: any;
19
+ getSelectedItem: () => any;
17
20
  createEditDialog(dataItem: any, formGroup: FormGroup): void;
18
21
  closeEditDialog(): void;
19
22
  triggerEditEvent(editResultType: EditResultType): void;