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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (48) hide show
  1. package/esm2022/adaptiveness/adaptive-renderer.component.mjs +850 -756
  2. package/esm2022/aggregates/status-bar.component.mjs +13 -11
  3. package/esm2022/column-menu/column-chooser-content.component.mjs +133 -123
  4. package/esm2022/column-menu/column-list.component.mjs +62 -59
  5. package/esm2022/column-menu/column-menu-autosize-all.component.mjs +12 -11
  6. package/esm2022/column-menu/column-menu-autosize.component.mjs +12 -11
  7. package/esm2022/column-menu/column-menu-item.component.mjs +221 -85
  8. package/esm2022/column-menu/column-menu-position.component.mjs +46 -43
  9. package/esm2022/column-menu/column-menu.component.mjs +401 -315
  10. package/esm2022/editing/add-command.directive.mjs +27 -17
  11. package/esm2022/editing/cancel-command.directive.mjs +27 -17
  12. package/esm2022/editing/edit-command.directive.mjs +27 -17
  13. package/esm2022/editing/form/form-formfield.component.mjs +97 -70
  14. package/esm2022/editing/form/form.component.mjs +77 -61
  15. package/esm2022/editing/remove-command.directive.mjs +27 -17
  16. package/esm2022/editing/save-command.directive.mjs +27 -17
  17. package/esm2022/excel/excel-command.directive.mjs +27 -17
  18. package/esm2022/filtering/cell/filter-cell-operators.component.mjs +20 -17
  19. package/esm2022/filtering/cell/filter-cell.component.mjs +35 -33
  20. package/esm2022/filtering/filter-row.component.mjs +37 -29
  21. package/esm2022/filtering/menu/boolean-filter-menu.component.mjs +34 -31
  22. package/esm2022/filtering/menu/date-filter-menu.component.mjs +52 -49
  23. package/esm2022/filtering/menu/filter-menu-container.component.mjs +97 -89
  24. package/esm2022/filtering/menu/numeric-filter-menu.component.mjs +50 -47
  25. package/esm2022/filtering/menu/string-filter-menu.component.mjs +36 -33
  26. package/esm2022/filtering/multicheckbox-filter.component.mjs +54 -43
  27. package/esm2022/grid.component.mjs +1579 -1483
  28. package/esm2022/grouping/group-header.component.mjs +113 -89
  29. package/esm2022/grouping/group-panel.component.mjs +82 -75
  30. package/esm2022/package-metadata.mjs +2 -2
  31. package/esm2022/pdf/pdf-command.directive.mjs +27 -17
  32. package/esm2022/rendering/cell.component.mjs +411 -365
  33. package/esm2022/rendering/common/col-group.component.mjs +25 -15
  34. package/esm2022/rendering/common/loading.component.mjs +23 -19
  35. package/esm2022/rendering/details/detail-template.directive.mjs +6 -4
  36. package/esm2022/rendering/footer/footer.component.mjs +128 -112
  37. package/esm2022/rendering/header/header.component.mjs +412 -351
  38. package/esm2022/rendering/list.component.mjs +225 -202
  39. package/esm2022/rendering/table-body.component.mjs +553 -493
  40. package/esm2022/rendering/toolbar/toolbar.component.mjs +13 -11
  41. package/esm2022/rendering/toolbar/tools/ai-assistant/ai-assistant.component.mjs +86 -79
  42. package/esm2022/rendering/toolbar/tools/filter-toolbar-tool.component.mjs +54 -51
  43. package/esm2022/rendering/toolbar/tools/group-toolbar-tool.component.mjs +138 -115
  44. package/esm2022/rendering/toolbar/tools/sort-toolbar-tool.component.mjs +72 -65
  45. package/fesm2022/progress-kendo-angular-grid.mjs +6426 -5525
  46. package/package.json +24 -24
  47. package/rendering/details/detail-template.directive.d.ts +6 -4
  48. package/schematics/ngAdd/index.js +7 -7
@@ -5,7 +5,7 @@
5
5
  import { Component, Input, ElementRef, HostBinding, HostListener } from '@angular/core';
6
6
  import { closestInScope, isDocumentAvailable, isFocusable } from '@progress/kendo-angular-common';
7
7
  import { ContextService } from './../../common/provider.service';
8
- import { NgIf, NgTemplateOutlet } from '@angular/common';
8
+ import { NgTemplateOutlet } from '@angular/common';
9
9
  import * as i0 from "@angular/core";
10
10
  import * as i1 from "./../../common/provider.service";
11
11
  /**
@@ -95,25 +95,27 @@ export class ToolbarComponent {
95
95
  }
96
96
  }
97
97
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: ToolbarComponent, deps: [{ token: i1.ContextService }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component });
98
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.14", type: ToolbarComponent, isStandalone: true, selector: "kendo-grid-toolbar", inputs: { position: "position", size: "size", navigable: "navigable" }, host: { listeners: { "click": "clickHandler($event)", "keydown.arrowleft": "arrowLeftListener($event)", "keydown.arrowright": "arrowRightListener($event)", "keydown.home": "homeKeyListener($event)", "keydown.end": "endKeyListener($event)" }, properties: { "attr.role": "this.role", "class.k-toolbar": "this.hostClasses", "class.k-grid-toolbar": "this.hostClasses", "class.k-toolbar-solid": "this.hostClasses", "class.k-toolbar-sm": "this.sizeSmallClass", "class.k-toolbar-md": "this.sizeMediumClass" } }, ngImport: i0, template: `
99
- <ng-template
100
- *ngIf="toolbarTemplateRef"
98
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: ToolbarComponent, isStandalone: true, selector: "kendo-grid-toolbar", inputs: { position: "position", size: "size", navigable: "navigable" }, host: { listeners: { "click": "clickHandler($event)", "keydown.arrowleft": "arrowLeftListener($event)", "keydown.arrowright": "arrowRightListener($event)", "keydown.home": "homeKeyListener($event)", "keydown.end": "endKeyListener($event)" }, properties: { "attr.role": "this.role", "class.k-toolbar": "this.hostClasses", "class.k-grid-toolbar": "this.hostClasses", "class.k-toolbar-solid": "this.hostClasses", "class.k-toolbar-sm": "this.sizeSmallClass", "class.k-toolbar-md": "this.sizeMediumClass" } }, ngImport: i0, template: `
99
+ @if (toolbarTemplateRef) {
100
+ <ng-template
101
101
  [ngTemplateOutlet]="toolbarTemplateRef"
102
- [ngTemplateOutletContext]="context"></ng-template>
103
- `, isInline: true, dependencies: [{ kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }] });
102
+ [ngTemplateOutletContext]="context"></ng-template>
103
+ }
104
+ `, isInline: true, dependencies: [{ kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }] });
104
105
  }
105
106
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: ToolbarComponent, decorators: [{
106
107
  type: Component,
107
108
  args: [{
108
109
  selector: 'kendo-grid-toolbar',
109
110
  template: `
110
- <ng-template
111
- *ngIf="toolbarTemplateRef"
111
+ @if (toolbarTemplateRef) {
112
+ <ng-template
112
113
  [ngTemplateOutlet]="toolbarTemplateRef"
113
- [ngTemplateOutletContext]="context"></ng-template>
114
- `,
114
+ [ngTemplateOutletContext]="context"></ng-template>
115
+ }
116
+ `,
115
117
  standalone: true,
116
- imports: [NgIf, NgTemplateOutlet]
118
+ imports: [NgTemplateOutlet]
117
119
  }]
118
120
  }], ctorParameters: () => [{ type: i1.ContextService }, { type: i0.ElementRef }], propDecorators: { role: [{
119
121
  type: HostBinding,
@@ -8,7 +8,6 @@ import { HttpClient, HttpRequest } from '@angular/common/http';
8
8
  import { ContextService } from './../../../../common/provider.service';
9
9
  import { ColumnInfoService } from './../../../../common/column-info.service';
10
10
  import { GridAIAssistantResponseSuccessEvent, GridAIAssistantResponseErrorEvent } from './models';
11
- import { NgIf } from '@angular/common';
12
11
  import { convertDateStringsInFilter, highlightBy } from './utils';
13
12
  import { isCheckboxColumn } from '../../../../columns/column-base';
14
13
  import { CommandColumnComponent } from '../../../../columns/command-column.component';
@@ -741,100 +740,108 @@ export class AiAssistantComponent {
741
740
  });
742
741
  }
743
742
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: AiAssistantComponent, deps: [{ token: i1.HttpClient }, { token: i2.ContextService }, { token: i3.ColumnInfoService }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component });
744
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.14", type: AiAssistantComponent, isStandalone: true, selector: "ng-component", viewQueries: [{ propertyName: "aiPrompt", first: true, predicate: AIPromptComponent, descendants: true }], ngImport: i0, template: `
743
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: AiAssistantComponent, isStandalone: true, selector: "ng-component", viewQueries: [{ propertyName: "aiPrompt", first: true, predicate: AIPromptComponent, descendants: true }], ngImport: i0, template: `
745
744
  <kendo-aiprompt
746
- #aiPrompt
747
- [promptSuggestions]="aiPromptSettings?.promptSuggestions"
748
- [showOutputRating]="aiPromptSettings?.showOutputRating"
749
- [streaming]="streaming"
750
- [speechToTextButton]="aiPromptSettings?.speechToTextButton"
751
- [(activeView)]="activeView"
752
- [generateButtonSVGIcon]="aiPromptSettings?.generateButtonSVGIcon"
753
- [generateButtonIcon]="aiPromptSettings?.generateButtonIcon"
754
- [disabledGenerateButton]="disabledGenerateButton || promptView.textAreaValue?.length === 0"
755
- [promptOutputs]="aiPromptSettings?.promptOutputs"
756
- [textAreaSettings]="aiPromptSettings?.textAreaSettings"
757
- (promptRequest)="onPromptRequest($event)"
758
- (promptRequestCancel)="cancelRequest()"
759
- >
760
- <kendo-aiprompt-prompt-view #promptView></kendo-aiprompt-prompt-view>
761
- <kendo-aiprompt-output-view></kendo-aiprompt-output-view>
762
- <ng-template *ngIf="streaming && aiPrompt.streaming" kendoAIPromptOutputTemplate let-output>
763
- <div class="k-card">
764
- <div class="k-card-header">
765
- <div class="k-card-title">
766
- <span class="k-skeleton k-skeleton-text k-skeleton-pulse" [style.width.px]="200"></span>
767
- </div>
768
- <div class="k-card-subtitle">
769
- <span class="k-skeleton k-skeleton-text k-skeleton-pulse" style="width: 100%;"></span>
770
- </div>
771
- </div>
772
- <div class="k-card-body">
773
- <span class="k-skeleton k-skeleton-rect k-skeleton-pulse" style="height: 80px;"></span>
774
- </div>
775
- <div class="k-card-actions">
776
- <span class="k-skeleton k-skeleton-text k-skeleton-pulse" style="width: 100%;"></span>
777
- </div>
745
+ #aiPrompt
746
+ [promptSuggestions]="aiPromptSettings?.promptSuggestions"
747
+ [showOutputRating]="aiPromptSettings?.showOutputRating"
748
+ [streaming]="streaming"
749
+ [speechToTextButton]="aiPromptSettings?.speechToTextButton"
750
+ [(activeView)]="activeView"
751
+ [generateButtonSVGIcon]="aiPromptSettings?.generateButtonSVGIcon"
752
+ [generateButtonIcon]="aiPromptSettings?.generateButtonIcon"
753
+ [disabledGenerateButton]="disabledGenerateButton || promptView.textAreaValue?.length === 0"
754
+ [promptOutputs]="aiPromptSettings?.promptOutputs"
755
+ [textAreaSettings]="aiPromptSettings?.textAreaSettings"
756
+ (promptRequest)="onPromptRequest($event)"
757
+ (promptRequestCancel)="cancelRequest()"
758
+ >
759
+ <kendo-aiprompt-prompt-view #promptView></kendo-aiprompt-prompt-view>
760
+ <kendo-aiprompt-output-view></kendo-aiprompt-output-view>
761
+ @if (streaming && aiPrompt.streaming; as output) {
762
+ <ng-template kendoAIPromptOutputTemplate let-output>
763
+ <div class="k-card">
764
+ <div class="k-card-header">
765
+ <div class="k-card-title">
766
+ <span class="k-skeleton k-skeleton-text k-skeleton-pulse" [style.width.px]="200"></span>
767
+ </div>
768
+ <div class="k-card-subtitle">
769
+ <span class="k-skeleton k-skeleton-text k-skeleton-pulse" style="width: 100%;"></span>
770
+ </div>
778
771
  </div>
772
+ <div class="k-card-body">
773
+ <span class="k-skeleton k-skeleton-rect k-skeleton-pulse" style="height: 80px;"></span>
774
+ </div>
775
+ <div class="k-card-actions">
776
+ <span class="k-skeleton k-skeleton-text k-skeleton-pulse" style="width: 100%;"></span>
777
+ </div>
778
+ </div>
779
779
  </ng-template>
780
- <ng-template *ngIf="!(streaming && aiPrompt.streaming)" kendoAIPromptOutputBodyTemplate let-output>
781
- <p>{{output.output}}</p>
780
+ }
781
+ @if (!(streaming && aiPrompt.streaming); as output) {
782
+ <ng-template kendoAIPromptOutputBodyTemplate let-output>
783
+ <p>{{output.output}}</p>
782
784
  </ng-template>
783
- <kendo-aiprompt-messages
784
- [generateOutput]="message('aiAssistantApplyButtonText')"
785
- ></kendo-aiprompt-messages>
785
+ }
786
+ <kendo-aiprompt-messages
787
+ [generateOutput]="message('aiAssistantApplyButtonText')"
788
+ ></kendo-aiprompt-messages>
786
789
  </kendo-aiprompt>
787
- `, isInline: true, dependencies: [{ kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: AIPromptComponent, selector: "kendo-aiprompt", inputs: ["activeView", "promptCommands", "promptSuggestions", "promptOutputs", "showOutputRating", "streaming", "speechToTextButton", "textAreaSettings", "generateButtonSVGIcon", "generateButtonIcon", "disabledGenerateButton"], outputs: ["activeViewChange", "promptRequest", "commandExecute", "outputCopy", "outputRatingChange", "promptRequestCancel"], exportAs: ["kendoAIPrompt"] }, { kind: "component", type: AIPromptCustomMessagesComponent, selector: "kendo-aiprompt-messages" }, { kind: "component", type: PromptViewComponent, selector: "kendo-aiprompt-prompt-view" }, { kind: "component", type: OutputViewComponent, selector: "kendo-aiprompt-output-view" }, { kind: "directive", type: AIPromptOutputTemplateDirective, selector: "[kendoAIPromptOutputTemplate]" }, { kind: "directive", type: AIPromptOutputBodyTemplateDirective, selector: "[kendoAIPromptOutputBodyTemplate]" }] });
790
+ `, isInline: true, dependencies: [{ kind: "component", type: AIPromptComponent, selector: "kendo-aiprompt", inputs: ["activeView", "promptCommands", "promptSuggestions", "promptOutputs", "showOutputRating", "streaming", "speechToTextButton", "textAreaSettings", "generateButtonSVGIcon", "generateButtonIcon", "disabledGenerateButton"], outputs: ["activeViewChange", "promptRequest", "commandExecute", "outputCopy", "outputRatingChange", "promptRequestCancel"], exportAs: ["kendoAIPrompt"] }, { kind: "component", type: AIPromptCustomMessagesComponent, selector: "kendo-aiprompt-messages" }, { kind: "component", type: PromptViewComponent, selector: "kendo-aiprompt-prompt-view" }, { kind: "component", type: OutputViewComponent, selector: "kendo-aiprompt-output-view" }, { kind: "directive", type: AIPromptOutputTemplateDirective, selector: "[kendoAIPromptOutputTemplate]" }, { kind: "directive", type: AIPromptOutputBodyTemplateDirective, selector: "[kendoAIPromptOutputBodyTemplate]" }] });
788
791
  }
789
792
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: AiAssistantComponent, decorators: [{
790
793
  type: Component,
791
794
  args: [{
792
795
  standalone: true,
793
- imports: [NgIf, AIPromptComponent, AIPromptCustomMessagesComponent, PromptViewComponent, OutputViewComponent, AIPromptOutputTemplateDirective, AIPromptOutputBodyTemplateDirective],
796
+ imports: [AIPromptComponent, AIPromptCustomMessagesComponent, PromptViewComponent, OutputViewComponent, AIPromptOutputTemplateDirective, AIPromptOutputBodyTemplateDirective],
794
797
  template: `
795
798
  <kendo-aiprompt
796
- #aiPrompt
797
- [promptSuggestions]="aiPromptSettings?.promptSuggestions"
798
- [showOutputRating]="aiPromptSettings?.showOutputRating"
799
- [streaming]="streaming"
800
- [speechToTextButton]="aiPromptSettings?.speechToTextButton"
801
- [(activeView)]="activeView"
802
- [generateButtonSVGIcon]="aiPromptSettings?.generateButtonSVGIcon"
803
- [generateButtonIcon]="aiPromptSettings?.generateButtonIcon"
804
- [disabledGenerateButton]="disabledGenerateButton || promptView.textAreaValue?.length === 0"
805
- [promptOutputs]="aiPromptSettings?.promptOutputs"
806
- [textAreaSettings]="aiPromptSettings?.textAreaSettings"
807
- (promptRequest)="onPromptRequest($event)"
808
- (promptRequestCancel)="cancelRequest()"
809
- >
810
- <kendo-aiprompt-prompt-view #promptView></kendo-aiprompt-prompt-view>
811
- <kendo-aiprompt-output-view></kendo-aiprompt-output-view>
812
- <ng-template *ngIf="streaming && aiPrompt.streaming" kendoAIPromptOutputTemplate let-output>
813
- <div class="k-card">
814
- <div class="k-card-header">
815
- <div class="k-card-title">
816
- <span class="k-skeleton k-skeleton-text k-skeleton-pulse" [style.width.px]="200"></span>
817
- </div>
818
- <div class="k-card-subtitle">
819
- <span class="k-skeleton k-skeleton-text k-skeleton-pulse" style="width: 100%;"></span>
820
- </div>
821
- </div>
822
- <div class="k-card-body">
823
- <span class="k-skeleton k-skeleton-rect k-skeleton-pulse" style="height: 80px;"></span>
824
- </div>
825
- <div class="k-card-actions">
826
- <span class="k-skeleton k-skeleton-text k-skeleton-pulse" style="width: 100%;"></span>
827
- </div>
799
+ #aiPrompt
800
+ [promptSuggestions]="aiPromptSettings?.promptSuggestions"
801
+ [showOutputRating]="aiPromptSettings?.showOutputRating"
802
+ [streaming]="streaming"
803
+ [speechToTextButton]="aiPromptSettings?.speechToTextButton"
804
+ [(activeView)]="activeView"
805
+ [generateButtonSVGIcon]="aiPromptSettings?.generateButtonSVGIcon"
806
+ [generateButtonIcon]="aiPromptSettings?.generateButtonIcon"
807
+ [disabledGenerateButton]="disabledGenerateButton || promptView.textAreaValue?.length === 0"
808
+ [promptOutputs]="aiPromptSettings?.promptOutputs"
809
+ [textAreaSettings]="aiPromptSettings?.textAreaSettings"
810
+ (promptRequest)="onPromptRequest($event)"
811
+ (promptRequestCancel)="cancelRequest()"
812
+ >
813
+ <kendo-aiprompt-prompt-view #promptView></kendo-aiprompt-prompt-view>
814
+ <kendo-aiprompt-output-view></kendo-aiprompt-output-view>
815
+ @if (streaming && aiPrompt.streaming; as output) {
816
+ <ng-template kendoAIPromptOutputTemplate let-output>
817
+ <div class="k-card">
818
+ <div class="k-card-header">
819
+ <div class="k-card-title">
820
+ <span class="k-skeleton k-skeleton-text k-skeleton-pulse" [style.width.px]="200"></span>
821
+ </div>
822
+ <div class="k-card-subtitle">
823
+ <span class="k-skeleton k-skeleton-text k-skeleton-pulse" style="width: 100%;"></span>
824
+ </div>
825
+ </div>
826
+ <div class="k-card-body">
827
+ <span class="k-skeleton k-skeleton-rect k-skeleton-pulse" style="height: 80px;"></span>
828
+ </div>
829
+ <div class="k-card-actions">
830
+ <span class="k-skeleton k-skeleton-text k-skeleton-pulse" style="width: 100%;"></span>
828
831
  </div>
832
+ </div>
829
833
  </ng-template>
830
- <ng-template *ngIf="!(streaming && aiPrompt.streaming)" kendoAIPromptOutputBodyTemplate let-output>
831
- <p>{{output.output}}</p>
834
+ }
835
+ @if (!(streaming && aiPrompt.streaming); as output) {
836
+ <ng-template kendoAIPromptOutputBodyTemplate let-output>
837
+ <p>{{output.output}}</p>
832
838
  </ng-template>
833
- <kendo-aiprompt-messages
834
- [generateOutput]="message('aiAssistantApplyButtonText')"
835
- ></kendo-aiprompt-messages>
839
+ }
840
+ <kendo-aiprompt-messages
841
+ [generateOutput]="message('aiAssistantApplyButtonText')"
842
+ ></kendo-aiprompt-messages>
836
843
  </kendo-aiprompt>
837
- `
844
+ `
838
845
  }]
839
846
  }], ctorParameters: () => [{ type: i1.HttpClient }, { type: i2.ContextService }, { type: i3.ColumnInfoService }, { type: i0.NgZone }], propDecorators: { aiPrompt: [{
840
847
  type: ViewChild,
@@ -4,7 +4,6 @@
4
4
  *-------------------------------------------------------------------------------------------*/
5
5
  import { Component, ElementRef, EventEmitter, NgZone, Output, QueryList, ViewChildren } from '@angular/core';
6
6
  import { ContextService } from '../../../common/provider.service';
7
- import { NgFor } from '@angular/common';
8
7
  import { KENDO_BUTTON } from '@progress/kendo-angular-buttons';
9
8
  import { FilterMenuContainerComponent } from '../../../filtering/menu/filter-menu-container.component';
10
9
  import { FilterService } from '../../../filtering/filter.service';
@@ -142,34 +141,36 @@ export class FilterToolbarToolComponent {
142
141
  }
143
142
  }
144
143
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: FilterToolbarToolComponent, deps: [{ token: i0.ElementRef }, { token: i1.FilterService }, { token: i2.ContextService }, { token: i3.ColumnInfoService }, { token: i0.NgZone }, { token: i4.AdaptiveGridService }], target: i0.ɵɵFactoryTarget.Component });
145
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.14", type: FilterToolbarToolComponent, isStandalone: true, selector: "kendo-filter-toolbar-tool", outputs: { close: "close" }, viewQueries: [{ propertyName: "filterItems", predicate: ["filterItem"], descendants: true, read: ElementRef }, { propertyName: "menuItems", predicate: ["filterItem"], descendants: true }, { propertyName: "filterContainers", predicate: ["filterContainer"], descendants: true }], ngImport: i0, template: `
144
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: FilterToolbarToolComponent, isStandalone: true, selector: "kendo-filter-toolbar-tool", outputs: { close: "close" }, viewQueries: [{ propertyName: "filterItems", predicate: ["filterItem"], descendants: true, read: ElementRef }, { propertyName: "menuItems", predicate: ["filterItem"], descendants: true }, { propertyName: "filterContainers", predicate: ["filterContainer"], descendants: true }], ngImport: i0, template: `
146
145
  <div [style]="hostStyles">
147
- <kendo-grid-columnmenu-item *ngFor="let column of columns; let i = index"
148
- class="k-columnmenu-item-wrapper" #filterItem
149
- role="button"
150
- tabindex="0"
151
- [column]="getColumnComponent(column)"
152
- [text]="column.title || getColumnComponent(column).field"
153
- (focus)="onItemFocus(filterItem)"
154
- (focusout)="onItemFocusOut()"
155
- (keydown.enter)="toggleItem($event, i)"
156
- [indicatorIcon]="isFilterApplied(column)"
157
- (itemClick)="navigateView(getColumnComponent(column))"
158
- [expanded]="false"
159
- [focused]="isItemFocused(filterItem)">
160
- <ng-template kendoGridColumnMenuItemContentTemplate>
161
- <kendo-grid-filter-menu-container
162
- #filterContainer
163
- (keydown.shift.tab)="$event.stopImmediatePropagation()"
164
- [column]="getColumnComponent(column)"
165
- [filter]="filter"
166
- [isExpanded]="false"
167
- (close)="handleClose(filterItem)">
168
- </kendo-grid-filter-menu-container>
169
- </ng-template>
146
+ @for (column of columns; track column; let i = $index) {
147
+ <kendo-grid-columnmenu-item
148
+ class="k-columnmenu-item-wrapper" #filterItem
149
+ role="button"
150
+ tabindex="0"
151
+ [column]="getColumnComponent(column)"
152
+ [text]="column.title || getColumnComponent(column).field"
153
+ (focus)="onItemFocus(filterItem)"
154
+ (focusout)="onItemFocusOut()"
155
+ (keydown.enter)="toggleItem($event, i)"
156
+ [indicatorIcon]="isFilterApplied(column)"
157
+ (itemClick)="navigateView(getColumnComponent(column))"
158
+ [expanded]="false"
159
+ [focused]="isItemFocused(filterItem)">
160
+ <ng-template kendoGridColumnMenuItemContentTemplate>
161
+ <kendo-grid-filter-menu-container
162
+ #filterContainer
163
+ (keydown.shift.tab)="$event.stopImmediatePropagation()"
164
+ [column]="getColumnComponent(column)"
165
+ [filter]="filter"
166
+ [isExpanded]="false"
167
+ (close)="handleClose(filterItem)">
168
+ </kendo-grid-filter-menu-container>
169
+ </ng-template>
170
170
  </kendo-grid-columnmenu-item>
171
+ }
171
172
  </div>
172
- `, isInline: true, dependencies: [{ kind: "directive", type: NgFor, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "component", type: FilterMenuContainerComponent, selector: "kendo-grid-filter-menu-container", inputs: ["column", "isLast", "isExpanded", "menuTabbingService", "filter", "actionsClass"], outputs: ["close"] }, { kind: "component", type: ColumnMenuItemComponent, selector: "kendo-grid-columnmenu-item", inputs: ["icon", "svgIcon", "indicatorIcon", "text", "selected", "disabled", "expanded", "focused", "service", "column"], outputs: ["itemClick", "expand", "collapse"] }, { kind: "directive", type: ColumnMenuItemContentTemplateDirective, selector: "[kendoGridColumnMenuItemContentTemplate]" }] });
173
+ `, isInline: true, dependencies: [{ kind: "component", type: FilterMenuContainerComponent, selector: "kendo-grid-filter-menu-container", inputs: ["column", "isLast", "isExpanded", "menuTabbingService", "filter", "actionsClass"], outputs: ["close"] }, { kind: "component", type: ColumnMenuItemComponent, selector: "kendo-grid-columnmenu-item", inputs: ["icon", "svgIcon", "indicatorIcon", "text", "selected", "disabled", "expanded", "focused", "service", "column"], outputs: ["itemClick", "expand", "collapse"] }, { kind: "directive", type: ColumnMenuItemContentTemplateDirective, selector: "[kendoGridColumnMenuItemContentTemplate]" }] });
173
174
  }
174
175
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: FilterToolbarToolComponent, decorators: [{
175
176
  type: Component,
@@ -177,34 +178,36 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
177
178
  selector: 'kendo-filter-toolbar-tool',
178
179
  template: `
179
180
  <div [style]="hostStyles">
180
- <kendo-grid-columnmenu-item *ngFor="let column of columns; let i = index"
181
- class="k-columnmenu-item-wrapper" #filterItem
182
- role="button"
183
- tabindex="0"
184
- [column]="getColumnComponent(column)"
185
- [text]="column.title || getColumnComponent(column).field"
186
- (focus)="onItemFocus(filterItem)"
187
- (focusout)="onItemFocusOut()"
188
- (keydown.enter)="toggleItem($event, i)"
189
- [indicatorIcon]="isFilterApplied(column)"
190
- (itemClick)="navigateView(getColumnComponent(column))"
191
- [expanded]="false"
192
- [focused]="isItemFocused(filterItem)">
193
- <ng-template kendoGridColumnMenuItemContentTemplate>
194
- <kendo-grid-filter-menu-container
195
- #filterContainer
196
- (keydown.shift.tab)="$event.stopImmediatePropagation()"
197
- [column]="getColumnComponent(column)"
198
- [filter]="filter"
199
- [isExpanded]="false"
200
- (close)="handleClose(filterItem)">
201
- </kendo-grid-filter-menu-container>
202
- </ng-template>
181
+ @for (column of columns; track column; let i = $index) {
182
+ <kendo-grid-columnmenu-item
183
+ class="k-columnmenu-item-wrapper" #filterItem
184
+ role="button"
185
+ tabindex="0"
186
+ [column]="getColumnComponent(column)"
187
+ [text]="column.title || getColumnComponent(column).field"
188
+ (focus)="onItemFocus(filterItem)"
189
+ (focusout)="onItemFocusOut()"
190
+ (keydown.enter)="toggleItem($event, i)"
191
+ [indicatorIcon]="isFilterApplied(column)"
192
+ (itemClick)="navigateView(getColumnComponent(column))"
193
+ [expanded]="false"
194
+ [focused]="isItemFocused(filterItem)">
195
+ <ng-template kendoGridColumnMenuItemContentTemplate>
196
+ <kendo-grid-filter-menu-container
197
+ #filterContainer
198
+ (keydown.shift.tab)="$event.stopImmediatePropagation()"
199
+ [column]="getColumnComponent(column)"
200
+ [filter]="filter"
201
+ [isExpanded]="false"
202
+ (close)="handleClose(filterItem)">
203
+ </kendo-grid-filter-menu-container>
204
+ </ng-template>
203
205
  </kendo-grid-columnmenu-item>
206
+ }
204
207
  </div>
205
- `,
208
+ `,
206
209
  standalone: true,
207
- imports: [NgFor, KENDO_BUTTON, FilterMenuContainerComponent, ColumnMenuItemComponent, ColumnMenuItemContentTemplateDirective]
210
+ imports: [KENDO_BUTTON, FilterMenuContainerComponent, ColumnMenuItemComponent, ColumnMenuItemContentTemplateDirective]
208
211
  }]
209
212
  }], ctorParameters: () => [{ type: i0.ElementRef }, { type: i1.FilterService }, { type: i2.ContextService }, { type: i3.ColumnInfoService }, { type: i0.NgZone }, { type: i4.AdaptiveGridService }], propDecorators: { filterItems: [{
210
213
  type: ViewChildren,