@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.
@@ -15,7 +15,7 @@ import * as i1 from '@progress/kendo-angular-intl';
15
15
  import { DatePipe, NumberPipe } from '@progress/kendo-angular-intl';
16
16
  import { orderBy } from '@progress/kendo-data-query';
17
17
  import { xIcon, plusIcon, minusIcon, saveIcon, cancelOutlineIcon, trashIcon } from '@progress/kendo-svg-icons';
18
- import { NgClass, NgIf, NgTemplateOutlet, NgFor } from '@angular/common';
18
+ import { NgClass, NgTemplateOutlet } from '@angular/common';
19
19
  import { IconWrapperComponent, IconsService } from '@progress/kendo-angular-icons';
20
20
  import * as i6 from '@progress/kendo-angular-tooltip';
21
21
  import { TooltipDirective, KENDO_TOOLTIP } from '@progress/kendo-angular-tooltip';
@@ -44,8 +44,8 @@ const packageMetadata = {
44
44
  productName: 'Kendo UI for Angular',
45
45
  productCode: 'KENDOUIANGULAR',
46
46
  productCodes: ['KENDOUIANGULAR'],
47
- publishDate: 1763729392,
48
- version: '21.1.1-develop.2',
47
+ publishDate: 1764002481,
48
+ version: '21.2.0-develop.2',
49
49
  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'
50
50
  };
51
51
 
@@ -2296,88 +2296,90 @@ class GanttTaskComponent extends GanttTaskBase {
2296
2296
  this.editService.taskDelete.next(this.dataItem);
2297
2297
  }
2298
2298
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: GanttTaskComponent, deps: [{ token: EditService }, { token: MappingService }, { token: TimelineViewService }, { token: DependencyDomService }, { token: OptionChangesService }, { token: i0.ChangeDetectorRef }, { token: NavigationService }], target: i0.ɵɵFactoryTarget.Component });
2299
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.14", type: GanttTaskComponent, isStandalone: true, selector: "kendo-gantt-task", inputs: { taskContentTemplate: "taskContentTemplate", taskTemplate: "taskTemplate" }, providers: [
2299
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: GanttTaskComponent, isStandalone: true, selector: "kendo-gantt-task", inputs: { taskContentTemplate: "taskContentTemplate", taskTemplate: "taskTemplate" }, providers: [
2300
2300
  {
2301
2301
  provide: GanttTaskBase,
2302
2302
  useExisting: forwardRef(() => GanttTaskComponent)
2303
2303
  }
2304
2304
  ], usesInheritance: true, ngImport: i0, template: `
2305
2305
  <div
2306
- #task
2307
- class="k-task k-task-single"
2308
- role="treeitem"
2309
- [ngClass]="taskClass(dataItem)"
2310
- [style.width.px]="taskWidth"
2311
- [attr.title]="mapper.extractFromTask(dataItem, 'title')"
2312
- [class.k-selected]="isSelected(dataItem)"
2313
- [attr.aria-selected]="ariaSelected"
2314
- [attr.aria-level]="level + 1"
2315
- >
2316
- <ng-container *ngIf="!taskTemplate">
2317
- <div
2318
- class="k-task-complete"
2319
- [style.width.px]="draggedCompletionWidth ?? completionOverlayWidth"
2320
- aria-hidden="true"
2306
+ #task
2307
+ class="k-task k-task-single"
2308
+ role="treeitem"
2309
+ [ngClass]="taskClass(dataItem)"
2310
+ [style.width.px]="taskWidth"
2311
+ [attr.title]="mapper.extractFromTask(dataItem, 'title')"
2312
+ [class.k-selected]="isSelected(dataItem)"
2313
+ [attr.aria-selected]="ariaSelected"
2314
+ [attr.aria-level]="level + 1"
2315
+ >
2316
+ @if (!taskTemplate) {
2317
+ <div
2318
+ class="k-task-complete"
2319
+ [style.width.px]="draggedCompletionWidth ?? completionOverlayWidth"
2320
+ aria-hidden="true"
2321
+ >
2322
+ </div>
2323
+ <div class="k-task-content">
2324
+ <div class="k-task-template">
2325
+ @if (!taskContentTemplate) {
2326
+ {{ mapper.extractFromTask(dataItem, 'title') }}
2327
+ } @else {
2328
+ <ng-template
2329
+ [ngTemplateOutlet]="taskContentTemplate"
2330
+ [ngTemplateOutletContext]="{ $implicit: dataItem }"
2331
+ ></ng-template>
2332
+ }
2333
+ </div>
2334
+ <span
2335
+ class="k-task-actions"
2336
+ aria-hidden="true"
2321
2337
  >
2322
- </div>
2323
- <div class="k-task-content">
2324
- <div class="k-task-template">
2325
- <ng-container *ngIf="!taskContentTemplate; else taskContent">
2326
- {{ mapper.extractFromTask(dataItem, 'title') }}
2327
- </ng-container>
2328
- <ng-template
2329
- #taskContent
2330
- [ngTemplateOutlet]="taskContentTemplate"
2331
- [ngTemplateOutletContext]="{ $implicit: dataItem }"
2332
- >
2333
- </ng-template>
2334
- </div>
2335
- <span
2336
- class="k-task-actions"
2337
- aria-hidden="true"
2338
- >
2339
- <span
2340
- class="k-link k-task-delete"
2338
+ <span
2339
+ class="k-link k-task-delete"
2341
2340
  [kendoEventsOutsideAngular]="{
2342
2341
  click: onTaskDelete
2343
2342
  }"
2344
- [scope]="this"
2345
- >
2346
- <kendo-icon-wrapper
2347
- icon="x"
2348
- [svgIcon]="xIcon"></kendo-icon-wrapper>
2349
- </span>
2350
- </span>
2351
- <ng-container *ngIf="showDragHandles">
2352
- <span class="k-resize-handle k-resize-w"></span>
2353
- <span class="k-resize-handle k-resize-e"></span>
2354
- </ng-container>
2355
- </div>
2356
- </ng-container>
2343
+ [scope]="this"
2344
+ >
2345
+ <kendo-icon-wrapper
2346
+ icon="x"
2347
+ [svgIcon]="xIcon"></kendo-icon-wrapper>
2348
+ </span>
2349
+ </span>
2350
+ @if (showDragHandles) {
2351
+ <span class="k-resize-handle k-resize-w"></span>
2352
+ <span class="k-resize-handle k-resize-e"></span>
2353
+ }
2354
+ </div>
2355
+ }
2356
+ @if (taskTemplate) {
2357
2357
  <ng-template
2358
- *ngIf="taskTemplate"
2359
- [ngTemplateOutlet]="taskTemplate"
2358
+ [ngTemplateOutlet]="taskTemplate"
2360
2359
  [ngTemplateOutletContext]="{
2361
2360
  $implicit: dataItem,
2362
2361
  elementWidth: taskWidth
2363
2362
  }"
2364
2363
  ></ng-template>
2364
+ }
2365
2365
  </div>
2366
- <div class="k-task-draghandle" *ngIf="showDragHandles"
2367
- [style.left.px]="draggedCompletionWidth ?? completionOverlayWidth"></div>
2368
- <ng-container *ngIf="renderDependencyDragClues">
2369
- <div
2370
- class="k-task-dot k-task-start k-touch-action-none"
2371
- [class.k-display-block]="touchEnabled"
2366
+ @if (showDragHandles) {
2367
+ <div class="k-task-draghandle"
2368
+ [style.left.px]="draggedCompletionWidth ?? completionOverlayWidth"></div>
2369
+ }
2370
+ @if (renderDependencyDragClues) {
2371
+ <div
2372
+ class="k-task-dot k-task-start k-touch-action-none"
2373
+ [class.k-display-block]="touchEnabled"
2372
2374
  >
2373
- </div>
2374
- <div
2375
- class="k-task-dot k-task-end k-touch-action-none"
2376
- [class.k-display-block]="touchEnabled"
2375
+ </div>
2376
+ <div
2377
+ class="k-task-dot k-task-end k-touch-action-none"
2378
+ [class.k-display-block]="touchEnabled"
2377
2379
  >
2378
- </div>
2379
- </ng-container>
2380
- `, 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"] }, { kind: "directive", type: EventsOutsideAngularDirective, selector: "[kendoEventsOutsideAngular]", inputs: ["kendoEventsOutsideAngular", "scope"] }, { kind: "component", type: IconWrapperComponent, selector: "kendo-icon-wrapper", inputs: ["name", "svgIcon", "innerCssClass", "customFontClass", "size"], exportAs: ["kendoIconWrapper"] }] });
2380
+ </div>
2381
+ }
2382
+ `, isInline: true, dependencies: [{ kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: EventsOutsideAngularDirective, selector: "[kendoEventsOutsideAngular]", inputs: ["kendoEventsOutsideAngular", "scope"] }, { kind: "component", type: IconWrapperComponent, selector: "kendo-icon-wrapper", inputs: ["name", "svgIcon", "innerCssClass", "customFontClass", "size"], exportAs: ["kendoIconWrapper"] }] });
2381
2383
  }
2382
2384
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: GanttTaskComponent, decorators: [{
2383
2385
  type: Component,
@@ -2391,83 +2393,85 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
2391
2393
  ],
2392
2394
  template: `
2393
2395
  <div
2394
- #task
2395
- class="k-task k-task-single"
2396
- role="treeitem"
2397
- [ngClass]="taskClass(dataItem)"
2398
- [style.width.px]="taskWidth"
2399
- [attr.title]="mapper.extractFromTask(dataItem, 'title')"
2400
- [class.k-selected]="isSelected(dataItem)"
2401
- [attr.aria-selected]="ariaSelected"
2402
- [attr.aria-level]="level + 1"
2403
- >
2404
- <ng-container *ngIf="!taskTemplate">
2405
- <div
2406
- class="k-task-complete"
2407
- [style.width.px]="draggedCompletionWidth ?? completionOverlayWidth"
2408
- aria-hidden="true"
2396
+ #task
2397
+ class="k-task k-task-single"
2398
+ role="treeitem"
2399
+ [ngClass]="taskClass(dataItem)"
2400
+ [style.width.px]="taskWidth"
2401
+ [attr.title]="mapper.extractFromTask(dataItem, 'title')"
2402
+ [class.k-selected]="isSelected(dataItem)"
2403
+ [attr.aria-selected]="ariaSelected"
2404
+ [attr.aria-level]="level + 1"
2405
+ >
2406
+ @if (!taskTemplate) {
2407
+ <div
2408
+ class="k-task-complete"
2409
+ [style.width.px]="draggedCompletionWidth ?? completionOverlayWidth"
2410
+ aria-hidden="true"
2411
+ >
2412
+ </div>
2413
+ <div class="k-task-content">
2414
+ <div class="k-task-template">
2415
+ @if (!taskContentTemplate) {
2416
+ {{ mapper.extractFromTask(dataItem, 'title') }}
2417
+ } @else {
2418
+ <ng-template
2419
+ [ngTemplateOutlet]="taskContentTemplate"
2420
+ [ngTemplateOutletContext]="{ $implicit: dataItem }"
2421
+ ></ng-template>
2422
+ }
2423
+ </div>
2424
+ <span
2425
+ class="k-task-actions"
2426
+ aria-hidden="true"
2409
2427
  >
2410
- </div>
2411
- <div class="k-task-content">
2412
- <div class="k-task-template">
2413
- <ng-container *ngIf="!taskContentTemplate; else taskContent">
2414
- {{ mapper.extractFromTask(dataItem, 'title') }}
2415
- </ng-container>
2416
- <ng-template
2417
- #taskContent
2418
- [ngTemplateOutlet]="taskContentTemplate"
2419
- [ngTemplateOutletContext]="{ $implicit: dataItem }"
2420
- >
2421
- </ng-template>
2422
- </div>
2423
- <span
2424
- class="k-task-actions"
2425
- aria-hidden="true"
2426
- >
2427
- <span
2428
- class="k-link k-task-delete"
2428
+ <span
2429
+ class="k-link k-task-delete"
2429
2430
  [kendoEventsOutsideAngular]="{
2430
2431
  click: onTaskDelete
2431
2432
  }"
2432
- [scope]="this"
2433
- >
2434
- <kendo-icon-wrapper
2435
- icon="x"
2436
- [svgIcon]="xIcon"></kendo-icon-wrapper>
2437
- </span>
2438
- </span>
2439
- <ng-container *ngIf="showDragHandles">
2440
- <span class="k-resize-handle k-resize-w"></span>
2441
- <span class="k-resize-handle k-resize-e"></span>
2442
- </ng-container>
2443
- </div>
2444
- </ng-container>
2433
+ [scope]="this"
2434
+ >
2435
+ <kendo-icon-wrapper
2436
+ icon="x"
2437
+ [svgIcon]="xIcon"></kendo-icon-wrapper>
2438
+ </span>
2439
+ </span>
2440
+ @if (showDragHandles) {
2441
+ <span class="k-resize-handle k-resize-w"></span>
2442
+ <span class="k-resize-handle k-resize-e"></span>
2443
+ }
2444
+ </div>
2445
+ }
2446
+ @if (taskTemplate) {
2445
2447
  <ng-template
2446
- *ngIf="taskTemplate"
2447
- [ngTemplateOutlet]="taskTemplate"
2448
+ [ngTemplateOutlet]="taskTemplate"
2448
2449
  [ngTemplateOutletContext]="{
2449
2450
  $implicit: dataItem,
2450
2451
  elementWidth: taskWidth
2451
2452
  }"
2452
2453
  ></ng-template>
2454
+ }
2453
2455
  </div>
2454
- <div class="k-task-draghandle" *ngIf="showDragHandles"
2455
- [style.left.px]="draggedCompletionWidth ?? completionOverlayWidth"></div>
2456
- <ng-container *ngIf="renderDependencyDragClues">
2457
- <div
2458
- class="k-task-dot k-task-start k-touch-action-none"
2459
- [class.k-display-block]="touchEnabled"
2456
+ @if (showDragHandles) {
2457
+ <div class="k-task-draghandle"
2458
+ [style.left.px]="draggedCompletionWidth ?? completionOverlayWidth"></div>
2459
+ }
2460
+ @if (renderDependencyDragClues) {
2461
+ <div
2462
+ class="k-task-dot k-task-start k-touch-action-none"
2463
+ [class.k-display-block]="touchEnabled"
2460
2464
  >
2461
- </div>
2462
- <div
2463
- class="k-task-dot k-task-end k-touch-action-none"
2464
- [class.k-display-block]="touchEnabled"
2465
+ </div>
2466
+ <div
2467
+ class="k-task-dot k-task-end k-touch-action-none"
2468
+ [class.k-display-block]="touchEnabled"
2465
2469
  >
2466
- </div>
2467
- </ng-container>
2468
- `,
2470
+ </div>
2471
+ }
2472
+ `,
2469
2473
  standalone: true,
2470
- imports: [NgClass, NgIf, NgTemplateOutlet, EventsOutsideAngularDirective, IconWrapperComponent]
2474
+ imports: [NgClass, NgTemplateOutlet, EventsOutsideAngularDirective, IconWrapperComponent]
2471
2475
  }]
2472
2476
  }], ctorParameters: () => [{ type: EditService }, { type: MappingService }, { type: TimelineViewService }, { type: DependencyDomService }, { type: OptionChangesService }, { type: i0.ChangeDetectorRef }, { type: NavigationService }], propDecorators: { taskContentTemplate: [{
2473
2477
  type: Input
@@ -2493,56 +2497,57 @@ class GanttSummaryTaskComponent extends GanttTaskBase {
2493
2497
  super(mapper, timelineViewService, dependencyDomService, optionChangesService, cdr, navigationService);
2494
2498
  }
2495
2499
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: GanttSummaryTaskComponent, deps: [{ token: MappingService }, { token: TimelineViewService }, { token: DependencyDomService }, { token: OptionChangesService }, { token: i0.ChangeDetectorRef }, { token: NavigationService }], target: i0.ɵɵFactoryTarget.Component });
2496
- 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: [
2500
+ 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: [
2497
2501
  {
2498
2502
  provide: GanttTaskBase,
2499
2503
  useExisting: forwardRef(() => GanttSummaryTaskComponent)
2500
2504
  }
2501
2505
  ], usesInheritance: true, ngImport: i0, template: `
2502
2506
  <div
2503
- #task
2504
- role="treeitem"
2505
- class="k-task k-task-summary"
2506
- [ngClass]="taskClass(dataItem)"
2507
- [style.width.px]="taskWidth"
2508
- [attr.title]="mapper.extractFromTask(dataItem, 'title')"
2509
- [class.k-selected]="isSelected(dataItem)"
2510
- [attr.aria-selected]="ariaSelected"
2511
- [attr.aria-expanded]="ariaExpanded"
2512
- [attr.aria-level]="level + 1"
2513
- >
2514
- <div *ngIf="!template; else summaryTemplate"
2515
- class="k-task-summary-progress"
2516
- [style.width.px]="taskWidth">
2517
- <div
2518
- class="k-task-summary-complete"
2519
- [style.width.px]="completionOverlayWidth"
2507
+ #task
2508
+ role="treeitem"
2509
+ class="k-task k-task-summary"
2510
+ [ngClass]="taskClass(dataItem)"
2511
+ [style.width.px]="taskWidth"
2512
+ [attr.title]="mapper.extractFromTask(dataItem, 'title')"
2513
+ [class.k-selected]="isSelected(dataItem)"
2514
+ [attr.aria-selected]="ariaSelected"
2515
+ [attr.aria-expanded]="ariaExpanded"
2516
+ [attr.aria-level]="level + 1"
2517
+ >
2518
+ @if (!template) {
2519
+ <div
2520
+ class="k-task-summary-progress"
2521
+ [style.width.px]="taskWidth">
2522
+ <div
2523
+ class="k-task-summary-complete"
2524
+ [style.width.px]="completionOverlayWidth"
2520
2525
  >
2521
- </div>
2526
+ </div>
2522
2527
  </div>
2528
+ } @else {
2523
2529
  <ng-template
2524
- #summaryTemplate
2525
- [ngTemplateOutlet]="template"
2526
- [ngTemplateOutletContext]="{
2527
- $implicit: dataItem,
2528
- elementWidth: taskWidth
2529
- }"
2530
- >
2531
- </ng-template>
2530
+ [ngTemplateOutlet]="template"
2531
+ [ngTemplateOutletContext]="{
2532
+ $implicit: dataItem,
2533
+ elementWidth: taskWidth
2534
+ }"
2535
+ ></ng-template>
2536
+ }
2532
2537
  </div>
2533
- <ng-container *ngIf="renderDependencyDragClues">
2534
- <div
2535
- class="k-task-dot k-task-start k-touch-action-none"
2536
- [class.k-display-block]="touchEnabled"
2538
+ @if (renderDependencyDragClues) {
2539
+ <div
2540
+ class="k-task-dot k-task-start k-touch-action-none"
2541
+ [class.k-display-block]="touchEnabled"
2537
2542
  >
2538
- </div>
2539
- <div
2540
- class="k-task-dot k-task-end k-touch-action-none"
2541
- [class.k-display-block]="touchEnabled"
2543
+ </div>
2544
+ <div
2545
+ class="k-task-dot k-task-end k-touch-action-none"
2546
+ [class.k-display-block]="touchEnabled"
2542
2547
  >
2543
- </div>
2544
- </ng-container>
2545
- `, 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"] }] });
2548
+ </div>
2549
+ }
2550
+ `, isInline: true, dependencies: [{ kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }] });
2546
2551
  }
2547
2552
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: GanttSummaryTaskComponent, decorators: [{
2548
2553
  type: Component,
@@ -2556,51 +2561,52 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
2556
2561
  ],
2557
2562
  template: `
2558
2563
  <div
2559
- #task
2560
- role="treeitem"
2561
- class="k-task k-task-summary"
2562
- [ngClass]="taskClass(dataItem)"
2563
- [style.width.px]="taskWidth"
2564
- [attr.title]="mapper.extractFromTask(dataItem, 'title')"
2565
- [class.k-selected]="isSelected(dataItem)"
2566
- [attr.aria-selected]="ariaSelected"
2567
- [attr.aria-expanded]="ariaExpanded"
2568
- [attr.aria-level]="level + 1"
2569
- >
2570
- <div *ngIf="!template; else summaryTemplate"
2571
- class="k-task-summary-progress"
2572
- [style.width.px]="taskWidth">
2573
- <div
2574
- class="k-task-summary-complete"
2575
- [style.width.px]="completionOverlayWidth"
2564
+ #task
2565
+ role="treeitem"
2566
+ class="k-task k-task-summary"
2567
+ [ngClass]="taskClass(dataItem)"
2568
+ [style.width.px]="taskWidth"
2569
+ [attr.title]="mapper.extractFromTask(dataItem, 'title')"
2570
+ [class.k-selected]="isSelected(dataItem)"
2571
+ [attr.aria-selected]="ariaSelected"
2572
+ [attr.aria-expanded]="ariaExpanded"
2573
+ [attr.aria-level]="level + 1"
2574
+ >
2575
+ @if (!template) {
2576
+ <div
2577
+ class="k-task-summary-progress"
2578
+ [style.width.px]="taskWidth">
2579
+ <div
2580
+ class="k-task-summary-complete"
2581
+ [style.width.px]="completionOverlayWidth"
2576
2582
  >
2577
- </div>
2583
+ </div>
2578
2584
  </div>
2585
+ } @else {
2579
2586
  <ng-template
2580
- #summaryTemplate
2581
- [ngTemplateOutlet]="template"
2582
- [ngTemplateOutletContext]="{
2583
- $implicit: dataItem,
2584
- elementWidth: taskWidth
2585
- }"
2586
- >
2587
- </ng-template>
2587
+ [ngTemplateOutlet]="template"
2588
+ [ngTemplateOutletContext]="{
2589
+ $implicit: dataItem,
2590
+ elementWidth: taskWidth
2591
+ }"
2592
+ ></ng-template>
2593
+ }
2588
2594
  </div>
2589
- <ng-container *ngIf="renderDependencyDragClues">
2590
- <div
2591
- class="k-task-dot k-task-start k-touch-action-none"
2592
- [class.k-display-block]="touchEnabled"
2595
+ @if (renderDependencyDragClues) {
2596
+ <div
2597
+ class="k-task-dot k-task-start k-touch-action-none"
2598
+ [class.k-display-block]="touchEnabled"
2593
2599
  >
2594
- </div>
2595
- <div
2596
- class="k-task-dot k-task-end k-touch-action-none"
2597
- [class.k-display-block]="touchEnabled"
2600
+ </div>
2601
+ <div
2602
+ class="k-task-dot k-task-end k-touch-action-none"
2603
+ [class.k-display-block]="touchEnabled"
2598
2604
  >
2599
- </div>
2600
- </ng-container>
2601
- `,
2605
+ </div>
2606
+ }
2607
+ `,
2602
2608
  standalone: true,
2603
- imports: [NgClass, NgIf, NgTemplateOutlet]
2609
+ imports: [NgClass, NgTemplateOutlet]
2604
2610
  }]
2605
2611
  }], ctorParameters: () => [{ type: MappingService }, { type: TimelineViewService }, { type: DependencyDomService }, { type: OptionChangesService }, { type: i0.ChangeDetectorRef }, { type: NavigationService }], propDecorators: { summaryWrapperClass: [{
2606
2612
  type: HostBinding,
@@ -2621,36 +2627,36 @@ class GanttMilestoneTaskComponent extends GanttTaskBase {
2621
2627
  super(mapper, timelineViewService, dependencyDomService, optionChangesService, cdr, navigationService);
2622
2628
  }
2623
2629
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: GanttMilestoneTaskComponent, deps: [{ token: MappingService }, { token: TimelineViewService }, { token: DependencyDomService }, { token: OptionChangesService }, { token: i0.ChangeDetectorRef }, { token: NavigationService }], target: i0.ɵɵFactoryTarget.Component });
2624
- 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: [
2630
+ 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: [
2625
2631
  {
2626
2632
  provide: GanttTaskBase,
2627
2633
  useExisting: forwardRef(() => GanttMilestoneTaskComponent)
2628
2634
  }
2629
2635
  ], usesInheritance: true, ngImport: i0, template: `
2630
2636
  <div
2631
- #task
2632
- role="treeitem"
2633
- class="k-task k-task-milestone"
2634
- [ngClass]="taskClass(dataItem)"
2635
- [attr.title]="mapper.extractFromTask(dataItem, 'title')"
2636
- [class.k-selected]="isSelected(dataItem)"
2637
- [attr.aria-selected]="ariaSelected"
2638
- [attr.aria-level]="level + 1"
2639
- >
2637
+ #task
2638
+ role="treeitem"
2639
+ class="k-task k-task-milestone"
2640
+ [ngClass]="taskClass(dataItem)"
2641
+ [attr.title]="mapper.extractFromTask(dataItem, 'title')"
2642
+ [class.k-selected]="isSelected(dataItem)"
2643
+ [attr.aria-selected]="ariaSelected"
2644
+ [attr.aria-level]="level + 1"
2645
+ >
2640
2646
  </div>
2641
- <ng-container *ngIf="renderDependencyDragClues">
2642
- <div
2643
- class="k-task-dot k-task-start k-touch-action-none"
2644
- [class.k-display-block]="touchEnabled"
2647
+ @if (renderDependencyDragClues) {
2648
+ <div
2649
+ class="k-task-dot k-task-start k-touch-action-none"
2650
+ [class.k-display-block]="touchEnabled"
2645
2651
  >
2646
- </div>
2647
- <div
2648
- class="k-task-dot k-task-end k-touch-action-none"
2649
- [class.k-display-block]="touchEnabled"
2652
+ </div>
2653
+ <div
2654
+ class="k-task-dot k-task-end k-touch-action-none"
2655
+ [class.k-display-block]="touchEnabled"
2650
2656
  >
2651
- </div>
2652
- </ng-container>
2653
- `, isInline: true, dependencies: [{ kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] });
2657
+ </div>
2658
+ }
2659
+ `, isInline: true, dependencies: [{ kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }] });
2654
2660
  }
2655
2661
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: GanttMilestoneTaskComponent, decorators: [{
2656
2662
  type: Component,
@@ -2664,31 +2670,31 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
2664
2670
  ],
2665
2671
  template: `
2666
2672
  <div
2667
- #task
2668
- role="treeitem"
2669
- class="k-task k-task-milestone"
2670
- [ngClass]="taskClass(dataItem)"
2671
- [attr.title]="mapper.extractFromTask(dataItem, 'title')"
2672
- [class.k-selected]="isSelected(dataItem)"
2673
- [attr.aria-selected]="ariaSelected"
2674
- [attr.aria-level]="level + 1"
2675
- >
2673
+ #task
2674
+ role="treeitem"
2675
+ class="k-task k-task-milestone"
2676
+ [ngClass]="taskClass(dataItem)"
2677
+ [attr.title]="mapper.extractFromTask(dataItem, 'title')"
2678
+ [class.k-selected]="isSelected(dataItem)"
2679
+ [attr.aria-selected]="ariaSelected"
2680
+ [attr.aria-level]="level + 1"
2681
+ >
2676
2682
  </div>
2677
- <ng-container *ngIf="renderDependencyDragClues">
2678
- <div
2679
- class="k-task-dot k-task-start k-touch-action-none"
2680
- [class.k-display-block]="touchEnabled"
2683
+ @if (renderDependencyDragClues) {
2684
+ <div
2685
+ class="k-task-dot k-task-start k-touch-action-none"
2686
+ [class.k-display-block]="touchEnabled"
2681
2687
  >
2682
- </div>
2683
- <div
2684
- class="k-task-dot k-task-end k-touch-action-none"
2685
- [class.k-display-block]="touchEnabled"
2688
+ </div>
2689
+ <div
2690
+ class="k-task-dot k-task-end k-touch-action-none"
2691
+ [class.k-display-block]="touchEnabled"
2686
2692
  >
2687
- </div>
2688
- </ng-container>
2689
- `,
2693
+ </div>
2694
+ }
2695
+ `,
2690
2696
  standalone: true,
2691
- imports: [NgClass, NgIf]
2697
+ imports: [NgClass]
2692
2698
  }]
2693
2699
  }], ctorParameters: () => [{ type: MappingService }, { type: TimelineViewService }, { type: DependencyDomService }, { type: OptionChangesService }, { type: i0.ChangeDetectorRef }, { type: NavigationService }], propDecorators: { milestoneWrapperClass: [{
2694
2700
  type: HostBinding,
@@ -2737,58 +2743,62 @@ class GanttTasksTableBodyComponent {
2737
2743
  return mappedItem;
2738
2744
  }
2739
2745
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: GanttTasksTableBodyComponent, deps: [{ token: DependencyDomService }, { token: MappingService }], target: i0.ɵɵFactoryTarget.Component });
2740
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.14", type: GanttTasksTableBodyComponent, isStandalone: true, selector: "[kendoGanttTasksTableBody]", inputs: { selectable: "selectable", rows: "rows", activeView: "activeView", taskContentTemplate: "taskContentTemplate", taskTemplate: "taskTemplate", summaryTaskTemplate: "summaryTaskTemplate", taskClass: "taskClass", isExpanded: "isExpanded", isTaskSelected: "isTaskSelected", renderDependencyDragClues: "renderDependencyDragClues" }, outputs: { taskPointerEnter: "taskPointerEnter", taskPointerLeave: "taskPointerLeave" }, viewQueries: [{ propertyName: "timelineRow", first: true, predicate: ["timelineRow"], descendants: true }], ngImport: i0, template: `
2741
- <tr class="k-table-row" #timelineRow *ngFor="let item of rows; let index = index; trackBy: trackBy ">
2746
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: GanttTasksTableBodyComponent, isStandalone: true, selector: "[kendoGanttTasksTableBody]", inputs: { selectable: "selectable", rows: "rows", activeView: "activeView", taskContentTemplate: "taskContentTemplate", taskTemplate: "taskTemplate", summaryTaskTemplate: "summaryTaskTemplate", taskClass: "taskClass", isExpanded: "isExpanded", isTaskSelected: "isTaskSelected", renderDependencyDragClues: "renderDependencyDragClues" }, outputs: { taskPointerEnter: "taskPointerEnter", taskPointerLeave: "taskPointerLeave" }, viewQueries: [{ propertyName: "timelineRow", first: true, predicate: ["timelineRow"], descendants: true }], ngImport: i0, template: `
2747
+ @for (item of rows; track trackBy($index, item); let index = $index) {
2748
+ <tr class="k-table-row" #timelineRow>
2742
2749
  <td class="k-table-td">
2750
+ @if (isMileStone(item)) {
2743
2751
  <kendo-gantt-milestone-task
2744
- *ngIf="isMileStone(item); else task"
2752
+ [dataItem]="item.data"
2753
+ [level]="item.level"
2754
+ [activeView]="activeView"
2755
+ [taskClass]="taskClass"
2756
+ [selectable]="selectable"
2757
+ [isSelected]="isTaskSelected"
2758
+ [index]="index"
2759
+ [renderDependencyDragClues]="renderDependencyDragClues"
2760
+ (pointerenter)="taskPointerEnter.emit(mapItemToTask(item))"
2761
+ (pointerleave)="taskPointerLeave.emit()"
2762
+ >
2763
+ </kendo-gantt-milestone-task>
2764
+ } @else {
2765
+ @if (item.hasChildren) {
2766
+ <kendo-gantt-summary-task
2745
2767
  [dataItem]="item.data"
2746
2768
  [level]="item.level"
2769
+ [template]="summaryTaskTemplate"
2747
2770
  [activeView]="activeView"
2748
2771
  [taskClass]="taskClass"
2749
2772
  [selectable]="selectable"
2750
2773
  [isSelected]="isTaskSelected"
2774
+ [isExpanded]="isExpanded"
2751
2775
  [index]="index"
2752
2776
  [renderDependencyDragClues]="renderDependencyDragClues"
2753
2777
  (pointerenter)="taskPointerEnter.emit(mapItemToTask(item))"
2754
2778
  (pointerleave)="taskPointerLeave.emit()"
2755
- >
2756
- </kendo-gantt-milestone-task>
2757
- <ng-template #task>
2758
- <kendo-gantt-summary-task
2759
- *ngIf="item.hasChildren"
2760
- [dataItem]="item.data"
2761
- [level]="item.level"
2762
- [template]="summaryTaskTemplate"
2763
- [activeView]="activeView"
2764
- [taskClass]="taskClass"
2765
- [selectable]="selectable"
2766
- [isSelected]="isTaskSelected"
2767
- [isExpanded]="isExpanded"
2768
- [index]="index"
2769
- [renderDependencyDragClues]="renderDependencyDragClues"
2770
- (pointerenter)="taskPointerEnter.emit(mapItemToTask(item))"
2771
- (pointerleave)="taskPointerLeave.emit()"
2772
- ></kendo-gantt-summary-task>
2773
- <kendo-gantt-task
2774
- *ngIf="!item.hasChildren"
2775
- [dataItem]="item.data"
2776
- [level]="item.level"
2777
- [taskContentTemplate]="taskContentTemplate"
2778
- [taskTemplate]="taskTemplate"
2779
- [activeView]="activeView"
2780
- [taskClass]="taskClass"
2781
- [selectable]="selectable"
2782
- [isSelected]="isTaskSelected"
2783
- [index]="index"
2784
- [renderDependencyDragClues]="renderDependencyDragClues"
2785
- (pointerenter)="taskPointerEnter.emit(mapItemToTask(item))"
2786
- (pointerleave)="taskPointerLeave.emit()"
2787
- ></kendo-gantt-task>
2788
- </ng-template>
2779
+ ></kendo-gantt-summary-task>
2780
+ }
2781
+ @if (!item.hasChildren) {
2782
+ <kendo-gantt-task
2783
+ [dataItem]="item.data"
2784
+ [level]="item.level"
2785
+ [taskContentTemplate]="taskContentTemplate"
2786
+ [taskTemplate]="taskTemplate"
2787
+ [activeView]="activeView"
2788
+ [taskClass]="taskClass"
2789
+ [selectable]="selectable"
2790
+ [isSelected]="isTaskSelected"
2791
+ [index]="index"
2792
+ [renderDependencyDragClues]="renderDependencyDragClues"
2793
+ (pointerenter)="taskPointerEnter.emit(mapItemToTask(item))"
2794
+ (pointerleave)="taskPointerLeave.emit()"
2795
+ ></kendo-gantt-task>
2796
+ }
2797
+ }
2789
2798
  </td>
2790
- </tr>
2791
- `, isInline: true, dependencies: [{ kind: "directive", type: NgFor, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: GanttMilestoneTaskComponent, selector: "kendo-gantt-milestone-task" }, { kind: "component", type: GanttSummaryTaskComponent, selector: "kendo-gantt-summary-task", inputs: ["template", "isExpanded"] }, { kind: "component", type: GanttTaskComponent, selector: "kendo-gantt-task", inputs: ["taskContentTemplate", "taskTemplate"] }] });
2799
+ </tr>
2800
+ }
2801
+ `, isInline: true, dependencies: [{ kind: "component", type: GanttMilestoneTaskComponent, selector: "kendo-gantt-milestone-task" }, { kind: "component", type: GanttSummaryTaskComponent, selector: "kendo-gantt-summary-task", inputs: ["template", "isExpanded"] }, { kind: "component", type: GanttTaskComponent, selector: "kendo-gantt-task", inputs: ["taskContentTemplate", "taskTemplate"] }] });
2792
2802
  }
2793
2803
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: GanttTasksTableBodyComponent, decorators: [{
2794
2804
  type: Component,
@@ -2796,59 +2806,63 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
2796
2806
  // eslint-disable-next-line @angular-eslint/component-selector
2797
2807
  selector: '[kendoGanttTasksTableBody]',
2798
2808
  template: `
2799
- <tr class="k-table-row" #timelineRow *ngFor="let item of rows; let index = index; trackBy: trackBy ">
2809
+ @for (item of rows; track trackBy($index, item); let index = $index) {
2810
+ <tr class="k-table-row" #timelineRow>
2800
2811
  <td class="k-table-td">
2812
+ @if (isMileStone(item)) {
2801
2813
  <kendo-gantt-milestone-task
2802
- *ngIf="isMileStone(item); else task"
2814
+ [dataItem]="item.data"
2815
+ [level]="item.level"
2816
+ [activeView]="activeView"
2817
+ [taskClass]="taskClass"
2818
+ [selectable]="selectable"
2819
+ [isSelected]="isTaskSelected"
2820
+ [index]="index"
2821
+ [renderDependencyDragClues]="renderDependencyDragClues"
2822
+ (pointerenter)="taskPointerEnter.emit(mapItemToTask(item))"
2823
+ (pointerleave)="taskPointerLeave.emit()"
2824
+ >
2825
+ </kendo-gantt-milestone-task>
2826
+ } @else {
2827
+ @if (item.hasChildren) {
2828
+ <kendo-gantt-summary-task
2803
2829
  [dataItem]="item.data"
2804
2830
  [level]="item.level"
2831
+ [template]="summaryTaskTemplate"
2805
2832
  [activeView]="activeView"
2806
2833
  [taskClass]="taskClass"
2807
2834
  [selectable]="selectable"
2808
2835
  [isSelected]="isTaskSelected"
2836
+ [isExpanded]="isExpanded"
2809
2837
  [index]="index"
2810
2838
  [renderDependencyDragClues]="renderDependencyDragClues"
2811
2839
  (pointerenter)="taskPointerEnter.emit(mapItemToTask(item))"
2812
2840
  (pointerleave)="taskPointerLeave.emit()"
2813
- >
2814
- </kendo-gantt-milestone-task>
2815
- <ng-template #task>
2816
- <kendo-gantt-summary-task
2817
- *ngIf="item.hasChildren"
2818
- [dataItem]="item.data"
2819
- [level]="item.level"
2820
- [template]="summaryTaskTemplate"
2821
- [activeView]="activeView"
2822
- [taskClass]="taskClass"
2823
- [selectable]="selectable"
2824
- [isSelected]="isTaskSelected"
2825
- [isExpanded]="isExpanded"
2826
- [index]="index"
2827
- [renderDependencyDragClues]="renderDependencyDragClues"
2828
- (pointerenter)="taskPointerEnter.emit(mapItemToTask(item))"
2829
- (pointerleave)="taskPointerLeave.emit()"
2830
- ></kendo-gantt-summary-task>
2831
- <kendo-gantt-task
2832
- *ngIf="!item.hasChildren"
2833
- [dataItem]="item.data"
2834
- [level]="item.level"
2835
- [taskContentTemplate]="taskContentTemplate"
2836
- [taskTemplate]="taskTemplate"
2837
- [activeView]="activeView"
2838
- [taskClass]="taskClass"
2839
- [selectable]="selectable"
2840
- [isSelected]="isTaskSelected"
2841
- [index]="index"
2842
- [renderDependencyDragClues]="renderDependencyDragClues"
2843
- (pointerenter)="taskPointerEnter.emit(mapItemToTask(item))"
2844
- (pointerleave)="taskPointerLeave.emit()"
2845
- ></kendo-gantt-task>
2846
- </ng-template>
2841
+ ></kendo-gantt-summary-task>
2842
+ }
2843
+ @if (!item.hasChildren) {
2844
+ <kendo-gantt-task
2845
+ [dataItem]="item.data"
2846
+ [level]="item.level"
2847
+ [taskContentTemplate]="taskContentTemplate"
2848
+ [taskTemplate]="taskTemplate"
2849
+ [activeView]="activeView"
2850
+ [taskClass]="taskClass"
2851
+ [selectable]="selectable"
2852
+ [isSelected]="isTaskSelected"
2853
+ [index]="index"
2854
+ [renderDependencyDragClues]="renderDependencyDragClues"
2855
+ (pointerenter)="taskPointerEnter.emit(mapItemToTask(item))"
2856
+ (pointerleave)="taskPointerLeave.emit()"
2857
+ ></kendo-gantt-task>
2858
+ }
2859
+ }
2847
2860
  </td>
2848
- </tr>
2849
- `,
2861
+ </tr>
2862
+ }
2863
+ `,
2850
2864
  standalone: true,
2851
- imports: [NgFor, NgIf, GanttMilestoneTaskComponent, GanttSummaryTaskComponent, GanttTaskComponent]
2865
+ imports: [GanttMilestoneTaskComponent, GanttSummaryTaskComponent, GanttTaskComponent]
2852
2866
  }]
2853
2867
  }], ctorParameters: () => [{ type: DependencyDomService }, { type: MappingService }], propDecorators: { timelineRow: [{
2854
2868
  type: ViewChild,
@@ -3077,16 +3091,25 @@ class GanttHeaderTableBodyComponent {
3077
3091
  tbodyClass = true;
3078
3092
  groupSlots;
3079
3093
  slots;
3094
+ trackBySlotIndex(index, item) {
3095
+ // Combine index with timestamp to ensure uniqueness
3096
+ // even when multiple slots have the same start time
3097
+ return `${index}-${item.start.getTime()}`;
3098
+ }
3080
3099
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: GanttHeaderTableBodyComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
3081
- 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: `
3100
+ 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: `
3082
3101
  <tr class="k-table-row">
3083
- <td *ngFor="let item of groupSlots" [attr.colspan]="item.span" class="k-header k-table-td">{{ item.text }}</td>
3102
+ @for (item of groupSlots; track trackBySlotIndex($index, item)) {
3103
+ <td [attr.colspan]="item.span" class="k-header k-table-td">{{ item.text }}</td>
3104
+ }
3084
3105
  </tr>
3085
3106
 
3086
3107
  <tr class="k-table-row">
3087
- <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>
3108
+ @for (item of slots; track trackBySlotIndex($index, item)) {
3109
+ <td class="k-header k-table-td" [attr.colspan]="item.span === 7 ? item.span : 1" [attr.title]="item.text">{{ item.text }}</td>
3110
+ }
3088
3111
  </tr>
3089
- `, isInline: true, dependencies: [{ kind: "directive", type: NgFor, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }] });
3112
+ `, isInline: true });
3090
3113
  }
3091
3114
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: GanttHeaderTableBodyComponent, decorators: [{
3092
3115
  type: Component,
@@ -3095,15 +3118,18 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
3095
3118
  selector: '[kendoGanttHeaderTableBody]',
3096
3119
  template: `
3097
3120
  <tr class="k-table-row">
3098
- <td *ngFor="let item of groupSlots" [attr.colspan]="item.span" class="k-header k-table-td">{{ item.text }}</td>
3121
+ @for (item of groupSlots; track trackBySlotIndex($index, item)) {
3122
+ <td [attr.colspan]="item.span" class="k-header k-table-td">{{ item.text }}</td>
3123
+ }
3099
3124
  </tr>
3100
3125
 
3101
3126
  <tr class="k-table-row">
3102
- <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>
3127
+ @for (item of slots; track trackBySlotIndex($index, item)) {
3128
+ <td class="k-header k-table-td" [attr.colspan]="item.span === 7 ? item.span : 1" [attr.title]="item.text">{{ item.text }}</td>
3129
+ }
3103
3130
  </tr>
3104
- `,
3105
- standalone: true,
3106
- imports: [NgFor]
3131
+ `,
3132
+ standalone: true
3107
3133
  }]
3108
3134
  }], propDecorators: { tbodyClass: [{
3109
3135
  type: HostBinding,
@@ -3342,6 +3368,11 @@ class GanttTimelineComponent {
3342
3368
  this.createTimeMarker();
3343
3369
  }
3344
3370
  }
3371
+ trackBySlotIndex(index, item) {
3372
+ // Combine index with timestamp to ensure uniqueness
3373
+ // even when multiple slots have the same start time
3374
+ return `${index}-${item.start.getTime()}`;
3375
+ }
3345
3376
  ngAfterViewInit() {
3346
3377
  this.currentTimeMarkerService.slots = this.slots;
3347
3378
  this.currentTimeMarkerService.rows = this.rows;
@@ -3377,149 +3408,157 @@ class GanttTimelineComponent {
3377
3408
  });
3378
3409
  }
3379
3410
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: GanttTimelineComponent, deps: [{ token: ScrollSyncService }, { token: DependencyDomService }, { token: i0.Renderer2 }, { token: i0.NgZone }, { token: CurrentTimeMarkerService }, { token: GanttLocalizationService }, { token: TaskDragService, optional: true }], target: i0.ɵɵFactoryTarget.Component });
3380
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.14", type: GanttTimelineComponent, isStandalone: true, 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", customTooltipTemplate: "customTooltipTemplate", tooltipOptions: "tooltipOptions", selectable: "selectable", isTaskSelected: "isTaskSelected", isExpanded: "isExpanded", dependencies: "dependencies" }, outputs: { timelineContainerPress: "timelineContainerPress", timelineContainerDrag: "timelineContainerDrag", timelineContainerRelease: "timelineContainerRelease" }, 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: "tooltip", first: true, predicate: TooltipDirective, descendants: true }, { propertyName: "dragPopupContainer", first: true, predicate: ["dragPopupContainer"], descendants: true, read: ViewContainerRef }, { propertyName: "dependencyDragCreatePolyline", first: true, predicate: ["dependencyDragCreatePolyline"], descendants: true }], usesOnChanges: true, ngImport: i0, template: `
3411
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: GanttTimelineComponent, isStandalone: true, 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", customTooltipTemplate: "customTooltipTemplate", tooltipOptions: "tooltipOptions", selectable: "selectable", isTaskSelected: "isTaskSelected", isExpanded: "isExpanded", dependencies: "dependencies" }, outputs: { timelineContainerPress: "timelineContainerPress", timelineContainerDrag: "timelineContainerDrag", timelineContainerRelease: "timelineContainerRelease" }, 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: "tooltip", first: true, predicate: TooltipDirective, descendants: true }, { propertyName: "dragPopupContainer", first: true, predicate: ["dragPopupContainer"], descendants: true, read: ViewContainerRef }, { propertyName: "dependencyDragCreatePolyline", first: true, predicate: ["dependencyDragCreatePolyline"], descendants: true }], usesOnChanges: true, ngImport: i0, template: `
3381
3412
  <div class="k-gantt-timeline k-grid k-grid-md">
3382
- <div class="k-grid-header">
3383
- <div #timelineHeaderWrap class="k-grid-header-wrap">
3384
- <table
3385
- class="k-table k-table-md k-grid-header-table"
3386
- role="presentation"
3387
- [style.width.px]="tableWidth"
3388
- >
3389
- <tbody
3390
- kendoGanttHeaderTableBody
3391
- [groupSlots]="groupSlots"
3392
- [slots]="slots">
3393
- </tbody>
3394
- </table>
3395
- </div>
3413
+ <div class="k-grid-header">
3414
+ <div #timelineHeaderWrap class="k-grid-header-wrap">
3415
+ <table
3416
+ class="k-table k-table-md k-grid-header-table"
3417
+ role="presentation"
3418
+ [style.width.px]="tableWidth"
3419
+ >
3420
+ <tbody
3421
+ kendoGanttHeaderTableBody
3422
+ [groupSlots]="groupSlots"
3423
+ [slots]="slots">
3424
+ </tbody>
3425
+ </table>
3396
3426
  </div>
3397
- <!-- tabindex="-1" required for https://bugzilla.mozilla.org/show_bug.cgi?id=1069739 -->
3398
- <div
3399
- #timelineContent
3400
- class="k-grid-content"
3401
- tabindex="-1"
3402
- role="tree"
3403
- aria-roledescription="Timeline"
3404
- kendoGanttTimelineScrollable
3405
- [scrollSettings]="dragScrollSettings"
3406
- kendoDraggable
3407
- [enableDrag]="draggableEnabled"
3408
- (kendoPress)="timelineContainerPress.emit($event)"
3409
- (kendoDrag)="timelineContainerDrag.emit($event)"
3410
- (kendoRelease)="timelineContainerRelease.emit($event)"
3427
+ </div>
3428
+ <!-- tabindex="-1" required for https://bugzilla.mozilla.org/show_bug.cgi?id=1069739 -->
3429
+ <div
3430
+ #timelineContent
3431
+ class="k-grid-content"
3432
+ tabindex="-1"
3433
+ role="tree"
3434
+ aria-roledescription="Timeline"
3435
+ kendoGanttTimelineScrollable
3436
+ [scrollSettings]="dragScrollSettings"
3437
+ kendoDraggable
3438
+ [enableDrag]="draggableEnabled"
3439
+ (kendoPress)="timelineContainerPress.emit($event)"
3440
+ (kendoDrag)="timelineContainerDrag.emit($event)"
3441
+ (kendoRelease)="timelineContainerRelease.emit($event)"
3411
3442
  >
3412
- <div class="k-gantt-tables">
3413
- <table
3414
- class="k-table k-table-md k-grid-table k-gantt-rows"
3415
- [style.width.px]="tableWidth"
3416
- role="presentation"
3417
- >
3418
- <tbody class="k-table-tbody">
3419
- <tr
3420
- *ngFor="let item of rows; let i = index;"
3421
- class="k-table-row{{i % 2 ? ' k-table-alt-row' : ''}}">
3422
- <td class="k-table-td"></td>
3423
- </tr>
3424
- </tbody>
3425
- </table>
3426
-
3427
- <table
3428
- #timelineColumns
3429
- class="k-table k-table-md k-gantt-columns"
3430
- role="presentation"
3431
- [style.width.px]="tableWidth"
3432
- >
3433
- <colgroup>
3434
- <col *ngFor="let item of slots">
3435
- </colgroup>
3436
-
3437
- <tbody class="k-table-tbody">
3438
- <tr class="k-table-row">
3439
- <td *ngFor="let item of slots"
3440
- class="k-table-td"
3441
- [class.k-nonwork-hour]="isNonWorking(item)"></td>
3442
- </tr>
3443
- </tbody>
3444
- </table>
3445
-
3446
- <table kendoTooltip
3447
- #tooltip="kendoTooltip"
3448
- [tooltipTemplate]="completion ? completionRatioTooltip : dragging ? resizingTooltip : customTooltipTemplate ? customTooltip : tooltipTemplate"
3449
- [position]="tooltipOptions.position"
3450
- [callout]="!dragging"
3451
- [tooltipClass]="dragging ? 'k-gantt-resize-hint' : undefined"
3452
- filter=".k-task"
3453
- [showOn]="dragging || completion ? 'none' : 'hover'"
3454
- #tasksContainer
3455
- class="k-table k-table-md k-gantt-tasks"
3456
- role="presentation"
3457
- [style.border-collapse]="'collapse'"
3458
- [style.width.px]="tableWidth"
3459
- >
3460
- <tbody
3461
- class="k-table-tbody"
3462
- kendoGanttTasksTableBody
3463
- [rows]="rows"
3464
- [activeView]="activeView"
3465
- [taskContentTemplate]="taskContentTemplate"
3466
- [taskTemplate]="taskTemplate"
3467
- [summaryTaskTemplate]="summaryTaskTemplate"
3468
- [taskClass]="taskClass"
3469
- [isExpanded]="isExpanded"
3470
- [selectable]="selectable"
3471
- [isTaskSelected]="isTaskSelected"
3472
- [renderDependencyDragClues]="renderDependencyDragClues"
3473
- (taskPointerEnter)="task = $event"
3474
- (taskPointerLeave)="task = null"
3475
- >
3476
- </tbody>
3477
- </table>
3478
- </div>
3479
- <ng-template #tooltipTemplate>
3480
- <div class="k-task-content">
3481
- <div class="k-task-details">
3482
- <strong>{{task?.title}}</strong>
3483
- <div class="k-task-pct">{{task?.completionRatio | kendoNumber: 'p'}}</div>
3484
- <ul class="k-reset">
3485
- <li>{{messageFor('tooltipStartDateText')}}: {{task?.start | kendoDate: 'HH:mm a EEE, MMM d'}}</li>
3486
- <li>{{messageFor('tooltipEndDateText')}}: {{task?.end | kendoDate: 'HH:mm a EEE, MMM d'}}</li>
3487
- </ul>
3488
- </div>
3489
- </div>
3490
- </ng-template>
3491
- <ng-template #customTooltip>
3492
- <ng-container *ngTemplateOutlet="customTooltipTemplate.templateRef; context: { $implicit: task, task }"></ng-container>
3493
- </ng-template>
3494
- <ng-template #resizingTooltip>
3495
- <div class="k-tooltip-content">
3496
- <div>{{messageFor('tooltipStartDateText')}}: {{dragResult?.start | kendoDate: 'HH:mm a EEE, MMM d'}}</div>
3497
- <div>{{messageFor('tooltipEndDateText')}}: {{dragResult?.end | kendoDate: 'HH:mm a EEE, MMM d'}}</div>
3498
- </div>
3499
- </ng-template>
3500
- <ng-template #completionRatioTooltip>
3501
- <div class="k-tooltip-content">
3502
- <div>{{dragResult?.completionRatio | kendoNumber: 'p'}}</div>
3503
- </div>
3504
- </ng-template>
3505
-
3506
- <svg class="k-gantt-dependencies-svg">
3507
- <polyline
3508
- *ngFor="let dependency of dependencies"
3509
- kendoGanttDependency
3510
- [dependency]="dependency"
3511
- />
3512
- <polyline #dependencyDragCreatePolyline />
3513
- </svg>
3514
- <div class="k-marquee k-gantt-marquee" *ngIf="marquee.show" style="top: 0px; height: {{tasksContainer.offsetHeight}}px; left: {{marquee.left}}px; width: {{marquee.width}}px;">
3515
- <div class="k-marquee-color"></div>
3516
- </div>
3517
- <!-- placeholder for the dependency drag popup; its position is not arbitrary - the popup is intended to be absolutely positioned inside the .k-grid-content element -->
3518
- <ng-container #dragPopupContainer></ng-container>
3443
+ <div class="k-gantt-tables">
3444
+ <table
3445
+ class="k-table k-table-md k-grid-table k-gantt-rows"
3446
+ [style.width.px]="tableWidth"
3447
+ role="presentation"
3448
+ >
3449
+ <tbody class="k-table-tbody">
3450
+ @for (item of rows; track $index; let i = $index) {
3451
+ <tr
3452
+ class="k-table-row{{i % 2 ? ' k-table-alt-row' : ''}}">
3453
+ <td class="k-table-td"></td>
3454
+ </tr>
3455
+ }
3456
+ </tbody>
3457
+ </table>
3458
+
3459
+ <table
3460
+ #timelineColumns
3461
+ class="k-table k-table-md k-gantt-columns"
3462
+ role="presentation"
3463
+ [style.width.px]="tableWidth"
3464
+ >
3465
+ <colgroup>
3466
+ @for (item of slots; track trackBySlotIndex($index, item)) {
3467
+ <col>
3468
+ }
3469
+ </colgroup>
3470
+
3471
+ <tbody class="k-table-tbody">
3472
+ <tr class="k-table-row">
3473
+ @for (item of slots; track trackBySlotIndex($index, item)) {
3474
+ <td
3475
+ class="k-table-td"
3476
+ [class.k-nonwork-hour]="isNonWorking(item)"></td>
3477
+ }
3478
+ </tr>
3479
+ </tbody>
3480
+ </table>
3481
+
3482
+ <table kendoTooltip
3483
+ #tooltip="kendoTooltip"
3484
+ [tooltipTemplate]="completion ? completionRatioTooltip : dragging ? resizingTooltip : customTooltipTemplate ? customTooltip : tooltipTemplate"
3485
+ [position]="tooltipOptions.position"
3486
+ [callout]="!dragging"
3487
+ [tooltipClass]="dragging ? 'k-gantt-resize-hint' : undefined"
3488
+ filter=".k-task"
3489
+ [showOn]="dragging || completion ? 'none' : 'hover'"
3490
+ #tasksContainer
3491
+ class="k-table k-table-md k-gantt-tasks"
3492
+ role="presentation"
3493
+ [style.border-collapse]="'collapse'"
3494
+ [style.width.px]="tableWidth"
3495
+ >
3496
+ <tbody
3497
+ class="k-table-tbody"
3498
+ kendoGanttTasksTableBody
3499
+ [rows]="rows"
3500
+ [activeView]="activeView"
3501
+ [taskContentTemplate]="taskContentTemplate"
3502
+ [taskTemplate]="taskTemplate"
3503
+ [summaryTaskTemplate]="summaryTaskTemplate"
3504
+ [taskClass]="taskClass"
3505
+ [isExpanded]="isExpanded"
3506
+ [selectable]="selectable"
3507
+ [isTaskSelected]="isTaskSelected"
3508
+ [renderDependencyDragClues]="renderDependencyDragClues"
3509
+ (taskPointerEnter)="task = $event"
3510
+ (taskPointerLeave)="task = null"
3511
+ >
3512
+ </tbody>
3513
+ </table>
3519
3514
  </div>
3515
+ <ng-template #tooltipTemplate>
3516
+ <div class="k-task-content">
3517
+ <div class="k-task-details">
3518
+ <strong>{{task?.title}}</strong>
3519
+ <div class="k-task-pct">{{task?.completionRatio | kendoNumber: 'p'}}</div>
3520
+ <ul class="k-reset">
3521
+ <li>{{messageFor('tooltipStartDateText')}}: {{task?.start | kendoDate: 'HH:mm a EEE, MMM d'}}</li>
3522
+ <li>{{messageFor('tooltipEndDateText')}}: {{task?.end | kendoDate: 'HH:mm a EEE, MMM d'}}</li>
3523
+ </ul>
3524
+ </div>
3525
+ </div>
3526
+ </ng-template>
3527
+ <ng-template #customTooltip>
3528
+ <ng-container *ngTemplateOutlet="customTooltipTemplate.templateRef; context: { $implicit: task, task }"></ng-container>
3529
+ </ng-template>
3530
+ <ng-template #resizingTooltip>
3531
+ <div class="k-tooltip-content">
3532
+ <div>{{messageFor('tooltipStartDateText')}}: {{dragResult?.start | kendoDate: 'HH:mm a EEE, MMM d'}}</div>
3533
+ <div>{{messageFor('tooltipEndDateText')}}: {{dragResult?.end | kendoDate: 'HH:mm a EEE, MMM d'}}</div>
3534
+ </div>
3535
+ </ng-template>
3536
+ <ng-template #completionRatioTooltip>
3537
+ <div class="k-tooltip-content">
3538
+ <div>{{dragResult?.completionRatio | kendoNumber: 'p'}}</div>
3539
+ </div>
3540
+ </ng-template>
3541
+
3542
+ <svg class="k-gantt-dependencies-svg">
3543
+ @for (dependency of dependencies; track dependency.id) {
3544
+ <polyline
3545
+ kendoGanttDependency
3546
+ [dependency]="dependency"
3547
+ />
3548
+ }
3549
+ <polyline #dependencyDragCreatePolyline />
3550
+ </svg>
3551
+ @if (marquee.show) {
3552
+ <div class="k-marquee k-gantt-marquee" style="top: 0px; height: {{tasksContainer.offsetHeight}}px; left: {{marquee.left}}px; width: {{marquee.width}}px;">
3553
+ <div class="k-marquee-color"></div>
3554
+ </div>
3555
+ }
3556
+ <!-- placeholder for the dependency drag popup; its position is not arbitrary - the popup is intended to be absolutely positioned inside the .k-grid-content element -->
3557
+ <ng-container #dragPopupContainer></ng-container>
3558
+ </div>
3520
3559
  </div>
3521
3560
 
3522
- `, isInline: true, dependencies: [{ kind: "component", type: GanttHeaderTableBodyComponent, selector: "[kendoGanttHeaderTableBody]", inputs: ["groupSlots", "slots"] }, { kind: "directive", type: TimelineScrollableDirective, selector: "[kendoGanttTimelineScrollable]", inputs: ["scrollSettings"] }, { kind: "directive", type: DraggableDirective, selector: "[kendoDraggable]", inputs: ["enableDrag"], outputs: ["kendoPress", "kendoDrag", "kendoRelease"] }, { kind: "directive", type: NgFor, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "component", type: GanttTasksTableBodyComponent, selector: "[kendoGanttTasksTableBody]", inputs: ["selectable", "rows", "activeView", "taskContentTemplate", "taskTemplate", "summaryTaskTemplate", "taskClass", "isExpanded", "isTaskSelected", "renderDependencyDragClues"], outputs: ["taskPointerEnter", "taskPointerLeave"] }, { kind: "directive", type: GanttDependencyDirective, selector: "[kendoGanttDependency]", inputs: ["dependency"] }, { kind: "directive", type: i6.TooltipDirective, selector: "[kendoTooltip]", inputs: ["filter", "position", "titleTemplate", "showOn", "showAfter", "callout", "closable", "offset", "tooltipWidth", "tooltipHeight", "tooltipClass", "tooltipContentClass", "collision", "closeTitle", "tooltipTemplate"], exportAs: ["kendoTooltip"] }, { kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: DatePipe, name: "kendoDate" }, { kind: "pipe", type: NumberPipe, name: "kendoNumber" }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }], encapsulation: i0.ViewEncapsulation.None });
3561
+ `, isInline: true, dependencies: [{ kind: "component", type: GanttHeaderTableBodyComponent, selector: "[kendoGanttHeaderTableBody]", inputs: ["groupSlots", "slots"] }, { kind: "directive", type: TimelineScrollableDirective, selector: "[kendoGanttTimelineScrollable]", inputs: ["scrollSettings"] }, { kind: "directive", type: DraggableDirective, selector: "[kendoDraggable]", inputs: ["enableDrag"], outputs: ["kendoPress", "kendoDrag", "kendoRelease"] }, { kind: "component", type: GanttTasksTableBodyComponent, selector: "[kendoGanttTasksTableBody]", inputs: ["selectable", "rows", "activeView", "taskContentTemplate", "taskTemplate", "summaryTaskTemplate", "taskClass", "isExpanded", "isTaskSelected", "renderDependencyDragClues"], outputs: ["taskPointerEnter", "taskPointerLeave"] }, { kind: "directive", type: GanttDependencyDirective, selector: "[kendoGanttDependency]", inputs: ["dependency"] }, { kind: "directive", type: i6.TooltipDirective, selector: "[kendoTooltip]", inputs: ["filter", "position", "titleTemplate", "showOn", "showAfter", "callout", "closable", "offset", "tooltipWidth", "tooltipHeight", "tooltipClass", "tooltipContentClass", "collision", "closeTitle", "tooltipTemplate"], exportAs: ["kendoTooltip"] }, { kind: "pipe", type: DatePipe, name: "kendoDate" }, { kind: "pipe", type: NumberPipe, name: "kendoNumber" }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }], encapsulation: i0.ViewEncapsulation.None });
3523
3562
  }
3524
3563
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: GanttTimelineComponent, decorators: [{
3525
3564
  type: Component,
@@ -3527,151 +3566,158 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
3527
3566
  selector: 'kendo-gantt-timeline',
3528
3567
  template: `
3529
3568
  <div class="k-gantt-timeline k-grid k-grid-md">
3530
- <div class="k-grid-header">
3531
- <div #timelineHeaderWrap class="k-grid-header-wrap">
3532
- <table
3533
- class="k-table k-table-md k-grid-header-table"
3534
- role="presentation"
3535
- [style.width.px]="tableWidth"
3536
- >
3537
- <tbody
3538
- kendoGanttHeaderTableBody
3539
- [groupSlots]="groupSlots"
3540
- [slots]="slots">
3541
- </tbody>
3542
- </table>
3543
- </div>
3569
+ <div class="k-grid-header">
3570
+ <div #timelineHeaderWrap class="k-grid-header-wrap">
3571
+ <table
3572
+ class="k-table k-table-md k-grid-header-table"
3573
+ role="presentation"
3574
+ [style.width.px]="tableWidth"
3575
+ >
3576
+ <tbody
3577
+ kendoGanttHeaderTableBody
3578
+ [groupSlots]="groupSlots"
3579
+ [slots]="slots">
3580
+ </tbody>
3581
+ </table>
3544
3582
  </div>
3545
- <!-- tabindex="-1" required for https://bugzilla.mozilla.org/show_bug.cgi?id=1069739 -->
3546
- <div
3547
- #timelineContent
3548
- class="k-grid-content"
3549
- tabindex="-1"
3550
- role="tree"
3551
- aria-roledescription="Timeline"
3552
- kendoGanttTimelineScrollable
3553
- [scrollSettings]="dragScrollSettings"
3554
- kendoDraggable
3555
- [enableDrag]="draggableEnabled"
3556
- (kendoPress)="timelineContainerPress.emit($event)"
3557
- (kendoDrag)="timelineContainerDrag.emit($event)"
3558
- (kendoRelease)="timelineContainerRelease.emit($event)"
3583
+ </div>
3584
+ <!-- tabindex="-1" required for https://bugzilla.mozilla.org/show_bug.cgi?id=1069739 -->
3585
+ <div
3586
+ #timelineContent
3587
+ class="k-grid-content"
3588
+ tabindex="-1"
3589
+ role="tree"
3590
+ aria-roledescription="Timeline"
3591
+ kendoGanttTimelineScrollable
3592
+ [scrollSettings]="dragScrollSettings"
3593
+ kendoDraggable
3594
+ [enableDrag]="draggableEnabled"
3595
+ (kendoPress)="timelineContainerPress.emit($event)"
3596
+ (kendoDrag)="timelineContainerDrag.emit($event)"
3597
+ (kendoRelease)="timelineContainerRelease.emit($event)"
3559
3598
  >
3560
- <div class="k-gantt-tables">
3561
- <table
3562
- class="k-table k-table-md k-grid-table k-gantt-rows"
3563
- [style.width.px]="tableWidth"
3564
- role="presentation"
3565
- >
3566
- <tbody class="k-table-tbody">
3567
- <tr
3568
- *ngFor="let item of rows; let i = index;"
3569
- class="k-table-row{{i % 2 ? ' k-table-alt-row' : ''}}">
3570
- <td class="k-table-td"></td>
3571
- </tr>
3572
- </tbody>
3573
- </table>
3574
-
3575
- <table
3576
- #timelineColumns
3577
- class="k-table k-table-md k-gantt-columns"
3578
- role="presentation"
3579
- [style.width.px]="tableWidth"
3580
- >
3581
- <colgroup>
3582
- <col *ngFor="let item of slots">
3583
- </colgroup>
3584
-
3585
- <tbody class="k-table-tbody">
3586
- <tr class="k-table-row">
3587
- <td *ngFor="let item of slots"
3588
- class="k-table-td"
3589
- [class.k-nonwork-hour]="isNonWorking(item)"></td>
3590
- </tr>
3591
- </tbody>
3592
- </table>
3593
-
3594
- <table kendoTooltip
3595
- #tooltip="kendoTooltip"
3596
- [tooltipTemplate]="completion ? completionRatioTooltip : dragging ? resizingTooltip : customTooltipTemplate ? customTooltip : tooltipTemplate"
3597
- [position]="tooltipOptions.position"
3598
- [callout]="!dragging"
3599
- [tooltipClass]="dragging ? 'k-gantt-resize-hint' : undefined"
3600
- filter=".k-task"
3601
- [showOn]="dragging || completion ? 'none' : 'hover'"
3602
- #tasksContainer
3603
- class="k-table k-table-md k-gantt-tasks"
3604
- role="presentation"
3605
- [style.border-collapse]="'collapse'"
3606
- [style.width.px]="tableWidth"
3607
- >
3608
- <tbody
3609
- class="k-table-tbody"
3610
- kendoGanttTasksTableBody
3611
- [rows]="rows"
3612
- [activeView]="activeView"
3613
- [taskContentTemplate]="taskContentTemplate"
3614
- [taskTemplate]="taskTemplate"
3615
- [summaryTaskTemplate]="summaryTaskTemplate"
3616
- [taskClass]="taskClass"
3617
- [isExpanded]="isExpanded"
3618
- [selectable]="selectable"
3619
- [isTaskSelected]="isTaskSelected"
3620
- [renderDependencyDragClues]="renderDependencyDragClues"
3621
- (taskPointerEnter)="task = $event"
3622
- (taskPointerLeave)="task = null"
3623
- >
3624
- </tbody>
3625
- </table>
3626
- </div>
3627
- <ng-template #tooltipTemplate>
3628
- <div class="k-task-content">
3629
- <div class="k-task-details">
3630
- <strong>{{task?.title}}</strong>
3631
- <div class="k-task-pct">{{task?.completionRatio | kendoNumber: 'p'}}</div>
3632
- <ul class="k-reset">
3633
- <li>{{messageFor('tooltipStartDateText')}}: {{task?.start | kendoDate: 'HH:mm a EEE, MMM d'}}</li>
3634
- <li>{{messageFor('tooltipEndDateText')}}: {{task?.end | kendoDate: 'HH:mm a EEE, MMM d'}}</li>
3635
- </ul>
3636
- </div>
3637
- </div>
3638
- </ng-template>
3639
- <ng-template #customTooltip>
3640
- <ng-container *ngTemplateOutlet="customTooltipTemplate.templateRef; context: { $implicit: task, task }"></ng-container>
3641
- </ng-template>
3642
- <ng-template #resizingTooltip>
3643
- <div class="k-tooltip-content">
3644
- <div>{{messageFor('tooltipStartDateText')}}: {{dragResult?.start | kendoDate: 'HH:mm a EEE, MMM d'}}</div>
3645
- <div>{{messageFor('tooltipEndDateText')}}: {{dragResult?.end | kendoDate: 'HH:mm a EEE, MMM d'}}</div>
3646
- </div>
3647
- </ng-template>
3648
- <ng-template #completionRatioTooltip>
3649
- <div class="k-tooltip-content">
3650
- <div>{{dragResult?.completionRatio | kendoNumber: 'p'}}</div>
3651
- </div>
3652
- </ng-template>
3653
-
3654
- <svg class="k-gantt-dependencies-svg">
3655
- <polyline
3656
- *ngFor="let dependency of dependencies"
3657
- kendoGanttDependency
3658
- [dependency]="dependency"
3659
- />
3660
- <polyline #dependencyDragCreatePolyline />
3661
- </svg>
3662
- <div class="k-marquee k-gantt-marquee" *ngIf="marquee.show" style="top: 0px; height: {{tasksContainer.offsetHeight}}px; left: {{marquee.left}}px; width: {{marquee.width}}px;">
3663
- <div class="k-marquee-color"></div>
3664
- </div>
3665
- <!-- placeholder for the dependency drag popup; its position is not arbitrary - the popup is intended to be absolutely positioned inside the .k-grid-content element -->
3666
- <ng-container #dragPopupContainer></ng-container>
3599
+ <div class="k-gantt-tables">
3600
+ <table
3601
+ class="k-table k-table-md k-grid-table k-gantt-rows"
3602
+ [style.width.px]="tableWidth"
3603
+ role="presentation"
3604
+ >
3605
+ <tbody class="k-table-tbody">
3606
+ @for (item of rows; track $index; let i = $index) {
3607
+ <tr
3608
+ class="k-table-row{{i % 2 ? ' k-table-alt-row' : ''}}">
3609
+ <td class="k-table-td"></td>
3610
+ </tr>
3611
+ }
3612
+ </tbody>
3613
+ </table>
3614
+
3615
+ <table
3616
+ #timelineColumns
3617
+ class="k-table k-table-md k-gantt-columns"
3618
+ role="presentation"
3619
+ [style.width.px]="tableWidth"
3620
+ >
3621
+ <colgroup>
3622
+ @for (item of slots; track trackBySlotIndex($index, item)) {
3623
+ <col>
3624
+ }
3625
+ </colgroup>
3626
+
3627
+ <tbody class="k-table-tbody">
3628
+ <tr class="k-table-row">
3629
+ @for (item of slots; track trackBySlotIndex($index, item)) {
3630
+ <td
3631
+ class="k-table-td"
3632
+ [class.k-nonwork-hour]="isNonWorking(item)"></td>
3633
+ }
3634
+ </tr>
3635
+ </tbody>
3636
+ </table>
3637
+
3638
+ <table kendoTooltip
3639
+ #tooltip="kendoTooltip"
3640
+ [tooltipTemplate]="completion ? completionRatioTooltip : dragging ? resizingTooltip : customTooltipTemplate ? customTooltip : tooltipTemplate"
3641
+ [position]="tooltipOptions.position"
3642
+ [callout]="!dragging"
3643
+ [tooltipClass]="dragging ? 'k-gantt-resize-hint' : undefined"
3644
+ filter=".k-task"
3645
+ [showOn]="dragging || completion ? 'none' : 'hover'"
3646
+ #tasksContainer
3647
+ class="k-table k-table-md k-gantt-tasks"
3648
+ role="presentation"
3649
+ [style.border-collapse]="'collapse'"
3650
+ [style.width.px]="tableWidth"
3651
+ >
3652
+ <tbody
3653
+ class="k-table-tbody"
3654
+ kendoGanttTasksTableBody
3655
+ [rows]="rows"
3656
+ [activeView]="activeView"
3657
+ [taskContentTemplate]="taskContentTemplate"
3658
+ [taskTemplate]="taskTemplate"
3659
+ [summaryTaskTemplate]="summaryTaskTemplate"
3660
+ [taskClass]="taskClass"
3661
+ [isExpanded]="isExpanded"
3662
+ [selectable]="selectable"
3663
+ [isTaskSelected]="isTaskSelected"
3664
+ [renderDependencyDragClues]="renderDependencyDragClues"
3665
+ (taskPointerEnter)="task = $event"
3666
+ (taskPointerLeave)="task = null"
3667
+ >
3668
+ </tbody>
3669
+ </table>
3667
3670
  </div>
3671
+ <ng-template #tooltipTemplate>
3672
+ <div class="k-task-content">
3673
+ <div class="k-task-details">
3674
+ <strong>{{task?.title}}</strong>
3675
+ <div class="k-task-pct">{{task?.completionRatio | kendoNumber: 'p'}}</div>
3676
+ <ul class="k-reset">
3677
+ <li>{{messageFor('tooltipStartDateText')}}: {{task?.start | kendoDate: 'HH:mm a EEE, MMM d'}}</li>
3678
+ <li>{{messageFor('tooltipEndDateText')}}: {{task?.end | kendoDate: 'HH:mm a EEE, MMM d'}}</li>
3679
+ </ul>
3680
+ </div>
3681
+ </div>
3682
+ </ng-template>
3683
+ <ng-template #customTooltip>
3684
+ <ng-container *ngTemplateOutlet="customTooltipTemplate.templateRef; context: { $implicit: task, task }"></ng-container>
3685
+ </ng-template>
3686
+ <ng-template #resizingTooltip>
3687
+ <div class="k-tooltip-content">
3688
+ <div>{{messageFor('tooltipStartDateText')}}: {{dragResult?.start | kendoDate: 'HH:mm a EEE, MMM d'}}</div>
3689
+ <div>{{messageFor('tooltipEndDateText')}}: {{dragResult?.end | kendoDate: 'HH:mm a EEE, MMM d'}}</div>
3690
+ </div>
3691
+ </ng-template>
3692
+ <ng-template #completionRatioTooltip>
3693
+ <div class="k-tooltip-content">
3694
+ <div>{{dragResult?.completionRatio | kendoNumber: 'p'}}</div>
3695
+ </div>
3696
+ </ng-template>
3697
+
3698
+ <svg class="k-gantt-dependencies-svg">
3699
+ @for (dependency of dependencies; track dependency.id) {
3700
+ <polyline
3701
+ kendoGanttDependency
3702
+ [dependency]="dependency"
3703
+ />
3704
+ }
3705
+ <polyline #dependencyDragCreatePolyline />
3706
+ </svg>
3707
+ @if (marquee.show) {
3708
+ <div class="k-marquee k-gantt-marquee" style="top: 0px; height: {{tasksContainer.offsetHeight}}px; left: {{marquee.left}}px; width: {{marquee.width}}px;">
3709
+ <div class="k-marquee-color"></div>
3710
+ </div>
3711
+ }
3712
+ <!-- placeholder for the dependency drag popup; its position is not arbitrary - the popup is intended to be absolutely positioned inside the .k-grid-content element -->
3713
+ <ng-container #dragPopupContainer></ng-container>
3714
+ </div>
3668
3715
  </div>
3669
3716
 
3670
- `,
3717
+ `,
3671
3718
  standalone: true,
3672
3719
  encapsulation: ViewEncapsulation.None,
3673
- imports: [GanttHeaderTableBodyComponent, TimelineScrollableDirective, DraggableDirective, NgFor, GanttTasksTableBodyComponent,
3674
- GanttDependencyDirective, KENDO_TOOLTIP, NgIf, DatePipe, NumberPipe, NgTemplateOutlet],
3720
+ imports: [GanttHeaderTableBodyComponent, TimelineScrollableDirective, DraggableDirective, GanttTasksTableBodyComponent, GanttDependencyDirective, KENDO_TOOLTIP, DatePipe, NumberPipe, NgTemplateOutlet],
3675
3721
  }]
3676
3722
  }], ctorParameters: () => [{ type: ScrollSyncService }, { type: DependencyDomService }, { type: i0.Renderer2 }, { type: i0.NgZone }, { type: CurrentTimeMarkerService }, { type: GanttLocalizationService }, { type: TaskDragService, decorators: [{
3677
3723
  type: Optional
@@ -4813,37 +4859,45 @@ class TaskFieldsComponent {
4813
4859
  return this.localizationService.get(token);
4814
4860
  }
4815
4861
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: TaskFieldsComponent, deps: [{ token: MappingService }, { token: EditService }, { token: GanttLocalizationService }], target: i0.ɵɵFactoryTarget.Component });
4816
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.14", type: TaskFieldsComponent, isStandalone: true, selector: "kendo-gantt-task-fields", ngImport: i0, template: `
4862
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: TaskFieldsComponent, isStandalone: true, selector: "kendo-gantt-task-fields", ngImport: i0, template: `
4817
4863
  <form class="k-form k-form-md" [formGroup]="formGroup">
4818
- <kendo-formfield *ngIf="formGroup.get(mapper.taskFields.title)">
4819
- <kendo-label [for]="title" [text]="getText('titleFieldInputLabel')"></kendo-label>
4820
- <input #title kendoTextBox [formControlName]="mapper.taskFields.title" />
4864
+ @if (formGroup.get(mapper.taskFields.title)) {
4865
+ <kendo-formfield>
4866
+ <kendo-label [for]="title" [text]="getText('titleFieldInputLabel')"></kendo-label>
4867
+ <input #title kendoTextBox [formControlName]="mapper.taskFields.title" />
4821
4868
  </kendo-formfield>
4822
- <div class="k-hstack">
4823
- <kendo-formfield [style.width.%]="49" *ngIf="formGroup.get(mapper.taskFields.start)">
4824
- <kendo-label [for]="start" [text]="getText('startFieldInputLabel')"></kendo-label>
4825
- <kendo-datetimepicker #start [formControlName]="mapper.taskFields.start"></kendo-datetimepicker>
4826
- </kendo-formfield>
4827
- <kendo-treelist-spacer></kendo-treelist-spacer>
4828
- <kendo-formfield [style.width.%]="49" *ngIf="formGroup.get(mapper.taskFields.end)">
4829
- <kendo-label [for]="end" [text]="getText('endFieldInputLabel')"></kendo-label>
4830
- <kendo-datetimepicker #end [formControlName]="mapper.taskFields.end"></kendo-datetimepicker>
4831
- </kendo-formfield>
4832
- </div>
4833
- <kendo-formfield [style.width.%]="49" *ngIf="formGroup.get(mapper.taskFields.completionRatio)">
4834
- <kendo-label [for]="completionRatio" [text]="getText('completionRatioFieldInputLabel')"></kendo-label>
4835
- <kendo-numerictextbox
4836
- #completionRatio
4837
- [formControlName]="mapper.taskFields.completionRatio"
4838
- [min]="0"
4839
- [max]="1"
4840
- [decimals]="2"
4841
- format="p2"
4842
- [step]="0.01"
4843
- ></kendo-numerictextbox>
4869
+ }
4870
+ <div class="k-hstack">
4871
+ @if (formGroup.get(mapper.taskFields.start)) {
4872
+ <kendo-formfield [style.width.%]="49">
4873
+ <kendo-label [for]="start" [text]="getText('startFieldInputLabel')"></kendo-label>
4874
+ <kendo-datetimepicker #start [formControlName]="mapper.taskFields.start"></kendo-datetimepicker>
4875
+ </kendo-formfield>
4876
+ }
4877
+ <kendo-treelist-spacer></kendo-treelist-spacer>
4878
+ @if (formGroup.get(mapper.taskFields.end)) {
4879
+ <kendo-formfield [style.width.%]="49">
4880
+ <kendo-label [for]="end" [text]="getText('endFieldInputLabel')"></kendo-label>
4881
+ <kendo-datetimepicker #end [formControlName]="mapper.taskFields.end"></kendo-datetimepicker>
4882
+ </kendo-formfield>
4883
+ }
4884
+ </div>
4885
+ @if (formGroup.get(mapper.taskFields.completionRatio)) {
4886
+ <kendo-formfield [style.width.%]="49">
4887
+ <kendo-label [for]="completionRatio" [text]="getText('completionRatioFieldInputLabel')"></kendo-label>
4888
+ <kendo-numerictextbox
4889
+ #completionRatio
4890
+ [formControlName]="mapper.taskFields.completionRatio"
4891
+ [min]="0"
4892
+ [max]="1"
4893
+ [decimals]="2"
4894
+ format="p2"
4895
+ [step]="0.01"
4896
+ ></kendo-numerictextbox>
4844
4897
  </kendo-formfield>
4898
+ }
4845
4899
  </form>
4846
- `, isInline: true, dependencies: [{ kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i4.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i4.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i4.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i4.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i4.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i4.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: FormFieldComponent, selector: "kendo-formfield", inputs: ["showHints", "orientation", "showErrors", "colSpan"] }, { kind: "component", type: LabelComponent, selector: "kendo-label", inputs: ["text", "for", "optional", "labelCssStyle", "labelCssClass"], exportAs: ["kendoLabel"] }, { kind: "directive", type: TextBoxDirective, selector: "input[kendoTextBox]", inputs: ["value"] }, { kind: "component", type: DateTimePickerComponent, selector: "kendo-datetimepicker", inputs: ["focusableId", "weekDaysFormat", "showOtherMonthDays", "value", "format", "twoDigitYearMax", "tabindex", "disabledDates", "popupSettings", "adaptiveTitle", "adaptiveSubtitle", "disabled", "readonly", "readOnlyInput", "cancelButton", "formatPlaceholder", "placeholder", "steps", "focusedDate", "calendarType", "animateCalendarNavigation", "weekNumber", "min", "max", "rangeValidation", "disabledDatesValidation", "incompleteDateValidation", "autoCorrectParts", "autoSwitchParts", "autoSwitchKeys", "enableMouseWheel", "allowCaretMode", "clearButton", "autoFill", "adaptiveMode", "inputAttributes", "defaultTab", "size", "rounded", "fillMode", "headerTemplate", "footerTemplate", "footer"], outputs: ["valueChange", "open", "close", "focus", "blur", "escape"], exportAs: ["kendo-datetimepicker"] }, { kind: "component", type: TreeListSpacerComponent, selector: "kendo-treelist-spacer", inputs: ["width"] }, { kind: "component", type: 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", "inputAttributes"], outputs: ["valueChange", "focus", "blur", "inputFocus", "inputBlur"], exportAs: ["kendoNumericTextBox"] }] });
4900
+ `, isInline: true, dependencies: [{ kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i4.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i4.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i4.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i4.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i4.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i4.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "component", type: FormFieldComponent, selector: "kendo-formfield", inputs: ["showHints", "orientation", "showErrors", "colSpan"] }, { kind: "component", type: LabelComponent, selector: "kendo-label", inputs: ["text", "for", "optional", "labelCssStyle", "labelCssClass"], exportAs: ["kendoLabel"] }, { kind: "directive", type: TextBoxDirective, selector: "input[kendoTextBox]", inputs: ["value"] }, { kind: "component", type: DateTimePickerComponent, selector: "kendo-datetimepicker", inputs: ["focusableId", "weekDaysFormat", "showOtherMonthDays", "value", "format", "twoDigitYearMax", "tabindex", "disabledDates", "popupSettings", "adaptiveTitle", "adaptiveSubtitle", "disabled", "readonly", "readOnlyInput", "cancelButton", "formatPlaceholder", "placeholder", "steps", "focusedDate", "calendarType", "animateCalendarNavigation", "weekNumber", "min", "max", "rangeValidation", "disabledDatesValidation", "incompleteDateValidation", "autoCorrectParts", "autoSwitchParts", "autoSwitchKeys", "enableMouseWheel", "allowCaretMode", "clearButton", "autoFill", "adaptiveMode", "inputAttributes", "defaultTab", "size", "rounded", "fillMode", "headerTemplate", "footerTemplate", "footer"], outputs: ["valueChange", "open", "close", "focus", "blur", "escape"], exportAs: ["kendo-datetimepicker"] }, { kind: "component", type: TreeListSpacerComponent, selector: "kendo-treelist-spacer", inputs: ["width"] }, { kind: "component", type: 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", "inputAttributes"], outputs: ["valueChange", "focus", "blur", "inputFocus", "inputBlur"], exportAs: ["kendoNumericTextBox"] }] });
4847
4901
  }
4848
4902
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: TaskFieldsComponent, decorators: [{
4849
4903
  type: Component,
@@ -4851,37 +4905,45 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
4851
4905
  selector: 'kendo-gantt-task-fields',
4852
4906
  template: `
4853
4907
  <form class="k-form k-form-md" [formGroup]="formGroup">
4854
- <kendo-formfield *ngIf="formGroup.get(mapper.taskFields.title)">
4855
- <kendo-label [for]="title" [text]="getText('titleFieldInputLabel')"></kendo-label>
4856
- <input #title kendoTextBox [formControlName]="mapper.taskFields.title" />
4908
+ @if (formGroup.get(mapper.taskFields.title)) {
4909
+ <kendo-formfield>
4910
+ <kendo-label [for]="title" [text]="getText('titleFieldInputLabel')"></kendo-label>
4911
+ <input #title kendoTextBox [formControlName]="mapper.taskFields.title" />
4857
4912
  </kendo-formfield>
4858
- <div class="k-hstack">
4859
- <kendo-formfield [style.width.%]="49" *ngIf="formGroup.get(mapper.taskFields.start)">
4860
- <kendo-label [for]="start" [text]="getText('startFieldInputLabel')"></kendo-label>
4861
- <kendo-datetimepicker #start [formControlName]="mapper.taskFields.start"></kendo-datetimepicker>
4862
- </kendo-formfield>
4863
- <kendo-treelist-spacer></kendo-treelist-spacer>
4864
- <kendo-formfield [style.width.%]="49" *ngIf="formGroup.get(mapper.taskFields.end)">
4865
- <kendo-label [for]="end" [text]="getText('endFieldInputLabel')"></kendo-label>
4866
- <kendo-datetimepicker #end [formControlName]="mapper.taskFields.end"></kendo-datetimepicker>
4867
- </kendo-formfield>
4868
- </div>
4869
- <kendo-formfield [style.width.%]="49" *ngIf="formGroup.get(mapper.taskFields.completionRatio)">
4870
- <kendo-label [for]="completionRatio" [text]="getText('completionRatioFieldInputLabel')"></kendo-label>
4871
- <kendo-numerictextbox
4872
- #completionRatio
4873
- [formControlName]="mapper.taskFields.completionRatio"
4874
- [min]="0"
4875
- [max]="1"
4876
- [decimals]="2"
4877
- format="p2"
4878
- [step]="0.01"
4879
- ></kendo-numerictextbox>
4913
+ }
4914
+ <div class="k-hstack">
4915
+ @if (formGroup.get(mapper.taskFields.start)) {
4916
+ <kendo-formfield [style.width.%]="49">
4917
+ <kendo-label [for]="start" [text]="getText('startFieldInputLabel')"></kendo-label>
4918
+ <kendo-datetimepicker #start [formControlName]="mapper.taskFields.start"></kendo-datetimepicker>
4919
+ </kendo-formfield>
4920
+ }
4921
+ <kendo-treelist-spacer></kendo-treelist-spacer>
4922
+ @if (formGroup.get(mapper.taskFields.end)) {
4923
+ <kendo-formfield [style.width.%]="49">
4924
+ <kendo-label [for]="end" [text]="getText('endFieldInputLabel')"></kendo-label>
4925
+ <kendo-datetimepicker #end [formControlName]="mapper.taskFields.end"></kendo-datetimepicker>
4926
+ </kendo-formfield>
4927
+ }
4928
+ </div>
4929
+ @if (formGroup.get(mapper.taskFields.completionRatio)) {
4930
+ <kendo-formfield [style.width.%]="49">
4931
+ <kendo-label [for]="completionRatio" [text]="getText('completionRatioFieldInputLabel')"></kendo-label>
4932
+ <kendo-numerictextbox
4933
+ #completionRatio
4934
+ [formControlName]="mapper.taskFields.completionRatio"
4935
+ [min]="0"
4936
+ [max]="1"
4937
+ [decimals]="2"
4938
+ format="p2"
4939
+ [step]="0.01"
4940
+ ></kendo-numerictextbox>
4880
4941
  </kendo-formfield>
4942
+ }
4881
4943
  </form>
4882
- `,
4944
+ `,
4883
4945
  standalone: true,
4884
- imports: [ReactiveFormsModule, NgIf, FormFieldComponent, LabelComponent, TextBoxDirective, DateTimePickerComponent, TreeListSpacerComponent, NumericTextBoxComponent]
4946
+ imports: [ReactiveFormsModule, FormFieldComponent, LabelComponent, TextBoxDirective, DateTimePickerComponent, TreeListSpacerComponent, NumericTextBoxComponent]
4885
4947
  }]
4886
4948
  }], ctorParameters: () => [{ type: MappingService }, { type: EditService }, { type: GanttLocalizationService }] });
4887
4949
 
@@ -5157,22 +5219,26 @@ class ViewSelectorComponent {
5157
5219
  this.activeViewChange.emit(event.target.value);
5158
5220
  }
5159
5221
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: ViewSelectorComponent, deps: [{ token: i1$1.LocalizationService }], target: i0.ɵɵFactoryTarget.Component });
5160
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.14", type: ViewSelectorComponent, isStandalone: true, selector: "kendo-gantt-view-selector", inputs: { views: "views", activeView: "activeView" }, outputs: { activeViewChange: "activeViewChange" }, host: { properties: { "class.k-gantt-views-wrapper": "this.hostClass" } }, ngImport: i0, template: `
5222
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: ViewSelectorComponent, isStandalone: true, selector: "kendo-gantt-view-selector", inputs: { views: "views", activeView: "activeView" }, outputs: { activeViewChange: "activeViewChange" }, host: { properties: { "class.k-gantt-views-wrapper": "this.hostClass" } }, ngImport: i0, template: `
5161
5223
  <select
5162
- class="k-dropdownlist k-picker k-rounded-md k-views-dropdown"
5163
- aria-label="View Selector"
5164
- [value]="activeView"
5165
- (change)="onActiveViewChange($event)">
5166
- <option *ngFor="let view of views" [value]="view">{{getViewTypeText(view)}}</option>
5224
+ class="k-dropdownlist k-picker k-rounded-md k-views-dropdown"
5225
+ aria-label="View Selector"
5226
+ [value]="activeView"
5227
+ (change)="onActiveViewChange($event)">
5228
+ @for (view of views; track view) {
5229
+ <option [value]="view">{{getViewTypeText(view)}}</option>
5230
+ }
5167
5231
  </select>
5168
5232
  <kendo-buttongroup class="k-gantt-views" selection="single" [navigable]="false">
5169
- <button *ngFor="let view of views"
5170
- kendoButton
5171
- type="button"
5172
- [selected]="view === activeView"
5173
- (click)="onClick(view)">{{getViewTypeText(view)}}</button>
5233
+ @for (view of views; track view) {
5234
+ <button
5235
+ kendoButton
5236
+ type="button"
5237
+ [selected]="view === activeView"
5238
+ (click)="onClick(view)">{{getViewTypeText(view)}}</button>
5239
+ }
5174
5240
  </kendo-buttongroup>
5175
- `, isInline: true, dependencies: [{ kind: "directive", type: NgFor, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i4.NgSelectOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i4.ɵNgSelectMultipleOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "component", type: ButtonGroupComponent, selector: "kendo-buttongroup", inputs: ["disabled", "selection", "width", "tabIndex", "navigable"], outputs: ["navigate"], exportAs: ["kendoButtonGroup"] }, { kind: "component", type: ButtonComponent, selector: "button[kendoButton]", inputs: ["arrowIcon", "toggleable", "togglable", "selected", "tabIndex", "imageUrl", "iconClass", "icon", "disabled", "size", "rounded", "fillMode", "themeColor", "svgIcon", "primary", "look"], outputs: ["selectedChange", "click"], exportAs: ["kendoButton"] }] });
5241
+ `, isInline: true, dependencies: [{ kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i4.NgSelectOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i4.ɵNgSelectMultipleOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "component", type: ButtonGroupComponent, selector: "kendo-buttongroup", inputs: ["disabled", "selection", "width", "tabIndex", "navigable"], outputs: ["navigate"], exportAs: ["kendoButtonGroup"] }, { kind: "component", type: ButtonComponent, selector: "button[kendoButton]", inputs: ["arrowIcon", "toggleable", "togglable", "selected", "tabIndex", "imageUrl", "iconClass", "icon", "disabled", "size", "rounded", "fillMode", "themeColor", "svgIcon", "primary", "look"], outputs: ["selectedChange", "click"], exportAs: ["kendoButton"] }] });
5176
5242
  }
5177
5243
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: ViewSelectorComponent, decorators: [{
5178
5244
  type: Component,
@@ -5180,22 +5246,26 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
5180
5246
  selector: 'kendo-gantt-view-selector',
5181
5247
  template: `
5182
5248
  <select
5183
- class="k-dropdownlist k-picker k-rounded-md k-views-dropdown"
5184
- aria-label="View Selector"
5185
- [value]="activeView"
5186
- (change)="onActiveViewChange($event)">
5187
- <option *ngFor="let view of views" [value]="view">{{getViewTypeText(view)}}</option>
5249
+ class="k-dropdownlist k-picker k-rounded-md k-views-dropdown"
5250
+ aria-label="View Selector"
5251
+ [value]="activeView"
5252
+ (change)="onActiveViewChange($event)">
5253
+ @for (view of views; track view) {
5254
+ <option [value]="view">{{getViewTypeText(view)}}</option>
5255
+ }
5188
5256
  </select>
5189
5257
  <kendo-buttongroup class="k-gantt-views" selection="single" [navigable]="false">
5190
- <button *ngFor="let view of views"
5191
- kendoButton
5192
- type="button"
5193
- [selected]="view === activeView"
5194
- (click)="onClick(view)">{{getViewTypeText(view)}}</button>
5258
+ @for (view of views; track view) {
5259
+ <button
5260
+ kendoButton
5261
+ type="button"
5262
+ [selected]="view === activeView"
5263
+ (click)="onClick(view)">{{getViewTypeText(view)}}</button>
5264
+ }
5195
5265
  </kendo-buttongroup>
5196
- `,
5266
+ `,
5197
5267
  standalone: true,
5198
- imports: [NgFor, ReactiveFormsModule, ButtonGroupComponent, ButtonComponent]
5268
+ imports: [ReactiveFormsModule, ButtonGroupComponent, ButtonComponent]
5199
5269
  }]
5200
5270
  }], ctorParameters: () => [{ type: i1$1.LocalizationService }], propDecorators: { hostClass: [{
5201
5271
  type: HostBinding,
@@ -5399,23 +5469,27 @@ class ToolbarComponent {
5399
5469
  }
5400
5470
  }
5401
5471
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: ToolbarComponent, deps: [{ token: i0.ElementRef }, { token: ToolbarNavigationService }], target: i0.ɵɵFactoryTarget.Component });
5402
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.14", type: ToolbarComponent, isStandalone: true, selector: "kendo-gantt-toolbar", inputs: { showAddTask: "showAddTask", showViewSelector: "showViewSelector", views: "views", activeView: "activeView", toolbarTemplate: "toolbarTemplate", navigable: "navigable", position: "position" }, outputs: { activeViewChange: "activeViewChange" }, host: { listeners: { "click": "clickHandler($event)", "keydown.arrowleft": "arrowLeftListener($event)", "keydown.arrowright": "arrowRightListener($event)" }, properties: { "attr.role": "this.role", "class.k-gantt-toolbar": "this.hostClasses", "class.k-toolbar": "this.hostClasses", "class.k-toolbar-md": "this.hostClasses", "class.k-toolbar-solid": "this.hostClasses" } }, providers: [ToolbarNavigationService], ngImport: i0, template: `
5403
- <ng-container *ngIf="!renderTemplate">
5404
- <kendo-gantt-add-task *ngIf="showAddTask"></kendo-gantt-add-task>
5405
- <span class="k-spacer k-toolbar-spacer"></span>
5472
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: ToolbarComponent, isStandalone: true, selector: "kendo-gantt-toolbar", inputs: { showAddTask: "showAddTask", showViewSelector: "showViewSelector", views: "views", activeView: "activeView", toolbarTemplate: "toolbarTemplate", navigable: "navigable", position: "position" }, outputs: { activeViewChange: "activeViewChange" }, host: { listeners: { "click": "clickHandler($event)", "keydown.arrowleft": "arrowLeftListener($event)", "keydown.arrowright": "arrowRightListener($event)" }, properties: { "attr.role": "this.role", "class.k-gantt-toolbar": "this.hostClasses", "class.k-toolbar": "this.hostClasses", "class.k-toolbar-md": "this.hostClasses", "class.k-toolbar-solid": "this.hostClasses" } }, providers: [ToolbarNavigationService], ngImport: i0, template: `
5473
+ @if (!renderTemplate) {
5474
+ @if (showAddTask) {
5475
+ <kendo-gantt-add-task></kendo-gantt-add-task>
5476
+ }
5477
+ <span class="k-spacer k-toolbar-spacer"></span>
5478
+ @if (showViewSelector) {
5406
5479
  <kendo-gantt-view-selector
5407
- *ngIf="showViewSelector"
5408
- [views]="views"
5409
- [activeView]="activeView"
5410
- (activeViewChange)="handleViewChange($event)"></kendo-gantt-view-selector>
5411
- </ng-container>
5412
- <ng-template
5413
- *ngIf="renderTemplate"
5480
+ [views]="views"
5481
+ [activeView]="activeView"
5482
+ (activeViewChange)="handleViewChange($event)"></kendo-gantt-view-selector>
5483
+ }
5484
+ }
5485
+ @if (renderTemplate) {
5486
+ <ng-template
5414
5487
  [ngTemplateOutlet]="toolbarTemplateRef"
5415
5488
  [ngTemplateOutletContext]="context"
5416
5489
  >
5417
- </ng-template>
5418
- `, isInline: true, dependencies: [{ kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: GanttAddTaskComponent, selector: "kendo-gantt-add-task", inputs: ["data", "icon", "svgIcon"] }, { kind: "component", type: ViewSelectorComponent, selector: "kendo-gantt-view-selector", inputs: ["views", "activeView"], outputs: ["activeViewChange"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }] });
5490
+ </ng-template>
5491
+ }
5492
+ `, isInline: true, dependencies: [{ kind: "component", type: GanttAddTaskComponent, selector: "kendo-gantt-add-task", inputs: ["data", "icon", "svgIcon"] }, { kind: "component", type: ViewSelectorComponent, selector: "kendo-gantt-view-selector", inputs: ["views", "activeView"], outputs: ["activeViewChange"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }] });
5419
5493
  }
5420
5494
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: ToolbarComponent, decorators: [{
5421
5495
  type: Component,
@@ -5423,24 +5497,28 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
5423
5497
  selector: 'kendo-gantt-toolbar',
5424
5498
  providers: [ToolbarNavigationService],
5425
5499
  template: `
5426
- <ng-container *ngIf="!renderTemplate">
5427
- <kendo-gantt-add-task *ngIf="showAddTask"></kendo-gantt-add-task>
5428
- <span class="k-spacer k-toolbar-spacer"></span>
5500
+ @if (!renderTemplate) {
5501
+ @if (showAddTask) {
5502
+ <kendo-gantt-add-task></kendo-gantt-add-task>
5503
+ }
5504
+ <span class="k-spacer k-toolbar-spacer"></span>
5505
+ @if (showViewSelector) {
5429
5506
  <kendo-gantt-view-selector
5430
- *ngIf="showViewSelector"
5431
- [views]="views"
5432
- [activeView]="activeView"
5433
- (activeViewChange)="handleViewChange($event)"></kendo-gantt-view-selector>
5434
- </ng-container>
5435
- <ng-template
5436
- *ngIf="renderTemplate"
5507
+ [views]="views"
5508
+ [activeView]="activeView"
5509
+ (activeViewChange)="handleViewChange($event)"></kendo-gantt-view-selector>
5510
+ }
5511
+ }
5512
+ @if (renderTemplate) {
5513
+ <ng-template
5437
5514
  [ngTemplateOutlet]="toolbarTemplateRef"
5438
5515
  [ngTemplateOutletContext]="context"
5439
5516
  >
5440
- </ng-template>
5441
- `,
5517
+ </ng-template>
5518
+ }
5519
+ `,
5442
5520
  standalone: true,
5443
- imports: [NgIf, GanttAddTaskComponent, ViewSelectorComponent, NgTemplateOutlet]
5521
+ imports: [GanttAddTaskComponent, ViewSelectorComponent, NgTemplateOutlet]
5444
5522
  }]
5445
5523
  }], ctorParameters: () => [{ type: i0.ElementRef }, { type: ToolbarNavigationService }], propDecorators: { role: [{
5446
5524
  type: HostBinding,
@@ -7295,7 +7373,7 @@ class GanttComponent {
7295
7373
  }
7296
7374
  }
7297
7375
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", 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 }, { token: i1.IntlService }, { token: LOCALE_ID }], target: i0.ɵɵFactoryTarget.Component });
7298
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.14", type: GanttComponent, isStandalone: true, 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", taskTooltipOptions: "taskTooltipOptions" }, 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: [
7376
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: GanttComponent, isStandalone: true, 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", taskTooltipOptions: "taskTooltipOptions" }, 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: [
7299
7377
  GanttLocalizationService,
7300
7378
  LocalizationService,
7301
7379
  {
@@ -7325,211 +7403,211 @@ class GanttComponent {
7325
7403
  CurrentTimeMarkerService
7326
7404
  ], queries: [{ propertyName: "taskContentTemplate", first: true, predicate: GanttTaskContentTemplateDirective, descendants: true }, { propertyName: "taskTemplate", first: true, predicate: GanttTaskTemplateDirective, descendants: true }, { propertyName: "taskTooltipTemplate", first: true, predicate: GanttTaskTooltipTemplateDirective, 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: `
7327
7405
  <ng-container kendoGanttLocalizedMessages
7328
- i18n-taskEditingGeneralTabTitle="kendo.gantt.taskEditingGeneralTabTitle|The title of the 'General' tab of the editing dialog TabStrip"
7329
- taskEditingGeneralTabTitle="General"
7406
+ i18n-taskEditingGeneralTabTitle="kendo.gantt.taskEditingGeneralTabTitle|The title of the 'General' tab of the editing dialog TabStrip"
7407
+ taskEditingGeneralTabTitle="General"
7330
7408
 
7331
- i18n-taskEditingPredecessorsTabTitle="kendo.gantt.taskEditingPredecessorsTabTitle|The title of the 'Predecessors' dependencies tab of the editing dialog TabStrip"
7332
- taskEditingPredecessorsTabTitle="Predecessors"
7409
+ i18n-taskEditingPredecessorsTabTitle="kendo.gantt.taskEditingPredecessorsTabTitle|The title of the 'Predecessors' dependencies tab of the editing dialog TabStrip"
7410
+ taskEditingPredecessorsTabTitle="Predecessors"
7333
7411
 
7334
- i18n-taskEditingSuccessorsTabTitle="kendo.gantt.taskEditingSuccessorsTabTitle|The title of the 'Successors' dependencies tab of the editing dialog TabStrip"
7335
- taskEditingSuccessorsTabTitle="Successors"
7412
+ i18n-taskEditingSuccessorsTabTitle="kendo.gantt.taskEditingSuccessorsTabTitle|The title of the 'Successors' dependencies tab of the editing dialog TabStrip"
7413
+ taskEditingSuccessorsTabTitle="Successors"
7336
7414
 
7337
- i18n-taskEditingDependenciesAddButtonText="kendo.gantt.taskEditingDependenciesAddButtonText|The text of the 'Add' button in the dependencies tabs of the editing dialog TabStrip"
7338
- taskEditingDependenciesAddButtonText="Add"
7415
+ i18n-taskEditingDependenciesAddButtonText="kendo.gantt.taskEditingDependenciesAddButtonText|The text of the 'Add' button in the dependencies tabs of the editing dialog TabStrip"
7416
+ taskEditingDependenciesAddButtonText="Add"
7339
7417
 
7340
- i18n-taskEditingDependenciesRemoveButtonText="kendo.gantt.taskEditingDependenciesRemoveButtonText|The text of the 'Remove' button in the dependencies tabs of the editing dialog TabStrip"
7341
- taskEditingDependenciesRemoveButtonText="Remove"
7418
+ i18n-taskEditingDependenciesRemoveButtonText="kendo.gantt.taskEditingDependenciesRemoveButtonText|The text of the 'Remove' button in the dependencies tabs of the editing dialog TabStrip"
7419
+ taskEditingDependenciesRemoveButtonText="Remove"
7342
7420
 
7343
- i18n-taskEditingDependenciesGridNameColumnTitle="kendo.gantt.taskEditingDependenciesGridNameColumnTitle|The title of the 'Task Title' Grid column in the dependencies tabs of the editing dialog TabStrip"
7344
- taskEditingDependenciesGridNameColumnTitle="Task Title"
7421
+ i18n-taskEditingDependenciesGridNameColumnTitle="kendo.gantt.taskEditingDependenciesGridNameColumnTitle|The title of the 'Task Title' Grid column in the dependencies tabs of the editing dialog TabStrip"
7422
+ taskEditingDependenciesGridNameColumnTitle="Task Title"
7345
7423
 
7346
- i18n-taskEditingDependenciesGridTypeColumnTitle="kendo.gantt.taskEditingDependenciesGridTypeColumnTitle|The title of the 'Type' Grid column in the dependencies tabs of the editing dialog TabStrip"
7347
- taskEditingDependenciesGridTypeColumnTitle="Type"
7424
+ i18n-taskEditingDependenciesGridTypeColumnTitle="kendo.gantt.taskEditingDependenciesGridTypeColumnTitle|The title of the 'Type' Grid column in the dependencies tabs of the editing dialog TabStrip"
7425
+ taskEditingDependenciesGridTypeColumnTitle="Type"
7348
7426
 
7349
- i18n-taskDeleteLabel="kendo.gantt.taskDeleteLabel|The label of the task delete icon"
7350
- taskDeleteLabel="Delete"
7427
+ i18n-taskDeleteLabel="kendo.gantt.taskDeleteLabel|The label of the task delete icon"
7428
+ taskDeleteLabel="Delete"
7351
7429
 
7352
- i18n-taskEditingDialogTitle="kendo.gantt.taskEditingDialogTitle|The title of the task editing dialog"
7353
- taskEditingDialogTitle="Editing Task"
7430
+ i18n-taskEditingDialogTitle="kendo.gantt.taskEditingDialogTitle|The title of the task editing dialog"
7431
+ taskEditingDialogTitle="Editing Task"
7354
7432
 
7355
- i18n-taskEditingDialogCloseTitle="kendo.gantt.taskEditingDialogCloseTitle|The title of the task editing dialog close button"
7356
- taskEditingDialogCloseTitle="Close"
7433
+ i18n-taskEditingDialogCloseTitle="kendo.gantt.taskEditingDialogCloseTitle|The title of the task editing dialog close button"
7434
+ taskEditingDialogCloseTitle="Close"
7357
7435
 
7358
- i18n-confirmationDialogCloseTitle="kendo.gantt.confirmationDialogCloseTitle|The title of the confirmation dialog close button"
7359
- confirmationDialogCloseTitle="Close"
7436
+ i18n-confirmationDialogCloseTitle="kendo.gantt.confirmationDialogCloseTitle|The title of the confirmation dialog close button"
7437
+ confirmationDialogCloseTitle="Close"
7360
7438
 
7361
- i18n-confirmationDialogTitle="kendo.gantt.confirmationDialogTitle|The title of the delete task confirmation dialog"
7362
- confirmationDialogTitle="Delete Task"
7439
+ i18n-confirmationDialogTitle="kendo.gantt.confirmationDialogTitle|The title of the delete task confirmation dialog"
7440
+ confirmationDialogTitle="Delete Task"
7363
7441
 
7364
- i18n-confirmationDialogContent="kendo.gantt.confirmationDialogContent|The content of the delete task confirmation dialog"
7365
- confirmationDialogContent="Are you sure you want to delete this task?"
7442
+ i18n-confirmationDialogContent="kendo.gantt.confirmationDialogContent|The content of the delete task confirmation dialog"
7443
+ confirmationDialogContent="Are you sure you want to delete this task?"
7366
7444
 
7367
- i18n-deleteButtonText="kendo.gantt.deleteButtonText|The text of the task editing dialog 'Delete' button"
7368
- deleteButtonText="Delete"
7445
+ i18n-deleteButtonText="kendo.gantt.deleteButtonText|The text of the task editing dialog 'Delete' button"
7446
+ deleteButtonText="Delete"
7369
7447
 
7370
- i18n-cancelButtonText="kendo.gantt.cancelButtonText|The text of the task editing dialog 'Cancel' button"
7371
- cancelButtonText="Cancel"
7448
+ i18n-cancelButtonText="kendo.gantt.cancelButtonText|The text of the task editing dialog 'Cancel' button"
7449
+ cancelButtonText="Cancel"
7372
7450
 
7373
- i18n-saveButtonText="kendo.gantt.saveButtonText|The text of the task editing dialog 'Save' button"
7374
- saveButtonText="Save"
7451
+ i18n-saveButtonText="kendo.gantt.saveButtonText|The text of the task editing dialog 'Save' button"
7452
+ saveButtonText="Save"
7375
7453
 
7376
- i18n-titleFieldInputLabel="kendo.gantt.titleFieldInputLabel|The label of the 'title' field input in editing mode"
7377
- titleFieldInputLabel="Title"
7454
+ i18n-titleFieldInputLabel="kendo.gantt.titleFieldInputLabel|The label of the 'title' field input in editing mode"
7455
+ titleFieldInputLabel="Title"
7378
7456
 
7379
- i18n-startFieldInputLabel="kendo.gantt.startFieldInputLabel|The label of the 'start' field input in editing mode"
7380
- startFieldInputLabel="Start"
7457
+ i18n-startFieldInputLabel="kendo.gantt.startFieldInputLabel|The label of the 'start' field input in editing mode"
7458
+ startFieldInputLabel="Start"
7381
7459
 
7382
- i18n-endFieldInputLabel="kendo.gantt.endFieldInputLabel|The label of the 'end' field input in editing mode"
7383
- endFieldInputLabel="End"
7460
+ i18n-endFieldInputLabel="kendo.gantt.endFieldInputLabel|The label of the 'end' field input in editing mode"
7461
+ endFieldInputLabel="End"
7384
7462
 
7385
- i18n-completionRatioFieldInputLabel="kendo.gantt.completionRatioFieldInputLabel|The label of the 'completionRatio' field input in editing mode"
7386
- completionRatioFieldInputLabel="Progress"
7463
+ i18n-completionRatioFieldInputLabel="kendo.gantt.completionRatioFieldInputLabel|The label of the 'completionRatio' field input in editing mode"
7464
+ completionRatioFieldInputLabel="Progress"
7387
7465
 
7388
- i18n-dayViewText="kendo.gantt.dayViewText|The text of the day view in the ViewSelector component"
7389
- dayViewText="Day"
7466
+ i18n-dayViewText="kendo.gantt.dayViewText|The text of the day view in the ViewSelector component"
7467
+ dayViewText="Day"
7390
7468
 
7391
- i18n-weekViewText="kendo.gantt.weekViewText|The text of the week view in the ViewSelector component"
7392
- weekViewText="Week"
7469
+ i18n-weekViewText="kendo.gantt.weekViewText|The text of the week view in the ViewSelector component"
7470
+ weekViewText="Week"
7393
7471
 
7394
- i18n-monthViewText="kendo.gantt.monthViewText|The text of the month view in the ViewSelector component"
7395
- monthViewText="Month"
7472
+ i18n-monthViewText="kendo.gantt.monthViewText|The text of the month view in the ViewSelector component"
7473
+ monthViewText="Month"
7396
7474
 
7397
- i18n-yearViewText-disabled="kendo.gantt.yearViewText|The text of the year view in the ViewSelector component"
7398
- yearViewText="Year"
7475
+ i18n-yearViewText-disabled="kendo.gantt.yearViewText|The text of the year view in the ViewSelector component"
7476
+ yearViewText="Year"
7399
7477
 
7400
- i18n-addTaskText="kendo.gantt.addTaskText|The text of the DropDownButton in the AddTask component"
7401
- addTaskText="Add Task"
7478
+ i18n-addTaskText="kendo.gantt.addTaskText|The text of the DropDownButton in the AddTask component"
7479
+ addTaskText="Add Task"
7402
7480
 
7403
- i18n-addChildText="kendo.gantt.addChildText|The text of the 'Add Child' option in the AddTask component"
7404
- addChildText="Add Child"
7481
+ i18n-addChildText="kendo.gantt.addChildText|The text of the 'Add Child' option in the AddTask component"
7482
+ addChildText="Add Child"
7405
7483
 
7406
- i18n-addAboveText="kendo.gantt.addAboveText|The text of the 'Add Above' option in the AddTask component"
7407
- addAboveText="Add Above"
7484
+ i18n-addAboveText="kendo.gantt.addAboveText|The text of the 'Add Above' option in the AddTask component"
7485
+ addAboveText="Add Above"
7408
7486
 
7409
- i18n-addBelowText="kendo.gantt.addBelowText|The text of the 'Add Below' option in the AddTask component"
7410
- addBelowText="Add Below"
7487
+ i18n-addBelowText="kendo.gantt.addBelowText|The text of the 'Add Below' option in the AddTask component"
7488
+ addBelowText="Add Below"
7411
7489
 
7412
- i18n-noRecords="kendo.gantt.noRecords|The label visible in the TreeList when there are no records"
7413
- noRecords="No records available."
7490
+ i18n-noRecords="kendo.gantt.noRecords|The label visible in the TreeList when there are no records"
7491
+ noRecords="No records available."
7414
7492
 
7415
- i18n-filter="kendo.gantt.filter|The label of the filter cell or icon"
7416
- filter="Filter"
7493
+ i18n-filter="kendo.gantt.filter|The label of the filter cell or icon"
7494
+ filter="Filter"
7417
7495
 
7418
- i18n-filterEqOperator="kendo.gantt.filterEqOperator|The text of the equal filter operator"
7419
- filterEqOperator="Is equal to"
7496
+ i18n-filterEqOperator="kendo.gantt.filterEqOperator|The text of the equal filter operator"
7497
+ filterEqOperator="Is equal to"
7420
7498
 
7421
- i18n-filterNotEqOperator="kendo.gantt.filterNotEqOperator|The text of the not equal filter operator"
7422
- filterNotEqOperator="Is not equal to"
7499
+ i18n-filterNotEqOperator="kendo.gantt.filterNotEqOperator|The text of the not equal filter operator"
7500
+ filterNotEqOperator="Is not equal to"
7423
7501
 
7424
- i18n-filterIsNullOperator="kendo.gantt.filterIsNullOperator|The text of the is null filter operator"
7425
- filterIsNullOperator="Is null"
7502
+ i18n-filterIsNullOperator="kendo.gantt.filterIsNullOperator|The text of the is null filter operator"
7503
+ filterIsNullOperator="Is null"
7426
7504
 
7427
- i18n-filterIsNotNullOperator="kendo.gantt.filterIsNotNullOperator|The text of the is not null filter operator"
7428
- filterIsNotNullOperator="Is not null"
7505
+ i18n-filterIsNotNullOperator="kendo.gantt.filterIsNotNullOperator|The text of the is not null filter operator"
7506
+ filterIsNotNullOperator="Is not null"
7429
7507
 
7430
- i18n-filterIsEmptyOperator="kendo.gantt.filterIsEmptyOperator|The text of the is empty filter operator"
7431
- filterIsEmptyOperator="Is empty"
7508
+ i18n-filterIsEmptyOperator="kendo.gantt.filterIsEmptyOperator|The text of the is empty filter operator"
7509
+ filterIsEmptyOperator="Is empty"
7432
7510
 
7433
- i18n-filterIsNotEmptyOperator="kendo.gantt.filterIsNotEmptyOperator|The text of the is not empty filter operator"
7434
- filterIsNotEmptyOperator="Is not empty"
7511
+ i18n-filterIsNotEmptyOperator="kendo.gantt.filterIsNotEmptyOperator|The text of the is not empty filter operator"
7512
+ filterIsNotEmptyOperator="Is not empty"
7435
7513
 
7436
- i18n-filterStartsWithOperator="kendo.gantt.filterStartsWithOperator|The text of the starts with filter operator"
7437
- filterStartsWithOperator="Starts with"
7514
+ i18n-filterStartsWithOperator="kendo.gantt.filterStartsWithOperator|The text of the starts with filter operator"
7515
+ filterStartsWithOperator="Starts with"
7438
7516
 
7439
- i18n-filterContainsOperator="kendo.gantt.filterContainsOperator|The text of the contains filter operator"
7440
- filterContainsOperator="Contains"
7517
+ i18n-filterContainsOperator="kendo.gantt.filterContainsOperator|The text of the contains filter operator"
7518
+ filterContainsOperator="Contains"
7441
7519
 
7442
- i18n-filterNotContainsOperator="kendo.gantt.filterNotContainsOperator|The text of the does not contain filter operator"
7443
- filterNotContainsOperator="Does not contain"
7520
+ i18n-filterNotContainsOperator="kendo.gantt.filterNotContainsOperator|The text of the does not contain filter operator"
7521
+ filterNotContainsOperator="Does not contain"
7444
7522
 
7445
- i18n-filterEndsWithOperator="kendo.gantt.filterEndsWithOperator|The text of the ends with filter operator"
7446
- filterEndsWithOperator="Ends with"
7523
+ i18n-filterEndsWithOperator="kendo.gantt.filterEndsWithOperator|The text of the ends with filter operator"
7524
+ filterEndsWithOperator="Ends with"
7447
7525
 
7448
- i18n-filterGteOperator="kendo.gantt.filterGteOperator|The text of the greater than or equal filter operator"
7449
- filterGteOperator="Is greater than or equal to"
7526
+ i18n-filterGteOperator="kendo.gantt.filterGteOperator|The text of the greater than or equal filter operator"
7527
+ filterGteOperator="Is greater than or equal to"
7450
7528
 
7451
- i18n-filterGtOperator="kendo.gantt.filterGtOperator|The text of the greater than filter operator"
7452
- filterGtOperator="Is greater than"
7529
+ i18n-filterGtOperator="kendo.gantt.filterGtOperator|The text of the greater than filter operator"
7530
+ filterGtOperator="Is greater than"
7453
7531
 
7454
- i18n-filterLteOperator="kendo.gantt.filterLteOperator|The text of the less than or equal filter operator"
7455
- filterLteOperator="Is less than or equal to"
7532
+ i18n-filterLteOperator="kendo.gantt.filterLteOperator|The text of the less than or equal filter operator"
7533
+ filterLteOperator="Is less than or equal to"
7456
7534
 
7457
- i18n-filterLtOperator="kendo.gantt.filterLtOperator|The text of the less than filter operator"
7458
- filterLtOperator="Is less than"
7535
+ i18n-filterLtOperator="kendo.gantt.filterLtOperator|The text of the less than filter operator"
7536
+ filterLtOperator="Is less than"
7459
7537
 
7460
- i18n-filterIsTrue="kendo.gantt.filterIsTrue|The text of the IsTrue boolean filter option"
7461
- filterIsTrue="Is True"
7538
+ i18n-filterIsTrue="kendo.gantt.filterIsTrue|The text of the IsTrue boolean filter option"
7539
+ filterIsTrue="Is True"
7462
7540
 
7463
- i18n-filterIsFalse="kendo.gantt.filterIsFalse|The text of the IsFalse boolean filter option"
7464
- filterIsFalse="Is False"
7541
+ i18n-filterIsFalse="kendo.gantt.filterIsFalse|The text of the IsFalse boolean filter option"
7542
+ filterIsFalse="Is False"
7465
7543
 
7466
- i18n-filterBooleanAll="kendo.gantt.filterBooleanAll|The text of the (All) boolean filter option"
7467
- filterBooleanAll="(All)"
7544
+ i18n-filterBooleanAll="kendo.gantt.filterBooleanAll|The text of the (All) boolean filter option"
7545
+ filterBooleanAll="(All)"
7468
7546
 
7469
- i18n-filterAfterOrEqualOperator="kendo.gantt.filterAfterOrEqualOperator|The text of the after or equal date filter operator"
7470
- filterAfterOrEqualOperator="Is after or equal to"
7547
+ i18n-filterAfterOrEqualOperator="kendo.gantt.filterAfterOrEqualOperator|The text of the after or equal date filter operator"
7548
+ filterAfterOrEqualOperator="Is after or equal to"
7471
7549
 
7472
- i18n-filterAfterOperator="kendo.gantt.filterAfterOperator|The text of the after date filter operator"
7473
- filterAfterOperator="Is after"
7550
+ i18n-filterAfterOperator="kendo.gantt.filterAfterOperator|The text of the after date filter operator"
7551
+ filterAfterOperator="Is after"
7474
7552
 
7475
- i18n-filterBeforeOperator="kendo.gantt.filterBeforeOperator|The text of the before date filter operator"
7476
- filterBeforeOperator="Is before"
7553
+ i18n-filterBeforeOperator="kendo.gantt.filterBeforeOperator|The text of the before date filter operator"
7554
+ filterBeforeOperator="Is before"
7477
7555
 
7478
- i18n-filterBeforeOrEqualOperator="kendo.gantt.filterBeforeOrEqualOperator|The text of the before or equal date filter operator"
7479
- filterBeforeOrEqualOperator="Is before or equal to"
7556
+ i18n-filterBeforeOrEqualOperator="kendo.gantt.filterBeforeOrEqualOperator|The text of the before or equal date filter operator"
7557
+ filterBeforeOrEqualOperator="Is before or equal to"
7480
7558
 
7481
- i18n-filterFilterButton="kendo.gantt.filterFilterButton|The text of the filter button"
7482
- filterFilterButton="Filter"
7559
+ i18n-filterFilterButton="kendo.gantt.filterFilterButton|The text of the filter button"
7560
+ filterFilterButton="Filter"
7483
7561
 
7484
- i18n-filterClearButton="kendo.gantt.filterClearButton|The text of the clear filter button"
7485
- filterClearButton="Clear"
7562
+ i18n-filterClearButton="kendo.gantt.filterClearButton|The text of the clear filter button"
7563
+ filterClearButton="Clear"
7486
7564
 
7487
- i18n-filterAndLogic="kendo.gantt.filterAndLogic|The text of the And filter logic"
7488
- filterAndLogic="And"
7565
+ i18n-filterAndLogic="kendo.gantt.filterAndLogic|The text of the And filter logic"
7566
+ filterAndLogic="And"
7489
7567
 
7490
- i18n-filterOrLogic="kendo.gantt.filterOrLogic|The text of the Or filter logic"
7491
- filterOrLogic="Or"
7568
+ i18n-filterOrLogic="kendo.gantt.filterOrLogic|The text of the Or filter logic"
7569
+ filterOrLogic="Or"
7492
7570
 
7493
- i18n-loading="kendo.gantt.loading|The loading text"
7494
- loading="Loading"
7571
+ i18n-loading="kendo.gantt.loading|The loading text"
7572
+ loading="Loading"
7495
7573
 
7496
- i18n-columnMenu="kendo.gantt.columnMenu|The title of the column menu icon"
7497
- columnMenu="Column Menu"
7574
+ i18n-columnMenu="kendo.gantt.columnMenu|The title of the column menu icon"
7575
+ columnMenu="Column Menu"
7498
7576
 
7499
- i18n-columns="kendo.gantt.columns|The text shown in the column menu for the columns item"
7500
- columns="Columns"
7577
+ i18n-columns="kendo.gantt.columns|The text shown in the column menu for the columns item"
7578
+ columns="Columns"
7501
7579
 
7502
- i18n-lock-disabled="kendo.gantt.lock|The text shown in the column menu for the lock item"
7503
- lock-disabled="Lock"
7580
+ i18n-lock-disabled="kendo.gantt.lock|The text shown in the column menu for the lock item"
7581
+ lock-disabled="Lock"
7504
7582
 
7505
- i18n-unlock-disabled="kendo.gantt.unlock|The text shown in the column menu for the unlock item"
7506
- unlock-disabled="Unlock"
7583
+ i18n-unlock-disabled="kendo.gantt.unlock|The text shown in the column menu for the unlock item"
7584
+ unlock-disabled="Unlock"
7507
7585
 
7508
- i18n-sortable="kendo.gantt.sortable|The label of the sort icon"
7509
- sortable="Sortable"
7586
+ i18n-sortable="kendo.gantt.sortable|The label of the sort icon"
7587
+ sortable="Sortable"
7510
7588
 
7511
- i18n-sortAscending="kendo.gantt.sortAscending|The text shown in the column menu for the sort ascending item"
7512
- sortAscending="Sort Ascending"
7589
+ i18n-sortAscending="kendo.gantt.sortAscending|The text shown in the column menu for the sort ascending item"
7590
+ sortAscending="Sort Ascending"
7513
7591
 
7514
- i18n-sortDescending="kendo.gantt.sortDescending|The text shown in the column menu for the sort descending item"
7515
- sortDescending="Sort Descending"
7592
+ i18n-sortDescending="kendo.gantt.sortDescending|The text shown in the column menu for the sort descending item"
7593
+ sortDescending="Sort Descending"
7516
7594
 
7517
- i18n-sortedDefault="kendo.gantt.sortedDefault|The status announcement when a column is no longer sorted"
7518
- sortedDefault="Not Sorted"
7595
+ i18n-sortedDefault="kendo.gantt.sortedDefault|The status announcement when a column is no longer sorted"
7596
+ sortedDefault="Not Sorted"
7519
7597
 
7520
- i18n-columnsApply="kendo.gantt.columnsApply|The text shown in the column menu or column chooser for the columns apply button"
7521
- columnsApply="Apply"
7598
+ i18n-columnsApply="kendo.gantt.columnsApply|The text shown in the column menu or column chooser for the columns apply button"
7599
+ columnsApply="Apply"
7522
7600
 
7523
- i18n-columnsReset="kendo.gantt.columnsReset|The text shown in the column menu or column chooser for the columns reset button"
7524
- columnsReset="Reset"
7601
+ i18n-columnsReset="kendo.gantt.columnsReset|The text shown in the column menu or column chooser for the columns reset button"
7602
+ columnsReset="Reset"
7525
7603
 
7526
- i18n-tooltipStartDateText="kendo.gantt.tooltipStartDateText|The text shown in the task tooltip before the task start date"
7527
- tooltipStartDateText="Start"
7604
+ i18n-tooltipStartDateText="kendo.gantt.tooltipStartDateText|The text shown in the task tooltip before the task start date"
7605
+ tooltipStartDateText="Start"
7528
7606
 
7529
- i18n-tooltipEndDateText="kendo.gantt.tooltipEndDateText|The text shown in the task tooltip before the task end date"
7530
- tooltipEndDateText="End"></ng-container>
7531
- <kendo-gantt-toolbar
7532
- *ngIf="showToolbar('top')"
7607
+ i18n-tooltipEndDateText="kendo.gantt.tooltipEndDateText|The text shown in the task tooltip before the task end date"
7608
+ tooltipEndDateText="End"></ng-container>
7609
+ @if (showToolbar('top')) {
7610
+ <kendo-gantt-toolbar
7533
7611
  [attr.aria-label]="toolbarAriaLabel"
7534
7612
  [showAddTask]="toolbarSettings.addTaskTool === 'top' || toolbarSettings.addTaskTool === 'both'"
7535
7613
  [showViewSelector]="toolbarSettings.viewSelectorTool === 'top' || toolbarSettings.viewSelectorTool === 'both'"
@@ -7539,142 +7617,144 @@ class GanttComponent {
7539
7617
  class="k-gantt-header"
7540
7618
  position="top"
7541
7619
  [navigable]="navigable"
7542
- (activeViewChange)="changeActiveView($event)"></kendo-gantt-toolbar>
7620
+ (activeViewChange)="changeActiveView($event)"></kendo-gantt-toolbar>
7621
+ }
7543
7622
  <div class="k-gantt-content">
7544
- <kendo-splitter [style.border]="0">
7545
- <kendo-splitter-pane
7546
- class="k-gantt-treelist k-gantt-treelist-scrollable"
7547
- [collapsible]="treeListPaneOptions?.collapsible"
7548
- [collapsed]="treeListPaneOptions?.collapsed"
7549
- (collapsedChange)="onTreeListCollapsedChange($event)"
7550
- [scrollable]="false">
7551
- <kendo-treelist
7552
- [idField]="taskIdField"
7553
- [columns]="columns"
7554
- [data]="data"
7555
- [hasChildren]="hasChildren"
7556
- [fetchChildren]="fetchChildren"
7557
- [navigable]="navigable"
7558
- [isExpanded]="isExpanded"
7559
- [autoSize]="columnsAutoSize"
7560
- [columnMenu]="columnMenu"
7561
- [reorderable]="columnsReorderable"
7562
- [resizable]="columnsResizable"
7563
- [rowClass]="rowClass"
7564
- [isSelected]="isSelected"
7565
- [selectable]="selectable"
7566
- [sortable]="sortable"
7567
- [sort]="sort"
7568
- [filterable]="filterMenu"
7569
- [filter]="filter"
7570
- (filterChange)="filterChange.emit($event)"
7571
- (sortChange)="sortChange.emit($event)"
7623
+ <kendo-splitter [style.border]="0">
7624
+ <kendo-splitter-pane
7625
+ class="k-gantt-treelist k-gantt-treelist-scrollable"
7626
+ [collapsible]="treeListPaneOptions?.collapsible"
7627
+ [collapsed]="treeListPaneOptions?.collapsed"
7628
+ (collapsedChange)="onTreeListCollapsedChange($event)"
7629
+ [scrollable]="false">
7630
+ <kendo-treelist
7631
+ [idField]="taskIdField"
7632
+ [columns]="columns"
7633
+ [data]="data"
7634
+ [hasChildren]="hasChildren"
7635
+ [fetchChildren]="fetchChildren"
7636
+ [navigable]="navigable"
7637
+ [isExpanded]="isExpanded"
7638
+ [autoSize]="columnsAutoSize"
7639
+ [columnMenu]="columnMenu"
7640
+ [reorderable]="columnsReorderable"
7641
+ [resizable]="columnsResizable"
7642
+ [rowClass]="rowClass"
7643
+ [isSelected]="isSelected"
7644
+ [selectable]="selectable"
7645
+ [sortable]="sortable"
7646
+ [sort]="sort"
7647
+ [filterable]="filterMenu"
7648
+ [filter]="filter"
7649
+ (filterChange)="filterChange.emit($event)"
7650
+ (sortChange)="sortChange.emit($event)"
7572
7651
  (dataStateChange)="dataStateChange.emit({
7573
7652
  filter: $event.filter,
7574
7653
  sort: $event.sort
7575
7654
  })"
7576
- (expandStateChange)="expandStateChange.emit($event)"
7577
- (expand)="rowExpand.emit({ dataItem: $event.dataItem })"
7578
- (collapse)="rowCollapse.emit({ dataItem: $event.dataItem })"
7579
- (columnReorder)="columnReorder.emit($event)"
7580
- (columnResize)="columnResize.emit($event)"
7581
- (columnVisibilityChange)="handleColumnVisibilityChange($event)"
7582
- (columnLockedChange)="columnLockedChange.emit($event)"
7583
- (selectionChange)="handleTreeListSelectionChange($event)"
7584
- (cellClick)="handleTreeListCellClick($event)"
7585
- (cellClose)="handleCellClose($event)"
7655
+ (expandStateChange)="expandStateChange.emit($event)"
7656
+ (expand)="rowExpand.emit({ dataItem: $event.dataItem })"
7657
+ (collapse)="rowCollapse.emit({ dataItem: $event.dataItem })"
7658
+ (columnReorder)="columnReorder.emit($event)"
7659
+ (columnResize)="columnResize.emit($event)"
7660
+ (columnVisibilityChange)="handleColumnVisibilityChange($event)"
7661
+ (columnLockedChange)="columnLockedChange.emit($event)"
7662
+ (selectionChange)="handleTreeListSelectionChange($event)"
7663
+ (cellClick)="handleTreeListCellClick($event)"
7664
+ (cellClose)="handleCellClose($event)"
7586
7665
  [kendoEventsOutsideAngular]="{
7587
7666
  dblclick: handleTreeListDoubleClick
7588
7667
  }"
7589
- [scope]="this"
7590
- >
7591
- <kendo-treelist-messages
7592
- [noRecords]="getText('noRecords')"
7593
- [filter]="getText('filter')"
7594
- [filterEqOperator]="getText('filterEqOperator')"
7595
- [filterNotEqOperator]="getText('filterNotEqOperator')"
7596
- [filterIsNullOperator]="getText('filterIsNullOperator')"
7597
- [filterIsNotNullOperator]="getText('filterIsNotNullOperator')"
7598
- [filterIsEmptyOperator]="getText('filterIsEmptyOperator')"
7599
- [filterIsNotEmptyOperator]="getText('filterIsNotEmptyOperator')"
7600
- [filterStartsWithOperator]="getText('filterStartsWithOperator')"
7601
- [filterContainsOperator]="getText('filterContainsOperator')"
7602
- [filterNotContainsOperator]="getText('filterNotContainsOperator')"
7603
- [filterEndsWithOperator]="getText('filterEndsWithOperator')"
7604
- [filterGteOperator]="getText('filterGteOperator')"
7605
- [filterGtOperator]="getText('filterGtOperator')"
7606
- [filterLteOperator]="getText('filterLteOperator')"
7607
- [filterLtOperator]="getText('filterLtOperator')"
7608
- [filterIsTrue]="getText('filterIsTrue')"
7609
- [filterIsFalse]="getText('filterIsFalse')"
7610
- [filterBooleanAll]="getText('filterBooleanAll')"
7611
- [filterAfterOrEqualOperator]="getText('filterAfterOrEqualOperator')"
7612
- [filterAfterOperator]="getText('filterAfterOperator')"
7613
- [filterBeforeOperator]="getText('filterBeforeOperator')"
7614
- [filterBeforeOrEqualOperator]="getText('filterBeforeOrEqualOperator')"
7615
- [filterFilterButton]="getText('filterFilterButton')"
7616
- [filterClearButton]="getText('filterClearButton')"
7617
- [filterAndLogic]="getText('filterAndLogic')"
7618
- [filterOrLogic]="getText('filterOrLogic')"
7619
- [loading]="getText('loading')"
7620
- [columnMenu]="getText('columnMenu')"
7621
- [columns]="getText('columns')"
7622
- [sortable]="getText('sortable')"
7623
- [sortAscending]="getText('sortAscending')"
7624
- [sortDescending]="getText('sortDescending')"
7625
- [sortedAscending]="getText('sortedAscending')"
7626
- [sortedDescending]="getText('sortedDescending')"
7627
- [sortedDefault]="getText('sortedDefault')"
7628
- [columnsApply]="getText('columnsApply')"
7629
- [columnsReset]="getText('columnsReset')"
7630
- >
7631
- </kendo-treelist-messages>
7632
- </kendo-treelist>
7633
- </kendo-splitter-pane>
7634
- <kendo-splitter-pane
7635
- [collapsible]="timelinePaneOptions?.collapsible"
7636
- [resizable]="timelinePaneOptions?.resizable"
7637
- [collapsed]="timelinePaneOptions?.collapsed"
7638
- [min]="timelinePaneOptions?.min"
7639
- [max]="timelinePaneOptions?.max"
7640
- [size]="timelinePaneOptions?.size"
7641
- (collapsedChange)="onTimelineCollapsedChange($event)"
7642
- (sizeChange)="onTimelinePaneSizeChange($event)"
7643
- [scrollable]="false"
7644
- class="k-gantt-timeline-pane">
7645
- <kendo-gantt-timeline
7646
- *ngIf="views && views.length"
7647
- [renderDependencyDragClues]="renderDependencyDragClues"
7648
- [dragScrollSettings]="dragScrollSettings"
7649
- [rows]="viewItems"
7650
- [slots]="timelineSlots"
7651
- [currentTimeMarker]="activeViewCurrentTimeMarker"
7652
- [groupSlots]="timelineGroupSlots"
7653
- [tableWidth]="tableWidth"
7654
- [activeView]="activeView"
7655
- [taskContentTemplate]="taskContentTemplate?.templateRef"
7656
- [taskTemplate]="taskTemplate?.templateRef"
7657
- [summaryTaskTemplate]="summaryTaskTemplate?.templateRef"
7658
- [taskClass]="taskClass"
7659
- [dependencies]="dependencies"
7660
- [isExpanded]="isExpanded"
7661
- [selectable]="selectable"
7662
- [isTaskSelected]="isTaskSelected"
7668
+ [scope]="this"
7669
+ >
7670
+ <kendo-treelist-messages
7671
+ [noRecords]="getText('noRecords')"
7672
+ [filter]="getText('filter')"
7673
+ [filterEqOperator]="getText('filterEqOperator')"
7674
+ [filterNotEqOperator]="getText('filterNotEqOperator')"
7675
+ [filterIsNullOperator]="getText('filterIsNullOperator')"
7676
+ [filterIsNotNullOperator]="getText('filterIsNotNullOperator')"
7677
+ [filterIsEmptyOperator]="getText('filterIsEmptyOperator')"
7678
+ [filterIsNotEmptyOperator]="getText('filterIsNotEmptyOperator')"
7679
+ [filterStartsWithOperator]="getText('filterStartsWithOperator')"
7680
+ [filterContainsOperator]="getText('filterContainsOperator')"
7681
+ [filterNotContainsOperator]="getText('filterNotContainsOperator')"
7682
+ [filterEndsWithOperator]="getText('filterEndsWithOperator')"
7683
+ [filterGteOperator]="getText('filterGteOperator')"
7684
+ [filterGtOperator]="getText('filterGtOperator')"
7685
+ [filterLteOperator]="getText('filterLteOperator')"
7686
+ [filterLtOperator]="getText('filterLtOperator')"
7687
+ [filterIsTrue]="getText('filterIsTrue')"
7688
+ [filterIsFalse]="getText('filterIsFalse')"
7689
+ [filterBooleanAll]="getText('filterBooleanAll')"
7690
+ [filterAfterOrEqualOperator]="getText('filterAfterOrEqualOperator')"
7691
+ [filterAfterOperator]="getText('filterAfterOperator')"
7692
+ [filterBeforeOperator]="getText('filterBeforeOperator')"
7693
+ [filterBeforeOrEqualOperator]="getText('filterBeforeOrEqualOperator')"
7694
+ [filterFilterButton]="getText('filterFilterButton')"
7695
+ [filterClearButton]="getText('filterClearButton')"
7696
+ [filterAndLogic]="getText('filterAndLogic')"
7697
+ [filterOrLogic]="getText('filterOrLogic')"
7698
+ [loading]="getText('loading')"
7699
+ [columnMenu]="getText('columnMenu')"
7700
+ [columns]="getText('columns')"
7701
+ [sortable]="getText('sortable')"
7702
+ [sortAscending]="getText('sortAscending')"
7703
+ [sortDescending]="getText('sortDescending')"
7704
+ [sortedAscending]="getText('sortedAscending')"
7705
+ [sortedDescending]="getText('sortedDescending')"
7706
+ [sortedDefault]="getText('sortedDefault')"
7707
+ [columnsApply]="getText('columnsApply')"
7708
+ [columnsReset]="getText('columnsReset')"
7709
+ >
7710
+ </kendo-treelist-messages>
7711
+ </kendo-treelist>
7712
+ </kendo-splitter-pane>
7713
+ <kendo-splitter-pane
7714
+ [collapsible]="timelinePaneOptions?.collapsible"
7715
+ [resizable]="timelinePaneOptions?.resizable"
7716
+ [collapsed]="timelinePaneOptions?.collapsed"
7717
+ [min]="timelinePaneOptions?.min"
7718
+ [max]="timelinePaneOptions?.max"
7719
+ [size]="timelinePaneOptions?.size"
7720
+ (collapsedChange)="onTimelineCollapsedChange($event)"
7721
+ (sizeChange)="onTimelinePaneSizeChange($event)"
7722
+ [scrollable]="false"
7723
+ class="k-gantt-timeline-pane">
7724
+ @if (views && views.length) {
7725
+ <kendo-gantt-timeline
7726
+ [renderDependencyDragClues]="renderDependencyDragClues"
7727
+ [dragScrollSettings]="dragScrollSettings"
7728
+ [rows]="viewItems"
7729
+ [slots]="timelineSlots"
7730
+ [currentTimeMarker]="activeViewCurrentTimeMarker"
7731
+ [groupSlots]="timelineGroupSlots"
7732
+ [tableWidth]="tableWidth"
7733
+ [activeView]="activeView"
7734
+ [taskContentTemplate]="taskContentTemplate?.templateRef"
7735
+ [taskTemplate]="taskTemplate?.templateRef"
7736
+ [summaryTaskTemplate]="summaryTaskTemplate?.templateRef"
7737
+ [taskClass]="taskClass"
7738
+ [dependencies]="dependencies"
7739
+ [isExpanded]="isExpanded"
7740
+ [selectable]="selectable"
7741
+ [isTaskSelected]="isTaskSelected"
7663
7742
  [kendoEventsOutsideAngular]="{
7664
7743
  click: handleTimelineClick,
7665
7744
  contextmenu: handleTimelineRightClick,
7666
7745
  dblclick: handleTimelineDblClick,
7667
7746
  mousedown: handleTimelineMouseDown
7668
7747
  }"
7669
- [customTooltipTemplate]="taskTooltipTemplate"
7670
- [tooltipOptions]="taskTooltipOptions"
7671
- [scope]="this"
7672
- ></kendo-gantt-timeline>
7673
- </kendo-splitter-pane>
7674
- </kendo-splitter>
7748
+ [customTooltipTemplate]="taskTooltipTemplate"
7749
+ [tooltipOptions]="taskTooltipOptions"
7750
+ [scope]="this"
7751
+ ></kendo-gantt-timeline>
7752
+ }
7753
+ </kendo-splitter-pane>
7754
+ </kendo-splitter>
7675
7755
  </div>
7676
- <kendo-gantt-toolbar
7677
- *ngIf="showToolbar('bottom')"
7756
+ @if (showToolbar('bottom')) {
7757
+ <kendo-gantt-toolbar
7678
7758
  [attr.aria-label]="toolbarAriaLabel"
7679
7759
  [showAddTask]="toolbarSettings.addTaskTool === 'bottom' || toolbarSettings.addTaskTool === 'both'"
7680
7760
  [showViewSelector]="toolbarSettings.viewSelectorTool === 'bottom' || toolbarSettings.viewSelectorTool === 'both'"
@@ -7683,27 +7763,33 @@ class GanttComponent {
7683
7763
  [activeView]="activeView"
7684
7764
  [navigable]="navigable"
7685
7765
  class="k-gantt-footer"
7686
- position="bottom"></kendo-gantt-toolbar>
7687
- <kendo-gantt-edit-dialog
7688
- *ngIf="showEditingDialog"
7766
+ position="bottom"
7767
+ (activeViewChange)="changeActiveView($event)"></kendo-gantt-toolbar>
7768
+ }
7769
+ @if (showEditingDialog) {
7770
+ <kendo-gantt-edit-dialog
7689
7771
  [data]="data">
7690
- </kendo-gantt-edit-dialog>
7691
- <kendo-dialog
7692
- *ngIf="showConfirmationDialog"
7772
+ </kendo-gantt-edit-dialog>
7773
+ }
7774
+ @if (showConfirmationDialog) {
7775
+ <kendo-dialog
7693
7776
  [width]="575"
7694
7777
  [height]="170"
7695
7778
  [title]="getText('confirmationDialogTitle')"
7696
7779
  (close)="handleConfirmationDialogClose()">
7697
7780
  <span>{{ getText('confirmationDialogContent') }}</span>
7698
7781
  <kendo-dialog-actions layout="start">
7699
- <kendo-treelist-spacer></kendo-treelist-spacer>
7700
- <button kendoButton [primary]="true" (click)="handleDeleteConfirmation()">{{ getText('deleteButtonText') }}</button>
7701
- <button kendoButton (click)="handleConfirmationDialogClose()">{{ getText('cancelButtonText') }}</button>
7782
+ <kendo-treelist-spacer></kendo-treelist-spacer>
7783
+ <button kendoButton [primary]="true" (click)="handleDeleteConfirmation()">{{ getText('deleteButtonText') }}</button>
7784
+ <button kendoButton (click)="handleConfirmationDialogClose()">{{ getText('cancelButtonText') }}</button>
7702
7785
  </kendo-dialog-actions>
7703
- </kendo-dialog>
7786
+ </kendo-dialog>
7787
+ }
7704
7788
 
7705
- <div kendoWatermarkOverlay *ngIf="showLicenseWatermark" [licenseMessage]="licenseMessage"></div>
7706
- `, isInline: true, dependencies: [{ kind: "directive", type: LocalizedMessagesDirective, selector: "[kendoGanttLocalizedMessages]" }, { kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: ToolbarComponent, selector: "kendo-gantt-toolbar", inputs: ["showAddTask", "showViewSelector", "views", "activeView", "toolbarTemplate", "navigable", "position"], outputs: ["activeViewChange"] }, { kind: "component", type: SplitterComponent, selector: "kendo-splitter", inputs: ["orientation", "splitbarWidth", "resizeStep", "splitterBarClass"], outputs: ["layoutChange"], exportAs: ["kendoSplitter"] }, { kind: "component", type: SplitterPaneComponent, selector: "kendo-splitter-pane", inputs: ["order", "size", "splitterBarAttributes", "splitterBarClass", "min", "max", "resizable", "collapsible", "scrollable", "collapsed", "orientation", "containsSplitter", "overlayContent"], outputs: ["sizeChange", "collapsedChange"], exportAs: ["kendoSplitterPane"] }, { kind: "component", type: TreeListComponent, selector: "kendo-treelist", inputs: ["aria-label", "data", "pageSize", "height", "rowHeight", "skip", "scrollable", "sort", "trackBy", "filter", "virtualColumns", "filterable", "sortable", "pageable", "navigable", "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"] }, { kind: "directive", type: EventsOutsideAngularDirective, selector: "[kendoEventsOutsideAngular]", inputs: ["kendoEventsOutsideAngular", "scope"] }, { kind: "component", type: CustomMessagesComponent$2, selector: "kendo-treelist-messages" }, { kind: "component", type: GanttTimelineComponent, selector: "kendo-gantt-timeline", inputs: ["rows", "slots", "groupSlots", "tableWidth", "activeView", "taskContentTemplate", "taskTemplate", "summaryTaskTemplate", "taskClass", "renderDependencyDragClues", "dragScrollSettings", "currentTimeMarker", "customTooltipTemplate", "tooltipOptions", "selectable", "isTaskSelected", "isExpanded", "dependencies"], outputs: ["timelineContainerPress", "timelineContainerDrag", "timelineContainerRelease"] }, { kind: "component", type: EditDialogComponent, selector: "kendo-gantt-edit-dialog", inputs: ["data"] }, { kind: "component", type: DialogComponent, selector: "kendo-dialog", inputs: ["actions", "actionsLayout", "autoFocusedElement", "title", "width", "minWidth", "maxWidth", "height", "minHeight", "maxHeight", "animation", "themeColor"], outputs: ["action", "close"], exportAs: ["kendoDialog"] }, { kind: "component", type: DialogActionsComponent, selector: "kendo-dialog-actions", inputs: ["actions", "layout"], outputs: ["action"] }, { kind: "component", type: TreeListSpacerComponent, selector: "kendo-treelist-spacer", inputs: ["width"] }, { kind: "component", type: ButtonComponent, selector: "button[kendoButton]", inputs: ["arrowIcon", "toggleable", "togglable", "selected", "tabIndex", "imageUrl", "iconClass", "icon", "disabled", "size", "rounded", "fillMode", "themeColor", "svgIcon", "primary", "look"], outputs: ["selectedChange", "click"], exportAs: ["kendoButton"] }, { kind: "component", type: WatermarkOverlayComponent, selector: "div[kendoWatermarkOverlay]", inputs: ["licenseMessage"] }] });
7789
+ @if (showLicenseWatermark) {
7790
+ <div kendoWatermarkOverlay [licenseMessage]="licenseMessage"></div>
7791
+ }
7792
+ `, isInline: true, dependencies: [{ kind: "directive", type: LocalizedMessagesDirective, selector: "[kendoGanttLocalizedMessages]" }, { kind: "component", type: ToolbarComponent, selector: "kendo-gantt-toolbar", inputs: ["showAddTask", "showViewSelector", "views", "activeView", "toolbarTemplate", "navigable", "position"], outputs: ["activeViewChange"] }, { kind: "component", type: SplitterComponent, selector: "kendo-splitter", inputs: ["orientation", "splitbarWidth", "resizeStep", "splitterBarClass"], outputs: ["layoutChange"], exportAs: ["kendoSplitter"] }, { kind: "component", type: SplitterPaneComponent, selector: "kendo-splitter-pane", inputs: ["order", "size", "splitterBarAttributes", "splitterBarClass", "min", "max", "resizable", "collapsible", "scrollable", "collapsed", "orientation", "containsSplitter", "overlayContent"], outputs: ["sizeChange", "collapsedChange"], exportAs: ["kendoSplitterPane"] }, { kind: "component", type: TreeListComponent, selector: "kendo-treelist", inputs: ["aria-label", "data", "pageSize", "height", "rowHeight", "skip", "scrollable", "sort", "trackBy", "filter", "virtualColumns", "filterable", "sortable", "pageable", "navigable", "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"] }, { kind: "directive", type: EventsOutsideAngularDirective, selector: "[kendoEventsOutsideAngular]", inputs: ["kendoEventsOutsideAngular", "scope"] }, { kind: "component", type: CustomMessagesComponent$2, selector: "kendo-treelist-messages" }, { kind: "component", type: GanttTimelineComponent, selector: "kendo-gantt-timeline", inputs: ["rows", "slots", "groupSlots", "tableWidth", "activeView", "taskContentTemplate", "taskTemplate", "summaryTaskTemplate", "taskClass", "renderDependencyDragClues", "dragScrollSettings", "currentTimeMarker", "customTooltipTemplate", "tooltipOptions", "selectable", "isTaskSelected", "isExpanded", "dependencies"], outputs: ["timelineContainerPress", "timelineContainerDrag", "timelineContainerRelease"] }, { kind: "component", type: EditDialogComponent, selector: "kendo-gantt-edit-dialog", inputs: ["data"] }, { kind: "component", type: DialogComponent, selector: "kendo-dialog", inputs: ["actions", "actionsLayout", "autoFocusedElement", "title", "width", "minWidth", "maxWidth", "height", "minHeight", "maxHeight", "animation", "themeColor"], outputs: ["action", "close"], exportAs: ["kendoDialog"] }, { kind: "component", type: DialogActionsComponent, selector: "kendo-dialog-actions", inputs: ["actions", "layout"], outputs: ["action"] }, { kind: "component", type: TreeListSpacerComponent, selector: "kendo-treelist-spacer", inputs: ["width"] }, { kind: "component", type: ButtonComponent, selector: "button[kendoButton]", inputs: ["arrowIcon", "toggleable", "togglable", "selected", "tabIndex", "imageUrl", "iconClass", "icon", "disabled", "size", "rounded", "fillMode", "themeColor", "svgIcon", "primary", "look"], outputs: ["selectedChange", "click"], exportAs: ["kendoButton"] }, { kind: "component", type: WatermarkOverlayComponent, selector: "div[kendoWatermarkOverlay]", inputs: ["licenseMessage"] }] });
7707
7793
  }
7708
7794
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: GanttComponent, decorators: [{
7709
7795
  type: Component,
@@ -7741,211 +7827,211 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
7741
7827
  ],
7742
7828
  template: `
7743
7829
  <ng-container kendoGanttLocalizedMessages
7744
- i18n-taskEditingGeneralTabTitle="kendo.gantt.taskEditingGeneralTabTitle|The title of the 'General' tab of the editing dialog TabStrip"
7745
- taskEditingGeneralTabTitle="General"
7830
+ i18n-taskEditingGeneralTabTitle="kendo.gantt.taskEditingGeneralTabTitle|The title of the 'General' tab of the editing dialog TabStrip"
7831
+ taskEditingGeneralTabTitle="General"
7746
7832
 
7747
- i18n-taskEditingPredecessorsTabTitle="kendo.gantt.taskEditingPredecessorsTabTitle|The title of the 'Predecessors' dependencies tab of the editing dialog TabStrip"
7748
- taskEditingPredecessorsTabTitle="Predecessors"
7833
+ i18n-taskEditingPredecessorsTabTitle="kendo.gantt.taskEditingPredecessorsTabTitle|The title of the 'Predecessors' dependencies tab of the editing dialog TabStrip"
7834
+ taskEditingPredecessorsTabTitle="Predecessors"
7749
7835
 
7750
- i18n-taskEditingSuccessorsTabTitle="kendo.gantt.taskEditingSuccessorsTabTitle|The title of the 'Successors' dependencies tab of the editing dialog TabStrip"
7751
- taskEditingSuccessorsTabTitle="Successors"
7836
+ i18n-taskEditingSuccessorsTabTitle="kendo.gantt.taskEditingSuccessorsTabTitle|The title of the 'Successors' dependencies tab of the editing dialog TabStrip"
7837
+ taskEditingSuccessorsTabTitle="Successors"
7752
7838
 
7753
- i18n-taskEditingDependenciesAddButtonText="kendo.gantt.taskEditingDependenciesAddButtonText|The text of the 'Add' button in the dependencies tabs of the editing dialog TabStrip"
7754
- taskEditingDependenciesAddButtonText="Add"
7839
+ i18n-taskEditingDependenciesAddButtonText="kendo.gantt.taskEditingDependenciesAddButtonText|The text of the 'Add' button in the dependencies tabs of the editing dialog TabStrip"
7840
+ taskEditingDependenciesAddButtonText="Add"
7755
7841
 
7756
- i18n-taskEditingDependenciesRemoveButtonText="kendo.gantt.taskEditingDependenciesRemoveButtonText|The text of the 'Remove' button in the dependencies tabs of the editing dialog TabStrip"
7757
- taskEditingDependenciesRemoveButtonText="Remove"
7842
+ i18n-taskEditingDependenciesRemoveButtonText="kendo.gantt.taskEditingDependenciesRemoveButtonText|The text of the 'Remove' button in the dependencies tabs of the editing dialog TabStrip"
7843
+ taskEditingDependenciesRemoveButtonText="Remove"
7758
7844
 
7759
- i18n-taskEditingDependenciesGridNameColumnTitle="kendo.gantt.taskEditingDependenciesGridNameColumnTitle|The title of the 'Task Title' Grid column in the dependencies tabs of the editing dialog TabStrip"
7760
- taskEditingDependenciesGridNameColumnTitle="Task Title"
7845
+ i18n-taskEditingDependenciesGridNameColumnTitle="kendo.gantt.taskEditingDependenciesGridNameColumnTitle|The title of the 'Task Title' Grid column in the dependencies tabs of the editing dialog TabStrip"
7846
+ taskEditingDependenciesGridNameColumnTitle="Task Title"
7761
7847
 
7762
- i18n-taskEditingDependenciesGridTypeColumnTitle="kendo.gantt.taskEditingDependenciesGridTypeColumnTitle|The title of the 'Type' Grid column in the dependencies tabs of the editing dialog TabStrip"
7763
- taskEditingDependenciesGridTypeColumnTitle="Type"
7848
+ i18n-taskEditingDependenciesGridTypeColumnTitle="kendo.gantt.taskEditingDependenciesGridTypeColumnTitle|The title of the 'Type' Grid column in the dependencies tabs of the editing dialog TabStrip"
7849
+ taskEditingDependenciesGridTypeColumnTitle="Type"
7764
7850
 
7765
- i18n-taskDeleteLabel="kendo.gantt.taskDeleteLabel|The label of the task delete icon"
7766
- taskDeleteLabel="Delete"
7851
+ i18n-taskDeleteLabel="kendo.gantt.taskDeleteLabel|The label of the task delete icon"
7852
+ taskDeleteLabel="Delete"
7767
7853
 
7768
- i18n-taskEditingDialogTitle="kendo.gantt.taskEditingDialogTitle|The title of the task editing dialog"
7769
- taskEditingDialogTitle="Editing Task"
7854
+ i18n-taskEditingDialogTitle="kendo.gantt.taskEditingDialogTitle|The title of the task editing dialog"
7855
+ taskEditingDialogTitle="Editing Task"
7770
7856
 
7771
- i18n-taskEditingDialogCloseTitle="kendo.gantt.taskEditingDialogCloseTitle|The title of the task editing dialog close button"
7772
- taskEditingDialogCloseTitle="Close"
7857
+ i18n-taskEditingDialogCloseTitle="kendo.gantt.taskEditingDialogCloseTitle|The title of the task editing dialog close button"
7858
+ taskEditingDialogCloseTitle="Close"
7773
7859
 
7774
- i18n-confirmationDialogCloseTitle="kendo.gantt.confirmationDialogCloseTitle|The title of the confirmation dialog close button"
7775
- confirmationDialogCloseTitle="Close"
7860
+ i18n-confirmationDialogCloseTitle="kendo.gantt.confirmationDialogCloseTitle|The title of the confirmation dialog close button"
7861
+ confirmationDialogCloseTitle="Close"
7776
7862
 
7777
- i18n-confirmationDialogTitle="kendo.gantt.confirmationDialogTitle|The title of the delete task confirmation dialog"
7778
- confirmationDialogTitle="Delete Task"
7863
+ i18n-confirmationDialogTitle="kendo.gantt.confirmationDialogTitle|The title of the delete task confirmation dialog"
7864
+ confirmationDialogTitle="Delete Task"
7779
7865
 
7780
- i18n-confirmationDialogContent="kendo.gantt.confirmationDialogContent|The content of the delete task confirmation dialog"
7781
- confirmationDialogContent="Are you sure you want to delete this task?"
7866
+ i18n-confirmationDialogContent="kendo.gantt.confirmationDialogContent|The content of the delete task confirmation dialog"
7867
+ confirmationDialogContent="Are you sure you want to delete this task?"
7782
7868
 
7783
- i18n-deleteButtonText="kendo.gantt.deleteButtonText|The text of the task editing dialog 'Delete' button"
7784
- deleteButtonText="Delete"
7869
+ i18n-deleteButtonText="kendo.gantt.deleteButtonText|The text of the task editing dialog 'Delete' button"
7870
+ deleteButtonText="Delete"
7785
7871
 
7786
- i18n-cancelButtonText="kendo.gantt.cancelButtonText|The text of the task editing dialog 'Cancel' button"
7787
- cancelButtonText="Cancel"
7872
+ i18n-cancelButtonText="kendo.gantt.cancelButtonText|The text of the task editing dialog 'Cancel' button"
7873
+ cancelButtonText="Cancel"
7788
7874
 
7789
- i18n-saveButtonText="kendo.gantt.saveButtonText|The text of the task editing dialog 'Save' button"
7790
- saveButtonText="Save"
7875
+ i18n-saveButtonText="kendo.gantt.saveButtonText|The text of the task editing dialog 'Save' button"
7876
+ saveButtonText="Save"
7791
7877
 
7792
- i18n-titleFieldInputLabel="kendo.gantt.titleFieldInputLabel|The label of the 'title' field input in editing mode"
7793
- titleFieldInputLabel="Title"
7878
+ i18n-titleFieldInputLabel="kendo.gantt.titleFieldInputLabel|The label of the 'title' field input in editing mode"
7879
+ titleFieldInputLabel="Title"
7794
7880
 
7795
- i18n-startFieldInputLabel="kendo.gantt.startFieldInputLabel|The label of the 'start' field input in editing mode"
7796
- startFieldInputLabel="Start"
7881
+ i18n-startFieldInputLabel="kendo.gantt.startFieldInputLabel|The label of the 'start' field input in editing mode"
7882
+ startFieldInputLabel="Start"
7797
7883
 
7798
- i18n-endFieldInputLabel="kendo.gantt.endFieldInputLabel|The label of the 'end' field input in editing mode"
7799
- endFieldInputLabel="End"
7884
+ i18n-endFieldInputLabel="kendo.gantt.endFieldInputLabel|The label of the 'end' field input in editing mode"
7885
+ endFieldInputLabel="End"
7800
7886
 
7801
- i18n-completionRatioFieldInputLabel="kendo.gantt.completionRatioFieldInputLabel|The label of the 'completionRatio' field input in editing mode"
7802
- completionRatioFieldInputLabel="Progress"
7887
+ i18n-completionRatioFieldInputLabel="kendo.gantt.completionRatioFieldInputLabel|The label of the 'completionRatio' field input in editing mode"
7888
+ completionRatioFieldInputLabel="Progress"
7803
7889
 
7804
- i18n-dayViewText="kendo.gantt.dayViewText|The text of the day view in the ViewSelector component"
7805
- dayViewText="Day"
7890
+ i18n-dayViewText="kendo.gantt.dayViewText|The text of the day view in the ViewSelector component"
7891
+ dayViewText="Day"
7806
7892
 
7807
- i18n-weekViewText="kendo.gantt.weekViewText|The text of the week view in the ViewSelector component"
7808
- weekViewText="Week"
7893
+ i18n-weekViewText="kendo.gantt.weekViewText|The text of the week view in the ViewSelector component"
7894
+ weekViewText="Week"
7809
7895
 
7810
- i18n-monthViewText="kendo.gantt.monthViewText|The text of the month view in the ViewSelector component"
7811
- monthViewText="Month"
7896
+ i18n-monthViewText="kendo.gantt.monthViewText|The text of the month view in the ViewSelector component"
7897
+ monthViewText="Month"
7812
7898
 
7813
- i18n-yearViewText-disabled="kendo.gantt.yearViewText|The text of the year view in the ViewSelector component"
7814
- yearViewText="Year"
7899
+ i18n-yearViewText-disabled="kendo.gantt.yearViewText|The text of the year view in the ViewSelector component"
7900
+ yearViewText="Year"
7815
7901
 
7816
- i18n-addTaskText="kendo.gantt.addTaskText|The text of the DropDownButton in the AddTask component"
7817
- addTaskText="Add Task"
7902
+ i18n-addTaskText="kendo.gantt.addTaskText|The text of the DropDownButton in the AddTask component"
7903
+ addTaskText="Add Task"
7818
7904
 
7819
- i18n-addChildText="kendo.gantt.addChildText|The text of the 'Add Child' option in the AddTask component"
7820
- addChildText="Add Child"
7905
+ i18n-addChildText="kendo.gantt.addChildText|The text of the 'Add Child' option in the AddTask component"
7906
+ addChildText="Add Child"
7821
7907
 
7822
- i18n-addAboveText="kendo.gantt.addAboveText|The text of the 'Add Above' option in the AddTask component"
7823
- addAboveText="Add Above"
7908
+ i18n-addAboveText="kendo.gantt.addAboveText|The text of the 'Add Above' option in the AddTask component"
7909
+ addAboveText="Add Above"
7824
7910
 
7825
- i18n-addBelowText="kendo.gantt.addBelowText|The text of the 'Add Below' option in the AddTask component"
7826
- addBelowText="Add Below"
7911
+ i18n-addBelowText="kendo.gantt.addBelowText|The text of the 'Add Below' option in the AddTask component"
7912
+ addBelowText="Add Below"
7827
7913
 
7828
- i18n-noRecords="kendo.gantt.noRecords|The label visible in the TreeList when there are no records"
7829
- noRecords="No records available."
7914
+ i18n-noRecords="kendo.gantt.noRecords|The label visible in the TreeList when there are no records"
7915
+ noRecords="No records available."
7830
7916
 
7831
- i18n-filter="kendo.gantt.filter|The label of the filter cell or icon"
7832
- filter="Filter"
7917
+ i18n-filter="kendo.gantt.filter|The label of the filter cell or icon"
7918
+ filter="Filter"
7833
7919
 
7834
- i18n-filterEqOperator="kendo.gantt.filterEqOperator|The text of the equal filter operator"
7835
- filterEqOperator="Is equal to"
7920
+ i18n-filterEqOperator="kendo.gantt.filterEqOperator|The text of the equal filter operator"
7921
+ filterEqOperator="Is equal to"
7836
7922
 
7837
- i18n-filterNotEqOperator="kendo.gantt.filterNotEqOperator|The text of the not equal filter operator"
7838
- filterNotEqOperator="Is not equal to"
7923
+ i18n-filterNotEqOperator="kendo.gantt.filterNotEqOperator|The text of the not equal filter operator"
7924
+ filterNotEqOperator="Is not equal to"
7839
7925
 
7840
- i18n-filterIsNullOperator="kendo.gantt.filterIsNullOperator|The text of the is null filter operator"
7841
- filterIsNullOperator="Is null"
7926
+ i18n-filterIsNullOperator="kendo.gantt.filterIsNullOperator|The text of the is null filter operator"
7927
+ filterIsNullOperator="Is null"
7842
7928
 
7843
- i18n-filterIsNotNullOperator="kendo.gantt.filterIsNotNullOperator|The text of the is not null filter operator"
7844
- filterIsNotNullOperator="Is not null"
7929
+ i18n-filterIsNotNullOperator="kendo.gantt.filterIsNotNullOperator|The text of the is not null filter operator"
7930
+ filterIsNotNullOperator="Is not null"
7845
7931
 
7846
- i18n-filterIsEmptyOperator="kendo.gantt.filterIsEmptyOperator|The text of the is empty filter operator"
7847
- filterIsEmptyOperator="Is empty"
7932
+ i18n-filterIsEmptyOperator="kendo.gantt.filterIsEmptyOperator|The text of the is empty filter operator"
7933
+ filterIsEmptyOperator="Is empty"
7848
7934
 
7849
- i18n-filterIsNotEmptyOperator="kendo.gantt.filterIsNotEmptyOperator|The text of the is not empty filter operator"
7850
- filterIsNotEmptyOperator="Is not empty"
7935
+ i18n-filterIsNotEmptyOperator="kendo.gantt.filterIsNotEmptyOperator|The text of the is not empty filter operator"
7936
+ filterIsNotEmptyOperator="Is not empty"
7851
7937
 
7852
- i18n-filterStartsWithOperator="kendo.gantt.filterStartsWithOperator|The text of the starts with filter operator"
7853
- filterStartsWithOperator="Starts with"
7938
+ i18n-filterStartsWithOperator="kendo.gantt.filterStartsWithOperator|The text of the starts with filter operator"
7939
+ filterStartsWithOperator="Starts with"
7854
7940
 
7855
- i18n-filterContainsOperator="kendo.gantt.filterContainsOperator|The text of the contains filter operator"
7856
- filterContainsOperator="Contains"
7941
+ i18n-filterContainsOperator="kendo.gantt.filterContainsOperator|The text of the contains filter operator"
7942
+ filterContainsOperator="Contains"
7857
7943
 
7858
- i18n-filterNotContainsOperator="kendo.gantt.filterNotContainsOperator|The text of the does not contain filter operator"
7859
- filterNotContainsOperator="Does not contain"
7944
+ i18n-filterNotContainsOperator="kendo.gantt.filterNotContainsOperator|The text of the does not contain filter operator"
7945
+ filterNotContainsOperator="Does not contain"
7860
7946
 
7861
- i18n-filterEndsWithOperator="kendo.gantt.filterEndsWithOperator|The text of the ends with filter operator"
7862
- filterEndsWithOperator="Ends with"
7947
+ i18n-filterEndsWithOperator="kendo.gantt.filterEndsWithOperator|The text of the ends with filter operator"
7948
+ filterEndsWithOperator="Ends with"
7863
7949
 
7864
- i18n-filterGteOperator="kendo.gantt.filterGteOperator|The text of the greater than or equal filter operator"
7865
- filterGteOperator="Is greater than or equal to"
7950
+ i18n-filterGteOperator="kendo.gantt.filterGteOperator|The text of the greater than or equal filter operator"
7951
+ filterGteOperator="Is greater than or equal to"
7866
7952
 
7867
- i18n-filterGtOperator="kendo.gantt.filterGtOperator|The text of the greater than filter operator"
7868
- filterGtOperator="Is greater than"
7953
+ i18n-filterGtOperator="kendo.gantt.filterGtOperator|The text of the greater than filter operator"
7954
+ filterGtOperator="Is greater than"
7869
7955
 
7870
- i18n-filterLteOperator="kendo.gantt.filterLteOperator|The text of the less than or equal filter operator"
7871
- filterLteOperator="Is less than or equal to"
7956
+ i18n-filterLteOperator="kendo.gantt.filterLteOperator|The text of the less than or equal filter operator"
7957
+ filterLteOperator="Is less than or equal to"
7872
7958
 
7873
- i18n-filterLtOperator="kendo.gantt.filterLtOperator|The text of the less than filter operator"
7874
- filterLtOperator="Is less than"
7959
+ i18n-filterLtOperator="kendo.gantt.filterLtOperator|The text of the less than filter operator"
7960
+ filterLtOperator="Is less than"
7875
7961
 
7876
- i18n-filterIsTrue="kendo.gantt.filterIsTrue|The text of the IsTrue boolean filter option"
7877
- filterIsTrue="Is True"
7962
+ i18n-filterIsTrue="kendo.gantt.filterIsTrue|The text of the IsTrue boolean filter option"
7963
+ filterIsTrue="Is True"
7878
7964
 
7879
- i18n-filterIsFalse="kendo.gantt.filterIsFalse|The text of the IsFalse boolean filter option"
7880
- filterIsFalse="Is False"
7965
+ i18n-filterIsFalse="kendo.gantt.filterIsFalse|The text of the IsFalse boolean filter option"
7966
+ filterIsFalse="Is False"
7881
7967
 
7882
- i18n-filterBooleanAll="kendo.gantt.filterBooleanAll|The text of the (All) boolean filter option"
7883
- filterBooleanAll="(All)"
7968
+ i18n-filterBooleanAll="kendo.gantt.filterBooleanAll|The text of the (All) boolean filter option"
7969
+ filterBooleanAll="(All)"
7884
7970
 
7885
- i18n-filterAfterOrEqualOperator="kendo.gantt.filterAfterOrEqualOperator|The text of the after or equal date filter operator"
7886
- filterAfterOrEqualOperator="Is after or equal to"
7971
+ i18n-filterAfterOrEqualOperator="kendo.gantt.filterAfterOrEqualOperator|The text of the after or equal date filter operator"
7972
+ filterAfterOrEqualOperator="Is after or equal to"
7887
7973
 
7888
- i18n-filterAfterOperator="kendo.gantt.filterAfterOperator|The text of the after date filter operator"
7889
- filterAfterOperator="Is after"
7974
+ i18n-filterAfterOperator="kendo.gantt.filterAfterOperator|The text of the after date filter operator"
7975
+ filterAfterOperator="Is after"
7890
7976
 
7891
- i18n-filterBeforeOperator="kendo.gantt.filterBeforeOperator|The text of the before date filter operator"
7892
- filterBeforeOperator="Is before"
7977
+ i18n-filterBeforeOperator="kendo.gantt.filterBeforeOperator|The text of the before date filter operator"
7978
+ filterBeforeOperator="Is before"
7893
7979
 
7894
- i18n-filterBeforeOrEqualOperator="kendo.gantt.filterBeforeOrEqualOperator|The text of the before or equal date filter operator"
7895
- filterBeforeOrEqualOperator="Is before or equal to"
7980
+ i18n-filterBeforeOrEqualOperator="kendo.gantt.filterBeforeOrEqualOperator|The text of the before or equal date filter operator"
7981
+ filterBeforeOrEqualOperator="Is before or equal to"
7896
7982
 
7897
- i18n-filterFilterButton="kendo.gantt.filterFilterButton|The text of the filter button"
7898
- filterFilterButton="Filter"
7983
+ i18n-filterFilterButton="kendo.gantt.filterFilterButton|The text of the filter button"
7984
+ filterFilterButton="Filter"
7899
7985
 
7900
- i18n-filterClearButton="kendo.gantt.filterClearButton|The text of the clear filter button"
7901
- filterClearButton="Clear"
7986
+ i18n-filterClearButton="kendo.gantt.filterClearButton|The text of the clear filter button"
7987
+ filterClearButton="Clear"
7902
7988
 
7903
- i18n-filterAndLogic="kendo.gantt.filterAndLogic|The text of the And filter logic"
7904
- filterAndLogic="And"
7989
+ i18n-filterAndLogic="kendo.gantt.filterAndLogic|The text of the And filter logic"
7990
+ filterAndLogic="And"
7905
7991
 
7906
- i18n-filterOrLogic="kendo.gantt.filterOrLogic|The text of the Or filter logic"
7907
- filterOrLogic="Or"
7992
+ i18n-filterOrLogic="kendo.gantt.filterOrLogic|The text of the Or filter logic"
7993
+ filterOrLogic="Or"
7908
7994
 
7909
- i18n-loading="kendo.gantt.loading|The loading text"
7910
- loading="Loading"
7995
+ i18n-loading="kendo.gantt.loading|The loading text"
7996
+ loading="Loading"
7911
7997
 
7912
- i18n-columnMenu="kendo.gantt.columnMenu|The title of the column menu icon"
7913
- columnMenu="Column Menu"
7998
+ i18n-columnMenu="kendo.gantt.columnMenu|The title of the column menu icon"
7999
+ columnMenu="Column Menu"
7914
8000
 
7915
- i18n-columns="kendo.gantt.columns|The text shown in the column menu for the columns item"
7916
- columns="Columns"
8001
+ i18n-columns="kendo.gantt.columns|The text shown in the column menu for the columns item"
8002
+ columns="Columns"
7917
8003
 
7918
- i18n-lock-disabled="kendo.gantt.lock|The text shown in the column menu for the lock item"
7919
- lock-disabled="Lock"
8004
+ i18n-lock-disabled="kendo.gantt.lock|The text shown in the column menu for the lock item"
8005
+ lock-disabled="Lock"
7920
8006
 
7921
- i18n-unlock-disabled="kendo.gantt.unlock|The text shown in the column menu for the unlock item"
7922
- unlock-disabled="Unlock"
8007
+ i18n-unlock-disabled="kendo.gantt.unlock|The text shown in the column menu for the unlock item"
8008
+ unlock-disabled="Unlock"
7923
8009
 
7924
- i18n-sortable="kendo.gantt.sortable|The label of the sort icon"
7925
- sortable="Sortable"
8010
+ i18n-sortable="kendo.gantt.sortable|The label of the sort icon"
8011
+ sortable="Sortable"
7926
8012
 
7927
- i18n-sortAscending="kendo.gantt.sortAscending|The text shown in the column menu for the sort ascending item"
7928
- sortAscending="Sort Ascending"
8013
+ i18n-sortAscending="kendo.gantt.sortAscending|The text shown in the column menu for the sort ascending item"
8014
+ sortAscending="Sort Ascending"
7929
8015
 
7930
- i18n-sortDescending="kendo.gantt.sortDescending|The text shown in the column menu for the sort descending item"
7931
- sortDescending="Sort Descending"
8016
+ i18n-sortDescending="kendo.gantt.sortDescending|The text shown in the column menu for the sort descending item"
8017
+ sortDescending="Sort Descending"
7932
8018
 
7933
- i18n-sortedDefault="kendo.gantt.sortedDefault|The status announcement when a column is no longer sorted"
7934
- sortedDefault="Not Sorted"
8019
+ i18n-sortedDefault="kendo.gantt.sortedDefault|The status announcement when a column is no longer sorted"
8020
+ sortedDefault="Not Sorted"
7935
8021
 
7936
- i18n-columnsApply="kendo.gantt.columnsApply|The text shown in the column menu or column chooser for the columns apply button"
7937
- columnsApply="Apply"
8022
+ i18n-columnsApply="kendo.gantt.columnsApply|The text shown in the column menu or column chooser for the columns apply button"
8023
+ columnsApply="Apply"
7938
8024
 
7939
- i18n-columnsReset="kendo.gantt.columnsReset|The text shown in the column menu or column chooser for the columns reset button"
7940
- columnsReset="Reset"
8025
+ i18n-columnsReset="kendo.gantt.columnsReset|The text shown in the column menu or column chooser for the columns reset button"
8026
+ columnsReset="Reset"
7941
8027
 
7942
- i18n-tooltipStartDateText="kendo.gantt.tooltipStartDateText|The text shown in the task tooltip before the task start date"
7943
- tooltipStartDateText="Start"
8028
+ i18n-tooltipStartDateText="kendo.gantt.tooltipStartDateText|The text shown in the task tooltip before the task start date"
8029
+ tooltipStartDateText="Start"
7944
8030
 
7945
- i18n-tooltipEndDateText="kendo.gantt.tooltipEndDateText|The text shown in the task tooltip before the task end date"
7946
- tooltipEndDateText="End"></ng-container>
7947
- <kendo-gantt-toolbar
7948
- *ngIf="showToolbar('top')"
8031
+ i18n-tooltipEndDateText="kendo.gantt.tooltipEndDateText|The text shown in the task tooltip before the task end date"
8032
+ tooltipEndDateText="End"></ng-container>
8033
+ @if (showToolbar('top')) {
8034
+ <kendo-gantt-toolbar
7949
8035
  [attr.aria-label]="toolbarAriaLabel"
7950
8036
  [showAddTask]="toolbarSettings.addTaskTool === 'top' || toolbarSettings.addTaskTool === 'both'"
7951
8037
  [showViewSelector]="toolbarSettings.viewSelectorTool === 'top' || toolbarSettings.viewSelectorTool === 'both'"
@@ -7955,142 +8041,144 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
7955
8041
  class="k-gantt-header"
7956
8042
  position="top"
7957
8043
  [navigable]="navigable"
7958
- (activeViewChange)="changeActiveView($event)"></kendo-gantt-toolbar>
8044
+ (activeViewChange)="changeActiveView($event)"></kendo-gantt-toolbar>
8045
+ }
7959
8046
  <div class="k-gantt-content">
7960
- <kendo-splitter [style.border]="0">
7961
- <kendo-splitter-pane
7962
- class="k-gantt-treelist k-gantt-treelist-scrollable"
7963
- [collapsible]="treeListPaneOptions?.collapsible"
7964
- [collapsed]="treeListPaneOptions?.collapsed"
7965
- (collapsedChange)="onTreeListCollapsedChange($event)"
7966
- [scrollable]="false">
7967
- <kendo-treelist
7968
- [idField]="taskIdField"
7969
- [columns]="columns"
7970
- [data]="data"
7971
- [hasChildren]="hasChildren"
7972
- [fetchChildren]="fetchChildren"
7973
- [navigable]="navigable"
7974
- [isExpanded]="isExpanded"
7975
- [autoSize]="columnsAutoSize"
7976
- [columnMenu]="columnMenu"
7977
- [reorderable]="columnsReorderable"
7978
- [resizable]="columnsResizable"
7979
- [rowClass]="rowClass"
7980
- [isSelected]="isSelected"
7981
- [selectable]="selectable"
7982
- [sortable]="sortable"
7983
- [sort]="sort"
7984
- [filterable]="filterMenu"
7985
- [filter]="filter"
7986
- (filterChange)="filterChange.emit($event)"
7987
- (sortChange)="sortChange.emit($event)"
8047
+ <kendo-splitter [style.border]="0">
8048
+ <kendo-splitter-pane
8049
+ class="k-gantt-treelist k-gantt-treelist-scrollable"
8050
+ [collapsible]="treeListPaneOptions?.collapsible"
8051
+ [collapsed]="treeListPaneOptions?.collapsed"
8052
+ (collapsedChange)="onTreeListCollapsedChange($event)"
8053
+ [scrollable]="false">
8054
+ <kendo-treelist
8055
+ [idField]="taskIdField"
8056
+ [columns]="columns"
8057
+ [data]="data"
8058
+ [hasChildren]="hasChildren"
8059
+ [fetchChildren]="fetchChildren"
8060
+ [navigable]="navigable"
8061
+ [isExpanded]="isExpanded"
8062
+ [autoSize]="columnsAutoSize"
8063
+ [columnMenu]="columnMenu"
8064
+ [reorderable]="columnsReorderable"
8065
+ [resizable]="columnsResizable"
8066
+ [rowClass]="rowClass"
8067
+ [isSelected]="isSelected"
8068
+ [selectable]="selectable"
8069
+ [sortable]="sortable"
8070
+ [sort]="sort"
8071
+ [filterable]="filterMenu"
8072
+ [filter]="filter"
8073
+ (filterChange)="filterChange.emit($event)"
8074
+ (sortChange)="sortChange.emit($event)"
7988
8075
  (dataStateChange)="dataStateChange.emit({
7989
8076
  filter: $event.filter,
7990
8077
  sort: $event.sort
7991
8078
  })"
7992
- (expandStateChange)="expandStateChange.emit($event)"
7993
- (expand)="rowExpand.emit({ dataItem: $event.dataItem })"
7994
- (collapse)="rowCollapse.emit({ dataItem: $event.dataItem })"
7995
- (columnReorder)="columnReorder.emit($event)"
7996
- (columnResize)="columnResize.emit($event)"
7997
- (columnVisibilityChange)="handleColumnVisibilityChange($event)"
7998
- (columnLockedChange)="columnLockedChange.emit($event)"
7999
- (selectionChange)="handleTreeListSelectionChange($event)"
8000
- (cellClick)="handleTreeListCellClick($event)"
8001
- (cellClose)="handleCellClose($event)"
8079
+ (expandStateChange)="expandStateChange.emit($event)"
8080
+ (expand)="rowExpand.emit({ dataItem: $event.dataItem })"
8081
+ (collapse)="rowCollapse.emit({ dataItem: $event.dataItem })"
8082
+ (columnReorder)="columnReorder.emit($event)"
8083
+ (columnResize)="columnResize.emit($event)"
8084
+ (columnVisibilityChange)="handleColumnVisibilityChange($event)"
8085
+ (columnLockedChange)="columnLockedChange.emit($event)"
8086
+ (selectionChange)="handleTreeListSelectionChange($event)"
8087
+ (cellClick)="handleTreeListCellClick($event)"
8088
+ (cellClose)="handleCellClose($event)"
8002
8089
  [kendoEventsOutsideAngular]="{
8003
8090
  dblclick: handleTreeListDoubleClick
8004
8091
  }"
8005
- [scope]="this"
8006
- >
8007
- <kendo-treelist-messages
8008
- [noRecords]="getText('noRecords')"
8009
- [filter]="getText('filter')"
8010
- [filterEqOperator]="getText('filterEqOperator')"
8011
- [filterNotEqOperator]="getText('filterNotEqOperator')"
8012
- [filterIsNullOperator]="getText('filterIsNullOperator')"
8013
- [filterIsNotNullOperator]="getText('filterIsNotNullOperator')"
8014
- [filterIsEmptyOperator]="getText('filterIsEmptyOperator')"
8015
- [filterIsNotEmptyOperator]="getText('filterIsNotEmptyOperator')"
8016
- [filterStartsWithOperator]="getText('filterStartsWithOperator')"
8017
- [filterContainsOperator]="getText('filterContainsOperator')"
8018
- [filterNotContainsOperator]="getText('filterNotContainsOperator')"
8019
- [filterEndsWithOperator]="getText('filterEndsWithOperator')"
8020
- [filterGteOperator]="getText('filterGteOperator')"
8021
- [filterGtOperator]="getText('filterGtOperator')"
8022
- [filterLteOperator]="getText('filterLteOperator')"
8023
- [filterLtOperator]="getText('filterLtOperator')"
8024
- [filterIsTrue]="getText('filterIsTrue')"
8025
- [filterIsFalse]="getText('filterIsFalse')"
8026
- [filterBooleanAll]="getText('filterBooleanAll')"
8027
- [filterAfterOrEqualOperator]="getText('filterAfterOrEqualOperator')"
8028
- [filterAfterOperator]="getText('filterAfterOperator')"
8029
- [filterBeforeOperator]="getText('filterBeforeOperator')"
8030
- [filterBeforeOrEqualOperator]="getText('filterBeforeOrEqualOperator')"
8031
- [filterFilterButton]="getText('filterFilterButton')"
8032
- [filterClearButton]="getText('filterClearButton')"
8033
- [filterAndLogic]="getText('filterAndLogic')"
8034
- [filterOrLogic]="getText('filterOrLogic')"
8035
- [loading]="getText('loading')"
8036
- [columnMenu]="getText('columnMenu')"
8037
- [columns]="getText('columns')"
8038
- [sortable]="getText('sortable')"
8039
- [sortAscending]="getText('sortAscending')"
8040
- [sortDescending]="getText('sortDescending')"
8041
- [sortedAscending]="getText('sortedAscending')"
8042
- [sortedDescending]="getText('sortedDescending')"
8043
- [sortedDefault]="getText('sortedDefault')"
8044
- [columnsApply]="getText('columnsApply')"
8045
- [columnsReset]="getText('columnsReset')"
8046
- >
8047
- </kendo-treelist-messages>
8048
- </kendo-treelist>
8049
- </kendo-splitter-pane>
8050
- <kendo-splitter-pane
8051
- [collapsible]="timelinePaneOptions?.collapsible"
8052
- [resizable]="timelinePaneOptions?.resizable"
8053
- [collapsed]="timelinePaneOptions?.collapsed"
8054
- [min]="timelinePaneOptions?.min"
8055
- [max]="timelinePaneOptions?.max"
8056
- [size]="timelinePaneOptions?.size"
8057
- (collapsedChange)="onTimelineCollapsedChange($event)"
8058
- (sizeChange)="onTimelinePaneSizeChange($event)"
8059
- [scrollable]="false"
8060
- class="k-gantt-timeline-pane">
8061
- <kendo-gantt-timeline
8062
- *ngIf="views && views.length"
8063
- [renderDependencyDragClues]="renderDependencyDragClues"
8064
- [dragScrollSettings]="dragScrollSettings"
8065
- [rows]="viewItems"
8066
- [slots]="timelineSlots"
8067
- [currentTimeMarker]="activeViewCurrentTimeMarker"
8068
- [groupSlots]="timelineGroupSlots"
8069
- [tableWidth]="tableWidth"
8070
- [activeView]="activeView"
8071
- [taskContentTemplate]="taskContentTemplate?.templateRef"
8072
- [taskTemplate]="taskTemplate?.templateRef"
8073
- [summaryTaskTemplate]="summaryTaskTemplate?.templateRef"
8074
- [taskClass]="taskClass"
8075
- [dependencies]="dependencies"
8076
- [isExpanded]="isExpanded"
8077
- [selectable]="selectable"
8078
- [isTaskSelected]="isTaskSelected"
8092
+ [scope]="this"
8093
+ >
8094
+ <kendo-treelist-messages
8095
+ [noRecords]="getText('noRecords')"
8096
+ [filter]="getText('filter')"
8097
+ [filterEqOperator]="getText('filterEqOperator')"
8098
+ [filterNotEqOperator]="getText('filterNotEqOperator')"
8099
+ [filterIsNullOperator]="getText('filterIsNullOperator')"
8100
+ [filterIsNotNullOperator]="getText('filterIsNotNullOperator')"
8101
+ [filterIsEmptyOperator]="getText('filterIsEmptyOperator')"
8102
+ [filterIsNotEmptyOperator]="getText('filterIsNotEmptyOperator')"
8103
+ [filterStartsWithOperator]="getText('filterStartsWithOperator')"
8104
+ [filterContainsOperator]="getText('filterContainsOperator')"
8105
+ [filterNotContainsOperator]="getText('filterNotContainsOperator')"
8106
+ [filterEndsWithOperator]="getText('filterEndsWithOperator')"
8107
+ [filterGteOperator]="getText('filterGteOperator')"
8108
+ [filterGtOperator]="getText('filterGtOperator')"
8109
+ [filterLteOperator]="getText('filterLteOperator')"
8110
+ [filterLtOperator]="getText('filterLtOperator')"
8111
+ [filterIsTrue]="getText('filterIsTrue')"
8112
+ [filterIsFalse]="getText('filterIsFalse')"
8113
+ [filterBooleanAll]="getText('filterBooleanAll')"
8114
+ [filterAfterOrEqualOperator]="getText('filterAfterOrEqualOperator')"
8115
+ [filterAfterOperator]="getText('filterAfterOperator')"
8116
+ [filterBeforeOperator]="getText('filterBeforeOperator')"
8117
+ [filterBeforeOrEqualOperator]="getText('filterBeforeOrEqualOperator')"
8118
+ [filterFilterButton]="getText('filterFilterButton')"
8119
+ [filterClearButton]="getText('filterClearButton')"
8120
+ [filterAndLogic]="getText('filterAndLogic')"
8121
+ [filterOrLogic]="getText('filterOrLogic')"
8122
+ [loading]="getText('loading')"
8123
+ [columnMenu]="getText('columnMenu')"
8124
+ [columns]="getText('columns')"
8125
+ [sortable]="getText('sortable')"
8126
+ [sortAscending]="getText('sortAscending')"
8127
+ [sortDescending]="getText('sortDescending')"
8128
+ [sortedAscending]="getText('sortedAscending')"
8129
+ [sortedDescending]="getText('sortedDescending')"
8130
+ [sortedDefault]="getText('sortedDefault')"
8131
+ [columnsApply]="getText('columnsApply')"
8132
+ [columnsReset]="getText('columnsReset')"
8133
+ >
8134
+ </kendo-treelist-messages>
8135
+ </kendo-treelist>
8136
+ </kendo-splitter-pane>
8137
+ <kendo-splitter-pane
8138
+ [collapsible]="timelinePaneOptions?.collapsible"
8139
+ [resizable]="timelinePaneOptions?.resizable"
8140
+ [collapsed]="timelinePaneOptions?.collapsed"
8141
+ [min]="timelinePaneOptions?.min"
8142
+ [max]="timelinePaneOptions?.max"
8143
+ [size]="timelinePaneOptions?.size"
8144
+ (collapsedChange)="onTimelineCollapsedChange($event)"
8145
+ (sizeChange)="onTimelinePaneSizeChange($event)"
8146
+ [scrollable]="false"
8147
+ class="k-gantt-timeline-pane">
8148
+ @if (views && views.length) {
8149
+ <kendo-gantt-timeline
8150
+ [renderDependencyDragClues]="renderDependencyDragClues"
8151
+ [dragScrollSettings]="dragScrollSettings"
8152
+ [rows]="viewItems"
8153
+ [slots]="timelineSlots"
8154
+ [currentTimeMarker]="activeViewCurrentTimeMarker"
8155
+ [groupSlots]="timelineGroupSlots"
8156
+ [tableWidth]="tableWidth"
8157
+ [activeView]="activeView"
8158
+ [taskContentTemplate]="taskContentTemplate?.templateRef"
8159
+ [taskTemplate]="taskTemplate?.templateRef"
8160
+ [summaryTaskTemplate]="summaryTaskTemplate?.templateRef"
8161
+ [taskClass]="taskClass"
8162
+ [dependencies]="dependencies"
8163
+ [isExpanded]="isExpanded"
8164
+ [selectable]="selectable"
8165
+ [isTaskSelected]="isTaskSelected"
8079
8166
  [kendoEventsOutsideAngular]="{
8080
8167
  click: handleTimelineClick,
8081
8168
  contextmenu: handleTimelineRightClick,
8082
8169
  dblclick: handleTimelineDblClick,
8083
8170
  mousedown: handleTimelineMouseDown
8084
8171
  }"
8085
- [customTooltipTemplate]="taskTooltipTemplate"
8086
- [tooltipOptions]="taskTooltipOptions"
8087
- [scope]="this"
8088
- ></kendo-gantt-timeline>
8089
- </kendo-splitter-pane>
8090
- </kendo-splitter>
8172
+ [customTooltipTemplate]="taskTooltipTemplate"
8173
+ [tooltipOptions]="taskTooltipOptions"
8174
+ [scope]="this"
8175
+ ></kendo-gantt-timeline>
8176
+ }
8177
+ </kendo-splitter-pane>
8178
+ </kendo-splitter>
8091
8179
  </div>
8092
- <kendo-gantt-toolbar
8093
- *ngIf="showToolbar('bottom')"
8180
+ @if (showToolbar('bottom')) {
8181
+ <kendo-gantt-toolbar
8094
8182
  [attr.aria-label]="toolbarAriaLabel"
8095
8183
  [showAddTask]="toolbarSettings.addTaskTool === 'bottom' || toolbarSettings.addTaskTool === 'both'"
8096
8184
  [showViewSelector]="toolbarSettings.viewSelectorTool === 'bottom' || toolbarSettings.viewSelectorTool === 'both'"
@@ -8099,29 +8187,35 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
8099
8187
  [activeView]="activeView"
8100
8188
  [navigable]="navigable"
8101
8189
  class="k-gantt-footer"
8102
- position="bottom"></kendo-gantt-toolbar>
8103
- <kendo-gantt-edit-dialog
8104
- *ngIf="showEditingDialog"
8190
+ position="bottom"
8191
+ (activeViewChange)="changeActiveView($event)"></kendo-gantt-toolbar>
8192
+ }
8193
+ @if (showEditingDialog) {
8194
+ <kendo-gantt-edit-dialog
8105
8195
  [data]="data">
8106
- </kendo-gantt-edit-dialog>
8107
- <kendo-dialog
8108
- *ngIf="showConfirmationDialog"
8196
+ </kendo-gantt-edit-dialog>
8197
+ }
8198
+ @if (showConfirmationDialog) {
8199
+ <kendo-dialog
8109
8200
  [width]="575"
8110
8201
  [height]="170"
8111
8202
  [title]="getText('confirmationDialogTitle')"
8112
8203
  (close)="handleConfirmationDialogClose()">
8113
8204
  <span>{{ getText('confirmationDialogContent') }}</span>
8114
8205
  <kendo-dialog-actions layout="start">
8115
- <kendo-treelist-spacer></kendo-treelist-spacer>
8116
- <button kendoButton [primary]="true" (click)="handleDeleteConfirmation()">{{ getText('deleteButtonText') }}</button>
8117
- <button kendoButton (click)="handleConfirmationDialogClose()">{{ getText('cancelButtonText') }}</button>
8206
+ <kendo-treelist-spacer></kendo-treelist-spacer>
8207
+ <button kendoButton [primary]="true" (click)="handleDeleteConfirmation()">{{ getText('deleteButtonText') }}</button>
8208
+ <button kendoButton (click)="handleConfirmationDialogClose()">{{ getText('cancelButtonText') }}</button>
8118
8209
  </kendo-dialog-actions>
8119
- </kendo-dialog>
8210
+ </kendo-dialog>
8211
+ }
8120
8212
 
8121
- <div kendoWatermarkOverlay *ngIf="showLicenseWatermark" [licenseMessage]="licenseMessage"></div>
8122
- `,
8213
+ @if (showLicenseWatermark) {
8214
+ <div kendoWatermarkOverlay [licenseMessage]="licenseMessage"></div>
8215
+ }
8216
+ `,
8123
8217
  standalone: true,
8124
- imports: [LocalizedMessagesDirective, NgIf, ToolbarComponent, SplitterComponent, SplitterPaneComponent, TreeListComponent, EventsOutsideAngularDirective, CustomMessagesComponent$2, GanttTimelineComponent, EditDialogComponent, DialogComponent, DialogActionsComponent, TreeListSpacerComponent, ButtonComponent, WatermarkOverlayComponent]
8218
+ imports: [LocalizedMessagesDirective, ToolbarComponent, SplitterComponent, SplitterPaneComponent, TreeListComponent, EventsOutsideAngularDirective, CustomMessagesComponent$2, GanttTimelineComponent, EditDialogComponent, DialogComponent, DialogActionsComponent, TreeListSpacerComponent, ButtonComponent, WatermarkOverlayComponent]
8125
8219
  }]
8126
8220
  }], ctorParameters: () => [{ 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 }, { type: i1.IntlService }, { type: undefined, decorators: [{
8127
8221
  type: Inject,