@progress/kendo-angular-grid 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.
Files changed (58) hide show
  1. package/codemods/utils.js +805 -394
  2. package/codemods/v20/grid-kendogridgroupbinding.js +8 -11
  3. package/esm2022/adaptiveness/adaptive-renderer.component.mjs +850 -756
  4. package/esm2022/aggregates/status-bar.component.mjs +13 -11
  5. package/esm2022/column-menu/column-chooser-content.component.mjs +133 -123
  6. package/esm2022/column-menu/column-list.component.mjs +64 -61
  7. package/esm2022/column-menu/column-menu-autosize-all.component.mjs +12 -11
  8. package/esm2022/column-menu/column-menu-autosize.component.mjs +12 -11
  9. package/esm2022/column-menu/column-menu-item.component.mjs +221 -85
  10. package/esm2022/column-menu/column-menu-position.component.mjs +46 -43
  11. package/esm2022/column-menu/column-menu.component.mjs +401 -315
  12. package/esm2022/databinding.directive.mjs +1 -0
  13. package/esm2022/editing/add-command.directive.mjs +27 -17
  14. package/esm2022/editing/cancel-command.directive.mjs +27 -17
  15. package/esm2022/editing/edit-command.directive.mjs +27 -17
  16. package/esm2022/editing/form/form-formfield.component.mjs +97 -70
  17. package/esm2022/editing/form/form.component.mjs +77 -61
  18. package/esm2022/editing/remove-command.directive.mjs +27 -17
  19. package/esm2022/editing/save-command.directive.mjs +27 -17
  20. package/esm2022/excel/excel-command.directive.mjs +27 -17
  21. package/esm2022/filtering/cell/filter-cell-operators.component.mjs +20 -17
  22. package/esm2022/filtering/cell/filter-cell.component.mjs +35 -33
  23. package/esm2022/filtering/filter-row.component.mjs +37 -29
  24. package/esm2022/filtering/menu/boolean-filter-menu.component.mjs +34 -31
  25. package/esm2022/filtering/menu/date-filter-menu-input.component.mjs +8 -7
  26. package/esm2022/filtering/menu/date-filter-menu.component.mjs +52 -49
  27. package/esm2022/filtering/menu/filter-menu-container.component.mjs +115 -92
  28. package/esm2022/filtering/menu/numeric-filter-menu.component.mjs +50 -47
  29. package/esm2022/filtering/menu/string-filter-menu.component.mjs +36 -33
  30. package/esm2022/filtering/multicheckbox-filter.component.mjs +54 -43
  31. package/esm2022/grid.component.mjs +1579 -1483
  32. package/esm2022/grouping/group-header.component.mjs +113 -89
  33. package/esm2022/grouping/group-panel.component.mjs +84 -77
  34. package/esm2022/index.mjs +1 -0
  35. package/esm2022/navigation/navigation.service.mjs +4 -4
  36. package/esm2022/package-metadata.mjs +2 -2
  37. package/esm2022/pdf/pdf-command.directive.mjs +27 -17
  38. package/esm2022/rendering/cell.component.mjs +411 -365
  39. package/esm2022/rendering/common/col-group.component.mjs +25 -15
  40. package/esm2022/rendering/common/loading.component.mjs +23 -19
  41. package/esm2022/rendering/details/detail-template.directive.mjs +6 -4
  42. package/esm2022/rendering/footer/footer.component.mjs +128 -112
  43. package/esm2022/rendering/header/header.component.mjs +414 -353
  44. package/esm2022/rendering/list.component.mjs +227 -204
  45. package/esm2022/rendering/table-body.component.mjs +553 -493
  46. package/esm2022/rendering/toolbar/toolbar.component.mjs +13 -11
  47. package/esm2022/rendering/toolbar/tools/ai-assistant/ai-assistant.component.mjs +86 -79
  48. package/esm2022/rendering/toolbar/tools/filter-toolbar-tool.component.mjs +54 -51
  49. package/esm2022/rendering/toolbar/tools/group-toolbar-tool.component.mjs +141 -118
  50. package/esm2022/rendering/toolbar/tools/sort-toolbar-tool.component.mjs +72 -65
  51. package/fesm2022/progress-kendo-angular-grid.mjs +6462 -5545
  52. package/filtering/menu/date-filter-menu-input.component.d.ts +1 -2
  53. package/filtering/menu/filter-menu-container.component.d.ts +2 -2
  54. package/index.d.ts +1 -0
  55. package/package.json +25 -26
  56. package/rendering/details/detail-template.directive.d.ts +6 -4
  57. package/schematics/ngAdd/index.js +7 -7
  58. package/codemods/template-transformer/index.js +0 -93
@@ -195,6 +195,7 @@ export class DataBindingDirective {
195
195
  }
196
196
  this.grid.data = this.process(this.state);
197
197
  this.grid.updateNavigationMetadata();
198
+ this.grid.ngDoCheck();
198
199
  this.dataChanged = false;
199
200
  }
200
201
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: DataBindingDirective, deps: [{ token: i1.GridComponent }, { token: i0.ChangeDetectorRef }, { token: i2.LocalDataChangesService }, { token: i3.RowReorderService }, { token: i4.ContextService }], target: i0.ɵɵFactoryTarget.Directive });
@@ -6,7 +6,7 @@ import { Component, HostListener, HostBinding, ElementRef, Renderer2 as Renderer
6
6
  import { Button } from '@progress/kendo-angular-buttons';
7
7
  import { ContextService } from '../common/provider.service';
8
8
  import { EditService } from './edit.service';
9
- import { NgIf, NgClass } from '@angular/common';
9
+ import { NgClass } from '@angular/common';
10
10
  import { IconWrapperComponent } from '@progress/kendo-angular-icons';
11
11
  import * as i0 from "@angular/core";
12
12
  import * as i1 from "./edit.service";
@@ -42,37 +42,47 @@ export class AddCommandDirective extends Button {
42
42
  this.editService = editService;
43
43
  }
44
44
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: AddCommandDirective, deps: [{ token: i1.EditService }, { token: i0.ElementRef }, { token: i0.Renderer2 }, { token: i2.ContextService }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component });
45
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.14", type: AddCommandDirective, isStandalone: true, selector: "[kendoGridAddCommand]", host: { listeners: { "click": "onClick($event)" }, properties: { "class.k-grid-add-command": "this.commandClass" } }, usesInheritance: true, ngImport: i0, template: `
46
- <kendo-icon-wrapper
47
- *ngIf="icon || svgIcon"
45
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: AddCommandDirective, isStandalone: true, selector: "[kendoGridAddCommand]", host: { listeners: { "click": "onClick($event)" }, properties: { "class.k-grid-add-command": "this.commandClass" } }, usesInheritance: true, ngImport: i0, template: `
46
+ @if (icon || svgIcon) {
47
+ <kendo-icon-wrapper
48
48
  innerCssClass="k-button-icon"
49
49
  [name]="icon"
50
- [svgIcon]="svgIcon"></kendo-icon-wrapper>
51
- <span *ngIf="imageUrl" class="k-button-icon k-icon">
50
+ [svgIcon]="svgIcon"></kendo-icon-wrapper>
51
+ }
52
+ @if (imageUrl) {
53
+ <span class="k-button-icon k-icon">
52
54
  <img [src]="imageUrl" class="k-image" role="presentation" />
53
- </span>
54
- <span *ngIf="iconClass" class="k-button-icon" [ngClass]="iconClass"></span>
55
+ </span>
56
+ }
57
+ @if (iconClass) {
58
+ <span class="k-button-icon" [ngClass]="iconClass"></span>
59
+ }
55
60
  <span class="k-button-text"><ng-content></ng-content></span>
56
- `, isInline: true, dependencies: [{ kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: IconWrapperComponent, selector: "kendo-icon-wrapper", inputs: ["name", "svgIcon", "innerCssClass", "customFontClass", "size"], exportAs: ["kendoIconWrapper"] }, { kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }] });
61
+ `, isInline: true, dependencies: [{ kind: "component", type: IconWrapperComponent, selector: "kendo-icon-wrapper", inputs: ["name", "svgIcon", "innerCssClass", "customFontClass", "size"], exportAs: ["kendoIconWrapper"] }, { kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }] });
57
62
  }
58
63
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: AddCommandDirective, decorators: [{
59
64
  type: Component,
60
65
  args: [{
61
66
  selector: '[kendoGridAddCommand]',
62
67
  template: `
63
- <kendo-icon-wrapper
64
- *ngIf="icon || svgIcon"
68
+ @if (icon || svgIcon) {
69
+ <kendo-icon-wrapper
65
70
  innerCssClass="k-button-icon"
66
71
  [name]="icon"
67
- [svgIcon]="svgIcon"></kendo-icon-wrapper>
68
- <span *ngIf="imageUrl" class="k-button-icon k-icon">
72
+ [svgIcon]="svgIcon"></kendo-icon-wrapper>
73
+ }
74
+ @if (imageUrl) {
75
+ <span class="k-button-icon k-icon">
69
76
  <img [src]="imageUrl" class="k-image" role="presentation" />
70
- </span>
71
- <span *ngIf="iconClass" class="k-button-icon" [ngClass]="iconClass"></span>
77
+ </span>
78
+ }
79
+ @if (iconClass) {
80
+ <span class="k-button-icon" [ngClass]="iconClass"></span>
81
+ }
72
82
  <span class="k-button-text"><ng-content></ng-content></span>
73
- `,
83
+ `,
74
84
  standalone: true,
75
- imports: [NgIf, IconWrapperComponent, NgClass]
85
+ imports: [IconWrapperComponent, NgClass]
76
86
  }]
77
87
  }], ctorParameters: () => [{ type: i1.EditService }, { type: i0.ElementRef }, { type: i0.Renderer2 }, { type: i2.ContextService }, { type: i0.NgZone }], propDecorators: { onClick: [{
78
88
  type: HostListener,
@@ -7,7 +7,7 @@ import { Button } from '@progress/kendo-angular-buttons';
7
7
  import { EditService } from './edit.service';
8
8
  import { CELL_CONTEXT } from '../rendering/common/cell-context';
9
9
  import { ContextService } from '../common/provider.service';
10
- import { NgIf, NgClass } from '@angular/common';
10
+ import { NgClass } from '@angular/common';
11
11
  import { IconWrapperComponent } from '@progress/kendo-angular-icons';
12
12
  import * as i0 from "@angular/core";
13
13
  import * as i1 from "./edit.service";
@@ -70,37 +70,47 @@ export class CancelCommandDirective extends Button {
70
70
  }
71
71
  }
72
72
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: CancelCommandDirective, deps: [{ token: i1.EditService }, { token: CELL_CONTEXT }, { token: i0.ElementRef }, { token: i0.Renderer2 }, { token: i2.ContextService }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component });
73
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.14", type: CancelCommandDirective, isStandalone: true, selector: "[kendoGridCancelCommand]", host: { listeners: { "click": "onClick($event)" }, properties: { "style.display": "this.visible", "class.k-grid-cancel-command": "this.commandClass" } }, usesInheritance: true, ngImport: i0, template: `
74
- <kendo-icon-wrapper
75
- *ngIf="icon || svgIcon"
73
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: CancelCommandDirective, isStandalone: true, selector: "[kendoGridCancelCommand]", host: { listeners: { "click": "onClick($event)" }, properties: { "style.display": "this.visible", "class.k-grid-cancel-command": "this.commandClass" } }, usesInheritance: true, ngImport: i0, template: `
74
+ @if (icon || svgIcon) {
75
+ <kendo-icon-wrapper
76
76
  innerCssClass="k-button-icon"
77
77
  [name]="icon"
78
- [svgIcon]="svgIcon"></kendo-icon-wrapper>
79
- <span *ngIf="imageUrl" class="k-button-icon k-icon">
78
+ [svgIcon]="svgIcon"></kendo-icon-wrapper>
79
+ }
80
+ @if (imageUrl) {
81
+ <span class="k-button-icon k-icon">
80
82
  <img [src]="imageUrl" class="k-image" role="presentation" />
81
- </span>
82
- <span *ngIf="iconClass" class="k-button-icon" [ngClass]="iconClass"></span>
83
+ </span>
84
+ }
85
+ @if (iconClass) {
86
+ <span class="k-button-icon" [ngClass]="iconClass"></span>
87
+ }
83
88
  <span class="k-button-text"><ng-content></ng-content></span>
84
- `, isInline: true, dependencies: [{ kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: IconWrapperComponent, selector: "kendo-icon-wrapper", inputs: ["name", "svgIcon", "innerCssClass", "customFontClass", "size"], exportAs: ["kendoIconWrapper"] }, { kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }] });
89
+ `, isInline: true, dependencies: [{ kind: "component", type: IconWrapperComponent, selector: "kendo-icon-wrapper", inputs: ["name", "svgIcon", "innerCssClass", "customFontClass", "size"], exportAs: ["kendoIconWrapper"] }, { kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }] });
85
90
  }
86
91
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: CancelCommandDirective, decorators: [{
87
92
  type: Component,
88
93
  args: [{
89
94
  selector: '[kendoGridCancelCommand]',
90
95
  template: `
91
- <kendo-icon-wrapper
92
- *ngIf="icon || svgIcon"
96
+ @if (icon || svgIcon) {
97
+ <kendo-icon-wrapper
93
98
  innerCssClass="k-button-icon"
94
99
  [name]="icon"
95
- [svgIcon]="svgIcon"></kendo-icon-wrapper>
96
- <span *ngIf="imageUrl" class="k-button-icon k-icon">
100
+ [svgIcon]="svgIcon"></kendo-icon-wrapper>
101
+ }
102
+ @if (imageUrl) {
103
+ <span class="k-button-icon k-icon">
97
104
  <img [src]="imageUrl" class="k-image" role="presentation" />
98
- </span>
99
- <span *ngIf="iconClass" class="k-button-icon" [ngClass]="iconClass"></span>
105
+ </span>
106
+ }
107
+ @if (iconClass) {
108
+ <span class="k-button-icon" [ngClass]="iconClass"></span>
109
+ }
100
110
  <span class="k-button-text"><ng-content></ng-content></span>
101
- `,
111
+ `,
102
112
  standalone: true,
103
- imports: [NgIf, IconWrapperComponent, NgClass]
113
+ imports: [IconWrapperComponent, NgClass]
104
114
  }]
105
115
  }], ctorParameters: () => [{ type: i1.EditService }, { type: undefined, decorators: [{
106
116
  type: Inject,
@@ -7,7 +7,7 @@ import { Button } from '@progress/kendo-angular-buttons';
7
7
  import { EditService } from './edit.service';
8
8
  import { CELL_CONTEXT } from '../rendering/common/cell-context';
9
9
  import { ContextService } from '../common/provider.service';
10
- import { NgIf, NgClass } from '@angular/common';
10
+ import { NgClass } from '@angular/common';
11
11
  import { IconWrapperComponent } from '@progress/kendo-angular-icons';
12
12
  import * as i0 from "@angular/core";
13
13
  import * as i1 from "./edit.service";
@@ -67,37 +67,47 @@ export class EditCommandDirective extends Button {
67
67
  }
68
68
  }
69
69
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: EditCommandDirective, deps: [{ token: i1.EditService }, { token: CELL_CONTEXT }, { token: i0.ElementRef }, { token: i0.Renderer2 }, { token: i2.ContextService }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component });
70
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.14", type: EditCommandDirective, isStandalone: true, selector: "[kendoGridEditCommand]", host: { listeners: { "click": "onClick($event)" }, properties: { "style.display": "this.visible", "class.k-grid-edit-command": "this.commandClass" } }, usesInheritance: true, ngImport: i0, template: `
71
- <kendo-icon-wrapper
72
- *ngIf="icon || svgIcon"
70
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: EditCommandDirective, isStandalone: true, selector: "[kendoGridEditCommand]", host: { listeners: { "click": "onClick($event)" }, properties: { "style.display": "this.visible", "class.k-grid-edit-command": "this.commandClass" } }, usesInheritance: true, ngImport: i0, template: `
71
+ @if (icon || svgIcon) {
72
+ <kendo-icon-wrapper
73
73
  innerCssClass="k-button-icon"
74
74
  [name]="icon"
75
- [svgIcon]="svgIcon"></kendo-icon-wrapper>
76
- <span *ngIf="imageUrl" class="k-button-icon k-icon">
75
+ [svgIcon]="svgIcon"></kendo-icon-wrapper>
76
+ }
77
+ @if (imageUrl) {
78
+ <span class="k-button-icon k-icon">
77
79
  <img [src]="imageUrl" class="k-image" role="presentation" />
78
- </span>
79
- <span *ngIf="iconClass" class="k-button-icon" [ngClass]="iconClass"></span>
80
+ </span>
81
+ }
82
+ @if (iconClass) {
83
+ <span class="k-button-icon" [ngClass]="iconClass"></span>
84
+ }
80
85
  <span class="k-button-text"><ng-content></ng-content></span>
81
- `, isInline: true, dependencies: [{ kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: IconWrapperComponent, selector: "kendo-icon-wrapper", inputs: ["name", "svgIcon", "innerCssClass", "customFontClass", "size"], exportAs: ["kendoIconWrapper"] }, { kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }] });
86
+ `, isInline: true, dependencies: [{ kind: "component", type: IconWrapperComponent, selector: "kendo-icon-wrapper", inputs: ["name", "svgIcon", "innerCssClass", "customFontClass", "size"], exportAs: ["kendoIconWrapper"] }, { kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }] });
82
87
  }
83
88
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: EditCommandDirective, decorators: [{
84
89
  type: Component,
85
90
  args: [{
86
91
  selector: '[kendoGridEditCommand]',
87
92
  template: `
88
- <kendo-icon-wrapper
89
- *ngIf="icon || svgIcon"
93
+ @if (icon || svgIcon) {
94
+ <kendo-icon-wrapper
90
95
  innerCssClass="k-button-icon"
91
96
  [name]="icon"
92
- [svgIcon]="svgIcon"></kendo-icon-wrapper>
93
- <span *ngIf="imageUrl" class="k-button-icon k-icon">
97
+ [svgIcon]="svgIcon"></kendo-icon-wrapper>
98
+ }
99
+ @if (imageUrl) {
100
+ <span class="k-button-icon k-icon">
94
101
  <img [src]="imageUrl" class="k-image" role="presentation" />
95
- </span>
96
- <span *ngIf="iconClass" class="k-button-icon" [ngClass]="iconClass"></span>
102
+ </span>
103
+ }
104
+ @if (iconClass) {
105
+ <span class="k-button-icon" [ngClass]="iconClass"></span>
106
+ }
97
107
  <span class="k-button-text"><ng-content></ng-content></span>
98
- `,
108
+ `,
99
109
  standalone: true,
100
- imports: [NgIf, IconWrapperComponent, NgClass]
110
+ imports: [IconWrapperComponent, NgClass]
101
111
  }]
102
112
  }], ctorParameters: () => [{ type: i1.EditService }, { type: undefined, decorators: [{
103
113
  type: Inject,
@@ -2,7 +2,7 @@
2
2
  * Copyright © 2025 Progress Software Corporation. All rights reserved.
3
3
  * Licensed under commercial license. See LICENSE.md in the project root for more information
4
4
  *-------------------------------------------------------------------------------------------*/
5
- import { KeyValuePipe, NgFor, NgIf } from '@angular/common';
5
+ import { KeyValuePipe } from '@angular/common';
6
6
  import { ChangeDetectorRef, Component, Input, ViewChild } from '@angular/core';
7
7
  import { KENDO_BUTTON } from '@progress/kendo-angular-buttons';
8
8
  import { KENDO_DATEPICKER } from '@progress/kendo-angular-dateinputs';
@@ -40,114 +40,141 @@ export class FormFormFieldComponent {
40
40
  return replaceMessagePlaceholder(replaceMessagePlaceholder(this.localization.get(key), 'fieldName', field), 'errorName', errorName);
41
41
  }
42
42
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: FormFormFieldComponent, deps: [{ token: i1.LocalizationService }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
43
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.14", type: FormFormFieldComponent, isStandalone: true, selector: "kendo-form-formfield", inputs: { control: "control", floatingLabel: "floatingLabel", showError: "showError" }, viewQueries: [{ propertyName: "input", first: true, predicate: ["input"], descendants: true }], ngImport: i0, template: `
43
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: FormFormFieldComponent, isStandalone: true, selector: "kendo-form-formfield", inputs: { control: "control", floatingLabel: "floatingLabel", showError: "showError" }, viewQueries: [{ propertyName: "input", first: true, predicate: ["input"], descendants: true }], ngImport: i0, template: `
44
44
  <kendo-formfield
45
- [orientation]="control.orientation">
45
+ [orientation]="control.orientation">
46
+ @if (control.label && floatingLabel && $any(control.dataType) !== 'boolean') {
46
47
  <kendo-floatinglabel
47
- *ngIf="control.label && floatingLabel && $any(control.dataType) !== 'boolean'"
48
- labelCssClass="k-form-label"
49
- [text]="control.label">
48
+ labelCssClass="k-form-label"
49
+ [text]="control.label">
50
+ @if ($any(control.dataType) === 'text') {
50
51
  <kendo-textbox
51
- *ngIf="$any(control.dataType) === 'text'"
52
- [formControl]="control.formControl"></kendo-textbox>
52
+ [formControl]="control.formControl"></kendo-textbox>
53
+ }
54
+ @if ($any(control.dataType) === 'numeric') {
53
55
  <kendo-numerictextbox
54
- *ngIf="$any(control.dataType) === 'numeric'"
55
- [formControl]="control.formControl"></kendo-numerictextbox>
56
+ [formControl]="control.formControl"></kendo-numerictextbox>
57
+ }
58
+ @if ($any(control.dataType) === 'date') {
56
59
  <kendo-datepicker
57
- *ngIf="$any(control.dataType) === 'date'"
58
- [formControl]="control.formControl"></kendo-datepicker>
60
+ [formControl]="control.formControl"></kendo-datepicker>
61
+ }
59
62
  </kendo-floatinglabel>
63
+ }
64
+ @if (control.label && !floatingLabel && $any(control.dataType) !== 'boolean') {
60
65
  <kendo-label [style.align-items]="'start'"
61
- *ngIf="control.label && !floatingLabel && $any(control.dataType) !== 'boolean'"
62
- labelCssClass="k-form-label"
63
- [text]="control.label"
64
- [for]="input">
66
+ labelCssClass="k-form-label"
67
+ [text]="control.label"
68
+ [for]="input">
65
69
  </kendo-label>
70
+ }
71
+ @if (!floatingLabel && (control.dataType) === 'text') {
66
72
  <kendo-textbox #input
67
- *ngIf="!floatingLabel && (control.dataType) === 'text'"
68
- [formControl]="control.formControl"></kendo-textbox>
73
+ [formControl]="control.formControl"></kendo-textbox>
74
+ }
75
+ @if (!floatingLabel && $any(control.dataType) === 'numeric') {
69
76
  <kendo-numerictextbox #input
70
- *ngIf="!floatingLabel && $any(control.dataType) === 'numeric'"
71
- [formControl]="control.formControl"></kendo-numerictextbox>
77
+ [formControl]="control.formControl"></kendo-numerictextbox>
78
+ }
79
+ @if (!floatingLabel && $any(control.dataType) === 'date') {
72
80
  <kendo-datepicker #input
73
- *ngIf="!floatingLabel && $any(control.dataType) === 'date'"
74
- [formControl]="control.formControl"></kendo-datepicker>
81
+ [formControl]="control.formControl"></kendo-datepicker>
82
+ }
83
+ @if (control.label && $any(control.dataType) === 'boolean') {
75
84
  <div
76
- *ngIf="control.label && $any(control.dataType) === 'boolean'"
77
- class="k-form-field-checkbox-wrap">
78
- <kendo-checkbox #cb [formControl]="control.formControl"></kendo-checkbox>
85
+ class="k-form-field-checkbox-wrap">
86
+ <kendo-checkbox #cb [formControl]="control.formControl"></kendo-checkbox>
87
+ @if (control.label) {
79
88
  <kendo-label
80
- *ngIf="control.label"
81
- class="k-checkbox-label"
82
- [for]="cb"
83
- [text]="control.label">
89
+ class="k-checkbox-label"
90
+ [for]="cb"
91
+ [text]="control.label">
84
92
  </kendo-label>
93
+ }
85
94
  </div>
86
-
87
- <kendo-formhint *ngIf="control?.hint">{{control.hint}}</kendo-formhint>
88
- <ng-container *ngIf="showError && control.formControl?.invalid && control.formControl.touched">
89
- <kendo-formerror *ngFor="let err of control?.formControl?.errors | keyvalue">{{control.errors ? control.errors[err.key] : messageFor('formValidationError', err.key, control.name)}}</kendo-formerror>
90
- </ng-container>
95
+ }
96
+
97
+ @if (control?.hint) {
98
+ <kendo-formhint>{{control.hint}}</kendo-formhint>
99
+ }
100
+ @if (showError && control.formControl?.invalid && control.formControl.touched) {
101
+ @for (err of control?.formControl?.errors | keyvalue; track err) {
102
+ <kendo-formerror>{{control.errors ? control.errors[err.key] : messageFor('formValidationError', err.key, control.name)}}</kendo-formerror>
103
+ }
104
+ }
91
105
  </kendo-formfield>
92
- `, isInline: true, dependencies: [{ kind: "pipe", type: KeyValuePipe, name: "keyvalue" }, { kind: "directive", type: NgFor, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "component", type: i3.LabelComponent, selector: "kendo-label", inputs: ["text", "for", "optional", "labelCssStyle", "labelCssClass"], exportAs: ["kendoLabel"] }, { kind: "component", type: i3.FloatingLabelComponent, selector: "kendo-floatinglabel", inputs: ["labelCssStyle", "labelCssClass", "id", "text", "optional"], outputs: ["positionChange"], exportAs: ["kendoFloatingLabel"] }, { kind: "component", type: i4.FormFieldComponent, selector: "kendo-formfield", inputs: ["showHints", "orientation", "showErrors", "colSpan"] }, { kind: "component", type: i4.HintComponent, selector: "kendo-formhint", inputs: ["align"] }, { kind: "component", type: i4.ErrorComponent, selector: "kendo-formerror", inputs: ["align"] }, { kind: "component", type: i4.TextBoxComponent, selector: "kendo-textbox", inputs: ["focusableId", "title", "type", "disabled", "readonly", "tabindex", "value", "selectOnFocus", "showSuccessIcon", "showErrorIcon", "clearButton", "successIcon", "successSvgIcon", "errorIcon", "errorSvgIcon", "clearButtonIcon", "clearButtonSvgIcon", "size", "rounded", "fillMode", "tabIndex", "placeholder", "maxlength", "inputAttributes"], outputs: ["valueChange", "inputFocus", "inputBlur", "focus", "blur"], exportAs: ["kendoTextBox"] }, { kind: "component", type: i4.NumericTextBoxComponent, selector: "kendo-numerictextbox", inputs: ["focusableId", "disabled", "readonly", "title", "autoCorrect", "format", "max", "min", "decimals", "placeholder", "step", "spinners", "rangeValidation", "tabindex", "tabIndex", "changeValueOnScroll", "selectOnFocus", "value", "maxlength", "size", "rounded", "fillMode", "inputAttributes"], outputs: ["valueChange", "focus", "blur", "inputFocus", "inputBlur"], exportAs: ["kendoNumericTextBox"] }, { kind: "component", type: i4.CheckBoxComponent, selector: "kendo-checkbox", inputs: ["checkedState", "rounded"], outputs: ["checkedStateChange"], exportAs: ["kendoCheckBox"] }, { kind: "component", type: i5.DatePickerComponent, selector: "kendo-datepicker", inputs: ["focusableId", "cellTemplate", "clearButton", "inputAttributes", "monthCellTemplate", "yearCellTemplate", "decadeCellTemplate", "centuryCellTemplate", "weekNumberTemplate", "headerTitleTemplate", "headerTemplate", "footerTemplate", "footer", "navigationItemTemplate", "weekDaysFormat", "showOtherMonthDays", "activeView", "bottomView", "topView", "calendarType", "animateCalendarNavigation", "disabled", "readonly", "readOnlyInput", "popupSettings", "navigation", "min", "max", "incompleteDateValidation", "autoCorrectParts", "autoSwitchParts", "autoSwitchKeys", "enableMouseWheel", "allowCaretMode", "autoFill", "focusedDate", "value", "format", "twoDigitYearMax", "formatPlaceholder", "placeholder", "tabindex", "tabIndex", "disabledDates", "adaptiveTitle", "adaptiveSubtitle", "rangeValidation", "disabledDatesValidation", "weekNumber", "size", "rounded", "fillMode", "adaptiveMode"], outputs: ["valueChange", "focus", "blur", "open", "close", "escape"], exportAs: ["kendo-datepicker"] }] });
106
+ `, isInline: true, dependencies: [{ kind: "pipe", type: KeyValuePipe, name: "keyvalue" }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "component", type: i3.LabelComponent, selector: "kendo-label", inputs: ["text", "for", "optional", "labelCssStyle", "labelCssClass"], exportAs: ["kendoLabel"] }, { kind: "component", type: i3.FloatingLabelComponent, selector: "kendo-floatinglabel", inputs: ["labelCssStyle", "labelCssClass", "id", "text", "optional"], outputs: ["positionChange"], exportAs: ["kendoFloatingLabel"] }, { kind: "component", type: i4.FormFieldComponent, selector: "kendo-formfield", inputs: ["showHints", "orientation", "showErrors", "colSpan"] }, { kind: "component", type: i4.HintComponent, selector: "kendo-formhint", inputs: ["align"] }, { kind: "component", type: i4.ErrorComponent, selector: "kendo-formerror", inputs: ["align"] }, { kind: "component", type: i4.TextBoxComponent, selector: "kendo-textbox", inputs: ["focusableId", "title", "type", "disabled", "readonly", "tabindex", "value", "selectOnFocus", "showSuccessIcon", "showErrorIcon", "clearButton", "successIcon", "successSvgIcon", "errorIcon", "errorSvgIcon", "clearButtonIcon", "clearButtonSvgIcon", "size", "rounded", "fillMode", "tabIndex", "placeholder", "maxlength", "inputAttributes"], outputs: ["valueChange", "inputFocus", "inputBlur", "focus", "blur"], exportAs: ["kendoTextBox"] }, { kind: "component", type: i4.NumericTextBoxComponent, selector: "kendo-numerictextbox", inputs: ["focusableId", "disabled", "readonly", "title", "autoCorrect", "format", "max", "min", "decimals", "placeholder", "step", "spinners", "rangeValidation", "tabindex", "tabIndex", "changeValueOnScroll", "selectOnFocus", "value", "maxlength", "size", "rounded", "fillMode", "inputAttributes"], outputs: ["valueChange", "focus", "blur", "inputFocus", "inputBlur"], exportAs: ["kendoNumericTextBox"] }, { kind: "component", type: i4.CheckBoxComponent, selector: "kendo-checkbox", inputs: ["checkedState", "rounded"], outputs: ["checkedStateChange"], exportAs: ["kendoCheckBox"] }, { kind: "component", type: i5.DatePickerComponent, selector: "kendo-datepicker", inputs: ["focusableId", "cellTemplate", "clearButton", "inputAttributes", "monthCellTemplate", "yearCellTemplate", "decadeCellTemplate", "centuryCellTemplate", "weekNumberTemplate", "headerTitleTemplate", "headerTemplate", "footerTemplate", "footer", "navigationItemTemplate", "weekDaysFormat", "showOtherMonthDays", "activeView", "bottomView", "topView", "calendarType", "animateCalendarNavigation", "disabled", "readonly", "readOnlyInput", "popupSettings", "navigation", "min", "max", "incompleteDateValidation", "autoCorrectParts", "autoSwitchParts", "autoSwitchKeys", "enableMouseWheel", "allowCaretMode", "autoFill", "focusedDate", "value", "format", "twoDigitYearMax", "formatPlaceholder", "placeholder", "tabindex", "tabIndex", "disabledDates", "adaptiveTitle", "adaptiveSubtitle", "rangeValidation", "disabledDatesValidation", "weekNumber", "size", "rounded", "fillMode", "adaptiveMode"], outputs: ["valueChange", "focus", "blur", "open", "close", "escape"], exportAs: ["kendo-datepicker"] }] });
93
107
  }
94
108
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: FormFormFieldComponent, decorators: [{
95
109
  type: Component,
96
110
  args: [{
97
111
  selector: 'kendo-form-formfield',
98
112
  standalone: true,
99
- imports: [KeyValuePipe, NgFor, NgIf, ReactiveFormsModule,
100
- KENDO_LABELS, KENDO_FORMFIELD, KENDO_TEXTBOX, KENDO_NUMERICTEXTBOX, KENDO_BUTTON, KENDO_CHECKBOX, KENDO_DATEPICKER],
113
+ imports: [KeyValuePipe, ReactiveFormsModule, KENDO_LABELS, KENDO_FORMFIELD, KENDO_TEXTBOX, KENDO_NUMERICTEXTBOX, KENDO_BUTTON, KENDO_CHECKBOX, KENDO_DATEPICKER],
101
114
  template: `
102
115
  <kendo-formfield
103
- [orientation]="control.orientation">
116
+ [orientation]="control.orientation">
117
+ @if (control.label && floatingLabel && $any(control.dataType) !== 'boolean') {
104
118
  <kendo-floatinglabel
105
- *ngIf="control.label && floatingLabel && $any(control.dataType) !== 'boolean'"
106
- labelCssClass="k-form-label"
107
- [text]="control.label">
119
+ labelCssClass="k-form-label"
120
+ [text]="control.label">
121
+ @if ($any(control.dataType) === 'text') {
108
122
  <kendo-textbox
109
- *ngIf="$any(control.dataType) === 'text'"
110
- [formControl]="control.formControl"></kendo-textbox>
123
+ [formControl]="control.formControl"></kendo-textbox>
124
+ }
125
+ @if ($any(control.dataType) === 'numeric') {
111
126
  <kendo-numerictextbox
112
- *ngIf="$any(control.dataType) === 'numeric'"
113
- [formControl]="control.formControl"></kendo-numerictextbox>
127
+ [formControl]="control.formControl"></kendo-numerictextbox>
128
+ }
129
+ @if ($any(control.dataType) === 'date') {
114
130
  <kendo-datepicker
115
- *ngIf="$any(control.dataType) === 'date'"
116
- [formControl]="control.formControl"></kendo-datepicker>
131
+ [formControl]="control.formControl"></kendo-datepicker>
132
+ }
117
133
  </kendo-floatinglabel>
134
+ }
135
+ @if (control.label && !floatingLabel && $any(control.dataType) !== 'boolean') {
118
136
  <kendo-label [style.align-items]="'start'"
119
- *ngIf="control.label && !floatingLabel && $any(control.dataType) !== 'boolean'"
120
- labelCssClass="k-form-label"
121
- [text]="control.label"
122
- [for]="input">
137
+ labelCssClass="k-form-label"
138
+ [text]="control.label"
139
+ [for]="input">
123
140
  </kendo-label>
141
+ }
142
+ @if (!floatingLabel && (control.dataType) === 'text') {
124
143
  <kendo-textbox #input
125
- *ngIf="!floatingLabel && (control.dataType) === 'text'"
126
- [formControl]="control.formControl"></kendo-textbox>
144
+ [formControl]="control.formControl"></kendo-textbox>
145
+ }
146
+ @if (!floatingLabel && $any(control.dataType) === 'numeric') {
127
147
  <kendo-numerictextbox #input
128
- *ngIf="!floatingLabel && $any(control.dataType) === 'numeric'"
129
- [formControl]="control.formControl"></kendo-numerictextbox>
148
+ [formControl]="control.formControl"></kendo-numerictextbox>
149
+ }
150
+ @if (!floatingLabel && $any(control.dataType) === 'date') {
130
151
  <kendo-datepicker #input
131
- *ngIf="!floatingLabel && $any(control.dataType) === 'date'"
132
- [formControl]="control.formControl"></kendo-datepicker>
152
+ [formControl]="control.formControl"></kendo-datepicker>
153
+ }
154
+ @if (control.label && $any(control.dataType) === 'boolean') {
133
155
  <div
134
- *ngIf="control.label && $any(control.dataType) === 'boolean'"
135
- class="k-form-field-checkbox-wrap">
136
- <kendo-checkbox #cb [formControl]="control.formControl"></kendo-checkbox>
156
+ class="k-form-field-checkbox-wrap">
157
+ <kendo-checkbox #cb [formControl]="control.formControl"></kendo-checkbox>
158
+ @if (control.label) {
137
159
  <kendo-label
138
- *ngIf="control.label"
139
- class="k-checkbox-label"
140
- [for]="cb"
141
- [text]="control.label">
160
+ class="k-checkbox-label"
161
+ [for]="cb"
162
+ [text]="control.label">
142
163
  </kendo-label>
164
+ }
143
165
  </div>
144
-
145
- <kendo-formhint *ngIf="control?.hint">{{control.hint}}</kendo-formhint>
146
- <ng-container *ngIf="showError && control.formControl?.invalid && control.formControl.touched">
147
- <kendo-formerror *ngFor="let err of control?.formControl?.errors | keyvalue">{{control.errors ? control.errors[err.key] : messageFor('formValidationError', err.key, control.name)}}</kendo-formerror>
148
- </ng-container>
166
+ }
167
+
168
+ @if (control?.hint) {
169
+ <kendo-formhint>{{control.hint}}</kendo-formhint>
170
+ }
171
+ @if (showError && control.formControl?.invalid && control.formControl.touched) {
172
+ @for (err of control?.formControl?.errors | keyvalue; track err) {
173
+ <kendo-formerror>{{control.errors ? control.errors[err.key] : messageFor('formValidationError', err.key, control.name)}}</kendo-formerror>
174
+ }
175
+ }
149
176
  </kendo-formfield>
150
- `
177
+ `
151
178
  }]
152
179
  }], ctorParameters: () => [{ type: i1.LocalizationService }, { type: i0.ChangeDetectorRef }], propDecorators: { control: [{
153
180
  type: Input