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

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 (82) hide show
  1. package/dist/cdn/js/kendo-angular-gantt.js +2 -2
  2. package/dist/cdn/main.js +2 -2
  3. package/dist/es/editing/edit-dialog.component.js +3 -3
  4. package/dist/es/editing/edit.service.js +4 -2
  5. package/dist/es/gantt.component.js +191 -24
  6. package/dist/es/index.js +1 -0
  7. package/dist/es/models/events/task-delete-event.interface.js +4 -0
  8. package/dist/es/navigation/navigation-models.js +4 -0
  9. package/dist/es/navigation/navigation.service.js +390 -0
  10. package/dist/es/navigation/utils.js +77 -0
  11. package/dist/es/package-metadata.js +1 -1
  12. package/dist/es/rendering/gantt-milestone-task.component.js +7 -4
  13. package/dist/es/rendering/gantt-summary-task.component.js +22 -4
  14. package/dist/es/rendering/gantt-task-base.js +57 -6
  15. package/dist/es/rendering/gantt-task.component.js +9 -6
  16. package/dist/es/rendering/gantt-tasks-table-body.component.js +9 -5
  17. package/dist/es/timeline/gantt-timeline.component.js +10 -6
  18. package/dist/es/toolbar/toolbar.component.js +12 -13
  19. package/dist/es/toolbar/view-selector.component.js +1 -1
  20. package/dist/es/utils.js +14 -4
  21. package/dist/es2015/editing/edit-dialog.component.d.ts +1 -1
  22. package/dist/es2015/editing/edit-dialog.component.js +11 -3
  23. package/dist/es2015/editing/edit.service.d.ts +2 -3
  24. package/dist/es2015/editing/edit.service.js +4 -2
  25. package/dist/es2015/editing/utils.d.ts +2 -2
  26. package/dist/es2015/gantt.component.d.ts +75 -16
  27. package/dist/es2015/gantt.component.js +177 -26
  28. package/dist/es2015/index.d.ts +1 -0
  29. package/dist/es2015/index.js +1 -0
  30. package/dist/es2015/index.metadata.json +1 -1
  31. package/dist/es2015/models/events/task-click-event.interface.d.ts +3 -3
  32. package/dist/es2015/models/events/task-delete-event.interface.d.ts +21 -0
  33. package/dist/es2015/models/events/task-delete-event.interface.js +4 -0
  34. package/dist/es2015/models/events/task-edit-event.interface.d.ts +27 -10
  35. package/dist/es2015/models/models.d.ts +2 -0
  36. package/dist/es2015/navigation/navigation-models.d.ts +34 -0
  37. package/dist/es2015/navigation/navigation-models.js +4 -0
  38. package/dist/es2015/navigation/navigation.service.d.ts +126 -0
  39. package/dist/es2015/navigation/navigation.service.js +355 -0
  40. package/dist/es2015/navigation/utils.d.ts +26 -0
  41. package/dist/es2015/navigation/utils.js +69 -0
  42. package/dist/es2015/package-metadata.js +1 -1
  43. package/dist/es2015/rendering/gantt-milestone-task.component.d.ts +2 -1
  44. package/dist/es2015/rendering/gantt-milestone-task.component.js +18 -4
  45. package/dist/es2015/rendering/gantt-summary-task.component.d.ts +4 -1
  46. package/dist/es2015/rendering/gantt-summary-task.component.js +30 -4
  47. package/dist/es2015/rendering/gantt-task-base.d.ts +10 -2
  48. package/dist/es2015/rendering/gantt-task-base.js +48 -6
  49. package/dist/es2015/rendering/gantt-task.component.d.ts +3 -2
  50. package/dist/es2015/rendering/gantt-task.component.js +31 -9
  51. package/dist/es2015/rendering/gantt-tasks-table-body.component.d.ts +5 -3
  52. package/dist/es2015/rendering/gantt-tasks-table-body.component.js +23 -12
  53. package/dist/es2015/scrolling/scroll-sync.service.d.ts +1 -1
  54. package/dist/es2015/timeline/gantt-timeline.component.d.ts +5 -3
  55. package/dist/es2015/timeline/gantt-timeline.component.js +15 -6
  56. package/dist/es2015/toolbar/toolbar.component.d.ts +4 -5
  57. package/dist/es2015/toolbar/toolbar.component.js +12 -13
  58. package/dist/es2015/toolbar/view-selector.component.js +3 -1
  59. package/dist/es2015/utils.d.ts +10 -3
  60. package/dist/es2015/utils.js +14 -4
  61. package/dist/fesm2015/index.js +2311 -1610
  62. package/dist/fesm5/index.js +1722 -1013
  63. package/dist/npm/editing/edit-dialog.component.js +3 -3
  64. package/dist/npm/editing/edit.service.js +4 -2
  65. package/dist/npm/gantt.component.js +191 -24
  66. package/dist/npm/index.js +2 -0
  67. package/dist/npm/models/events/task-delete-event.interface.js +6 -0
  68. package/dist/npm/navigation/navigation-models.js +6 -0
  69. package/dist/npm/navigation/navigation.service.js +392 -0
  70. package/dist/npm/navigation/utils.js +79 -0
  71. package/dist/npm/package-metadata.js +1 -1
  72. package/dist/npm/rendering/gantt-milestone-task.component.js +7 -4
  73. package/dist/npm/rendering/gantt-summary-task.component.js +22 -4
  74. package/dist/npm/rendering/gantt-task-base.js +57 -6
  75. package/dist/npm/rendering/gantt-task.component.js +9 -6
  76. package/dist/npm/rendering/gantt-tasks-table-body.component.js +9 -5
  77. package/dist/npm/timeline/gantt-timeline.component.js +10 -6
  78. package/dist/npm/toolbar/toolbar.component.js +10 -11
  79. package/dist/npm/toolbar/view-selector.component.js +1 -1
  80. package/dist/npm/utils.js +14 -4
  81. package/dist/systemjs/kendo-angular-gantt.js +1 -1
  82. package/package.json +1 -1
@@ -14,24 +14,42 @@ var slotUnitDuration = {
14
14
  week: kendo_date_math_1.MS_PER_DAY,
15
15
  month: kendo_date_math_1.MS_PER_DAY * 7
16
16
  };
17
+ var FOCUSED_CLASS = 'k-focus';
17
18
  /**
18
19
  * @hidden
19
20
  */
20
21
  var GanttTaskBase = /** @class */ (function () {
21
22
  function GanttTaskBase(mapper, // left public to be available for usage in the templates
22
- timelineViewService, dependencyDomService, optionChangesService, cdr) {
23
+ timelineViewService, dependencyDomService, optionChangesService, cdr, navigationService) {
23
24
  var _this = this;
24
25
  this.mapper = mapper;
25
26
  this.timelineViewService = timelineViewService;
26
27
  this.dependencyDomService = dependencyDomService;
27
28
  this.optionChangesService = optionChangesService;
28
29
  this.cdr = cdr;
30
+ this.navigationService = navigationService;
29
31
  this.wrapperClass = true;
30
- this.viewChangesSubscription = new rxjs_1.Subscription();
31
- this.viewChangesSubscription.add(this.optionChangesService.viewChanges.subscribe(function () {
32
- _this.cdr.markForCheck();
33
- }));
32
+ this.subscriptions = new rxjs_1.Subscription();
33
+ this.subscriptions.add(this.optionChangesService.viewChanges
34
+ .subscribe(function () { return _this.cdr.markForCheck(); }));
35
+ this.subscriptions.add(this.navigationService.taskStatusChanges
36
+ .subscribe(this.updateActiveState.bind(this)));
34
37
  }
38
+ Object.defineProperty(GanttTaskBase.prototype, "taskIndexAttribute", {
39
+ get: function () {
40
+ return this.index;
41
+ },
42
+ enumerable: true,
43
+ configurable: true
44
+ });
45
+ Object.defineProperty(GanttTaskBase.prototype, "ariaSelected", {
46
+ get: function () {
47
+ // assinging null will not render the attribute at all (desired in selectable="false" mode)
48
+ return this.selectable ? String(this.isSelected(this.dataItem)) : null;
49
+ },
50
+ enumerable: true,
51
+ configurable: true
52
+ });
35
53
  Object.defineProperty(GanttTaskBase.prototype, "slotUnitDuration", {
36
54
  get: function () {
37
55
  return slotUnitDuration[this.activeView];
@@ -98,17 +116,38 @@ var GanttTaskBase = /** @class */ (function () {
98
116
  else if (utils_1.isPresent(changes.activeView)) {
99
117
  this.dependencyDomService.notifyChanges();
100
118
  }
119
+ if (this.navigationService.enabled && utils_1.isPresent(changes.index)) {
120
+ this.updateActiveState(this.navigationService.activeTask);
121
+ }
101
122
  };
102
123
  GanttTaskBase.prototype.ngOnDestroy = function () {
103
124
  if (utils_1.isPresent(this.dataItem)) {
104
125
  this.dependencyDomService.unregisterTask(this.dataItem);
105
126
  }
106
- this.viewChangesSubscription.unsubscribe();
127
+ this.subscriptions.unsubscribe();
128
+ };
129
+ GanttTaskBase.prototype.updateActiveState = function (_a) {
130
+ var activeIndex = _a.activeIndex, isFocused = _a.isFocused;
131
+ var isActive = activeIndex === this.index;
132
+ var tabindex = isActive ? '0' : '-1';
133
+ this.taskElement.nativeElement.setAttribute('tabindex', tabindex);
134
+ if (isActive && isFocused) {
135
+ this.taskElement.nativeElement.focus();
136
+ this.taskElement.nativeElement.classList.add(FOCUSED_CLASS);
137
+ }
138
+ else {
139
+ this.taskElement.nativeElement.classList.remove(FOCUSED_CLASS);
140
+ }
107
141
  };
108
142
  tslib_1.__decorate([
109
143
  core_1.HostBinding('class.k-task-wrap'),
110
144
  tslib_1.__metadata("design:type", Boolean)
111
145
  ], GanttTaskBase.prototype, "wrapperClass", void 0);
146
+ tslib_1.__decorate([
147
+ core_1.HostBinding('attr.data-task-index'),
148
+ tslib_1.__metadata("design:type", Number),
149
+ tslib_1.__metadata("design:paramtypes", [])
150
+ ], GanttTaskBase.prototype, "taskIndexAttribute", null);
112
151
  tslib_1.__decorate([
113
152
  core_1.ViewChild('task', { static: true }),
114
153
  tslib_1.__metadata("design:type", core_1.ElementRef)
@@ -117,10 +156,22 @@ var GanttTaskBase = /** @class */ (function () {
117
156
  core_1.Input(),
118
157
  tslib_1.__metadata("design:type", Object)
119
158
  ], GanttTaskBase.prototype, "dataItem", void 0);
159
+ tslib_1.__decorate([
160
+ core_1.Input(),
161
+ tslib_1.__metadata("design:type", Number)
162
+ ], GanttTaskBase.prototype, "index", void 0);
163
+ tslib_1.__decorate([
164
+ core_1.Input(),
165
+ tslib_1.__metadata("design:type", Number)
166
+ ], GanttTaskBase.prototype, "level", void 0);
120
167
  tslib_1.__decorate([
121
168
  core_1.Input(),
122
169
  tslib_1.__metadata("design:type", Boolean)
123
170
  ], GanttTaskBase.prototype, "renderDependencyDragClues", void 0);
171
+ tslib_1.__decorate([
172
+ core_1.Input(),
173
+ tslib_1.__metadata("design:type", Boolean)
174
+ ], GanttTaskBase.prototype, "selectable", void 0);
124
175
  tslib_1.__decorate([
125
176
  core_1.Input(),
126
177
  tslib_1.__metadata("design:type", Function)
@@ -7,19 +7,20 @@ Object.defineProperty(exports, "__esModule", { value: true });
7
7
  var tslib_1 = require("tslib");
8
8
  var core_1 = require("@angular/core");
9
9
  var mapping_service_1 = require("../common/mapping.service");
10
+ var navigation_service_1 = require("../navigation/navigation.service");
11
+ var edit_service_1 = require("../editing/edit.service");
10
12
  var touch_enabled_1 = require("../common/touch-enabled");
11
13
  var dependency_dom_service_1 = require("../dependencies/dependency-dom.service");
12
14
  var option_changes_service_1 = require("../common/option-changes.service");
13
15
  var timeline_view_service_1 = require("./../timeline/timeline-view.service");
14
16
  var gantt_task_base_1 = require("./gantt-task-base");
15
- var edit_service_1 = require("../editing/edit.service");
16
17
  /**
17
18
  * @hidden
18
19
  */
19
20
  var GanttTaskComponent = /** @class */ (function (_super) {
20
21
  tslib_1.__extends(GanttTaskComponent, _super);
21
- function GanttTaskComponent(editService, touchEnabled, mapper, timelineViewService, dependencyDomService, optionChangesService, cdr) {
22
- var _this = _super.call(this, mapper, timelineViewService, dependencyDomService, optionChangesService, cdr) || this;
22
+ function GanttTaskComponent(editService, touchEnabled, mapper, timelineViewService, dependencyDomService, optionChangesService, cdr, navigationService) {
23
+ var _this = _super.call(this, mapper, timelineViewService, dependencyDomService, optionChangesService, cdr, navigationService) || this;
23
24
  _this.editService = editService;
24
25
  _this.touchEnabled = touchEnabled;
25
26
  return _this;
@@ -27,7 +28,7 @@ var GanttTaskComponent = /** @class */ (function (_super) {
27
28
  GanttTaskComponent_1 = GanttTaskComponent;
28
29
  GanttTaskComponent.prototype.onTaskDelete = function () {
29
30
  this.editService.dataItem = this.dataItem;
30
- this.editService.showConfirmationDialog.next();
31
+ this.editService.taskDelete.next(this.dataItem);
31
32
  };
32
33
  var GanttTaskComponent_1;
33
34
  tslib_1.__decorate([
@@ -47,14 +48,16 @@ var GanttTaskComponent = /** @class */ (function (_super) {
47
48
  useExisting: core_1.forwardRef(function () { return GanttTaskComponent_1; })
48
49
  }
49
50
  ],
50
- template: "\n <div\n #task\n class=\"k-task k-task-single\"\n [ngClass]=\"taskClass(dataItem)\"\n [style.width.px]=\"taskWidth\"\n [attr.title]=\"mapper.extractFromTask(dataItem, 'title')\"\n [class.k-state-selected]=\"isSelected(dataItem)\"\n >\n <ng-container *ngIf=\"!taskTemplate\">\n <div\n class=\"k-task-complete\"\n [style.width.px]=\"completionOverlayWidth\"\n >\n </div>\n <div class=\"k-task-content\">\n <div class=\"k-task-template\">\n <ng-container *ngIf=\"!taskContentTemplate; else taskContent\">\n {{ mapper.extractFromTask(dataItem, 'title') }}\n </ng-container>\n <ng-template\n #taskContent\n [ngTemplateOutlet]=\"taskContentTemplate\"\n [ngTemplateOutletContext]=\"{ $implicit: dataItem }\"\n >\n </ng-template>\n </div>\n <span class=\"k-task-actions\">\n <span\n (click)=\"onTaskDelete()\"\n class=\"k-link k-task-delete\">\n <span class=\"k-icon k-i-close\"></span>\n </span>\n </span>\n </div>\n </ng-container>\n <ng-template\n *ngIf=\"taskTemplate\"\n [ngTemplateOutlet]=\"taskTemplate\"\n [ngTemplateOutletContext]=\"{\n $implicit: dataItem,\n elementWidth: taskWidth\n }\"\n >\n </ng-template>\n </div>\n <ng-container *ngIf=\"renderDependencyDragClues\">\n <div\n class=\"k-task-dot k-task-start k-touch-action-none\"\n [class.k-display-block]=\"touchEnabled\"\n >\n </div>\n <div\n class=\"k-task-dot k-task-end k-touch-action-none\"\n [class.k-display-block]=\"touchEnabled\"\n >\n </div>\n </ng-container>\n "
51
+ template: "\n <div\n #task\n class=\"k-task k-task-single\"\n role=\"treeitem\"\n [ngClass]=\"taskClass(dataItem)\"\n [style.width.px]=\"taskWidth\"\n [attr.title]=\"mapper.extractFromTask(dataItem, 'title')\"\n [class.k-state-selected]=\"isSelected(dataItem)\"\n [attr.aria-selected]=\"ariaSelected\"\n [attr.aria-level]=\"level + 1\"\n >\n <ng-container *ngIf=\"!taskTemplate\">\n <div\n class=\"k-task-complete\"\n [style.width.px]=\"completionOverlayWidth\"\n aria-hidden=\"true\"\n >\n </div>\n <div class=\"k-task-content\">\n <div class=\"k-task-template\">\n <ng-container *ngIf=\"!taskContentTemplate; else taskContent\">\n {{ mapper.extractFromTask(dataItem, 'title') }}\n </ng-container>\n <ng-template\n #taskContent\n [ngTemplateOutlet]=\"taskContentTemplate\"\n [ngTemplateOutletContext]=\"{ $implicit: dataItem }\"\n >\n </ng-template>\n </div>\n <span\n class=\"k-task-actions\"\n aria-hidden=\"true\"\n >\n <span\n class=\"k-link k-task-delete\"\n [kendoEventsOutsideAngular]=\"{\n click: onTaskDelete\n }\"\n [scope]=\"this\"\n >\n <span class=\"k-icon k-i-close\"></span>\n </span>\n </span>\n </div>\n </ng-container>\n <ng-template\n *ngIf=\"taskTemplate\"\n [ngTemplateOutlet]=\"taskTemplate\"\n [ngTemplateOutletContext]=\"{\n $implicit: dataItem,\n elementWidth: taskWidth\n }\"\n >\n </ng-template>\n </div>\n <ng-container *ngIf=\"renderDependencyDragClues\">\n <div\n class=\"k-task-dot k-task-start k-touch-action-none\"\n [class.k-display-block]=\"touchEnabled\"\n >\n </div>\n <div\n class=\"k-task-dot k-task-end k-touch-action-none\"\n [class.k-display-block]=\"touchEnabled\"\n >\n </div>\n </ng-container>\n ",
52
+ styles: ["\n .k-task.k-focus {\n box-shadow: 0 0 4px 3px grey;\n outline: none;\n }\n .k-task.k-focus.k-state-selected {\n box-shadow: 0 0 4px 3px #ffaea8;\n }\n "]
51
53
  }),
52
54
  tslib_1.__param(1, core_1.Inject(touch_enabled_1.TOUCH_ENABLED)),
53
55
  tslib_1.__metadata("design:paramtypes", [edit_service_1.EditService, Boolean, mapping_service_1.MappingService,
54
56
  timeline_view_service_1.TimelineViewService,
55
57
  dependency_dom_service_1.DependencyDomService,
56
58
  option_changes_service_1.OptionChangesService,
57
- core_1.ChangeDetectorRef])
59
+ core_1.ChangeDetectorRef,
60
+ navigation_service_1.NavigationService])
58
61
  ], GanttTaskComponent);
59
62
  return GanttTaskComponent;
60
63
  }(gantt_task_base_1.GanttTaskBase));
@@ -8,8 +8,8 @@ var tslib_1 = require("tslib");
8
8
  var core_1 = require("@angular/core");
9
9
  var kendo_date_math_1 = require("@progress/kendo-date-math");
10
10
  var dependency_dom_service_1 = require("../dependencies/dependency-dom.service");
11
- var utils_1 = require("../utils");
12
11
  var mapping_service_1 = require("../common/mapping.service");
12
+ var utils_1 = require("../utils");
13
13
  /**
14
14
  * @hidden
15
15
  */
@@ -29,14 +29,18 @@ var GanttTasksTableBodyComponent = /** @class */ (function () {
29
29
  enumerable: true,
30
30
  configurable: true
31
31
  });
32
- GanttTasksTableBodyComponent.prototype.isMileStone = function (task) {
33
- return !this.hasChildren(task) && kendo_date_math_1.isEqual(this.mapper.extractFromTask(task, 'start'), this.mapper.extractFromTask(task, 'end'));
32
+ GanttTasksTableBodyComponent.prototype.isMileStone = function (item) {
33
+ return !item.hasChildren && kendo_date_math_1.isEqual(this.mapper.extractFromTask(item.data, 'start'), this.mapper.extractFromTask(item.data, 'end'));
34
34
  };
35
35
  tslib_1.__decorate([
36
36
  core_1.ViewChild('timelineRow', { static: false }),
37
37
  tslib_1.__metadata("design:type", core_1.ElementRef),
38
38
  tslib_1.__metadata("design:paramtypes", [core_1.ElementRef])
39
39
  ], GanttTasksTableBodyComponent.prototype, "timelineRow", null);
40
+ tslib_1.__decorate([
41
+ core_1.Input(),
42
+ tslib_1.__metadata("design:type", Boolean)
43
+ ], GanttTasksTableBodyComponent.prototype, "selectable", void 0);
40
44
  tslib_1.__decorate([
41
45
  core_1.Input(),
42
46
  tslib_1.__metadata("design:type", Array)
@@ -64,7 +68,7 @@ var GanttTasksTableBodyComponent = /** @class */ (function () {
64
68
  tslib_1.__decorate([
65
69
  core_1.Input(),
66
70
  tslib_1.__metadata("design:type", Function)
67
- ], GanttTasksTableBodyComponent.prototype, "hasChildren", void 0);
71
+ ], GanttTasksTableBodyComponent.prototype, "isExpanded", void 0);
68
72
  tslib_1.__decorate([
69
73
  core_1.Input(),
70
74
  tslib_1.__metadata("design:type", Function)
@@ -76,7 +80,7 @@ var GanttTasksTableBodyComponent = /** @class */ (function () {
76
80
  GanttTasksTableBodyComponent = tslib_1.__decorate([
77
81
  core_1.Component({
78
82
  selector: '[kendoGanttTasksTableBody]',
79
- template: "\n <tr #timelineRow *ngFor=\"let item of rows; let index = index\">\n <td>\n <kendo-gantt-milestone-task\n *ngIf=\"isMileStone(item); else task\"\n [dataItem]=\"item\"\n [activeView]=\"activeView\"\n [taskClass]=\"taskClass\"\n [isSelected]=\"isTaskSelected\"\n [attr.data-task-index]=\"index\"\n [renderDependencyDragClues]=\"renderDependencyDragClues\"\n >\n </kendo-gantt-milestone-task>\n <ng-template #task>\n <kendo-gantt-summary-task\n *ngIf=\"hasChildren(item)\"\n [dataItem]=\"item\"\n [template]=\"summaryTaskTemplate\"\n [activeView]=\"activeView\"\n [taskClass]=\"taskClass\"\n [isSelected]=\"isTaskSelected\"\n [attr.data-task-index]=\"index\"\n [renderDependencyDragClues]=\"renderDependencyDragClues\"\n >\n </kendo-gantt-summary-task>\n <kendo-gantt-task\n *ngIf=\"!hasChildren(item)\"\n [dataItem]=\"item\"\n [taskContentTemplate]=\"taskContentTemplate\"\n [taskTemplate]=\"taskTemplate\"\n [activeView]=\"activeView\"\n [taskClass]=\"taskClass\"\n [isSelected]=\"isTaskSelected\"\n [attr.data-task-index]=\"index\"\n [renderDependencyDragClues]=\"renderDependencyDragClues\"\n >\n </kendo-gantt-task>\n </ng-template>\n </td>\n </tr>\n "
83
+ template: "\n <tr #timelineRow *ngFor=\"let item of rows; let index = index\">\n <td>\n <kendo-gantt-milestone-task\n *ngIf=\"isMileStone(item); else task\"\n [dataItem]=\"item.data\"\n [level]=\"item.level\"\n [activeView]=\"activeView\"\n [taskClass]=\"taskClass\"\n [selectable]=\"selectable\"\n [isSelected]=\"isTaskSelected\"\n [index]=\"index\"\n [renderDependencyDragClues]=\"renderDependencyDragClues\"\n >\n </kendo-gantt-milestone-task>\n <ng-template #task>\n <kendo-gantt-summary-task\n *ngIf=\"item.hasChildren\"\n [dataItem]=\"item.data\"\n [level]=\"item.level\"\n [template]=\"summaryTaskTemplate\"\n [activeView]=\"activeView\"\n [taskClass]=\"taskClass\"\n [selectable]=\"selectable\"\n [isSelected]=\"isTaskSelected\"\n [isExpanded]=\"isExpanded\"\n [index]=\"index\"\n [renderDependencyDragClues]=\"renderDependencyDragClues\"\n >\n </kendo-gantt-summary-task>\n <kendo-gantt-task\n *ngIf=\"!item.hasChildren\"\n [dataItem]=\"item.data\"\n [level]=\"item.level\"\n [taskContentTemplate]=\"taskContentTemplate\"\n [taskTemplate]=\"taskTemplate\"\n [activeView]=\"activeView\"\n [taskClass]=\"taskClass\"\n [selectable]=\"selectable\"\n [isSelected]=\"isTaskSelected\"\n [index]=\"index\"\n [renderDependencyDragClues]=\"renderDependencyDragClues\"\n >\n </kendo-gantt-task>\n </ng-template>\n </td>\n </tr>\n "
80
84
  }),
81
85
  tslib_1.__metadata("design:paramtypes", [dependency_dom_service_1.DependencyDomService,
82
86
  mapping_service_1.MappingService])
@@ -127,10 +127,6 @@ var GanttTimelineComponent = /** @class */ (function () {
127
127
  core_1.Input(),
128
128
  tslib_1.__metadata("design:type", Function)
129
129
  ], GanttTimelineComponent.prototype, "taskClass", void 0);
130
- tslib_1.__decorate([
131
- core_1.Input(),
132
- tslib_1.__metadata("design:type", Function)
133
- ], GanttTimelineComponent.prototype, "isTaskSelected", void 0);
134
130
  tslib_1.__decorate([
135
131
  core_1.Input(),
136
132
  tslib_1.__metadata("design:type", Boolean)
@@ -139,10 +135,18 @@ var GanttTimelineComponent = /** @class */ (function () {
139
135
  core_1.Input(),
140
136
  tslib_1.__metadata("design:type", Object)
141
137
  ], GanttTimelineComponent.prototype, "dragScrollSettings", void 0);
138
+ tslib_1.__decorate([
139
+ core_1.Input(),
140
+ tslib_1.__metadata("design:type", Boolean)
141
+ ], GanttTimelineComponent.prototype, "selectable", void 0);
142
+ tslib_1.__decorate([
143
+ core_1.Input(),
144
+ tslib_1.__metadata("design:type", Function)
145
+ ], GanttTimelineComponent.prototype, "isTaskSelected", void 0);
142
146
  tslib_1.__decorate([
143
147
  core_1.Input(),
144
148
  tslib_1.__metadata("design:type", Function)
145
- ], GanttTimelineComponent.prototype, "hasChildren", void 0);
149
+ ], GanttTimelineComponent.prototype, "isExpanded", void 0);
146
150
  tslib_1.__decorate([
147
151
  core_1.Input(),
148
152
  tslib_1.__metadata("design:type", Array)
@@ -162,7 +166,7 @@ var GanttTimelineComponent = /** @class */ (function () {
162
166
  GanttTimelineComponent = tslib_1.__decorate([
163
167
  core_1.Component({
164
168
  selector: 'kendo-gantt-timeline',
165
- template: "\n <div class=\"k-timeline k-grid k-widget\">\n <div class=\"k-grid-header\">\n <div #timelineHeaderWrap class=\"k-grid-header-wrap\">\n <table\n role=\"presentation\"\n [style.width.px]=\"tableWidth\"\n >\n <tbody\n kendoGanttHeaderTableBody\n [groupSlots]=\"groupSlots\"\n [slots]=\"slots\">\n </tbody>\n </table>\n </div>\n </div>\n <div\n #timelineContent\n class=\"k-grid-content\"\n kendoGanttTimelineScrollable\n [scrollSettings]=\"dragScrollSettings\"\n kendoDraggable\n [enableDrag]=\"draggableEnabled\"\n (kendoPress)=\"timelineContainerPress.emit($event)\"\n (kendoDrag)=\"timelineContainerDrag.emit($event)\"\n (kendoRelease)=\"timelineContainerRelease.emit($event)\"\n >\n <div class=\"k-gantt-tables\">\n <table\n class=\"k-gantt-rows\"\n [style.width.px]=\"tableWidth\"\n role=\"presentation\"\n >\n <tbody>\n <tr *ngFor=\"let item of rows; let i = index;\"\n [class.k-alt]=\"i % 2\"\n >\n <td></td>\n </tr>\n </tbody>\n </table>\n\n <table\n #timelineColumns\n class=\"k-gantt-columns\"\n role=\"presentation\"\n [style.width.px]=\"tableWidth\"\n >\n <colgroup>\n <col *ngFor=\"let item of slots\">\n </colgroup>\n\n <tbody>\n <tr>\n <td *ngFor=\"let item of slots\"\n [class.k-nonwork-hour]=\"isNonWorking(item)\"\n >\n </td>\n </tr>\n </tbody>\n </table>\n\n <table\n #tasksContainer\n class=\"k-gantt-tasks\"\n role=\"presentation\"\n style=\"border-collapse: collapse;\"\n [style.width.px]=\"tableWidth\"\n >\n <tbody\n kendoGanttTasksTableBody\n [rows]=\"rows\"\n [activeView]=\"activeView\"\n [taskContentTemplate]=\"taskContentTemplate\"\n [taskTemplate]=\"taskTemplate\"\n [summaryTaskTemplate]=\"summaryTaskTemplate\"\n [taskClass]=\"taskClass\"\n [hasChildren]=\"hasChildren\"\n [isTaskSelected]=\"isTaskSelected\"\n [renderDependencyDragClues]=\"renderDependencyDragClues\"\n >\n </tbody>\n </table>\n </div>\n <svg class=\"k-gantt-dependencies-svg\">\n <polyline\n *ngFor=\"let dependency of dependencies\"\n kendoGanttDependency\n [dependency]=\"dependency\"\n />\n <polyline #dependencyDragCreatePolyline />\n </svg>\n\n <!-- placeholder for the dependency drag popup; its position is not arbitrary - the popup is intended to be absolutely positioned inside the .k-grid-content element -->\n <ng-container #dragPopupContainer></ng-container>\n </div>\n </div>\n "
169
+ template: "\n <div class=\"k-timeline k-grid k-widget\">\n <div class=\"k-grid-header\">\n <div #timelineHeaderWrap class=\"k-grid-header-wrap\">\n <table\n role=\"presentation\"\n [style.width.px]=\"tableWidth\"\n >\n <tbody\n kendoGanttHeaderTableBody\n [groupSlots]=\"groupSlots\"\n [slots]=\"slots\">\n </tbody>\n </table>\n </div>\n </div>\n <!-- tabindex=\"-1\" required for https://bugzilla.mozilla.org/show_bug.cgi?id=1069739 -->\n <div\n #timelineContent\n class=\"k-grid-content\"\n tabindex=\"-1\"\n role=\"tree\"\n aria-roledescription=\"Timeline\"\n kendoGanttTimelineScrollable\n [scrollSettings]=\"dragScrollSettings\"\n kendoDraggable\n [enableDrag]=\"draggableEnabled\"\n (kendoPress)=\"timelineContainerPress.emit($event)\"\n (kendoDrag)=\"timelineContainerDrag.emit($event)\"\n (kendoRelease)=\"timelineContainerRelease.emit($event)\"\n >\n <div class=\"k-gantt-tables\">\n <table\n class=\"k-gantt-rows\"\n [style.width.px]=\"tableWidth\"\n role=\"presentation\"\n >\n <tbody>\n <tr *ngFor=\"let item of rows; let i = index;\"\n [class.k-alt]=\"i % 2\"\n >\n <td></td>\n </tr>\n </tbody>\n </table>\n\n <table\n #timelineColumns\n class=\"k-gantt-columns\"\n role=\"presentation\"\n [style.width.px]=\"tableWidth\"\n >\n <colgroup>\n <col *ngFor=\"let item of slots\">\n </colgroup>\n\n <tbody>\n <tr>\n <td *ngFor=\"let item of slots\"\n [class.k-nonwork-hour]=\"isNonWorking(item)\"\n >\n </td>\n </tr>\n </tbody>\n </table>\n\n <table\n #tasksContainer\n class=\"k-gantt-tasks\"\n role=\"presentation\"\n style=\"border-collapse: collapse;\"\n [style.width.px]=\"tableWidth\"\n >\n <tbody\n kendoGanttTasksTableBody\n [rows]=\"rows\"\n [activeView]=\"activeView\"\n [taskContentTemplate]=\"taskContentTemplate\"\n [taskTemplate]=\"taskTemplate\"\n [summaryTaskTemplate]=\"summaryTaskTemplate\"\n [taskClass]=\"taskClass\"\n [isExpanded]=\"isExpanded\"\n [selectable]=\"selectable\"\n [isTaskSelected]=\"isTaskSelected\"\n [renderDependencyDragClues]=\"renderDependencyDragClues\"\n >\n </tbody>\n </table>\n </div>\n <svg class=\"k-gantt-dependencies-svg\">\n <polyline\n *ngFor=\"let dependency of dependencies\"\n kendoGanttDependency\n [dependency]=\"dependency\"\n />\n <polyline #dependencyDragCreatePolyline />\n </svg>\n\n <!-- placeholder for the dependency drag popup; its position is not arbitrary - the popup is intended to be absolutely positioned inside the .k-grid-content element -->\n <ng-container #dragPopupContainer></ng-container>\n </div>\n </div>\n "
166
170
  }),
167
171
  tslib_1.__metadata("design:paramtypes", [scroll_sync_service_1.ScrollSyncService,
168
172
  dependency_dom_service_1.DependencyDomService,
@@ -7,15 +7,14 @@ Object.defineProperty(exports, "__esModule", { value: true });
7
7
  var tslib_1 = require("tslib");
8
8
  var core_1 = require("@angular/core");
9
9
  var gantt_component_1 = require("../gantt.component");
10
- var scroll_sync_service_1 = require("../scrolling/scroll-sync.service");
11
10
  /**
12
11
  * @hidden
13
12
  */
14
13
  var ToolbarComponent = /** @class */ (function () {
15
- function ToolbarComponent(gantt, scrollSyncService) {
14
+ function ToolbarComponent(gantt) {
16
15
  this.gantt = gantt;
17
- this.scrollSyncService = scrollSyncService;
18
16
  this.context = {};
17
+ this.role = 'toolbar';
19
18
  }
20
19
  Object.defineProperty(ToolbarComponent.prototype, "position", {
21
20
  get: function () {
@@ -43,12 +42,13 @@ var ToolbarComponent = /** @class */ (function () {
43
42
  enumerable: true,
44
43
  configurable: true
45
44
  });
46
- ToolbarComponent.prototype.onViewChange = function (e) {
47
- this.gantt.activeView = e; // TODO: may be load the timeline data directly in an activeView setter?
48
- this.gantt.loadTimelineData();
49
- this.gantt.activeViewChange.emit(e);
50
- this.scrollSyncService.resetTimelineScrollLeft();
45
+ ToolbarComponent.prototype.handleViewChange = function (view) {
46
+ this.gantt.changeActiveView(view);
51
47
  };
48
+ tslib_1.__decorate([
49
+ core_1.HostBinding('attr.role'),
50
+ tslib_1.__metadata("design:type", String)
51
+ ], ToolbarComponent.prototype, "role", void 0);
52
52
  tslib_1.__decorate([
53
53
  core_1.Input(),
54
54
  tslib_1.__metadata("design:type", Boolean)
@@ -65,10 +65,9 @@ var ToolbarComponent = /** @class */ (function () {
65
65
  ToolbarComponent = tslib_1.__decorate([
66
66
  core_1.Component({
67
67
  selector: 'kendo-gantt-toolbar',
68
- template: "\n <ng-container *ngIf=\"!renderTemplate\">\n <kendo-gantt-add-task *ngIf=\"showAddTask\"></kendo-gantt-add-task>\n <span class=\"k-spacer k-toolbar-spacer\"></span>\n <kendo-gantt-view-selector\n *ngIf=\"showViewSelector\"\n [views]=\"gantt.viewTypes\"\n [activeView]=\"gantt.activeView\"\n (activeViewChange)=\"onViewChange($event)\"></kendo-gantt-view-selector>\n </ng-container>\n <ng-template\n *ngIf=\"renderTemplate\"\n [ngTemplateOutlet]=\"toolbarTemplateRef\"\n [ngTemplateOutletContext]=\"context\"\n >\n </ng-template>\n "
68
+ template: "\n <ng-container *ngIf=\"!renderTemplate\">\n <kendo-gantt-add-task *ngIf=\"showAddTask\"></kendo-gantt-add-task>\n <span class=\"k-spacer k-toolbar-spacer\"></span>\n <kendo-gantt-view-selector\n *ngIf=\"showViewSelector\"\n [views]=\"gantt.viewTypes\"\n [activeView]=\"gantt.activeView\"\n (activeViewChange)=\"handleViewChange($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 "
69
69
  }),
70
- tslib_1.__metadata("design:paramtypes", [gantt_component_1.GanttComponent,
71
- scroll_sync_service_1.ScrollSyncService])
70
+ tslib_1.__metadata("design:paramtypes", [gantt_component_1.GanttComponent])
72
71
  ], ToolbarComponent);
73
72
  return ToolbarComponent;
74
73
  }());
@@ -57,7 +57,7 @@ var ViewSelectorComponent = /** @class */ (function () {
57
57
  ViewSelectorComponent = tslib_1.__decorate([
58
58
  core_1.Component({
59
59
  selector: 'kendo-gantt-view-selector',
60
- template: "\n <select class=\"k-dropdown k-views-dropdown\"\n [value]=\"activeView\"\n (change)=\"activeViewChange.emit($event.target.value)\">\n <option *ngFor=\"let view of views\" [value]=\"view\">{{getViewTypeText(view)}}</option>\n </select>\n <kendo-buttongroup class=\"k-gantt-views\" selection=\"single\">\n <button *ngFor=\"let view of views\"\n kendoButton\n type=\"button\"\n [selected]=\"view === activeView\"\n (click)=\"onClick(view)\">{{getViewTypeText(view)}}</button>\n </kendo-buttongroup>\n "
60
+ template: "\n <select\n class=\"k-dropdown k-views-dropdown\"\n aria-label=\"View Selector\"\n [value]=\"activeView\"\n (change)=\"activeViewChange.emit($event.target.value)\">\n <option *ngFor=\"let view of views\" [value]=\"view\">{{getViewTypeText(view)}}</option>\n </select>\n <kendo-buttongroup class=\"k-gantt-views\" selection=\"single\">\n <button *ngFor=\"let view of views\"\n kendoButton\n type=\"button\"\n [selected]=\"view === activeView\"\n (click)=\"onClick(view)\">{{getViewTypeText(view)}}</button>\n </kendo-buttongroup>\n "
61
61
  }),
62
62
  tslib_1.__metadata("design:paramtypes", [kendo_angular_l10n_1.LocalizationService])
63
63
  ], ViewSelectorComponent);
package/dist/npm/utils.js CHANGED
@@ -165,6 +165,16 @@ exports.isTask = function (contender, parentScope) {
165
165
  var task = kendo_angular_common_1.closestInScope(contender, kendo_angular_common_1.matchesClasses('k-task'), parentScope);
166
166
  return exports.isPresent(task);
167
167
  };
168
+ /**
169
+ * @hidden
170
+ *
171
+ * Checks whether the queried item or its parent items has a `k-toolbar` selector.
172
+ * Restricts the search up to the provided parent element from the second param.
173
+ */
174
+ exports.isToolbar = function (contender, parentScope) {
175
+ var toolbar = kendo_angular_common_1.closestInScope(contender, kendo_angular_common_1.matchesClasses('k-gantt-toolbar'), parentScope);
176
+ return exports.isPresent(toolbar);
177
+ };
168
178
  /**
169
179
  * @hidden
170
180
  *
@@ -239,12 +249,12 @@ exports.sameTaskClues = function (fromTaskClue, toTaskClue, parentScope) {
239
249
  * If the contender is above the max value, the max value is returned.
240
250
  */
241
251
  exports.fitToRange = function (contender, min, max) {
242
- if (contender > max) {
243
- return max;
244
- }
245
- else if (contender < min) {
252
+ if (!exports.isPresent(contender) || contender < min) {
246
253
  return min;
247
254
  }
255
+ else if (contender > max) {
256
+ return max;
257
+ }
248
258
  else {
249
259
  return contender;
250
260
  }