@progress/kendo-angular-gantt 21.1.1-develop.2 → 21.2.0-develop.2

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.
@@ -10,7 +10,7 @@ export const packageMetadata = {
10
10
  productName: 'Kendo UI for Angular',
11
11
  productCode: 'KENDOUIANGULAR',
12
12
  productCodes: ['KENDOUIANGULAR'],
13
- publishDate: 1763729392,
14
- version: '21.1.1-develop.2',
13
+ publishDate: 1764002481,
14
+ version: '21.2.0-develop.2',
15
15
  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'
16
16
  };
@@ -3,7 +3,6 @@
3
3
  * Licensed under commercial license. See LICENSE.md in the project root for more information
4
4
  *-------------------------------------------------------------------------------------------*/
5
5
  import { Component, HostBinding, Input } from "@angular/core";
6
- import { NgFor } from "@angular/common";
7
6
  import * as i0 from "@angular/core";
8
7
  /**
9
8
  * @hidden
@@ -12,16 +11,25 @@ export class GanttHeaderTableBodyComponent {
12
11
  tbodyClass = true;
13
12
  groupSlots;
14
13
  slots;
14
+ trackBySlotIndex(index, item) {
15
+ // Combine index with timestamp to ensure uniqueness
16
+ // even when multiple slots have the same start time
17
+ return `${index}-${item.start.getTime()}`;
18
+ }
15
19
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: GanttHeaderTableBodyComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
16
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.14", type: GanttHeaderTableBodyComponent, isStandalone: true, selector: "[kendoGanttHeaderTableBody]", inputs: { groupSlots: "groupSlots", slots: "slots" }, host: { properties: { "class.k-table-tbody": "this.tbodyClass" } }, ngImport: i0, template: `
20
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: GanttHeaderTableBodyComponent, isStandalone: true, selector: "[kendoGanttHeaderTableBody]", inputs: { groupSlots: "groupSlots", slots: "slots" }, host: { properties: { "class.k-table-tbody": "this.tbodyClass" } }, ngImport: i0, template: `
17
21
  <tr class="k-table-row">
18
- <td *ngFor="let item of groupSlots" [attr.colspan]="item.span" class="k-header k-table-td">{{ item.text }}</td>
22
+ @for (item of groupSlots; track trackBySlotIndex($index, item)) {
23
+ <td [attr.colspan]="item.span" class="k-header k-table-td">{{ item.text }}</td>
24
+ }
19
25
  </tr>
20
26
 
21
27
  <tr class="k-table-row">
22
- <td *ngFor="let item of slots" class="k-header k-table-td" [attr.colspan]="item.span === 7 ? item.span : 1" [attr.title]="item.text">{{ item.text }}</td>
28
+ @for (item of slots; track trackBySlotIndex($index, item)) {
29
+ <td class="k-header k-table-td" [attr.colspan]="item.span === 7 ? item.span : 1" [attr.title]="item.text">{{ item.text }}</td>
30
+ }
23
31
  </tr>
24
- `, isInline: true, dependencies: [{ kind: "directive", type: NgFor, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }] });
32
+ `, isInline: true });
25
33
  }
26
34
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: GanttHeaderTableBodyComponent, decorators: [{
27
35
  type: Component,
@@ -30,15 +38,18 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
30
38
  selector: '[kendoGanttHeaderTableBody]',
31
39
  template: `
32
40
  <tr class="k-table-row">
33
- <td *ngFor="let item of groupSlots" [attr.colspan]="item.span" class="k-header k-table-td">{{ item.text }}</td>
41
+ @for (item of groupSlots; track trackBySlotIndex($index, item)) {
42
+ <td [attr.colspan]="item.span" class="k-header k-table-td">{{ item.text }}</td>
43
+ }
34
44
  </tr>
35
45
 
36
46
  <tr class="k-table-row">
37
- <td *ngFor="let item of slots" class="k-header k-table-td" [attr.colspan]="item.span === 7 ? item.span : 1" [attr.title]="item.text">{{ item.text }}</td>
47
+ @for (item of slots; track trackBySlotIndex($index, item)) {
48
+ <td class="k-header k-table-td" [attr.colspan]="item.span === 7 ? item.span : 1" [attr.title]="item.text">{{ item.text }}</td>
49
+ }
38
50
  </tr>
39
- `,
40
- standalone: true,
41
- imports: [NgFor]
51
+ `,
52
+ standalone: true
42
53
  }]
43
54
  }], propDecorators: { tbodyClass: [{
44
55
  type: HostBinding,
@@ -9,7 +9,7 @@ import { DependencyDomService } from '../dependencies/dependency-dom.service';
9
9
  import { OptionChangesService } from '../common/option-changes.service';
10
10
  import { TimelineViewService } from './../timeline/timeline-view.service';
11
11
  import { GanttTaskBase } from './gantt-task-base';
12
- import { NgClass, NgIf } from '@angular/common';
12
+ import { NgClass } from '@angular/common';
13
13
  import { touchEnabled } from '@progress/kendo-common';
14
14
  import * as i0 from "@angular/core";
15
15
  import * as i1 from "../common/mapping.service";
@@ -27,36 +27,36 @@ export class GanttMilestoneTaskComponent extends GanttTaskBase {
27
27
  super(mapper, timelineViewService, dependencyDomService, optionChangesService, cdr, navigationService);
28
28
  }
29
29
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: GanttMilestoneTaskComponent, deps: [{ token: i1.MappingService }, { token: i2.TimelineViewService }, { token: i3.DependencyDomService }, { token: i4.OptionChangesService }, { token: i0.ChangeDetectorRef }, { token: i5.NavigationService }], target: i0.ɵɵFactoryTarget.Component });
30
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.14", type: GanttMilestoneTaskComponent, isStandalone: true, selector: "kendo-gantt-milestone-task", host: { properties: { "class.k-milestone-wrap": "this.milestoneWrapperClass" } }, providers: [
30
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: GanttMilestoneTaskComponent, isStandalone: true, selector: "kendo-gantt-milestone-task", host: { properties: { "class.k-milestone-wrap": "this.milestoneWrapperClass" } }, providers: [
31
31
  {
32
32
  provide: GanttTaskBase,
33
33
  useExisting: forwardRef(() => GanttMilestoneTaskComponent)
34
34
  }
35
35
  ], usesInheritance: true, ngImport: i0, template: `
36
36
  <div
37
- #task
38
- role="treeitem"
39
- class="k-task k-task-milestone"
40
- [ngClass]="taskClass(dataItem)"
41
- [attr.title]="mapper.extractFromTask(dataItem, 'title')"
42
- [class.k-selected]="isSelected(dataItem)"
43
- [attr.aria-selected]="ariaSelected"
44
- [attr.aria-level]="level + 1"
45
- >
37
+ #task
38
+ role="treeitem"
39
+ class="k-task k-task-milestone"
40
+ [ngClass]="taskClass(dataItem)"
41
+ [attr.title]="mapper.extractFromTask(dataItem, 'title')"
42
+ [class.k-selected]="isSelected(dataItem)"
43
+ [attr.aria-selected]="ariaSelected"
44
+ [attr.aria-level]="level + 1"
45
+ >
46
46
  </div>
47
- <ng-container *ngIf="renderDependencyDragClues">
48
- <div
49
- class="k-task-dot k-task-start k-touch-action-none"
50
- [class.k-display-block]="touchEnabled"
47
+ @if (renderDependencyDragClues) {
48
+ <div
49
+ class="k-task-dot k-task-start k-touch-action-none"
50
+ [class.k-display-block]="touchEnabled"
51
51
  >
52
- </div>
53
- <div
54
- class="k-task-dot k-task-end k-touch-action-none"
55
- [class.k-display-block]="touchEnabled"
52
+ </div>
53
+ <div
54
+ class="k-task-dot k-task-end k-touch-action-none"
55
+ [class.k-display-block]="touchEnabled"
56
56
  >
57
- </div>
58
- </ng-container>
59
- `, isInline: true, dependencies: [{ kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] });
57
+ </div>
58
+ }
59
+ `, isInline: true, dependencies: [{ kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }] });
60
60
  }
61
61
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: GanttMilestoneTaskComponent, decorators: [{
62
62
  type: Component,
@@ -70,31 +70,31 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
70
70
  ],
71
71
  template: `
72
72
  <div
73
- #task
74
- role="treeitem"
75
- class="k-task k-task-milestone"
76
- [ngClass]="taskClass(dataItem)"
77
- [attr.title]="mapper.extractFromTask(dataItem, 'title')"
78
- [class.k-selected]="isSelected(dataItem)"
79
- [attr.aria-selected]="ariaSelected"
80
- [attr.aria-level]="level + 1"
81
- >
73
+ #task
74
+ role="treeitem"
75
+ class="k-task k-task-milestone"
76
+ [ngClass]="taskClass(dataItem)"
77
+ [attr.title]="mapper.extractFromTask(dataItem, 'title')"
78
+ [class.k-selected]="isSelected(dataItem)"
79
+ [attr.aria-selected]="ariaSelected"
80
+ [attr.aria-level]="level + 1"
81
+ >
82
82
  </div>
83
- <ng-container *ngIf="renderDependencyDragClues">
84
- <div
85
- class="k-task-dot k-task-start k-touch-action-none"
86
- [class.k-display-block]="touchEnabled"
83
+ @if (renderDependencyDragClues) {
84
+ <div
85
+ class="k-task-dot k-task-start k-touch-action-none"
86
+ [class.k-display-block]="touchEnabled"
87
87
  >
88
- </div>
89
- <div
90
- class="k-task-dot k-task-end k-touch-action-none"
91
- [class.k-display-block]="touchEnabled"
88
+ </div>
89
+ <div
90
+ class="k-task-dot k-task-end k-touch-action-none"
91
+ [class.k-display-block]="touchEnabled"
92
92
  >
93
- </div>
94
- </ng-container>
95
- `,
93
+ </div>
94
+ }
95
+ `,
96
96
  standalone: true,
97
- imports: [NgClass, NgIf]
97
+ imports: [NgClass]
98
98
  }]
99
99
  }], ctorParameters: () => [{ type: i1.MappingService }, { type: i2.TimelineViewService }, { type: i3.DependencyDomService }, { type: i4.OptionChangesService }, { type: i0.ChangeDetectorRef }, { type: i5.NavigationService }], propDecorators: { milestoneWrapperClass: [{
100
100
  type: HostBinding,
@@ -10,7 +10,7 @@ import { OptionChangesService } from '../common/option-changes.service';
10
10
  import { TimelineViewService } from './../timeline/timeline-view.service';
11
11
  import { GanttTaskBase } from './gantt-task-base';
12
12
  import { isPresent } from '../utils';
13
- import { NgClass, NgIf, NgTemplateOutlet } from '@angular/common';
13
+ import { NgClass, NgTemplateOutlet } from '@angular/common';
14
14
  import { touchEnabled } from '@progress/kendo-common';
15
15
  import * as i0 from "@angular/core";
16
16
  import * as i1 from "../common/mapping.service";
@@ -36,56 +36,57 @@ export class GanttSummaryTaskComponent extends GanttTaskBase {
36
36
  super(mapper, timelineViewService, dependencyDomService, optionChangesService, cdr, navigationService);
37
37
  }
38
38
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: GanttSummaryTaskComponent, deps: [{ token: i1.MappingService }, { token: i2.TimelineViewService }, { token: i3.DependencyDomService }, { token: i4.OptionChangesService }, { token: i0.ChangeDetectorRef }, { token: i5.NavigationService }], target: i0.ɵɵFactoryTarget.Component });
39
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.14", type: GanttSummaryTaskComponent, isStandalone: true, selector: "kendo-gantt-summary-task", inputs: { template: "template", isExpanded: "isExpanded" }, host: { properties: { "class.k-summary-wrap": "this.summaryWrapperClass" } }, providers: [
39
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: GanttSummaryTaskComponent, isStandalone: true, selector: "kendo-gantt-summary-task", inputs: { template: "template", isExpanded: "isExpanded" }, host: { properties: { "class.k-summary-wrap": "this.summaryWrapperClass" } }, providers: [
40
40
  {
41
41
  provide: GanttTaskBase,
42
42
  useExisting: forwardRef(() => GanttSummaryTaskComponent)
43
43
  }
44
44
  ], usesInheritance: true, ngImport: i0, template: `
45
45
  <div
46
- #task
47
- role="treeitem"
48
- class="k-task k-task-summary"
49
- [ngClass]="taskClass(dataItem)"
50
- [style.width.px]="taskWidth"
51
- [attr.title]="mapper.extractFromTask(dataItem, 'title')"
52
- [class.k-selected]="isSelected(dataItem)"
53
- [attr.aria-selected]="ariaSelected"
54
- [attr.aria-expanded]="ariaExpanded"
55
- [attr.aria-level]="level + 1"
56
- >
57
- <div *ngIf="!template; else summaryTemplate"
58
- class="k-task-summary-progress"
59
- [style.width.px]="taskWidth">
60
- <div
61
- class="k-task-summary-complete"
62
- [style.width.px]="completionOverlayWidth"
46
+ #task
47
+ role="treeitem"
48
+ class="k-task k-task-summary"
49
+ [ngClass]="taskClass(dataItem)"
50
+ [style.width.px]="taskWidth"
51
+ [attr.title]="mapper.extractFromTask(dataItem, 'title')"
52
+ [class.k-selected]="isSelected(dataItem)"
53
+ [attr.aria-selected]="ariaSelected"
54
+ [attr.aria-expanded]="ariaExpanded"
55
+ [attr.aria-level]="level + 1"
56
+ >
57
+ @if (!template) {
58
+ <div
59
+ class="k-task-summary-progress"
60
+ [style.width.px]="taskWidth">
61
+ <div
62
+ class="k-task-summary-complete"
63
+ [style.width.px]="completionOverlayWidth"
63
64
  >
64
- </div>
65
+ </div>
65
66
  </div>
67
+ } @else {
66
68
  <ng-template
67
- #summaryTemplate
68
- [ngTemplateOutlet]="template"
69
- [ngTemplateOutletContext]="{
70
- $implicit: dataItem,
71
- elementWidth: taskWidth
72
- }"
73
- >
74
- </ng-template>
69
+ [ngTemplateOutlet]="template"
70
+ [ngTemplateOutletContext]="{
71
+ $implicit: dataItem,
72
+ elementWidth: taskWidth
73
+ }"
74
+ ></ng-template>
75
+ }
75
76
  </div>
76
- <ng-container *ngIf="renderDependencyDragClues">
77
- <div
78
- class="k-task-dot k-task-start k-touch-action-none"
79
- [class.k-display-block]="touchEnabled"
77
+ @if (renderDependencyDragClues) {
78
+ <div
79
+ class="k-task-dot k-task-start k-touch-action-none"
80
+ [class.k-display-block]="touchEnabled"
80
81
  >
81
- </div>
82
- <div
83
- class="k-task-dot k-task-end k-touch-action-none"
84
- [class.k-display-block]="touchEnabled"
82
+ </div>
83
+ <div
84
+ class="k-task-dot k-task-end k-touch-action-none"
85
+ [class.k-display-block]="touchEnabled"
85
86
  >
86
- </div>
87
- </ng-container>
88
- `, isInline: true, dependencies: [{ kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }] });
87
+ </div>
88
+ }
89
+ `, isInline: true, dependencies: [{ kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }] });
89
90
  }
90
91
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: GanttSummaryTaskComponent, decorators: [{
91
92
  type: Component,
@@ -99,51 +100,52 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
99
100
  ],
100
101
  template: `
101
102
  <div
102
- #task
103
- role="treeitem"
104
- class="k-task k-task-summary"
105
- [ngClass]="taskClass(dataItem)"
106
- [style.width.px]="taskWidth"
107
- [attr.title]="mapper.extractFromTask(dataItem, 'title')"
108
- [class.k-selected]="isSelected(dataItem)"
109
- [attr.aria-selected]="ariaSelected"
110
- [attr.aria-expanded]="ariaExpanded"
111
- [attr.aria-level]="level + 1"
112
- >
113
- <div *ngIf="!template; else summaryTemplate"
114
- class="k-task-summary-progress"
115
- [style.width.px]="taskWidth">
116
- <div
117
- class="k-task-summary-complete"
118
- [style.width.px]="completionOverlayWidth"
103
+ #task
104
+ role="treeitem"
105
+ class="k-task k-task-summary"
106
+ [ngClass]="taskClass(dataItem)"
107
+ [style.width.px]="taskWidth"
108
+ [attr.title]="mapper.extractFromTask(dataItem, 'title')"
109
+ [class.k-selected]="isSelected(dataItem)"
110
+ [attr.aria-selected]="ariaSelected"
111
+ [attr.aria-expanded]="ariaExpanded"
112
+ [attr.aria-level]="level + 1"
113
+ >
114
+ @if (!template) {
115
+ <div
116
+ class="k-task-summary-progress"
117
+ [style.width.px]="taskWidth">
118
+ <div
119
+ class="k-task-summary-complete"
120
+ [style.width.px]="completionOverlayWidth"
119
121
  >
120
- </div>
122
+ </div>
121
123
  </div>
124
+ } @else {
122
125
  <ng-template
123
- #summaryTemplate
124
- [ngTemplateOutlet]="template"
125
- [ngTemplateOutletContext]="{
126
- $implicit: dataItem,
127
- elementWidth: taskWidth
128
- }"
129
- >
130
- </ng-template>
126
+ [ngTemplateOutlet]="template"
127
+ [ngTemplateOutletContext]="{
128
+ $implicit: dataItem,
129
+ elementWidth: taskWidth
130
+ }"
131
+ ></ng-template>
132
+ }
131
133
  </div>
132
- <ng-container *ngIf="renderDependencyDragClues">
133
- <div
134
- class="k-task-dot k-task-start k-touch-action-none"
135
- [class.k-display-block]="touchEnabled"
134
+ @if (renderDependencyDragClues) {
135
+ <div
136
+ class="k-task-dot k-task-start k-touch-action-none"
137
+ [class.k-display-block]="touchEnabled"
136
138
  >
137
- </div>
138
- <div
139
- class="k-task-dot k-task-end k-touch-action-none"
140
- [class.k-display-block]="touchEnabled"
139
+ </div>
140
+ <div
141
+ class="k-task-dot k-task-end k-touch-action-none"
142
+ [class.k-display-block]="touchEnabled"
141
143
  >
142
- </div>
143
- </ng-container>
144
- `,
144
+ </div>
145
+ }
146
+ `,
145
147
  standalone: true,
146
- imports: [NgClass, NgIf, NgTemplateOutlet]
148
+ imports: [NgClass, NgTemplateOutlet]
147
149
  }]
148
150
  }], ctorParameters: () => [{ type: i1.MappingService }, { type: i2.TimelineViewService }, { type: i3.DependencyDomService }, { type: i4.OptionChangesService }, { type: i0.ChangeDetectorRef }, { type: i5.NavigationService }], propDecorators: { summaryWrapperClass: [{
149
151
  type: HostBinding,