@progress/kendo-angular-gantt 13.5.1-develop.2 → 13.6.0-develop.1

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.
@@ -4,12 +4,12 @@
4
4
  *-------------------------------------------------------------------------------------------*/
5
5
  import * as i0 from '@angular/core';
6
6
  import { Injectable, Component, HostBinding, Input, InjectionToken, EventEmitter, Inject, LOCALE_ID, Directive, ViewChild, forwardRef, ViewContainerRef, Output, Optional, QueryList, SkipSelf, Host, ContentChildren, ContentChild, HostListener, isDevMode, NgModule } from '@angular/core';
7
- import * as i11 from '@progress/kendo-angular-treelist';
7
+ import * as i12 from '@progress/kendo-angular-treelist';
8
8
  import { ColumnBase, ColumnComponent, ColumnGroupComponent, SpanColumnComponent, DataBoundTreeComponent, ExpandableTreeComponent, TreeListComponent, FlatBindingDirective, HierarchyBindingDirective, ExpandableDirective, TreeListModule } from '@progress/kendo-angular-treelist';
9
9
  import { cloneDate, addWeeks, firstDayInWeek, addDays, lastDayOfMonth, getDate, firstDayOfMonth, addMonths, lastMonthOfYear, MS_PER_HOUR, MS_PER_DAY, isEqual } from '@progress/kendo-date-math';
10
10
  import { Subject, Subscription, fromEvent, forkJoin, EMPTY, isObservable, of } from 'rxjs';
11
11
  import { validatePackage } from '@progress/kendo-licensing';
12
- import * as i16 from '@progress/kendo-angular-common';
12
+ import * as i17 from '@progress/kendo-angular-common';
13
13
  import { Keys, isDocumentAvailable, closestInScope, matchesClasses, PreventableEvent, anyChanged, closest, isFocusable, focusableSelector, isVisible, shouldShowValidationUI, hasObservers, EventsModule, DraggableModule, WatermarkModule } from '@progress/kendo-angular-common';
14
14
  import { map, distinctUntilChanged, take, expand, reduce, switchMap, filter } from 'rxjs/operators';
15
15
  import { getter, touchEnabled } from '@progress/kendo-common';
@@ -52,8 +52,8 @@ const packageMetadata = {
52
52
  name: '@progress/kendo-angular-gantt',
53
53
  productName: 'Kendo UI for Angular',
54
54
  productCodes: ['KENDOUIANGULAR', 'KENDOUICOMPLETE'],
55
- publishDate: 1695044356,
56
- version: '13.5.1-develop.2',
55
+ publishDate: 1695633813,
56
+ version: '13.6.0-develop.1',
57
57
  licensingDocsUrl: 'https://www.telerik.com/kendo-angular-ui/my-license/?utm_medium=product&utm_source=kendoangular&utm_campaign=kendo-ui-angular-purchase-license-keys-warning'
58
58
  };
59
59
 
@@ -277,7 +277,7 @@ const isArray = (value) => Array.isArray(value);
277
277
  * Returns a new date with the specified hours, minutes, seconds and millliseconds set.
278
278
  * Only the hours are required, the rest of the params are set to `0` by default.
279
279
  */
280
- const setTime = (date, hours, minutes = 0, seconds = 0, milliseconds = 0) => {
280
+ const setTime$1 = (date, hours, minutes = 0, seconds = 0, milliseconds = 0) => {
281
281
  if (!isPresent(date)) {
282
282
  return null;
283
283
  }
@@ -657,6 +657,81 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
657
657
  type: Injectable
658
658
  }], ctorParameters: function () { return [{ type: MappingService }]; } });
659
659
 
660
+ const MS_PER_SECOND = 1000;
661
+ const MS_PER_MINUTE = 60 * MS_PER_SECOND;
662
+ /**
663
+ * @hidden
664
+ */
665
+ class CurrentTimeMarkerService {
666
+ constructor(renderer, zone) {
667
+ this.renderer = renderer;
668
+ this.zone = zone;
669
+ this.slots = [];
670
+ this.rows = [];
671
+ this.now = new Date(Date.now());
672
+ this.createTimeMarker = () => {
673
+ if (!isDocumentAvailable()) {
674
+ return;
675
+ }
676
+ this.removeTimeMarker();
677
+ if (this.slotIndex >= 0) {
678
+ this.now = new Date(Date.now());
679
+ this.timeMarkerDiv = this.renderer.createElement('div');
680
+ this.renderer.addClass(this.timeMarkerDiv, 'k-current-time');
681
+ this.renderer.setStyle(this.timeMarkerDiv, 'width', '1px');
682
+ this.renderer.setStyle(this.timeMarkerDiv, 'top', '0px');
683
+ this.renderer.setStyle(this.timeMarkerDiv, `${this.rtl ? 'right' : 'left'}`, this.deltaOffset + 'px');
684
+ this.renderer.appendChild(this.container.nativeElement, this.timeMarkerDiv);
685
+ this.renderer.setStyle(this.timeMarkerDiv, 'height', this.height + 'px');
686
+ this.currentTimeTimeout = setTimeout(this.createTimeMarker, this.interval || MS_PER_MINUTE);
687
+ }
688
+ };
689
+ }
690
+ get deltaOffset() {
691
+ if (this.slotIndex >= 0) {
692
+ const total = this.slots[this.slotIndex].end.getTime() - this.slots[this.slotIndex].start.getTime();
693
+ if (total > 0) {
694
+ const currentTimeValue = this.now.getTime() - this.slots[this.slotIndex].start.getTime();
695
+ const fractionInsideCell = currentTimeValue / total;
696
+ const deltaOffsetToSlot = this.slotIndex * this.slotWidth;
697
+ const deltaOffsetInsideSlot = fractionInsideCell * this.slotWidth;
698
+ return deltaOffsetToSlot + deltaOffsetInsideSlot;
699
+ }
700
+ return 0;
701
+ }
702
+ }
703
+ ;
704
+ get slotWidth() {
705
+ return this.slots[0]?.slotWidth;
706
+ }
707
+ get slotIndex() {
708
+ return this.slots.indexOf(this.slots.find((slot) => slot.start <= this.now && slot.end > this.now));
709
+ }
710
+ get height() {
711
+ return this.rows.length * this.rowHeight;
712
+ }
713
+ get interval() {
714
+ if (typeof (this.currentTimeMarker) === 'boolean') {
715
+ return MS_PER_MINUTE;
716
+ }
717
+ return this.currentTimeMarker.updateInterval || MS_PER_MINUTE;
718
+ }
719
+ ngOnDestroy() {
720
+ clearInterval(this.currentTimeTimeout);
721
+ }
722
+ removeTimeMarker() {
723
+ if (this.timeMarkerDiv) {
724
+ this.renderer.removeChild(this.container.nativeElement, this.timeMarkerDiv);
725
+ clearInterval(this.currentTimeTimeout);
726
+ }
727
+ }
728
+ }
729
+ CurrentTimeMarkerService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: CurrentTimeMarkerService, deps: [{ token: i0.Renderer2 }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Injectable });
730
+ CurrentTimeMarkerService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: CurrentTimeMarkerService });
731
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: CurrentTimeMarkerService, decorators: [{
732
+ type: Injectable
733
+ }], ctorParameters: function () { return [{ type: i0.Renderer2 }, { type: i0.NgZone }]; } });
734
+
660
735
  /**
661
736
  * @hidden
662
737
  */
@@ -986,6 +1061,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
986
1061
  type: Injectable
987
1062
  }] });
988
1063
 
1064
+ const setTime = (origin, candidate) => {
1065
+ const date = cloneDate(origin);
1066
+ date.setHours(candidate.getHours(), candidate.getMinutes(), candidate.getSeconds(), candidate.getMilliseconds());
1067
+ return date;
1068
+ };
989
1069
  /**
990
1070
  * @hidden
991
1071
  */
@@ -1002,6 +1082,7 @@ const MONTH_FORMAT = 'MMM';
1002
1082
  * @hidden
1003
1083
  */
1004
1084
  const YEAR_FORMAT = 'yyyy';
1085
+ const END_OF_DAY_DATE = new Date(1980, 0, 1, 23, 59, 59, 999);
1005
1086
  /**
1006
1087
  * @hidden
1007
1088
  */
@@ -1112,7 +1193,7 @@ let TimelineBaseViewService = class TimelineBaseViewService {
1112
1193
  if (span > 0) {
1113
1194
  slots.push({
1114
1195
  start: daySlots[0].start,
1115
- end: daySlots[span - 1].end,
1196
+ end: setTime(daySlots[span - 1].end, END_OF_DAY_DATE),
1116
1197
  text: `${firstDay} - ${lastDay}`,
1117
1198
  span: span,
1118
1199
  slotWidth: this.options.slotWidth
@@ -1138,7 +1219,7 @@ let TimelineBaseViewService = class TimelineBaseViewService {
1138
1219
  if (span > 0) {
1139
1220
  slots.push({
1140
1221
  start: isMainViewType ? daySlots[0].start : weekSlots[0].start,
1141
- end: isMainViewType ? daySlots[span - 1] : weekSlots[span - 1].end,
1222
+ end: isMainViewType ? daySlots[span - 1] : setTime(weekSlots[span - 1].end, END_OF_DAY_DATE),
1142
1223
  span: span,
1143
1224
  text: shortText,
1144
1225
  slotWidth: this.options.slotWidth
@@ -1161,7 +1242,7 @@ let TimelineBaseViewService = class TimelineBaseViewService {
1161
1242
  if (span > 0) {
1162
1243
  slots.push({
1163
1244
  start: monthSlots[0].start,
1164
- end: monthSlots[span - 1].end,
1245
+ end: setTime(monthSlots[span - 1].end, END_OF_DAY_DATE),
1165
1246
  span: span,
1166
1247
  text: this.intlService.formatDate(slotEnd, yearFormat),
1167
1248
  slotWidth: this.options.slotWidth
@@ -1190,13 +1271,13 @@ class TimelineDayViewService extends TimelineBaseViewService {
1190
1271
  * Gets a date an hour before the first task start with minutes, seconds, milliseconds cleared.
1191
1272
  */
1192
1273
  getStartOffset(rangeStart) {
1193
- return setTime(rangeStart, rangeStart.getHours() - 1);
1274
+ return setTime$1(rangeStart, rangeStart.getHours() - 1);
1194
1275
  }
1195
1276
  /**
1196
1277
  * Gets a date an hour after the last task end with minutes, seconds, milliseconds cleared.
1197
1278
  */
1198
1279
  getEndOffset(rangeEnd) {
1199
- return setTime(rangeEnd, rangeEnd.getHours() + 1);
1280
+ return setTime$1(rangeEnd, rangeEnd.getHours() + 1);
1200
1281
  }
1201
1282
  /**
1202
1283
  *
@@ -2003,7 +2084,7 @@ GanttTaskComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", ver
2003
2084
  >
2004
2085
  </div>
2005
2086
  </ng-container>
2006
- `, isInline: true, components: [{ type: i7.IconWrapperComponent, selector: "kendo-icon-wrapper", inputs: ["name", "svgIcon", "innerCssClass", "customFontClass", "size"], exportAs: ["kendoIconWrapper"] }], directives: [{ type: i6.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i6.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i6.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }, { type: i16.EventsOutsideAngularDirective, selector: "[kendoEventsOutsideAngular]", inputs: ["kendoEventsOutsideAngular", "scope"] }] });
2087
+ `, isInline: true, components: [{ type: i7.IconWrapperComponent, selector: "kendo-icon-wrapper", inputs: ["name", "svgIcon", "innerCssClass", "customFontClass", "size"], exportAs: ["kendoIconWrapper"] }], directives: [{ type: i6.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i6.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i6.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }, { type: i17.EventsOutsideAngularDirective, selector: "[kendoEventsOutsideAngular]", inputs: ["kendoEventsOutsideAngular", "scope"] }] });
2007
2088
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: GanttTaskComponent, decorators: [{
2008
2089
  type: Component,
2009
2090
  args: [{
@@ -2694,11 +2775,12 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
2694
2775
  * @hidden
2695
2776
  */
2696
2777
  class GanttTimelineComponent {
2697
- constructor(scrollSyncService, dependencyDomService, renderer, zone) {
2778
+ constructor(scrollSyncService, dependencyDomService, renderer, zone, currentTimeMarkerService) {
2698
2779
  this.scrollSyncService = scrollSyncService;
2699
2780
  this.dependencyDomService = dependencyDomService;
2700
2781
  this.renderer = renderer;
2701
2782
  this.zone = zone;
2783
+ this.currentTimeMarkerService = currentTimeMarkerService;
2702
2784
  this.hostClass = true;
2703
2785
  this.dependencies = [];
2704
2786
  // as all drag-and-drop operations are on the timeline container, use a single draggable instance
@@ -2713,6 +2795,14 @@ class GanttTimelineComponent {
2713
2795
  )
2714
2796
  .subscribe(({ timelineRow }) => {
2715
2797
  const timelineRowHeight = isDocumentAvailable() ? timelineRow.getBoundingClientRect().height : 0;
2798
+ this.currentTimeMarkerService.rowHeight = timelineRowHeight;
2799
+ this.currentTimeMarkerService.currentTimeMarker = this.currentTimeMarker;
2800
+ this.currentTimeMarkerService.removeTimeMarker();
2801
+ if ((typeof this.currentTimeMarker === 'boolean' && this.currentTimeMarker) || this.currentTimeMarker?.enabled) {
2802
+ this.zone.runOutsideAngular(() => {
2803
+ this.currentTimeMarkerService.createTimeMarker();
2804
+ });
2805
+ }
2716
2806
  this.renderer.setStyle(this.timelineColumns.nativeElement, 'height', `${(this.rows || []).length * timelineRowHeight}px`);
2717
2807
  }));
2718
2808
  }
@@ -2723,6 +2813,9 @@ class GanttTimelineComponent {
2723
2813
  return this.renderDependencyDragClues;
2724
2814
  }
2725
2815
  ngAfterViewInit() {
2816
+ this.currentTimeMarkerService.slots = this.slots;
2817
+ this.currentTimeMarkerService.rows = this.rows;
2818
+ this.currentTimeMarkerService.container = this.timelineContent;
2726
2819
  const timelineHeader = this.timelineHeaderWrap.nativeElement;
2727
2820
  const rightContainer = this.timelineContent.nativeElement;
2728
2821
  this.scrollSyncService.registerElement(rightContainer, 'timeline');
@@ -2736,8 +2829,8 @@ class GanttTimelineComponent {
2736
2829
  return item.hasOwnProperty('isWorking') && !item.isWorking;
2737
2830
  }
2738
2831
  }
2739
- GanttTimelineComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: GanttTimelineComponent, deps: [{ token: ScrollSyncService }, { token: DependencyDomService }, { token: i0.Renderer2 }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component });
2740
- GanttTimelineComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.12", type: GanttTimelineComponent, selector: "kendo-gantt-timeline", inputs: { rows: "rows", slots: "slots", groupSlots: "groupSlots", tableWidth: "tableWidth", activeView: "activeView", taskContentTemplate: "taskContentTemplate", taskTemplate: "taskTemplate", summaryTaskTemplate: "summaryTaskTemplate", taskClass: "taskClass", renderDependencyDragClues: "renderDependencyDragClues", dragScrollSettings: "dragScrollSettings", selectable: "selectable", isTaskSelected: "isTaskSelected", isExpanded: "isExpanded", dependencies: "dependencies" }, outputs: { timelineContainerPress: "timelineContainerPress", timelineContainerDrag: "timelineContainerDrag", timelineContainerRelease: "timelineContainerRelease" }, host: { properties: { "class.k-gantt-timeline": "this.hostClass" } }, viewQueries: [{ propertyName: "timelineContent", first: true, predicate: ["timelineContent"], descendants: true, static: true }, { propertyName: "timelineColumns", first: true, predicate: ["timelineColumns"], descendants: true, static: true }, { propertyName: "timelineHeaderWrap", first: true, predicate: ["timelineHeaderWrap"], descendants: true, static: true }, { propertyName: "tasksContainer", first: true, predicate: ["tasksContainer"], descendants: true, static: true }, { propertyName: "dragPopupContainer", first: true, predicate: ["dragPopupContainer"], descendants: true, read: ViewContainerRef }, { propertyName: "dependencyDragCreatePolyline", first: true, predicate: ["dependencyDragCreatePolyline"], descendants: true }], ngImport: i0, template: `
2832
+ GanttTimelineComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: GanttTimelineComponent, deps: [{ token: ScrollSyncService }, { token: DependencyDomService }, { token: i0.Renderer2 }, { token: i0.NgZone }, { token: CurrentTimeMarkerService }], target: i0.ɵɵFactoryTarget.Component });
2833
+ GanttTimelineComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.12", type: GanttTimelineComponent, selector: "kendo-gantt-timeline", inputs: { rows: "rows", slots: "slots", groupSlots: "groupSlots", tableWidth: "tableWidth", activeView: "activeView", taskContentTemplate: "taskContentTemplate", taskTemplate: "taskTemplate", summaryTaskTemplate: "summaryTaskTemplate", taskClass: "taskClass", renderDependencyDragClues: "renderDependencyDragClues", dragScrollSettings: "dragScrollSettings", currentTimeMarker: "currentTimeMarker", selectable: "selectable", isTaskSelected: "isTaskSelected", isExpanded: "isExpanded", dependencies: "dependencies" }, outputs: { timelineContainerPress: "timelineContainerPress", timelineContainerDrag: "timelineContainerDrag", timelineContainerRelease: "timelineContainerRelease" }, host: { properties: { "class.k-gantt-timeline": "this.hostClass" } }, viewQueries: [{ propertyName: "timelineContent", first: true, predicate: ["timelineContent"], descendants: true, static: true }, { propertyName: "timelineColumns", first: true, predicate: ["timelineColumns"], descendants: true, static: true }, { propertyName: "timelineHeaderWrap", first: true, predicate: ["timelineHeaderWrap"], descendants: true, static: true }, { propertyName: "tasksContainer", first: true, predicate: ["tasksContainer"], descendants: true, static: true }, { propertyName: "dragPopupContainer", first: true, predicate: ["dragPopupContainer"], descendants: true, read: ViewContainerRef }, { propertyName: "dependencyDragCreatePolyline", first: true, predicate: ["dependencyDragCreatePolyline"], descendants: true }], ngImport: i0, template: `
2741
2834
  <div class="k-timeline k-grid k-grid-md">
2742
2835
  <div class="k-grid-header">
2743
2836
  <div #timelineHeaderWrap class="k-grid-header-wrap">
@@ -2840,7 +2933,7 @@ GanttTimelineComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0",
2840
2933
  <ng-container #dragPopupContainer></ng-container>
2841
2934
  </div>
2842
2935
  </div>
2843
- `, isInline: true, components: [{ type: GanttHeaderTableBodyComponent, selector: "[kendoGanttHeaderTableBody]", inputs: ["groupSlots", "slots"] }, { type: GanttTasksTableBodyComponent, selector: "[kendoGanttTasksTableBody]", inputs: ["selectable", "rows", "activeView", "taskContentTemplate", "taskTemplate", "summaryTaskTemplate", "taskClass", "isExpanded", "isTaskSelected", "renderDependencyDragClues"] }], directives: [{ type: TimelineScrollableDirective, selector: "[kendoGanttTimelineScrollable]", inputs: ["scrollSettings"] }, { type: i16.DraggableDirective, selector: "[kendoDraggable]", inputs: ["enableDrag"], outputs: ["kendoPress", "kendoDrag", "kendoRelease"] }, { type: i6.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: GanttDependencyDirective, selector: "[kendoGanttDependency]", inputs: ["dependency"] }] });
2936
+ `, isInline: true, components: [{ type: GanttHeaderTableBodyComponent, selector: "[kendoGanttHeaderTableBody]", inputs: ["groupSlots", "slots"] }, { type: GanttTasksTableBodyComponent, selector: "[kendoGanttTasksTableBody]", inputs: ["selectable", "rows", "activeView", "taskContentTemplate", "taskTemplate", "summaryTaskTemplate", "taskClass", "isExpanded", "isTaskSelected", "renderDependencyDragClues"] }], directives: [{ type: TimelineScrollableDirective, selector: "[kendoGanttTimelineScrollable]", inputs: ["scrollSettings"] }, { type: i17.DraggableDirective, selector: "[kendoDraggable]", inputs: ["enableDrag"], outputs: ["kendoPress", "kendoDrag", "kendoRelease"] }, { type: i6.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: GanttDependencyDirective, selector: "[kendoGanttDependency]", inputs: ["dependency"] }] });
2844
2937
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: GanttTimelineComponent, decorators: [{
2845
2938
  type: Component,
2846
2939
  args: [{
@@ -2950,7 +3043,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
2950
3043
  </div>
2951
3044
  `
2952
3045
  }]
2953
- }], ctorParameters: function () { return [{ type: ScrollSyncService }, { type: DependencyDomService }, { type: i0.Renderer2 }, { type: i0.NgZone }]; }, propDecorators: { timelineContent: [{
3046
+ }], ctorParameters: function () { return [{ type: ScrollSyncService }, { type: DependencyDomService }, { type: i0.Renderer2 }, { type: i0.NgZone }, { type: CurrentTimeMarkerService }]; }, propDecorators: { timelineContent: [{
2954
3047
  type: ViewChild,
2955
3048
  args: ['timelineContent', { static: true }]
2956
3049
  }], timelineColumns: [{
@@ -2993,6 +3086,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
2993
3086
  type: Input
2994
3087
  }], dragScrollSettings: [{
2995
3088
  type: Input
3089
+ }], currentTimeMarker: [{
3090
+ type: Input
2996
3091
  }], selectable: [{
2997
3092
  type: Input
2998
3093
  }], isTaskSelected: [{
@@ -3912,7 +4007,7 @@ class ViewBase {
3912
4007
  }
3913
4008
  }
3914
4009
  ViewBase.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: ViewBase, deps: [{ token: OptionChangesService }, { token: DependencyDomService }], target: i0.ɵɵFactoryTarget.Directive });
3915
- ViewBase.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.3.12", type: ViewBase, selector: "kendo-gantt-view-base", inputs: { slotWidth: "slotWidth", timelineHeadersDateFormat: "timelineHeadersDateFormat" }, usesOnChanges: true, ngImport: i0 });
4010
+ ViewBase.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.3.12", type: ViewBase, selector: "kendo-gantt-view-base", inputs: { slotWidth: "slotWidth", timelineHeadersDateFormat: "timelineHeadersDateFormat", currentTimeMarker: "currentTimeMarker" }, usesOnChanges: true, ngImport: i0 });
3916
4011
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: ViewBase, decorators: [{
3917
4012
  type: Directive,
3918
4013
  args: [{
@@ -3923,6 +4018,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
3923
4018
  type: Input
3924
4019
  }], timelineHeadersDateFormat: [{
3925
4020
  type: Input
4021
+ }], currentTimeMarker: [{
4022
+ type: Input
3926
4023
  }] } });
3927
4024
 
3928
4025
  /**
@@ -4042,7 +4139,7 @@ GanttAddTaskComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0",
4042
4139
  (open)="handleOpen($event)">
4043
4140
  {{ getText('addTaskText') }}
4044
4141
  </kendo-dropdownbutton>
4045
- `, isInline: true, components: [{ type: i2.DropDownButtonComponent, selector: "kendo-dropdownbutton", inputs: ["icon", "svgIcon", "iconClass", "imageUrl", "textField", "data", "size", "rounded", "fillMode", "themeColor"], outputs: ["itemClick", "focus", "blur"], exportAs: ["kendoDropDownButton"] }], directives: [{ type: i16.EventsOutsideAngularDirective, selector: "[kendoEventsOutsideAngular]", inputs: ["kendoEventsOutsideAngular", "scope"] }] });
4142
+ `, isInline: true, components: [{ type: i2.DropDownButtonComponent, selector: "kendo-dropdownbutton", inputs: ["icon", "svgIcon", "iconClass", "imageUrl", "textField", "data", "size", "rounded", "fillMode", "themeColor"], outputs: ["itemClick", "focus", "blur"], exportAs: ["kendoDropDownButton"] }], directives: [{ type: i17.EventsOutsideAngularDirective, selector: "[kendoEventsOutsideAngular]", inputs: ["kendoEventsOutsideAngular", "scope"] }] });
4046
4143
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: GanttAddTaskComponent, decorators: [{
4047
4144
  type: Component,
4048
4145
  args: [{
@@ -4347,7 +4444,7 @@ TaskFieldsComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", ve
4347
4444
  ></kendo-numerictextbox>
4348
4445
  </kendo-formfield>
4349
4446
  </form>
4350
- `, isInline: true, components: [{ type: i4.FormFieldComponent, selector: "kendo-formfield", inputs: ["showHints", "orientation", "showErrors"] }, { type: i5.LabelComponent, selector: "kendo-label", inputs: ["text", "for", "optional", "labelCssStyle", "labelCssClass"], exportAs: ["kendoLabel"] }, { type: i6$1.DateTimePickerComponent, selector: "kendo-datetimepicker", inputs: ["focusableId", "value", "format", "twoDigitYearMax", "tabindex", "disabledDates", "popupSettings", "title", "subtitle", "disabled", "readonly", "readOnlyInput", "cancelButton", "formatPlaceholder", "placeholder", "steps", "focusedDate", "calendarType", "animateCalendarNavigation", "weekNumber", "min", "max", "rangeValidation", "disabledDatesValidation", "incompleteDateValidation", "adaptiveMode", "defaultTab", "size", "rounded", "fillMode"], outputs: ["valueChange", "open", "close", "focus", "blur"], exportAs: ["kendo-datetimepicker"] }, { type: i11.TreeListSpacerComponent, selector: "kendo-treelist-spacer, kendo-treelist-pager-spacer", inputs: ["width"] }, { type: i4.NumericTextBoxComponent, selector: "kendo-numerictextbox", inputs: ["focusableId", "disabled", "readonly", "title", "autoCorrect", "format", "max", "min", "decimals", "placeholder", "step", "spinners", "rangeValidation", "tabindex", "tabIndex", "changeValueOnScroll", "selectOnFocus", "value", "maxlength", "size", "rounded", "fillMode"], outputs: ["valueChange", "focus", "blur"], exportAs: ["kendoNumericTextBox"] }], directives: [{ type: i8.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { type: i8.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { type: i8.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { type: i6.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i4.TextBoxDirective, selector: "input[kendoTextBox]", inputs: ["value"] }, { type: i8.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { type: i8.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i8.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }] });
4447
+ `, isInline: true, components: [{ type: i4.FormFieldComponent, selector: "kendo-formfield", inputs: ["showHints", "orientation", "showErrors"] }, { type: i5.LabelComponent, selector: "kendo-label", inputs: ["text", "for", "optional", "labelCssStyle", "labelCssClass"], exportAs: ["kendoLabel"] }, { type: i6$1.DateTimePickerComponent, selector: "kendo-datetimepicker", inputs: ["focusableId", "value", "format", "twoDigitYearMax", "tabindex", "disabledDates", "popupSettings", "title", "subtitle", "disabled", "readonly", "readOnlyInput", "cancelButton", "formatPlaceholder", "placeholder", "steps", "focusedDate", "calendarType", "animateCalendarNavigation", "weekNumber", "min", "max", "rangeValidation", "disabledDatesValidation", "incompleteDateValidation", "adaptiveMode", "defaultTab", "size", "rounded", "fillMode"], outputs: ["valueChange", "open", "close", "focus", "blur"], exportAs: ["kendo-datetimepicker"] }, { type: i12.TreeListSpacerComponent, selector: "kendo-treelist-spacer, kendo-treelist-pager-spacer", inputs: ["width"] }, { type: i4.NumericTextBoxComponent, selector: "kendo-numerictextbox", inputs: ["focusableId", "disabled", "readonly", "title", "autoCorrect", "format", "max", "min", "decimals", "placeholder", "step", "spinners", "rangeValidation", "tabindex", "tabIndex", "changeValueOnScroll", "selectOnFocus", "value", "maxlength", "size", "rounded", "fillMode"], outputs: ["valueChange", "focus", "blur"], exportAs: ["kendoNumericTextBox"] }], directives: [{ type: i8.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { type: i8.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { type: i8.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { type: i6.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i4.TextBoxDirective, selector: "input[kendoTextBox]", inputs: ["value"] }, { type: i8.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { type: i8.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i8.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }] });
4351
4448
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: TaskFieldsComponent, decorators: [{
4352
4449
  type: Component,
4353
4450
  args: [{
@@ -4707,7 +4804,7 @@ EditDialogComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", ve
4707
4804
  </button>
4708
4805
  </kendo-dialog-actions>
4709
4806
  </kendo-dialog>
4710
- `, isInline: true, components: [{ type: i4$2.DialogComponent, selector: "kendo-dialog", inputs: ["actions", "actionsLayout", "autoFocusedElement", "title", "width", "minWidth", "maxWidth", "height", "minHeight", "maxHeight", "animation", "themeColor"], outputs: ["action", "close"], exportAs: ["kendoDialog"] }, { type: i5$1.TabStripComponent, selector: "kendo-tabstrip", inputs: ["height", "animate", "tabAlignment", "tabPosition", "keepTabContent", "closable", "scrollable", "closeIcon", "closeIconClass", "closeSVGIcon"], outputs: ["tabSelect", "tabClose", "tabScroll"], exportAs: ["kendoTabStrip"] }, { type: i5$1.TabStripTabComponent, selector: "kendo-tabstrip-tab", inputs: ["title", "disabled", "cssClass", "cssStyle", "selected", "closable", "closeIcon", "closeIconClass", "closeSVGIcon"], exportAs: ["kendoTabStripTab"] }, { type: TaskFieldsComponent, selector: "kendo-gantt-task-fields" }, { type: DependenciesTableComponent, selector: "kendo-gantt-dependencies-table", inputs: ["tasks", "dependencies", "dependencyType"], outputs: ["dependenciesChange"] }, { type: i4$2.DialogActionsComponent, selector: "kendo-dialog-actions", inputs: ["actions", "layout"], outputs: ["action"] }, { type: i2.ButtonComponent, selector: "button[kendoButton], span[kendoButton], kendo-button", inputs: ["toggleable", "togglable", "selected", "tabIndex", "imageUrl", "iconClass", "icon", "disabled", "size", "rounded", "fillMode", "themeColor", "svgIcon", "role", "primary", "look"], outputs: ["selectedChange", "click"], exportAs: ["kendoButton"] }, { type: i11.TreeListSpacerComponent, selector: "kendo-treelist-spacer, kendo-treelist-pager-spacer", inputs: ["width"] }], directives: [{ type: i4$2.CustomMessagesComponent, selector: "kendo-dialog-messages, kendo-window-messages" }, { type: i5$1.TabContentDirective, selector: "[kendoTabContent]" }, { type: i16.EventsOutsideAngularDirective, selector: "[kendoEventsOutsideAngular]", inputs: ["kendoEventsOutsideAngular", "scope"] }] });
4807
+ `, isInline: true, components: [{ type: i4$2.DialogComponent, selector: "kendo-dialog", inputs: ["actions", "actionsLayout", "autoFocusedElement", "title", "width", "minWidth", "maxWidth", "height", "minHeight", "maxHeight", "animation", "themeColor"], outputs: ["action", "close"], exportAs: ["kendoDialog"] }, { type: i5$1.TabStripComponent, selector: "kendo-tabstrip", inputs: ["height", "animate", "tabAlignment", "tabPosition", "keepTabContent", "closable", "scrollable", "closeIcon", "closeIconClass", "closeSVGIcon"], outputs: ["tabSelect", "tabClose", "tabScroll"], exportAs: ["kendoTabStrip"] }, { type: i5$1.TabStripTabComponent, selector: "kendo-tabstrip-tab", inputs: ["title", "disabled", "cssClass", "cssStyle", "selected", "closable", "closeIcon", "closeIconClass", "closeSVGIcon"], exportAs: ["kendoTabStripTab"] }, { type: TaskFieldsComponent, selector: "kendo-gantt-task-fields" }, { type: DependenciesTableComponent, selector: "kendo-gantt-dependencies-table", inputs: ["tasks", "dependencies", "dependencyType"], outputs: ["dependenciesChange"] }, { type: i4$2.DialogActionsComponent, selector: "kendo-dialog-actions", inputs: ["actions", "layout"], outputs: ["action"] }, { type: i2.ButtonComponent, selector: "button[kendoButton], span[kendoButton], kendo-button", inputs: ["toggleable", "togglable", "selected", "tabIndex", "imageUrl", "iconClass", "icon", "disabled", "size", "rounded", "fillMode", "themeColor", "svgIcon", "role", "primary", "look"], outputs: ["selectedChange", "click"], exportAs: ["kendoButton"] }, { type: i12.TreeListSpacerComponent, selector: "kendo-treelist-spacer, kendo-treelist-pager-spacer", inputs: ["width"] }], directives: [{ type: i4$2.CustomMessagesComponent, selector: "kendo-dialog-messages, kendo-window-messages" }, { type: i5$1.TabContentDirective, selector: "[kendoTabContent]" }, { type: i17.EventsOutsideAngularDirective, selector: "[kendoEventsOutsideAngular]", inputs: ["kendoEventsOutsideAngular", "scope"] }] });
4711
4808
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: EditDialogComponent, decorators: [{
4712
4809
  type: Component,
4713
4810
  args: [{
@@ -5049,7 +5146,7 @@ const DEFAULT_DRAG_SCROLL_SETTINGS = {
5049
5146
  * ```
5050
5147
  */
5051
5148
  class GanttComponent {
5052
- constructor(timelineViewService, scrollSyncService, renderer, mapper, optionChangesService, dependencyDomService, editService, localizationService, hostElement, zone, navigation) {
5149
+ constructor(timelineViewService, scrollSyncService, renderer, mapper, optionChangesService, dependencyDomService, editService, localizationService, hostElement, zone, navigation, currentTimeMarkerService) {
5053
5150
  this.timelineViewService = timelineViewService;
5054
5151
  this.scrollSyncService = scrollSyncService;
5055
5152
  this.renderer = renderer;
@@ -5061,6 +5158,7 @@ class GanttComponent {
5061
5158
  this.hostElement = hostElement;
5062
5159
  this.zone = zone;
5063
5160
  this.navigation = navigation;
5161
+ this.currentTimeMarkerService = currentTimeMarkerService;
5064
5162
  /**
5065
5163
  * @hidden
5066
5164
  */
@@ -5158,6 +5256,14 @@ class GanttComponent {
5158
5256
  * @default false
5159
5257
  */
5160
5258
  this.columnsAutoSize = false;
5259
+ /**
5260
+ * Specifies the Gantt current time marker settings.
5261
+ * The settings will be applied for all views.
5262
+ * If the `currentTimeMarker` is set for a view then it takes precedence.
5263
+ *
5264
+ * @default true
5265
+ */
5266
+ this.currentTimeMarker = true;
5161
5267
  /**
5162
5268
  * Specifies if the column menu of the columns will be displayed.
5163
5269
  *
@@ -5368,6 +5474,7 @@ class GanttComponent {
5368
5474
  this.localizationSubscription = this.localizationService.changes.subscribe(({ rtl }) => {
5369
5475
  this.rtl = rtl;
5370
5476
  this.direction = this.rtl ? 'rtl' : 'ltr';
5477
+ this.currentTimeMarkerService.rtl = rtl;
5371
5478
  });
5372
5479
  }
5373
5480
  get toolbarTemplate() {
@@ -5430,8 +5537,17 @@ class GanttComponent {
5430
5537
  const view = this.views.find(view => view.type === this._activeView) ?
5431
5538
  this._activeView :
5432
5539
  this.views.first.type;
5540
+ this.currentTimeMarkerService.activeView = view;
5433
5541
  return view;
5434
5542
  }
5543
+ /**
5544
+ * @hidden
5545
+ *
5546
+ */
5547
+ get activeViewCurrentTimeMarker() {
5548
+ const activeViewCurrentTimeMarker = this.views.find(view => view.type === this._activeView)?.currentTimeMarker;
5549
+ return activeViewCurrentTimeMarker || this.currentTimeMarker;
5550
+ }
5435
5551
  /**
5436
5552
  * Gets or sets the data of the Gantt.
5437
5553
  *
@@ -5999,6 +6115,9 @@ class GanttComponent {
5999
6115
  this.loadTimelineData();
6000
6116
  this.scrollSyncService.resetTimelineScrollLeft();
6001
6117
  this.activeViewChange.emit(view);
6118
+ this.currentTimeMarkerService.slots = this.timelineSlots;
6119
+ this.currentTimeMarkerService.rows = this.viewItems;
6120
+ this.currentTimeMarkerService.activeView = view;
6002
6121
  }
6003
6122
  }
6004
6123
  /**
@@ -6215,8 +6334,8 @@ class GanttComponent {
6215
6334
  }
6216
6335
  }
6217
6336
  }
6218
- GanttComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: GanttComponent, deps: [{ token: TimelineViewService }, { token: ScrollSyncService }, { token: i0.Renderer2 }, { token: MappingService }, { token: OptionChangesService }, { token: DependencyDomService }, { token: EditService }, { token: i1$1.LocalizationService }, { token: i0.ElementRef }, { token: i0.NgZone }, { token: NavigationService }], target: i0.ɵɵFactoryTarget.Component });
6219
- GanttComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.12", type: GanttComponent, selector: "kendo-gantt", inputs: { roleDescription: ["aria-roledescription", "roleDescription"], role: "role", taskModelFields: "taskModelFields", dependencyModelFields: "dependencyModelFields", activeView: "activeView", data: "data", isSelected: "isSelected", validateNewDependency: "validateNewDependency", selectable: "selectable", toolbarSettings: "toolbarSettings", toolbarAriaLabel: "toolbarAriaLabel", fetchChildren: "fetchChildren", hasChildren: "hasChildren", dependencies: "dependencies", sortable: "sortable", sort: "sort", filterable: "filterable", filter: "filter", workDayStart: "workDayStart", workDayEnd: "workDayEnd", workWeekStart: "workWeekStart", workWeekEnd: "workWeekEnd", navigable: "navigable", timelinePaneOptions: "timelinePaneOptions", treeListPaneOptions: "treeListPaneOptions", taskClass: "taskClass", rowClass: "rowClass", isExpanded: "isExpanded", columnsAutoSize: "columnsAutoSize", columnMenu: "columnMenu", columnsReorderable: "columnsReorderable", columnsResizable: "columnsResizable", dragScrollSettings: "dragScrollSettings" }, outputs: { selectionChange: "selectionChange", rowExpand: "rowExpand", taskDblClick: "taskDblClick", cellDblClick: "cellDblClick", cellClose: "cellClose", taskDelete: "taskDelete", rowCollapse: "rowCollapse", remove: "remove", cancel: "cancel", save: "save", taskAdd: "taskAdd", dependencyAdd: "dependencyAdd", sortChange: "sortChange", filterChange: "filterChange", dataStateChange: "dataStateChange", treeListPaneCollapsedChange: "treeListPaneCollapsedChange", timelinePaneCollapsedChange: "timelinePaneCollapsedChange", timelinePaneSizeChange: "timelinePaneSizeChange", activeViewChange: "activeViewChange", columnResize: "columnResize", columnReorder: "columnReorder", columnVisibilityChange: "columnVisibilityChange", columnLockedChange: "columnLockedChange", cellClick: "cellClick", taskClick: "taskClick" }, host: { properties: { "attr.aria-roledescription": "this.hostRoleDescriptionAttr", "attr.role": "this.hostRoleAttr", "class.k-gantt": "this.hostClasses", "attr.dir": "this.dir" } }, providers: [
6337
+ GanttComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: GanttComponent, deps: [{ token: TimelineViewService }, { token: ScrollSyncService }, { token: i0.Renderer2 }, { token: MappingService }, { token: OptionChangesService }, { token: DependencyDomService }, { token: EditService }, { token: i1$1.LocalizationService }, { token: i0.ElementRef }, { token: i0.NgZone }, { token: NavigationService }, { token: CurrentTimeMarkerService }], target: i0.ɵɵFactoryTarget.Component });
6338
+ GanttComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.12", type: GanttComponent, selector: "kendo-gantt", inputs: { roleDescription: ["aria-roledescription", "roleDescription"], role: "role", taskModelFields: "taskModelFields", dependencyModelFields: "dependencyModelFields", activeView: "activeView", data: "data", isSelected: "isSelected", validateNewDependency: "validateNewDependency", selectable: "selectable", toolbarSettings: "toolbarSettings", toolbarAriaLabel: "toolbarAriaLabel", fetchChildren: "fetchChildren", hasChildren: "hasChildren", dependencies: "dependencies", sortable: "sortable", sort: "sort", filterable: "filterable", filter: "filter", workDayStart: "workDayStart", workDayEnd: "workDayEnd", workWeekStart: "workWeekStart", workWeekEnd: "workWeekEnd", navigable: "navigable", timelinePaneOptions: "timelinePaneOptions", treeListPaneOptions: "treeListPaneOptions", taskClass: "taskClass", rowClass: "rowClass", isExpanded: "isExpanded", columnsAutoSize: "columnsAutoSize", currentTimeMarker: "currentTimeMarker", columnMenu: "columnMenu", columnsReorderable: "columnsReorderable", columnsResizable: "columnsResizable", dragScrollSettings: "dragScrollSettings" }, outputs: { selectionChange: "selectionChange", rowExpand: "rowExpand", taskDblClick: "taskDblClick", cellDblClick: "cellDblClick", cellClose: "cellClose", taskDelete: "taskDelete", rowCollapse: "rowCollapse", remove: "remove", cancel: "cancel", save: "save", taskAdd: "taskAdd", dependencyAdd: "dependencyAdd", sortChange: "sortChange", filterChange: "filterChange", dataStateChange: "dataStateChange", treeListPaneCollapsedChange: "treeListPaneCollapsedChange", timelinePaneCollapsedChange: "timelinePaneCollapsedChange", timelinePaneSizeChange: "timelinePaneSizeChange", activeViewChange: "activeViewChange", columnResize: "columnResize", columnReorder: "columnReorder", columnVisibilityChange: "columnVisibilityChange", columnLockedChange: "columnLockedChange", cellClick: "cellClick", taskClick: "taskClick" }, host: { properties: { "attr.aria-roledescription": "this.hostRoleDescriptionAttr", "attr.role": "this.hostRoleAttr", "class.k-gantt": "this.hostClasses", "attr.dir": "this.dir" } }, providers: [
6220
6339
  GanttLocalizationService,
6221
6340
  LocalizationService,
6222
6341
  {
@@ -6238,7 +6357,8 @@ GanttComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version
6238
6357
  OptionChangesService,
6239
6358
  EditService,
6240
6359
  TimelineScrollService,
6241
- NavigationService
6360
+ NavigationService,
6361
+ CurrentTimeMarkerService
6242
6362
  ], queries: [{ propertyName: "taskContentTemplate", first: true, predicate: GanttTaskContentTemplateDirective, descendants: true }, { propertyName: "taskTemplate", first: true, predicate: GanttTaskTemplateDirective, descendants: true }, { propertyName: "summaryTaskTemplate", first: true, predicate: GanttSummaryTaskTemplateDirective, descendants: true }, { propertyName: "toolbarTemplateChildren", predicate: ToolbarTemplateDirective }, { propertyName: "columns", predicate: GanttColumnBase }, { propertyName: "views", predicate: ViewBase }], viewQueries: [{ propertyName: "treeList", first: true, predicate: TreeListComponent, descendants: true, static: true }, { propertyName: "timeline", first: true, predicate: GanttTimelineComponent, descendants: true }], exportAs: ["kendoGantt"], usesOnChanges: true, ngImport: i0, template: `
6243
6363
  <ng-container kendoGanttLocalizedMessages
6244
6364
  i18n-taskEditingGeneralTabTitle="kendo.gantt.taskEditingGeneralTabTitle|The title of the 'General' tab of the editing dialog TabStrip"
@@ -6557,6 +6677,7 @@ GanttComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version
6557
6677
  [dragScrollSettings]="dragScrollSettings"
6558
6678
  [rows]="viewItems"
6559
6679
  [slots]="timelineSlots"
6680
+ [currentTimeMarker]="activeViewCurrentTimeMarker"
6560
6681
  [groupSlots]="timelineGroupSlots"
6561
6682
  [tableWidth]="tableWidth"
6562
6683
  [activeView]="activeView"
@@ -6609,7 +6730,7 @@ GanttComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version
6609
6730
  </kendo-dialog>
6610
6731
 
6611
6732
  <div kendoWatermarkOverlay *ngIf="showLicenseWatermark"></div>
6612
- `, isInline: true, components: [{ type: ToolbarComponent, selector: "kendo-gantt-toolbar", inputs: ["showAddTask", "showViewSelector", "views", "activeView", "toolbarTemplate", "navigable", "position"], outputs: ["activeViewChange"] }, { type: i5$1.SplitterComponent, selector: "kendo-splitter", inputs: ["orientation", "resizeStep"], outputs: ["layoutChange"], exportAs: ["kendoSplitter"] }, { type: i5$1.SplitterPaneComponent, selector: "kendo-splitter-pane", inputs: ["order", "size", "separatorLabel", "min", "max", "resizable", "collapsible", "scrollable", "collapsed", "orientation", "containsSplitter", "overlayContent"], outputs: ["sizeChange", "collapsedChange"], exportAs: ["kendoSplitterPane"] }, { type: i11.TreeListComponent, selector: "kendo-treelist", inputs: ["aria-label", "data", "pageSize", "height", "rowHeight", "skip", "scrollable", "sort", "trackBy", "filter", "virtualColumns", "filterable", "sortable", "pageable", "navigable", "navigatable", "autoSize", "rowClass", "resizable", "reorderable", "loading", "columnMenu", "hideHeader", "idField", "selectable", "isSelected", "rowReorderable", "columns", "fetchChildren", "hasChildren", "isExpanded"], outputs: ["selectionChange", "filterChange", "pageChange", "sortChange", "dataStateChange", "edit", "cancel", "save", "remove", "add", "cellClose", "cellClick", "pdfExport", "excelExport", "columnResize", "columnReorder", "columnVisibilityChange", "columnLockedChange", "scrollBottom", "contentScroll", "expand", "collapse", "expandStateChange", "rowReorder"], exportAs: ["kendoTreeList"] }, { type: i11.CustomMessagesComponent, selector: "kendo-treelist-messages" }, { type: GanttTimelineComponent, selector: "kendo-gantt-timeline", inputs: ["rows", "slots", "groupSlots", "tableWidth", "activeView", "taskContentTemplate", "taskTemplate", "summaryTaskTemplate", "taskClass", "renderDependencyDragClues", "dragScrollSettings", "selectable", "isTaskSelected", "isExpanded", "dependencies"], outputs: ["timelineContainerPress", "timelineContainerDrag", "timelineContainerRelease"] }, { type: EditDialogComponent, selector: "kendo-gantt-edit-dialog", inputs: ["data"] }, { type: i4$2.DialogComponent, selector: "kendo-dialog", inputs: ["actions", "actionsLayout", "autoFocusedElement", "title", "width", "minWidth", "maxWidth", "height", "minHeight", "maxHeight", "animation", "themeColor"], outputs: ["action", "close"], exportAs: ["kendoDialog"] }, { type: i4$2.DialogActionsComponent, selector: "kendo-dialog-actions", inputs: ["actions", "layout"], outputs: ["action"] }, { type: i11.TreeListSpacerComponent, selector: "kendo-treelist-spacer, kendo-treelist-pager-spacer", inputs: ["width"] }, { type: i2.ButtonComponent, selector: "button[kendoButton], span[kendoButton], kendo-button", inputs: ["toggleable", "togglable", "selected", "tabIndex", "imageUrl", "iconClass", "icon", "disabled", "size", "rounded", "fillMode", "themeColor", "svgIcon", "role", "primary", "look"], outputs: ["selectedChange", "click"], exportAs: ["kendoButton"] }, { type: i16.WatermarkOverlayComponent, selector: "div[kendoWatermarkOverlay]" }], directives: [{ type: LocalizedMessagesDirective, selector: "[kendoGanttLocalizedMessages]" }, { type: i6.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i16.EventsOutsideAngularDirective, selector: "[kendoEventsOutsideAngular]", inputs: ["kendoEventsOutsideAngular", "scope"] }] });
6733
+ `, isInline: true, components: [{ type: ToolbarComponent, selector: "kendo-gantt-toolbar", inputs: ["showAddTask", "showViewSelector", "views", "activeView", "toolbarTemplate", "navigable", "position"], outputs: ["activeViewChange"] }, { type: i5$1.SplitterComponent, selector: "kendo-splitter", inputs: ["orientation", "resizeStep"], outputs: ["layoutChange"], exportAs: ["kendoSplitter"] }, { type: i5$1.SplitterPaneComponent, selector: "kendo-splitter-pane", inputs: ["order", "size", "separatorLabel", "min", "max", "resizable", "collapsible", "scrollable", "collapsed", "orientation", "containsSplitter", "overlayContent"], outputs: ["sizeChange", "collapsedChange"], exportAs: ["kendoSplitterPane"] }, { type: i12.TreeListComponent, selector: "kendo-treelist", inputs: ["aria-label", "data", "pageSize", "height", "rowHeight", "skip", "scrollable", "sort", "trackBy", "filter", "virtualColumns", "filterable", "sortable", "pageable", "navigable", "navigatable", "autoSize", "rowClass", "resizable", "reorderable", "loading", "columnMenu", "hideHeader", "idField", "selectable", "isSelected", "rowReorderable", "columns", "fetchChildren", "hasChildren", "isExpanded"], outputs: ["selectionChange", "filterChange", "pageChange", "sortChange", "dataStateChange", "edit", "cancel", "save", "remove", "add", "cellClose", "cellClick", "pdfExport", "excelExport", "columnResize", "columnReorder", "columnVisibilityChange", "columnLockedChange", "scrollBottom", "contentScroll", "expand", "collapse", "expandStateChange", "rowReorder"], exportAs: ["kendoTreeList"] }, { type: i12.CustomMessagesComponent, selector: "kendo-treelist-messages" }, { type: GanttTimelineComponent, selector: "kendo-gantt-timeline", inputs: ["rows", "slots", "groupSlots", "tableWidth", "activeView", "taskContentTemplate", "taskTemplate", "summaryTaskTemplate", "taskClass", "renderDependencyDragClues", "dragScrollSettings", "currentTimeMarker", "selectable", "isTaskSelected", "isExpanded", "dependencies"], outputs: ["timelineContainerPress", "timelineContainerDrag", "timelineContainerRelease"] }, { type: EditDialogComponent, selector: "kendo-gantt-edit-dialog", inputs: ["data"] }, { type: i4$2.DialogComponent, selector: "kendo-dialog", inputs: ["actions", "actionsLayout", "autoFocusedElement", "title", "width", "minWidth", "maxWidth", "height", "minHeight", "maxHeight", "animation", "themeColor"], outputs: ["action", "close"], exportAs: ["kendoDialog"] }, { type: i4$2.DialogActionsComponent, selector: "kendo-dialog-actions", inputs: ["actions", "layout"], outputs: ["action"] }, { type: i12.TreeListSpacerComponent, selector: "kendo-treelist-spacer, kendo-treelist-pager-spacer", inputs: ["width"] }, { type: i2.ButtonComponent, selector: "button[kendoButton], span[kendoButton], kendo-button", inputs: ["toggleable", "togglable", "selected", "tabIndex", "imageUrl", "iconClass", "icon", "disabled", "size", "rounded", "fillMode", "themeColor", "svgIcon", "role", "primary", "look"], outputs: ["selectedChange", "click"], exportAs: ["kendoButton"] }, { type: i17.WatermarkOverlayComponent, selector: "div[kendoWatermarkOverlay]" }], directives: [{ type: LocalizedMessagesDirective, selector: "[kendoGanttLocalizedMessages]" }, { type: i6.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i17.EventsOutsideAngularDirective, selector: "[kendoEventsOutsideAngular]", inputs: ["kendoEventsOutsideAngular", "scope"] }] });
6613
6734
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: GanttComponent, decorators: [{
6614
6735
  type: Component,
6615
6736
  args: [{
@@ -6637,7 +6758,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
6637
6758
  OptionChangesService,
6638
6759
  EditService,
6639
6760
  TimelineScrollService,
6640
- NavigationService
6761
+ NavigationService,
6762
+ CurrentTimeMarkerService
6641
6763
  ],
6642
6764
  template: `
6643
6765
  <ng-container kendoGanttLocalizedMessages
@@ -6957,6 +7079,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
6957
7079
  [dragScrollSettings]="dragScrollSettings"
6958
7080
  [rows]="viewItems"
6959
7081
  [slots]="timelineSlots"
7082
+ [currentTimeMarker]="activeViewCurrentTimeMarker"
6960
7083
  [groupSlots]="timelineGroupSlots"
6961
7084
  [tableWidth]="tableWidth"
6962
7085
  [activeView]="activeView"
@@ -7011,7 +7134,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
7011
7134
  <div kendoWatermarkOverlay *ngIf="showLicenseWatermark"></div>
7012
7135
  `
7013
7136
  }]
7014
- }], ctorParameters: function () { return [{ type: TimelineViewService }, { type: ScrollSyncService }, { type: i0.Renderer2 }, { type: MappingService }, { type: OptionChangesService }, { type: DependencyDomService }, { type: EditService }, { type: i1$1.LocalizationService }, { type: i0.ElementRef }, { type: i0.NgZone }, { type: NavigationService }]; }, propDecorators: { treeList: [{
7137
+ }], ctorParameters: function () { return [{ type: TimelineViewService }, { type: ScrollSyncService }, { type: i0.Renderer2 }, { type: MappingService }, { type: OptionChangesService }, { type: DependencyDomService }, { type: EditService }, { type: i1$1.LocalizationService }, { type: i0.ElementRef }, { type: i0.NgZone }, { type: NavigationService }, { type: CurrentTimeMarkerService }]; }, propDecorators: { treeList: [{
7015
7138
  type: ViewChild,
7016
7139
  args: [TreeListComponent, { static: true }]
7017
7140
  }], timeline: [{
@@ -7109,6 +7232,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
7109
7232
  type: Input
7110
7233
  }], columnsAutoSize: [{
7111
7234
  type: Input
7235
+ }], currentTimeMarker: [{
7236
+ type: Input
7112
7237
  }], columnMenu: [{
7113
7238
  type: Input
7114
7239
  }], columnsReorderable: [{
@@ -37,6 +37,8 @@ import { TaskAddEvent } from './models/events/task-add-event.interface';
37
37
  import { ViewItem } from './models/view-item.interface';
38
38
  import { DragScrollSettings } from './scrolling/drag-scroll-settings';
39
39
  import { FilterableSettings } from './models/filterable-settings';
40
+ import { CurrentTimeMarkerService } from './timeline/current-time-marker.service';
41
+ import { CurrentTimeSettings } from './models/current-time-settings.interface';
40
42
  import * as i0 from "@angular/core";
41
43
  /**
42
44
  * Represents the Kendo UI Gantt component for Angular.
@@ -121,6 +123,7 @@ export declare class GanttComponent implements AfterContentInit, OnChanges, OnDe
121
123
  private hostElement;
122
124
  private zone;
123
125
  private navigation;
126
+ private currentTimeMarkerService;
124
127
  treeList: TreeListComponent;
125
128
  timeline: GanttTimelineComponent;
126
129
  /**
@@ -190,6 +193,11 @@ export declare class GanttComponent implements AfterContentInit, OnChanges, OnDe
190
193
  */
191
194
  set activeView(view: TimelineViewType);
192
195
  get activeView(): TimelineViewType;
196
+ /**
197
+ * @hidden
198
+ *
199
+ */
200
+ get activeViewCurrentTimeMarker(): boolean | CurrentTimeSettings;
193
201
  /**
194
202
  * Gets or sets the data of the Gantt.
195
203
  *
@@ -347,6 +355,14 @@ export declare class GanttComponent implements AfterContentInit, OnChanges, OnDe
347
355
  * @default false
348
356
  */
349
357
  columnsAutoSize: boolean;
358
+ /**
359
+ * Specifies the Gantt current time marker settings.
360
+ * The settings will be applied for all views.
361
+ * If the `currentTimeMarker` is set for a view then it takes precedence.
362
+ *
363
+ * @default true
364
+ */
365
+ currentTimeMarker: boolean | CurrentTimeSettings;
350
366
  /**
351
367
  * Specifies if the column menu of the columns will be displayed.
352
368
  *
@@ -574,7 +590,7 @@ export declare class GanttComponent implements AfterContentInit, OnChanges, OnDe
574
590
  private editServiceSubscription;
575
591
  private localizationSubscription;
576
592
  private keydownListenerDisposers;
577
- constructor(timelineViewService: TimelineViewService, scrollSyncService: ScrollSyncService, renderer: Renderer2, mapper: MappingService, optionChangesService: OptionChangesService, dependencyDomService: DependencyDomService, editService: EditService, localizationService: LocalizationService, hostElement: ElementRef<HTMLElement>, zone: NgZone, navigation: NavigationService);
593
+ constructor(timelineViewService: TimelineViewService, scrollSyncService: ScrollSyncService, renderer: Renderer2, mapper: MappingService, optionChangesService: OptionChangesService, dependencyDomService: DependencyDomService, editService: EditService, localizationService: LocalizationService, hostElement: ElementRef<HTMLElement>, zone: NgZone, navigation: NavigationService, currentTimeMarkerService: CurrentTimeMarkerService);
578
594
  ngOnChanges(changes: SimpleChanges): void;
579
595
  ngAfterViewInit(): void;
580
596
  ngAfterContentInit(): void;
@@ -755,5 +771,5 @@ export declare class GanttComponent implements AfterContentInit, OnChanges, OnDe
755
771
  private defaultValidateNewDependencyCallback;
756
772
  private handleKeydown;
757
773
  static ɵfac: i0.ɵɵFactoryDeclaration<GanttComponent, never>;
758
- static ɵcmp: i0.ɵɵComponentDeclaration<GanttComponent, "kendo-gantt", ["kendoGantt"], { "roleDescription": "aria-roledescription"; "role": "role"; "taskModelFields": "taskModelFields"; "dependencyModelFields": "dependencyModelFields"; "activeView": "activeView"; "data": "data"; "isSelected": "isSelected"; "validateNewDependency": "validateNewDependency"; "selectable": "selectable"; "toolbarSettings": "toolbarSettings"; "toolbarAriaLabel": "toolbarAriaLabel"; "fetchChildren": "fetchChildren"; "hasChildren": "hasChildren"; "dependencies": "dependencies"; "sortable": "sortable"; "sort": "sort"; "filterable": "filterable"; "filter": "filter"; "workDayStart": "workDayStart"; "workDayEnd": "workDayEnd"; "workWeekStart": "workWeekStart"; "workWeekEnd": "workWeekEnd"; "navigable": "navigable"; "timelinePaneOptions": "timelinePaneOptions"; "treeListPaneOptions": "treeListPaneOptions"; "taskClass": "taskClass"; "rowClass": "rowClass"; "isExpanded": "isExpanded"; "columnsAutoSize": "columnsAutoSize"; "columnMenu": "columnMenu"; "columnsReorderable": "columnsReorderable"; "columnsResizable": "columnsResizable"; "dragScrollSettings": "dragScrollSettings"; }, { "selectionChange": "selectionChange"; "rowExpand": "rowExpand"; "taskDblClick": "taskDblClick"; "cellDblClick": "cellDblClick"; "cellClose": "cellClose"; "taskDelete": "taskDelete"; "rowCollapse": "rowCollapse"; "remove": "remove"; "cancel": "cancel"; "save": "save"; "taskAdd": "taskAdd"; "dependencyAdd": "dependencyAdd"; "sortChange": "sortChange"; "filterChange": "filterChange"; "dataStateChange": "dataStateChange"; "treeListPaneCollapsedChange": "treeListPaneCollapsedChange"; "timelinePaneCollapsedChange": "timelinePaneCollapsedChange"; "timelinePaneSizeChange": "timelinePaneSizeChange"; "activeViewChange": "activeViewChange"; "columnResize": "columnResize"; "columnReorder": "columnReorder"; "columnVisibilityChange": "columnVisibilityChange"; "columnLockedChange": "columnLockedChange"; "cellClick": "cellClick"; "taskClick": "taskClick"; }, ["taskContentTemplate", "taskTemplate", "summaryTaskTemplate", "toolbarTemplateChildren", "columns", "views"], never>;
774
+ static ɵcmp: i0.ɵɵComponentDeclaration<GanttComponent, "kendo-gantt", ["kendoGantt"], { "roleDescription": "aria-roledescription"; "role": "role"; "taskModelFields": "taskModelFields"; "dependencyModelFields": "dependencyModelFields"; "activeView": "activeView"; "data": "data"; "isSelected": "isSelected"; "validateNewDependency": "validateNewDependency"; "selectable": "selectable"; "toolbarSettings": "toolbarSettings"; "toolbarAriaLabel": "toolbarAriaLabel"; "fetchChildren": "fetchChildren"; "hasChildren": "hasChildren"; "dependencies": "dependencies"; "sortable": "sortable"; "sort": "sort"; "filterable": "filterable"; "filter": "filter"; "workDayStart": "workDayStart"; "workDayEnd": "workDayEnd"; "workWeekStart": "workWeekStart"; "workWeekEnd": "workWeekEnd"; "navigable": "navigable"; "timelinePaneOptions": "timelinePaneOptions"; "treeListPaneOptions": "treeListPaneOptions"; "taskClass": "taskClass"; "rowClass": "rowClass"; "isExpanded": "isExpanded"; "columnsAutoSize": "columnsAutoSize"; "currentTimeMarker": "currentTimeMarker"; "columnMenu": "columnMenu"; "columnsReorderable": "columnsReorderable"; "columnsResizable": "columnsResizable"; "dragScrollSettings": "dragScrollSettings"; }, { "selectionChange": "selectionChange"; "rowExpand": "rowExpand"; "taskDblClick": "taskDblClick"; "cellDblClick": "cellDblClick"; "cellClose": "cellClose"; "taskDelete": "taskDelete"; "rowCollapse": "rowCollapse"; "remove": "remove"; "cancel": "cancel"; "save": "save"; "taskAdd": "taskAdd"; "dependencyAdd": "dependencyAdd"; "sortChange": "sortChange"; "filterChange": "filterChange"; "dataStateChange": "dataStateChange"; "treeListPaneCollapsedChange": "treeListPaneCollapsedChange"; "timelinePaneCollapsedChange": "timelinePaneCollapsedChange"; "timelinePaneSizeChange": "timelinePaneSizeChange"; "activeViewChange": "activeViewChange"; "columnResize": "columnResize"; "columnReorder": "columnReorder"; "columnVisibilityChange": "columnVisibilityChange"; "columnLockedChange": "columnLockedChange"; "cellClick": "cellClick"; "taskClick": "taskClick"; }, ["taskContentTemplate", "taskTemplate", "summaryTaskTemplate", "toolbarTemplateChildren", "columns", "views"], never>;
759
775
  }
package/index.d.ts CHANGED
@@ -36,5 +36,6 @@ export { SelectionChangeEvent } from './selection/selection-change-event';
36
36
  export { TreeListPaneOptions, TimelinePaneOptions } from './models/splitter-pane-options.interface';
37
37
  export { LocalizedMessagesDirective } from './localization/localized-messages.directive';
38
38
  export { CustomMessagesComponent } from './localization/custom-messages.component';
39
+ export { CurrentTimeSettings } from './models/current-time-settings.interface';
39
40
  export * from './models/models';
40
41
  export * from './columns/columns';
@@ -0,0 +1,19 @@
1
+ /**-----------------------------------------------------------------------------------------
2
+ * Copyright © 2023 Progress Software Corporation. All rights reserved.
3
+ * Licensed under commercial license. See LICENSE.md in the project root for more information
4
+ *-------------------------------------------------------------------------------------------*/
5
+ /**
6
+ * The settings for the current time marker.
7
+ */
8
+ export interface CurrentTimeSettings {
9
+ /**
10
+ * The update interval (in milliseconds) of the current time marker.
11
+ * Defaults to `60000` (a minute).
12
+ */
13
+ updateInterval?: number;
14
+ /**
15
+ * Specifies if the current time marker will be displayed.
16
+ * Defaults to `true`.
17
+ */
18
+ enabled?: boolean;
19
+ }