@progress/kendo-angular-grid 18.5.0-develop.6 → 18.5.0-develop.8

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.
@@ -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 { Directive, ViewContainerRef, ComponentFactoryResolver } from "@angular/core";
5
+ import { Directive, ViewContainerRef } from "@angular/core";
6
6
  import { FilterHostDirective } from "../filter-host.directive";
7
7
  import { isNullOrEmptyString } from "../../utils";
8
8
  import { filterComponentFactory } from "./filter-cell-component.factory";
@@ -12,8 +12,8 @@ import * as i0 from "@angular/core";
12
12
  * @hidden
13
13
  */
14
14
  export class FilterCellHostDirective extends FilterHostDirective {
15
- constructor(host, resolver) {
16
- super(host, resolver);
15
+ constructor(host) {
16
+ super(host);
17
17
  }
18
18
  componentType() {
19
19
  if (!isNullOrEmptyString(this.column.filter)) {
@@ -21,7 +21,7 @@ export class FilterCellHostDirective extends FilterHostDirective {
21
21
  }
22
22
  return StringFilterCellComponent;
23
23
  }
24
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: FilterCellHostDirective, deps: [{ token: i0.ViewContainerRef }, { token: i0.ComponentFactoryResolver }], target: i0.ɵɵFactoryTarget.Directive });
24
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: FilterCellHostDirective, deps: [{ token: i0.ViewContainerRef }], target: i0.ɵɵFactoryTarget.Directive });
25
25
  static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.2.12", type: FilterCellHostDirective, isStandalone: true, selector: "[kendoFilterCellHost]", usesInheritance: true, ngImport: i0 });
26
26
  }
27
27
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: FilterCellHostDirective, decorators: [{
@@ -30,4 +30,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
30
30
  selector: '[kendoFilterCellHost]',
31
31
  standalone: true
32
32
  }]
33
- }], ctorParameters: function () { return [{ type: i0.ViewContainerRef }, { type: i0.ComponentFactoryResolver }]; } });
33
+ }], ctorParameters: function () { return [{ type: i0.ViewContainerRef }]; } });
@@ -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 { Input, ViewContainerRef, ComponentFactoryResolver, Directive } from '@angular/core';
5
+ import { Input, ViewContainerRef, Directive } from '@angular/core';
6
6
  import { ColumnComponent } from '../columns/column.component';
7
7
  import { anyChanged } from '../utils';
8
8
  import * as i0 from "@angular/core";
@@ -11,16 +11,14 @@ import * as i0 from "@angular/core";
11
11
  */
12
12
  export class FilterHostDirective {
13
13
  host;
14
- resolver;
15
14
  column;
16
15
  filter;
17
16
  component;
18
- constructor(host, resolver) {
17
+ constructor(host) {
19
18
  this.host = host;
20
- this.resolver = resolver;
21
19
  }
22
20
  ngOnInit() {
23
- this.component = this.host.createComponent(this.resolver.resolveComponentFactory(this.componentType()));
21
+ this.component = this.host.createComponent(this.componentType());
24
22
  this.initComponent({
25
23
  column: this.column,
26
24
  filter: this.filter
@@ -45,7 +43,7 @@ export class FilterHostDirective {
45
43
  instance.column = column;
46
44
  instance.filter = filter;
47
45
  }
48
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: FilterHostDirective, deps: [{ token: i0.ViewContainerRef }, { token: i0.ComponentFactoryResolver }], target: i0.ɵɵFactoryTarget.Directive });
46
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: FilterHostDirective, deps: [{ token: i0.ViewContainerRef }], target: i0.ɵɵFactoryTarget.Directive });
49
47
  static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.2.12", type: FilterHostDirective, selector: "[kendoGridFilterHostBase]", inputs: { column: "column", filter: "filter" }, usesOnChanges: true, ngImport: i0 });
50
48
  }
51
49
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: FilterHostDirective, decorators: [{
@@ -53,7 +51,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
53
51
  args: [{
54
52
  selector: '[kendoGridFilterHostBase]'
55
53
  }]
56
- }], ctorParameters: function () { return [{ type: i0.ViewContainerRef }, { type: i0.ComponentFactoryResolver }]; }, propDecorators: { column: [{
54
+ }], ctorParameters: function () { return [{ type: i0.ViewContainerRef }]; }, propDecorators: { column: [{
57
55
  type: Input
58
56
  }], filter: [{
59
57
  type: Input
@@ -3,7 +3,7 @@
3
3
  * Licensed under commercial license. See LICENSE.md in the project root for more information
4
4
  *-------------------------------------------------------------------------------------------*/
5
5
  import { MenuTabbingService } from './menu-tabbing.service';
6
- import { Directive, ViewContainerRef, ComponentFactoryResolver, Input } from "@angular/core";
6
+ import { Directive, ViewContainerRef, Input } from "@angular/core";
7
7
  import { FilterHostDirective } from "../filter-host.directive";
8
8
  import { isNullOrEmptyString, isPresent } from "../../utils";
9
9
  import { filterMenuComponentFactory } from "./filter-menu-component.factory";
@@ -16,8 +16,8 @@ import * as i0 from "@angular/core";
16
16
  export class FilterMenuHostDirective extends FilterHostDirective {
17
17
  filterService;
18
18
  menuTabbingService;
19
- constructor(host, resolver) {
20
- super(host, resolver);
19
+ constructor(host) {
20
+ super(host);
21
21
  }
22
22
  componentType() {
23
23
  if (isPresent(this.column) && !isNullOrEmptyString(this.column.filter)) {
@@ -30,7 +30,7 @@ export class FilterMenuHostDirective extends FilterHostDirective {
30
30
  this.component.instance.filterService = this.filterService;
31
31
  this.component.instance.menuTabbingService = this.menuTabbingService;
32
32
  }
33
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: FilterMenuHostDirective, deps: [{ token: i0.ViewContainerRef }, { token: i0.ComponentFactoryResolver }], target: i0.ɵɵFactoryTarget.Directive });
33
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: FilterMenuHostDirective, deps: [{ token: i0.ViewContainerRef }], target: i0.ɵɵFactoryTarget.Directive });
34
34
  static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.2.12", type: FilterMenuHostDirective, isStandalone: true, selector: "[kendoFilterMenuHost]", inputs: { filterService: "filterService", menuTabbingService: "menuTabbingService" }, usesInheritance: true, ngImport: i0 });
35
35
  }
36
36
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: FilterMenuHostDirective, decorators: [{
@@ -39,7 +39,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
39
39
  selector: '[kendoFilterMenuHost]',
40
40
  standalone: true
41
41
  }]
42
- }], ctorParameters: function () { return [{ type: i0.ViewContainerRef }, { type: i0.ComponentFactoryResolver }]; }, propDecorators: { filterService: [{
42
+ }], ctorParameters: function () { return [{ type: i0.ViewContainerRef }]; }, propDecorators: { filterService: [{
43
43
  type: Input
44
44
  }], menuTabbingService: [{
45
45
  type: Input
@@ -2750,7 +2750,8 @@ export class GridComponent {
2750
2750
  [columns]="$any(lockedLeafColumns)"
2751
2751
  [detailTemplate]="detailTemplate"
2752
2752
  [logicalRowIndex]="ariaRowCount"
2753
- [totalColumns]="columnsContainer">
2753
+ [totalColumns]="columnsContainer"
2754
+ [totalColumnsCount]="leafColumns.length">
2754
2755
  </tfoot>
2755
2756
  </table>
2756
2757
  </div>
@@ -2777,7 +2778,8 @@ export class GridComponent {
2777
2778
  [columns]="$any(headerColumns)"
2778
2779
  [lockedColumnsCount]="lockedLeafColumns.length"
2779
2780
  [detailTemplate]="detailTemplate"
2780
- [totalColumns]="columnsContainer">
2781
+ [totalColumns]="columnsContainer"
2782
+ [totalColumnsCount]="leafColumns.length">
2781
2783
  </tfoot>
2782
2784
  </table>
2783
2785
  </div>
@@ -2798,6 +2800,8 @@ export class GridComponent {
2798
2800
  </colgroup>
2799
2801
  <thead kendoGridHeader
2800
2802
  *ngIf="!hideHeader"
2803
+ class="k-grid-header"
2804
+ [class.k-grid-draggable-header]="groupable || reorderable"
2801
2805
  role="rowgroup"
2802
2806
  [resizable]="resizable"
2803
2807
  [scrollable]="false"
@@ -2840,7 +2844,8 @@ export class GridComponent {
2840
2844
  [groups]="group"
2841
2845
  [columns]="$any(leafColumns)"
2842
2846
  [detailTemplate]="detailTemplate"
2843
- [totalColumns]="columnsContainer">
2847
+ [totalColumns]="columnsContainer"
2848
+ [totalColumnsCount]="leafColumns.length">
2844
2849
  </tfoot>
2845
2850
  </table>
2846
2851
  </ng-container>
@@ -2926,7 +2931,7 @@ export class GridComponent {
2926
2931
  <div kendoDialogContainer></div>
2927
2932
 
2928
2933
  <div kendoWatermarkOverlay *ngIf="showLicenseWatermark"></div>
2929
- `, isInline: true, dependencies: [{ kind: "directive", type: LocalizedMessagesDirective, selector: "[kendoGridLocalizedMessages]" }, { kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: GridToolbarComponent, selector: "kendo-grid-toolbar", inputs: ["position", "size", "navigable"] }, { kind: "component", type: GroupPanelComponent, selector: "kendo-grid-group-panel", inputs: ["text", "navigable", "groups"], outputs: ["change"] }, { kind: "directive", type: TableDirective, selector: "[kendoGridResizableTable]", inputs: ["locked", "virtualColumns"] }, { kind: "directive", type: GridTableDirective, selector: "[kendoGridTable]", inputs: ["size"] }, { kind: "component", type: ColGroupComponent, selector: "[kendoGridColGroup]", inputs: ["columns", "groups", "detailTemplate", "sort"] }, { kind: "component", type: HeaderComponent, selector: "[kendoGridHeader]", inputs: ["totalColumnLevels", "columns", "groups", "detailTemplate", "scrollable", "filterable", "sort", "filter", "sortable", "groupable", "lockedColumnsCount", "resizable", "reorderable", "columnMenu", "columnMenuTemplate", "totalColumnsCount", "totalColumns", "tabIndex", "size"] }, { kind: "directive", type: ResizableContainerDirective, selector: "[kendoGridResizableContainer]", inputs: ["lockedWidth", "kendoGridResizableContainer"] }, { kind: "component", type: ListComponent, selector: "kendo-grid-list", inputs: ["data", "groups", "total", "rowHeight", "stickyRowHeight", "detailRowHeight", "take", "skip", "columns", "detailTemplate", "noRecordsTemplate", "selectable", "groupable", "filterable", "rowClass", "rowSticky", "loading", "trackBy", "virtualColumns", "isVirtual", "cellLoadingTemplate", "loadingTemplate", "sort", "size"], outputs: ["contentScroll", "pageChange", "scrollBottom"] }, { kind: "directive", type: DragTargetContainerDirective, selector: "[kendoDragTargetContainer]", inputs: ["hint", "dragTargetFilter", "dragHandle", "dragDelay", "threshold", "dragTargetId", "dragData", "dragDisabled", "mode", "cursorStyle", "hintContext"], outputs: ["onDragReady", "onPress", "onDragStart", "onDrag", "onRelease", "onDragEnd"], exportAs: ["kendoDragTargetContainer"] }, { kind: "directive", type: DropTargetContainerDirective, selector: "[kendoDropTargetContainer]", inputs: ["dropTargetFilter", "dropDisabled"], outputs: ["onDragEnter", "onDragOver", "onDragLeave", "onDrop"], exportAs: ["kendoDropTargetContainer"] }, { kind: "directive", type: DraggableDirective, selector: "[kendoDraggable]", inputs: ["enableDrag"], outputs: ["kendoPress", "kendoDrag", "kendoRelease"] }, { kind: "directive", type: GridMarqueeDirective, selector: "[kendoGridSelectionMarquee]" }, { kind: "component", type: FooterComponent, selector: "[kendoGridFooter]", inputs: ["columns", "groups", "detailTemplate", "scrollable", "lockedColumnsCount", "logicalRowIndex", "totalColumns"] }, { kind: "component", type: TableBodyComponent, selector: "[kendoGridTableBody]", inputs: ["columns", "allColumns", "groups", "detailTemplate", "noRecordsTemplate", "data", "skip", "selectable", "filterable", "noRecordsText", "isLocked", "isLoading", "isVirtual", "cellLoadingTemplate", "skipGroupDecoration", "showGroupFooters", "lockedColumnsCount", "totalColumnsCount", "virtualColumns", "trackBy", "rowSticky", "totalColumns", "rowClass"] }, { kind: "component", type: LoadingComponent, selector: "[kendoGridLoading]", inputs: ["loadingTemplate"] }, { kind: "component", type: StatusBarComponent, selector: "kendo-grid-status-bar", inputs: ["statusBarTemplate"] }, { kind: "component", type: IconWrapperComponent, selector: "kendo-icon-wrapper", inputs: ["name", "svgIcon", "innerCssClass", "customFontClass", "size"], exportAs: ["kendoIconWrapper"] }, { kind: "component", type: WatermarkOverlayComponent, selector: "div[kendoWatermarkOverlay]" }, { kind: "component", type: i25.CustomMessagesComponent, selector: "kendo-datapager-messages, kendo-pager-messages" }, { kind: "component", type: i25.PagerInfoComponent, selector: "kendo-datapager-info, kendo-pager-info" }, { kind: "component", type: i25.PagerInputComponent, selector: "kendo-datapager-input, kendo-pager-input", inputs: ["size"] }, { kind: "component", type: i25.PagerNextButtonsComponent, selector: "kendo-datapager-next-buttons, kendo-pager-next-buttons", inputs: ["size"] }, { kind: "component", type: i25.PagerNumericButtonsComponent, selector: "kendo-datapager-numeric-buttons, kendo-pager-numeric-buttons", inputs: ["buttonCount", "size"] }, { kind: "component", type: i25.PagerPageSizesComponent, selector: "kendo-datapager-page-sizes, kendo-pager-page-sizes", inputs: ["pageSizes", "size"] }, { kind: "component", type: i25.PagerPrevButtonsComponent, selector: "kendo-datapager-prev-buttons, kendo-pager-prev-buttons", inputs: ["size"] }, { kind: "directive", type: i25.PagerTemplateDirective, selector: "[kendoDataPagerTemplate], [kendoPagerTemplate]" }, { kind: "component", type: i25.PagerComponent, selector: "kendo-datapager, kendo-pager", inputs: ["externalTemplate", "total", "skip", "pageSize", "buttonCount", "info", "type", "pageSizeValues", "previousNext", "navigable", "size", "responsive"], outputs: ["pageChange", "pageSizeChange"], exportAs: ["kendoDataPager", "kendoPager"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: DialogContainerDirective, selector: "[kendoDialogContainer]" }], encapsulation: i0.ViewEncapsulation.None });
2934
+ `, isInline: true, dependencies: [{ kind: "directive", type: LocalizedMessagesDirective, selector: "[kendoGridLocalizedMessages]" }, { kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: GridToolbarComponent, selector: "kendo-grid-toolbar", inputs: ["position", "size", "navigable"] }, { kind: "component", type: GroupPanelComponent, selector: "kendo-grid-group-panel", inputs: ["text", "navigable", "groups"], outputs: ["change"] }, { kind: "directive", type: TableDirective, selector: "[kendoGridResizableTable]", inputs: ["locked", "virtualColumns"] }, { kind: "directive", type: GridTableDirective, selector: "[kendoGridTable]", inputs: ["size"] }, { kind: "component", type: ColGroupComponent, selector: "[kendoGridColGroup]", inputs: ["columns", "groups", "detailTemplate", "sort"] }, { kind: "component", type: HeaderComponent, selector: "[kendoGridHeader]", inputs: ["totalColumnLevels", "columns", "groups", "detailTemplate", "scrollable", "filterable", "sort", "filter", "sortable", "groupable", "lockedColumnsCount", "resizable", "reorderable", "columnMenu", "columnMenuTemplate", "totalColumnsCount", "totalColumns", "tabIndex", "size"] }, { kind: "directive", type: ResizableContainerDirective, selector: "[kendoGridResizableContainer]", inputs: ["lockedWidth", "kendoGridResizableContainer"] }, { kind: "component", type: ListComponent, selector: "kendo-grid-list", inputs: ["data", "groups", "total", "rowHeight", "stickyRowHeight", "detailRowHeight", "take", "skip", "columns", "detailTemplate", "noRecordsTemplate", "selectable", "groupable", "filterable", "rowClass", "rowSticky", "loading", "trackBy", "virtualColumns", "isVirtual", "cellLoadingTemplate", "loadingTemplate", "sort", "size"], outputs: ["contentScroll", "pageChange", "scrollBottom"] }, { kind: "directive", type: DragTargetContainerDirective, selector: "[kendoDragTargetContainer]", inputs: ["hint", "dragTargetFilter", "dragHandle", "dragDelay", "threshold", "dragTargetId", "dragData", "dragDisabled", "mode", "cursorStyle", "hintContext"], outputs: ["onDragReady", "onPress", "onDragStart", "onDrag", "onRelease", "onDragEnd"], exportAs: ["kendoDragTargetContainer"] }, { kind: "directive", type: DropTargetContainerDirective, selector: "[kendoDropTargetContainer]", inputs: ["dropTargetFilter", "dropDisabled"], outputs: ["onDragEnter", "onDragOver", "onDragLeave", "onDrop"], exportAs: ["kendoDropTargetContainer"] }, { kind: "directive", type: DraggableDirective, selector: "[kendoDraggable]", inputs: ["enableDrag"], outputs: ["kendoPress", "kendoDrag", "kendoRelease"] }, { kind: "directive", type: GridMarqueeDirective, selector: "[kendoGridSelectionMarquee]" }, { kind: "component", type: FooterComponent, selector: "[kendoGridFooter]", inputs: ["columns", "groups", "detailTemplate", "scrollable", "lockedColumnsCount", "logicalRowIndex", "totalColumns", "totalColumnsCount"] }, { kind: "component", type: TableBodyComponent, selector: "[kendoGridTableBody]", inputs: ["columns", "allColumns", "groups", "detailTemplate", "noRecordsTemplate", "data", "skip", "selectable", "filterable", "noRecordsText", "isLocked", "isLoading", "isVirtual", "cellLoadingTemplate", "skipGroupDecoration", "showGroupFooters", "lockedColumnsCount", "totalColumnsCount", "virtualColumns", "trackBy", "rowSticky", "totalColumns", "rowClass"] }, { kind: "component", type: LoadingComponent, selector: "[kendoGridLoading]", inputs: ["loadingTemplate"] }, { kind: "component", type: StatusBarComponent, selector: "kendo-grid-status-bar", inputs: ["statusBarTemplate"] }, { kind: "component", type: IconWrapperComponent, selector: "kendo-icon-wrapper", inputs: ["name", "svgIcon", "innerCssClass", "customFontClass", "size"], exportAs: ["kendoIconWrapper"] }, { kind: "component", type: WatermarkOverlayComponent, selector: "div[kendoWatermarkOverlay]" }, { kind: "component", type: i25.CustomMessagesComponent, selector: "kendo-datapager-messages, kendo-pager-messages" }, { kind: "component", type: i25.PagerInfoComponent, selector: "kendo-datapager-info, kendo-pager-info" }, { kind: "component", type: i25.PagerInputComponent, selector: "kendo-datapager-input, kendo-pager-input", inputs: ["size"] }, { kind: "component", type: i25.PagerNextButtonsComponent, selector: "kendo-datapager-next-buttons, kendo-pager-next-buttons", inputs: ["size"] }, { kind: "component", type: i25.PagerNumericButtonsComponent, selector: "kendo-datapager-numeric-buttons, kendo-pager-numeric-buttons", inputs: ["buttonCount", "size"] }, { kind: "component", type: i25.PagerPageSizesComponent, selector: "kendo-datapager-page-sizes, kendo-pager-page-sizes", inputs: ["pageSizes", "size"] }, { kind: "component", type: i25.PagerPrevButtonsComponent, selector: "kendo-datapager-prev-buttons, kendo-pager-prev-buttons", inputs: ["size"] }, { kind: "directive", type: i25.PagerTemplateDirective, selector: "[kendoDataPagerTemplate], [kendoPagerTemplate]" }, { kind: "component", type: i25.PagerComponent, selector: "kendo-datapager, kendo-pager", inputs: ["externalTemplate", "total", "skip", "pageSize", "buttonCount", "info", "type", "pageSizeValues", "previousNext", "navigable", "size", "responsive"], outputs: ["pageChange", "pageSizeChange"], exportAs: ["kendoDataPager", "kendoPager"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: DialogContainerDirective, selector: "[kendoDialogContainer]" }], encapsulation: i0.ViewEncapsulation.None });
2930
2935
  }
2931
2936
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: GridComponent, decorators: [{
2932
2937
  type: Component,
@@ -3487,7 +3492,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
3487
3492
  [columns]="$any(lockedLeafColumns)"
3488
3493
  [detailTemplate]="detailTemplate"
3489
3494
  [logicalRowIndex]="ariaRowCount"
3490
- [totalColumns]="columnsContainer">
3495
+ [totalColumns]="columnsContainer"
3496
+ [totalColumnsCount]="leafColumns.length">
3491
3497
  </tfoot>
3492
3498
  </table>
3493
3499
  </div>
@@ -3514,7 +3520,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
3514
3520
  [columns]="$any(headerColumns)"
3515
3521
  [lockedColumnsCount]="lockedLeafColumns.length"
3516
3522
  [detailTemplate]="detailTemplate"
3517
- [totalColumns]="columnsContainer">
3523
+ [totalColumns]="columnsContainer"
3524
+ [totalColumnsCount]="leafColumns.length">
3518
3525
  </tfoot>
3519
3526
  </table>
3520
3527
  </div>
@@ -3535,6 +3542,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
3535
3542
  </colgroup>
3536
3543
  <thead kendoGridHeader
3537
3544
  *ngIf="!hideHeader"
3545
+ class="k-grid-header"
3546
+ [class.k-grid-draggable-header]="groupable || reorderable"
3538
3547
  role="rowgroup"
3539
3548
  [resizable]="resizable"
3540
3549
  [scrollable]="false"
@@ -3577,7 +3586,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
3577
3586
  [groups]="group"
3578
3587
  [columns]="$any(leafColumns)"
3579
3588
  [detailTemplate]="detailTemplate"
3580
- [totalColumns]="columnsContainer">
3589
+ [totalColumns]="columnsContainer"
3590
+ [totalColumnsCount]="leafColumns.length">
3581
3591
  </tfoot>
3582
3592
  </table>
3583
3593
  </ng-container>
@@ -10,7 +10,7 @@ export const packageMetadata = {
10
10
  productName: 'Kendo UI for Angular',
11
11
  productCode: 'KENDOUIANGULAR',
12
12
  productCodes: ['KENDOUIANGULAR'],
13
- publishDate: 1743780159,
14
- version: '18.5.0-develop.6',
13
+ publishDate: 1744029097,
14
+ version: '18.5.0-develop.8',
15
15
  licensingDocsUrl: 'https://www.telerik.com/kendo-angular-ui/my-license/'
16
16
  };
@@ -27,6 +27,7 @@ export class FooterComponent {
27
27
  lockedColumnsCount = 0;
28
28
  logicalRowIndex = 0;
29
29
  totalColumns;
30
+ totalColumnsCount = 0;
30
31
  get footerClass() {
31
32
  return !this.scrollable;
32
33
  }
@@ -38,6 +39,10 @@ export class FooterComponent {
38
39
  get columnsToRender() {
39
40
  return columnsToRender(this.columns || []);
40
41
  }
42
+ // Number of unlocked columns in the next table, if any
43
+ get unlockedColumnsCount() {
44
+ return this.totalColumnsCount - this.lockedColumnsCount - this.columns.length;
45
+ }
41
46
  trackByIndex(index) {
42
47
  return index;
43
48
  }
@@ -56,15 +61,15 @@ export class FooterComponent {
56
61
  return isColumnGroupComponent(column);
57
62
  }
58
63
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: FooterComponent, deps: [{ token: i1.ColumnInfoService }], target: i0.ɵɵFactoryTarget.Component });
59
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: FooterComponent, isStandalone: true, selector: "[kendoGridFooter]", inputs: { columns: "columns", groups: "groups", detailTemplate: "detailTemplate", scrollable: "scrollable", lockedColumnsCount: "lockedColumnsCount", logicalRowIndex: "logicalRowIndex", totalColumns: "totalColumns" }, host: { properties: { "class.k-grid-footer": "this.footerClass", "class.k-table-tfoot": "this.hostClass", "attr.role": "this.hostRole" } }, ngImport: i0, template: `
64
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: FooterComponent, isStandalone: true, selector: "[kendoGridFooter]", inputs: { columns: "columns", groups: "groups", detailTemplate: "detailTemplate", scrollable: "scrollable", lockedColumnsCount: "lockedColumnsCount", logicalRowIndex: "logicalRowIndex", totalColumns: "totalColumns", totalColumnsCount: "totalColumnsCount" }, host: { properties: { "class.k-grid-footer": "this.footerClass", "class.k-table-tfoot": "this.hostClass", "attr.role": "this.hostRole" } }, ngImport: i0, template: `
60
65
  <ng-container>
61
66
  <tr
62
- [class.k-footer-template]="true"
67
+ class="k-footer-template"
63
68
  kendoGridLogicalRow
64
69
  [logicalRowIndex]="logicalRowIndex"
65
70
  [logicalSlaveRow]="lockedColumnsCount > 0"
66
71
  [logicalCellsCount]="columns.length"
67
- [logicalSlaveCellsCount]="columns.length - lockedColumnsCount"
72
+ [logicalSlaveCellsCount]="unlockedColumnsCount"
68
73
  [totalColumns]="totalColumns"
69
74
  >
70
75
  <td
@@ -109,12 +114,12 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
109
114
  template: `
110
115
  <ng-container>
111
116
  <tr
112
- [class.k-footer-template]="true"
117
+ class="k-footer-template"
113
118
  kendoGridLogicalRow
114
119
  [logicalRowIndex]="logicalRowIndex"
115
120
  [logicalSlaveRow]="lockedColumnsCount > 0"
116
121
  [logicalCellsCount]="columns.length"
117
- [logicalSlaveCellsCount]="columns.length - lockedColumnsCount"
122
+ [logicalSlaveCellsCount]="unlockedColumnsCount"
118
123
  [totalColumns]="totalColumns"
119
124
  >
120
125
  <td
@@ -168,6 +173,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
168
173
  type: Input
169
174
  }], totalColumns: [{
170
175
  type: Input
176
+ }], totalColumnsCount: [{
177
+ type: Input
171
178
  }], footerClass: [{
172
179
  type: HostBinding,
173
180
  args: ['class.k-grid-footer']
@@ -148,7 +148,7 @@ export class TableBodyComponent {
148
148
  }
149
149
  });
150
150
  const contentColumnsCount = this.totalColumnsCount - this.lockedColumnsCount - allColumnsCount;
151
- const headerFooterColumnsCount = this.totalColumnsCount - this.lockedColumnsCount - (this.allColumns || this.columns).length;
151
+ const headerFooterColumnsCount = this.totalColumnsCount - this.lockedColumnsCount - allColumns.length;
152
152
  return item && this.isDataItem(item) ? contentColumnsCount : headerFooterColumnsCount;
153
153
  }
154
154
  shouldSkipCell(rowIndex, colIndex) {
@@ -7648,16 +7648,14 @@ const diffFilters = (a, b) => {
7648
7648
  */
7649
7649
  class FilterHostDirective {
7650
7650
  host;
7651
- resolver;
7652
7651
  column;
7653
7652
  filter;
7654
7653
  component;
7655
- constructor(host, resolver) {
7654
+ constructor(host) {
7656
7655
  this.host = host;
7657
- this.resolver = resolver;
7658
7656
  }
7659
7657
  ngOnInit() {
7660
- this.component = this.host.createComponent(this.resolver.resolveComponentFactory(this.componentType()));
7658
+ this.component = this.host.createComponent(this.componentType());
7661
7659
  this.initComponent({
7662
7660
  column: this.column,
7663
7661
  filter: this.filter
@@ -7682,7 +7680,7 @@ class FilterHostDirective {
7682
7680
  instance.column = column;
7683
7681
  instance.filter = filter;
7684
7682
  }
7685
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: FilterHostDirective, deps: [{ token: i0.ViewContainerRef }, { token: i0.ComponentFactoryResolver }], target: i0.ɵɵFactoryTarget.Directive });
7683
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: FilterHostDirective, deps: [{ token: i0.ViewContainerRef }], target: i0.ɵɵFactoryTarget.Directive });
7686
7684
  static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.2.12", type: FilterHostDirective, selector: "[kendoGridFilterHostBase]", inputs: { column: "column", filter: "filter" }, usesOnChanges: true, ngImport: i0 });
7687
7685
  }
7688
7686
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: FilterHostDirective, decorators: [{
@@ -7690,7 +7688,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
7690
7688
  args: [{
7691
7689
  selector: '[kendoGridFilterHostBase]'
7692
7690
  }]
7693
- }], ctorParameters: function () { return [{ type: i0.ViewContainerRef }, { type: i0.ComponentFactoryResolver }]; }, propDecorators: { column: [{
7691
+ }], ctorParameters: function () { return [{ type: i0.ViewContainerRef }]; }, propDecorators: { column: [{
7694
7692
  type: Input
7695
7693
  }], filter: [{
7696
7694
  type: Input
@@ -9565,8 +9563,8 @@ const filterMenuComponentFactory = (type) => ({
9565
9563
  class FilterMenuHostDirective extends FilterHostDirective {
9566
9564
  filterService;
9567
9565
  menuTabbingService;
9568
- constructor(host, resolver) {
9569
- super(host, resolver);
9566
+ constructor(host) {
9567
+ super(host);
9570
9568
  }
9571
9569
  componentType() {
9572
9570
  if (isPresent(this.column) && !isNullOrEmptyString(this.column.filter)) {
@@ -9579,7 +9577,7 @@ class FilterMenuHostDirective extends FilterHostDirective {
9579
9577
  this.component.instance.filterService = this.filterService;
9580
9578
  this.component.instance.menuTabbingService = this.menuTabbingService;
9581
9579
  }
9582
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: FilterMenuHostDirective, deps: [{ token: i0.ViewContainerRef }, { token: i0.ComponentFactoryResolver }], target: i0.ɵɵFactoryTarget.Directive });
9580
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: FilterMenuHostDirective, deps: [{ token: i0.ViewContainerRef }], target: i0.ɵɵFactoryTarget.Directive });
9583
9581
  static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.2.12", type: FilterMenuHostDirective, isStandalone: true, selector: "[kendoFilterMenuHost]", inputs: { filterService: "filterService", menuTabbingService: "menuTabbingService" }, usesInheritance: true, ngImport: i0 });
9584
9582
  }
9585
9583
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: FilterMenuHostDirective, decorators: [{
@@ -9588,7 +9586,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
9588
9586
  selector: '[kendoFilterMenuHost]',
9589
9587
  standalone: true
9590
9588
  }]
9591
- }], ctorParameters: function () { return [{ type: i0.ViewContainerRef }, { type: i0.ComponentFactoryResolver }]; }, propDecorators: { filterService: [{
9589
+ }], ctorParameters: function () { return [{ type: i0.ViewContainerRef }]; }, propDecorators: { filterService: [{
9592
9590
  type: Input
9593
9591
  }], menuTabbingService: [{
9594
9592
  type: Input
@@ -10686,8 +10684,8 @@ const filterComponentFactory = (type) => ({
10686
10684
  * @hidden
10687
10685
  */
10688
10686
  class FilterCellHostDirective extends FilterHostDirective {
10689
- constructor(host, resolver) {
10690
- super(host, resolver);
10687
+ constructor(host) {
10688
+ super(host);
10691
10689
  }
10692
10690
  componentType() {
10693
10691
  if (!isNullOrEmptyString(this.column.filter)) {
@@ -10695,7 +10693,7 @@ class FilterCellHostDirective extends FilterHostDirective {
10695
10693
  }
10696
10694
  return StringFilterCellComponent;
10697
10695
  }
10698
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: FilterCellHostDirective, deps: [{ token: i0.ViewContainerRef }, { token: i0.ComponentFactoryResolver }], target: i0.ɵɵFactoryTarget.Directive });
10696
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: FilterCellHostDirective, deps: [{ token: i0.ViewContainerRef }], target: i0.ɵɵFactoryTarget.Directive });
10699
10697
  static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.2.12", type: FilterCellHostDirective, isStandalone: true, selector: "[kendoFilterCellHost]", usesInheritance: true, ngImport: i0 });
10700
10698
  }
10701
10699
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: FilterCellHostDirective, decorators: [{
@@ -10704,7 +10702,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
10704
10702
  selector: '[kendoFilterCellHost]',
10705
10703
  standalone: true
10706
10704
  }]
10707
- }], ctorParameters: function () { return [{ type: i0.ViewContainerRef }, { type: i0.ComponentFactoryResolver }]; } });
10705
+ }], ctorParameters: function () { return [{ type: i0.ViewContainerRef }]; } });
10708
10706
 
10709
10707
  /**
10710
10708
  * @hidden
@@ -17236,6 +17234,7 @@ class FooterComponent {
17236
17234
  lockedColumnsCount = 0;
17237
17235
  logicalRowIndex = 0;
17238
17236
  totalColumns;
17237
+ totalColumnsCount = 0;
17239
17238
  get footerClass() {
17240
17239
  return !this.scrollable;
17241
17240
  }
@@ -17247,6 +17246,10 @@ class FooterComponent {
17247
17246
  get columnsToRender() {
17248
17247
  return columnsToRender(this.columns || []);
17249
17248
  }
17249
+ // Number of unlocked columns in the next table, if any
17250
+ get unlockedColumnsCount() {
17251
+ return this.totalColumnsCount - this.lockedColumnsCount - this.columns.length;
17252
+ }
17250
17253
  trackByIndex(index) {
17251
17254
  return index;
17252
17255
  }
@@ -17265,15 +17268,15 @@ class FooterComponent {
17265
17268
  return isColumnGroupComponent(column);
17266
17269
  }
17267
17270
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: FooterComponent, deps: [{ token: ColumnInfoService }], target: i0.ɵɵFactoryTarget.Component });
17268
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: FooterComponent, isStandalone: true, selector: "[kendoGridFooter]", inputs: { columns: "columns", groups: "groups", detailTemplate: "detailTemplate", scrollable: "scrollable", lockedColumnsCount: "lockedColumnsCount", logicalRowIndex: "logicalRowIndex", totalColumns: "totalColumns" }, host: { properties: { "class.k-grid-footer": "this.footerClass", "class.k-table-tfoot": "this.hostClass", "attr.role": "this.hostRole" } }, ngImport: i0, template: `
17271
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: FooterComponent, isStandalone: true, selector: "[kendoGridFooter]", inputs: { columns: "columns", groups: "groups", detailTemplate: "detailTemplate", scrollable: "scrollable", lockedColumnsCount: "lockedColumnsCount", logicalRowIndex: "logicalRowIndex", totalColumns: "totalColumns", totalColumnsCount: "totalColumnsCount" }, host: { properties: { "class.k-grid-footer": "this.footerClass", "class.k-table-tfoot": "this.hostClass", "attr.role": "this.hostRole" } }, ngImport: i0, template: `
17269
17272
  <ng-container>
17270
17273
  <tr
17271
- [class.k-footer-template]="true"
17274
+ class="k-footer-template"
17272
17275
  kendoGridLogicalRow
17273
17276
  [logicalRowIndex]="logicalRowIndex"
17274
17277
  [logicalSlaveRow]="lockedColumnsCount > 0"
17275
17278
  [logicalCellsCount]="columns.length"
17276
- [logicalSlaveCellsCount]="columns.length - lockedColumnsCount"
17279
+ [logicalSlaveCellsCount]="unlockedColumnsCount"
17277
17280
  [totalColumns]="totalColumns"
17278
17281
  >
17279
17282
  <td
@@ -17318,12 +17321,12 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
17318
17321
  template: `
17319
17322
  <ng-container>
17320
17323
  <tr
17321
- [class.k-footer-template]="true"
17324
+ class="k-footer-template"
17322
17325
  kendoGridLogicalRow
17323
17326
  [logicalRowIndex]="logicalRowIndex"
17324
17327
  [logicalSlaveRow]="lockedColumnsCount > 0"
17325
17328
  [logicalCellsCount]="columns.length"
17326
- [logicalSlaveCellsCount]="columns.length - lockedColumnsCount"
17329
+ [logicalSlaveCellsCount]="unlockedColumnsCount"
17327
17330
  [totalColumns]="totalColumns"
17328
17331
  >
17329
17332
  <td
@@ -17377,6 +17380,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
17377
17380
  type: Input
17378
17381
  }], totalColumns: [{
17379
17382
  type: Input
17383
+ }], totalColumnsCount: [{
17384
+ type: Input
17380
17385
  }], footerClass: [{
17381
17386
  type: HostBinding,
17382
17387
  args: ['class.k-grid-footer']
@@ -18242,7 +18247,7 @@ class TableBodyComponent {
18242
18247
  }
18243
18248
  });
18244
18249
  const contentColumnsCount = this.totalColumnsCount - this.lockedColumnsCount - allColumnsCount;
18245
- const headerFooterColumnsCount = this.totalColumnsCount - this.lockedColumnsCount - (this.allColumns || this.columns).length;
18250
+ const headerFooterColumnsCount = this.totalColumnsCount - this.lockedColumnsCount - allColumns.length;
18246
18251
  return item && this.isDataItem(item) ? contentColumnsCount : headerFooterColumnsCount;
18247
18252
  }
18248
18253
  shouldSkipCell(rowIndex, colIndex) {
@@ -19826,8 +19831,8 @@ const packageMetadata = {
19826
19831
  productName: 'Kendo UI for Angular',
19827
19832
  productCode: 'KENDOUIANGULAR',
19828
19833
  productCodes: ['KENDOUIANGULAR'],
19829
- publishDate: 1743780159,
19830
- version: '18.5.0-develop.6',
19834
+ publishDate: 1744029097,
19835
+ version: '18.5.0-develop.8',
19831
19836
  licensingDocsUrl: 'https://www.telerik.com/kendo-angular-ui/my-license/'
19832
19837
  };
19833
19838
 
@@ -26219,7 +26224,8 @@ class GridComponent {
26219
26224
  [columns]="$any(lockedLeafColumns)"
26220
26225
  [detailTemplate]="detailTemplate"
26221
26226
  [logicalRowIndex]="ariaRowCount"
26222
- [totalColumns]="columnsContainer">
26227
+ [totalColumns]="columnsContainer"
26228
+ [totalColumnsCount]="leafColumns.length">
26223
26229
  </tfoot>
26224
26230
  </table>
26225
26231
  </div>
@@ -26246,7 +26252,8 @@ class GridComponent {
26246
26252
  [columns]="$any(headerColumns)"
26247
26253
  [lockedColumnsCount]="lockedLeafColumns.length"
26248
26254
  [detailTemplate]="detailTemplate"
26249
- [totalColumns]="columnsContainer">
26255
+ [totalColumns]="columnsContainer"
26256
+ [totalColumnsCount]="leafColumns.length">
26250
26257
  </tfoot>
26251
26258
  </table>
26252
26259
  </div>
@@ -26267,6 +26274,8 @@ class GridComponent {
26267
26274
  </colgroup>
26268
26275
  <thead kendoGridHeader
26269
26276
  *ngIf="!hideHeader"
26277
+ class="k-grid-header"
26278
+ [class.k-grid-draggable-header]="groupable || reorderable"
26270
26279
  role="rowgroup"
26271
26280
  [resizable]="resizable"
26272
26281
  [scrollable]="false"
@@ -26309,7 +26318,8 @@ class GridComponent {
26309
26318
  [groups]="group"
26310
26319
  [columns]="$any(leafColumns)"
26311
26320
  [detailTemplate]="detailTemplate"
26312
- [totalColumns]="columnsContainer">
26321
+ [totalColumns]="columnsContainer"
26322
+ [totalColumnsCount]="leafColumns.length">
26313
26323
  </tfoot>
26314
26324
  </table>
26315
26325
  </ng-container>
@@ -26395,7 +26405,7 @@ class GridComponent {
26395
26405
  <div kendoDialogContainer></div>
26396
26406
 
26397
26407
  <div kendoWatermarkOverlay *ngIf="showLicenseWatermark"></div>
26398
- `, isInline: true, dependencies: [{ kind: "directive", type: LocalizedMessagesDirective, selector: "[kendoGridLocalizedMessages]" }, { kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: ToolbarComponent, selector: "kendo-grid-toolbar", inputs: ["position", "size", "navigable"] }, { kind: "component", type: GroupPanelComponent, selector: "kendo-grid-group-panel", inputs: ["text", "navigable", "groups"], outputs: ["change"] }, { kind: "directive", type: TableDirective, selector: "[kendoGridResizableTable]", inputs: ["locked", "virtualColumns"] }, { kind: "directive", type: GridTableDirective, selector: "[kendoGridTable]", inputs: ["size"] }, { kind: "component", type: ColGroupComponent, selector: "[kendoGridColGroup]", inputs: ["columns", "groups", "detailTemplate", "sort"] }, { kind: "component", type: HeaderComponent, selector: "[kendoGridHeader]", inputs: ["totalColumnLevels", "columns", "groups", "detailTemplate", "scrollable", "filterable", "sort", "filter", "sortable", "groupable", "lockedColumnsCount", "resizable", "reorderable", "columnMenu", "columnMenuTemplate", "totalColumnsCount", "totalColumns", "tabIndex", "size"] }, { kind: "directive", type: ResizableContainerDirective, selector: "[kendoGridResizableContainer]", inputs: ["lockedWidth", "kendoGridResizableContainer"] }, { kind: "component", type: ListComponent, selector: "kendo-grid-list", inputs: ["data", "groups", "total", "rowHeight", "stickyRowHeight", "detailRowHeight", "take", "skip", "columns", "detailTemplate", "noRecordsTemplate", "selectable", "groupable", "filterable", "rowClass", "rowSticky", "loading", "trackBy", "virtualColumns", "isVirtual", "cellLoadingTemplate", "loadingTemplate", "sort", "size"], outputs: ["contentScroll", "pageChange", "scrollBottom"] }, { kind: "directive", type: DragTargetContainerDirective, selector: "[kendoDragTargetContainer]", inputs: ["hint", "dragTargetFilter", "dragHandle", "dragDelay", "threshold", "dragTargetId", "dragData", "dragDisabled", "mode", "cursorStyle", "hintContext"], outputs: ["onDragReady", "onPress", "onDragStart", "onDrag", "onRelease", "onDragEnd"], exportAs: ["kendoDragTargetContainer"] }, { kind: "directive", type: DropTargetContainerDirective, selector: "[kendoDropTargetContainer]", inputs: ["dropTargetFilter", "dropDisabled"], outputs: ["onDragEnter", "onDragOver", "onDragLeave", "onDrop"], exportAs: ["kendoDropTargetContainer"] }, { kind: "directive", type: DraggableDirective, selector: "[kendoDraggable]", inputs: ["enableDrag"], outputs: ["kendoPress", "kendoDrag", "kendoRelease"] }, { kind: "directive", type: GridMarqueeDirective, selector: "[kendoGridSelectionMarquee]" }, { kind: "component", type: FooterComponent, selector: "[kendoGridFooter]", inputs: ["columns", "groups", "detailTemplate", "scrollable", "lockedColumnsCount", "logicalRowIndex", "totalColumns"] }, { kind: "component", type: TableBodyComponent, selector: "[kendoGridTableBody]", inputs: ["columns", "allColumns", "groups", "detailTemplate", "noRecordsTemplate", "data", "skip", "selectable", "filterable", "noRecordsText", "isLocked", "isLoading", "isVirtual", "cellLoadingTemplate", "skipGroupDecoration", "showGroupFooters", "lockedColumnsCount", "totalColumnsCount", "virtualColumns", "trackBy", "rowSticky", "totalColumns", "rowClass"] }, { kind: "component", type: LoadingComponent, selector: "[kendoGridLoading]", inputs: ["loadingTemplate"] }, { kind: "component", type: StatusBarComponent, selector: "kendo-grid-status-bar", inputs: ["statusBarTemplate"] }, { kind: "component", type: IconWrapperComponent, selector: "kendo-icon-wrapper", inputs: ["name", "svgIcon", "innerCssClass", "customFontClass", "size"], exportAs: ["kendoIconWrapper"] }, { kind: "component", type: WatermarkOverlayComponent, selector: "div[kendoWatermarkOverlay]" }, { kind: "component", type: i44.CustomMessagesComponent, selector: "kendo-datapager-messages, kendo-pager-messages" }, { kind: "component", type: i44.PagerInfoComponent, selector: "kendo-datapager-info, kendo-pager-info" }, { kind: "component", type: i44.PagerInputComponent, selector: "kendo-datapager-input, kendo-pager-input", inputs: ["size"] }, { kind: "component", type: i44.PagerNextButtonsComponent, selector: "kendo-datapager-next-buttons, kendo-pager-next-buttons", inputs: ["size"] }, { kind: "component", type: i44.PagerNumericButtonsComponent, selector: "kendo-datapager-numeric-buttons, kendo-pager-numeric-buttons", inputs: ["buttonCount", "size"] }, { kind: "component", type: i44.PagerPageSizesComponent, selector: "kendo-datapager-page-sizes, kendo-pager-page-sizes", inputs: ["pageSizes", "size"] }, { kind: "component", type: i44.PagerPrevButtonsComponent, selector: "kendo-datapager-prev-buttons, kendo-pager-prev-buttons", inputs: ["size"] }, { kind: "directive", type: i44.PagerTemplateDirective, selector: "[kendoDataPagerTemplate], [kendoPagerTemplate]" }, { kind: "component", type: i44.PagerComponent, selector: "kendo-datapager, kendo-pager", inputs: ["externalTemplate", "total", "skip", "pageSize", "buttonCount", "info", "type", "pageSizeValues", "previousNext", "navigable", "size", "responsive"], outputs: ["pageChange", "pageSizeChange"], exportAs: ["kendoDataPager", "kendoPager"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: DialogContainerDirective, selector: "[kendoDialogContainer]" }], encapsulation: i0.ViewEncapsulation.None });
26408
+ `, isInline: true, dependencies: [{ kind: "directive", type: LocalizedMessagesDirective, selector: "[kendoGridLocalizedMessages]" }, { kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: ToolbarComponent, selector: "kendo-grid-toolbar", inputs: ["position", "size", "navigable"] }, { kind: "component", type: GroupPanelComponent, selector: "kendo-grid-group-panel", inputs: ["text", "navigable", "groups"], outputs: ["change"] }, { kind: "directive", type: TableDirective, selector: "[kendoGridResizableTable]", inputs: ["locked", "virtualColumns"] }, { kind: "directive", type: GridTableDirective, selector: "[kendoGridTable]", inputs: ["size"] }, { kind: "component", type: ColGroupComponent, selector: "[kendoGridColGroup]", inputs: ["columns", "groups", "detailTemplate", "sort"] }, { kind: "component", type: HeaderComponent, selector: "[kendoGridHeader]", inputs: ["totalColumnLevels", "columns", "groups", "detailTemplate", "scrollable", "filterable", "sort", "filter", "sortable", "groupable", "lockedColumnsCount", "resizable", "reorderable", "columnMenu", "columnMenuTemplate", "totalColumnsCount", "totalColumns", "tabIndex", "size"] }, { kind: "directive", type: ResizableContainerDirective, selector: "[kendoGridResizableContainer]", inputs: ["lockedWidth", "kendoGridResizableContainer"] }, { kind: "component", type: ListComponent, selector: "kendo-grid-list", inputs: ["data", "groups", "total", "rowHeight", "stickyRowHeight", "detailRowHeight", "take", "skip", "columns", "detailTemplate", "noRecordsTemplate", "selectable", "groupable", "filterable", "rowClass", "rowSticky", "loading", "trackBy", "virtualColumns", "isVirtual", "cellLoadingTemplate", "loadingTemplate", "sort", "size"], outputs: ["contentScroll", "pageChange", "scrollBottom"] }, { kind: "directive", type: DragTargetContainerDirective, selector: "[kendoDragTargetContainer]", inputs: ["hint", "dragTargetFilter", "dragHandle", "dragDelay", "threshold", "dragTargetId", "dragData", "dragDisabled", "mode", "cursorStyle", "hintContext"], outputs: ["onDragReady", "onPress", "onDragStart", "onDrag", "onRelease", "onDragEnd"], exportAs: ["kendoDragTargetContainer"] }, { kind: "directive", type: DropTargetContainerDirective, selector: "[kendoDropTargetContainer]", inputs: ["dropTargetFilter", "dropDisabled"], outputs: ["onDragEnter", "onDragOver", "onDragLeave", "onDrop"], exportAs: ["kendoDropTargetContainer"] }, { kind: "directive", type: DraggableDirective, selector: "[kendoDraggable]", inputs: ["enableDrag"], outputs: ["kendoPress", "kendoDrag", "kendoRelease"] }, { kind: "directive", type: GridMarqueeDirective, selector: "[kendoGridSelectionMarquee]" }, { kind: "component", type: FooterComponent, selector: "[kendoGridFooter]", inputs: ["columns", "groups", "detailTemplate", "scrollable", "lockedColumnsCount", "logicalRowIndex", "totalColumns", "totalColumnsCount"] }, { kind: "component", type: TableBodyComponent, selector: "[kendoGridTableBody]", inputs: ["columns", "allColumns", "groups", "detailTemplate", "noRecordsTemplate", "data", "skip", "selectable", "filterable", "noRecordsText", "isLocked", "isLoading", "isVirtual", "cellLoadingTemplate", "skipGroupDecoration", "showGroupFooters", "lockedColumnsCount", "totalColumnsCount", "virtualColumns", "trackBy", "rowSticky", "totalColumns", "rowClass"] }, { kind: "component", type: LoadingComponent, selector: "[kendoGridLoading]", inputs: ["loadingTemplate"] }, { kind: "component", type: StatusBarComponent, selector: "kendo-grid-status-bar", inputs: ["statusBarTemplate"] }, { kind: "component", type: IconWrapperComponent, selector: "kendo-icon-wrapper", inputs: ["name", "svgIcon", "innerCssClass", "customFontClass", "size"], exportAs: ["kendoIconWrapper"] }, { kind: "component", type: WatermarkOverlayComponent, selector: "div[kendoWatermarkOverlay]" }, { kind: "component", type: i44.CustomMessagesComponent, selector: "kendo-datapager-messages, kendo-pager-messages" }, { kind: "component", type: i44.PagerInfoComponent, selector: "kendo-datapager-info, kendo-pager-info" }, { kind: "component", type: i44.PagerInputComponent, selector: "kendo-datapager-input, kendo-pager-input", inputs: ["size"] }, { kind: "component", type: i44.PagerNextButtonsComponent, selector: "kendo-datapager-next-buttons, kendo-pager-next-buttons", inputs: ["size"] }, { kind: "component", type: i44.PagerNumericButtonsComponent, selector: "kendo-datapager-numeric-buttons, kendo-pager-numeric-buttons", inputs: ["buttonCount", "size"] }, { kind: "component", type: i44.PagerPageSizesComponent, selector: "kendo-datapager-page-sizes, kendo-pager-page-sizes", inputs: ["pageSizes", "size"] }, { kind: "component", type: i44.PagerPrevButtonsComponent, selector: "kendo-datapager-prev-buttons, kendo-pager-prev-buttons", inputs: ["size"] }, { kind: "directive", type: i44.PagerTemplateDirective, selector: "[kendoDataPagerTemplate], [kendoPagerTemplate]" }, { kind: "component", type: i44.PagerComponent, selector: "kendo-datapager, kendo-pager", inputs: ["externalTemplate", "total", "skip", "pageSize", "buttonCount", "info", "type", "pageSizeValues", "previousNext", "navigable", "size", "responsive"], outputs: ["pageChange", "pageSizeChange"], exportAs: ["kendoDataPager", "kendoPager"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: DialogContainerDirective, selector: "[kendoDialogContainer]" }], encapsulation: i0.ViewEncapsulation.None });
26399
26409
  }
26400
26410
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: GridComponent, decorators: [{
26401
26411
  type: Component,
@@ -26956,7 +26966,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
26956
26966
  [columns]="$any(lockedLeafColumns)"
26957
26967
  [detailTemplate]="detailTemplate"
26958
26968
  [logicalRowIndex]="ariaRowCount"
26959
- [totalColumns]="columnsContainer">
26969
+ [totalColumns]="columnsContainer"
26970
+ [totalColumnsCount]="leafColumns.length">
26960
26971
  </tfoot>
26961
26972
  </table>
26962
26973
  </div>
@@ -26983,7 +26994,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
26983
26994
  [columns]="$any(headerColumns)"
26984
26995
  [lockedColumnsCount]="lockedLeafColumns.length"
26985
26996
  [detailTemplate]="detailTemplate"
26986
- [totalColumns]="columnsContainer">
26997
+ [totalColumns]="columnsContainer"
26998
+ [totalColumnsCount]="leafColumns.length">
26987
26999
  </tfoot>
26988
27000
  </table>
26989
27001
  </div>
@@ -27004,6 +27016,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
27004
27016
  </colgroup>
27005
27017
  <thead kendoGridHeader
27006
27018
  *ngIf="!hideHeader"
27019
+ class="k-grid-header"
27020
+ [class.k-grid-draggable-header]="groupable || reorderable"
27007
27021
  role="rowgroup"
27008
27022
  [resizable]="resizable"
27009
27023
  [scrollable]="false"
@@ -27046,7 +27060,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
27046
27060
  [groups]="group"
27047
27061
  [columns]="$any(leafColumns)"
27048
27062
  [detailTemplate]="detailTemplate"
27049
- [totalColumns]="columnsContainer">
27063
+ [totalColumns]="columnsContainer"
27064
+ [totalColumnsCount]="leafColumns.length">
27050
27065
  </tfoot>
27051
27066
  </table>
27052
27067
  </ng-container>
@@ -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 { Type, ViewContainerRef, ComponentFactoryResolver } from "@angular/core";
5
+ import { Type, ViewContainerRef } from "@angular/core";
6
6
  import { FilterHostDirective } from "../filter-host.directive";
7
7
  import { FilterComponent } from "../filter-component.interface";
8
8
  import * as i0 from "@angular/core";
@@ -10,7 +10,7 @@ import * as i0 from "@angular/core";
10
10
  * @hidden
11
11
  */
12
12
  export declare class FilterCellHostDirective extends FilterHostDirective {
13
- constructor(host: ViewContainerRef, resolver: ComponentFactoryResolver);
13
+ constructor(host: ViewContainerRef);
14
14
  protected componentType(): Type<FilterComponent>;
15
15
  static ɵfac: i0.ɵɵFactoryDeclaration<FilterCellHostDirective, never>;
16
16
  static ɵdir: i0.ɵɵDirectiveDeclaration<FilterCellHostDirective, "[kendoFilterCellHost]", never, {}, {}, never, never, true, never>;
@@ -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 { Type, ViewContainerRef, OnInit, OnDestroy, OnChanges, ComponentRef, ComponentFactoryResolver, SimpleChange } from '@angular/core';
5
+ import { Type, ViewContainerRef, OnInit, OnDestroy, OnChanges, ComponentRef, SimpleChange } from '@angular/core';
6
6
  import { ColumnComponent } from '../columns/column.component';
7
7
  import { CompositeFilterDescriptor } from '@progress/kendo-data-query';
8
8
  import { FilterComponent } from './filter-component.interface';
@@ -19,11 +19,10 @@ export type Context = {
19
19
  */
20
20
  export declare abstract class FilterHostDirective implements OnInit, OnDestroy, OnChanges {
21
21
  private host;
22
- private resolver;
23
22
  column: ColumnComponent;
24
23
  filter: CompositeFilterDescriptor;
25
24
  protected component: ComponentRef<FilterComponent>;
26
- constructor(host: ViewContainerRef, resolver: ComponentFactoryResolver);
25
+ constructor(host: ViewContainerRef);
27
26
  ngOnInit(): void;
28
27
  ngOnDestroy(): void;
29
28
  ngOnChanges(changes: {
@@ -3,7 +3,7 @@
3
3
  * Licensed under commercial license. See LICENSE.md in the project root for more information
4
4
  *-------------------------------------------------------------------------------------------*/
5
5
  import { MenuTabbingService } from './menu-tabbing.service';
6
- import { Type, ViewContainerRef, ComponentFactoryResolver } from "@angular/core";
6
+ import { Type, ViewContainerRef } from "@angular/core";
7
7
  import { FilterHostDirective, Context } from "../filter-host.directive";
8
8
  import { FilterComponent } from "../filter-component.interface";
9
9
  import { FilterService } from "../filter.service";
@@ -14,7 +14,7 @@ import * as i0 from "@angular/core";
14
14
  export declare class FilterMenuHostDirective extends FilterHostDirective {
15
15
  filterService: FilterService;
16
16
  menuTabbingService: MenuTabbingService;
17
- constructor(host: ViewContainerRef, resolver: ComponentFactoryResolver);
17
+ constructor(host: ViewContainerRef);
18
18
  protected componentType(): Type<FilterComponent>;
19
19
  protected initComponent(ctx: Context): void;
20
20
  static ɵfac: i0.ɵɵFactoryDeclaration<FilterMenuHostDirective, never>;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@progress/kendo-angular-grid",
3
- "version": "18.5.0-develop.6",
3
+ "version": "18.5.0-develop.8",
4
4
  "description": "Kendo UI Grid for Angular - high performance data grid with paging, filtering, virtualization, CRUD, and more.",
5
5
  "license": "SEE LICENSE IN LICENSE.md",
6
6
  "author": "Progress",
@@ -26,7 +26,7 @@
26
26
  "package": {
27
27
  "productName": "Kendo UI for Angular",
28
28
  "productCode": "KENDOUIANGULAR",
29
- "publishDate": 1743780159,
29
+ "publishDate": 1744029097,
30
30
  "licensingDocsUrl": "https://www.telerik.com/kendo-angular-ui/my-license/"
31
31
  }
32
32
  },
@@ -39,27 +39,27 @@
39
39
  "@progress/kendo-data-query": "^1.0.0",
40
40
  "@progress/kendo-drawing": "^1.21.0",
41
41
  "@progress/kendo-licensing": "^1.5.0",
42
- "@progress/kendo-angular-buttons": "18.5.0-develop.6",
43
- "@progress/kendo-angular-common": "18.5.0-develop.6",
44
- "@progress/kendo-angular-dateinputs": "18.5.0-develop.6",
45
- "@progress/kendo-angular-layout": "18.5.0-develop.6",
46
- "@progress/kendo-angular-dropdowns": "18.5.0-develop.6",
47
- "@progress/kendo-angular-excel-export": "18.5.0-develop.6",
48
- "@progress/kendo-angular-icons": "18.5.0-develop.6",
49
- "@progress/kendo-angular-inputs": "18.5.0-develop.6",
50
- "@progress/kendo-angular-intl": "18.5.0-develop.6",
51
- "@progress/kendo-angular-l10n": "18.5.0-develop.6",
52
- "@progress/kendo-angular-label": "18.5.0-develop.6",
53
- "@progress/kendo-angular-pager": "18.5.0-develop.6",
54
- "@progress/kendo-angular-pdf-export": "18.5.0-develop.6",
55
- "@progress/kendo-angular-popup": "18.5.0-develop.6",
56
- "@progress/kendo-angular-toolbar": "18.5.0-develop.6",
57
- "@progress/kendo-angular-utils": "18.5.0-develop.6",
42
+ "@progress/kendo-angular-buttons": "18.5.0-develop.8",
43
+ "@progress/kendo-angular-common": "18.5.0-develop.8",
44
+ "@progress/kendo-angular-dateinputs": "18.5.0-develop.8",
45
+ "@progress/kendo-angular-layout": "18.5.0-develop.8",
46
+ "@progress/kendo-angular-dropdowns": "18.5.0-develop.8",
47
+ "@progress/kendo-angular-excel-export": "18.5.0-develop.8",
48
+ "@progress/kendo-angular-icons": "18.5.0-develop.8",
49
+ "@progress/kendo-angular-inputs": "18.5.0-develop.8",
50
+ "@progress/kendo-angular-intl": "18.5.0-develop.8",
51
+ "@progress/kendo-angular-l10n": "18.5.0-develop.8",
52
+ "@progress/kendo-angular-label": "18.5.0-develop.8",
53
+ "@progress/kendo-angular-pager": "18.5.0-develop.8",
54
+ "@progress/kendo-angular-pdf-export": "18.5.0-develop.8",
55
+ "@progress/kendo-angular-popup": "18.5.0-develop.8",
56
+ "@progress/kendo-angular-toolbar": "18.5.0-develop.8",
57
+ "@progress/kendo-angular-utils": "18.5.0-develop.8",
58
58
  "rxjs": "^6.5.3 || ^7.0.0"
59
59
  },
60
60
  "dependencies": {
61
61
  "tslib": "^2.3.1",
62
- "@progress/kendo-angular-schematics": "18.5.0-develop.6",
62
+ "@progress/kendo-angular-schematics": "18.5.0-develop.8",
63
63
  "@progress/kendo-common": "^1.0.1",
64
64
  "@progress/kendo-file-saver": "^1.0.0"
65
65
  },
@@ -21,11 +21,13 @@ export declare class FooterComponent {
21
21
  lockedColumnsCount: number;
22
22
  logicalRowIndex: number;
23
23
  totalColumns: ColumnsContainer;
24
+ totalColumnsCount: number;
24
25
  get footerClass(): boolean;
25
26
  hostClass: boolean;
26
27
  hostRole: string;
27
28
  constructor(columnInfoService: ColumnInfoService);
28
29
  get columnsToRender(): ColumnBase[];
30
+ get unlockedColumnsCount(): number;
29
31
  trackByIndex(index: number): number;
30
32
  logicalColumnIndex(column: any): number;
31
33
  addStickyStyles(column: ColumnBase): {
@@ -33,5 +35,5 @@ export declare class FooterComponent {
33
35
  };
34
36
  isColumnGroupComponent(column: ColumnBase): boolean;
35
37
  static ɵfac: i0.ɵɵFactoryDeclaration<FooterComponent, never>;
36
- static ɵcmp: i0.ɵɵComponentDeclaration<FooterComponent, "[kendoGridFooter]", never, { "columns": { "alias": "columns"; "required": false; }; "groups": { "alias": "groups"; "required": false; }; "detailTemplate": { "alias": "detailTemplate"; "required": false; }; "scrollable": { "alias": "scrollable"; "required": false; }; "lockedColumnsCount": { "alias": "lockedColumnsCount"; "required": false; }; "logicalRowIndex": { "alias": "logicalRowIndex"; "required": false; }; "totalColumns": { "alias": "totalColumns"; "required": false; }; }, {}, never, never, true, never>;
38
+ static ɵcmp: i0.ɵɵComponentDeclaration<FooterComponent, "[kendoGridFooter]", never, { "columns": { "alias": "columns"; "required": false; }; "groups": { "alias": "groups"; "required": false; }; "detailTemplate": { "alias": "detailTemplate"; "required": false; }; "scrollable": { "alias": "scrollable"; "required": false; }; "lockedColumnsCount": { "alias": "lockedColumnsCount"; "required": false; }; "logicalRowIndex": { "alias": "logicalRowIndex"; "required": false; }; "totalColumns": { "alias": "totalColumns"; "required": false; }; "totalColumnsCount": { "alias": "totalColumnsCount"; "required": false; }; }, {}, never, never, true, never>;
37
39
  }
@@ -4,14 +4,14 @@ const schematics_1 = require("@angular-devkit/schematics");
4
4
  function default_1(options) {
5
5
  const finalOptions = Object.assign(Object.assign({}, options), { mainNgModule: 'GridModule', package: 'grid', peerDependencies: {
6
6
  // peer deps of the dropdowns
7
- '@progress/kendo-angular-treeview': '18.5.0-develop.6',
8
- '@progress/kendo-angular-navigation': '18.5.0-develop.6',
7
+ '@progress/kendo-angular-treeview': '18.5.0-develop.8',
8
+ '@progress/kendo-angular-navigation': '18.5.0-develop.8',
9
9
  // peer dependency of kendo-angular-inputs
10
- '@progress/kendo-angular-dialog': '18.5.0-develop.6',
10
+ '@progress/kendo-angular-dialog': '18.5.0-develop.8',
11
11
  // peer dependency of kendo-angular-icons
12
12
  '@progress/kendo-svg-icons': '^4.0.0',
13
13
  // peer dependency of kendo-angular-layout
14
- '@progress/kendo-angular-progressbar': '18.5.0-develop.6'
14
+ '@progress/kendo-angular-progressbar': '18.5.0-develop.8'
15
15
  } });
16
16
  return (0, schematics_1.externalSchematic)('@progress/kendo-angular-schematics', 'ng-add', finalOptions);
17
17
  }