@progress/kendo-angular-gantt 0.3.0-dev.202201111723 → 1.0.0
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.
- package/dist/cdn/js/kendo-angular-gantt.js +2 -2
- package/dist/cdn/main.js +1 -29
- package/dist/es/common/touch-enabled.js +9 -0
- package/dist/es/dependencies/utils.js +34 -0
- package/dist/es/dragging/dependency-drag-create.directive.js +347 -0
- package/dist/es/dragging/drag-validation-tooltip.component.js +27 -0
- package/dist/es/editing/dependencies-table.component.js +1 -1
- package/dist/es/editing/edit-dialog.component.js +3 -3
- package/dist/es/editing/edit.service.js +4 -2
- package/dist/es/editing/task-fields.component.js +1 -1
- package/dist/es/editing/{util.js → utils.js} +0 -0
- package/dist/es/gantt.component.js +313 -28
- package/dist/es/gantt.module.js +23 -6
- package/dist/es/index.js +5 -0
- package/dist/es/main.js +1 -0
- package/dist/es/models/events/dependency-add-event.interface.js +4 -0
- package/dist/es/models/events/task-delete-event.interface.js +4 -0
- package/dist/es/models/view-item.interface.js +4 -0
- package/dist/es/navigation/navigation-models.js +4 -0
- package/dist/es/navigation/navigation.service.js +390 -0
- package/dist/es/navigation/utils.js +77 -0
- package/dist/es/package-metadata.js +1 -1
- package/dist/es/rendering/gantt-milestone-task.component.js +12 -6
- package/dist/es/rendering/gantt-summary-task.component.js +27 -6
- package/dist/es/rendering/gantt-task-base.js +84 -22
- package/dist/es/rendering/gantt-task.component.js +13 -8
- package/dist/es/rendering/gantt-tasks-table-body.component.js +13 -5
- package/dist/es/scrolling/drag-scroll-settings.js +20 -0
- package/dist/es/scrolling/timeline-scroll.directive.js +89 -0
- package/dist/es/scrolling/timeline-scroll.service.js +39 -0
- package/dist/es/scrolling/utils.js +80 -0
- package/dist/es/timeline/gantt-timeline.component.js +50 -4
- package/dist/es/toolbar/toolbar.component.js +12 -13
- package/dist/es/toolbar/view-selector.component.js +1 -1
- package/dist/es/utils.js +153 -12
- package/dist/es2015/common/touch-enabled.d.ts +9 -0
- package/dist/es2015/common/touch-enabled.js +9 -0
- package/dist/es2015/dependencies/utils.d.ts +15 -0
- package/dist/es2015/dependencies/utils.js +34 -0
- package/dist/es2015/dragging/dependency-drag-create.directive.d.ts +72 -0
- package/dist/es2015/dragging/dependency-drag-create.directive.js +324 -0
- package/dist/es2015/dragging/drag-validation-tooltip.component.d.ts +29 -0
- package/dist/es2015/dragging/drag-validation-tooltip.component.js +76 -0
- package/dist/es2015/editing/dependencies-table.component.js +1 -1
- package/dist/es2015/editing/edit-dialog.component.d.ts +1 -1
- package/dist/es2015/editing/edit-dialog.component.js +12 -4
- package/dist/es2015/editing/edit.service.d.ts +2 -3
- package/dist/es2015/editing/edit.service.js +4 -2
- package/dist/es2015/editing/task-fields.component.js +1 -1
- package/dist/es2015/editing/{util.d.ts → utils.d.ts} +2 -2
- package/dist/es2015/editing/{util.js → utils.js} +0 -0
- package/dist/es2015/gantt.component.d.ts +112 -17
- package/dist/es2015/gantt.component.js +292 -30
- package/dist/es2015/gantt.module.js +23 -6
- package/dist/es2015/index.d.ts +5 -0
- package/dist/es2015/index.js +5 -0
- package/dist/es2015/index.metadata.json +1 -1
- package/dist/es2015/main.d.ts +1 -0
- package/dist/es2015/main.js +1 -0
- package/dist/es2015/models/events/dependency-add-event.interface.d.ts +26 -0
- package/dist/es2015/models/events/dependency-add-event.interface.js +4 -0
- package/dist/es2015/models/events/task-click-event.interface.d.ts +3 -3
- package/dist/es2015/models/events/task-delete-event.interface.d.ts +21 -0
- package/dist/es2015/models/events/task-delete-event.interface.js +4 -0
- package/dist/es2015/models/events/task-edit-event.interface.d.ts +27 -10
- package/dist/es2015/models/models.d.ts +4 -0
- package/dist/es2015/models/view-item.interface.d.ts +35 -0
- package/dist/es2015/models/view-item.interface.js +4 -0
- package/dist/es2015/navigation/navigation-models.d.ts +34 -0
- package/dist/es2015/navigation/navigation-models.js +4 -0
- package/dist/es2015/navigation/navigation.service.d.ts +126 -0
- package/dist/es2015/navigation/navigation.service.js +355 -0
- package/dist/es2015/navigation/utils.d.ts +26 -0
- package/dist/es2015/navigation/utils.js +69 -0
- package/dist/es2015/package-metadata.js +1 -1
- package/dist/es2015/rendering/gantt-milestone-task.component.d.ts +3 -1
- package/dist/es2015/rendering/gantt-milestone-task.component.js +35 -8
- package/dist/es2015/rendering/gantt-summary-task.component.d.ts +5 -1
- package/dist/es2015/rendering/gantt-summary-task.component.js +47 -8
- package/dist/es2015/rendering/gantt-task-base.d.ts +20 -6
- package/dist/es2015/rendering/gantt-task-base.js +75 -22
- package/dist/es2015/rendering/gantt-task.component.d.ts +4 -2
- package/dist/es2015/rendering/gantt-task.component.js +47 -13
- package/dist/es2015/rendering/gantt-tasks-table-body.component.d.ts +6 -3
- package/dist/es2015/rendering/gantt-tasks-table-body.component.js +27 -9
- package/dist/es2015/scrolling/drag-scroll-settings.d.ts +47 -0
- package/dist/es2015/scrolling/drag-scroll-settings.js +20 -0
- package/dist/es2015/scrolling/scroll-sync.service.d.ts +1 -1
- package/dist/es2015/scrolling/timeline-scroll.directive.d.ts +24 -0
- package/dist/es2015/scrolling/timeline-scroll.directive.js +78 -0
- package/dist/es2015/scrolling/timeline-scroll.service.d.ts +20 -0
- package/dist/es2015/scrolling/timeline-scroll.service.js +44 -0
- package/dist/es2015/scrolling/utils.d.ts +29 -0
- package/dist/es2015/scrolling/utils.js +80 -0
- package/dist/es2015/timeline/gantt-timeline.component.d.ts +29 -4
- package/dist/es2015/timeline/gantt-timeline.component.js +67 -5
- package/dist/es2015/toolbar/toolbar.component.d.ts +4 -5
- package/dist/es2015/toolbar/toolbar.component.js +12 -13
- package/dist/es2015/toolbar/view-selector.component.js +3 -1
- package/dist/es2015/utils.d.ts +77 -8
- package/dist/es2015/utils.js +153 -12
- package/dist/fesm2015/index.js +3033 -1367
- package/dist/fesm5/index.js +2447 -830
- package/dist/npm/common/touch-enabled.js +11 -0
- package/dist/npm/dependencies/utils.js +34 -0
- package/dist/npm/dragging/dependency-drag-create.directive.js +349 -0
- package/dist/npm/dragging/drag-validation-tooltip.component.js +29 -0
- package/dist/npm/editing/dependencies-table.component.js +1 -1
- package/dist/npm/editing/edit-dialog.component.js +3 -3
- package/dist/npm/editing/edit.service.js +4 -2
- package/dist/npm/editing/task-fields.component.js +1 -1
- package/dist/npm/editing/{util.js → utils.js} +0 -0
- package/dist/npm/gantt.component.js +315 -30
- package/dist/npm/gantt.module.js +22 -5
- package/dist/npm/index.js +10 -0
- package/dist/npm/main.js +2 -0
- package/dist/npm/models/events/dependency-add-event.interface.js +6 -0
- package/dist/npm/models/events/task-delete-event.interface.js +6 -0
- package/dist/npm/models/view-item.interface.js +6 -0
- package/dist/npm/navigation/navigation-models.js +6 -0
- package/dist/npm/navigation/navigation.service.js +392 -0
- package/dist/npm/navigation/utils.js +79 -0
- package/dist/npm/package-metadata.js +1 -1
- package/dist/npm/rendering/gantt-milestone-task.component.js +11 -5
- package/dist/npm/rendering/gantt-summary-task.component.js +26 -5
- package/dist/npm/rendering/gantt-task-base.js +84 -22
- package/dist/npm/rendering/gantt-task.component.js +12 -7
- package/dist/npm/rendering/gantt-tasks-table-body.component.js +13 -5
- package/dist/npm/scrolling/drag-scroll-settings.js +22 -0
- package/dist/npm/scrolling/timeline-scroll.directive.js +91 -0
- package/dist/npm/scrolling/timeline-scroll.service.js +41 -0
- package/dist/npm/scrolling/utils.js +83 -0
- package/dist/npm/timeline/gantt-timeline.component.js +49 -3
- package/dist/npm/toolbar/toolbar.component.js +10 -11
- package/dist/npm/toolbar/view-selector.component.js +1 -1
- package/dist/npm/utils.js +153 -12
- package/dist/systemjs/kendo-angular-gantt.js +1 -1
- package/package.json +23 -21
|
@@ -3,6 +3,7 @@
|
|
|
3
3
|
* Licensed under commercial license. See LICENSE.md in the project root for more information
|
|
4
4
|
*-------------------------------------------------------------------------------------------*/
|
|
5
5
|
import { ChangeDetectorRef, ElementRef, SimpleChanges } from '@angular/core';
|
|
6
|
+
import { NavigationService } from '../navigation/navigation.service';
|
|
6
7
|
import { OptionChangesService } from '../common/option-changes.service';
|
|
7
8
|
import { TaskClassFn } from '../models/class-callbacks';
|
|
8
9
|
import { TimelineViewType } from '../models/timeline-view';
|
|
@@ -18,25 +19,38 @@ export declare abstract class GanttTaskBase {
|
|
|
18
19
|
private dependencyDomService;
|
|
19
20
|
private optionChangesService;
|
|
20
21
|
private cdr;
|
|
22
|
+
private navigationService;
|
|
21
23
|
wrapperClass: boolean;
|
|
24
|
+
readonly taskIndexAttribute: number;
|
|
22
25
|
/**
|
|
23
|
-
* Points to the
|
|
26
|
+
* Points to the `.k-task` element of the template (present in all three task types).
|
|
24
27
|
*/
|
|
25
28
|
taskElement: ElementRef<HTMLElement>;
|
|
26
29
|
dataItem: any;
|
|
27
30
|
index: number;
|
|
31
|
+
level: number;
|
|
32
|
+
renderDependencyDragClues: boolean;
|
|
33
|
+
selectable: boolean;
|
|
28
34
|
isSelected: (dataItem: object) => boolean;
|
|
29
35
|
activeView: TimelineViewType;
|
|
30
36
|
taskClass: TaskClassFn;
|
|
31
|
-
|
|
37
|
+
readonly ariaSelected: string;
|
|
32
38
|
readonly slotUnitDuration: number;
|
|
33
39
|
private readonly viewService;
|
|
34
40
|
readonly slotWidth: number;
|
|
35
|
-
constructor(mapper: MappingService, // left public to be available for usage in the templates
|
|
36
|
-
timelineViewService: TimelineViewService, dependencyDomService: DependencyDomService, optionChangesService: OptionChangesService, cdr: ChangeDetectorRef);
|
|
37
|
-
ngOnChanges(changes: SimpleChanges): void;
|
|
38
|
-
ngOnDestroy(): void;
|
|
39
41
|
readonly taskWidth: number;
|
|
42
|
+
/**
|
|
43
|
+
* The `left` style prop has to be applied to the host element (.k-task-wrap), as the drag clue elements are displayed on .k-task-wrap hover.
|
|
44
|
+
* Applying the `left` offset to the inner .k-task element leaves the .k-task-wrap element rendered with an offset of 0 somewhere on the left
|
|
45
|
+
* and hovering just the .k-task element doesn't expose the drag clues.
|
|
46
|
+
* Additionally, positioning the entire container takes care of positioning the hints as well.
|
|
47
|
+
*/
|
|
40
48
|
readonly taskOffset: number;
|
|
41
49
|
readonly completionOverlayWidth: number;
|
|
50
|
+
private subscriptions;
|
|
51
|
+
constructor(mapper: MappingService, // left public to be available for usage in the templates
|
|
52
|
+
timelineViewService: TimelineViewService, dependencyDomService: DependencyDomService, optionChangesService: OptionChangesService, cdr: ChangeDetectorRef, navigationService: NavigationService);
|
|
53
|
+
ngOnChanges(changes: SimpleChanges): void;
|
|
54
|
+
ngOnDestroy(): void;
|
|
55
|
+
private updateActiveState;
|
|
42
56
|
}
|
|
@@ -12,22 +12,32 @@ const slotUnitDuration = {
|
|
|
12
12
|
week: MS_PER_DAY,
|
|
13
13
|
month: MS_PER_DAY * 7
|
|
14
14
|
};
|
|
15
|
+
const FOCUSED_CLASS = 'k-focus';
|
|
15
16
|
/**
|
|
16
17
|
* @hidden
|
|
17
18
|
*/
|
|
18
19
|
export class GanttTaskBase {
|
|
19
20
|
constructor(mapper, // left public to be available for usage in the templates
|
|
20
|
-
timelineViewService, dependencyDomService, optionChangesService, cdr) {
|
|
21
|
+
timelineViewService, dependencyDomService, optionChangesService, cdr, navigationService) {
|
|
21
22
|
this.mapper = mapper;
|
|
22
23
|
this.timelineViewService = timelineViewService;
|
|
23
24
|
this.dependencyDomService = dependencyDomService;
|
|
24
25
|
this.optionChangesService = optionChangesService;
|
|
25
26
|
this.cdr = cdr;
|
|
27
|
+
this.navigationService = navigationService;
|
|
26
28
|
this.wrapperClass = true;
|
|
27
|
-
this.
|
|
28
|
-
this.
|
|
29
|
-
this.cdr.markForCheck();
|
|
30
|
-
|
|
29
|
+
this.subscriptions = new Subscription();
|
|
30
|
+
this.subscriptions.add(this.optionChangesService.viewChanges
|
|
31
|
+
.subscribe(() => this.cdr.markForCheck()));
|
|
32
|
+
this.subscriptions.add(this.navigationService.taskStatusChanges
|
|
33
|
+
.subscribe(this.updateActiveState.bind(this)));
|
|
34
|
+
}
|
|
35
|
+
get taskIndexAttribute() {
|
|
36
|
+
return this.index;
|
|
37
|
+
}
|
|
38
|
+
get ariaSelected() {
|
|
39
|
+
// assinging null will not render the attribute at all (desired in selectable="false" mode)
|
|
40
|
+
return this.selectable ? String(this.isSelected(this.dataItem)) : null;
|
|
31
41
|
}
|
|
32
42
|
get slotUnitDuration() {
|
|
33
43
|
return slotUnitDuration[this.activeView];
|
|
@@ -38,29 +48,18 @@ export class GanttTaskBase {
|
|
|
38
48
|
get slotWidth() {
|
|
39
49
|
return this.viewService.options.slotWidth;
|
|
40
50
|
}
|
|
41
|
-
ngOnChanges(changes) {
|
|
42
|
-
if (isPresent(changes.dataItem)) {
|
|
43
|
-
if (isPresent(changes.dataItem.previousValue)) {
|
|
44
|
-
this.dependencyDomService.unregisterTask(changes.dataItem.previousValue);
|
|
45
|
-
}
|
|
46
|
-
this.dependencyDomService.registerTask(this.dataItem, this.taskElement.nativeElement);
|
|
47
|
-
}
|
|
48
|
-
else if (isPresent(changes.activeView)) {
|
|
49
|
-
this.dependencyDomService.notifyChanges();
|
|
50
|
-
}
|
|
51
|
-
}
|
|
52
|
-
ngOnDestroy() {
|
|
53
|
-
if (isPresent(this.dataItem)) {
|
|
54
|
-
this.dependencyDomService.unregisterTask(this.dataItem);
|
|
55
|
-
}
|
|
56
|
-
this.viewChangesSubscription.unsubscribe();
|
|
57
|
-
}
|
|
58
51
|
get taskWidth() {
|
|
59
52
|
const itemDuration = this.mapper.extractFromTask(this.dataItem, 'end') - this.mapper.extractFromTask(this.dataItem, 'start');
|
|
60
53
|
const durationInSlotUnits = itemDuration / this.slotUnitDuration;
|
|
61
54
|
const width = durationInSlotUnits * this.slotWidth;
|
|
62
55
|
return width;
|
|
63
56
|
}
|
|
57
|
+
/**
|
|
58
|
+
* The `left` style prop has to be applied to the host element (.k-task-wrap), as the drag clue elements are displayed on .k-task-wrap hover.
|
|
59
|
+
* Applying the `left` offset to the inner .k-task element leaves the .k-task-wrap element rendered with an offset of 0 somewhere on the left
|
|
60
|
+
* and hovering just the .k-task element doesn't expose the drag clues.
|
|
61
|
+
* Additionally, positioning the entire container takes care of positioning the hints as well.
|
|
62
|
+
*/
|
|
64
63
|
get taskOffset() {
|
|
65
64
|
const timeAfterViewStart = this.mapper.extractFromTask(this.dataItem, 'start') - this.viewService.viewStart;
|
|
66
65
|
const offsetInSlotUnits = timeAfterViewStart / this.slotUnitDuration;
|
|
@@ -72,11 +71,48 @@ export class GanttTaskBase {
|
|
|
72
71
|
// fall-back to 0 in case no completionRatio is provided
|
|
73
72
|
return isNumber(overlayWidth) ? overlayWidth : 0;
|
|
74
73
|
}
|
|
74
|
+
ngOnChanges(changes) {
|
|
75
|
+
if (isPresent(changes.dataItem)) {
|
|
76
|
+
if (isPresent(changes.dataItem.previousValue)) {
|
|
77
|
+
this.dependencyDomService.unregisterTask(changes.dataItem.previousValue);
|
|
78
|
+
}
|
|
79
|
+
this.dependencyDomService.registerTask(this.dataItem, this.taskElement.nativeElement);
|
|
80
|
+
}
|
|
81
|
+
else if (isPresent(changes.activeView)) {
|
|
82
|
+
this.dependencyDomService.notifyChanges();
|
|
83
|
+
}
|
|
84
|
+
if (this.navigationService.enabled && isPresent(changes.index)) {
|
|
85
|
+
this.updateActiveState(this.navigationService.activeTask);
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
ngOnDestroy() {
|
|
89
|
+
if (isPresent(this.dataItem)) {
|
|
90
|
+
this.dependencyDomService.unregisterTask(this.dataItem);
|
|
91
|
+
}
|
|
92
|
+
this.subscriptions.unsubscribe();
|
|
93
|
+
}
|
|
94
|
+
updateActiveState({ activeIndex, isFocused }) {
|
|
95
|
+
const isActive = activeIndex === this.index;
|
|
96
|
+
const tabindex = isActive ? '0' : '-1';
|
|
97
|
+
this.taskElement.nativeElement.setAttribute('tabindex', tabindex);
|
|
98
|
+
if (isActive && isFocused) {
|
|
99
|
+
this.taskElement.nativeElement.focus();
|
|
100
|
+
this.taskElement.nativeElement.classList.add(FOCUSED_CLASS);
|
|
101
|
+
}
|
|
102
|
+
else {
|
|
103
|
+
this.taskElement.nativeElement.classList.remove(FOCUSED_CLASS);
|
|
104
|
+
}
|
|
105
|
+
}
|
|
75
106
|
}
|
|
76
107
|
tslib_1.__decorate([
|
|
77
108
|
HostBinding('class.k-task-wrap'),
|
|
78
109
|
tslib_1.__metadata("design:type", Boolean)
|
|
79
110
|
], GanttTaskBase.prototype, "wrapperClass", void 0);
|
|
111
|
+
tslib_1.__decorate([
|
|
112
|
+
HostBinding('attr.data-task-index'),
|
|
113
|
+
tslib_1.__metadata("design:type", Number),
|
|
114
|
+
tslib_1.__metadata("design:paramtypes", [])
|
|
115
|
+
], GanttTaskBase.prototype, "taskIndexAttribute", null);
|
|
80
116
|
tslib_1.__decorate([
|
|
81
117
|
ViewChild('task', { static: true }),
|
|
82
118
|
tslib_1.__metadata("design:type", ElementRef)
|
|
@@ -89,6 +125,18 @@ tslib_1.__decorate([
|
|
|
89
125
|
Input(),
|
|
90
126
|
tslib_1.__metadata("design:type", Number)
|
|
91
127
|
], GanttTaskBase.prototype, "index", void 0);
|
|
128
|
+
tslib_1.__decorate([
|
|
129
|
+
Input(),
|
|
130
|
+
tslib_1.__metadata("design:type", Number)
|
|
131
|
+
], GanttTaskBase.prototype, "level", void 0);
|
|
132
|
+
tslib_1.__decorate([
|
|
133
|
+
Input(),
|
|
134
|
+
tslib_1.__metadata("design:type", Boolean)
|
|
135
|
+
], GanttTaskBase.prototype, "renderDependencyDragClues", void 0);
|
|
136
|
+
tslib_1.__decorate([
|
|
137
|
+
Input(),
|
|
138
|
+
tslib_1.__metadata("design:type", Boolean)
|
|
139
|
+
], GanttTaskBase.prototype, "selectable", void 0);
|
|
92
140
|
tslib_1.__decorate([
|
|
93
141
|
Input(),
|
|
94
142
|
tslib_1.__metadata("design:type", Function)
|
|
@@ -101,3 +149,8 @@ tslib_1.__decorate([
|
|
|
101
149
|
Input(),
|
|
102
150
|
tslib_1.__metadata("design:type", Function)
|
|
103
151
|
], GanttTaskBase.prototype, "taskClass", void 0);
|
|
152
|
+
tslib_1.__decorate([
|
|
153
|
+
HostBinding('style.left.px'),
|
|
154
|
+
tslib_1.__metadata("design:type", Number),
|
|
155
|
+
tslib_1.__metadata("design:paramtypes", [])
|
|
156
|
+
], GanttTaskBase.prototype, "taskOffset", null);
|
|
@@ -4,18 +4,20 @@
|
|
|
4
4
|
*-------------------------------------------------------------------------------------------*/
|
|
5
5
|
import { ChangeDetectorRef, TemplateRef } from '@angular/core';
|
|
6
6
|
import { MappingService } from '../common/mapping.service';
|
|
7
|
+
import { NavigationService } from '../navigation/navigation.service';
|
|
8
|
+
import { EditService } from '../editing/edit.service';
|
|
7
9
|
import { DependencyDomService } from '../dependencies/dependency-dom.service';
|
|
8
10
|
import { OptionChangesService } from '../common/option-changes.service';
|
|
9
11
|
import { TimelineViewService } from './../timeline/timeline-view.service';
|
|
10
12
|
import { GanttTaskBase } from './gantt-task-base';
|
|
11
|
-
import { EditService } from '../editing/edit.service';
|
|
12
13
|
/**
|
|
13
14
|
* @hidden
|
|
14
15
|
*/
|
|
15
16
|
export declare class GanttTaskComponent extends GanttTaskBase {
|
|
16
17
|
private editService;
|
|
18
|
+
touchEnabled: boolean;
|
|
17
19
|
taskContentTemplate: TemplateRef<any>;
|
|
18
20
|
taskTemplate: TemplateRef<any>;
|
|
19
|
-
constructor(mapper: MappingService, timelineViewService: TimelineViewService, dependencyDomService: DependencyDomService, optionChangesService: OptionChangesService, cdr: ChangeDetectorRef,
|
|
21
|
+
constructor(editService: EditService, touchEnabled: boolean, mapper: MappingService, timelineViewService: TimelineViewService, dependencyDomService: DependencyDomService, optionChangesService: OptionChangesService, cdr: ChangeDetectorRef, navigationService: NavigationService);
|
|
20
22
|
onTaskDelete(): void;
|
|
21
23
|
}
|
|
@@ -4,24 +4,27 @@
|
|
|
4
4
|
*-------------------------------------------------------------------------------------------*/
|
|
5
5
|
import * as tslib_1 from "tslib";
|
|
6
6
|
var GanttTaskComponent_1;
|
|
7
|
-
import { ChangeDetectorRef, Component, forwardRef, Input, TemplateRef } from '@angular/core';
|
|
7
|
+
import { ChangeDetectorRef, Component, forwardRef, Inject, Input, TemplateRef } from '@angular/core';
|
|
8
8
|
import { MappingService } from '../common/mapping.service';
|
|
9
|
+
import { NavigationService } from '../navigation/navigation.service';
|
|
10
|
+
import { EditService } from '../editing/edit.service';
|
|
11
|
+
import { TOUCH_ENABLED } from '../common/touch-enabled';
|
|
9
12
|
import { DependencyDomService } from '../dependencies/dependency-dom.service';
|
|
10
13
|
import { OptionChangesService } from '../common/option-changes.service';
|
|
11
14
|
import { TimelineViewService } from './../timeline/timeline-view.service';
|
|
12
15
|
import { GanttTaskBase } from './gantt-task-base';
|
|
13
|
-
import { EditService } from '../editing/edit.service';
|
|
14
16
|
/**
|
|
15
17
|
* @hidden
|
|
16
18
|
*/
|
|
17
19
|
let GanttTaskComponent = GanttTaskComponent_1 = class GanttTaskComponent extends GanttTaskBase {
|
|
18
|
-
constructor(mapper, timelineViewService, dependencyDomService, optionChangesService, cdr,
|
|
19
|
-
super(mapper, timelineViewService, dependencyDomService, optionChangesService, cdr);
|
|
20
|
+
constructor(editService, touchEnabled, mapper, timelineViewService, dependencyDomService, optionChangesService, cdr, navigationService) {
|
|
21
|
+
super(mapper, timelineViewService, dependencyDomService, optionChangesService, cdr, navigationService);
|
|
20
22
|
this.editService = editService;
|
|
23
|
+
this.touchEnabled = touchEnabled;
|
|
21
24
|
}
|
|
22
25
|
onTaskDelete() {
|
|
23
26
|
this.editService.dataItem = this.dataItem;
|
|
24
|
-
this.editService.
|
|
27
|
+
this.editService.taskDelete.next(this.dataItem);
|
|
25
28
|
}
|
|
26
29
|
};
|
|
27
30
|
tslib_1.__decorate([
|
|
@@ -45,17 +48,19 @@ GanttTaskComponent = GanttTaskComponent_1 = tslib_1.__decorate([
|
|
|
45
48
|
<div
|
|
46
49
|
#task
|
|
47
50
|
class="k-task k-task-single"
|
|
51
|
+
role="treeitem"
|
|
48
52
|
[ngClass]="taskClass(dataItem)"
|
|
49
53
|
[style.width.px]="taskWidth"
|
|
50
|
-
[style.left.px]="taskOffset"
|
|
51
54
|
[attr.title]="mapper.extractFromTask(dataItem, 'title')"
|
|
52
|
-
[attr.data-task-index]="index"
|
|
53
55
|
[class.k-state-selected]="isSelected(dataItem)"
|
|
56
|
+
[attr.aria-selected]="ariaSelected"
|
|
57
|
+
[attr.aria-level]="level + 1"
|
|
54
58
|
>
|
|
55
59
|
<ng-container *ngIf="!taskTemplate">
|
|
56
60
|
<div
|
|
57
61
|
class="k-task-complete"
|
|
58
62
|
[style.width.px]="completionOverlayWidth"
|
|
63
|
+
aria-hidden="true"
|
|
59
64
|
>
|
|
60
65
|
</div>
|
|
61
66
|
<div class="k-task-content">
|
|
@@ -70,10 +75,17 @@ GanttTaskComponent = GanttTaskComponent_1 = tslib_1.__decorate([
|
|
|
70
75
|
>
|
|
71
76
|
</ng-template>
|
|
72
77
|
</div>
|
|
73
|
-
<span
|
|
78
|
+
<span
|
|
79
|
+
class="k-task-actions"
|
|
80
|
+
aria-hidden="true"
|
|
81
|
+
>
|
|
74
82
|
<span
|
|
75
|
-
|
|
76
|
-
|
|
83
|
+
class="k-link k-task-delete"
|
|
84
|
+
[kendoEventsOutsideAngular]="{
|
|
85
|
+
click: onTaskDelete
|
|
86
|
+
}"
|
|
87
|
+
[scope]="this"
|
|
88
|
+
>
|
|
77
89
|
<span class="k-icon k-i-close"></span>
|
|
78
90
|
</span>
|
|
79
91
|
</span>
|
|
@@ -89,13 +101,35 @@ GanttTaskComponent = GanttTaskComponent_1 = tslib_1.__decorate([
|
|
|
89
101
|
>
|
|
90
102
|
</ng-template>
|
|
91
103
|
</div>
|
|
92
|
-
|
|
104
|
+
<ng-container *ngIf="renderDependencyDragClues">
|
|
105
|
+
<div
|
|
106
|
+
class="k-task-dot k-task-start k-touch-action-none"
|
|
107
|
+
[class.k-display-block]="touchEnabled"
|
|
108
|
+
>
|
|
109
|
+
</div>
|
|
110
|
+
<div
|
|
111
|
+
class="k-task-dot k-task-end k-touch-action-none"
|
|
112
|
+
[class.k-display-block]="touchEnabled"
|
|
113
|
+
>
|
|
114
|
+
</div>
|
|
115
|
+
</ng-container>
|
|
116
|
+
`,
|
|
117
|
+
styles: [`
|
|
118
|
+
.k-task.k-focus {
|
|
119
|
+
box-shadow: 0 0 4px 3px grey;
|
|
120
|
+
outline: none;
|
|
121
|
+
}
|
|
122
|
+
.k-task.k-focus.k-state-selected {
|
|
123
|
+
box-shadow: 0 0 4px 3px #ffaea8;
|
|
124
|
+
}
|
|
125
|
+
`]
|
|
93
126
|
}),
|
|
94
|
-
tslib_1.
|
|
127
|
+
tslib_1.__param(1, Inject(TOUCH_ENABLED)),
|
|
128
|
+
tslib_1.__metadata("design:paramtypes", [EditService, Boolean, MappingService,
|
|
95
129
|
TimelineViewService,
|
|
96
130
|
DependencyDomService,
|
|
97
131
|
OptionChangesService,
|
|
98
132
|
ChangeDetectorRef,
|
|
99
|
-
|
|
133
|
+
NavigationService])
|
|
100
134
|
], GanttTaskComponent);
|
|
101
135
|
export { GanttTaskComponent };
|
|
@@ -7,6 +7,7 @@ import { TaskClassFn } from '../models/class-callbacks';
|
|
|
7
7
|
import { TimelineViewType } from '../models/timeline-view';
|
|
8
8
|
import { DependencyDomService } from '../dependencies/dependency-dom.service';
|
|
9
9
|
import { MappingService } from '../common/mapping.service';
|
|
10
|
+
import { ViewItem } from '../models/view-item.interface';
|
|
10
11
|
/**
|
|
11
12
|
* @hidden
|
|
12
13
|
*/
|
|
@@ -14,14 +15,16 @@ export declare class GanttTasksTableBodyComponent {
|
|
|
14
15
|
private dependencyDomService;
|
|
15
16
|
private mapper;
|
|
16
17
|
timelineRow: ElementRef<HTMLTableRowElement>;
|
|
17
|
-
|
|
18
|
+
selectable: boolean;
|
|
19
|
+
rows: ViewItem[];
|
|
18
20
|
activeView: TimelineViewType;
|
|
19
21
|
taskContentTemplate: TemplateRef<any>;
|
|
20
22
|
taskTemplate: TemplateRef<any>;
|
|
21
23
|
summaryTaskTemplate: TemplateRef<any>;
|
|
22
24
|
taskClass: TaskClassFn;
|
|
23
|
-
|
|
25
|
+
isExpanded: (item: object) => boolean;
|
|
24
26
|
isTaskSelected: (item: object) => boolean;
|
|
27
|
+
renderDependencyDragClues: boolean;
|
|
25
28
|
constructor(dependencyDomService: DependencyDomService, mapper: MappingService);
|
|
26
|
-
isMileStone(
|
|
29
|
+
isMileStone(item: ViewItem): boolean;
|
|
27
30
|
}
|
|
@@ -6,8 +6,8 @@ import * as tslib_1 from "tslib";
|
|
|
6
6
|
import { Component, Input, TemplateRef, ViewChild, ElementRef } from '@angular/core';
|
|
7
7
|
import { isEqual } from '@progress/kendo-date-math';
|
|
8
8
|
import { DependencyDomService } from '../dependencies/dependency-dom.service';
|
|
9
|
-
import { isPresent } from '../utils';
|
|
10
9
|
import { MappingService } from '../common/mapping.service';
|
|
10
|
+
import { isPresent } from '../utils';
|
|
11
11
|
/**
|
|
12
12
|
* @hidden
|
|
13
13
|
*/
|
|
@@ -23,8 +23,8 @@ let GanttTasksTableBodyComponent = class GanttTasksTableBodyComponent {
|
|
|
23
23
|
this.dependencyDomService.registerTimelineRow(timelineRow.nativeElement);
|
|
24
24
|
}
|
|
25
25
|
}
|
|
26
|
-
isMileStone(
|
|
27
|
-
return !
|
|
26
|
+
isMileStone(item) {
|
|
27
|
+
return !item.hasChildren && isEqual(this.mapper.extractFromTask(item.data, 'start'), this.mapper.extractFromTask(item.data, 'end'));
|
|
28
28
|
}
|
|
29
29
|
};
|
|
30
30
|
tslib_1.__decorate([
|
|
@@ -32,6 +32,10 @@ tslib_1.__decorate([
|
|
|
32
32
|
tslib_1.__metadata("design:type", ElementRef),
|
|
33
33
|
tslib_1.__metadata("design:paramtypes", [ElementRef])
|
|
34
34
|
], GanttTasksTableBodyComponent.prototype, "timelineRow", null);
|
|
35
|
+
tslib_1.__decorate([
|
|
36
|
+
Input(),
|
|
37
|
+
tslib_1.__metadata("design:type", Boolean)
|
|
38
|
+
], GanttTasksTableBodyComponent.prototype, "selectable", void 0);
|
|
35
39
|
tslib_1.__decorate([
|
|
36
40
|
Input(),
|
|
37
41
|
tslib_1.__metadata("design:type", Array)
|
|
@@ -59,11 +63,15 @@ tslib_1.__decorate([
|
|
|
59
63
|
tslib_1.__decorate([
|
|
60
64
|
Input(),
|
|
61
65
|
tslib_1.__metadata("design:type", Function)
|
|
62
|
-
], GanttTasksTableBodyComponent.prototype, "
|
|
66
|
+
], GanttTasksTableBodyComponent.prototype, "isExpanded", void 0);
|
|
63
67
|
tslib_1.__decorate([
|
|
64
68
|
Input(),
|
|
65
69
|
tslib_1.__metadata("design:type", Function)
|
|
66
70
|
], GanttTasksTableBodyComponent.prototype, "isTaskSelected", void 0);
|
|
71
|
+
tslib_1.__decorate([
|
|
72
|
+
Input(),
|
|
73
|
+
tslib_1.__metadata("design:type", Boolean)
|
|
74
|
+
], GanttTasksTableBodyComponent.prototype, "renderDependencyDragClues", void 0);
|
|
67
75
|
GanttTasksTableBodyComponent = tslib_1.__decorate([
|
|
68
76
|
Component({
|
|
69
77
|
selector: '[kendoGanttTasksTableBody]',
|
|
@@ -72,33 +80,43 @@ GanttTasksTableBodyComponent = tslib_1.__decorate([
|
|
|
72
80
|
<td>
|
|
73
81
|
<kendo-gantt-milestone-task
|
|
74
82
|
*ngIf="isMileStone(item); else task"
|
|
75
|
-
[dataItem]="item"
|
|
83
|
+
[dataItem]="item.data"
|
|
84
|
+
[level]="item.level"
|
|
76
85
|
[activeView]="activeView"
|
|
77
86
|
[taskClass]="taskClass"
|
|
87
|
+
[selectable]="selectable"
|
|
78
88
|
[isSelected]="isTaskSelected"
|
|
79
89
|
[index]="index"
|
|
90
|
+
[renderDependencyDragClues]="renderDependencyDragClues"
|
|
80
91
|
>
|
|
81
92
|
</kendo-gantt-milestone-task>
|
|
82
93
|
<ng-template #task>
|
|
83
94
|
<kendo-gantt-summary-task
|
|
84
|
-
*ngIf="hasChildren
|
|
85
|
-
[dataItem]="item"
|
|
95
|
+
*ngIf="item.hasChildren"
|
|
96
|
+
[dataItem]="item.data"
|
|
97
|
+
[level]="item.level"
|
|
86
98
|
[template]="summaryTaskTemplate"
|
|
87
99
|
[activeView]="activeView"
|
|
88
100
|
[taskClass]="taskClass"
|
|
101
|
+
[selectable]="selectable"
|
|
89
102
|
[isSelected]="isTaskSelected"
|
|
103
|
+
[isExpanded]="isExpanded"
|
|
90
104
|
[index]="index"
|
|
105
|
+
[renderDependencyDragClues]="renderDependencyDragClues"
|
|
91
106
|
>
|
|
92
107
|
</kendo-gantt-summary-task>
|
|
93
108
|
<kendo-gantt-task
|
|
94
|
-
*ngIf="!hasChildren
|
|
95
|
-
[dataItem]="item"
|
|
109
|
+
*ngIf="!item.hasChildren"
|
|
110
|
+
[dataItem]="item.data"
|
|
111
|
+
[level]="item.level"
|
|
96
112
|
[taskContentTemplate]="taskContentTemplate"
|
|
97
113
|
[taskTemplate]="taskTemplate"
|
|
98
114
|
[activeView]="activeView"
|
|
99
115
|
[taskClass]="taskClass"
|
|
116
|
+
[selectable]="selectable"
|
|
100
117
|
[isSelected]="isTaskSelected"
|
|
101
118
|
[index]="index"
|
|
119
|
+
[renderDependencyDragClues]="renderDependencyDragClues"
|
|
102
120
|
>
|
|
103
121
|
</kendo-gantt-task>
|
|
104
122
|
</ng-template>
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
/**-----------------------------------------------------------------------------------------
|
|
2
|
+
* Copyright © 2021 Progress Software Corporation. All rights reserved.
|
|
3
|
+
* Licensed under commercial license. See LICENSE.md in the project root for more information
|
|
4
|
+
*-------------------------------------------------------------------------------------------*/
|
|
5
|
+
/**
|
|
6
|
+
* Specifies the settings for auto-scrolling during drag editing operations.
|
|
7
|
+
*/
|
|
8
|
+
export interface DragScrollSettings {
|
|
9
|
+
/**
|
|
10
|
+
* Specifies whether auto-scrolling during drag editing operations is enabled.
|
|
11
|
+
*
|
|
12
|
+
* @default true
|
|
13
|
+
*/
|
|
14
|
+
enabled?: boolean;
|
|
15
|
+
/**
|
|
16
|
+
* Specifies the scrolling step in pixels.
|
|
17
|
+
*
|
|
18
|
+
* @default: 3
|
|
19
|
+
*/
|
|
20
|
+
step?: number;
|
|
21
|
+
/**
|
|
22
|
+
* Specifies the scrolling interval in milliseconds.
|
|
23
|
+
*
|
|
24
|
+
* @default: 1
|
|
25
|
+
*/
|
|
26
|
+
interval?: number;
|
|
27
|
+
/**
|
|
28
|
+
* Specifies the threshold (in pixels) at each end of the scrollable container which when reached will trigger scrolling.
|
|
29
|
+
*
|
|
30
|
+
* @default: 10
|
|
31
|
+
*/
|
|
32
|
+
threshold?: number;
|
|
33
|
+
}
|
|
34
|
+
/**
|
|
35
|
+
* @hidden
|
|
36
|
+
*/
|
|
37
|
+
export declare enum ScrollDirection {
|
|
38
|
+
Backwards = -1,
|
|
39
|
+
Forward = 1
|
|
40
|
+
}
|
|
41
|
+
/**
|
|
42
|
+
* @hidden
|
|
43
|
+
*/
|
|
44
|
+
export declare enum ScrollAxis {
|
|
45
|
+
Vertical = "scrollTop",
|
|
46
|
+
Horizontal = "scrollLeft"
|
|
47
|
+
}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
/**-----------------------------------------------------------------------------------------
|
|
2
|
+
* Copyright © 2021 Progress Software Corporation. All rights reserved.
|
|
3
|
+
* Licensed under commercial license. See LICENSE.md in the project root for more information
|
|
4
|
+
*-------------------------------------------------------------------------------------------*/
|
|
5
|
+
/**
|
|
6
|
+
* @hidden
|
|
7
|
+
*/
|
|
8
|
+
export var ScrollDirection;
|
|
9
|
+
(function (ScrollDirection) {
|
|
10
|
+
ScrollDirection[ScrollDirection["Backwards"] = -1] = "Backwards";
|
|
11
|
+
ScrollDirection[ScrollDirection["Forward"] = 1] = "Forward";
|
|
12
|
+
})(ScrollDirection || (ScrollDirection = {}));
|
|
13
|
+
/**
|
|
14
|
+
* @hidden
|
|
15
|
+
*/
|
|
16
|
+
export var ScrollAxis;
|
|
17
|
+
(function (ScrollAxis) {
|
|
18
|
+
ScrollAxis["Vertical"] = "scrollTop";
|
|
19
|
+
ScrollAxis["Horizontal"] = "scrollLeft";
|
|
20
|
+
})(ScrollAxis || (ScrollAxis = {}));
|
|
@@ -23,7 +23,7 @@ export declare class ScrollSyncService implements OnDestroy {
|
|
|
23
23
|
constructor(ngZone: NgZone);
|
|
24
24
|
registerElement(el: any, sourceType: SourceType): void;
|
|
25
25
|
ngOnDestroy(): void;
|
|
26
|
-
syncScrollTop(sourceType:
|
|
26
|
+
syncScrollTop(sourceType: SourceType, targetType: SourceType): void;
|
|
27
27
|
resetTimelineScrollLeft(): void;
|
|
28
28
|
private scroll;
|
|
29
29
|
}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
/**-----------------------------------------------------------------------------------------
|
|
2
|
+
* Copyright © 2021 Progress Software Corporation. All rights reserved.
|
|
3
|
+
* Licensed under commercial license. See LICENSE.md in the project root for more information
|
|
4
|
+
*-------------------------------------------------------------------------------------------*/
|
|
5
|
+
import { ElementRef, NgZone } from '@angular/core';
|
|
6
|
+
import { DragScrollSettings } from './drag-scroll-settings';
|
|
7
|
+
import { TimelineScrollService } from './timeline-scroll.service';
|
|
8
|
+
/**
|
|
9
|
+
* @hidden
|
|
10
|
+
*/
|
|
11
|
+
export declare class TimelineScrollableDirective {
|
|
12
|
+
private timelineScrollableContainer;
|
|
13
|
+
private scrollService;
|
|
14
|
+
private zone;
|
|
15
|
+
scrollSettings: DragScrollSettings;
|
|
16
|
+
private subscriptions;
|
|
17
|
+
private verticalScrollInterval;
|
|
18
|
+
private horizontalScrollInterval;
|
|
19
|
+
constructor(timelineScrollableContainer: ElementRef<Element>, scrollService: TimelineScrollService, zone: NgZone);
|
|
20
|
+
ngOnDestroy(): void;
|
|
21
|
+
private scrollHorizontallyTo;
|
|
22
|
+
private scrollVerticallyTo;
|
|
23
|
+
private cancelScroll;
|
|
24
|
+
}
|
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
/**-----------------------------------------------------------------------------------------
|
|
2
|
+
* Copyright © 2021 Progress Software Corporation. All rights reserved.
|
|
3
|
+
* Licensed under commercial license. See LICENSE.md in the project root for more information
|
|
4
|
+
*-------------------------------------------------------------------------------------------*/
|
|
5
|
+
import * as tslib_1 from "tslib";
|
|
6
|
+
import { Directive, ElementRef, Input, NgZone } from '@angular/core';
|
|
7
|
+
import { Subscription } from 'rxjs';
|
|
8
|
+
import { isPresent } from '../utils';
|
|
9
|
+
import { ScrollAxis, ScrollDirection } from './drag-scroll-settings';
|
|
10
|
+
import { TimelineScrollService } from './timeline-scroll.service';
|
|
11
|
+
import { getViewportBoundaries, scrollElement } from './utils';
|
|
12
|
+
/**
|
|
13
|
+
* @hidden
|
|
14
|
+
*/
|
|
15
|
+
let TimelineScrollableDirective = class TimelineScrollableDirective {
|
|
16
|
+
constructor(timelineScrollableContainer, scrollService, zone) {
|
|
17
|
+
this.timelineScrollableContainer = timelineScrollableContainer;
|
|
18
|
+
this.scrollService = scrollService;
|
|
19
|
+
this.zone = zone;
|
|
20
|
+
this.subscriptions = new Subscription();
|
|
21
|
+
this.subscriptions.add(this.scrollService.horizontalScroll
|
|
22
|
+
.subscribe(this.scrollHorizontallyTo.bind(this)));
|
|
23
|
+
this.subscriptions.add(this.scrollService.verticalScroll
|
|
24
|
+
.subscribe(this.scrollVerticallyTo.bind(this)));
|
|
25
|
+
this.subscriptions.add(this.scrollService.scrollCancel
|
|
26
|
+
.subscribe(this.cancelScroll.bind(this)));
|
|
27
|
+
}
|
|
28
|
+
ngOnDestroy() {
|
|
29
|
+
this.subscriptions.unsubscribe();
|
|
30
|
+
}
|
|
31
|
+
scrollHorizontallyTo(left) {
|
|
32
|
+
this.zone.runOutsideAngular(() => {
|
|
33
|
+
const container = this.timelineScrollableContainer.nativeElement;
|
|
34
|
+
const visibleBoundaries = getViewportBoundaries(container);
|
|
35
|
+
if (left < visibleBoundaries.left + this.scrollSettings.threshold) {
|
|
36
|
+
this.horizontalScrollInterval = setInterval(() => scrollElement(container, this.scrollSettings.step, ScrollDirection.Backwards, ScrollAxis.Horizontal), this.scrollSettings.interval);
|
|
37
|
+
}
|
|
38
|
+
else if (left > visibleBoundaries.right - this.scrollSettings.threshold) {
|
|
39
|
+
this.horizontalScrollInterval = setInterval(() => scrollElement(container, this.scrollSettings.step, ScrollDirection.Forward, ScrollAxis.Horizontal), this.scrollSettings.interval);
|
|
40
|
+
}
|
|
41
|
+
});
|
|
42
|
+
}
|
|
43
|
+
scrollVerticallyTo(top) {
|
|
44
|
+
this.zone.runOutsideAngular(() => {
|
|
45
|
+
const container = this.timelineScrollableContainer.nativeElement;
|
|
46
|
+
const visibleBoundaries = getViewportBoundaries(container);
|
|
47
|
+
if (top < visibleBoundaries.top + this.scrollSettings.threshold) {
|
|
48
|
+
this.verticalScrollInterval = setInterval(() => scrollElement(container, this.scrollSettings.step, ScrollDirection.Backwards, ScrollAxis.Vertical), this.scrollSettings.interval);
|
|
49
|
+
}
|
|
50
|
+
else if (top > visibleBoundaries.bottom - this.scrollSettings.threshold) {
|
|
51
|
+
this.verticalScrollInterval = setInterval(() => scrollElement(container, this.scrollSettings.step, ScrollDirection.Forward, ScrollAxis.Vertical), this.scrollSettings.interval);
|
|
52
|
+
}
|
|
53
|
+
});
|
|
54
|
+
}
|
|
55
|
+
cancelScroll() {
|
|
56
|
+
if (isPresent(this.verticalScrollInterval)) {
|
|
57
|
+
clearInterval(this.verticalScrollInterval);
|
|
58
|
+
this.verticalScrollInterval = null;
|
|
59
|
+
}
|
|
60
|
+
if (isPresent(this.horizontalScrollInterval)) {
|
|
61
|
+
clearInterval(this.horizontalScrollInterval);
|
|
62
|
+
this.horizontalScrollInterval = null;
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
};
|
|
66
|
+
tslib_1.__decorate([
|
|
67
|
+
Input(),
|
|
68
|
+
tslib_1.__metadata("design:type", Object)
|
|
69
|
+
], TimelineScrollableDirective.prototype, "scrollSettings", void 0);
|
|
70
|
+
TimelineScrollableDirective = tslib_1.__decorate([
|
|
71
|
+
Directive({
|
|
72
|
+
selector: '[kendoGanttTimelineScrollable]'
|
|
73
|
+
}),
|
|
74
|
+
tslib_1.__metadata("design:paramtypes", [ElementRef,
|
|
75
|
+
TimelineScrollService,
|
|
76
|
+
NgZone])
|
|
77
|
+
], TimelineScrollableDirective);
|
|
78
|
+
export { TimelineScrollableDirective };
|