@progress/kendo-angular-gantt 0.2.1-dev.202112091741 → 0.3.0-dev.202201131518
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 +4 -4
- package/dist/es/common/touch-enabled.js +9 -0
- package/dist/es/dependencies/utils.js +40 -5
- 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/add-task.component.js +94 -0
- package/dist/es/editing/dependencies-table.component.js +131 -0
- package/dist/es/editing/edit-dialog.component.js +37 -6
- package/dist/es/editing/edit.service.js +89 -7
- package/dist/es/editing/task-fields.component.js +43 -0
- package/dist/es/editing/{util.js → utils.js} +0 -0
- package/dist/es/expanded-state/expandable.directive.js +4 -6
- package/dist/es/gantt.component.js +230 -45
- package/dist/es/gantt.module.js +36 -10
- package/dist/es/index.js +8 -1
- package/dist/es/localization/gantt-localization.service.js +26 -0
- package/dist/es/localization/messages.js +45 -1
- package/dist/es/main.js +1 -0
- package/dist/es/models/dependency-type.enum.js +16 -0
- package/dist/es/models/events/{add-event.interface.js → dependency-add-event.interface.js} +0 -0
- package/dist/es/models/events/{edit-event.interface.js → task-add-event.interface.js} +0 -0
- package/dist/es/models/models.js +1 -0
- package/dist/es/models/{events/remove-event.interface.js → toolbar-settings.js} +0 -0
- package/dist/es/models/{toolbar-position.js → view-item.interface.js} +0 -0
- package/dist/es/package-metadata.js +1 -1
- package/dist/es/rendering/gantt-milestone-task.component.js +7 -4
- package/dist/es/rendering/gantt-summary-task.component.js +7 -4
- package/dist/es/rendering/gantt-task-base.js +30 -19
- package/dist/es/rendering/gantt-task.component.js +8 -6
- package/dist/es/rendering/gantt-tasks-table-body.component.js +5 -1
- 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 +45 -3
- package/dist/es/toolbar/toolbar.component.js +9 -1
- package/dist/es/utils.js +143 -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 +40 -5
- 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/add-task.component.d.ts +45 -0
- package/dist/es2015/editing/add-task.component.js +102 -0
- package/dist/es2015/editing/dependencies-table.component.d.ts +39 -0
- package/dist/es2015/editing/dependencies-table.component.js +160 -0
- package/dist/es2015/editing/edit-dialog.component.d.ts +10 -3
- package/dist/es2015/editing/edit-dialog.component.js +55 -33
- package/dist/es2015/editing/edit.service.d.ts +24 -3
- package/dist/es2015/editing/edit.service.js +78 -10
- package/dist/es2015/editing/task-fields.component.d.ts +22 -0
- package/dist/es2015/editing/task-fields.component.js +67 -0
- package/dist/es2015/editing/{util.d.ts → utils.d.ts} +0 -0
- package/dist/es2015/editing/{util.js → utils.js} +0 -0
- package/dist/es2015/expanded-state/expandable.directive.d.ts +1 -2
- package/dist/es2015/expanded-state/expandable.directive.js +2 -7
- package/dist/es2015/gantt.component.d.ts +62 -18
- package/dist/es2015/gantt.component.js +290 -43
- package/dist/es2015/gantt.module.js +36 -10
- package/dist/es2015/index.d.ts +8 -1
- package/dist/es2015/index.js +8 -1
- package/dist/es2015/index.metadata.json +1 -1
- package/dist/es2015/localization/{treelist-messages.directive.d.ts → gantt-localization.service.d.ts} +4 -3
- package/dist/es2015/localization/gantt-localization.service.js +25 -0
- package/dist/es2015/localization/messages.d.ts +46 -2
- package/dist/es2015/localization/messages.js +45 -1
- package/dist/es2015/main.d.ts +1 -0
- package/dist/es2015/main.js +1 -0
- package/dist/es2015/models/dependency-type.enum.d.ts +1 -1
- package/dist/es2015/models/dependency-type.enum.js +16 -0
- package/dist/es2015/models/events/dependency-add-event.interface.d.ts +26 -0
- package/dist/es2015/models/events/{add-event.interface.js → dependency-add-event.interface.js} +0 -0
- package/dist/es2015/models/events/task-add-event.interface.d.ts +31 -0
- package/dist/es2015/models/events/{edit-event.interface.js → task-add-event.interface.js} +0 -0
- package/dist/es2015/models/events/task-edit-event.interface.d.ts +17 -4
- package/dist/es2015/models/models.d.ts +4 -3
- package/dist/es2015/models/models.js +1 -0
- package/dist/es2015/models/toolbar-settings.d.ts +29 -0
- package/dist/es2015/models/{events/remove-event.interface.js → toolbar-settings.js} +0 -0
- package/dist/es2015/models/view-item.interface.d.ts +35 -0
- package/dist/es2015/models/{toolbar-position.js → view-item.interface.js} +0 -0
- package/dist/es2015/package-metadata.js +1 -1
- package/dist/es2015/rendering/gantt-milestone-task.component.d.ts +2 -1
- package/dist/es2015/rendering/gantt-milestone-task.component.js +18 -5
- package/dist/es2015/rendering/gantt-summary-task.component.d.ts +2 -1
- package/dist/es2015/rendering/gantt-summary-task.component.js +18 -5
- package/dist/es2015/rendering/gantt-task-base.d.ts +11 -5
- package/dist/es2015/rendering/gantt-task-base.js +30 -19
- package/dist/es2015/rendering/gantt-task.component.d.ts +2 -1
- package/dist/es2015/rendering/gantt-task.component.js +19 -7
- package/dist/es2015/rendering/gantt-tasks-table-body.component.d.ts +1 -0
- package/dist/es2015/rendering/gantt-tasks-table-body.component.js +10 -3
- 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/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 +25 -2
- package/dist/es2015/timeline/gantt-timeline.component.js +56 -3
- package/dist/es2015/toolbar/toolbar-template.directive.d.ts +1 -1
- package/dist/es2015/toolbar/toolbar.component.d.ts +2 -0
- package/dist/es2015/toolbar/toolbar.component.js +10 -0
- package/dist/es2015/utils.d.ts +70 -8
- package/dist/es2015/utils.js +143 -12
- package/dist/fesm2015/index.js +1981 -424
- package/dist/fesm5/index.js +1784 -391
- package/dist/npm/common/touch-enabled.js +11 -0
- package/dist/npm/dependencies/utils.js +40 -5
- 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/add-task.component.js +96 -0
- package/dist/npm/editing/dependencies-table.component.js +133 -0
- package/dist/npm/editing/edit-dialog.component.js +36 -5
- package/dist/npm/editing/edit.service.js +88 -6
- package/dist/npm/editing/task-fields.component.js +45 -0
- package/dist/npm/editing/{util.js → utils.js} +0 -0
- package/dist/npm/expanded-state/expandable.directive.js +3 -5
- package/dist/npm/gantt.component.js +231 -46
- package/dist/npm/gantt.module.js +34 -8
- package/dist/npm/index.js +16 -2
- package/dist/npm/localization/gantt-localization.service.js +28 -0
- package/dist/npm/localization/messages.js +45 -1
- package/dist/npm/main.js +2 -0
- package/dist/npm/models/dependency-type.enum.js +16 -0
- package/dist/npm/models/events/{add-event.interface.js → dependency-add-event.interface.js} +0 -0
- package/dist/npm/models/events/{edit-event.interface.js → task-add-event.interface.js} +0 -0
- package/dist/npm/models/models.js +2 -0
- package/dist/npm/models/{events/remove-event.interface.js → toolbar-settings.js} +0 -0
- package/dist/npm/models/{toolbar-position.js → view-item.interface.js} +0 -0
- package/dist/npm/package-metadata.js +1 -1
- package/dist/npm/rendering/gantt-milestone-task.component.js +6 -3
- package/dist/npm/rendering/gantt-summary-task.component.js +6 -3
- package/dist/npm/rendering/gantt-task-base.js +30 -19
- package/dist/npm/rendering/gantt-task.component.js +7 -5
- package/dist/npm/rendering/gantt-tasks-table-body.component.js +5 -1
- 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 +44 -2
- package/dist/npm/toolbar/toolbar.component.js +9 -1
- package/dist/npm/utils.js +143 -12
- package/dist/systemjs/kendo-angular-gantt.js +1 -1
- package/package.json +9 -6
- package/dist/es/localization/treelist-messages.directive.js +0 -31
- package/dist/es2015/localization/treelist-messages.directive.js +0 -29
- package/dist/es2015/models/events/add-event.interface.d.ts +0 -16
- package/dist/es2015/models/events/edit-event.interface.d.ts +0 -19
- package/dist/es2015/models/events/remove-event.interface.d.ts +0 -16
- package/dist/es2015/models/toolbar-position.d.ts +0 -9
- package/dist/npm/localization/treelist-messages.directive.js +0 -33
|
@@ -38,29 +38,18 @@ export class GanttTaskBase {
|
|
|
38
38
|
get slotWidth() {
|
|
39
39
|
return this.viewService.options.slotWidth;
|
|
40
40
|
}
|
|
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
41
|
get taskWidth() {
|
|
59
42
|
const itemDuration = this.mapper.extractFromTask(this.dataItem, 'end') - this.mapper.extractFromTask(this.dataItem, 'start');
|
|
60
43
|
const durationInSlotUnits = itemDuration / this.slotUnitDuration;
|
|
61
44
|
const width = durationInSlotUnits * this.slotWidth;
|
|
62
45
|
return width;
|
|
63
46
|
}
|
|
47
|
+
/**
|
|
48
|
+
* 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.
|
|
49
|
+
* 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
|
|
50
|
+
* and hovering just the .k-task element doesn't expose the drag clues.
|
|
51
|
+
* Additionally, positioning the entire container takes care of positioning the hints as well.
|
|
52
|
+
*/
|
|
64
53
|
get taskOffset() {
|
|
65
54
|
const timeAfterViewStart = this.mapper.extractFromTask(this.dataItem, 'start') - this.viewService.viewStart;
|
|
66
55
|
const offsetInSlotUnits = timeAfterViewStart / this.slotUnitDuration;
|
|
@@ -72,6 +61,23 @@ export class GanttTaskBase {
|
|
|
72
61
|
// fall-back to 0 in case no completionRatio is provided
|
|
73
62
|
return isNumber(overlayWidth) ? overlayWidth : 0;
|
|
74
63
|
}
|
|
64
|
+
ngOnChanges(changes) {
|
|
65
|
+
if (isPresent(changes.dataItem)) {
|
|
66
|
+
if (isPresent(changes.dataItem.previousValue)) {
|
|
67
|
+
this.dependencyDomService.unregisterTask(changes.dataItem.previousValue);
|
|
68
|
+
}
|
|
69
|
+
this.dependencyDomService.registerTask(this.dataItem, this.taskElement.nativeElement);
|
|
70
|
+
}
|
|
71
|
+
else if (isPresent(changes.activeView)) {
|
|
72
|
+
this.dependencyDomService.notifyChanges();
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
ngOnDestroy() {
|
|
76
|
+
if (isPresent(this.dataItem)) {
|
|
77
|
+
this.dependencyDomService.unregisterTask(this.dataItem);
|
|
78
|
+
}
|
|
79
|
+
this.viewChangesSubscription.unsubscribe();
|
|
80
|
+
}
|
|
75
81
|
}
|
|
76
82
|
tslib_1.__decorate([
|
|
77
83
|
HostBinding('class.k-task-wrap'),
|
|
@@ -87,8 +93,8 @@ tslib_1.__decorate([
|
|
|
87
93
|
], GanttTaskBase.prototype, "dataItem", void 0);
|
|
88
94
|
tslib_1.__decorate([
|
|
89
95
|
Input(),
|
|
90
|
-
tslib_1.__metadata("design:type",
|
|
91
|
-
], GanttTaskBase.prototype, "
|
|
96
|
+
tslib_1.__metadata("design:type", Boolean)
|
|
97
|
+
], GanttTaskBase.prototype, "renderDependencyDragClues", void 0);
|
|
92
98
|
tslib_1.__decorate([
|
|
93
99
|
Input(),
|
|
94
100
|
tslib_1.__metadata("design:type", Function)
|
|
@@ -101,3 +107,8 @@ tslib_1.__decorate([
|
|
|
101
107
|
Input(),
|
|
102
108
|
tslib_1.__metadata("design:type", Function)
|
|
103
109
|
], GanttTaskBase.prototype, "taskClass", void 0);
|
|
110
|
+
tslib_1.__decorate([
|
|
111
|
+
HostBinding('style.left.px'),
|
|
112
|
+
tslib_1.__metadata("design:type", Number),
|
|
113
|
+
tslib_1.__metadata("design:paramtypes", [])
|
|
114
|
+
], GanttTaskBase.prototype, "taskOffset", null);
|
|
@@ -14,8 +14,9 @@ import { EditService } from '../editing/edit.service';
|
|
|
14
14
|
*/
|
|
15
15
|
export declare class GanttTaskComponent extends GanttTaskBase {
|
|
16
16
|
private editService;
|
|
17
|
+
touchEnabled: boolean;
|
|
17
18
|
taskContentTemplate: TemplateRef<any>;
|
|
18
19
|
taskTemplate: TemplateRef<any>;
|
|
19
|
-
constructor(mapper: MappingService, timelineViewService: TimelineViewService, dependencyDomService: DependencyDomService, optionChangesService: OptionChangesService, cdr: ChangeDetectorRef
|
|
20
|
+
constructor(editService: EditService, touchEnabled: boolean, mapper: MappingService, timelineViewService: TimelineViewService, dependencyDomService: DependencyDomService, optionChangesService: OptionChangesService, cdr: ChangeDetectorRef);
|
|
20
21
|
onTaskDelete(): void;
|
|
21
22
|
}
|
|
@@ -4,8 +4,9 @@
|
|
|
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 { TOUCH_ENABLED } from '../common/touch-enabled';
|
|
9
10
|
import { DependencyDomService } from '../dependencies/dependency-dom.service';
|
|
10
11
|
import { OptionChangesService } from '../common/option-changes.service';
|
|
11
12
|
import { TimelineViewService } from './../timeline/timeline-view.service';
|
|
@@ -15,9 +16,10 @@ import { EditService } from '../editing/edit.service';
|
|
|
15
16
|
* @hidden
|
|
16
17
|
*/
|
|
17
18
|
let GanttTaskComponent = GanttTaskComponent_1 = class GanttTaskComponent extends GanttTaskBase {
|
|
18
|
-
constructor(mapper, timelineViewService, dependencyDomService, optionChangesService, cdr
|
|
19
|
+
constructor(editService, touchEnabled, mapper, timelineViewService, dependencyDomService, optionChangesService, cdr) {
|
|
19
20
|
super(mapper, timelineViewService, dependencyDomService, optionChangesService, cdr);
|
|
20
21
|
this.editService = editService;
|
|
22
|
+
this.touchEnabled = touchEnabled;
|
|
21
23
|
}
|
|
22
24
|
onTaskDelete() {
|
|
23
25
|
this.editService.dataItem = this.dataItem;
|
|
@@ -47,9 +49,7 @@ GanttTaskComponent = GanttTaskComponent_1 = tslib_1.__decorate([
|
|
|
47
49
|
class="k-task k-task-single"
|
|
48
50
|
[ngClass]="taskClass(dataItem)"
|
|
49
51
|
[style.width.px]="taskWidth"
|
|
50
|
-
[style.left.px]="taskOffset"
|
|
51
52
|
[attr.title]="mapper.extractFromTask(dataItem, 'title')"
|
|
52
|
-
[attr.data-task-index]="index"
|
|
53
53
|
[class.k-state-selected]="isSelected(dataItem)"
|
|
54
54
|
>
|
|
55
55
|
<ng-container *ngIf="!taskTemplate">
|
|
@@ -89,13 +89,25 @@ GanttTaskComponent = GanttTaskComponent_1 = tslib_1.__decorate([
|
|
|
89
89
|
>
|
|
90
90
|
</ng-template>
|
|
91
91
|
</div>
|
|
92
|
+
<ng-container *ngIf="renderDependencyDragClues">
|
|
93
|
+
<div
|
|
94
|
+
class="k-task-dot k-task-start k-touch-action-none"
|
|
95
|
+
[class.k-display-block]="touchEnabled"
|
|
96
|
+
>
|
|
97
|
+
</div>
|
|
98
|
+
<div
|
|
99
|
+
class="k-task-dot k-task-end k-touch-action-none"
|
|
100
|
+
[class.k-display-block]="touchEnabled"
|
|
101
|
+
>
|
|
102
|
+
</div>
|
|
103
|
+
</ng-container>
|
|
92
104
|
`
|
|
93
105
|
}),
|
|
94
|
-
tslib_1.
|
|
106
|
+
tslib_1.__param(1, Inject(TOUCH_ENABLED)),
|
|
107
|
+
tslib_1.__metadata("design:paramtypes", [EditService, Boolean, MappingService,
|
|
95
108
|
TimelineViewService,
|
|
96
109
|
DependencyDomService,
|
|
97
110
|
OptionChangesService,
|
|
98
|
-
ChangeDetectorRef
|
|
99
|
-
EditService])
|
|
111
|
+
ChangeDetectorRef])
|
|
100
112
|
], GanttTaskComponent);
|
|
101
113
|
export { GanttTaskComponent };
|
|
@@ -22,6 +22,7 @@ export declare class GanttTasksTableBodyComponent {
|
|
|
22
22
|
taskClass: TaskClassFn;
|
|
23
23
|
hasChildren: (item: object) => boolean;
|
|
24
24
|
isTaskSelected: (item: object) => boolean;
|
|
25
|
+
renderDependencyDragClues: boolean;
|
|
25
26
|
constructor(dependencyDomService: DependencyDomService, mapper: MappingService);
|
|
26
27
|
isMileStone(task: any): boolean;
|
|
27
28
|
}
|
|
@@ -64,6 +64,10 @@ tslib_1.__decorate([
|
|
|
64
64
|
Input(),
|
|
65
65
|
tslib_1.__metadata("design:type", Function)
|
|
66
66
|
], GanttTasksTableBodyComponent.prototype, "isTaskSelected", void 0);
|
|
67
|
+
tslib_1.__decorate([
|
|
68
|
+
Input(),
|
|
69
|
+
tslib_1.__metadata("design:type", Boolean)
|
|
70
|
+
], GanttTasksTableBodyComponent.prototype, "renderDependencyDragClues", void 0);
|
|
67
71
|
GanttTasksTableBodyComponent = tslib_1.__decorate([
|
|
68
72
|
Component({
|
|
69
73
|
selector: '[kendoGanttTasksTableBody]',
|
|
@@ -76,7 +80,8 @@ GanttTasksTableBodyComponent = tslib_1.__decorate([
|
|
|
76
80
|
[activeView]="activeView"
|
|
77
81
|
[taskClass]="taskClass"
|
|
78
82
|
[isSelected]="isTaskSelected"
|
|
79
|
-
[index]="index"
|
|
83
|
+
[attr.data-task-index]="index"
|
|
84
|
+
[renderDependencyDragClues]="renderDependencyDragClues"
|
|
80
85
|
>
|
|
81
86
|
</kendo-gantt-milestone-task>
|
|
82
87
|
<ng-template #task>
|
|
@@ -87,7 +92,8 @@ GanttTasksTableBodyComponent = tslib_1.__decorate([
|
|
|
87
92
|
[activeView]="activeView"
|
|
88
93
|
[taskClass]="taskClass"
|
|
89
94
|
[isSelected]="isTaskSelected"
|
|
90
|
-
[index]="index"
|
|
95
|
+
[attr.data-task-index]="index"
|
|
96
|
+
[renderDependencyDragClues]="renderDependencyDragClues"
|
|
91
97
|
>
|
|
92
98
|
</kendo-gantt-summary-task>
|
|
93
99
|
<kendo-gantt-task
|
|
@@ -98,7 +104,8 @@ GanttTasksTableBodyComponent = tslib_1.__decorate([
|
|
|
98
104
|
[activeView]="activeView"
|
|
99
105
|
[taskClass]="taskClass"
|
|
100
106
|
[isSelected]="isTaskSelected"
|
|
101
|
-
[index]="index"
|
|
107
|
+
[attr.data-task-index]="index"
|
|
108
|
+
[renderDependencyDragClues]="renderDependencyDragClues"
|
|
102
109
|
>
|
|
103
110
|
</kendo-gantt-task>
|
|
104
111
|
</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 = {}));
|
|
@@ -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 };
|
|
@@ -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
|
+
import { Subject } from 'rxjs';
|
|
6
|
+
/**
|
|
7
|
+
* @hidden
|
|
8
|
+
*
|
|
9
|
+
* Notifies the timeline-scroll.directive to scroll into view to requested coordinates.
|
|
10
|
+
* The scrolling is performed based on client (viewport) coordinates.
|
|
11
|
+
*/
|
|
12
|
+
export declare class TimelineScrollService {
|
|
13
|
+
readonly horizontalScroll: Subject<number>;
|
|
14
|
+
readonly verticalScroll: Subject<number>;
|
|
15
|
+
readonly scrollCancel: Subject<any>;
|
|
16
|
+
ngOnDestroy(): void;
|
|
17
|
+
requestHorizontalScroll(clientTop: number): void;
|
|
18
|
+
requestVerticalScroll(clientLeft: number): void;
|
|
19
|
+
requestScrollCancel(): void;
|
|
20
|
+
}
|
|
@@ -0,0 +1,44 @@
|
|
|
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 { Injectable } from '@angular/core';
|
|
7
|
+
import { Subject } from 'rxjs';
|
|
8
|
+
/**
|
|
9
|
+
* @hidden
|
|
10
|
+
*
|
|
11
|
+
* Notifies the timeline-scroll.directive to scroll into view to requested coordinates.
|
|
12
|
+
* The scrolling is performed based on client (viewport) coordinates.
|
|
13
|
+
*/
|
|
14
|
+
let TimelineScrollService = class TimelineScrollService {
|
|
15
|
+
/**
|
|
16
|
+
* @hidden
|
|
17
|
+
*
|
|
18
|
+
* Notifies the timeline-scroll.directive to scroll into view to requested coordinates.
|
|
19
|
+
* The scrolling is performed based on client (viewport) coordinates.
|
|
20
|
+
*/
|
|
21
|
+
constructor() {
|
|
22
|
+
this.horizontalScroll = new Subject();
|
|
23
|
+
this.verticalScroll = new Subject();
|
|
24
|
+
this.scrollCancel = new Subject();
|
|
25
|
+
}
|
|
26
|
+
ngOnDestroy() {
|
|
27
|
+
this.horizontalScroll.complete();
|
|
28
|
+
this.verticalScroll.complete();
|
|
29
|
+
this.scrollCancel.complete();
|
|
30
|
+
}
|
|
31
|
+
requestHorizontalScroll(clientTop) {
|
|
32
|
+
this.horizontalScroll.next(clientTop);
|
|
33
|
+
}
|
|
34
|
+
requestVerticalScroll(clientLeft) {
|
|
35
|
+
this.verticalScroll.next(clientLeft);
|
|
36
|
+
}
|
|
37
|
+
requestScrollCancel() {
|
|
38
|
+
this.scrollCancel.next();
|
|
39
|
+
}
|
|
40
|
+
};
|
|
41
|
+
TimelineScrollService = tslib_1.__decorate([
|
|
42
|
+
Injectable()
|
|
43
|
+
], TimelineScrollService);
|
|
44
|
+
export { TimelineScrollService };
|
|
@@ -0,0 +1,29 @@
|
|
|
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 { ScrollAxis, ScrollDirection } from './drag-scroll-settings';
|
|
6
|
+
/**
|
|
7
|
+
* @hidden
|
|
8
|
+
*
|
|
9
|
+
* Scrolls the element in the given direction by the provided step in the provided scroll axis.
|
|
10
|
+
*
|
|
11
|
+
* If the targeted scroll incrementation doesn't yield any result due to device pixel ratio issues (https://github.com/dimitar-pechev/RenderingIndependentScrollOffsets#readme),
|
|
12
|
+
* increments the step with 1px and again attempts to change the scrollTop of the element, until the content is actually scrolled.
|
|
13
|
+
*
|
|
14
|
+
* Cuts the operation short after 20 unsuccessful attempts to prevent infinite loops in possible corner-case scenarios.
|
|
15
|
+
*/
|
|
16
|
+
export declare const scrollElement: (element: Element, step: number, direction: ScrollDirection, scrollAxis: ScrollAxis) => void;
|
|
17
|
+
/**
|
|
18
|
+
* @hidden
|
|
19
|
+
*
|
|
20
|
+
* As client coordinates are not restricted to the range 0px - {viewportSize}px, but can have negative starting values or ending values greater than the viewport size,
|
|
21
|
+
* this function extracts the visible boundaries of the provided element - fall-backing to 0 when the top/left are below 0,
|
|
22
|
+
* and fall-backing to the actual visible size of the container for bottom/right.
|
|
23
|
+
*/
|
|
24
|
+
export declare const getViewportBoundaries: (element: Element) => {
|
|
25
|
+
top: number;
|
|
26
|
+
left: number;
|
|
27
|
+
right: number;
|
|
28
|
+
bottom: number;
|
|
29
|
+
};
|
|
@@ -0,0 +1,80 @@
|
|
|
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 { isDocumentAvailable } from '@progress/kendo-angular-common';
|
|
6
|
+
import { ScrollAxis, ScrollDirection } from './drag-scroll-settings';
|
|
7
|
+
import { isPresent } from '../utils';
|
|
8
|
+
/**
|
|
9
|
+
* @hidden
|
|
10
|
+
*
|
|
11
|
+
* Checks if the beginning of the scrollable element is reached (top/left).
|
|
12
|
+
* Floors the top value.
|
|
13
|
+
*/
|
|
14
|
+
const isUpperLimitReached = (element, axis) => Math.floor(element[axis]) <= 0;
|
|
15
|
+
const ɵ0 = isUpperLimitReached;
|
|
16
|
+
/**
|
|
17
|
+
* @hidden
|
|
18
|
+
*
|
|
19
|
+
* Checks if the end of the scrollable element is reached (bottom/right).
|
|
20
|
+
* Ceils the top value.
|
|
21
|
+
*/
|
|
22
|
+
const isBottomLimitReached = (element, axis) => {
|
|
23
|
+
const elementSize = axis === ScrollAxis.Horizontal ?
|
|
24
|
+
element.scrollWidth - element.clientWidth :
|
|
25
|
+
element.scrollHeight - element.clientHeight;
|
|
26
|
+
return Math.ceil(element[axis]) >= elementSize;
|
|
27
|
+
};
|
|
28
|
+
const ɵ1 = isBottomLimitReached;
|
|
29
|
+
/**
|
|
30
|
+
* @hidden
|
|
31
|
+
*
|
|
32
|
+
* Scrolls the element in the given direction by the provided step in the provided scroll axis.
|
|
33
|
+
*
|
|
34
|
+
* If the targeted scroll incrementation doesn't yield any result due to device pixel ratio issues (https://github.com/dimitar-pechev/RenderingIndependentScrollOffsets#readme),
|
|
35
|
+
* increments the step with 1px and again attempts to change the scrollTop of the element, until the content is actually scrolled.
|
|
36
|
+
*
|
|
37
|
+
* Cuts the operation short after 20 unsuccessful attempts to prevent infinite loops in possible corner-case scenarios.
|
|
38
|
+
*/
|
|
39
|
+
export const scrollElement = (element, step, direction, scrollAxis) => {
|
|
40
|
+
if (!(isPresent(element) && isDocumentAvailable())) {
|
|
41
|
+
return;
|
|
42
|
+
}
|
|
43
|
+
const initialScrollPosition = element[scrollAxis];
|
|
44
|
+
let currentStep = step;
|
|
45
|
+
let iterations = 0;
|
|
46
|
+
while (initialScrollPosition === element[scrollAxis] &&
|
|
47
|
+
!(direction === ScrollDirection.Backwards && isUpperLimitReached(element, scrollAxis)) &&
|
|
48
|
+
!(direction === ScrollDirection.Forward && isBottomLimitReached(element, scrollAxis)) &&
|
|
49
|
+
iterations < 20 // cut the operation short in 20 attempts - in case of a wild corner case
|
|
50
|
+
) {
|
|
51
|
+
element[scrollAxis] += (currentStep * direction);
|
|
52
|
+
// try with a larger step if the current one doesn't update the scroll position successfully
|
|
53
|
+
currentStep += 1;
|
|
54
|
+
iterations += 1;
|
|
55
|
+
}
|
|
56
|
+
};
|
|
57
|
+
/**
|
|
58
|
+
* @hidden
|
|
59
|
+
*
|
|
60
|
+
* As client coordinates are not restricted to the range 0px - {viewportSize}px, but can have negative starting values or ending values greater than the viewport size,
|
|
61
|
+
* this function extracts the visible boundaries of the provided element - fall-backing to 0 when the top/left are below 0,
|
|
62
|
+
* and fall-backing to the actual visible size of the container for bottom/right.
|
|
63
|
+
*/
|
|
64
|
+
export const getViewportBoundaries = (element) => {
|
|
65
|
+
const elementRect = element.getBoundingClientRect();
|
|
66
|
+
// if the beginning of the scrollable container is above/before the current viewport, fall-back to 0
|
|
67
|
+
const topLimit = Math.max(elementRect.top, 0);
|
|
68
|
+
const leftLimit = Math.max(elementRect.left, 0);
|
|
69
|
+
// if the end of the scrollable container is beneath/after the current viewport, fall-back to its client height
|
|
70
|
+
// add the distance from the start of the viewport to the beginning of the container to ensure scrolling bottom begins when the actual end of the container is reached
|
|
71
|
+
const bottomLimit = topLimit + Math.min(elementRect.bottom, element.clientHeight);
|
|
72
|
+
const rightLimit = leftLimit + Math.min(elementRect.right, element.clientWidth);
|
|
73
|
+
return {
|
|
74
|
+
top: topLimit,
|
|
75
|
+
bottom: bottomLimit,
|
|
76
|
+
left: leftLimit,
|
|
77
|
+
right: rightLimit
|
|
78
|
+
};
|
|
79
|
+
};
|
|
80
|
+
export { ɵ0, ɵ1 };
|
|
@@ -2,10 +2,10 @@
|
|
|
2
2
|
* Copyright © 2021 Progress Software Corporation. All rights reserved.
|
|
3
3
|
* Licensed under commercial license. See LICENSE.md in the project root for more information
|
|
4
4
|
*-------------------------------------------------------------------------------------------*/
|
|
5
|
-
import { AfterViewInit, ElementRef, NgZone, Renderer2, TemplateRef } from '@angular/core';
|
|
5
|
+
import { AfterViewInit, ElementRef, EventEmitter, NgZone, Renderer2, TemplateRef, ViewContainerRef } from '@angular/core';
|
|
6
6
|
import { ScrollSyncService } from '../scrolling/scroll-sync.service';
|
|
7
7
|
import { DependencyDomService } from '../dependencies/dependency-dom.service';
|
|
8
|
-
import { TimelineViewType, TaskClassFn } from '../models/models';
|
|
8
|
+
import { TimelineViewType, TaskClassFn, DragScrollSettings } from '../models/models';
|
|
9
9
|
/**
|
|
10
10
|
* @hidden
|
|
11
11
|
*/
|
|
@@ -14,10 +14,24 @@ export declare class GanttTimelineComponent implements AfterViewInit {
|
|
|
14
14
|
private dependencyDomService;
|
|
15
15
|
private renderer;
|
|
16
16
|
private zone;
|
|
17
|
+
/**
|
|
18
|
+
* Represents the scrollable container of the timeline content.
|
|
19
|
+
* Used externally by the DependencyDragCreateDirective.
|
|
20
|
+
*/
|
|
17
21
|
timelineContent: ElementRef<HTMLElement>;
|
|
18
22
|
timelineColumns: ElementRef<HTMLElement>;
|
|
19
23
|
timelineHeaderWrap: ElementRef<HTMLElement>;
|
|
20
24
|
tasksContainer: ElementRef<HTMLElement>;
|
|
25
|
+
/**
|
|
26
|
+
* Represents the view container ref used for rendering the dependency drag popop.
|
|
27
|
+
* Used externally by the DependencyDragCreateDirective.
|
|
28
|
+
*/
|
|
29
|
+
dragPopupContainer: ViewContainerRef;
|
|
30
|
+
/**
|
|
31
|
+
* Represents the polyline element used for rendering the dependency drag editing interaction.
|
|
32
|
+
* Used externally by the DependencyDragCreateDirective.
|
|
33
|
+
*/
|
|
34
|
+
dependencyDragCreatePolyline: ElementRef<SVGPolylineElement>;
|
|
21
35
|
hostClass: boolean;
|
|
22
36
|
rows: any[];
|
|
23
37
|
slots: any[];
|
|
@@ -29,8 +43,17 @@ export declare class GanttTimelineComponent implements AfterViewInit {
|
|
|
29
43
|
summaryTaskTemplate: TemplateRef<any>;
|
|
30
44
|
taskClass: TaskClassFn;
|
|
31
45
|
isTaskSelected: (item: object) => boolean;
|
|
46
|
+
renderDependencyDragClues: boolean;
|
|
47
|
+
dragScrollSettings: DragScrollSettings;
|
|
32
48
|
hasChildren: (item: object) => boolean;
|
|
33
49
|
dependencies: any[];
|
|
50
|
+
timelineContainerPress: EventEmitter<any>;
|
|
51
|
+
timelineContainerDrag: EventEmitter<any>;
|
|
52
|
+
timelineContainerRelease: EventEmitter<any>;
|
|
53
|
+
/**
|
|
54
|
+
* Specifies whether the draggable will attach or detach its pointer event listeners.
|
|
55
|
+
*/
|
|
56
|
+
readonly draggableEnabled: boolean;
|
|
34
57
|
private subscriptions;
|
|
35
58
|
constructor(scrollSyncService: ScrollSyncService, dependencyDomService: DependencyDomService, renderer: Renderer2, zone: NgZone);
|
|
36
59
|
ngAfterViewInit(): void;
|