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

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.
@@ -8,14 +8,14 @@ import { ColumnBase, ColumnComponent, ColumnGroupComponent, SpanColumnComponent,
8
8
  import { cloneDate, addWeeks, firstDayInWeek, addDays, lastDayOfMonth, getDate, firstDayOfMonth, addMonths, lastMonthOfYear, MS_PER_HOUR, MS_PER_DAY, isEqual } from '@progress/kendo-date-math';
9
9
  import { Subject, Subscription, fromEvent, forkJoin, EMPTY, isObservable, of } from 'rxjs';
10
10
  import { validatePackage } from '@progress/kendo-licensing';
11
- import { Keys, isDocumentAvailable, closestInScope, matchesClasses, isPresent as isPresent$1, EventsOutsideAngularDirective, DraggableDirective, PreventableEvent, anyChanged, closest, isFocusable, focusableSelector, isVisible, getLicenseMessage, shouldShowValidationUI, hasObservers, normalizeNumpadKeys, WatermarkOverlayComponent, ResizeBatchService } from '@progress/kendo-angular-common';
11
+ import { Keys, isDocumentAvailable, closestInScope, matchesClasses, isPresent as isPresent$1, EventsOutsideAngularDirective, DraggableDirective, PreventableEvent, anyChanged, closest, isFocusable, focusableSelector, isVisible, getLicenseMessage, shouldShowValidationUI, hasObservers, normalizeKeys, WatermarkOverlayComponent, ResizeBatchService } from '@progress/kendo-angular-common';
12
12
  import { map, distinctUntilChanged, take, switchMap, expand, reduce, filter } from 'rxjs/operators';
13
13
  import { getter, touchEnabled } from '@progress/kendo-common';
14
14
  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: 1764593172,
48
+ version: '21.2.0-develop.10',
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,
@@ -3318,6 +3344,8 @@ class GanttTimelineComponent {
3318
3344
  const popupHeight = popupEl?.offsetHeight ?? 0;
3319
3345
  const popupWidth = popupEl?.offsetWidth ?? 0;
3320
3346
  const taskMove = !(this.taskDragService.leftDragHandle || this.taskDragService.rightDragHandle);
3347
+ // the theme does not provide zIndex for the marquee tooltip, thus it is applied here as an intentional exception
3348
+ this.popupRef && (this.popupRef.popupElement.style.zIndex += 1000000);
3321
3349
  this.popupRef && (popup.margin = {
3322
3350
  horizontal: taskMove ? taskRect.left - e.offset - this.taskDragService.tasksContainerRect.left - popupWidth / 2 : e.width - taskEl.nativeElement.clientWidth - popupWidth / 2,
3323
3351
  vertical: (taskEl.nativeElement.clientHeight + popupHeight) / 2
@@ -3342,6 +3370,11 @@ class GanttTimelineComponent {
3342
3370
  this.createTimeMarker();
3343
3371
  }
3344
3372
  }
3373
+ trackBySlotIndex(index, item) {
3374
+ // Combine index with timestamp to ensure uniqueness
3375
+ // even when multiple slots have the same start time
3376
+ return `${index}-${item.start.getTime()}`;
3377
+ }
3345
3378
  ngAfterViewInit() {
3346
3379
  this.currentTimeMarkerService.slots = this.slots;
3347
3380
  this.currentTimeMarkerService.rows = this.rows;
@@ -3377,149 +3410,157 @@ class GanttTimelineComponent {
3377
3410
  });
3378
3411
  }
3379
3412
  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: `
3413
+ 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
3414
  <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>
3415
+ <div class="k-grid-header">
3416
+ <div #timelineHeaderWrap class="k-grid-header-wrap">
3417
+ <table
3418
+ class="k-table k-table-md k-grid-header-table"
3419
+ role="presentation"
3420
+ [style.width.px]="tableWidth"
3421
+ >
3422
+ <tbody
3423
+ kendoGanttHeaderTableBody
3424
+ [groupSlots]="groupSlots"
3425
+ [slots]="slots">
3426
+ </tbody>
3427
+ </table>
3396
3428
  </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)"
3429
+ </div>
3430
+ <!-- tabindex="-1" required for https://bugzilla.mozilla.org/show_bug.cgi?id=1069739 -->
3431
+ <div
3432
+ #timelineContent
3433
+ class="k-grid-content"
3434
+ tabindex="-1"
3435
+ role="tree"
3436
+ aria-roledescription="Timeline"
3437
+ kendoGanttTimelineScrollable
3438
+ [scrollSettings]="dragScrollSettings"
3439
+ kendoDraggable
3440
+ [enableDrag]="draggableEnabled"
3441
+ (kendoPress)="timelineContainerPress.emit($event)"
3442
+ (kendoDrag)="timelineContainerDrag.emit($event)"
3443
+ (kendoRelease)="timelineContainerRelease.emit($event)"
3411
3444
  >
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>
3445
+ <div class="k-gantt-tables">
3446
+ <table
3447
+ class="k-table k-table-md k-grid-table k-gantt-rows"
3448
+ [style.width.px]="tableWidth"
3449
+ role="presentation"
3450
+ >
3451
+ <tbody class="k-table-tbody">
3452
+ @for (item of rows; track $index; let i = $index) {
3453
+ <tr
3454
+ class="k-table-row{{i % 2 ? ' k-table-alt-row' : ''}}">
3455
+ <td class="k-table-td"></td>
3456
+ </tr>
3457
+ }
3458
+ </tbody>
3459
+ </table>
3460
+
3461
+ <table
3462
+ #timelineColumns
3463
+ class="k-table k-table-md k-gantt-columns"
3464
+ role="presentation"
3465
+ [style.width.px]="tableWidth"
3466
+ >
3467
+ <colgroup>
3468
+ @for (item of slots; track trackBySlotIndex($index, item)) {
3469
+ <col>
3470
+ }
3471
+ </colgroup>
3472
+
3473
+ <tbody class="k-table-tbody">
3474
+ <tr class="k-table-row">
3475
+ @for (item of slots; track trackBySlotIndex($index, item)) {
3476
+ <td
3477
+ class="k-table-td"
3478
+ [class.k-nonwork-hour]="isNonWorking(item)"></td>
3479
+ }
3480
+ </tr>
3481
+ </tbody>
3482
+ </table>
3483
+
3484
+ <table kendoTooltip
3485
+ #tooltip="kendoTooltip"
3486
+ [tooltipTemplate]="completion ? completionRatioTooltip : dragging ? resizingTooltip : customTooltipTemplate ? customTooltip : tooltipTemplate"
3487
+ [position]="tooltipOptions.position"
3488
+ [callout]="!dragging"
3489
+ [tooltipClass]="dragging ? 'k-gantt-resize-hint' : undefined"
3490
+ filter=".k-task"
3491
+ [showOn]="dragging || completion ? 'none' : 'hover'"
3492
+ #tasksContainer
3493
+ class="k-table k-table-md k-gantt-tasks"
3494
+ role="presentation"
3495
+ [style.border-collapse]="'collapse'"
3496
+ [style.width.px]="tableWidth"
3497
+ >
3498
+ <tbody
3499
+ class="k-table-tbody"
3500
+ kendoGanttTasksTableBody
3501
+ [rows]="rows"
3502
+ [activeView]="activeView"
3503
+ [taskContentTemplate]="taskContentTemplate"
3504
+ [taskTemplate]="taskTemplate"
3505
+ [summaryTaskTemplate]="summaryTaskTemplate"
3506
+ [taskClass]="taskClass"
3507
+ [isExpanded]="isExpanded"
3508
+ [selectable]="selectable"
3509
+ [isTaskSelected]="isTaskSelected"
3510
+ [renderDependencyDragClues]="renderDependencyDragClues"
3511
+ (taskPointerEnter)="task = $event"
3512
+ (taskPointerLeave)="task = null"
3513
+ >
3514
+ </tbody>
3515
+ </table>
3519
3516
  </div>
3517
+ <ng-template #tooltipTemplate>
3518
+ <div class="k-task-content">
3519
+ <div class="k-task-details">
3520
+ <strong>{{task?.title}}</strong>
3521
+ <div class="k-task-pct">{{task?.completionRatio | kendoNumber: 'p'}}</div>
3522
+ <ul class="k-reset">
3523
+ <li>{{messageFor('tooltipStartDateText')}}: {{task?.start | kendoDate: 'HH:mm a EEE, MMM d'}}</li>
3524
+ <li>{{messageFor('tooltipEndDateText')}}: {{task?.end | kendoDate: 'HH:mm a EEE, MMM d'}}</li>
3525
+ </ul>
3526
+ </div>
3527
+ </div>
3528
+ </ng-template>
3529
+ <ng-template #customTooltip>
3530
+ <ng-container *ngTemplateOutlet="customTooltipTemplate.templateRef; context: { $implicit: task, task }"></ng-container>
3531
+ </ng-template>
3532
+ <ng-template #resizingTooltip>
3533
+ <div class="k-tooltip-content">
3534
+ <div>{{messageFor('tooltipStartDateText')}}: {{dragResult?.start | kendoDate: 'HH:mm a EEE, MMM d'}}</div>
3535
+ <div>{{messageFor('tooltipEndDateText')}}: {{dragResult?.end | kendoDate: 'HH:mm a EEE, MMM d'}}</div>
3536
+ </div>
3537
+ </ng-template>
3538
+ <ng-template #completionRatioTooltip>
3539
+ <div class="k-tooltip-content">
3540
+ <div>{{dragResult?.completionRatio | kendoNumber: 'p'}}</div>
3541
+ </div>
3542
+ </ng-template>
3543
+
3544
+ <svg class="k-gantt-dependencies-svg">
3545
+ @for (dependency of dependencies; track dependency.id) {
3546
+ <polyline
3547
+ kendoGanttDependency
3548
+ [dependency]="dependency"
3549
+ />
3550
+ }
3551
+ <polyline #dependencyDragCreatePolyline />
3552
+ </svg>
3553
+ @if (marquee.show) {
3554
+ <div class="k-marquee k-gantt-marquee" style="top: 0px; height: {{tasksContainer.offsetHeight}}px; left: {{marquee.left}}px; width: {{marquee.width}}px;">
3555
+ <div class="k-marquee-color"></div>
3556
+ </div>
3557
+ }
3558
+ <!-- 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 -->
3559
+ <ng-container #dragPopupContainer></ng-container>
3560
+ </div>
3520
3561
  </div>
3521
3562
 
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 });
3563
+ `, 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
3564
  }
3524
3565
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: GanttTimelineComponent, decorators: [{
3525
3566
  type: Component,
@@ -3527,151 +3568,158 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
3527
3568
  selector: 'kendo-gantt-timeline',
3528
3569
  template: `
3529
3570
  <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>
3571
+ <div class="k-grid-header">
3572
+ <div #timelineHeaderWrap class="k-grid-header-wrap">
3573
+ <table
3574
+ class="k-table k-table-md k-grid-header-table"
3575
+ role="presentation"
3576
+ [style.width.px]="tableWidth"
3577
+ >
3578
+ <tbody
3579
+ kendoGanttHeaderTableBody
3580
+ [groupSlots]="groupSlots"
3581
+ [slots]="slots">
3582
+ </tbody>
3583
+ </table>
3544
3584
  </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)"
3585
+ </div>
3586
+ <!-- tabindex="-1" required for https://bugzilla.mozilla.org/show_bug.cgi?id=1069739 -->
3587
+ <div
3588
+ #timelineContent
3589
+ class="k-grid-content"
3590
+ tabindex="-1"
3591
+ role="tree"
3592
+ aria-roledescription="Timeline"
3593
+ kendoGanttTimelineScrollable
3594
+ [scrollSettings]="dragScrollSettings"
3595
+ kendoDraggable
3596
+ [enableDrag]="draggableEnabled"
3597
+ (kendoPress)="timelineContainerPress.emit($event)"
3598
+ (kendoDrag)="timelineContainerDrag.emit($event)"
3599
+ (kendoRelease)="timelineContainerRelease.emit($event)"
3559
3600
  >
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>
3601
+ <div class="k-gantt-tables">
3602
+ <table
3603
+ class="k-table k-table-md k-grid-table k-gantt-rows"
3604
+ [style.width.px]="tableWidth"
3605
+ role="presentation"
3606
+ >
3607
+ <tbody class="k-table-tbody">
3608
+ @for (item of rows; track $index; let i = $index) {
3609
+ <tr
3610
+ class="k-table-row{{i % 2 ? ' k-table-alt-row' : ''}}">
3611
+ <td class="k-table-td"></td>
3612
+ </tr>
3613
+ }
3614
+ </tbody>
3615
+ </table>
3616
+
3617
+ <table
3618
+ #timelineColumns
3619
+ class="k-table k-table-md k-gantt-columns"
3620
+ role="presentation"
3621
+ [style.width.px]="tableWidth"
3622
+ >
3623
+ <colgroup>
3624
+ @for (item of slots; track trackBySlotIndex($index, item)) {
3625
+ <col>
3626
+ }
3627
+ </colgroup>
3628
+
3629
+ <tbody class="k-table-tbody">
3630
+ <tr class="k-table-row">
3631
+ @for (item of slots; track trackBySlotIndex($index, item)) {
3632
+ <td
3633
+ class="k-table-td"
3634
+ [class.k-nonwork-hour]="isNonWorking(item)"></td>
3635
+ }
3636
+ </tr>
3637
+ </tbody>
3638
+ </table>
3639
+
3640
+ <table kendoTooltip
3641
+ #tooltip="kendoTooltip"
3642
+ [tooltipTemplate]="completion ? completionRatioTooltip : dragging ? resizingTooltip : customTooltipTemplate ? customTooltip : tooltipTemplate"
3643
+ [position]="tooltipOptions.position"
3644
+ [callout]="!dragging"
3645
+ [tooltipClass]="dragging ? 'k-gantt-resize-hint' : undefined"
3646
+ filter=".k-task"
3647
+ [showOn]="dragging || completion ? 'none' : 'hover'"
3648
+ #tasksContainer
3649
+ class="k-table k-table-md k-gantt-tasks"
3650
+ role="presentation"
3651
+ [style.border-collapse]="'collapse'"
3652
+ [style.width.px]="tableWidth"
3653
+ >
3654
+ <tbody
3655
+ class="k-table-tbody"
3656
+ kendoGanttTasksTableBody
3657
+ [rows]="rows"
3658
+ [activeView]="activeView"
3659
+ [taskContentTemplate]="taskContentTemplate"
3660
+ [taskTemplate]="taskTemplate"
3661
+ [summaryTaskTemplate]="summaryTaskTemplate"
3662
+ [taskClass]="taskClass"
3663
+ [isExpanded]="isExpanded"
3664
+ [selectable]="selectable"
3665
+ [isTaskSelected]="isTaskSelected"
3666
+ [renderDependencyDragClues]="renderDependencyDragClues"
3667
+ (taskPointerEnter)="task = $event"
3668
+ (taskPointerLeave)="task = null"
3669
+ >
3670
+ </tbody>
3671
+ </table>
3667
3672
  </div>
3673
+ <ng-template #tooltipTemplate>
3674
+ <div class="k-task-content">
3675
+ <div class="k-task-details">
3676
+ <strong>{{task?.title}}</strong>
3677
+ <div class="k-task-pct">{{task?.completionRatio | kendoNumber: 'p'}}</div>
3678
+ <ul class="k-reset">
3679
+ <li>{{messageFor('tooltipStartDateText')}}: {{task?.start | kendoDate: 'HH:mm a EEE, MMM d'}}</li>
3680
+ <li>{{messageFor('tooltipEndDateText')}}: {{task?.end | kendoDate: 'HH:mm a EEE, MMM d'}}</li>
3681
+ </ul>
3682
+ </div>
3683
+ </div>
3684
+ </ng-template>
3685
+ <ng-template #customTooltip>
3686
+ <ng-container *ngTemplateOutlet="customTooltipTemplate.templateRef; context: { $implicit: task, task }"></ng-container>
3687
+ </ng-template>
3688
+ <ng-template #resizingTooltip>
3689
+ <div class="k-tooltip-content">
3690
+ <div>{{messageFor('tooltipStartDateText')}}: {{dragResult?.start | kendoDate: 'HH:mm a EEE, MMM d'}}</div>
3691
+ <div>{{messageFor('tooltipEndDateText')}}: {{dragResult?.end | kendoDate: 'HH:mm a EEE, MMM d'}}</div>
3692
+ </div>
3693
+ </ng-template>
3694
+ <ng-template #completionRatioTooltip>
3695
+ <div class="k-tooltip-content">
3696
+ <div>{{dragResult?.completionRatio | kendoNumber: 'p'}}</div>
3697
+ </div>
3698
+ </ng-template>
3699
+
3700
+ <svg class="k-gantt-dependencies-svg">
3701
+ @for (dependency of dependencies; track dependency.id) {
3702
+ <polyline
3703
+ kendoGanttDependency
3704
+ [dependency]="dependency"
3705
+ />
3706
+ }
3707
+ <polyline #dependencyDragCreatePolyline />
3708
+ </svg>
3709
+ @if (marquee.show) {
3710
+ <div class="k-marquee k-gantt-marquee" style="top: 0px; height: {{tasksContainer.offsetHeight}}px; left: {{marquee.left}}px; width: {{marquee.width}}px;">
3711
+ <div class="k-marquee-color"></div>
3712
+ </div>
3713
+ }
3714
+ <!-- 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 -->
3715
+ <ng-container #dragPopupContainer></ng-container>
3716
+ </div>
3668
3717
  </div>
3669
3718
 
3670
- `,
3719
+ `,
3671
3720
  standalone: true,
3672
3721
  encapsulation: ViewEncapsulation.None,
3673
- imports: [GanttHeaderTableBodyComponent, TimelineScrollableDirective, DraggableDirective, NgFor, GanttTasksTableBodyComponent,
3674
- GanttDependencyDirective, KENDO_TOOLTIP, NgIf, DatePipe, NumberPipe, NgTemplateOutlet],
3722
+ imports: [GanttHeaderTableBodyComponent, TimelineScrollableDirective, DraggableDirective, GanttTasksTableBodyComponent, GanttDependencyDirective, KENDO_TOOLTIP, DatePipe, NumberPipe, NgTemplateOutlet],
3675
3723
  }]
3676
3724
  }], ctorParameters: () => [{ type: ScrollSyncService }, { type: DependencyDomService }, { type: i0.Renderer2 }, { type: i0.NgZone }, { type: CurrentTimeMarkerService }, { type: GanttLocalizationService }, { type: TaskDragService, decorators: [{
3677
3725
  type: Optional
@@ -4813,37 +4861,45 @@ class TaskFieldsComponent {
4813
4861
  return this.localizationService.get(token);
4814
4862
  }
4815
4863
  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: `
4864
+ 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
4865
  <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" />
4866
+ @if (formGroup.get(mapper.taskFields.title)) {
4867
+ <kendo-formfield>
4868
+ <kendo-label [for]="title" [text]="getText('titleFieldInputLabel')"></kendo-label>
4869
+ <input #title kendoTextBox [formControlName]="mapper.taskFields.title" />
4821
4870
  </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>
4871
+ }
4872
+ <div class="k-hstack">
4873
+ @if (formGroup.get(mapper.taskFields.start)) {
4874
+ <kendo-formfield [style.width.%]="49">
4875
+ <kendo-label [for]="start" [text]="getText('startFieldInputLabel')"></kendo-label>
4876
+ <kendo-datetimepicker #start [formControlName]="mapper.taskFields.start"></kendo-datetimepicker>
4877
+ </kendo-formfield>
4878
+ }
4879
+ <kendo-treelist-spacer></kendo-treelist-spacer>
4880
+ @if (formGroup.get(mapper.taskFields.end)) {
4881
+ <kendo-formfield [style.width.%]="49">
4882
+ <kendo-label [for]="end" [text]="getText('endFieldInputLabel')"></kendo-label>
4883
+ <kendo-datetimepicker #end [formControlName]="mapper.taskFields.end"></kendo-datetimepicker>
4884
+ </kendo-formfield>
4885
+ }
4886
+ </div>
4887
+ @if (formGroup.get(mapper.taskFields.completionRatio)) {
4888
+ <kendo-formfield [style.width.%]="49">
4889
+ <kendo-label [for]="completionRatio" [text]="getText('completionRatioFieldInputLabel')"></kendo-label>
4890
+ <kendo-numerictextbox
4891
+ #completionRatio
4892
+ [formControlName]="mapper.taskFields.completionRatio"
4893
+ [min]="0"
4894
+ [max]="1"
4895
+ [decimals]="2"
4896
+ format="p2"
4897
+ [step]="0.01"
4898
+ ></kendo-numerictextbox>
4844
4899
  </kendo-formfield>
4900
+ }
4845
4901
  </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"] }] });
4902
+ `, 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
4903
  }
4848
4904
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: TaskFieldsComponent, decorators: [{
4849
4905
  type: Component,
@@ -4851,37 +4907,45 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
4851
4907
  selector: 'kendo-gantt-task-fields',
4852
4908
  template: `
4853
4909
  <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" />
4910
+ @if (formGroup.get(mapper.taskFields.title)) {
4911
+ <kendo-formfield>
4912
+ <kendo-label [for]="title" [text]="getText('titleFieldInputLabel')"></kendo-label>
4913
+ <input #title kendoTextBox [formControlName]="mapper.taskFields.title" />
4857
4914
  </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>
4915
+ }
4916
+ <div class="k-hstack">
4917
+ @if (formGroup.get(mapper.taskFields.start)) {
4918
+ <kendo-formfield [style.width.%]="49">
4919
+ <kendo-label [for]="start" [text]="getText('startFieldInputLabel')"></kendo-label>
4920
+ <kendo-datetimepicker #start [formControlName]="mapper.taskFields.start"></kendo-datetimepicker>
4921
+ </kendo-formfield>
4922
+ }
4923
+ <kendo-treelist-spacer></kendo-treelist-spacer>
4924
+ @if (formGroup.get(mapper.taskFields.end)) {
4925
+ <kendo-formfield [style.width.%]="49">
4926
+ <kendo-label [for]="end" [text]="getText('endFieldInputLabel')"></kendo-label>
4927
+ <kendo-datetimepicker #end [formControlName]="mapper.taskFields.end"></kendo-datetimepicker>
4928
+ </kendo-formfield>
4929
+ }
4930
+ </div>
4931
+ @if (formGroup.get(mapper.taskFields.completionRatio)) {
4932
+ <kendo-formfield [style.width.%]="49">
4933
+ <kendo-label [for]="completionRatio" [text]="getText('completionRatioFieldInputLabel')"></kendo-label>
4934
+ <kendo-numerictextbox
4935
+ #completionRatio
4936
+ [formControlName]="mapper.taskFields.completionRatio"
4937
+ [min]="0"
4938
+ [max]="1"
4939
+ [decimals]="2"
4940
+ format="p2"
4941
+ [step]="0.01"
4942
+ ></kendo-numerictextbox>
4880
4943
  </kendo-formfield>
4944
+ }
4881
4945
  </form>
4882
- `,
4946
+ `,
4883
4947
  standalone: true,
4884
- imports: [ReactiveFormsModule, NgIf, FormFieldComponent, LabelComponent, TextBoxDirective, DateTimePickerComponent, TreeListSpacerComponent, NumericTextBoxComponent]
4948
+ imports: [ReactiveFormsModule, FormFieldComponent, LabelComponent, TextBoxDirective, DateTimePickerComponent, TreeListSpacerComponent, NumericTextBoxComponent]
4885
4949
  }]
4886
4950
  }], ctorParameters: () => [{ type: MappingService }, { type: EditService }, { type: GanttLocalizationService }] });
4887
4951
 
@@ -5157,22 +5221,26 @@ class ViewSelectorComponent {
5157
5221
  this.activeViewChange.emit(event.target.value);
5158
5222
  }
5159
5223
  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: `
5224
+ 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
5225
  <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>
5226
+ class="k-dropdownlist k-picker k-rounded-md k-views-dropdown"
5227
+ aria-label="View Selector"
5228
+ [value]="activeView"
5229
+ (change)="onActiveViewChange($event)">
5230
+ @for (view of views; track view) {
5231
+ <option [value]="view">{{getViewTypeText(view)}}</option>
5232
+ }
5167
5233
  </select>
5168
5234
  <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>
5235
+ @for (view of views; track view) {
5236
+ <button
5237
+ kendoButton
5238
+ type="button"
5239
+ [selected]="view === activeView"
5240
+ (click)="onClick(view)">{{getViewTypeText(view)}}</button>
5241
+ }
5174
5242
  </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"] }] });
5243
+ `, 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
5244
  }
5177
5245
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: ViewSelectorComponent, decorators: [{
5178
5246
  type: Component,
@@ -5180,22 +5248,26 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
5180
5248
  selector: 'kendo-gantt-view-selector',
5181
5249
  template: `
5182
5250
  <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>
5251
+ class="k-dropdownlist k-picker k-rounded-md k-views-dropdown"
5252
+ aria-label="View Selector"
5253
+ [value]="activeView"
5254
+ (change)="onActiveViewChange($event)">
5255
+ @for (view of views; track view) {
5256
+ <option [value]="view">{{getViewTypeText(view)}}</option>
5257
+ }
5188
5258
  </select>
5189
5259
  <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>
5260
+ @for (view of views; track view) {
5261
+ <button
5262
+ kendoButton
5263
+ type="button"
5264
+ [selected]="view === activeView"
5265
+ (click)="onClick(view)">{{getViewTypeText(view)}}</button>
5266
+ }
5195
5267
  </kendo-buttongroup>
5196
- `,
5268
+ `,
5197
5269
  standalone: true,
5198
- imports: [NgFor, ReactiveFormsModule, ButtonGroupComponent, ButtonComponent]
5270
+ imports: [ReactiveFormsModule, ButtonGroupComponent, ButtonComponent]
5199
5271
  }]
5200
5272
  }], ctorParameters: () => [{ type: i1$1.LocalizationService }], propDecorators: { hostClass: [{
5201
5273
  type: HostBinding,
@@ -5399,23 +5471,27 @@ class ToolbarComponent {
5399
5471
  }
5400
5472
  }
5401
5473
  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>
5474
+ 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: `
5475
+ @if (!renderTemplate) {
5476
+ @if (showAddTask) {
5477
+ <kendo-gantt-add-task></kendo-gantt-add-task>
5478
+ }
5479
+ <span class="k-spacer k-toolbar-spacer"></span>
5480
+ @if (showViewSelector) {
5406
5481
  <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"
5482
+ [views]="views"
5483
+ [activeView]="activeView"
5484
+ (activeViewChange)="handleViewChange($event)"></kendo-gantt-view-selector>
5485
+ }
5486
+ }
5487
+ @if (renderTemplate) {
5488
+ <ng-template
5414
5489
  [ngTemplateOutlet]="toolbarTemplateRef"
5415
5490
  [ngTemplateOutletContext]="context"
5416
5491
  >
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"] }] });
5492
+ </ng-template>
5493
+ }
5494
+ `, 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
5495
  }
5420
5496
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: ToolbarComponent, decorators: [{
5421
5497
  type: Component,
@@ -5423,24 +5499,28 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
5423
5499
  selector: 'kendo-gantt-toolbar',
5424
5500
  providers: [ToolbarNavigationService],
5425
5501
  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>
5502
+ @if (!renderTemplate) {
5503
+ @if (showAddTask) {
5504
+ <kendo-gantt-add-task></kendo-gantt-add-task>
5505
+ }
5506
+ <span class="k-spacer k-toolbar-spacer"></span>
5507
+ @if (showViewSelector) {
5429
5508
  <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"
5509
+ [views]="views"
5510
+ [activeView]="activeView"
5511
+ (activeViewChange)="handleViewChange($event)"></kendo-gantt-view-selector>
5512
+ }
5513
+ }
5514
+ @if (renderTemplate) {
5515
+ <ng-template
5437
5516
  [ngTemplateOutlet]="toolbarTemplateRef"
5438
5517
  [ngTemplateOutletContext]="context"
5439
5518
  >
5440
- </ng-template>
5441
- `,
5519
+ </ng-template>
5520
+ }
5521
+ `,
5442
5522
  standalone: true,
5443
- imports: [NgIf, GanttAddTaskComponent, ViewSelectorComponent, NgTemplateOutlet]
5523
+ imports: [GanttAddTaskComponent, ViewSelectorComponent, NgTemplateOutlet]
5444
5524
  }]
5445
5525
  }], ctorParameters: () => [{ type: i0.ElementRef }, { type: ToolbarNavigationService }], propDecorators: { role: [{
5446
5526
  type: HostBinding,
@@ -7212,7 +7292,7 @@ class GanttComponent {
7212
7292
  handleKeydown(event) {
7213
7293
  const { target, altKey } = event;
7214
7294
  // on some keyboards arrow keys, PageUp/Down, and Home/End are mapped to Numpad keys
7215
- const code = normalizeNumpadKeys(event);
7295
+ const code = normalizeKeys(event);
7216
7296
  const isTimelineActive = this.timeline.timelineContent.nativeElement.contains(target);
7217
7297
  if (isTimelineActive) {
7218
7298
  if (isArrowUpDownKey(code)) {
@@ -7295,7 +7375,7 @@ class GanttComponent {
7295
7375
  }
7296
7376
  }
7297
7377
  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: [
7378
+ 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
7379
  GanttLocalizationService,
7300
7380
  LocalizationService,
7301
7381
  {
@@ -7325,211 +7405,211 @@ class GanttComponent {
7325
7405
  CurrentTimeMarkerService
7326
7406
  ], 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
7407
  <ng-container kendoGanttLocalizedMessages
7328
- i18n-taskEditingGeneralTabTitle="kendo.gantt.taskEditingGeneralTabTitle|The title of the 'General' tab of the editing dialog TabStrip"
7329
- taskEditingGeneralTabTitle="General"
7408
+ i18n-taskEditingGeneralTabTitle="kendo.gantt.taskEditingGeneralTabTitle|The title of the 'General' tab of the editing dialog TabStrip"
7409
+ taskEditingGeneralTabTitle="General"
7330
7410
 
7331
- i18n-taskEditingPredecessorsTabTitle="kendo.gantt.taskEditingPredecessorsTabTitle|The title of the 'Predecessors' dependencies tab of the editing dialog TabStrip"
7332
- taskEditingPredecessorsTabTitle="Predecessors"
7411
+ i18n-taskEditingPredecessorsTabTitle="kendo.gantt.taskEditingPredecessorsTabTitle|The title of the 'Predecessors' dependencies tab of the editing dialog TabStrip"
7412
+ taskEditingPredecessorsTabTitle="Predecessors"
7333
7413
 
7334
- i18n-taskEditingSuccessorsTabTitle="kendo.gantt.taskEditingSuccessorsTabTitle|The title of the 'Successors' dependencies tab of the editing dialog TabStrip"
7335
- taskEditingSuccessorsTabTitle="Successors"
7414
+ i18n-taskEditingSuccessorsTabTitle="kendo.gantt.taskEditingSuccessorsTabTitle|The title of the 'Successors' dependencies tab of the editing dialog TabStrip"
7415
+ taskEditingSuccessorsTabTitle="Successors"
7336
7416
 
7337
- i18n-taskEditingDependenciesAddButtonText="kendo.gantt.taskEditingDependenciesAddButtonText|The text of the 'Add' button in the dependencies tabs of the editing dialog TabStrip"
7338
- taskEditingDependenciesAddButtonText="Add"
7417
+ i18n-taskEditingDependenciesAddButtonText="kendo.gantt.taskEditingDependenciesAddButtonText|The text of the 'Add' button in the dependencies tabs of the editing dialog TabStrip"
7418
+ taskEditingDependenciesAddButtonText="Add"
7339
7419
 
7340
- i18n-taskEditingDependenciesRemoveButtonText="kendo.gantt.taskEditingDependenciesRemoveButtonText|The text of the 'Remove' button in the dependencies tabs of the editing dialog TabStrip"
7341
- taskEditingDependenciesRemoveButtonText="Remove"
7420
+ i18n-taskEditingDependenciesRemoveButtonText="kendo.gantt.taskEditingDependenciesRemoveButtonText|The text of the 'Remove' button in the dependencies tabs of the editing dialog TabStrip"
7421
+ taskEditingDependenciesRemoveButtonText="Remove"
7342
7422
 
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"
7423
+ i18n-taskEditingDependenciesGridNameColumnTitle="kendo.gantt.taskEditingDependenciesGridNameColumnTitle|The title of the 'Task Title' Grid column in the dependencies tabs of the editing dialog TabStrip"
7424
+ taskEditingDependenciesGridNameColumnTitle="Task Title"
7345
7425
 
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"
7426
+ i18n-taskEditingDependenciesGridTypeColumnTitle="kendo.gantt.taskEditingDependenciesGridTypeColumnTitle|The title of the 'Type' Grid column in the dependencies tabs of the editing dialog TabStrip"
7427
+ taskEditingDependenciesGridTypeColumnTitle="Type"
7348
7428
 
7349
- i18n-taskDeleteLabel="kendo.gantt.taskDeleteLabel|The label of the task delete icon"
7350
- taskDeleteLabel="Delete"
7429
+ i18n-taskDeleteLabel="kendo.gantt.taskDeleteLabel|The label of the task delete icon"
7430
+ taskDeleteLabel="Delete"
7351
7431
 
7352
- i18n-taskEditingDialogTitle="kendo.gantt.taskEditingDialogTitle|The title of the task editing dialog"
7353
- taskEditingDialogTitle="Editing Task"
7432
+ i18n-taskEditingDialogTitle="kendo.gantt.taskEditingDialogTitle|The title of the task editing dialog"
7433
+ taskEditingDialogTitle="Editing Task"
7354
7434
 
7355
- i18n-taskEditingDialogCloseTitle="kendo.gantt.taskEditingDialogCloseTitle|The title of the task editing dialog close button"
7356
- taskEditingDialogCloseTitle="Close"
7435
+ i18n-taskEditingDialogCloseTitle="kendo.gantt.taskEditingDialogCloseTitle|The title of the task editing dialog close button"
7436
+ taskEditingDialogCloseTitle="Close"
7357
7437
 
7358
- i18n-confirmationDialogCloseTitle="kendo.gantt.confirmationDialogCloseTitle|The title of the confirmation dialog close button"
7359
- confirmationDialogCloseTitle="Close"
7438
+ i18n-confirmationDialogCloseTitle="kendo.gantt.confirmationDialogCloseTitle|The title of the confirmation dialog close button"
7439
+ confirmationDialogCloseTitle="Close"
7360
7440
 
7361
- i18n-confirmationDialogTitle="kendo.gantt.confirmationDialogTitle|The title of the delete task confirmation dialog"
7362
- confirmationDialogTitle="Delete Task"
7441
+ i18n-confirmationDialogTitle="kendo.gantt.confirmationDialogTitle|The title of the delete task confirmation dialog"
7442
+ confirmationDialogTitle="Delete Task"
7363
7443
 
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?"
7444
+ i18n-confirmationDialogContent="kendo.gantt.confirmationDialogContent|The content of the delete task confirmation dialog"
7445
+ confirmationDialogContent="Are you sure you want to delete this task?"
7366
7446
 
7367
- i18n-deleteButtonText="kendo.gantt.deleteButtonText|The text of the task editing dialog 'Delete' button"
7368
- deleteButtonText="Delete"
7447
+ i18n-deleteButtonText="kendo.gantt.deleteButtonText|The text of the task editing dialog 'Delete' button"
7448
+ deleteButtonText="Delete"
7369
7449
 
7370
- i18n-cancelButtonText="kendo.gantt.cancelButtonText|The text of the task editing dialog 'Cancel' button"
7371
- cancelButtonText="Cancel"
7450
+ i18n-cancelButtonText="kendo.gantt.cancelButtonText|The text of the task editing dialog 'Cancel' button"
7451
+ cancelButtonText="Cancel"
7372
7452
 
7373
- i18n-saveButtonText="kendo.gantt.saveButtonText|The text of the task editing dialog 'Save' button"
7374
- saveButtonText="Save"
7453
+ i18n-saveButtonText="kendo.gantt.saveButtonText|The text of the task editing dialog 'Save' button"
7454
+ saveButtonText="Save"
7375
7455
 
7376
- i18n-titleFieldInputLabel="kendo.gantt.titleFieldInputLabel|The label of the 'title' field input in editing mode"
7377
- titleFieldInputLabel="Title"
7456
+ i18n-titleFieldInputLabel="kendo.gantt.titleFieldInputLabel|The label of the 'title' field input in editing mode"
7457
+ titleFieldInputLabel="Title"
7378
7458
 
7379
- i18n-startFieldInputLabel="kendo.gantt.startFieldInputLabel|The label of the 'start' field input in editing mode"
7380
- startFieldInputLabel="Start"
7459
+ i18n-startFieldInputLabel="kendo.gantt.startFieldInputLabel|The label of the 'start' field input in editing mode"
7460
+ startFieldInputLabel="Start"
7381
7461
 
7382
- i18n-endFieldInputLabel="kendo.gantt.endFieldInputLabel|The label of the 'end' field input in editing mode"
7383
- endFieldInputLabel="End"
7462
+ i18n-endFieldInputLabel="kendo.gantt.endFieldInputLabel|The label of the 'end' field input in editing mode"
7463
+ endFieldInputLabel="End"
7384
7464
 
7385
- i18n-completionRatioFieldInputLabel="kendo.gantt.completionRatioFieldInputLabel|The label of the 'completionRatio' field input in editing mode"
7386
- completionRatioFieldInputLabel="Progress"
7465
+ i18n-completionRatioFieldInputLabel="kendo.gantt.completionRatioFieldInputLabel|The label of the 'completionRatio' field input in editing mode"
7466
+ completionRatioFieldInputLabel="Progress"
7387
7467
 
7388
- i18n-dayViewText="kendo.gantt.dayViewText|The text of the day view in the ViewSelector component"
7389
- dayViewText="Day"
7468
+ i18n-dayViewText="kendo.gantt.dayViewText|The text of the day view in the ViewSelector component"
7469
+ dayViewText="Day"
7390
7470
 
7391
- i18n-weekViewText="kendo.gantt.weekViewText|The text of the week view in the ViewSelector component"
7392
- weekViewText="Week"
7471
+ i18n-weekViewText="kendo.gantt.weekViewText|The text of the week view in the ViewSelector component"
7472
+ weekViewText="Week"
7393
7473
 
7394
- i18n-monthViewText="kendo.gantt.monthViewText|The text of the month view in the ViewSelector component"
7395
- monthViewText="Month"
7474
+ i18n-monthViewText="kendo.gantt.monthViewText|The text of the month view in the ViewSelector component"
7475
+ monthViewText="Month"
7396
7476
 
7397
- i18n-yearViewText-disabled="kendo.gantt.yearViewText|The text of the year view in the ViewSelector component"
7398
- yearViewText="Year"
7477
+ i18n-yearViewText-disabled="kendo.gantt.yearViewText|The text of the year view in the ViewSelector component"
7478
+ yearViewText="Year"
7399
7479
 
7400
- i18n-addTaskText="kendo.gantt.addTaskText|The text of the DropDownButton in the AddTask component"
7401
- addTaskText="Add Task"
7480
+ i18n-addTaskText="kendo.gantt.addTaskText|The text of the DropDownButton in the AddTask component"
7481
+ addTaskText="Add Task"
7402
7482
 
7403
- i18n-addChildText="kendo.gantt.addChildText|The text of the 'Add Child' option in the AddTask component"
7404
- addChildText="Add Child"
7483
+ i18n-addChildText="kendo.gantt.addChildText|The text of the 'Add Child' option in the AddTask component"
7484
+ addChildText="Add Child"
7405
7485
 
7406
- i18n-addAboveText="kendo.gantt.addAboveText|The text of the 'Add Above' option in the AddTask component"
7407
- addAboveText="Add Above"
7486
+ i18n-addAboveText="kendo.gantt.addAboveText|The text of the 'Add Above' option in the AddTask component"
7487
+ addAboveText="Add Above"
7408
7488
 
7409
- i18n-addBelowText="kendo.gantt.addBelowText|The text of the 'Add Below' option in the AddTask component"
7410
- addBelowText="Add Below"
7489
+ i18n-addBelowText="kendo.gantt.addBelowText|The text of the 'Add Below' option in the AddTask component"
7490
+ addBelowText="Add Below"
7411
7491
 
7412
- i18n-noRecords="kendo.gantt.noRecords|The label visible in the TreeList when there are no records"
7413
- noRecords="No records available."
7492
+ i18n-noRecords="kendo.gantt.noRecords|The label visible in the TreeList when there are no records"
7493
+ noRecords="No records available."
7414
7494
 
7415
- i18n-filter="kendo.gantt.filter|The label of the filter cell or icon"
7416
- filter="Filter"
7495
+ i18n-filter="kendo.gantt.filter|The label of the filter cell or icon"
7496
+ filter="Filter"
7417
7497
 
7418
- i18n-filterEqOperator="kendo.gantt.filterEqOperator|The text of the equal filter operator"
7419
- filterEqOperator="Is equal to"
7498
+ i18n-filterEqOperator="kendo.gantt.filterEqOperator|The text of the equal filter operator"
7499
+ filterEqOperator="Is equal to"
7420
7500
 
7421
- i18n-filterNotEqOperator="kendo.gantt.filterNotEqOperator|The text of the not equal filter operator"
7422
- filterNotEqOperator="Is not equal to"
7501
+ i18n-filterNotEqOperator="kendo.gantt.filterNotEqOperator|The text of the not equal filter operator"
7502
+ filterNotEqOperator="Is not equal to"
7423
7503
 
7424
- i18n-filterIsNullOperator="kendo.gantt.filterIsNullOperator|The text of the is null filter operator"
7425
- filterIsNullOperator="Is null"
7504
+ i18n-filterIsNullOperator="kendo.gantt.filterIsNullOperator|The text of the is null filter operator"
7505
+ filterIsNullOperator="Is null"
7426
7506
 
7427
- i18n-filterIsNotNullOperator="kendo.gantt.filterIsNotNullOperator|The text of the is not null filter operator"
7428
- filterIsNotNullOperator="Is not null"
7507
+ i18n-filterIsNotNullOperator="kendo.gantt.filterIsNotNullOperator|The text of the is not null filter operator"
7508
+ filterIsNotNullOperator="Is not null"
7429
7509
 
7430
- i18n-filterIsEmptyOperator="kendo.gantt.filterIsEmptyOperator|The text of the is empty filter operator"
7431
- filterIsEmptyOperator="Is empty"
7510
+ i18n-filterIsEmptyOperator="kendo.gantt.filterIsEmptyOperator|The text of the is empty filter operator"
7511
+ filterIsEmptyOperator="Is empty"
7432
7512
 
7433
- i18n-filterIsNotEmptyOperator="kendo.gantt.filterIsNotEmptyOperator|The text of the is not empty filter operator"
7434
- filterIsNotEmptyOperator="Is not empty"
7513
+ i18n-filterIsNotEmptyOperator="kendo.gantt.filterIsNotEmptyOperator|The text of the is not empty filter operator"
7514
+ filterIsNotEmptyOperator="Is not empty"
7435
7515
 
7436
- i18n-filterStartsWithOperator="kendo.gantt.filterStartsWithOperator|The text of the starts with filter operator"
7437
- filterStartsWithOperator="Starts with"
7516
+ i18n-filterStartsWithOperator="kendo.gantt.filterStartsWithOperator|The text of the starts with filter operator"
7517
+ filterStartsWithOperator="Starts with"
7438
7518
 
7439
- i18n-filterContainsOperator="kendo.gantt.filterContainsOperator|The text of the contains filter operator"
7440
- filterContainsOperator="Contains"
7519
+ i18n-filterContainsOperator="kendo.gantt.filterContainsOperator|The text of the contains filter operator"
7520
+ filterContainsOperator="Contains"
7441
7521
 
7442
- i18n-filterNotContainsOperator="kendo.gantt.filterNotContainsOperator|The text of the does not contain filter operator"
7443
- filterNotContainsOperator="Does not contain"
7522
+ i18n-filterNotContainsOperator="kendo.gantt.filterNotContainsOperator|The text of the does not contain filter operator"
7523
+ filterNotContainsOperator="Does not contain"
7444
7524
 
7445
- i18n-filterEndsWithOperator="kendo.gantt.filterEndsWithOperator|The text of the ends with filter operator"
7446
- filterEndsWithOperator="Ends with"
7525
+ i18n-filterEndsWithOperator="kendo.gantt.filterEndsWithOperator|The text of the ends with filter operator"
7526
+ filterEndsWithOperator="Ends with"
7447
7527
 
7448
- i18n-filterGteOperator="kendo.gantt.filterGteOperator|The text of the greater than or equal filter operator"
7449
- filterGteOperator="Is greater than or equal to"
7528
+ i18n-filterGteOperator="kendo.gantt.filterGteOperator|The text of the greater than or equal filter operator"
7529
+ filterGteOperator="Is greater than or equal to"
7450
7530
 
7451
- i18n-filterGtOperator="kendo.gantt.filterGtOperator|The text of the greater than filter operator"
7452
- filterGtOperator="Is greater than"
7531
+ i18n-filterGtOperator="kendo.gantt.filterGtOperator|The text of the greater than filter operator"
7532
+ filterGtOperator="Is greater than"
7453
7533
 
7454
- i18n-filterLteOperator="kendo.gantt.filterLteOperator|The text of the less than or equal filter operator"
7455
- filterLteOperator="Is less than or equal to"
7534
+ i18n-filterLteOperator="kendo.gantt.filterLteOperator|The text of the less than or equal filter operator"
7535
+ filterLteOperator="Is less than or equal to"
7456
7536
 
7457
- i18n-filterLtOperator="kendo.gantt.filterLtOperator|The text of the less than filter operator"
7458
- filterLtOperator="Is less than"
7537
+ i18n-filterLtOperator="kendo.gantt.filterLtOperator|The text of the less than filter operator"
7538
+ filterLtOperator="Is less than"
7459
7539
 
7460
- i18n-filterIsTrue="kendo.gantt.filterIsTrue|The text of the IsTrue boolean filter option"
7461
- filterIsTrue="Is True"
7540
+ i18n-filterIsTrue="kendo.gantt.filterIsTrue|The text of the IsTrue boolean filter option"
7541
+ filterIsTrue="Is True"
7462
7542
 
7463
- i18n-filterIsFalse="kendo.gantt.filterIsFalse|The text of the IsFalse boolean filter option"
7464
- filterIsFalse="Is False"
7543
+ i18n-filterIsFalse="kendo.gantt.filterIsFalse|The text of the IsFalse boolean filter option"
7544
+ filterIsFalse="Is False"
7465
7545
 
7466
- i18n-filterBooleanAll="kendo.gantt.filterBooleanAll|The text of the (All) boolean filter option"
7467
- filterBooleanAll="(All)"
7546
+ i18n-filterBooleanAll="kendo.gantt.filterBooleanAll|The text of the (All) boolean filter option"
7547
+ filterBooleanAll="(All)"
7468
7548
 
7469
- i18n-filterAfterOrEqualOperator="kendo.gantt.filterAfterOrEqualOperator|The text of the after or equal date filter operator"
7470
- filterAfterOrEqualOperator="Is after or equal to"
7549
+ i18n-filterAfterOrEqualOperator="kendo.gantt.filterAfterOrEqualOperator|The text of the after or equal date filter operator"
7550
+ filterAfterOrEqualOperator="Is after or equal to"
7471
7551
 
7472
- i18n-filterAfterOperator="kendo.gantt.filterAfterOperator|The text of the after date filter operator"
7473
- filterAfterOperator="Is after"
7552
+ i18n-filterAfterOperator="kendo.gantt.filterAfterOperator|The text of the after date filter operator"
7553
+ filterAfterOperator="Is after"
7474
7554
 
7475
- i18n-filterBeforeOperator="kendo.gantt.filterBeforeOperator|The text of the before date filter operator"
7476
- filterBeforeOperator="Is before"
7555
+ i18n-filterBeforeOperator="kendo.gantt.filterBeforeOperator|The text of the before date filter operator"
7556
+ filterBeforeOperator="Is before"
7477
7557
 
7478
- i18n-filterBeforeOrEqualOperator="kendo.gantt.filterBeforeOrEqualOperator|The text of the before or equal date filter operator"
7479
- filterBeforeOrEqualOperator="Is before or equal to"
7558
+ i18n-filterBeforeOrEqualOperator="kendo.gantt.filterBeforeOrEqualOperator|The text of the before or equal date filter operator"
7559
+ filterBeforeOrEqualOperator="Is before or equal to"
7480
7560
 
7481
- i18n-filterFilterButton="kendo.gantt.filterFilterButton|The text of the filter button"
7482
- filterFilterButton="Filter"
7561
+ i18n-filterFilterButton="kendo.gantt.filterFilterButton|The text of the filter button"
7562
+ filterFilterButton="Filter"
7483
7563
 
7484
- i18n-filterClearButton="kendo.gantt.filterClearButton|The text of the clear filter button"
7485
- filterClearButton="Clear"
7564
+ i18n-filterClearButton="kendo.gantt.filterClearButton|The text of the clear filter button"
7565
+ filterClearButton="Clear"
7486
7566
 
7487
- i18n-filterAndLogic="kendo.gantt.filterAndLogic|The text of the And filter logic"
7488
- filterAndLogic="And"
7567
+ i18n-filterAndLogic="kendo.gantt.filterAndLogic|The text of the And filter logic"
7568
+ filterAndLogic="And"
7489
7569
 
7490
- i18n-filterOrLogic="kendo.gantt.filterOrLogic|The text of the Or filter logic"
7491
- filterOrLogic="Or"
7570
+ i18n-filterOrLogic="kendo.gantt.filterOrLogic|The text of the Or filter logic"
7571
+ filterOrLogic="Or"
7492
7572
 
7493
- i18n-loading="kendo.gantt.loading|The loading text"
7494
- loading="Loading"
7573
+ i18n-loading="kendo.gantt.loading|The loading text"
7574
+ loading="Loading"
7495
7575
 
7496
- i18n-columnMenu="kendo.gantt.columnMenu|The title of the column menu icon"
7497
- columnMenu="Column Menu"
7576
+ i18n-columnMenu="kendo.gantt.columnMenu|The title of the column menu icon"
7577
+ columnMenu="Column Menu"
7498
7578
 
7499
- i18n-columns="kendo.gantt.columns|The text shown in the column menu for the columns item"
7500
- columns="Columns"
7579
+ i18n-columns="kendo.gantt.columns|The text shown in the column menu for the columns item"
7580
+ columns="Columns"
7501
7581
 
7502
- i18n-lock-disabled="kendo.gantt.lock|The text shown in the column menu for the lock item"
7503
- lock-disabled="Lock"
7582
+ i18n-lock-disabled="kendo.gantt.lock|The text shown in the column menu for the lock item"
7583
+ lock-disabled="Lock"
7504
7584
 
7505
- i18n-unlock-disabled="kendo.gantt.unlock|The text shown in the column menu for the unlock item"
7506
- unlock-disabled="Unlock"
7585
+ i18n-unlock-disabled="kendo.gantt.unlock|The text shown in the column menu for the unlock item"
7586
+ unlock-disabled="Unlock"
7507
7587
 
7508
- i18n-sortable="kendo.gantt.sortable|The label of the sort icon"
7509
- sortable="Sortable"
7588
+ i18n-sortable="kendo.gantt.sortable|The label of the sort icon"
7589
+ sortable="Sortable"
7510
7590
 
7511
- i18n-sortAscending="kendo.gantt.sortAscending|The text shown in the column menu for the sort ascending item"
7512
- sortAscending="Sort Ascending"
7591
+ i18n-sortAscending="kendo.gantt.sortAscending|The text shown in the column menu for the sort ascending item"
7592
+ sortAscending="Sort Ascending"
7513
7593
 
7514
- i18n-sortDescending="kendo.gantt.sortDescending|The text shown in the column menu for the sort descending item"
7515
- sortDescending="Sort Descending"
7594
+ i18n-sortDescending="kendo.gantt.sortDescending|The text shown in the column menu for the sort descending item"
7595
+ sortDescending="Sort Descending"
7516
7596
 
7517
- i18n-sortedDefault="kendo.gantt.sortedDefault|The status announcement when a column is no longer sorted"
7518
- sortedDefault="Not Sorted"
7597
+ i18n-sortedDefault="kendo.gantt.sortedDefault|The status announcement when a column is no longer sorted"
7598
+ sortedDefault="Not Sorted"
7519
7599
 
7520
- i18n-columnsApply="kendo.gantt.columnsApply|The text shown in the column menu or column chooser for the columns apply button"
7521
- columnsApply="Apply"
7600
+ i18n-columnsApply="kendo.gantt.columnsApply|The text shown in the column menu or column chooser for the columns apply button"
7601
+ columnsApply="Apply"
7522
7602
 
7523
- i18n-columnsReset="kendo.gantt.columnsReset|The text shown in the column menu or column chooser for the columns reset button"
7524
- columnsReset="Reset"
7603
+ i18n-columnsReset="kendo.gantt.columnsReset|The text shown in the column menu or column chooser for the columns reset button"
7604
+ columnsReset="Reset"
7525
7605
 
7526
- i18n-tooltipStartDateText="kendo.gantt.tooltipStartDateText|The text shown in the task tooltip before the task start date"
7527
- tooltipStartDateText="Start"
7606
+ i18n-tooltipStartDateText="kendo.gantt.tooltipStartDateText|The text shown in the task tooltip before the task start date"
7607
+ tooltipStartDateText="Start"
7528
7608
 
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')"
7609
+ i18n-tooltipEndDateText="kendo.gantt.tooltipEndDateText|The text shown in the task tooltip before the task end date"
7610
+ tooltipEndDateText="End"></ng-container>
7611
+ @if (showToolbar('top')) {
7612
+ <kendo-gantt-toolbar
7533
7613
  [attr.aria-label]="toolbarAriaLabel"
7534
7614
  [showAddTask]="toolbarSettings.addTaskTool === 'top' || toolbarSettings.addTaskTool === 'both'"
7535
7615
  [showViewSelector]="toolbarSettings.viewSelectorTool === 'top' || toolbarSettings.viewSelectorTool === 'both'"
@@ -7539,142 +7619,144 @@ class GanttComponent {
7539
7619
  class="k-gantt-header"
7540
7620
  position="top"
7541
7621
  [navigable]="navigable"
7542
- (activeViewChange)="changeActiveView($event)"></kendo-gantt-toolbar>
7622
+ (activeViewChange)="changeActiveView($event)"></kendo-gantt-toolbar>
7623
+ }
7543
7624
  <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)"
7625
+ <kendo-splitter [style.border]="0">
7626
+ <kendo-splitter-pane
7627
+ class="k-gantt-treelist k-gantt-treelist-scrollable"
7628
+ [collapsible]="treeListPaneOptions?.collapsible"
7629
+ [collapsed]="treeListPaneOptions?.collapsed"
7630
+ (collapsedChange)="onTreeListCollapsedChange($event)"
7631
+ [scrollable]="false">
7632
+ <kendo-treelist
7633
+ [idField]="taskIdField"
7634
+ [columns]="columns"
7635
+ [data]="data"
7636
+ [hasChildren]="hasChildren"
7637
+ [fetchChildren]="fetchChildren"
7638
+ [navigable]="navigable"
7639
+ [isExpanded]="isExpanded"
7640
+ [autoSize]="columnsAutoSize"
7641
+ [columnMenu]="columnMenu"
7642
+ [reorderable]="columnsReorderable"
7643
+ [resizable]="columnsResizable"
7644
+ [rowClass]="rowClass"
7645
+ [isSelected]="isSelected"
7646
+ [selectable]="selectable"
7647
+ [sortable]="sortable"
7648
+ [sort]="sort"
7649
+ [filterable]="filterMenu"
7650
+ [filter]="filter"
7651
+ (filterChange)="filterChange.emit($event)"
7652
+ (sortChange)="sortChange.emit($event)"
7572
7653
  (dataStateChange)="dataStateChange.emit({
7573
7654
  filter: $event.filter,
7574
7655
  sort: $event.sort
7575
7656
  })"
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)"
7657
+ (expandStateChange)="expandStateChange.emit($event)"
7658
+ (expand)="rowExpand.emit({ dataItem: $event.dataItem })"
7659
+ (collapse)="rowCollapse.emit({ dataItem: $event.dataItem })"
7660
+ (columnReorder)="columnReorder.emit($event)"
7661
+ (columnResize)="columnResize.emit($event)"
7662
+ (columnVisibilityChange)="handleColumnVisibilityChange($event)"
7663
+ (columnLockedChange)="columnLockedChange.emit($event)"
7664
+ (selectionChange)="handleTreeListSelectionChange($event)"
7665
+ (cellClick)="handleTreeListCellClick($event)"
7666
+ (cellClose)="handleCellClose($event)"
7586
7667
  [kendoEventsOutsideAngular]="{
7587
7668
  dblclick: handleTreeListDoubleClick
7588
7669
  }"
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"
7670
+ [scope]="this"
7671
+ >
7672
+ <kendo-treelist-messages
7673
+ [noRecords]="getText('noRecords')"
7674
+ [filter]="getText('filter')"
7675
+ [filterEqOperator]="getText('filterEqOperator')"
7676
+ [filterNotEqOperator]="getText('filterNotEqOperator')"
7677
+ [filterIsNullOperator]="getText('filterIsNullOperator')"
7678
+ [filterIsNotNullOperator]="getText('filterIsNotNullOperator')"
7679
+ [filterIsEmptyOperator]="getText('filterIsEmptyOperator')"
7680
+ [filterIsNotEmptyOperator]="getText('filterIsNotEmptyOperator')"
7681
+ [filterStartsWithOperator]="getText('filterStartsWithOperator')"
7682
+ [filterContainsOperator]="getText('filterContainsOperator')"
7683
+ [filterNotContainsOperator]="getText('filterNotContainsOperator')"
7684
+ [filterEndsWithOperator]="getText('filterEndsWithOperator')"
7685
+ [filterGteOperator]="getText('filterGteOperator')"
7686
+ [filterGtOperator]="getText('filterGtOperator')"
7687
+ [filterLteOperator]="getText('filterLteOperator')"
7688
+ [filterLtOperator]="getText('filterLtOperator')"
7689
+ [filterIsTrue]="getText('filterIsTrue')"
7690
+ [filterIsFalse]="getText('filterIsFalse')"
7691
+ [filterBooleanAll]="getText('filterBooleanAll')"
7692
+ [filterAfterOrEqualOperator]="getText('filterAfterOrEqualOperator')"
7693
+ [filterAfterOperator]="getText('filterAfterOperator')"
7694
+ [filterBeforeOperator]="getText('filterBeforeOperator')"
7695
+ [filterBeforeOrEqualOperator]="getText('filterBeforeOrEqualOperator')"
7696
+ [filterFilterButton]="getText('filterFilterButton')"
7697
+ [filterClearButton]="getText('filterClearButton')"
7698
+ [filterAndLogic]="getText('filterAndLogic')"
7699
+ [filterOrLogic]="getText('filterOrLogic')"
7700
+ [loading]="getText('loading')"
7701
+ [columnMenu]="getText('columnMenu')"
7702
+ [columns]="getText('columns')"
7703
+ [sortable]="getText('sortable')"
7704
+ [sortAscending]="getText('sortAscending')"
7705
+ [sortDescending]="getText('sortDescending')"
7706
+ [sortedAscending]="getText('sortedAscending')"
7707
+ [sortedDescending]="getText('sortedDescending')"
7708
+ [sortedDefault]="getText('sortedDefault')"
7709
+ [columnsApply]="getText('columnsApply')"
7710
+ [columnsReset]="getText('columnsReset')"
7711
+ >
7712
+ </kendo-treelist-messages>
7713
+ </kendo-treelist>
7714
+ </kendo-splitter-pane>
7715
+ <kendo-splitter-pane
7716
+ [collapsible]="timelinePaneOptions?.collapsible"
7717
+ [resizable]="timelinePaneOptions?.resizable"
7718
+ [collapsed]="timelinePaneOptions?.collapsed"
7719
+ [min]="timelinePaneOptions?.min"
7720
+ [max]="timelinePaneOptions?.max"
7721
+ [size]="timelinePaneOptions?.size"
7722
+ (collapsedChange)="onTimelineCollapsedChange($event)"
7723
+ (sizeChange)="onTimelinePaneSizeChange($event)"
7724
+ [scrollable]="false"
7725
+ class="k-gantt-timeline-pane">
7726
+ @if (views && views.length) {
7727
+ <kendo-gantt-timeline
7728
+ [renderDependencyDragClues]="renderDependencyDragClues"
7729
+ [dragScrollSettings]="dragScrollSettings"
7730
+ [rows]="viewItems"
7731
+ [slots]="timelineSlots"
7732
+ [currentTimeMarker]="activeViewCurrentTimeMarker"
7733
+ [groupSlots]="timelineGroupSlots"
7734
+ [tableWidth]="tableWidth"
7735
+ [activeView]="activeView"
7736
+ [taskContentTemplate]="taskContentTemplate?.templateRef"
7737
+ [taskTemplate]="taskTemplate?.templateRef"
7738
+ [summaryTaskTemplate]="summaryTaskTemplate?.templateRef"
7739
+ [taskClass]="taskClass"
7740
+ [dependencies]="dependencies"
7741
+ [isExpanded]="isExpanded"
7742
+ [selectable]="selectable"
7743
+ [isTaskSelected]="isTaskSelected"
7663
7744
  [kendoEventsOutsideAngular]="{
7664
7745
  click: handleTimelineClick,
7665
7746
  contextmenu: handleTimelineRightClick,
7666
7747
  dblclick: handleTimelineDblClick,
7667
7748
  mousedown: handleTimelineMouseDown
7668
7749
  }"
7669
- [customTooltipTemplate]="taskTooltipTemplate"
7670
- [tooltipOptions]="taskTooltipOptions"
7671
- [scope]="this"
7672
- ></kendo-gantt-timeline>
7673
- </kendo-splitter-pane>
7674
- </kendo-splitter>
7750
+ [customTooltipTemplate]="taskTooltipTemplate"
7751
+ [tooltipOptions]="taskTooltipOptions"
7752
+ [scope]="this"
7753
+ ></kendo-gantt-timeline>
7754
+ }
7755
+ </kendo-splitter-pane>
7756
+ </kendo-splitter>
7675
7757
  </div>
7676
- <kendo-gantt-toolbar
7677
- *ngIf="showToolbar('bottom')"
7758
+ @if (showToolbar('bottom')) {
7759
+ <kendo-gantt-toolbar
7678
7760
  [attr.aria-label]="toolbarAriaLabel"
7679
7761
  [showAddTask]="toolbarSettings.addTaskTool === 'bottom' || toolbarSettings.addTaskTool === 'both'"
7680
7762
  [showViewSelector]="toolbarSettings.viewSelectorTool === 'bottom' || toolbarSettings.viewSelectorTool === 'both'"
@@ -7683,27 +7765,33 @@ class GanttComponent {
7683
7765
  [activeView]="activeView"
7684
7766
  [navigable]="navigable"
7685
7767
  class="k-gantt-footer"
7686
- position="bottom"></kendo-gantt-toolbar>
7687
- <kendo-gantt-edit-dialog
7688
- *ngIf="showEditingDialog"
7768
+ position="bottom"
7769
+ (activeViewChange)="changeActiveView($event)"></kendo-gantt-toolbar>
7770
+ }
7771
+ @if (showEditingDialog) {
7772
+ <kendo-gantt-edit-dialog
7689
7773
  [data]="data">
7690
- </kendo-gantt-edit-dialog>
7691
- <kendo-dialog
7692
- *ngIf="showConfirmationDialog"
7774
+ </kendo-gantt-edit-dialog>
7775
+ }
7776
+ @if (showConfirmationDialog) {
7777
+ <kendo-dialog
7693
7778
  [width]="575"
7694
7779
  [height]="170"
7695
7780
  [title]="getText('confirmationDialogTitle')"
7696
7781
  (close)="handleConfirmationDialogClose()">
7697
7782
  <span>{{ getText('confirmationDialogContent') }}</span>
7698
7783
  <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>
7784
+ <kendo-treelist-spacer></kendo-treelist-spacer>
7785
+ <button kendoButton [primary]="true" (click)="handleDeleteConfirmation()">{{ getText('deleteButtonText') }}</button>
7786
+ <button kendoButton (click)="handleConfirmationDialogClose()">{{ getText('cancelButtonText') }}</button>
7702
7787
  </kendo-dialog-actions>
7703
- </kendo-dialog>
7788
+ </kendo-dialog>
7789
+ }
7704
7790
 
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"] }] });
7791
+ @if (showLicenseWatermark) {
7792
+ <div kendoWatermarkOverlay [licenseMessage]="licenseMessage"></div>
7793
+ }
7794
+ `, 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
7795
  }
7708
7796
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: GanttComponent, decorators: [{
7709
7797
  type: Component,
@@ -7741,211 +7829,211 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
7741
7829
  ],
7742
7830
  template: `
7743
7831
  <ng-container kendoGanttLocalizedMessages
7744
- i18n-taskEditingGeneralTabTitle="kendo.gantt.taskEditingGeneralTabTitle|The title of the 'General' tab of the editing dialog TabStrip"
7745
- taskEditingGeneralTabTitle="General"
7832
+ i18n-taskEditingGeneralTabTitle="kendo.gantt.taskEditingGeneralTabTitle|The title of the 'General' tab of the editing dialog TabStrip"
7833
+ taskEditingGeneralTabTitle="General"
7746
7834
 
7747
- i18n-taskEditingPredecessorsTabTitle="kendo.gantt.taskEditingPredecessorsTabTitle|The title of the 'Predecessors' dependencies tab of the editing dialog TabStrip"
7748
- taskEditingPredecessorsTabTitle="Predecessors"
7835
+ i18n-taskEditingPredecessorsTabTitle="kendo.gantt.taskEditingPredecessorsTabTitle|The title of the 'Predecessors' dependencies tab of the editing dialog TabStrip"
7836
+ taskEditingPredecessorsTabTitle="Predecessors"
7749
7837
 
7750
- i18n-taskEditingSuccessorsTabTitle="kendo.gantt.taskEditingSuccessorsTabTitle|The title of the 'Successors' dependencies tab of the editing dialog TabStrip"
7751
- taskEditingSuccessorsTabTitle="Successors"
7838
+ i18n-taskEditingSuccessorsTabTitle="kendo.gantt.taskEditingSuccessorsTabTitle|The title of the 'Successors' dependencies tab of the editing dialog TabStrip"
7839
+ taskEditingSuccessorsTabTitle="Successors"
7752
7840
 
7753
- i18n-taskEditingDependenciesAddButtonText="kendo.gantt.taskEditingDependenciesAddButtonText|The text of the 'Add' button in the dependencies tabs of the editing dialog TabStrip"
7754
- taskEditingDependenciesAddButtonText="Add"
7841
+ i18n-taskEditingDependenciesAddButtonText="kendo.gantt.taskEditingDependenciesAddButtonText|The text of the 'Add' button in the dependencies tabs of the editing dialog TabStrip"
7842
+ taskEditingDependenciesAddButtonText="Add"
7755
7843
 
7756
- i18n-taskEditingDependenciesRemoveButtonText="kendo.gantt.taskEditingDependenciesRemoveButtonText|The text of the 'Remove' button in the dependencies tabs of the editing dialog TabStrip"
7757
- taskEditingDependenciesRemoveButtonText="Remove"
7844
+ i18n-taskEditingDependenciesRemoveButtonText="kendo.gantt.taskEditingDependenciesRemoveButtonText|The text of the 'Remove' button in the dependencies tabs of the editing dialog TabStrip"
7845
+ taskEditingDependenciesRemoveButtonText="Remove"
7758
7846
 
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"
7847
+ i18n-taskEditingDependenciesGridNameColumnTitle="kendo.gantt.taskEditingDependenciesGridNameColumnTitle|The title of the 'Task Title' Grid column in the dependencies tabs of the editing dialog TabStrip"
7848
+ taskEditingDependenciesGridNameColumnTitle="Task Title"
7761
7849
 
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"
7850
+ i18n-taskEditingDependenciesGridTypeColumnTitle="kendo.gantt.taskEditingDependenciesGridTypeColumnTitle|The title of the 'Type' Grid column in the dependencies tabs of the editing dialog TabStrip"
7851
+ taskEditingDependenciesGridTypeColumnTitle="Type"
7764
7852
 
7765
- i18n-taskDeleteLabel="kendo.gantt.taskDeleteLabel|The label of the task delete icon"
7766
- taskDeleteLabel="Delete"
7853
+ i18n-taskDeleteLabel="kendo.gantt.taskDeleteLabel|The label of the task delete icon"
7854
+ taskDeleteLabel="Delete"
7767
7855
 
7768
- i18n-taskEditingDialogTitle="kendo.gantt.taskEditingDialogTitle|The title of the task editing dialog"
7769
- taskEditingDialogTitle="Editing Task"
7856
+ i18n-taskEditingDialogTitle="kendo.gantt.taskEditingDialogTitle|The title of the task editing dialog"
7857
+ taskEditingDialogTitle="Editing Task"
7770
7858
 
7771
- i18n-taskEditingDialogCloseTitle="kendo.gantt.taskEditingDialogCloseTitle|The title of the task editing dialog close button"
7772
- taskEditingDialogCloseTitle="Close"
7859
+ i18n-taskEditingDialogCloseTitle="kendo.gantt.taskEditingDialogCloseTitle|The title of the task editing dialog close button"
7860
+ taskEditingDialogCloseTitle="Close"
7773
7861
 
7774
- i18n-confirmationDialogCloseTitle="kendo.gantt.confirmationDialogCloseTitle|The title of the confirmation dialog close button"
7775
- confirmationDialogCloseTitle="Close"
7862
+ i18n-confirmationDialogCloseTitle="kendo.gantt.confirmationDialogCloseTitle|The title of the confirmation dialog close button"
7863
+ confirmationDialogCloseTitle="Close"
7776
7864
 
7777
- i18n-confirmationDialogTitle="kendo.gantt.confirmationDialogTitle|The title of the delete task confirmation dialog"
7778
- confirmationDialogTitle="Delete Task"
7865
+ i18n-confirmationDialogTitle="kendo.gantt.confirmationDialogTitle|The title of the delete task confirmation dialog"
7866
+ confirmationDialogTitle="Delete Task"
7779
7867
 
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?"
7868
+ i18n-confirmationDialogContent="kendo.gantt.confirmationDialogContent|The content of the delete task confirmation dialog"
7869
+ confirmationDialogContent="Are you sure you want to delete this task?"
7782
7870
 
7783
- i18n-deleteButtonText="kendo.gantt.deleteButtonText|The text of the task editing dialog 'Delete' button"
7784
- deleteButtonText="Delete"
7871
+ i18n-deleteButtonText="kendo.gantt.deleteButtonText|The text of the task editing dialog 'Delete' button"
7872
+ deleteButtonText="Delete"
7785
7873
 
7786
- i18n-cancelButtonText="kendo.gantt.cancelButtonText|The text of the task editing dialog 'Cancel' button"
7787
- cancelButtonText="Cancel"
7874
+ i18n-cancelButtonText="kendo.gantt.cancelButtonText|The text of the task editing dialog 'Cancel' button"
7875
+ cancelButtonText="Cancel"
7788
7876
 
7789
- i18n-saveButtonText="kendo.gantt.saveButtonText|The text of the task editing dialog 'Save' button"
7790
- saveButtonText="Save"
7877
+ i18n-saveButtonText="kendo.gantt.saveButtonText|The text of the task editing dialog 'Save' button"
7878
+ saveButtonText="Save"
7791
7879
 
7792
- i18n-titleFieldInputLabel="kendo.gantt.titleFieldInputLabel|The label of the 'title' field input in editing mode"
7793
- titleFieldInputLabel="Title"
7880
+ i18n-titleFieldInputLabel="kendo.gantt.titleFieldInputLabel|The label of the 'title' field input in editing mode"
7881
+ titleFieldInputLabel="Title"
7794
7882
 
7795
- i18n-startFieldInputLabel="kendo.gantt.startFieldInputLabel|The label of the 'start' field input in editing mode"
7796
- startFieldInputLabel="Start"
7883
+ i18n-startFieldInputLabel="kendo.gantt.startFieldInputLabel|The label of the 'start' field input in editing mode"
7884
+ startFieldInputLabel="Start"
7797
7885
 
7798
- i18n-endFieldInputLabel="kendo.gantt.endFieldInputLabel|The label of the 'end' field input in editing mode"
7799
- endFieldInputLabel="End"
7886
+ i18n-endFieldInputLabel="kendo.gantt.endFieldInputLabel|The label of the 'end' field input in editing mode"
7887
+ endFieldInputLabel="End"
7800
7888
 
7801
- i18n-completionRatioFieldInputLabel="kendo.gantt.completionRatioFieldInputLabel|The label of the 'completionRatio' field input in editing mode"
7802
- completionRatioFieldInputLabel="Progress"
7889
+ i18n-completionRatioFieldInputLabel="kendo.gantt.completionRatioFieldInputLabel|The label of the 'completionRatio' field input in editing mode"
7890
+ completionRatioFieldInputLabel="Progress"
7803
7891
 
7804
- i18n-dayViewText="kendo.gantt.dayViewText|The text of the day view in the ViewSelector component"
7805
- dayViewText="Day"
7892
+ i18n-dayViewText="kendo.gantt.dayViewText|The text of the day view in the ViewSelector component"
7893
+ dayViewText="Day"
7806
7894
 
7807
- i18n-weekViewText="kendo.gantt.weekViewText|The text of the week view in the ViewSelector component"
7808
- weekViewText="Week"
7895
+ i18n-weekViewText="kendo.gantt.weekViewText|The text of the week view in the ViewSelector component"
7896
+ weekViewText="Week"
7809
7897
 
7810
- i18n-monthViewText="kendo.gantt.monthViewText|The text of the month view in the ViewSelector component"
7811
- monthViewText="Month"
7898
+ i18n-monthViewText="kendo.gantt.monthViewText|The text of the month view in the ViewSelector component"
7899
+ monthViewText="Month"
7812
7900
 
7813
- i18n-yearViewText-disabled="kendo.gantt.yearViewText|The text of the year view in the ViewSelector component"
7814
- yearViewText="Year"
7901
+ i18n-yearViewText-disabled="kendo.gantt.yearViewText|The text of the year view in the ViewSelector component"
7902
+ yearViewText="Year"
7815
7903
 
7816
- i18n-addTaskText="kendo.gantt.addTaskText|The text of the DropDownButton in the AddTask component"
7817
- addTaskText="Add Task"
7904
+ i18n-addTaskText="kendo.gantt.addTaskText|The text of the DropDownButton in the AddTask component"
7905
+ addTaskText="Add Task"
7818
7906
 
7819
- i18n-addChildText="kendo.gantt.addChildText|The text of the 'Add Child' option in the AddTask component"
7820
- addChildText="Add Child"
7907
+ i18n-addChildText="kendo.gantt.addChildText|The text of the 'Add Child' option in the AddTask component"
7908
+ addChildText="Add Child"
7821
7909
 
7822
- i18n-addAboveText="kendo.gantt.addAboveText|The text of the 'Add Above' option in the AddTask component"
7823
- addAboveText="Add Above"
7910
+ i18n-addAboveText="kendo.gantt.addAboveText|The text of the 'Add Above' option in the AddTask component"
7911
+ addAboveText="Add Above"
7824
7912
 
7825
- i18n-addBelowText="kendo.gantt.addBelowText|The text of the 'Add Below' option in the AddTask component"
7826
- addBelowText="Add Below"
7913
+ i18n-addBelowText="kendo.gantt.addBelowText|The text of the 'Add Below' option in the AddTask component"
7914
+ addBelowText="Add Below"
7827
7915
 
7828
- i18n-noRecords="kendo.gantt.noRecords|The label visible in the TreeList when there are no records"
7829
- noRecords="No records available."
7916
+ i18n-noRecords="kendo.gantt.noRecords|The label visible in the TreeList when there are no records"
7917
+ noRecords="No records available."
7830
7918
 
7831
- i18n-filter="kendo.gantt.filter|The label of the filter cell or icon"
7832
- filter="Filter"
7919
+ i18n-filter="kendo.gantt.filter|The label of the filter cell or icon"
7920
+ filter="Filter"
7833
7921
 
7834
- i18n-filterEqOperator="kendo.gantt.filterEqOperator|The text of the equal filter operator"
7835
- filterEqOperator="Is equal to"
7922
+ i18n-filterEqOperator="kendo.gantt.filterEqOperator|The text of the equal filter operator"
7923
+ filterEqOperator="Is equal to"
7836
7924
 
7837
- i18n-filterNotEqOperator="kendo.gantt.filterNotEqOperator|The text of the not equal filter operator"
7838
- filterNotEqOperator="Is not equal to"
7925
+ i18n-filterNotEqOperator="kendo.gantt.filterNotEqOperator|The text of the not equal filter operator"
7926
+ filterNotEqOperator="Is not equal to"
7839
7927
 
7840
- i18n-filterIsNullOperator="kendo.gantt.filterIsNullOperator|The text of the is null filter operator"
7841
- filterIsNullOperator="Is null"
7928
+ i18n-filterIsNullOperator="kendo.gantt.filterIsNullOperator|The text of the is null filter operator"
7929
+ filterIsNullOperator="Is null"
7842
7930
 
7843
- i18n-filterIsNotNullOperator="kendo.gantt.filterIsNotNullOperator|The text of the is not null filter operator"
7844
- filterIsNotNullOperator="Is not null"
7931
+ i18n-filterIsNotNullOperator="kendo.gantt.filterIsNotNullOperator|The text of the is not null filter operator"
7932
+ filterIsNotNullOperator="Is not null"
7845
7933
 
7846
- i18n-filterIsEmptyOperator="kendo.gantt.filterIsEmptyOperator|The text of the is empty filter operator"
7847
- filterIsEmptyOperator="Is empty"
7934
+ i18n-filterIsEmptyOperator="kendo.gantt.filterIsEmptyOperator|The text of the is empty filter operator"
7935
+ filterIsEmptyOperator="Is empty"
7848
7936
 
7849
- i18n-filterIsNotEmptyOperator="kendo.gantt.filterIsNotEmptyOperator|The text of the is not empty filter operator"
7850
- filterIsNotEmptyOperator="Is not empty"
7937
+ i18n-filterIsNotEmptyOperator="kendo.gantt.filterIsNotEmptyOperator|The text of the is not empty filter operator"
7938
+ filterIsNotEmptyOperator="Is not empty"
7851
7939
 
7852
- i18n-filterStartsWithOperator="kendo.gantt.filterStartsWithOperator|The text of the starts with filter operator"
7853
- filterStartsWithOperator="Starts with"
7940
+ i18n-filterStartsWithOperator="kendo.gantt.filterStartsWithOperator|The text of the starts with filter operator"
7941
+ filterStartsWithOperator="Starts with"
7854
7942
 
7855
- i18n-filterContainsOperator="kendo.gantt.filterContainsOperator|The text of the contains filter operator"
7856
- filterContainsOperator="Contains"
7943
+ i18n-filterContainsOperator="kendo.gantt.filterContainsOperator|The text of the contains filter operator"
7944
+ filterContainsOperator="Contains"
7857
7945
 
7858
- i18n-filterNotContainsOperator="kendo.gantt.filterNotContainsOperator|The text of the does not contain filter operator"
7859
- filterNotContainsOperator="Does not contain"
7946
+ i18n-filterNotContainsOperator="kendo.gantt.filterNotContainsOperator|The text of the does not contain filter operator"
7947
+ filterNotContainsOperator="Does not contain"
7860
7948
 
7861
- i18n-filterEndsWithOperator="kendo.gantt.filterEndsWithOperator|The text of the ends with filter operator"
7862
- filterEndsWithOperator="Ends with"
7949
+ i18n-filterEndsWithOperator="kendo.gantt.filterEndsWithOperator|The text of the ends with filter operator"
7950
+ filterEndsWithOperator="Ends with"
7863
7951
 
7864
- i18n-filterGteOperator="kendo.gantt.filterGteOperator|The text of the greater than or equal filter operator"
7865
- filterGteOperator="Is greater than or equal to"
7952
+ i18n-filterGteOperator="kendo.gantt.filterGteOperator|The text of the greater than or equal filter operator"
7953
+ filterGteOperator="Is greater than or equal to"
7866
7954
 
7867
- i18n-filterGtOperator="kendo.gantt.filterGtOperator|The text of the greater than filter operator"
7868
- filterGtOperator="Is greater than"
7955
+ i18n-filterGtOperator="kendo.gantt.filterGtOperator|The text of the greater than filter operator"
7956
+ filterGtOperator="Is greater than"
7869
7957
 
7870
- i18n-filterLteOperator="kendo.gantt.filterLteOperator|The text of the less than or equal filter operator"
7871
- filterLteOperator="Is less than or equal to"
7958
+ i18n-filterLteOperator="kendo.gantt.filterLteOperator|The text of the less than or equal filter operator"
7959
+ filterLteOperator="Is less than or equal to"
7872
7960
 
7873
- i18n-filterLtOperator="kendo.gantt.filterLtOperator|The text of the less than filter operator"
7874
- filterLtOperator="Is less than"
7961
+ i18n-filterLtOperator="kendo.gantt.filterLtOperator|The text of the less than filter operator"
7962
+ filterLtOperator="Is less than"
7875
7963
 
7876
- i18n-filterIsTrue="kendo.gantt.filterIsTrue|The text of the IsTrue boolean filter option"
7877
- filterIsTrue="Is True"
7964
+ i18n-filterIsTrue="kendo.gantt.filterIsTrue|The text of the IsTrue boolean filter option"
7965
+ filterIsTrue="Is True"
7878
7966
 
7879
- i18n-filterIsFalse="kendo.gantt.filterIsFalse|The text of the IsFalse boolean filter option"
7880
- filterIsFalse="Is False"
7967
+ i18n-filterIsFalse="kendo.gantt.filterIsFalse|The text of the IsFalse boolean filter option"
7968
+ filterIsFalse="Is False"
7881
7969
 
7882
- i18n-filterBooleanAll="kendo.gantt.filterBooleanAll|The text of the (All) boolean filter option"
7883
- filterBooleanAll="(All)"
7970
+ i18n-filterBooleanAll="kendo.gantt.filterBooleanAll|The text of the (All) boolean filter option"
7971
+ filterBooleanAll="(All)"
7884
7972
 
7885
- i18n-filterAfterOrEqualOperator="kendo.gantt.filterAfterOrEqualOperator|The text of the after or equal date filter operator"
7886
- filterAfterOrEqualOperator="Is after or equal to"
7973
+ i18n-filterAfterOrEqualOperator="kendo.gantt.filterAfterOrEqualOperator|The text of the after or equal date filter operator"
7974
+ filterAfterOrEqualOperator="Is after or equal to"
7887
7975
 
7888
- i18n-filterAfterOperator="kendo.gantt.filterAfterOperator|The text of the after date filter operator"
7889
- filterAfterOperator="Is after"
7976
+ i18n-filterAfterOperator="kendo.gantt.filterAfterOperator|The text of the after date filter operator"
7977
+ filterAfterOperator="Is after"
7890
7978
 
7891
- i18n-filterBeforeOperator="kendo.gantt.filterBeforeOperator|The text of the before date filter operator"
7892
- filterBeforeOperator="Is before"
7979
+ i18n-filterBeforeOperator="kendo.gantt.filterBeforeOperator|The text of the before date filter operator"
7980
+ filterBeforeOperator="Is before"
7893
7981
 
7894
- i18n-filterBeforeOrEqualOperator="kendo.gantt.filterBeforeOrEqualOperator|The text of the before or equal date filter operator"
7895
- filterBeforeOrEqualOperator="Is before or equal to"
7982
+ i18n-filterBeforeOrEqualOperator="kendo.gantt.filterBeforeOrEqualOperator|The text of the before or equal date filter operator"
7983
+ filterBeforeOrEqualOperator="Is before or equal to"
7896
7984
 
7897
- i18n-filterFilterButton="kendo.gantt.filterFilterButton|The text of the filter button"
7898
- filterFilterButton="Filter"
7985
+ i18n-filterFilterButton="kendo.gantt.filterFilterButton|The text of the filter button"
7986
+ filterFilterButton="Filter"
7899
7987
 
7900
- i18n-filterClearButton="kendo.gantt.filterClearButton|The text of the clear filter button"
7901
- filterClearButton="Clear"
7988
+ i18n-filterClearButton="kendo.gantt.filterClearButton|The text of the clear filter button"
7989
+ filterClearButton="Clear"
7902
7990
 
7903
- i18n-filterAndLogic="kendo.gantt.filterAndLogic|The text of the And filter logic"
7904
- filterAndLogic="And"
7991
+ i18n-filterAndLogic="kendo.gantt.filterAndLogic|The text of the And filter logic"
7992
+ filterAndLogic="And"
7905
7993
 
7906
- i18n-filterOrLogic="kendo.gantt.filterOrLogic|The text of the Or filter logic"
7907
- filterOrLogic="Or"
7994
+ i18n-filterOrLogic="kendo.gantt.filterOrLogic|The text of the Or filter logic"
7995
+ filterOrLogic="Or"
7908
7996
 
7909
- i18n-loading="kendo.gantt.loading|The loading text"
7910
- loading="Loading"
7997
+ i18n-loading="kendo.gantt.loading|The loading text"
7998
+ loading="Loading"
7911
7999
 
7912
- i18n-columnMenu="kendo.gantt.columnMenu|The title of the column menu icon"
7913
- columnMenu="Column Menu"
8000
+ i18n-columnMenu="kendo.gantt.columnMenu|The title of the column menu icon"
8001
+ columnMenu="Column Menu"
7914
8002
 
7915
- i18n-columns="kendo.gantt.columns|The text shown in the column menu for the columns item"
7916
- columns="Columns"
8003
+ i18n-columns="kendo.gantt.columns|The text shown in the column menu for the columns item"
8004
+ columns="Columns"
7917
8005
 
7918
- i18n-lock-disabled="kendo.gantt.lock|The text shown in the column menu for the lock item"
7919
- lock-disabled="Lock"
8006
+ i18n-lock-disabled="kendo.gantt.lock|The text shown in the column menu for the lock item"
8007
+ lock-disabled="Lock"
7920
8008
 
7921
- i18n-unlock-disabled="kendo.gantt.unlock|The text shown in the column menu for the unlock item"
7922
- unlock-disabled="Unlock"
8009
+ i18n-unlock-disabled="kendo.gantt.unlock|The text shown in the column menu for the unlock item"
8010
+ unlock-disabled="Unlock"
7923
8011
 
7924
- i18n-sortable="kendo.gantt.sortable|The label of the sort icon"
7925
- sortable="Sortable"
8012
+ i18n-sortable="kendo.gantt.sortable|The label of the sort icon"
8013
+ sortable="Sortable"
7926
8014
 
7927
- i18n-sortAscending="kendo.gantt.sortAscending|The text shown in the column menu for the sort ascending item"
7928
- sortAscending="Sort Ascending"
8015
+ i18n-sortAscending="kendo.gantt.sortAscending|The text shown in the column menu for the sort ascending item"
8016
+ sortAscending="Sort Ascending"
7929
8017
 
7930
- i18n-sortDescending="kendo.gantt.sortDescending|The text shown in the column menu for the sort descending item"
7931
- sortDescending="Sort Descending"
8018
+ i18n-sortDescending="kendo.gantt.sortDescending|The text shown in the column menu for the sort descending item"
8019
+ sortDescending="Sort Descending"
7932
8020
 
7933
- i18n-sortedDefault="kendo.gantt.sortedDefault|The status announcement when a column is no longer sorted"
7934
- sortedDefault="Not Sorted"
8021
+ i18n-sortedDefault="kendo.gantt.sortedDefault|The status announcement when a column is no longer sorted"
8022
+ sortedDefault="Not Sorted"
7935
8023
 
7936
- i18n-columnsApply="kendo.gantt.columnsApply|The text shown in the column menu or column chooser for the columns apply button"
7937
- columnsApply="Apply"
8024
+ i18n-columnsApply="kendo.gantt.columnsApply|The text shown in the column menu or column chooser for the columns apply button"
8025
+ columnsApply="Apply"
7938
8026
 
7939
- i18n-columnsReset="kendo.gantt.columnsReset|The text shown in the column menu or column chooser for the columns reset button"
7940
- columnsReset="Reset"
8027
+ i18n-columnsReset="kendo.gantt.columnsReset|The text shown in the column menu or column chooser for the columns reset button"
8028
+ columnsReset="Reset"
7941
8029
 
7942
- i18n-tooltipStartDateText="kendo.gantt.tooltipStartDateText|The text shown in the task tooltip before the task start date"
7943
- tooltipStartDateText="Start"
8030
+ i18n-tooltipStartDateText="kendo.gantt.tooltipStartDateText|The text shown in the task tooltip before the task start date"
8031
+ tooltipStartDateText="Start"
7944
8032
 
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')"
8033
+ i18n-tooltipEndDateText="kendo.gantt.tooltipEndDateText|The text shown in the task tooltip before the task end date"
8034
+ tooltipEndDateText="End"></ng-container>
8035
+ @if (showToolbar('top')) {
8036
+ <kendo-gantt-toolbar
7949
8037
  [attr.aria-label]="toolbarAriaLabel"
7950
8038
  [showAddTask]="toolbarSettings.addTaskTool === 'top' || toolbarSettings.addTaskTool === 'both'"
7951
8039
  [showViewSelector]="toolbarSettings.viewSelectorTool === 'top' || toolbarSettings.viewSelectorTool === 'both'"
@@ -7955,142 +8043,144 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
7955
8043
  class="k-gantt-header"
7956
8044
  position="top"
7957
8045
  [navigable]="navigable"
7958
- (activeViewChange)="changeActiveView($event)"></kendo-gantt-toolbar>
8046
+ (activeViewChange)="changeActiveView($event)"></kendo-gantt-toolbar>
8047
+ }
7959
8048
  <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)"
8049
+ <kendo-splitter [style.border]="0">
8050
+ <kendo-splitter-pane
8051
+ class="k-gantt-treelist k-gantt-treelist-scrollable"
8052
+ [collapsible]="treeListPaneOptions?.collapsible"
8053
+ [collapsed]="treeListPaneOptions?.collapsed"
8054
+ (collapsedChange)="onTreeListCollapsedChange($event)"
8055
+ [scrollable]="false">
8056
+ <kendo-treelist
8057
+ [idField]="taskIdField"
8058
+ [columns]="columns"
8059
+ [data]="data"
8060
+ [hasChildren]="hasChildren"
8061
+ [fetchChildren]="fetchChildren"
8062
+ [navigable]="navigable"
8063
+ [isExpanded]="isExpanded"
8064
+ [autoSize]="columnsAutoSize"
8065
+ [columnMenu]="columnMenu"
8066
+ [reorderable]="columnsReorderable"
8067
+ [resizable]="columnsResizable"
8068
+ [rowClass]="rowClass"
8069
+ [isSelected]="isSelected"
8070
+ [selectable]="selectable"
8071
+ [sortable]="sortable"
8072
+ [sort]="sort"
8073
+ [filterable]="filterMenu"
8074
+ [filter]="filter"
8075
+ (filterChange)="filterChange.emit($event)"
8076
+ (sortChange)="sortChange.emit($event)"
7988
8077
  (dataStateChange)="dataStateChange.emit({
7989
8078
  filter: $event.filter,
7990
8079
  sort: $event.sort
7991
8080
  })"
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)"
8081
+ (expandStateChange)="expandStateChange.emit($event)"
8082
+ (expand)="rowExpand.emit({ dataItem: $event.dataItem })"
8083
+ (collapse)="rowCollapse.emit({ dataItem: $event.dataItem })"
8084
+ (columnReorder)="columnReorder.emit($event)"
8085
+ (columnResize)="columnResize.emit($event)"
8086
+ (columnVisibilityChange)="handleColumnVisibilityChange($event)"
8087
+ (columnLockedChange)="columnLockedChange.emit($event)"
8088
+ (selectionChange)="handleTreeListSelectionChange($event)"
8089
+ (cellClick)="handleTreeListCellClick($event)"
8090
+ (cellClose)="handleCellClose($event)"
8002
8091
  [kendoEventsOutsideAngular]="{
8003
8092
  dblclick: handleTreeListDoubleClick
8004
8093
  }"
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"
8094
+ [scope]="this"
8095
+ >
8096
+ <kendo-treelist-messages
8097
+ [noRecords]="getText('noRecords')"
8098
+ [filter]="getText('filter')"
8099
+ [filterEqOperator]="getText('filterEqOperator')"
8100
+ [filterNotEqOperator]="getText('filterNotEqOperator')"
8101
+ [filterIsNullOperator]="getText('filterIsNullOperator')"
8102
+ [filterIsNotNullOperator]="getText('filterIsNotNullOperator')"
8103
+ [filterIsEmptyOperator]="getText('filterIsEmptyOperator')"
8104
+ [filterIsNotEmptyOperator]="getText('filterIsNotEmptyOperator')"
8105
+ [filterStartsWithOperator]="getText('filterStartsWithOperator')"
8106
+ [filterContainsOperator]="getText('filterContainsOperator')"
8107
+ [filterNotContainsOperator]="getText('filterNotContainsOperator')"
8108
+ [filterEndsWithOperator]="getText('filterEndsWithOperator')"
8109
+ [filterGteOperator]="getText('filterGteOperator')"
8110
+ [filterGtOperator]="getText('filterGtOperator')"
8111
+ [filterLteOperator]="getText('filterLteOperator')"
8112
+ [filterLtOperator]="getText('filterLtOperator')"
8113
+ [filterIsTrue]="getText('filterIsTrue')"
8114
+ [filterIsFalse]="getText('filterIsFalse')"
8115
+ [filterBooleanAll]="getText('filterBooleanAll')"
8116
+ [filterAfterOrEqualOperator]="getText('filterAfterOrEqualOperator')"
8117
+ [filterAfterOperator]="getText('filterAfterOperator')"
8118
+ [filterBeforeOperator]="getText('filterBeforeOperator')"
8119
+ [filterBeforeOrEqualOperator]="getText('filterBeforeOrEqualOperator')"
8120
+ [filterFilterButton]="getText('filterFilterButton')"
8121
+ [filterClearButton]="getText('filterClearButton')"
8122
+ [filterAndLogic]="getText('filterAndLogic')"
8123
+ [filterOrLogic]="getText('filterOrLogic')"
8124
+ [loading]="getText('loading')"
8125
+ [columnMenu]="getText('columnMenu')"
8126
+ [columns]="getText('columns')"
8127
+ [sortable]="getText('sortable')"
8128
+ [sortAscending]="getText('sortAscending')"
8129
+ [sortDescending]="getText('sortDescending')"
8130
+ [sortedAscending]="getText('sortedAscending')"
8131
+ [sortedDescending]="getText('sortedDescending')"
8132
+ [sortedDefault]="getText('sortedDefault')"
8133
+ [columnsApply]="getText('columnsApply')"
8134
+ [columnsReset]="getText('columnsReset')"
8135
+ >
8136
+ </kendo-treelist-messages>
8137
+ </kendo-treelist>
8138
+ </kendo-splitter-pane>
8139
+ <kendo-splitter-pane
8140
+ [collapsible]="timelinePaneOptions?.collapsible"
8141
+ [resizable]="timelinePaneOptions?.resizable"
8142
+ [collapsed]="timelinePaneOptions?.collapsed"
8143
+ [min]="timelinePaneOptions?.min"
8144
+ [max]="timelinePaneOptions?.max"
8145
+ [size]="timelinePaneOptions?.size"
8146
+ (collapsedChange)="onTimelineCollapsedChange($event)"
8147
+ (sizeChange)="onTimelinePaneSizeChange($event)"
8148
+ [scrollable]="false"
8149
+ class="k-gantt-timeline-pane">
8150
+ @if (views && views.length) {
8151
+ <kendo-gantt-timeline
8152
+ [renderDependencyDragClues]="renderDependencyDragClues"
8153
+ [dragScrollSettings]="dragScrollSettings"
8154
+ [rows]="viewItems"
8155
+ [slots]="timelineSlots"
8156
+ [currentTimeMarker]="activeViewCurrentTimeMarker"
8157
+ [groupSlots]="timelineGroupSlots"
8158
+ [tableWidth]="tableWidth"
8159
+ [activeView]="activeView"
8160
+ [taskContentTemplate]="taskContentTemplate?.templateRef"
8161
+ [taskTemplate]="taskTemplate?.templateRef"
8162
+ [summaryTaskTemplate]="summaryTaskTemplate?.templateRef"
8163
+ [taskClass]="taskClass"
8164
+ [dependencies]="dependencies"
8165
+ [isExpanded]="isExpanded"
8166
+ [selectable]="selectable"
8167
+ [isTaskSelected]="isTaskSelected"
8079
8168
  [kendoEventsOutsideAngular]="{
8080
8169
  click: handleTimelineClick,
8081
8170
  contextmenu: handleTimelineRightClick,
8082
8171
  dblclick: handleTimelineDblClick,
8083
8172
  mousedown: handleTimelineMouseDown
8084
8173
  }"
8085
- [customTooltipTemplate]="taskTooltipTemplate"
8086
- [tooltipOptions]="taskTooltipOptions"
8087
- [scope]="this"
8088
- ></kendo-gantt-timeline>
8089
- </kendo-splitter-pane>
8090
- </kendo-splitter>
8174
+ [customTooltipTemplate]="taskTooltipTemplate"
8175
+ [tooltipOptions]="taskTooltipOptions"
8176
+ [scope]="this"
8177
+ ></kendo-gantt-timeline>
8178
+ }
8179
+ </kendo-splitter-pane>
8180
+ </kendo-splitter>
8091
8181
  </div>
8092
- <kendo-gantt-toolbar
8093
- *ngIf="showToolbar('bottom')"
8182
+ @if (showToolbar('bottom')) {
8183
+ <kendo-gantt-toolbar
8094
8184
  [attr.aria-label]="toolbarAriaLabel"
8095
8185
  [showAddTask]="toolbarSettings.addTaskTool === 'bottom' || toolbarSettings.addTaskTool === 'both'"
8096
8186
  [showViewSelector]="toolbarSettings.viewSelectorTool === 'bottom' || toolbarSettings.viewSelectorTool === 'both'"
@@ -8099,29 +8189,35 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
8099
8189
  [activeView]="activeView"
8100
8190
  [navigable]="navigable"
8101
8191
  class="k-gantt-footer"
8102
- position="bottom"></kendo-gantt-toolbar>
8103
- <kendo-gantt-edit-dialog
8104
- *ngIf="showEditingDialog"
8192
+ position="bottom"
8193
+ (activeViewChange)="changeActiveView($event)"></kendo-gantt-toolbar>
8194
+ }
8195
+ @if (showEditingDialog) {
8196
+ <kendo-gantt-edit-dialog
8105
8197
  [data]="data">
8106
- </kendo-gantt-edit-dialog>
8107
- <kendo-dialog
8108
- *ngIf="showConfirmationDialog"
8198
+ </kendo-gantt-edit-dialog>
8199
+ }
8200
+ @if (showConfirmationDialog) {
8201
+ <kendo-dialog
8109
8202
  [width]="575"
8110
8203
  [height]="170"
8111
8204
  [title]="getText('confirmationDialogTitle')"
8112
8205
  (close)="handleConfirmationDialogClose()">
8113
8206
  <span>{{ getText('confirmationDialogContent') }}</span>
8114
8207
  <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>
8208
+ <kendo-treelist-spacer></kendo-treelist-spacer>
8209
+ <button kendoButton [primary]="true" (click)="handleDeleteConfirmation()">{{ getText('deleteButtonText') }}</button>
8210
+ <button kendoButton (click)="handleConfirmationDialogClose()">{{ getText('cancelButtonText') }}</button>
8118
8211
  </kendo-dialog-actions>
8119
- </kendo-dialog>
8212
+ </kendo-dialog>
8213
+ }
8120
8214
 
8121
- <div kendoWatermarkOverlay *ngIf="showLicenseWatermark" [licenseMessage]="licenseMessage"></div>
8122
- `,
8215
+ @if (showLicenseWatermark) {
8216
+ <div kendoWatermarkOverlay [licenseMessage]="licenseMessage"></div>
8217
+ }
8218
+ `,
8123
8219
  standalone: true,
8124
- imports: [LocalizedMessagesDirective, NgIf, ToolbarComponent, SplitterComponent, SplitterPaneComponent, TreeListComponent, EventsOutsideAngularDirective, CustomMessagesComponent$2, GanttTimelineComponent, EditDialogComponent, DialogComponent, DialogActionsComponent, TreeListSpacerComponent, ButtonComponent, WatermarkOverlayComponent]
8220
+ imports: [LocalizedMessagesDirective, ToolbarComponent, SplitterComponent, SplitterPaneComponent, TreeListComponent, EventsOutsideAngularDirective, CustomMessagesComponent$2, GanttTimelineComponent, EditDialogComponent, DialogComponent, DialogActionsComponent, TreeListSpacerComponent, ButtonComponent, WatermarkOverlayComponent]
8125
8221
  }]
8126
8222
  }], 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
8223
  type: Inject,