@progress/kendo-angular-grid 17.0.0-develop.36 → 17.0.0-develop.38

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 (29) hide show
  1. package/column-menu/column-chooser-item-checked.directive.d.ts +5 -4
  2. package/column-menu/column-list.component.d.ts +1 -1
  3. package/esm2022/column-menu/column-chooser-item-checked.directive.mjs +12 -9
  4. package/esm2022/column-menu/column-list.component.mjs +59 -66
  5. package/esm2022/filtering/boolean-filter.component.mjs +3 -12
  6. package/esm2022/filtering/cell/string-filter-cell.component.mjs +4 -2
  7. package/esm2022/filtering/filter-row.component.mjs +4 -8
  8. package/esm2022/filtering/menu/boolean-filter-menu.component.mjs +8 -10
  9. package/esm2022/filtering/menu/filter-menu.module.mjs +1 -1
  10. package/esm2022/filtering/menu/string-filter-menu-input.component.mjs +11 -11
  11. package/esm2022/grid.module.mjs +1 -1
  12. package/esm2022/grouping/group-header.component.mjs +2 -2
  13. package/esm2022/navigation/default-focusable-element.mjs +2 -1
  14. package/esm2022/package-metadata.mjs +2 -2
  15. package/esm2022/rendering/cell.component.mjs +39 -59
  16. package/esm2022/rendering/footer/footer.component.mjs +2 -2
  17. package/esm2022/rendering/header/header.component.mjs +17 -20
  18. package/esm2022/rendering/header/header.module.mjs +1 -1
  19. package/esm2022/rendering/list.component.mjs +4 -4
  20. package/esm2022/rendering/table-body.component.mjs +10 -12
  21. package/esm2022/selection/selectall-checkbox.directive.mjs +19 -21
  22. package/esm2022/selection/selection-checkbox.directive.mjs +14 -10
  23. package/fesm2022/progress-kendo-angular-grid.mjs +202 -248
  24. package/filtering/boolean-filter.component.d.ts +0 -4
  25. package/filtering/menu/boolean-filter-menu.component.d.ts +2 -1
  26. package/package.json +18 -18
  27. package/schematics/ngAdd/index.js +4 -4
  28. package/selection/selectall-checkbox.directive.d.ts +5 -6
  29. package/selection/selection-checkbox.directive.d.ts +4 -3
@@ -2,19 +2,20 @@
2
2
  * Copyright © 2024 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 { ElementRef, Renderer2 } from '@angular/core';
5
+ import { ElementRef } from '@angular/core';
6
+ import { CheckBoxComponent } from '@progress/kendo-angular-inputs';
6
7
  import * as i0 from "@angular/core";
7
8
  /**
8
9
  * @hidden
9
10
  */
10
11
  export declare class ColumnMenuChooserItemCheckedDirective {
11
12
  host: ElementRef;
12
- private renderer;
13
13
  kendoColumnMenuChooserItemChecked: boolean;
14
+ checkbox: CheckBoxComponent;
14
15
  private checkedChangeSub;
15
- constructor(host: ElementRef, renderer: Renderer2);
16
+ constructor(host: ElementRef);
16
17
  ngAfterViewInit(): void;
17
18
  ngOnDestroy(): void;
18
19
  static ɵfac: i0.ɵɵFactoryDeclaration<ColumnMenuChooserItemCheckedDirective, never>;
19
- static ɵdir: i0.ɵɵDirectiveDeclaration<ColumnMenuChooserItemCheckedDirective, "[kendoColumnMenuChooserItemChecked]", never, { "kendoColumnMenuChooserItemChecked": { "alias": "kendoColumnMenuChooserItemChecked"; "required": false; }; }, {}, never, never, true, never>;
20
+ static ɵdir: i0.ɵɵDirectiveDeclaration<ColumnMenuChooserItemCheckedDirective, "[kendoColumnMenuChooserItemChecked]", never, { "kendoColumnMenuChooserItemChecked": { "alias": "kendoColumnMenuChooserItemChecked"; "required": false; }; }, {}, ["checkbox"], never, true, never>;
20
21
  }
@@ -33,6 +33,7 @@ export declare class ColumnListComponent implements OnInit, OnDestroy {
33
33
  resetButton: ElementRef;
34
34
  private applyButton;
35
35
  private options;
36
+ private checkboxes;
36
37
  private hasLocked;
37
38
  private hasVisibleLocked;
38
39
  private unlockedCount;
@@ -51,7 +52,6 @@ export declare class ColumnListComponent implements OnInit, OnDestroy {
51
52
  applyChanges(): void;
52
53
  onTab(e: Event): void;
53
54
  onKeydown: (e: KeyboardEvent) => void;
54
- private forEachCheckBox;
55
55
  private updateDisabled;
56
56
  private updateColumnState;
57
57
  private setDisabledState;
@@ -2,7 +2,8 @@
2
2
  * Copyright © 2024 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 { Directive, ElementRef, HostBinding, Input, Renderer2 } from '@angular/core';
5
+ import { ContentChild, Directive, ElementRef, HostBinding, Input } from '@angular/core';
6
+ import { CheckBoxComponent } from '@progress/kendo-angular-inputs';
6
7
  import { Subscription } from 'rxjs';
7
8
  import * as i0 from "@angular/core";
8
9
  /**
@@ -10,23 +11,22 @@ import * as i0 from "@angular/core";
10
11
  */
11
12
  export class ColumnMenuChooserItemCheckedDirective {
12
13
  host;
13
- renderer;
14
14
  kendoColumnMenuChooserItemChecked;
15
+ checkbox;
15
16
  checkedChangeSub = new Subscription();
16
- constructor(host, renderer) {
17
+ constructor(host) {
17
18
  this.host = host;
18
- this.renderer = renderer;
19
19
  }
20
20
  ngAfterViewInit() {
21
- this.checkedChangeSub.add(this.renderer.listen(this.host.nativeElement.firstElementChild, 'change', (e) => {
22
- this.kendoColumnMenuChooserItemChecked = e.target.checked;
21
+ this.checkedChangeSub.add(this.checkbox.checkedStateChange.subscribe(() => {
22
+ this.kendoColumnMenuChooserItemChecked = this.checkbox.checkedState === true;
23
23
  }));
24
24
  }
25
25
  ngOnDestroy() {
26
26
  this.checkedChangeSub.unsubscribe();
27
27
  }
28
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: ColumnMenuChooserItemCheckedDirective, deps: [{ token: i0.ElementRef }, { token: i0.Renderer2 }], target: i0.ɵɵFactoryTarget.Directive });
29
- static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.2.12", type: ColumnMenuChooserItemCheckedDirective, isStandalone: true, selector: "[kendoColumnMenuChooserItemChecked]", inputs: { kendoColumnMenuChooserItemChecked: "kendoColumnMenuChooserItemChecked" }, host: { properties: { "attr.aria-checked": "this.kendoColumnMenuChooserItemChecked" } }, ngImport: i0 });
28
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: ColumnMenuChooserItemCheckedDirective, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Directive });
29
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.2.12", type: ColumnMenuChooserItemCheckedDirective, isStandalone: true, selector: "[kendoColumnMenuChooserItemChecked]", inputs: { kendoColumnMenuChooserItemChecked: "kendoColumnMenuChooserItemChecked" }, host: { properties: { "attr.aria-checked": "this.kendoColumnMenuChooserItemChecked" } }, queries: [{ propertyName: "checkbox", first: true, predicate: CheckBoxComponent, descendants: true }], ngImport: i0 });
30
30
  }
31
31
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: ColumnMenuChooserItemCheckedDirective, decorators: [{
32
32
  type: Directive,
@@ -34,9 +34,12 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
34
34
  selector: '[kendoColumnMenuChooserItemChecked]',
35
35
  standalone: true
36
36
  }]
37
- }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.Renderer2 }]; }, propDecorators: { kendoColumnMenuChooserItemChecked: [{
37
+ }], ctorParameters: function () { return [{ type: i0.ElementRef }]; }, propDecorators: { kendoColumnMenuChooserItemChecked: [{
38
38
  type: HostBinding,
39
39
  args: ['attr.aria-checked']
40
40
  }, {
41
41
  type: Input
42
+ }], checkbox: [{
43
+ type: ContentChild,
44
+ args: [CheckBoxComponent]
42
45
  }] } });
@@ -9,6 +9,8 @@ import { ColumnMenuChooserItemCheckedDirective } from './column-chooser-item-che
9
9
  import { Keys } from '@progress/kendo-angular-common';
10
10
  import { Subscription } from 'rxjs';
11
11
  import { NgFor, NgIf, NgClass } from '@angular/common';
12
+ import { CheckBoxComponent } from '@progress/kendo-angular-inputs';
13
+ import { take } from 'rxjs/operators';
12
14
  import * as i0 from "@angular/core";
13
15
  import * as i1 from "./column-list-kb-nav.service";
14
16
  /**
@@ -48,6 +50,7 @@ export class ColumnListComponent {
48
50
  resetButton;
49
51
  applyButton;
50
52
  options;
53
+ checkboxes;
51
54
  hasLocked;
52
55
  hasVisibleLocked;
53
56
  unlockedCount = 0;
@@ -68,36 +71,35 @@ export class ColumnListComponent {
68
71
  }
69
72
  this.ngZone.runOutsideAngular(() => {
70
73
  this.domSubscriptions.add(this.renderer.listen(this.element.nativeElement, 'click', (e) => {
71
- const closestItem = e.target.closest('.k-column-list-item');
72
- if (closestItem) {
73
- const checkbox = closestItem.querySelector('.k-checkbox');
74
- const index = parseInt(checkbox.getAttribute('data-index'), 10);
75
- if (e.target === checkbox) {
76
- closestItem.focus();
77
- }
78
- else {
79
- e.preventDefault();
80
- checkbox.checked = !checkbox.checked;
81
- }
82
- if (this.autoSync) {
83
- const column = this.columns[index];
84
- const hidden = !checkbox.checked;
85
- if (Boolean(column.hidden) !== hidden) {
86
- this.ngZone.run(() => {
87
- column.hidden = hidden;
88
- this.columnChange.emit([column]);
89
- });
74
+ this.ngZone.onStable.pipe(take(1)).subscribe(() => {
75
+ const closestItem = e.target.closest('.k-column-list-item');
76
+ if (closestItem) {
77
+ const checkboxElement = closestItem.querySelector('.k-checkbox-wrap');
78
+ const checkbox = this.checkboxes.find(checkBox => checkBox.hostElement.nativeElement === checkboxElement);
79
+ const index = parseInt(checkboxElement.firstElementChild.getAttribute('data-index'), 10);
80
+ if (this.autoSync) {
81
+ if (!this.columns[index]) {
82
+ return;
83
+ }
84
+ const column = this.columns[index];
85
+ const hidden = !checkbox.checkedState;
86
+ if (Boolean(column.hidden) !== hidden) {
87
+ this.ngZone.run(() => {
88
+ column.hidden = hidden;
89
+ this.columnChange.emit([column]);
90
+ });
91
+ }
92
+ }
93
+ else {
94
+ this.updateDisabled();
95
+ }
96
+ if (index !== this.listNavigationService.activeIndex) {
97
+ this.listNavigationService.toggle(this.listNavigationService.activeIndex, false);
98
+ this.listNavigationService.activeIndex = index;
99
+ this.listNavigationService.toggle(index, true);
90
100
  }
91
101
  }
92
- else {
93
- this.updateDisabled();
94
- }
95
- if (index !== this.listNavigationService.activeIndex) {
96
- this.listNavigationService.toggle(this.listNavigationService.activeIndex, false);
97
- this.listNavigationService.activeIndex = index;
98
- this.listNavigationService.toggle(index, true);
99
- }
100
- }
102
+ });
101
103
  }));
102
104
  this.domSubscriptions.add(this.renderer.listen(this.element.nativeElement, 'keydown', this.onKeydown));
103
105
  });
@@ -105,7 +107,7 @@ export class ColumnListComponent {
105
107
  ngAfterViewInit() {
106
108
  this.listNavigationService.items = this.options.toArray();
107
109
  this.listNavigationService.toggle(0, true);
108
- this.updateDisabled();
110
+ this.ngZone.onStable.pipe(take(1)).subscribe(() => this.updateDisabled());
109
111
  }
110
112
  ngOnChanges(changes) {
111
113
  if (!this.service) {
@@ -126,17 +128,17 @@ export class ColumnListComponent {
126
128
  (this.hasVisibleLocked && !this.hasUnlockedFiltered && this.unlockedCount === 1 && !column.locked && !column.hidden);
127
129
  }
128
130
  cancelChanges() {
129
- this.forEachCheckBox((element, index) => {
130
- element.checked = !this.columns[index].hidden;
131
+ this.checkboxes.forEach((element, index) => {
132
+ element.checkedState = !this.columns[index].hidden;
131
133
  });
132
134
  this.updateDisabled();
133
135
  this.reset.emit();
134
136
  }
135
137
  applyChanges() {
136
138
  const changed = [];
137
- this.forEachCheckBox((element, index) => {
139
+ this.checkboxes.forEach((item, index) => {
138
140
  const column = this.columns[index];
139
- const hidden = !element.checked;
141
+ const hidden = !item.checkedState;
140
142
  if (Boolean(column.hidden) !== hidden) {
141
143
  column.hidden = hidden;
142
144
  changed.push(column);
@@ -170,20 +172,13 @@ export class ColumnListComponent {
170
172
  this.listNavigationService.toggleCheckedState();
171
173
  }
172
174
  };
173
- forEachCheckBox(callback) {
174
- const checkboxes = this.element.nativeElement.getElementsByClassName('k-checkbox');
175
- const length = checkboxes.length;
176
- for (let idx = 0; idx < length; idx++) {
177
- callback(checkboxes[idx], idx);
178
- }
179
- }
180
175
  updateDisabled() {
181
176
  if (this.allowHideAll && !this.hasLocked) {
182
177
  return;
183
178
  }
184
179
  const checkedItems = [];
185
- this.forEachCheckBox((checkbox, index) => {
186
- if (checkbox.checked) {
180
+ this.checkboxes.forEach((checkbox, index) => {
181
+ if (checkbox.checkedState) {
187
182
  checkedItems.push({ checkbox, index });
188
183
  }
189
184
  this.setDisabledState(checkbox, false);
@@ -213,16 +208,17 @@ export class ColumnListComponent {
213
208
  this.hasUnlockedFiltered = false;
214
209
  }
215
210
  }
216
- setDisabledState(element, disabled) {
217
- element.disabled = disabled;
218
- const parent = element.parentElement;
211
+ setDisabledState(checkbox, disabled) {
212
+ this.ngZone.run(() => checkbox.disabled = disabled);
213
+ const checkboxElement = checkbox.hostElement.nativeElement;
214
+ const parentElement = checkboxElement.parentElement;
219
215
  const classCommand = disabled ? 'addClass' : 'removeClass';
220
216
  const attributeCommand = disabled ? 'setAttribute' : 'removeAttribute';
221
- this.renderer[classCommand](parent, 'k-disabled');
222
- this.renderer[attributeCommand](parent, 'aria-disabled', disabled ? 'true' : undefined);
217
+ this.renderer[classCommand](parentElement, 'k-disabled');
218
+ this.renderer[attributeCommand](parentElement, 'aria-disabled', disabled ? 'true' : undefined);
223
219
  }
224
220
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: ColumnListComponent, deps: [{ token: i0.ElementRef }, { token: i0.NgZone }, { token: i0.Renderer2 }, { token: i1.ColumnListKeyboardNavigation }], target: i0.ɵɵFactoryTarget.Component });
225
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: ColumnListComponent, isStandalone: true, selector: "kendo-grid-columnlist", inputs: { columns: "columns", autoSync: "autoSync", ariaLabel: "ariaLabel", allowHideAll: "allowHideAll", applyText: "applyText", resetText: "resetText", actionsClass: "actionsClass", isLast: "isLast", isExpanded: "isExpanded", service: "service" }, outputs: { reset: "reset", apply: "apply", columnChange: "columnChange" }, host: { properties: { "class.k-column-list-wrapper": "this.className" } }, providers: [ColumnListKeyboardNavigation], viewQueries: [{ propertyName: "resetButton", first: true, predicate: ["resetButton"], descendants: true }, { propertyName: "applyButton", first: true, predicate: ["applyButton"], descendants: true }, { propertyName: "options", predicate: ColumnMenuChooserItemCheckedDirective, descendants: true }], usesOnChanges: true, ngImport: i0, template: `
221
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: ColumnListComponent, isStandalone: true, selector: "kendo-grid-columnlist", inputs: { columns: "columns", autoSync: "autoSync", ariaLabel: "ariaLabel", allowHideAll: "allowHideAll", applyText: "applyText", resetText: "resetText", actionsClass: "actionsClass", isLast: "isLast", isExpanded: "isExpanded", service: "service" }, outputs: { reset: "reset", apply: "apply", columnChange: "columnChange" }, host: { properties: { "class.k-column-list-wrapper": "this.className" } }, providers: [ColumnListKeyboardNavigation], viewQueries: [{ propertyName: "resetButton", first: true, predicate: ["resetButton"], descendants: true }, { propertyName: "applyButton", first: true, predicate: ["applyButton"], descendants: true }, { propertyName: "options", predicate: ColumnMenuChooserItemCheckedDirective, descendants: true }, { propertyName: "checkboxes", predicate: CheckBoxComponent, descendants: true }], usesOnChanges: true, ngImport: i0, template: `
226
222
  <div
227
223
  class="k-column-list"
228
224
  role="listbox"
@@ -233,14 +229,11 @@ export class ColumnListComponent {
233
229
  class='k-column-list-item'
234
230
  [kendoColumnMenuChooserItemChecked]="!column.hidden"
235
231
  role="option">
236
- <input
237
- class="k-checkbox k-checkbox-md k-rounded-md"
238
- type="checkbox"
239
- [attr.data-index]="index"
240
- [checked]="!column.hidden"
241
- tabindex="-1"
242
- [attr.aria-hidden]="true"
243
- [disabled]="isDisabled(column)" />
232
+ <kendo-checkbox
233
+ [inputAttributes]="{'data-index': index.toString()}"
234
+ [checkedState]="!column.hidden"
235
+ [disabled]="isDisabled(column)"
236
+ ></kendo-checkbox>
244
237
  <span class="k-checkbox-label">{{ column.displayTitle }}</span>
245
238
  </label>
246
239
  </div>
@@ -261,7 +254,7 @@ export class ColumnListComponent {
261
254
  (keydown.enter)="$event.preventDefault(); $event.stopPropagation; cancelChanges();"
262
255
  (keydown.space)="$event.preventDefault(); $event.stopPropagation; cancelChanges();">{{ resetText }}</button>
263
256
  </div>
264
- `, isInline: true, dependencies: [{ kind: "directive", type: NgFor, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: ColumnMenuChooserItemCheckedDirective, selector: "[kendoColumnMenuChooserItemChecked]", inputs: ["kendoColumnMenuChooserItemChecked"] }, { kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }] });
257
+ `, isInline: true, dependencies: [{ kind: "directive", type: NgFor, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: ColumnMenuChooserItemCheckedDirective, selector: "[kendoColumnMenuChooserItemChecked]", inputs: ["kendoColumnMenuChooserItemChecked"] }, { kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "component", type: CheckBoxComponent, selector: "kendo-checkbox", inputs: ["checkedState", "rounded"], outputs: ["checkedStateChange"], exportAs: ["kendoCheckBox"] }] });
265
258
  }
266
259
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: ColumnListComponent, decorators: [{
267
260
  type: Component,
@@ -279,14 +272,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
279
272
  class='k-column-list-item'
280
273
  [kendoColumnMenuChooserItemChecked]="!column.hidden"
281
274
  role="option">
282
- <input
283
- class="k-checkbox k-checkbox-md k-rounded-md"
284
- type="checkbox"
285
- [attr.data-index]="index"
286
- [checked]="!column.hidden"
287
- tabindex="-1"
288
- [attr.aria-hidden]="true"
289
- [disabled]="isDisabled(column)" />
275
+ <kendo-checkbox
276
+ [inputAttributes]="{'data-index': index.toString()}"
277
+ [checkedState]="!column.hidden"
278
+ [disabled]="isDisabled(column)"
279
+ ></kendo-checkbox>
290
280
  <span class="k-checkbox-label">{{ column.displayTitle }}</span>
291
281
  </label>
292
282
  </div>
@@ -309,7 +299,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
309
299
  </div>
310
300
  `,
311
301
  standalone: true,
312
- imports: [NgFor, ColumnMenuChooserItemCheckedDirective, NgIf, NgClass]
302
+ imports: [NgFor, ColumnMenuChooserItemCheckedDirective, NgIf, NgClass, CheckBoxComponent]
313
303
  }]
314
304
  }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.NgZone }, { type: i0.Renderer2 }, { type: i1.ColumnListKeyboardNavigation }]; }, propDecorators: { className: [{
315
305
  type: HostBinding,
@@ -349,4 +339,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
349
339
  }], options: [{
350
340
  type: ViewChildren,
351
341
  args: [ColumnMenuChooserItemCheckedDirective]
342
+ }], checkboxes: [{
343
+ type: ViewChildren,
344
+ args: [CheckBoxComponent]
352
345
  }] } });
@@ -3,7 +3,7 @@
3
3
  * Licensed under commercial license. See LICENSE.md in the project root for more information
4
4
  *-------------------------------------------------------------------------------------------*/
5
5
  // eslint-disable no-access-missing-member
6
- import { Input, HostBinding, Component } from '@angular/core';
6
+ import { Input, Component } from '@angular/core';
7
7
  import { ColumnComponent } from '../columns/column.component';
8
8
  import { FilterService } from './filter.service';
9
9
  import { BaseFilterCellComponent } from './base-filter-cell.component';
@@ -16,12 +16,6 @@ import * as i2 from "../common/provider.service";
16
16
  */
17
17
  export class BooleanFilterComponent extends BaseFilterCellComponent {
18
18
  ctx;
19
- /**
20
- * @hidden
21
- */
22
- get hostClasses() {
23
- return true;
24
- }
25
19
  /**
26
20
  * The column with which the filter is associated.
27
21
  * @type {ColumnComponent}
@@ -76,7 +70,7 @@ export class BooleanFilterComponent extends BaseFilterCellComponent {
76
70
  this.defaultItem = { text: this.ctx.localization.get("filterBooleanAll"), value: null };
77
71
  }
78
72
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: BooleanFilterComponent, deps: [{ token: i1.FilterService }, { token: i2.ContextService }], target: i0.ɵɵFactoryTarget.Component });
79
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: BooleanFilterComponent, selector: "kendo-grid-boolean-filter-base", inputs: { column: "column" }, host: { properties: { "class.k-filtercell-boolean": "this.hostClasses" } }, usesInheritance: true, ngImport: i0, template: ``, isInline: true });
73
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: BooleanFilterComponent, selector: "kendo-grid-boolean-filter-base", inputs: { column: "column" }, usesInheritance: true, ngImport: i0, template: ``, isInline: true });
80
74
  }
81
75
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: BooleanFilterComponent, decorators: [{
82
76
  type: Component,
@@ -84,9 +78,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
84
78
  selector: 'kendo-grid-boolean-filter-base',
85
79
  template: ``
86
80
  }]
87
- }], ctorParameters: function () { return [{ type: i1.FilterService }, { type: i2.ContextService }]; }, propDecorators: { hostClasses: [{
88
- type: HostBinding,
89
- args: ['class.k-filtercell-boolean']
90
- }], column: [{
81
+ }], ctorParameters: function () { return [{ type: i1.FilterService }, { type: i2.ContextService }]; }, propDecorators: { column: [{
91
82
  type: Input
92
83
  }] } });
@@ -87,7 +87,8 @@ export class StringFilterCellComponent extends StringFilterComponent {
87
87
  [columnLabel]="columnLabel"
88
88
  [filterDelay]="filterDelay"
89
89
  [placeholder]="placeholder"
90
- [ngModel]="currentFilter?.value"></kendo-textbox>
90
+ [ngModel]="currentFilter?.value ?? null"
91
+ ></kendo-textbox>
91
92
  </kendo-grid-filter-wrapper-cell>
92
93
  `, isInline: true, dependencies: [{ kind: "component", type: FilterCellWrapperComponent, selector: "kendo-grid-filter-wrapper-cell", inputs: ["showOperators"] }, { kind: "component", type: 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: "directive", type: FocusableDirective, selector: "[kendoGridFocusable],\n [kendoGridEditCommand],\n [kendoGridRemoveCommand],\n [kendoGridSaveCommand],\n [kendoGridCancelCommand],\n [kendoGridSelectionCheckbox]\n ", inputs: ["kendoGridFocusable"] }, { kind: "directive", type: FilterInputDirective, selector: "[kendoFilterInput]", inputs: ["filterDelay", "columnLabel", "value"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i4.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i4.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }] });
93
94
  }
@@ -110,7 +111,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
110
111
  [columnLabel]="columnLabel"
111
112
  [filterDelay]="filterDelay"
112
113
  [placeholder]="placeholder"
113
- [ngModel]="currentFilter?.value"></kendo-textbox>
114
+ [ngModel]="currentFilter?.value ?? null"
115
+ ></kendo-textbox>
114
116
  </kendo-grid-filter-wrapper-cell>
115
117
  `,
116
118
  standalone: true,
@@ -46,14 +46,12 @@ export class FilterRowComponent {
46
46
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: FilterRowComponent, deps: [{ token: i1.ContextService }, { token: i2.ColumnInfoService }], target: i0.ɵɵFactoryTarget.Component });
47
47
  static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: FilterRowComponent, isStandalone: true, selector: "[kendoGridFilterRow]", inputs: { columns: "columns", filter: "filter", groups: "groups", detailTemplate: "detailTemplate", logicalRowIndex: "logicalRowIndex", lockedColumnsCount: "lockedColumnsCount" }, host: { properties: { "class.k-filter-row": "this.filterRowClass" } }, ngImport: i0, template: `
48
48
  <td
49
- class="k-table-td"
50
- [class.k-group-cell]="true"
49
+ class="k-table-td k-group-cell k-table-group-td"
51
50
  *ngFor="let g of groups"
52
51
  role="presentation">
53
52
  </td>
54
53
  <td
55
- class="k-table-td"
56
- [class.k-hierarchy-cell]="true"
54
+ class="k-table-td k-hierarchy-cell"
57
55
  *ngIf="detailTemplate?.templateRef"
58
56
  role="presentation">
59
57
  </td>
@@ -78,14 +76,12 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
78
76
  selector: '[kendoGridFilterRow]',
79
77
  template: `
80
78
  <td
81
- class="k-table-td"
82
- [class.k-group-cell]="true"
79
+ class="k-table-td k-group-cell k-table-group-td"
83
80
  *ngFor="let g of groups"
84
81
  role="presentation">
85
82
  </td>
86
83
  <td
87
- class="k-table-td"
88
- [class.k-hierarchy-cell]="true"
84
+ class="k-table-td k-hierarchy-cell"
89
85
  *ngIf="detailTemplate?.templateRef"
90
86
  role="presentation">
91
87
  </td>
@@ -11,7 +11,7 @@ import { replaceMessagePlaceholder } from '../../utils';
11
11
  import { MenuTabbingService } from './menu-tabbing.service';
12
12
  import { ContextService } from '../../common/provider.service';
13
13
  import { NgFor } from '@angular/common';
14
- import { RadioButtonDirective } from '@progress/kendo-angular-inputs';
14
+ import { RadioButtonComponent } from '@progress/kendo-angular-inputs';
15
15
  import * as i0 from "@angular/core";
16
16
  import * as i1 from "../../common/provider.service";
17
17
  /**
@@ -80,7 +80,7 @@ export class BooleanFilterMenuComponent extends BooleanFilterComponent {
80
80
  operator: "eq",
81
81
  value: value
82
82
  }));
83
- this.filterService.menuTabbingService.firstFocusable = input;
83
+ this.filterService.menuTabbingService.firstFocusable = input.hostElement.nativeElement;
84
84
  }
85
85
  /**
86
86
  * @hidden
@@ -109,21 +109,20 @@ export class BooleanFilterMenuComponent extends BooleanFilterComponent {
109
109
  static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: BooleanFilterMenuComponent, isStandalone: true, selector: "kendo-grid-boolean-filter-menu", inputs: { filter: "filter", filterService: "filterService", menuTabbingService: "menuTabbingService" }, host: { properties: { "class.k-filtercell": "this.hostClasses" } }, viewQueries: [{ propertyName: "radioButtons", predicate: BooleanFilterRadioButtonDirective, descendants: true }], usesInheritance: true, ngImport: i0, template: `
110
110
  <ul class="k-radio-list k-reset">
111
111
  <li *ngFor="let item of items">
112
- <input type="radio"
112
+ <kendo-radiobutton
113
113
  kendoFilterMenuRadioButton
114
114
  [columnLabel]="columnLabel"
115
115
  #input
116
116
  [name]="idPrefix"
117
- kendoRadioButton
118
117
  [checked]="isSelected(item.value)"
119
118
  [attr.id]="radioId(item.value)"
120
119
  (change)="onChange(item.value, input)"
121
120
  (keydown.shift.tab)="onShiftTab($event)"
122
- />
121
+ ></kendo-radiobutton>
123
122
  <label class="k-radio-label" [attr.for]="radioId(item.value)">{{item.text}}</label>
124
123
  </li>
125
124
  </ul>
126
- `, isInline: true, dependencies: [{ kind: "directive", type: NgFor, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: RadioButtonDirective, selector: "input[kendoRadioButton]", inputs: ["size"] }, { kind: "directive", type: BooleanFilterRadioButtonDirective, selector: "[kendoFilterMenuRadioButton]", inputs: ["columnLabel"] }] });
125
+ `, isInline: true, dependencies: [{ kind: "directive", type: NgFor, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "component", type: RadioButtonComponent, selector: "kendo-radiobutton", inputs: ["checked"], outputs: ["checkedChange"], exportAs: ["kendoRadioButton"] }, { kind: "directive", type: BooleanFilterRadioButtonDirective, selector: "[kendoFilterMenuRadioButton]", inputs: ["columnLabel"] }] });
127
126
  }
128
127
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: BooleanFilterMenuComponent, decorators: [{
129
128
  type: Component,
@@ -132,23 +131,22 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
132
131
  template: `
133
132
  <ul class="k-radio-list k-reset">
134
133
  <li *ngFor="let item of items">
135
- <input type="radio"
134
+ <kendo-radiobutton
136
135
  kendoFilterMenuRadioButton
137
136
  [columnLabel]="columnLabel"
138
137
  #input
139
138
  [name]="idPrefix"
140
- kendoRadioButton
141
139
  [checked]="isSelected(item.value)"
142
140
  [attr.id]="radioId(item.value)"
143
141
  (change)="onChange(item.value, input)"
144
142
  (keydown.shift.tab)="onShiftTab($event)"
145
- />
143
+ ></kendo-radiobutton>
146
144
  <label class="k-radio-label" [attr.for]="radioId(item.value)">{{item.text}}</label>
147
145
  </li>
148
146
  </ul>
149
147
  `,
150
148
  standalone: true,
151
- imports: [NgFor, RadioButtonDirective, BooleanFilterRadioButtonDirective]
149
+ imports: [NgFor, RadioButtonComponent, BooleanFilterRadioButtonDirective]
152
150
  }]
153
151
  }], ctorParameters: function () { return [{ type: i1.ContextService }]; }, propDecorators: { hostClasses: [{
154
152
  type: HostBinding,
@@ -90,7 +90,7 @@ export class FilterMenuModule {
90
90
  MonthViewService,
91
91
  YearViewService,
92
92
  NavigationService
93
- ], imports: [i15.FilterCellOperatorsComponent, i35.FilterMenuComponent, i36.FilterMenuContainerComponent, i37.FilterMenuInputWrapperComponent, i38.StringFilterMenuInputComponent, i39.StringFilterMenuComponent, i41.NumericFilterMenuComponent, i42.NumericFilterMenuInputComponent, i43.DateFilterMenuInputComponent, i44.DateFilterMenuComponent] });
93
+ ], imports: [i15.FilterCellOperatorsComponent, i35.FilterMenuComponent, i36.FilterMenuContainerComponent, i37.FilterMenuInputWrapperComponent, i38.StringFilterMenuInputComponent, i39.StringFilterMenuComponent, i41.NumericFilterMenuComponent, i42.NumericFilterMenuInputComponent, i43.DateFilterMenuInputComponent, i44.DateFilterMenuComponent, i46.BooleanFilterMenuComponent] });
94
94
  }
95
95
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: FilterMenuModule, decorators: [{
96
96
  type: NgModule,
@@ -11,7 +11,7 @@ import { ContextService } from '../../common/provider.service';
11
11
  import { FilterInputDirective } from '../filter-input.directive';
12
12
  import { FormsModule } from '@angular/forms';
13
13
  import { FilterMenuInputWrapperComponent } from './filter-menu-input-wrapper.component';
14
- import { TextBoxDirective } from '@progress/kendo-angular-inputs';
14
+ import { TextBoxComponent } from '@progress/kendo-angular-inputs';
15
15
  import * as i0 from "@angular/core";
16
16
  import * as i1 from "../../common/provider.service";
17
17
  import * as i2 from "@angular/forms";
@@ -49,15 +49,15 @@ export class StringFilterMenuInputComponent {
49
49
  [isFirstDropDown]="isFirstDropDown"
50
50
  [menuTabbingService]="menuTabbingService"
51
51
  >
52
- <input
53
- kendoTextBox
52
+ <kendo-textbox
54
53
  kendoFilterInput
55
54
  [columnLabel]="columnLabel"
56
55
  [filterDelay]="0"
57
- [attr.placeholder]="placeholder"
58
- [ngModel]="currentFilter?.value" />
56
+ [placeholder]="placeholder"
57
+ [ngModel]="currentFilter?.value ?? null">
58
+ </kendo-textbox>
59
59
  </kendo-grid-filter-menu-input-wrapper>
60
- `, isInline: true, dependencies: [{ kind: "component", type: FilterMenuInputWrapperComponent, selector: "kendo-grid-filter-menu-input-wrapper", inputs: ["filterService", "isFirstDropDown", "menuTabbingService", "currentFilter"] }, { kind: "directive", type: TextBoxDirective, selector: "input[kendoTextBox]", inputs: ["value"] }, { kind: "directive", type: FilterInputDirective, selector: "[kendoFilterInput]", inputs: ["filterDelay", "columnLabel", "value"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i2.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: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }] });
60
+ `, isInline: true, dependencies: [{ kind: "component", type: FilterMenuInputWrapperComponent, selector: "kendo-grid-filter-menu-input-wrapper", inputs: ["filterService", "isFirstDropDown", "menuTabbingService", "currentFilter"] }, { kind: "component", type: 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: "directive", type: FilterInputDirective, selector: "[kendoFilterInput]", inputs: ["filterDelay", "columnLabel", "value"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }] });
61
61
  }
62
62
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: StringFilterMenuInputComponent, decorators: [{
63
63
  type: Component,
@@ -74,17 +74,17 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
74
74
  [isFirstDropDown]="isFirstDropDown"
75
75
  [menuTabbingService]="menuTabbingService"
76
76
  >
77
- <input
78
- kendoTextBox
77
+ <kendo-textbox
79
78
  kendoFilterInput
80
79
  [columnLabel]="columnLabel"
81
80
  [filterDelay]="0"
82
- [attr.placeholder]="placeholder"
83
- [ngModel]="currentFilter?.value" />
81
+ [placeholder]="placeholder"
82
+ [ngModel]="currentFilter?.value ?? null">
83
+ </kendo-textbox>
84
84
  </kendo-grid-filter-menu-input-wrapper>
85
85
  `,
86
86
  standalone: true,
87
- imports: [FilterMenuInputWrapperComponent, TextBoxDirective, FilterInputDirective, FormsModule]
87
+ imports: [FilterMenuInputWrapperComponent, TextBoxComponent, FilterInputDirective, FormsModule]
88
88
  }]
89
89
  }], ctorParameters: function () { return [{ type: i1.ContextService }]; }, propDecorators: { operators: [{
90
90
  type: Input
@@ -176,7 +176,7 @@ export class GridModule {
176
176
  MonthViewService,
177
177
  YearViewService,
178
178
  NavigationService
179
- ], imports: [i4.GroupHeaderComponent, i5.GroupPanelComponent, i25.TableBodyComponent, i27.CellComponent, i28.EditCommandDirective, i29.CancelCommandDirective, i30.SaveCommandDirective, i31.RemoveCommandDirective, i32.AddCommandDirective, i37.HeaderComponent, i42.CustomMessagesComponent, i42.PagerInfoComponent, i42.PagerInputComponent, i42.PagerNextButtonsComponent, i42.PagerNumericButtonsComponent, i42.PagerPageSizesComponent, i42.PagerPrevButtonsComponent, i42.PagerComponent, i42.PagerSpacerComponent, i43.ToolBarComponent, i43.ToolbarCustomMessagesComponent, i43.ToolBarButtonComponent, i43.ToolBarButtonGroupComponent, i43.ToolBarDropDownButtonComponent, i43.ToolBarSeparatorComponent, i43.ToolBarSpacerComponent, i43.ToolBarSplitButtonComponent, i47.StringFilterCellComponent, i48.NumericFilterCellComponent, i49.AutoCompleteFilterCellComponent, i50.BooleanFilterCellComponent, i52.FilterCellWrapperComponent, i53.DateFilterCellComponent, i54.FilterCellOperatorsComponent, i54.FilterCellOperatorsComponent, i74.FilterMenuComponent, i75.FilterMenuContainerComponent, i76.FilterMenuInputWrapperComponent, i77.StringFilterMenuInputComponent, i78.StringFilterMenuComponent, i80.NumericFilterMenuComponent, i81.NumericFilterMenuInputComponent, i82.DateFilterMenuInputComponent, i83.DateFilterMenuComponent, i90.ColumnChooserComponent, i91.ColumnMenuChooserComponent, i92.ColumnMenuFilterComponent, i93.ColumnMenuItemComponent, i95.ColumnMenuSortComponent, i96.ColumnMenuComponent, i97.ColumnMenuLockComponent, i101.ColumnMenuStickComponent, i102.ColumnMenuPositionComponent, i103.ColumnMenuAutoSizeColumnComponent, i104.ColumnMenuAutoSizeAllColumnsComponent, i105.GridComponent, i106.ListComponent] });
179
+ ], imports: [i4.GroupHeaderComponent, i5.GroupPanelComponent, i25.TableBodyComponent, i27.CellComponent, i28.EditCommandDirective, i29.CancelCommandDirective, i30.SaveCommandDirective, i31.RemoveCommandDirective, i32.AddCommandDirective, i37.HeaderComponent, i42.CustomMessagesComponent, i42.PagerInfoComponent, i42.PagerInputComponent, i42.PagerNextButtonsComponent, i42.PagerNumericButtonsComponent, i42.PagerPageSizesComponent, i42.PagerPrevButtonsComponent, i42.PagerComponent, i42.PagerSpacerComponent, i43.ToolBarComponent, i43.ToolbarCustomMessagesComponent, i43.ToolBarButtonComponent, i43.ToolBarButtonGroupComponent, i43.ToolBarDropDownButtonComponent, i43.ToolBarSeparatorComponent, i43.ToolBarSpacerComponent, i43.ToolBarSplitButtonComponent, i47.StringFilterCellComponent, i48.NumericFilterCellComponent, i49.AutoCompleteFilterCellComponent, i50.BooleanFilterCellComponent, i52.FilterCellWrapperComponent, i53.DateFilterCellComponent, i54.FilterCellOperatorsComponent, i54.FilterCellOperatorsComponent, i74.FilterMenuComponent, i75.FilterMenuContainerComponent, i76.FilterMenuInputWrapperComponent, i77.StringFilterMenuInputComponent, i78.StringFilterMenuComponent, i80.NumericFilterMenuComponent, i81.NumericFilterMenuInputComponent, i82.DateFilterMenuInputComponent, i83.DateFilterMenuComponent, i85.BooleanFilterMenuComponent, i89.ColumnListComponent, i90.ColumnChooserComponent, i91.ColumnMenuChooserComponent, i92.ColumnMenuFilterComponent, i93.ColumnMenuItemComponent, i95.ColumnMenuSortComponent, i96.ColumnMenuComponent, i97.ColumnMenuLockComponent, i101.ColumnMenuStickComponent, i102.ColumnMenuPositionComponent, i103.ColumnMenuAutoSizeColumnComponent, i104.ColumnMenuAutoSizeAllColumnsComponent, i105.GridComponent, i106.ListComponent] });
180
180
  }
181
181
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: GridModule, decorators: [{
182
182
  type: NgModule,
@@ -114,7 +114,7 @@ export class GroupHeaderComponent {
114
114
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: GroupHeaderComponent, deps: [{ token: i1.GroupsService }, { token: i2.GroupInfoService }, { token: i3.ContextService }], target: i0.ɵɵFactoryTarget.Component });
115
115
  static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: GroupHeaderComponent, isStandalone: true, selector: "[kendoGridGroupHeader]", inputs: { rowIndex: "rowIndex", logicalRowIndex: "logicalRowIndex", item: "item", skipGroupDecoration: "skipGroupDecoration", hasDetails: "hasDetails", totalColumnsCount: "totalColumnsCount", hasGroupHeaderColumn: "hasGroupHeaderColumn", groupHeaderColumns: "groupHeaderColumns", columns: "columns", groups: "groups" }, host: { properties: { "class.k-grouping-row": "this.groupItemClass", "class.k-table-group-row": "this.tableGroupRowClass" } }, ngImport: i0, template: `
116
116
  <ng-container *ngIf="!skipGroupDecoration">
117
- <td class="k-group-cell k-table-td"
117
+ <td class="k-group-cell k-table-td k-table-group-td"
118
118
  role="presentation"
119
119
  *ngFor="let g of prefixGroupCell(item)"></td>
120
120
  </ng-container>
@@ -189,7 +189,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
189
189
  selector: '[kendoGridGroupHeader]',
190
190
  template: `
191
191
  <ng-container *ngIf="!skipGroupDecoration">
192
- <td class="k-group-cell k-table-td"
192
+ <td class="k-group-cell k-table-td k-table-group-td"
193
193
  role="presentation"
194
194
  *ngFor="let g of prefixGroupCell(item)"></td>
195
195
  </ng-container>
@@ -6,9 +6,10 @@ import { closest, findFocusable, isVisible, matchesNodeName } from '../rendering
6
6
  import { isDocumentAvailable } from '@progress/kendo-angular-common';
7
7
  const isButton = matchesNodeName('button');
8
8
  const isInputTag = matchesNodeName('input');
9
+ const isKendoInputTag = matchesNodeName('kendo-checkbox') || matchesNodeName('kendo-textbox');
9
10
  const navigableRegex = /(button|checkbox|color|file|radio|reset|submit)/i;
10
11
  const isNavigableInput = element => isInputTag(element) && navigableRegex.test(element.type);
11
- const isNavigable = element => !element.disabled && (isButton(element) || isNavigableInput(element));
12
+ const isNavigable = element => !element.disabled && (isButton(element) || isNavigableInput(element) || isKendoInputTag(element));
12
13
  /**
13
14
  * @hidden
14
15
  */