@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
@@ -5,7 +5,7 @@
5
5
  import { __extends, __decorate, __metadata, __param, __assign } from 'tslib';
6
6
  import { Input, Injectable, EventEmitter, Directive, Optional, TemplateRef, QueryList, ContentChildren, ContentChild, Component, forwardRef, SkipSelf, Host, Injector, NgZone, isDevMode, ViewChild, HostBinding, Output, Renderer2, ElementRef, ChangeDetectorRef, NgModule } from '@angular/core';
7
7
  import { ColumnBase, ColumnComponent, ColumnGroupComponent, SpanColumnComponent, TreeListComponent, DataBoundTreeComponent, ExpandableTreeComponent, FlatBindingDirective, HierarchyBindingDirective, ExpandableDirective, TreeListModule } from '@progress/kendo-angular-treelist';
8
- import { cloneDate, addWeeks, firstDayInWeek, addDays, getDate, lastDayOfMonth, firstDayOfMonth, addMonths, isEqualDate, MS_PER_HOUR, MS_PER_DAY } from '@progress/kendo-date-math';
8
+ import { cloneDate, addWeeks, firstDayInWeek, addDays, getDate, lastDayOfMonth, firstDayOfMonth, addMonths, isEqual, MS_PER_HOUR, MS_PER_DAY } from '@progress/kendo-date-math';
9
9
  import { of, fromEvent, Subject, Subscription } from 'rxjs';
10
10
  import { validatePackage } from '@progress/kendo-licensing';
11
11
  import { isDocumentAvailable, closestInScope, matchesClasses, anyChanged, hasObservers, EventsModule } from '@progress/kendo-angular-common';
@@ -30,7 +30,7 @@ var packageMetadata = {
30
30
  name: '@progress/kendo-angular-gantt',
31
31
  productName: 'Kendo UI for Angular',
32
32
  productCodes: ['KENDOUIANGULAR', 'KENDOUICOMPLETE'],
33
- publishDate: 1638991092,
33
+ publishDate: 1639476447,
34
34
  version: '',
35
35
  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'
36
36
  };
@@ -789,8 +789,17 @@ var isClearButton = function (contender, gantt) {
789
789
  return isPresent(clearButtonContainer);
790
790
  };
791
791
 
792
+ /**
793
+ * @hidden
794
+ */
792
795
  var DAY_FORMAT = 'E d/MM';
796
+ /**
797
+ * @hidden
798
+ */
793
799
  var HOUR_FORMAT = 'HH:mm aa';
800
+ /**
801
+ * @hidden
802
+ */
794
803
  var MONTH_FORMAT = 'MMM';
795
804
  /**
796
805
  * @hidden
@@ -1375,6 +1384,7 @@ var EditService = /** @class */ (function () {
1375
1384
  this.showEditingDialog = new Subject();
1376
1385
  this.showConfirmationDialog = new Subject();
1377
1386
  this.editEvent = new Subject();
1387
+ this.addEvent = new Subject();
1378
1388
  }
1379
1389
  EditService.prototype.createEditDialog = function (dataItem, formGroup) {
1380
1390
  this.dataItem = dataItem;
@@ -1797,7 +1807,7 @@ var GanttComponent = /** @class */ (function () {
1797
1807
  /**
1798
1808
  * Provides a callback that determines if the given task is selected ([see example]({% slug selection_gantt %}#toc-custom-selection))
1799
1809
  *
1800
- * > The [`selectable`]({% slug gantt_api_ganttcomponent %}#toc-selectable) prop has to be set to `true` in order for this callback to be executed.
1810
+ * > The [`selectable`]({% slug api_gantt_ganttcomponent %}#toc-selectable) prop has to be set to `true` in order for this callback to be executed.
1801
1811
  */
1802
1812
  this.isSelected = isSelected;
1803
1813
  /**
@@ -1811,21 +1821,10 @@ var GanttComponent = /** @class */ (function () {
1811
1821
  /**
1812
1822
  * Enables or disables the Gantt selection mechanism ([see example]({% slug selection_gantt %}#toc-custom-selection)).
1813
1823
  *
1814
- * > When set to `true`, the [`isSelected`]({% slug gantt_api_ganttcomponent %}#toc-isselected) callback has to be provided.
1824
+ * > When set to `true`, the [`isSelected`]({% slug api_gantt_ganttcomponent %}#toc-isselected) callback has to be provided.
1815
1825
  * > When applied, the [`SelectableDirective`]({% slug api_gantt_selectabledirective %}) sets `selectable` to `true` internally.
1816
1826
  */
1817
1827
  this.selectable = false;
1818
- /**
1819
- * The position of the toolbar.
1820
- *
1821
- * The possible values are:
1822
- * - `top`—Positions the toolbar above the Gantt panes.
1823
- * - `bottom`—Positions the toolbar below the Gantt panes.
1824
- * - `both`—Displays two toolbar instances. Positions the first one above,
1825
- * and the second one - below the Gantt panes.
1826
- * - `none`—No toolbar is rendered.
1827
- */
1828
- this.toolbarPosition = 'top';
1829
1828
  /**
1830
1829
  * Gets or sets the callback function that retrieves the child items for a particular item.
1831
1830
  */
@@ -1935,6 +1934,10 @@ var GanttComponent = /** @class */ (function () {
1935
1934
  * Fires when the user saves an edited task.
1936
1935
  */
1937
1936
  this.save = new EventEmitter();
1937
+ /**
1938
+ * Fires when the user adds a task.
1939
+ */
1940
+ this.taskAdd = new EventEmitter();
1938
1941
  /**
1939
1942
  * Fires when the sorting of the Gantt is changed.
1940
1943
  * You have to handle the event yourself and sort the data.
@@ -2012,6 +2015,11 @@ var GanttComponent = /** @class */ (function () {
2012
2015
  this._rowClass = rowClassCallback;
2013
2016
  this._taskClass = taskClassCallback;
2014
2017
  this._activeView = DEFAULT_VIEW;
2018
+ this._toolbarSettings = {
2019
+ position: 'top',
2020
+ addTaskTool: 'none',
2021
+ viewSelectorTool: 'top'
2022
+ };
2015
2023
  this.rtl = false;
2016
2024
  this.optionChangesSubscriptions = new Subscription();
2017
2025
  this.editServiceSubscription = new Subscription();
@@ -2022,6 +2030,7 @@ var GanttComponent = /** @class */ (function () {
2022
2030
  this.optionChangesSubscriptions.add(this.optionChangesService.columnChanges.subscribe(function () {
2023
2031
  _this.treeList.columns.notifyOnChanges();
2024
2032
  }));
2033
+ this.editService.getSelectedItem = this.getFirstSelectedItem.bind(this);
2025
2034
  this.editServiceSubscription.add(this.editService.showEditingDialog.subscribe(function (show) { return _this.showEditingDialog = show; }));
2026
2035
  this.editServiceSubscription.add(this.editService.showConfirmationDialog.subscribe(function () { return _this.taskDelete.emit(); }));
2027
2036
  this.editServiceSubscription.add(this.editService.editEvent.subscribe(function (args) {
@@ -2033,7 +2042,14 @@ var GanttComponent = /** @class */ (function () {
2033
2042
  _this.showConfirmationDialog = _this.showEditingDialog = false;
2034
2043
  _this.editService.dataItem = _this.editService.formGroup = null;
2035
2044
  _this.updateView();
2036
- _this.dependencyDomService.notifyChanges();
2045
+ }));
2046
+ this.editServiceSubscription.add(this.editService.addEvent.subscribe(function (args) {
2047
+ var selectedItem = _this.getFirstSelectedItem();
2048
+ _this.taskAdd.emit({
2049
+ actionType: args.actionType,
2050
+ selectedItem: selectedItem ? getEditItem(selectedItem, _this.treeList.view.data, _this.mapper) : null
2051
+ });
2052
+ _this.updateView();
2037
2053
  }));
2038
2054
  this.localizationSubscription = this.localizationService.changes.subscribe(function (_a) {
2039
2055
  var rtl = _a.rtl;
@@ -2139,6 +2155,33 @@ var GanttComponent = /** @class */ (function () {
2139
2155
  enumerable: true,
2140
2156
  configurable: true
2141
2157
  });
2158
+ Object.defineProperty(GanttComponent.prototype, "toolbarSettings", {
2159
+ get: function () {
2160
+ return this._toolbarSettings;
2161
+ },
2162
+ /**
2163
+ * The toolbar configuration. Defines the position and content of the toolbar(s).
2164
+ * The available properties are `position`, `addTaskTool`, and `viewSelectorTool`.
2165
+ * All are optional and default to `top`.
2166
+ *
2167
+ * The possible values for each option are:
2168
+ * - `top`—Positions the toolbar above the Gantt panes. Renders the respective tool in the top toolbar.
2169
+ * - `bottom`—Positions the toolbar below the Gantt panes. Renders the respective tool in the bottom toolbar.
2170
+ * - `both`—Displays two toolbar instances. Positions the first one above,
2171
+ * and the second one - below the Gantt panes. Renders the respective tool in the both toolbars.
2172
+ * - `none`—No toolbar is rendered when used for setting `position`.
2173
+ * No add task or view selector tool is rendered when used for setting `addTaskTool` or `viewSelectorTool`.
2174
+ */
2175
+ set: function (value) {
2176
+ this._toolbarSettings = {
2177
+ position: value.position || 'top',
2178
+ addTaskTool: value.addTaskTool || 'none',
2179
+ viewSelectorTool: value.viewSelectorTool || 'top'
2180
+ };
2181
+ },
2182
+ enumerable: true,
2183
+ configurable: true
2184
+ });
2142
2185
  Object.defineProperty(GanttComponent.prototype, "timelinePaneOptions", {
2143
2186
  get: function () {
2144
2187
  return __assign({}, this._timelinePaneOptions, { size: this.treeListPaneOptions.collapsed ? '100%' : this._timelinePaneOptions.size });
@@ -2373,12 +2416,17 @@ var GanttComponent = /** @class */ (function () {
2373
2416
  }
2374
2417
  };
2375
2418
  /**
2376
- * Updates the data of the Gantt and forces row-related callbacks to be called anew.
2419
+ * Forces the TreeList to evaluate if some data items have changed and re-renders the rows information, if needed.
2420
+ * Recalculates and re-renders the Timeline period, if needed.
2421
+ * Redraws changed dependencies, if needed.
2422
+ * Executes all row-related callbacks anew.
2377
2423
  */
2378
2424
  GanttComponent.prototype.updateView = function () {
2379
2425
  if (isPresent(this.treeList)) {
2380
2426
  this.treeList.updateView();
2381
2427
  }
2428
+ this.loadTimelineData();
2429
+ this.dependencyDomService.notifyChanges();
2382
2430
  };
2383
2431
  /**
2384
2432
  * Opens the task editing dialog.
@@ -2458,7 +2506,7 @@ var GanttComponent = /** @class */ (function () {
2458
2506
  * @hidden
2459
2507
  */
2460
2508
  GanttComponent.prototype.showToolbar = function (position) {
2461
- return this.toolbarPosition !== 'none' && ([position, 'both'].indexOf(this.toolbarPosition) > -1);
2509
+ return this.toolbarSettings.position !== 'none' && ([position, 'both'].indexOf(this.toolbarSettings.position) > -1);
2462
2510
  };
2463
2511
  /**
2464
2512
  * @hidden
@@ -2626,7 +2674,7 @@ var GanttComponent = /** @class */ (function () {
2626
2674
  items: [dataItem],
2627
2675
  sender: this
2628
2676
  });
2629
- this.updateView();
2677
+ this.treeList.updateView();
2630
2678
  };
2631
2679
  GanttComponent.prototype.updateTreeListGroupClass = function (columns) {
2632
2680
  if (columns === void 0) { columns = this.columns; }
@@ -2666,6 +2714,11 @@ var GanttComponent = /** @class */ (function () {
2666
2714
  var shouldToggleSelection = ctrlKey || metaKey;
2667
2715
  return (shouldToggleSelection && this.isSelected(dataItem)) ? 'remove' : 'select';
2668
2716
  };
2717
+ GanttComponent.prototype.getFirstSelectedItem = function () {
2718
+ var isSelectedCallback = this.isSelected || isSelected;
2719
+ var loadedItems = this.renderedTreeListItems || [];
2720
+ return loadedItems.find(isSelectedCallback);
2721
+ };
2669
2722
  var GanttComponent_1;
2670
2723
  __decorate([
2671
2724
  ViewChild(TreeListComponent, { static: true }),
@@ -2739,8 +2792,9 @@ var GanttComponent = /** @class */ (function () {
2739
2792
  ], GanttComponent.prototype, "selectable", void 0);
2740
2793
  __decorate([
2741
2794
  Input(),
2742
- __metadata("design:type", String)
2743
- ], GanttComponent.prototype, "toolbarPosition", void 0);
2795
+ __metadata("design:type", Object),
2796
+ __metadata("design:paramtypes", [Object])
2797
+ ], GanttComponent.prototype, "toolbarSettings", null);
2744
2798
  __decorate([
2745
2799
  Input(),
2746
2800
  __metadata("design:type", Function)
@@ -2861,6 +2915,10 @@ var GanttComponent = /** @class */ (function () {
2861
2915
  Output(),
2862
2916
  __metadata("design:type", EventEmitter)
2863
2917
  ], GanttComponent.prototype, "save", void 0);
2918
+ __decorate([
2919
+ Output(),
2920
+ __metadata("design:type", EventEmitter)
2921
+ ], GanttComponent.prototype, "taskAdd", void 0);
2864
2922
  __decorate([
2865
2923
  Output(),
2866
2924
  __metadata("design:type", EventEmitter)
@@ -2937,7 +2995,7 @@ var GanttComponent = /** @class */ (function () {
2937
2995
  OptionChangesService,
2938
2996
  EditService
2939
2997
  ],
2940
- 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 "
2998
+ 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 "
2941
2999
  }),
2942
3000
  __metadata("design:paramtypes", [TimelineViewService,
2943
3001
  ScrollSyncService,
@@ -3091,7 +3149,7 @@ var GanttTasksTableBodyComponent = /** @class */ (function () {
3091
3149
  configurable: true
3092
3150
  });
3093
3151
  GanttTasksTableBodyComponent.prototype.isMileStone = function (task) {
3094
- return !this.hasChildren(task) && isEqualDate(this.mapper.extractFromTask(task, 'start'), this.mapper.extractFromTask(task, 'end'));
3152
+ return !this.hasChildren(task) && isEqual(this.mapper.extractFromTask(task, 'start'), this.mapper.extractFromTask(task, 'end'));
3095
3153
  };
3096
3154
  __decorate([
3097
3155
  ViewChild('timelineRow', { static: false }),
@@ -3467,9 +3525,8 @@ var GanttHierarchyBindingDirective = /** @class */ (function (_super) {
3467
3525
  */
3468
3526
  var GanttExpandableDirective = /** @class */ (function (_super) {
3469
3527
  __extends(GanttExpandableDirective, _super);
3470
- // fixes an injection error in some builds/ng-versions (e.g. StackBlitz)
3471
- function GanttExpandableDirective(gantt) {
3472
- return _super.call(this, gantt) || this;
3528
+ function GanttExpandableDirective() {
3529
+ return _super !== null && _super.apply(this, arguments) || this;
3473
3530
  }
3474
3531
  __decorate([
3475
3532
  Input(),
@@ -3479,8 +3536,7 @@ var GanttExpandableDirective = /** @class */ (function (_super) {
3479
3536
  Directive({
3480
3537
  exportAs: 'kendoGanttExpandable',
3481
3538
  selector: '[kendoGanttExpandable]'
3482
- }),
3483
- __metadata("design:paramtypes", [ExpandableTreeComponent])
3539
+ })
3484
3540
  ], GanttExpandableDirective);
3485
3541
  return GanttExpandableDirective;
3486
3542
  }(ExpandableDirective));
@@ -3658,6 +3714,14 @@ var ToolbarComponent = /** @class */ (function () {
3658
3714
  this.gantt.activeViewChange.emit(e);
3659
3715
  this.scrollSyncService.resetTimelineScrollLeft();
3660
3716
  };
3717
+ __decorate([
3718
+ Input(),
3719
+ __metadata("design:type", Boolean)
3720
+ ], ToolbarComponent.prototype, "showAddTask", void 0);
3721
+ __decorate([
3722
+ Input(),
3723
+ __metadata("design:type", Boolean)
3724
+ ], ToolbarComponent.prototype, "showViewSelector", void 0);
3661
3725
  __decorate([
3662
3726
  Input(),
3663
3727
  __metadata("design:type", String),
@@ -3666,7 +3730,7 @@ var ToolbarComponent = /** @class */ (function () {
3666
3730
  ToolbarComponent = __decorate([
3667
3731
  Component({
3668
3732
  selector: 'kendo-gantt-toolbar',
3669
- 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 "
3733
+ 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 "
3670
3734
  }),
3671
3735
  __metadata("design:paramtypes", [GanttComponent,
3672
3736
  ScrollSyncService])
@@ -4095,6 +4159,38 @@ var Messages = /** @class */ (function (_super) {
4095
4159
  function Messages() {
4096
4160
  return _super !== null && _super.apply(this, arguments) || this;
4097
4161
  }
4162
+ __decorate([
4163
+ Input(),
4164
+ __metadata("design:type", String)
4165
+ ], Messages.prototype, "taskEditingGeneralTabTitle", void 0);
4166
+ __decorate([
4167
+ Input(),
4168
+ __metadata("design:type", String)
4169
+ ], Messages.prototype, "taskEditingPredecessorsTabTitle", void 0);
4170
+ __decorate([
4171
+ Input(),
4172
+ __metadata("design:type", String)
4173
+ ], Messages.prototype, "taskEditingSuccessorsTabTitle", void 0);
4174
+ __decorate([
4175
+ Input(),
4176
+ __metadata("design:type", String)
4177
+ ], Messages.prototype, "taskEditingDependenciesAddButtonText", void 0);
4178
+ __decorate([
4179
+ Input(),
4180
+ __metadata("design:type", String)
4181
+ ], Messages.prototype, "taskEditingDependenciesRemoveButtonText", void 0);
4182
+ __decorate([
4183
+ Input(),
4184
+ __metadata("design:type", String)
4185
+ ], Messages.prototype, "taskEditingDependenciesGridNameColumnTitle", void 0);
4186
+ __decorate([
4187
+ Input(),
4188
+ __metadata("design:type", String)
4189
+ ], Messages.prototype, "taskEditingDependenciesGridTypeColumnTitle", void 0);
4190
+ __decorate([
4191
+ Input(),
4192
+ __metadata("design:type", String)
4193
+ ], Messages.prototype, "deleteButtonText", void 0);
4098
4194
  __decorate([
4099
4195
  Input(),
4100
4196
  __metadata("design:type", String)
@@ -4118,7 +4214,19 @@ var Messages = /** @class */ (function (_super) {
4118
4214
  __decorate([
4119
4215
  Input(),
4120
4216
  __metadata("design:type", String)
4121
- ], Messages.prototype, "deleteButtonText", void 0);
4217
+ ], Messages.prototype, "addTaskText", void 0);
4218
+ __decorate([
4219
+ Input(),
4220
+ __metadata("design:type", String)
4221
+ ], Messages.prototype, "addChildText", void 0);
4222
+ __decorate([
4223
+ Input(),
4224
+ __metadata("design:type", String)
4225
+ ], Messages.prototype, "addAboveText", void 0);
4226
+ __decorate([
4227
+ Input(),
4228
+ __metadata("design:type", String)
4229
+ ], Messages.prototype, "addBelowText", void 0);
4122
4230
  __decorate([
4123
4231
  Input(),
4124
4232
  __metadata("design:type", String)
@@ -4390,27 +4498,89 @@ var LocalizedMessagesDirective = /** @class */ (function (_super) {
4390
4498
  }(Messages));
4391
4499
 
4392
4500
  /**
4393
- * @hidden
4501
+ * The UI for adding new items to the Gantt.
4502
+ * Use it within a toolbar template to provide a custom icon or list of options.
4394
4503
  */
4395
- var GanttTreeListMessagesDirective = /** @class */ (function () {
4396
- function GanttTreeListMessagesDirective(localizationService) {
4504
+ var GanttAddTaskComponent = /** @class */ (function () {
4505
+ function GanttAddTaskComponent(localizationService, editService, ngZone) {
4397
4506
  this.localizationService = localizationService;
4507
+ this.editService = editService;
4508
+ this.ngZone = ngZone;
4509
+ /**
4510
+ * Sets the data of the DropDownButton.
4511
+ * > The data has to be provided in an array-like list.
4512
+ */
4513
+ this.data = [{
4514
+ text: this.getText('addChildText'),
4515
+ type: 'addChild'
4516
+ }, {
4517
+ text: this.getText('addAboveText'),
4518
+ type: 'addAbove'
4519
+ }, {
4520
+ text: this.getText('addBelowText'),
4521
+ type: 'addBelow'
4522
+ }];
4523
+ /**
4524
+ * Defines the name of an existing icon in a Kendo UI theme.
4525
+ * @default 'plus'
4526
+ */
4527
+ this.icon = 'plus';
4398
4528
  }
4399
- GanttTreeListMessagesDirective.prototype.ngAfterViewInit = function () {
4529
+ /**
4530
+ * @hidden
4531
+ */
4532
+ GanttAddTaskComponent.prototype.getText = function (message) {
4533
+ return this.localizationService.get(message);
4534
+ };
4535
+ /**
4536
+ * @hidden
4537
+ */
4538
+ GanttAddTaskComponent.prototype.handleOpen = function (e) {
4539
+ if (!this.editService.getSelectedItem()) {
4540
+ e.preventDefault();
4541
+ }
4542
+ };
4543
+ /**
4544
+ * @hidden
4545
+ */
4546
+ GanttAddTaskComponent.prototype.handleMouseClick = function () {
4400
4547
  var _this = this;
4401
- var treeListServiceDictionary = this.localizationService.dictionary;
4402
- Object.keys(treeListServiceDictionary)
4403
- .forEach(function (token) { return treeListServiceDictionary[token] = _this.kendoGanttTreeListMessages.get(token.replace('kendo.treelist.', '')); });
4548
+ if (!this.editService.getSelectedItem()) {
4549
+ this.ngZone.run(function () {
4550
+ _this.editService.addEvent.next({
4551
+ selectedItem: null,
4552
+ actionType: 'addTask'
4553
+ });
4554
+ });
4555
+ }
4556
+ };
4557
+ /**
4558
+ * @hidden
4559
+ */
4560
+ GanttAddTaskComponent.prototype.handleItemClick = function (e) {
4561
+ this.editService.addEvent.next({
4562
+ actionType: e.type,
4563
+ selectedItem: null
4564
+ });
4404
4565
  };
4405
4566
  __decorate([
4406
4567
  Input(),
4407
- __metadata("design:type", LocalizationService)
4408
- ], GanttTreeListMessagesDirective.prototype, "kendoGanttTreeListMessages", void 0);
4409
- GanttTreeListMessagesDirective = __decorate([
4410
- Directive({ selector: '[kendoGanttTreeListMessages]' }),
4411
- __metadata("design:paramtypes", [LocalizationService])
4412
- ], GanttTreeListMessagesDirective);
4413
- return GanttTreeListMessagesDirective;
4568
+ __metadata("design:type", Array)
4569
+ ], GanttAddTaskComponent.prototype, "data", void 0);
4570
+ __decorate([
4571
+ Input(),
4572
+ __metadata("design:type", String)
4573
+ ], GanttAddTaskComponent.prototype, "icon", void 0);
4574
+ GanttAddTaskComponent = __decorate([
4575
+ Component({
4576
+ selector: 'kendo-gantt-add-task',
4577
+ 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 "
4578
+ }),
4579
+ __metadata("design:paramtypes", [LocalizationService,
4580
+ EditService,
4581
+ NgZone])
4582
+ ], GanttAddTaskComponent);
4583
+ return GanttAddTaskComponent;
4414
4584
  }());
4415
4585
 
4416
4586
  var IMPORTED_MODULES = [
@@ -4461,7 +4631,7 @@ var DECLARATIONS = [
4461
4631
  EditDialogComponent,
4462
4632
  CustomMessagesComponent,
4463
4633
  LocalizedMessagesDirective,
4464
- GanttTreeListMessagesDirective
4634
+ GanttAddTaskComponent
4465
4635
  ];
4466
4636
  /**
4467
4637
  * Represents the [NgModule]({{ site.data.urls.angular['ngmoduleapi'] }})
@@ -4511,8 +4681,49 @@ var GanttModule = /** @class */ (function () {
4511
4681
  return GanttModule;
4512
4682
  }());
4513
4683
 
4684
+ /**
4685
+ * @hidden
4686
+ */
4687
+ var PreventableEvent = /** @class */ (function () {
4688
+ function PreventableEvent() {
4689
+ this.prevented = false;
4690
+ }
4691
+ /**
4692
+ * Prevents the default action for a specified event.
4693
+ * In this way, the source component suppresses
4694
+ * the built-in behavior that follows the event.
4695
+ */
4696
+ PreventableEvent.prototype.preventDefault = function () {
4697
+ this.prevented = true;
4698
+ };
4699
+ /**
4700
+ * Returns `true` if the event was prevented
4701
+ * by any of its subscribers.
4702
+ *
4703
+ * @returns `true` if the default action was prevented.
4704
+ * Otherwise, returns `false`.
4705
+ */
4706
+ PreventableEvent.prototype.isDefaultPrevented = function () {
4707
+ return this.prevented;
4708
+ };
4709
+ return PreventableEvent;
4710
+ }());
4711
+
4712
+ /**
4713
+ * Called every time a user leaves an edited cell.
4714
+ */
4715
+ var CellCloseEvent = /** @class */ (function (_super) {
4716
+ __extends(CellCloseEvent, _super);
4717
+ function CellCloseEvent(options) {
4718
+ var _this = _super.call(this) || this;
4719
+ Object.assign(_this, options);
4720
+ return _this;
4721
+ }
4722
+ return CellCloseEvent;
4723
+ }(PreventableEvent));
4724
+
4514
4725
  /**
4515
4726
  * Generated bundle index. Do not edit.
4516
4727
  */
4517
4728
 
4518
- export { MappingService, OptionChangesService, DependencyDomService, GanttDependencyDirective, EditDialogComponent, EditService, CustomMessagesComponent, LocalizedMessagesDirective, Messages, GanttTreeListMessagesDirective, GanttHeaderTableBodyComponent, GanttMilestoneTaskComponent, GanttSummaryTaskComponent, GanttTaskBase, GanttTaskComponent, GanttTasksTableBodyComponent, ScrollSyncService, GanttTimelineComponent, TimelineBaseViewService, TimelineDayViewComponent, TimelineDayViewService, TimelineMonthViewComponent, TimelineMonthViewService, TimelineViewService, TimelineWeekViewComponent, TimelineWeekViewService, ViewBase, ToolbarComponent, ViewSelectorComponent, GanttComponent, GanttModule, GanttHierarchyBindingDirective, GanttFlatBindingDirective, GanttExpandableDirective, GanttTaskTemplateDirective, GanttTaskContentTemplateDirective, GanttSummaryTaskTemplateDirective, ToolbarTemplateDirective, SelectableDirective, GanttColumnBase, GanttColumnComponent, GanttColumnGroupComponent, GanttSpanColumnComponent, CellTemplateDirective, HeaderTemplateDirective, FooterTemplateDirective, ColumnMenuTemplateDirective, FilterCellTemplateDirective, FilterMenuTemplateDirective, EditTemplateDirective };
4729
+ export { MappingService, OptionChangesService, DependencyDomService, GanttDependencyDirective, GanttAddTaskComponent, EditDialogComponent, EditService, CustomMessagesComponent, LocalizedMessagesDirective, Messages, PreventableEvent, GanttHeaderTableBodyComponent, GanttMilestoneTaskComponent, GanttSummaryTaskComponent, GanttTaskBase, GanttTaskComponent, GanttTasksTableBodyComponent, ScrollSyncService, GanttTimelineComponent, TimelineBaseViewService, TimelineDayViewComponent, TimelineDayViewService, TimelineMonthViewComponent, TimelineMonthViewService, TimelineViewService, TimelineWeekViewComponent, TimelineWeekViewService, ViewBase, ToolbarComponent, ViewSelectorComponent, GanttComponent, GanttModule, GanttHierarchyBindingDirective, GanttFlatBindingDirective, GanttExpandableDirective, GanttTaskTemplateDirective, GanttTaskContentTemplateDirective, GanttSummaryTaskTemplateDirective, ToolbarTemplateDirective, SelectableDirective, CellCloseEvent, GanttColumnBase, GanttColumnComponent, GanttColumnGroupComponent, GanttSpanColumnComponent, CellTemplateDirective, HeaderTemplateDirective, FooterTemplateDirective, ColumnMenuTemplateDirective, FilterCellTemplateDirective, FilterMenuTemplateDirective, EditTemplateDirective };