@progress/kendo-angular-grid 25.0.0-develop.17 → 25.0.0-develop.19

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.
@@ -6,7 +6,7 @@ import * as i0 from '@angular/core';
6
6
  import { EventEmitter, Injectable, SecurityContext, InjectionToken, Optional, Inject, Input, SkipSelf, Directive, isDevMode, QueryList, ContentChildren, ContentChild, Component, forwardRef, Host, Output, HostBinding, HostListener, Pipe, TemplateRef, ViewChild, ViewChildren, ChangeDetectionStrategy, Self, NgZone, ElementRef, ViewContainerRef, ViewEncapsulation, inject, Injector, NgModule } from '@angular/core';
7
7
  import { merge, of, Subject, zip as zip$1, from, Subscription, interval, fromEvent, Observable, BehaviorSubject } from 'rxjs';
8
8
  import * as i1$3 from '@progress/kendo-angular-common';
9
- import { isDocumentAvailable, Keys, hasClasses as hasClasses$1, isPresent as isPresent$1, normalizeKeys, anyChanged, TemplateContextDirective, DraggableDirective, EventsOutsideAngularDirective, replaceMessagePlaceholder, isChanged as isChanged$1, KendoInput, contains as contains$3, guid, areObjectsEqual, PrefixTemplateDirective, closest as closest$1, hasObservers, ResizeSensorComponent, isFirefox, firefoxMaxHeight, closestInScope as closestInScope$1, isFocusable as isFocusable$1, getLicenseMessage, shouldShowValidationUI, WatermarkOverlayComponent, KENDO_WEBMCP_HOST, PreventableEvent as PreventableEvent$1, ResizeBatchService } from '@progress/kendo-angular-common';
9
+ import { isDocumentAvailable, Keys, hasClasses as hasClasses$1, isPresent as isPresent$1, normalizeKeys, anyChanged, TemplateContextDirective, DraggableDirective, EventsOutsideAngularDirective, replaceMessagePlaceholder, isChanged as isChanged$1, KendoInput, contains as contains$3, guid, areObjectsEqual, PrefixTemplateDirective, closest as closest$1, hasObservers, ResizeSensorComponent, isFirefox, firefoxMaxHeight, closestInScope as closestInScope$1, isFocusable as isFocusable$1, getLicenseMessage, shouldShowValidationUI, WatermarkOverlayComponent, ComponentNameDirective, KENDO_WEBMCP_HOST, provideComponentName, PreventableEvent as PreventableEvent$1, ResizeBatchService } from '@progress/kendo-angular-common';
10
10
  export { BrowserSupportService, ScrollbarService } from '@progress/kendo-angular-common';
11
11
  import * as i1 from '@angular/platform-browser';
12
12
  import * as i1$1 from '@progress/kendo-angular-icons';
@@ -15,10 +15,10 @@ import { plusIcon, cancelIcon, lockIcon, unlockIcon, chevronDownIcon, chevronRig
15
15
  import { switchMap, take, map, filter, takeUntil, switchMapTo, delay, tap, throttleTime, debounceTime, distinctUntilChanged, skip, bufferCount, flatMap } from 'rxjs/operators';
16
16
  import * as i1$2 from '@progress/kendo-angular-l10n';
17
17
  import { ComponentMessages, LocalizationService, L10N_PREFIX } from '@progress/kendo-angular-l10n';
18
- import * as i57 from '@progress/kendo-angular-pager';
18
+ import * as i58 from '@progress/kendo-angular-pager';
19
19
  import { PagerTemplateDirective, PagerContextService, PagerNavigationService, KENDO_PAGER } from '@progress/kendo-angular-pager';
20
20
  import { orderBy, isCompositeFilterDescriptor, filterBy, groupBy, process } from '@progress/kendo-data-query';
21
- import { NgTemplateOutlet, NgClass, NgStyle, KeyValuePipe } from '@angular/common';
21
+ import { NgTemplateOutlet, NgStyle, NgClass, KeyValuePipe } from '@angular/common';
22
22
  import { getter } from '@progress/kendo-common';
23
23
  import * as i1$4 from '@progress/kendo-angular-intl';
24
24
  import { parseDate } from '@progress/kendo-angular-intl';
@@ -36,7 +36,7 @@ import * as i4 from '@progress/kendo-angular-inputs';
36
36
  import { TextBoxComponent, NumericTextBoxComponent, NumericTextBoxCustomMessagesComponent, RadioButtonComponent, CheckBoxComponent, TextBoxPrefixTemplateDirective, KENDO_FORMFIELD, KENDO_TEXTBOX, KENDO_NUMERICTEXTBOX, KENDO_CHECKBOX } from '@progress/kendo-angular-inputs';
37
37
  import * as i5 from '@progress/kendo-angular-dateinputs';
38
38
  import { DatePickerComponent, DatePickerCustomMessagesComponent, KENDO_DATEPICKER, CalendarDOMService, CenturyViewService, DecadeViewService, MonthViewService, YearViewService, NavigationService as NavigationService$2 } from '@progress/kendo-angular-dateinputs';
39
- import * as i58 from '@progress/kendo-angular-toolbar';
39
+ import * as i59 from '@progress/kendo-angular-toolbar';
40
40
  import { ToolBarToolComponent, KENDO_TOOLBAR } from '@progress/kendo-angular-toolbar';
41
41
  import { trigger, state, style, transition, animate } from '@angular/animations';
42
42
  import { TabStripComponent, TabStripTabComponent, TabTitleDirective, TabContentDirective } from '@progress/kendo-angular-layout';
@@ -1214,9 +1214,16 @@ class NavigationCursor {
1214
1214
  this.virtualCol += 1;
1215
1215
  return false;
1216
1216
  }
1217
+ if (!cell && this.metadata.isColumnsGroupMode) {
1218
+ return false;
1219
+ }
1217
1220
  if (cell.colSpan > 1 && cell.colIndex <= virtualCol && virtualCol < cell.colIndex + cell.colSpan) {
1218
1221
  nextColIndex = offset > 0 ? Math.min(cell.colIndex + cell.colSpan, lastIndex) : Math.max(0, cell.colIndex + offset);
1219
1222
  const nextCell = this.model.findCell(nextColIndex, prevRow);
1223
+ if (!nextCell && this.metadata.isColumnsGroupMode) {
1224
+ this.virtualCol = virtualCol;
1225
+ return false;
1226
+ }
1220
1227
  if (!nextCell) {
1221
1228
  this.virtualCol = nextColIndex;
1222
1229
  return this.activate(cell.rowIndex, nextColIndex);
@@ -1252,6 +1259,9 @@ class NavigationCursor {
1252
1259
  if (nextRow) {
1253
1260
  // remove duplication
1254
1261
  let cell = this.model.findCell(this.virtualCol, nextRow);
1262
+ if (!cell && this.metadata.isColumnsGroupMode && nextRow.cells.count) {
1263
+ cell = nextRow.cells.first;
1264
+ }
1255
1265
  if (!cell) {
1256
1266
  return;
1257
1267
  }
@@ -1276,6 +1286,9 @@ class NavigationCursor {
1276
1286
  const nextPos = cell.rowIndex + cell.rowSpan - 1 + offset;
1277
1287
  cell = this.model.findCell(this.virtualCol, this.model.findRow(nextPos));
1278
1288
  }
1289
+ if (!cell && this.metadata.isColumnsGroupMode && nextRow.cells.count) {
1290
+ cell = nextRow.cells.first;
1291
+ }
1279
1292
  if (!cell && (this.metadata.virtualColumns || this.metadata.hasDetailTemplate)) {
1280
1293
  return this.activate(this.virtualRow + offset, this.virtualCol);
1281
1294
  }
@@ -4671,12 +4684,12 @@ class NavigationService {
4671
4684
  }
4672
4685
  }
4673
4686
  }
4674
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.26", ngImport: i0, type: NavigationService, deps: [{ token: i0.NgZone }, { token: DomEventsService }, { token: i57.PagerContextService }, { token: ScrollRequestService }, { token: GroupsService }, { token: DetailsService }, { token: FocusRoot }, { token: EditService }, { token: i0.ChangeDetectorRef }, { token: ContextService }, { token: ColumnResizingService }, { token: FocusableDirective, optional: true }], target: i0.ɵɵFactoryTarget.Injectable });
4687
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.26", ngImport: i0, type: NavigationService, deps: [{ token: i0.NgZone }, { token: DomEventsService }, { token: i58.PagerContextService }, { token: ScrollRequestService }, { token: GroupsService }, { token: DetailsService }, { token: FocusRoot }, { token: EditService }, { token: i0.ChangeDetectorRef }, { token: ContextService }, { token: ColumnResizingService }, { token: FocusableDirective, optional: true }], target: i0.ɵɵFactoryTarget.Injectable });
4675
4688
  static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.26", ngImport: i0, type: NavigationService });
4676
4689
  }
4677
4690
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.26", ngImport: i0, type: NavigationService, decorators: [{
4678
4691
  type: Injectable
4679
- }], ctorParameters: () => [{ type: i0.NgZone }, { type: DomEventsService }, { type: i57.PagerContextService }, { type: ScrollRequestService }, { type: GroupsService }, { type: DetailsService }, { type: FocusRoot }, { type: EditService }, { type: i0.ChangeDetectorRef }, { type: ContextService }, { type: ColumnResizingService }, { type: FocusableDirective, decorators: [{
4692
+ }], ctorParameters: () => [{ type: i0.NgZone }, { type: DomEventsService }, { type: i58.PagerContextService }, { type: ScrollRequestService }, { type: GroupsService }, { type: DetailsService }, { type: FocusRoot }, { type: EditService }, { type: i0.ChangeDetectorRef }, { type: ContextService }, { type: ColumnResizingService }, { type: FocusableDirective, decorators: [{
4680
4693
  type: Optional
4681
4694
  }] }] });
4682
4695
 
@@ -5047,6 +5060,7 @@ class ColGroupComponent {
5047
5060
  groups = [];
5048
5061
  detailTemplate;
5049
5062
  sort = new Array();
5063
+ groupingMode = 'default';
5050
5064
  constructor(ctx) {
5051
5065
  this.ctx = ctx;
5052
5066
  }
@@ -5077,11 +5091,13 @@ class ColGroupComponent {
5077
5091
  return this.sort.find(item => item.field === field) || { field };
5078
5092
  }
5079
5093
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.26", ngImport: i0, type: ColGroupComponent, deps: [{ token: ContextService }], target: i0.ɵɵFactoryTarget.Component });
5080
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.26", type: ColGroupComponent, isStandalone: true, selector: "[kendoGridColGroup]", inputs: { columns: "columns", groups: "groups", detailTemplate: "detailTemplate", sort: "sort" }, ngImport: i0, template: `
5094
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.26", type: ColGroupComponent, isStandalone: true, selector: "[kendoGridColGroup]", inputs: { columns: "columns", groups: "groups", detailTemplate: "detailTemplate", sort: "sort", groupingMode: "groupingMode" }, ngImport: i0, template: `
5081
5095
  <ng-container>
5082
- @for (g of groups; track g) {
5083
- <col [class.k-group-col]="true" />
5084
- }
5096
+ @if (groupingMode === 'default') {
5097
+ @for (g of groups; track g) {
5098
+ <col [class.k-group-col]="true" />
5099
+ }
5100
+ }
5085
5101
  @if (detailTemplate?.templateRef && !isStacked) {
5086
5102
  <col [class.k-hierarchy-col]="true"/>
5087
5103
  }
@@ -5099,9 +5115,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.26", ngImpo
5099
5115
  selector: '[kendoGridColGroup]',
5100
5116
  template: `
5101
5117
  <ng-container>
5102
- @for (g of groups; track g) {
5103
- <col [class.k-group-col]="true" />
5104
- }
5118
+ @if (groupingMode === 'default') {
5119
+ @for (g of groups; track g) {
5120
+ <col [class.k-group-col]="true" />
5121
+ }
5122
+ }
5105
5123
  @if (detailTemplate?.templateRef && !isStacked) {
5106
5124
  <col [class.k-hierarchy-col]="true"/>
5107
5125
  }
@@ -5122,6 +5140,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.26", ngImpo
5122
5140
  type: Input
5123
5141
  }], sort: [{
5124
5142
  type: Input
5143
+ }], groupingMode: [{
5144
+ type: Input
5125
5145
  }] } });
5126
5146
 
5127
5147
  /**
@@ -5989,6 +6009,46 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.26", ngImpo
5989
6009
  type: Input
5990
6010
  }] } });
5991
6011
 
6012
+ /**
6013
+ * Represents the group-header template of the synthetic group column that is rendered when the Grid group [`displayMode`](slug:api_grid_groupablesettings#displaymode) is `singleColumn` or `multipleColumns`. It allows customization of the group header content.
6014
+ * To define the group header template, nest an `<ng-template>` tag with the `kendoGridGroupColumnGroupHeaderTemplate`
6015
+ * directive inside the `<kendo-grid>`.
6016
+ *
6017
+ * The template context is set to the current data item and provides the following fields:
6018
+ * - `group`&mdash;The current group item.
6019
+ * - `field`&mdash;The name of the field used for grouping.
6020
+ * - `value`&mdash;The current group value.
6021
+ * - `aggregates`&mdash;Aggregate values for the current group.
6022
+ *
6023
+ * @example
6024
+ * ```html
6025
+ * <kendo-grid>
6026
+ * <ng-template kendoGridGroupColumnGroupHeaderTemplate let-field="field" let-value="value">
6027
+ * <span title="Group Column Group Header Template">
6028
+ * <strong>{{field}}: {{ value }}</strong>
6029
+ * </span>
6030
+ * </ng-template>
6031
+ * </kendo-grid>
6032
+ * ```
6033
+ */
6034
+ class GroupColumnGroupHeaderTemplateDirective {
6035
+ templateRef;
6036
+ constructor(templateRef) {
6037
+ this.templateRef = templateRef;
6038
+ }
6039
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.26", ngImport: i0, type: GroupColumnGroupHeaderTemplateDirective, deps: [{ token: i0.TemplateRef, optional: true }], target: i0.ɵɵFactoryTarget.Directive });
6040
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "20.3.26", type: GroupColumnGroupHeaderTemplateDirective, isStandalone: true, selector: "[kendoGridGroupColumnGroupHeaderTemplate]", ngImport: i0 });
6041
+ }
6042
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.26", ngImport: i0, type: GroupColumnGroupHeaderTemplateDirective, decorators: [{
6043
+ type: Directive,
6044
+ args: [{
6045
+ selector: '[kendoGridGroupColumnGroupHeaderTemplate]',
6046
+ standalone: true
6047
+ }]
6048
+ }], ctorParameters: () => [{ type: i0.TemplateRef, decorators: [{
6049
+ type: Optional
6050
+ }] }] });
6051
+
5992
6052
  const forEachColumn = (list, callback) => {
5993
6053
  list.forEach((column) => {
5994
6054
  callback(column);
@@ -6082,6 +6142,7 @@ class ColumnList {
6082
6142
  * @hidden
6083
6143
  */
6084
6144
  class GroupInfoService {
6145
+ groupColumnGroupHeaderTemplate;
6085
6146
  _columnList = ColumnList.empty;
6086
6147
  get columns() {
6087
6148
  return expandColumns(this._columnList().toArray()).filter(isColumnComponent);
@@ -6105,14 +6166,14 @@ class GroupInfoService {
6105
6166
  const column = this.columnForGroup(item);
6106
6167
  return column ? column.groupHeaderTemplateRef || column.groupHeaderColumnTemplateRef : undefined;
6107
6168
  }
6108
- groupField(group) {
6109
- return group.data ? group.data.field : group.field;
6110
- }
6111
6169
  columnForGroup(group) {
6112
6170
  const field = this.groupField(group);
6113
6171
  const [column] = this.columns.filter(x => x.field === field);
6114
6172
  return column;
6115
6173
  }
6174
+ groupField(group) {
6175
+ return group.data ? group.data.field : group.field;
6176
+ }
6116
6177
  }
6117
6178
 
6118
6179
  /**
@@ -6122,6 +6183,7 @@ class GroupHeaderComponent {
6122
6183
  groupsService;
6123
6184
  groupInfoService;
6124
6185
  ctx;
6186
+ columnInfoService;
6125
6187
  rowIndex;
6126
6188
  logicalRowIndex;
6127
6189
  item;
@@ -6130,6 +6192,7 @@ class GroupHeaderComponent {
6130
6192
  totalColumnsCount = 0;
6131
6193
  hasGroupHeaderColumn;
6132
6194
  groupHeaderColumns;
6195
+ groupingMode = 'default';
6133
6196
  columns;
6134
6197
  groups = [];
6135
6198
  groupItemClass = true;
@@ -6138,10 +6201,11 @@ class GroupHeaderComponent {
6138
6201
  chevronDownIcon = chevronDownIcon;
6139
6202
  chevronRightIcon = chevronRightIcon;
6140
6203
  chevronLeftIcon = chevronLeftIcon;
6141
- constructor(groupsService, groupInfoService, ctx) {
6204
+ constructor(groupsService, groupInfoService, ctx, columnInfoService) {
6142
6205
  this.groupsService = groupsService;
6143
6206
  this.groupInfoService = groupInfoService;
6144
6207
  this.ctx = ctx;
6208
+ this.columnInfoService = columnInfoService;
6145
6209
  }
6146
6210
  ngDoCheck() {
6147
6211
  const groupArgs = {
@@ -6151,6 +6215,41 @@ class GroupHeaderComponent {
6151
6215
  };
6152
6216
  this.isExpanded = this.groupsService.isExpanded(groupArgs);
6153
6217
  }
6218
+ groupColumnForItem(item) {
6219
+ if (this.groupingMode === 'multipleColumns') {
6220
+ const match = (this.columns?.toArray() || []).find((c) => c?.isGroupColumn && c?.groupLevel === item.level);
6221
+ return match || this.groupColumn;
6222
+ }
6223
+ return this.groupColumn;
6224
+ }
6225
+ groupColumnIndexForLevel(level) {
6226
+ if (this.groupingMode === 'compact') {
6227
+ return 0;
6228
+ }
6229
+ if (this.groupingMode === 'singleColumn') {
6230
+ return this.columns.toArray().findIndex(c => c.isGroupColumn);
6231
+ }
6232
+ return this.columns.toArray().findIndex((c) => c?.isGroupColumn && c?.groupLevel === level);
6233
+ }
6234
+ shouldShowGroupContent() {
6235
+ if (this.groupingMode === 'singleColumn') {
6236
+ return this.hasGroupColumnInColumns();
6237
+ }
6238
+ if (this.groupingMode === 'multipleColumns') {
6239
+ return this.groupColumnIndexForLevel(this.item.level) !== -1;
6240
+ }
6241
+ return !this.skipGroupDecoration;
6242
+ }
6243
+ addStickyStyles(column) {
6244
+ const stickyStyles = this.columnInfoService.stickyColumnsStyles(column);
6245
+ return { ...column.headerStyle, ...stickyStyles };
6246
+ }
6247
+ hasGroupColumnInColumns() {
6248
+ return (this.columns?.toArray() || []).some((c) => c?.isGroupColumn);
6249
+ }
6250
+ get groupColumn() {
6251
+ return (this.columns?.toArray() || []).find((c) => c?.isGroupColumn);
6252
+ }
6154
6253
  prefixGroupCell(item) {
6155
6254
  return new Array(item.level);
6156
6255
  }
@@ -6162,19 +6261,32 @@ class GroupHeaderComponent {
6162
6261
  return false;
6163
6262
  }
6164
6263
  groupSpan(item) {
6264
+ if (this.groupingMode === 'singleColumn') {
6265
+ return this.hasGroupColumnInColumns() ? 1 : columnsSpan(this.columns);
6266
+ }
6267
+ if (this.groupingMode === 'multipleColumns') {
6268
+ return this.groupColumnIndexForLevel(item.level) !== -1 ? 1 : columnsSpan(this.columns);
6269
+ }
6165
6270
  const groupCount = (this.groups || []).length;
6166
6271
  const detailOffset = this.hasDetails ? 1 : 0;
6272
+ const isCompactMode = this.groupingMode === 'compact';
6167
6273
  if (this.hasGroupHeaderColumn) {
6168
- return groupCount + 1 + detailOffset - item.level;
6274
+ return (isCompactMode ? 0 : groupCount) + 1 + detailOffset - (isCompactMode ? 0 : item.level);
6169
6275
  }
6170
6276
  const columnCount = columnsSpan(this.columns);
6171
- if (this.skipGroupDecoration) {
6277
+ if (this.skipGroupDecoration || isCompactMode) {
6172
6278
  return columnCount;
6173
6279
  }
6174
6280
  return groupCount + columnCount + detailOffset - item.level;
6175
6281
  }
6176
6282
  logicalColSpan() {
6177
- return this.skipGroupDecoration || this.hasGroupHeaderColumn ? 1 : this.totalColumnsCount;
6283
+ if (this.groupingMode === 'singleColumn' || this.groupingMode === 'multipleColumns') {
6284
+ return columnsSpan(this.columns) - 1;
6285
+ }
6286
+ if (this.skipGroupDecoration && this.groupingMode === 'default') {
6287
+ return 1;
6288
+ }
6289
+ return this.hasGroupHeaderColumn ? 1 : this.totalColumnsCount;
6178
6290
  }
6179
6291
  ariaRole() {
6180
6292
  if (this.skipGroupDecoration) {
@@ -6191,6 +6303,14 @@ class GroupHeaderComponent {
6191
6303
  groupHeaderTemplate(item) {
6192
6304
  return this.groupInfoService.groupHeaderTemplate(item);
6193
6305
  }
6306
+ get groupColumnGroupHeaderTemplate() {
6307
+ return this.groupInfoService.groupColumnGroupHeaderTemplate;
6308
+ }
6309
+ singleColumnRemainingSpan() {
6310
+ const columnCount = columnsSpan(this.columns);
6311
+ const detailOffset = this.hasDetails ? 1 : 0;
6312
+ return columnCount + detailOffset;
6313
+ }
6194
6314
  get groupButtonTitle() {
6195
6315
  const messageKey = this.isExpanded ? 'groupCollapse' : 'groupExpand';
6196
6316
  return this.ctx.localization.get(messageKey);
@@ -6210,76 +6330,147 @@ class GroupHeaderComponent {
6210
6330
  get isStacked() {
6211
6331
  return this.ctx.grid?.isStacked;
6212
6332
  }
6213
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.26", ngImport: i0, type: GroupHeaderComponent, deps: [{ token: GroupsService }, { token: GroupInfoService }, { token: ContextService }], target: i0.ɵɵFactoryTarget.Component });
6214
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.26", 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: `
6333
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.26", ngImport: i0, type: GroupHeaderComponent, deps: [{ token: GroupsService }, { token: GroupInfoService }, { token: ContextService }, { token: ColumnInfoService }], target: i0.ɵɵFactoryTarget.Component });
6334
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.26", type: GroupHeaderComponent, isStandalone: true, selector: "[kendoGridGroupHeader]", inputs: { rowIndex: "rowIndex", logicalRowIndex: "logicalRowIndex", item: "item", skipGroupDecoration: "skipGroupDecoration", hasDetails: "hasDetails", totalColumnsCount: "totalColumnsCount", hasGroupHeaderColumn: "hasGroupHeaderColumn", groupHeaderColumns: "groupHeaderColumns", groupingMode: "groupingMode", columns: "columns", groups: "groups" }, host: { properties: { "class.k-grouping-row": "this.groupItemClass", "class.k-table-group-row": "this.tableGroupRowClass" } }, ngImport: i0, template: `
6215
6335
  @if (!skipGroupDecoration) {
6216
- @for (g of prefixGroupCell(item); track $index) {
6217
- <td class="k-group-cell k-table-td k-table-group-td"
6218
- role="presentation"
6219
- ></td>
6336
+ @if (groupingMode === 'default') {
6337
+ @for (g of prefixGroupCell(item); track $index) {
6338
+ <td class="k-group-cell k-table-td k-table-group-td"
6339
+ role="presentation"
6340
+ ></td>
6341
+ }
6220
6342
  }
6221
6343
  }
6222
6344
  @if (!(skipGroupDecoration && hasGroupHeaderColumn)) {
6223
- <td [attr.colspan]="groupSpan(item)"
6224
- [attr.role]="ariaRole()"
6225
- aria-selected="false"
6226
- class="k-table-td"
6227
- [attr.aria-expanded]="isExpanded"
6228
- kendoGridLogicalCell
6229
- [logicalRowIndex]="logicalRowIndex"
6230
- [logicalColIndex]="0"
6231
- [logicalSlaveCell]="skipGroupDecoration"
6232
- [groupItem]="item"
6233
- [colSpan]="logicalColSpan()">
6234
- <div class="k-grouping-row-content">
6235
- @if (!skipGroupDecoration) {
6236
- <a tabindex="-1" (click)="toggleGroup(item, $event)"
6237
- [attr.title]="groupButtonTitle"
6238
- [attr.aria-label]="groupButtonTitle">
6239
- <kendo-icon-wrapper
6240
- [name]="arrowIcon"
6241
- [svgIcon]="arrowSVGIcon"></kendo-icon-wrapper>
6242
- </a>
6243
- @if (!groupHeaderTemplate(item)) {
6244
- <span class="k-grouping-row-text">
6245
- {{groupTitle(item)}}: {{item.data | valueOf:"value": formatForGroup(item)}}
6246
- </span>
6247
- }
6248
- <ng-template
6249
- [templateContext]="{
6250
- templateRef: groupHeaderTemplate(item),
6251
- group: item.data,
6252
- aggregates: item.data?.aggregates,
6253
- value: item.data?.value,
6254
- field: item.data?.field,
6255
- index: item.index,
6256
- expanded: isExpanded,
6257
- $implicit: item.data
6258
- }">
6259
- </ng-template>
6260
- }
6261
- </div>
6262
- @if (isStacked) {
6263
- <div class="k-grid-column-template">
6264
- @for (column of groupHeaderColumns; track column; let index = $index) {
6265
- @if (column.groupHeaderColumnTemplateRef) {
6266
- <div class="k-column-template-item">
6267
- <ng-template [ngTemplateOutlet]="column.groupHeaderColumnTemplateRef"
6268
- [ngTemplateOutletContext]="{
6269
- group: item.data,
6270
- aggregates: item.data?.aggregates,
6271
- value: item.data?.value,
6272
- field: item.data?.field,
6273
- index: item.index,
6274
- $implicit: item.data
6275
- }">
6276
- </ng-template>
6277
- </div>
6345
+ @if (groupingMode === 'default') {
6346
+ <td [attr.colspan]="groupSpan(item)"
6347
+ [attr.role]="ariaRole()"
6348
+ aria-selected="false"
6349
+ class="k-table-td"
6350
+ [attr.aria-expanded]="isExpanded"
6351
+ kendoGridLogicalCell
6352
+ [logicalRowIndex]="logicalRowIndex"
6353
+ [logicalColIndex]="0"
6354
+ [logicalSlaveCell]="skipGroupDecoration"
6355
+ [groupItem]="item"
6356
+ [colSpan]="logicalColSpan()">
6357
+ <div class="k-grouping-row-content">
6358
+ @if (!skipGroupDecoration) {
6359
+ <a tabindex="-1" (click)="toggleGroup(item, $event)"
6360
+ [attr.title]="groupButtonTitle"
6361
+ [attr.aria-label]="groupButtonTitle">
6362
+ <kendo-icon-wrapper
6363
+ [name]="arrowIcon"
6364
+ [svgIcon]="arrowSVGIcon"></kendo-icon-wrapper>
6365
+ </a>
6366
+ @if (!groupHeaderTemplate(item)) {
6367
+ <span class="k-grouping-row-text">
6368
+ {{groupTitle(item)}}: {{item.data | valueOf:"value": formatForGroup(item)}}
6369
+ </span>
6278
6370
  }
6371
+ <ng-template
6372
+ [templateContext]="{
6373
+ templateRef: groupHeaderTemplate(item),
6374
+ group: item.data,
6375
+ aggregates: item.data?.aggregates,
6376
+ value: item.data?.value,
6377
+ field: item.data?.field,
6378
+ index: item.index,
6379
+ expanded: isExpanded,
6380
+ $implicit: item.data
6381
+ }">
6382
+ </ng-template>
6279
6383
  }
6280
6384
  </div>
6385
+ @if (isStacked) {
6386
+ <div class="k-grid-column-template">
6387
+ @for (column of groupHeaderColumns; track column; let index = $index) {
6388
+ @if (column.groupHeaderColumnTemplateRef) {
6389
+ <div class="k-column-template-item">
6390
+ <ng-template [ngTemplateOutlet]="column.groupHeaderColumnTemplateRef"
6391
+ [ngTemplateOutletContext]="{
6392
+ group: item.data,
6393
+ aggregates: item.data?.aggregates,
6394
+ value: item.data?.value,
6395
+ field: item.data?.field,
6396
+ index: item.index,
6397
+ $implicit: item.data
6398
+ }">
6399
+ </ng-template>
6400
+ </div>
6401
+ }
6402
+ }
6403
+ </div>
6404
+ }
6405
+ </td>
6406
+ } @else {
6407
+ @if (groupingMode === 'singleColumn' && hasGroupColumnInColumns() && groupColumnIndexForLevel() > 0) {
6408
+ <td [attr.colspan]="groupColumnIndexForLevel()"
6409
+ role="gridcell"
6410
+ class="k-table-td">
6411
+ </td>
6281
6412
  }
6282
- </td>
6413
+ @if (groupingMode === 'multipleColumns' && groupColumnIndexForLevel(item.level) > 0) {
6414
+ <td [attr.colspan]="groupColumnIndexForLevel(item.level)"
6415
+ role="gridcell"
6416
+ class="k-table-td">
6417
+ </td>
6418
+ }
6419
+ <td [attr.colspan]="groupSpan(item)"
6420
+ role="gridcell"
6421
+ aria-selected="false"
6422
+ class="k-table-td"
6423
+ [class.k-grid-content-sticky]="groupColumnForItem(item)?.sticky"
6424
+ [ngStyle]="groupColumnForItem(item)?.sticky ? addStickyStyles(groupColumnForItem(item)) : null"
6425
+ [attr.aria-expanded]="isExpanded"
6426
+ kendoGridLogicalCell
6427
+ [logicalRowIndex]="logicalRowIndex"
6428
+ [logicalColIndex]="groupColumnIndexForLevel(item.level)"
6429
+ [logicalSlaveCell]="skipGroupDecoration"
6430
+ [groupItem]="item"
6431
+ [colSpan]="logicalColSpan()"
6432
+ [style.--kendo-grid-grouping-level]="(groupingMode === 'singleColumn' || groupingMode === 'compact') && item.level > 0 ? item.level : null">
6433
+ @if (shouldShowGroupContent()) {
6434
+ <div class="k-grouping-row-content">
6435
+ <kendo-icon-wrapper
6436
+ [name]="arrowIcon"
6437
+ [svgIcon]="arrowSVGIcon"
6438
+ tabindex="-1"
6439
+ (click)="toggleGroup(item, $event)"
6440
+ [attr.title]="groupButtonTitle"
6441
+ [attr.aria-label]="groupButtonTitle">
6442
+ </kendo-icon-wrapper>
6443
+ @if (!groupColumnGroupHeaderTemplate) {
6444
+ <span class="k-grouping-row-text">{{groupTitle(item)}}: {{item.data | valueOf:"value": formatForGroup(item)}}</span>
6445
+ }
6446
+ <ng-template
6447
+ [templateContext]="{
6448
+ templateRef: groupColumnGroupHeaderTemplate,
6449
+ group: item.data,
6450
+ aggregates: item.data?.aggregates,
6451
+ value: item.data?.value,
6452
+ field: item.data?.field,
6453
+ index: item.index,
6454
+ expanded: isExpanded,
6455
+ $implicit: item.data
6456
+ }">
6457
+ </ng-template>
6458
+ </div>
6459
+ }
6460
+ </td>
6461
+ @if (groupingMode === 'singleColumn' && hasGroupColumnInColumns() && logicalColSpan() - groupColumnIndexForLevel() > 0) {
6462
+ <td [attr.colspan]="logicalColSpan() - groupColumnIndexForLevel()"
6463
+ role="gridcell"
6464
+ class="k-table-td">
6465
+ </td>
6466
+ }
6467
+ @if (groupingMode === 'multipleColumns' && groupColumnIndexForLevel(item.level) !== -1 && logicalColSpan() - groupColumnIndexForLevel(item.level) > 0) {
6468
+ <td [attr.colspan]="logicalColSpan() - groupColumnIndexForLevel(item.level)"
6469
+ role="gridcell"
6470
+ class="k-table-td">
6471
+ </td>
6472
+ }
6473
+ }
6283
6474
  }
6284
6475
  @if (hasGroupHeaderColumn && !isStacked) {
6285
6476
  @for (column of groupHeaderColumns; track column; let index = $index) {
@@ -6309,7 +6500,7 @@ class GroupHeaderComponent {
6309
6500
  </td>
6310
6501
  }
6311
6502
  }
6312
- `, isInline: true, dependencies: [{ kind: "directive", type: LogicalCellDirective, selector: "[kendoGridLogicalCell]", inputs: ["logicalColIndex", "logicalRowIndex", "logicalSlaveCell", "colIndex", "colSpan", "rowSpan", "groupItem", "dataRowIndex", "dataItem", "detailExpandCell", "headerLabelText"] }, { kind: "component", type: IconWrapperComponent, selector: "kendo-icon-wrapper", inputs: ["name", "svgIcon", "innerCssClass", "customFontClass", "size"], exportAs: ["kendoIconWrapper"] }, { kind: "directive", type: TemplateContextDirective, selector: "[templateContext]", inputs: ["templateContext"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "pipe", type: FieldAccessorPipe, name: "valueOf" }] });
6503
+ `, isInline: true, dependencies: [{ kind: "directive", type: LogicalCellDirective, selector: "[kendoGridLogicalCell]", inputs: ["logicalColIndex", "logicalRowIndex", "logicalSlaveCell", "colIndex", "colSpan", "rowSpan", "groupItem", "dataRowIndex", "dataItem", "detailExpandCell", "headerLabelText"] }, { kind: "component", type: IconWrapperComponent, selector: "kendo-icon-wrapper", inputs: ["name", "svgIcon", "innerCssClass", "customFontClass", "size"], exportAs: ["kendoIconWrapper"] }, { kind: "directive", type: NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "directive", type: TemplateContextDirective, selector: "[templateContext]", inputs: ["templateContext"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "pipe", type: FieldAccessorPipe, name: "valueOf" }] });
6313
6504
  }
6314
6505
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.26", ngImport: i0, type: GroupHeaderComponent, decorators: [{
6315
6506
  type: Component,
@@ -6317,73 +6508,144 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.26", ngImpo
6317
6508
  selector: '[kendoGridGroupHeader]',
6318
6509
  template: `
6319
6510
  @if (!skipGroupDecoration) {
6320
- @for (g of prefixGroupCell(item); track $index) {
6321
- <td class="k-group-cell k-table-td k-table-group-td"
6322
- role="presentation"
6323
- ></td>
6511
+ @if (groupingMode === 'default') {
6512
+ @for (g of prefixGroupCell(item); track $index) {
6513
+ <td class="k-group-cell k-table-td k-table-group-td"
6514
+ role="presentation"
6515
+ ></td>
6516
+ }
6324
6517
  }
6325
6518
  }
6326
6519
  @if (!(skipGroupDecoration && hasGroupHeaderColumn)) {
6327
- <td [attr.colspan]="groupSpan(item)"
6328
- [attr.role]="ariaRole()"
6329
- aria-selected="false"
6330
- class="k-table-td"
6331
- [attr.aria-expanded]="isExpanded"
6332
- kendoGridLogicalCell
6333
- [logicalRowIndex]="logicalRowIndex"
6334
- [logicalColIndex]="0"
6335
- [logicalSlaveCell]="skipGroupDecoration"
6336
- [groupItem]="item"
6337
- [colSpan]="logicalColSpan()">
6338
- <div class="k-grouping-row-content">
6339
- @if (!skipGroupDecoration) {
6340
- <a tabindex="-1" (click)="toggleGroup(item, $event)"
6341
- [attr.title]="groupButtonTitle"
6342
- [attr.aria-label]="groupButtonTitle">
6343
- <kendo-icon-wrapper
6344
- [name]="arrowIcon"
6345
- [svgIcon]="arrowSVGIcon"></kendo-icon-wrapper>
6346
- </a>
6347
- @if (!groupHeaderTemplate(item)) {
6348
- <span class="k-grouping-row-text">
6349
- {{groupTitle(item)}}: {{item.data | valueOf:"value": formatForGroup(item)}}
6350
- </span>
6351
- }
6352
- <ng-template
6353
- [templateContext]="{
6354
- templateRef: groupHeaderTemplate(item),
6355
- group: item.data,
6356
- aggregates: item.data?.aggregates,
6357
- value: item.data?.value,
6358
- field: item.data?.field,
6359
- index: item.index,
6360
- expanded: isExpanded,
6361
- $implicit: item.data
6362
- }">
6363
- </ng-template>
6364
- }
6365
- </div>
6366
- @if (isStacked) {
6367
- <div class="k-grid-column-template">
6368
- @for (column of groupHeaderColumns; track column; let index = $index) {
6369
- @if (column.groupHeaderColumnTemplateRef) {
6370
- <div class="k-column-template-item">
6371
- <ng-template [ngTemplateOutlet]="column.groupHeaderColumnTemplateRef"
6372
- [ngTemplateOutletContext]="{
6373
- group: item.data,
6374
- aggregates: item.data?.aggregates,
6375
- value: item.data?.value,
6376
- field: item.data?.field,
6377
- index: item.index,
6378
- $implicit: item.data
6379
- }">
6380
- </ng-template>
6381
- </div>
6520
+ @if (groupingMode === 'default') {
6521
+ <td [attr.colspan]="groupSpan(item)"
6522
+ [attr.role]="ariaRole()"
6523
+ aria-selected="false"
6524
+ class="k-table-td"
6525
+ [attr.aria-expanded]="isExpanded"
6526
+ kendoGridLogicalCell
6527
+ [logicalRowIndex]="logicalRowIndex"
6528
+ [logicalColIndex]="0"
6529
+ [logicalSlaveCell]="skipGroupDecoration"
6530
+ [groupItem]="item"
6531
+ [colSpan]="logicalColSpan()">
6532
+ <div class="k-grouping-row-content">
6533
+ @if (!skipGroupDecoration) {
6534
+ <a tabindex="-1" (click)="toggleGroup(item, $event)"
6535
+ [attr.title]="groupButtonTitle"
6536
+ [attr.aria-label]="groupButtonTitle">
6537
+ <kendo-icon-wrapper
6538
+ [name]="arrowIcon"
6539
+ [svgIcon]="arrowSVGIcon"></kendo-icon-wrapper>
6540
+ </a>
6541
+ @if (!groupHeaderTemplate(item)) {
6542
+ <span class="k-grouping-row-text">
6543
+ {{groupTitle(item)}}: {{item.data | valueOf:"value": formatForGroup(item)}}
6544
+ </span>
6382
6545
  }
6546
+ <ng-template
6547
+ [templateContext]="{
6548
+ templateRef: groupHeaderTemplate(item),
6549
+ group: item.data,
6550
+ aggregates: item.data?.aggregates,
6551
+ value: item.data?.value,
6552
+ field: item.data?.field,
6553
+ index: item.index,
6554
+ expanded: isExpanded,
6555
+ $implicit: item.data
6556
+ }">
6557
+ </ng-template>
6383
6558
  }
6384
6559
  </div>
6560
+ @if (isStacked) {
6561
+ <div class="k-grid-column-template">
6562
+ @for (column of groupHeaderColumns; track column; let index = $index) {
6563
+ @if (column.groupHeaderColumnTemplateRef) {
6564
+ <div class="k-column-template-item">
6565
+ <ng-template [ngTemplateOutlet]="column.groupHeaderColumnTemplateRef"
6566
+ [ngTemplateOutletContext]="{
6567
+ group: item.data,
6568
+ aggregates: item.data?.aggregates,
6569
+ value: item.data?.value,
6570
+ field: item.data?.field,
6571
+ index: item.index,
6572
+ $implicit: item.data
6573
+ }">
6574
+ </ng-template>
6575
+ </div>
6576
+ }
6577
+ }
6578
+ </div>
6579
+ }
6580
+ </td>
6581
+ } @else {
6582
+ @if (groupingMode === 'singleColumn' && hasGroupColumnInColumns() && groupColumnIndexForLevel() > 0) {
6583
+ <td [attr.colspan]="groupColumnIndexForLevel()"
6584
+ role="gridcell"
6585
+ class="k-table-td">
6586
+ </td>
6385
6587
  }
6386
- </td>
6588
+ @if (groupingMode === 'multipleColumns' && groupColumnIndexForLevel(item.level) > 0) {
6589
+ <td [attr.colspan]="groupColumnIndexForLevel(item.level)"
6590
+ role="gridcell"
6591
+ class="k-table-td">
6592
+ </td>
6593
+ }
6594
+ <td [attr.colspan]="groupSpan(item)"
6595
+ role="gridcell"
6596
+ aria-selected="false"
6597
+ class="k-table-td"
6598
+ [class.k-grid-content-sticky]="groupColumnForItem(item)?.sticky"
6599
+ [ngStyle]="groupColumnForItem(item)?.sticky ? addStickyStyles(groupColumnForItem(item)) : null"
6600
+ [attr.aria-expanded]="isExpanded"
6601
+ kendoGridLogicalCell
6602
+ [logicalRowIndex]="logicalRowIndex"
6603
+ [logicalColIndex]="groupColumnIndexForLevel(item.level)"
6604
+ [logicalSlaveCell]="skipGroupDecoration"
6605
+ [groupItem]="item"
6606
+ [colSpan]="logicalColSpan()"
6607
+ [style.--kendo-grid-grouping-level]="(groupingMode === 'singleColumn' || groupingMode === 'compact') && item.level > 0 ? item.level : null">
6608
+ @if (shouldShowGroupContent()) {
6609
+ <div class="k-grouping-row-content">
6610
+ <kendo-icon-wrapper
6611
+ [name]="arrowIcon"
6612
+ [svgIcon]="arrowSVGIcon"
6613
+ tabindex="-1"
6614
+ (click)="toggleGroup(item, $event)"
6615
+ [attr.title]="groupButtonTitle"
6616
+ [attr.aria-label]="groupButtonTitle">
6617
+ </kendo-icon-wrapper>
6618
+ @if (!groupColumnGroupHeaderTemplate) {
6619
+ <span class="k-grouping-row-text">{{groupTitle(item)}}: {{item.data | valueOf:"value": formatForGroup(item)}}</span>
6620
+ }
6621
+ <ng-template
6622
+ [templateContext]="{
6623
+ templateRef: groupColumnGroupHeaderTemplate,
6624
+ group: item.data,
6625
+ aggregates: item.data?.aggregates,
6626
+ value: item.data?.value,
6627
+ field: item.data?.field,
6628
+ index: item.index,
6629
+ expanded: isExpanded,
6630
+ $implicit: item.data
6631
+ }">
6632
+ </ng-template>
6633
+ </div>
6634
+ }
6635
+ </td>
6636
+ @if (groupingMode === 'singleColumn' && hasGroupColumnInColumns() && logicalColSpan() - groupColumnIndexForLevel() > 0) {
6637
+ <td [attr.colspan]="logicalColSpan() - groupColumnIndexForLevel()"
6638
+ role="gridcell"
6639
+ class="k-table-td">
6640
+ </td>
6641
+ }
6642
+ @if (groupingMode === 'multipleColumns' && groupColumnIndexForLevel(item.level) !== -1 && logicalColSpan() - groupColumnIndexForLevel(item.level) > 0) {
6643
+ <td [attr.colspan]="logicalColSpan() - groupColumnIndexForLevel(item.level)"
6644
+ role="gridcell"
6645
+ class="k-table-td">
6646
+ </td>
6647
+ }
6648
+ }
6387
6649
  }
6388
6650
  @if (hasGroupHeaderColumn && !isStacked) {
6389
6651
  @for (column of groupHeaderColumns; track column; let index = $index) {
@@ -6415,9 +6677,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.26", ngImpo
6415
6677
  }
6416
6678
  `,
6417
6679
  standalone: true,
6418
- imports: [LogicalCellDirective, IconWrapperComponent, TemplateContextDirective, NgTemplateOutlet, FieldAccessorPipe]
6680
+ imports: [LogicalCellDirective, IconWrapperComponent, NgStyle, TemplateContextDirective, NgTemplateOutlet, FieldAccessorPipe]
6419
6681
  }]
6420
- }], ctorParameters: () => [{ type: GroupsService }, { type: GroupInfoService }, { type: ContextService }], propDecorators: { rowIndex: [{
6682
+ }], ctorParameters: () => [{ type: GroupsService }, { type: GroupInfoService }, { type: ContextService }, { type: ColumnInfoService }], propDecorators: { rowIndex: [{
6421
6683
  type: Input
6422
6684
  }], logicalRowIndex: [{
6423
6685
  type: Input
@@ -6433,6 +6695,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.26", ngImpo
6433
6695
  type: Input
6434
6696
  }], groupHeaderColumns: [{
6435
6697
  type: Input
6698
+ }], groupingMode: [{
6699
+ type: Input
6436
6700
  }], columns: [{
6437
6701
  type: Input
6438
6702
  }], groups: [{
@@ -12878,6 +13142,7 @@ class FilterRowComponent {
12878
13142
  detailTemplate;
12879
13143
  logicalRowIndex;
12880
13144
  lockedColumnsCount;
13145
+ groupingMode = 'default';
12881
13146
  filterRowClass = true;
12882
13147
  constructor(ctx, columnInfoService) {
12883
13148
  this.ctx = ctx;
@@ -12902,12 +13167,14 @@ class FilterRowComponent {
12902
13167
  return this.ctx.grid?.isStacked;
12903
13168
  }
12904
13169
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.26", ngImport: i0, type: FilterRowComponent, deps: [{ token: ContextService }, { token: ColumnInfoService }], target: i0.ɵɵFactoryTarget.Component });
12905
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.26", 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: `
12906
- @for (g of groups; track g) {
12907
- <td
12908
- class="k-table-td k-group-cell k-table-group-td"
12909
- role="presentation">
12910
- </td>
13170
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.26", type: FilterRowComponent, isStandalone: true, selector: "[kendoGridFilterRow]", inputs: { columns: "columns", filter: "filter", groups: "groups", detailTemplate: "detailTemplate", logicalRowIndex: "logicalRowIndex", lockedColumnsCount: "lockedColumnsCount", groupingMode: "groupingMode" }, host: { properties: { "class.k-filter-row": "this.filterRowClass" } }, ngImport: i0, template: `
13171
+ @if (groupingMode === 'default') {
13172
+ @for (g of groups; track g) {
13173
+ <td
13174
+ class="k-table-td k-group-cell k-table-group-td"
13175
+ role="presentation">
13176
+ </td>
13177
+ }
12911
13178
  }
12912
13179
  @if (detailTemplate?.templateRef && !isStacked) {
12913
13180
  <td
@@ -12937,11 +13204,13 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.26", ngImpo
12937
13204
  args: [{
12938
13205
  selector: '[kendoGridFilterRow]',
12939
13206
  template: `
12940
- @for (g of groups; track g) {
12941
- <td
12942
- class="k-table-td k-group-cell k-table-group-td"
12943
- role="presentation">
12944
- </td>
13207
+ @if (groupingMode === 'default') {
13208
+ @for (g of groups; track g) {
13209
+ <td
13210
+ class="k-table-td k-group-cell k-table-group-td"
13211
+ role="presentation">
13212
+ </td>
13213
+ }
12945
13214
  }
12946
13215
  @if (detailTemplate?.templateRef && !isStacked) {
12947
13216
  <td
@@ -12980,6 +13249,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.26", ngImpo
12980
13249
  type: Input
12981
13250
  }], lockedColumnsCount: [{
12982
13251
  type: Input
13252
+ }], groupingMode: [{
13253
+ type: Input
12983
13254
  }], filterRowClass: [{
12984
13255
  type: HostBinding,
12985
13256
  args: ['class.k-filter-row']
@@ -14141,13 +14412,13 @@ class ToolbarToolBase {
14141
14412
  get buttonElement() {
14142
14413
  return this.host.getButton();
14143
14414
  }
14144
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.26", ngImport: i0, type: ToolbarToolBase, deps: [{ token: i58.ToolBarButtonComponent }, { token: 'command' }, { token: ContextService }, { token: i0.NgZone }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Directive });
14415
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.26", ngImport: i0, type: ToolbarToolBase, deps: [{ token: i59.ToolBarButtonComponent }, { token: 'command' }, { token: ContextService }, { token: i0.NgZone }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Directive });
14145
14416
  static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "20.3.26", type: ToolbarToolBase, isStandalone: true, ngImport: i0 });
14146
14417
  }
14147
14418
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.26", ngImport: i0, type: ToolbarToolBase, decorators: [{
14148
14419
  type: Directive,
14149
14420
  args: [{}]
14150
- }], ctorParameters: () => [{ type: i58.ToolBarButtonComponent }, { type: undefined, decorators: [{
14421
+ }], ctorParameters: () => [{ type: i59.ToolBarButtonComponent }, { type: undefined, decorators: [{
14151
14422
  type: Inject,
14152
14423
  args: ['command']
14153
14424
  }] }, { type: ContextService }, { type: i0.NgZone }, { type: i0.ChangeDetectorRef }] });
@@ -14349,7 +14620,7 @@ class ColumnChooserToolbarDirective extends ToolbarToolBase {
14349
14620
  this.host.selected = false;
14350
14621
  focusAnchor && this.buttonElement?.focus({ preventScroll: true });
14351
14622
  }
14352
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.26", ngImport: i0, type: ColumnChooserToolbarDirective, deps: [{ token: i0.Renderer2 }, { token: i2.PopupService }, { token: i58.ToolBarButtonComponent }, { token: ContextService }, { token: i0.NgZone }, { token: i58.RefreshService }, { token: AdaptiveGridService }, { token: ColumnInfoService }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Directive });
14623
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.26", ngImport: i0, type: ColumnChooserToolbarDirective, deps: [{ token: i0.Renderer2 }, { token: i2.PopupService }, { token: i59.ToolBarButtonComponent }, { token: ContextService }, { token: i0.NgZone }, { token: i59.RefreshService }, { token: AdaptiveGridService }, { token: ColumnInfoService }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Directive });
14353
14624
  static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "20.3.26", type: ColumnChooserToolbarDirective, isStandalone: true, selector: "[kendoGridColumnChooserTool]", inputs: { autoSync: "autoSync", allowHideAll: "allowHideAll", filterable: "filterable", showSelectAll: "showSelectAll" }, usesInheritance: true, ngImport: i0 });
14354
14625
  }
14355
14626
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.26", ngImport: i0, type: ColumnChooserToolbarDirective, decorators: [{
@@ -14358,7 +14629,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.26", ngImpo
14358
14629
  selector: '[kendoGridColumnChooserTool]',
14359
14630
  standalone: true
14360
14631
  }]
14361
- }], ctorParameters: () => [{ type: i0.Renderer2 }, { type: i2.PopupService }, { type: i58.ToolBarButtonComponent }, { type: ContextService }, { type: i0.NgZone }, { type: i58.RefreshService }, { type: AdaptiveGridService }, { type: ColumnInfoService }, { type: i0.ChangeDetectorRef }], propDecorators: { autoSync: [{
14632
+ }], ctorParameters: () => [{ type: i0.Renderer2 }, { type: i2.PopupService }, { type: i59.ToolBarButtonComponent }, { type: ContextService }, { type: i0.NgZone }, { type: i59.RefreshService }, { type: AdaptiveGridService }, { type: ColumnInfoService }, { type: i0.ChangeDetectorRef }], propDecorators: { autoSync: [{
14362
14633
  type: Input
14363
14634
  }], allowHideAll: [{
14364
14635
  type: Input
@@ -14631,9 +14902,9 @@ class ColumnMenuItemComponent {
14631
14902
  }
14632
14903
  get expandedIcon() {
14633
14904
  if (this.ctx.grid.isActionSheetExpanded) {
14634
- return 'arrow-chevron-right';
14905
+ return 'chevron-right';
14635
14906
  }
14636
- return this.expanded ? 'arrow-chevron-up' : 'arrow-chevron-down';
14907
+ return this.expanded ? 'chevron-up' : 'chevron-down';
14637
14908
  }
14638
14909
  get expandedSvgIcon() {
14639
14910
  if (this.ctx.grid.isActionSheetExpanded) {
@@ -16439,11 +16710,14 @@ class ColumnMenuComponent {
16439
16710
  const ariaRoot = this.isNavigable ? anchor.closest('.k-table-th') : anchor;
16440
16711
  if (this.popupRef) {
16441
16712
  this.popupSubs?.unsubscribe();
16442
- this.popupSubs = this.popupRef.popup.instance.anchorViewportLeave.subscribe(() => {
16443
- this.popupSubs?.unsubscribe();
16444
- this.popupSubs = null;
16445
- this.close(true);
16446
- this.updateAria(ariaRoot);
16713
+ this.popupSubs = this.popupRef.popup.instance.anchorViewportLeave.subscribe((event) => {
16714
+ // Keep the column menu open when the anchor leaves the viewport only vertically (e.g. long menu content + small viewport)
16715
+ if (!event || event.horizontal) {
16716
+ this.popupSubs?.unsubscribe();
16717
+ this.popupSubs = null;
16718
+ this.close(true);
16719
+ this.updateAria(ariaRoot);
16720
+ }
16447
16721
  });
16448
16722
  this.popupSubs.add(() => this.popupRef.popup.instance.close.subscribe(() => {
16449
16723
  this.popupSubs?.unsubscribe();
@@ -17708,7 +17982,7 @@ class CSVCommandToolbarDirective extends ToolbarToolBase {
17708
17982
  e.preventDefault();
17709
17983
  this.csvService.exportClick.emit();
17710
17984
  }
17711
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.26", ngImport: i0, type: CSVCommandToolbarDirective, deps: [{ token: CSVService }, { token: i58.ToolBarButtonComponent }, { token: ContextService }, { token: i0.NgZone }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Directive });
17985
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.26", ngImport: i0, type: CSVCommandToolbarDirective, deps: [{ token: CSVService }, { token: i59.ToolBarButtonComponent }, { token: ContextService }, { token: i0.NgZone }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Directive });
17712
17986
  static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "20.3.26", type: CSVCommandToolbarDirective, isStandalone: true, selector: "[kendoGridCSVTool]", usesInheritance: true, ngImport: i0 });
17713
17987
  }
17714
17988
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.26", ngImport: i0, type: CSVCommandToolbarDirective, decorators: [{
@@ -17717,7 +17991,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.26", ngImpo
17717
17991
  selector: '[kendoGridCSVTool]',
17718
17992
  standalone: true
17719
17993
  }]
17720
- }], ctorParameters: () => [{ type: CSVService }, { type: i58.ToolBarButtonComponent }, { type: ContextService }, { type: i0.NgZone }, { type: i0.ChangeDetectorRef }] });
17994
+ }], ctorParameters: () => [{ type: CSVService }, { type: i59.ToolBarButtonComponent }, { type: ContextService }, { type: i0.NgZone }, { type: i0.ChangeDetectorRef }] });
17721
17995
 
17722
17996
  /**
17723
17997
  * @hidden
@@ -18607,10 +18881,11 @@ class ColumnHandleDirective {
18607
18881
  const isParentSpan = isInSpanColumn(column);
18608
18882
  const isLastInSpan = isParentSpan ? column.parent.children.last === column : false;
18609
18883
  const index = indexOf(column, allLeafs);
18884
+ const isSingleGroupColumn = column === this.ctx.grid?.singleGroupColumn;
18610
18885
  return {
18611
18886
  column,
18612
18887
  headerIndex: this.columnsForLevel(column.level).indexOf(column),
18613
- index,
18888
+ index: isSingleGroupColumn ? -1 : index,
18614
18889
  isLastInSpan,
18615
18890
  isParentSpan,
18616
18891
  level: column.level
@@ -20110,7 +20385,7 @@ const isRootLevel = ({ parent }) => !isTruthy(parent);
20110
20385
  const ofColumnType = ({ draggable }) => ['column', 'columnGroup']
20111
20386
  .indexOf(draggable.context.type) >= 0;
20112
20387
  const notSameElement = ({ draggable, target }) => draggable.element.nativeElement !== target.element.nativeElement;
20113
- const inSameParent = (x, y) => x.parent === y.parent ||
20388
+ const inSameParent = (x, y) => (x.parent ?? null) === (y.parent ?? null) ||
20114
20389
  (isInSpanColumn$1(y) && inSameParent(x, y.parent));
20115
20390
  const sameParent = ({ draggable, target }) => inSameParent(draggable.context.column, target.context.column);
20116
20391
  const lastNonLocked = ({ draggable }) => !isTruthy(draggable.context.column.locked) &&
@@ -20159,6 +20434,7 @@ class HeaderComponent {
20159
20434
  totalColumns;
20160
20435
  tabIndex;
20161
20436
  size;
20437
+ groupingMode = 'default';
20162
20438
  sortedFields = {};
20163
20439
  hostClass = true;
20164
20440
  get columnMenuSettings() {
@@ -20550,7 +20826,7 @@ class HeaderComponent {
20550
20826
  });
20551
20827
  }
20552
20828
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.26", ngImport: i0, type: HeaderComponent, deps: [{ token: SinglePopupService }, { token: DragHintService }, { token: DropCueService }, { token: ColumnReorderService }, { token: IdService }, { token: SortService }, { token: ColumnInfoService }, { token: i0.ChangeDetectorRef }, { token: ContextService }, { token: NavigationService }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component });
20553
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.26", type: HeaderComponent, isStandalone: true, selector: "[kendoGridHeader]", inputs: { totalColumnLevels: "totalColumnLevels", columns: "columns", groups: "groups", detailTemplate: "detailTemplate", scrollable: "scrollable", filterable: "filterable", sort: "sort", filter: "filter", sortable: "sortable", groupable: "groupable", lockedColumnsCount: "lockedColumnsCount", resizable: "resizable", reorderable: "reorderable", columnMenu: "columnMenu", columnMenuTemplate: "columnMenuTemplate", totalColumnsCount: "totalColumnsCount", totalColumns: "totalColumns", tabIndex: "tabIndex", size: "size" }, host: { properties: { "class.k-table-thead": "this.hostClass" } }, viewQueries: [{ propertyName: "dropTargets", predicate: DropTargetDirective, descendants: true }, { propertyName: "filterMenus", predicate: FilterMenuComponent, descendants: true }, { propertyName: "columnMenus", predicate: ColumnMenuComponent, descendants: true }], usesOnChanges: true, ngImport: i0, template: `
20829
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.26", type: HeaderComponent, isStandalone: true, selector: "[kendoGridHeader]", inputs: { totalColumnLevels: "totalColumnLevels", columns: "columns", groups: "groups", detailTemplate: "detailTemplate", scrollable: "scrollable", filterable: "filterable", sort: "sort", filter: "filter", sortable: "sortable", groupable: "groupable", lockedColumnsCount: "lockedColumnsCount", resizable: "resizable", reorderable: "reorderable", columnMenu: "columnMenu", columnMenuTemplate: "columnMenuTemplate", totalColumnsCount: "totalColumnsCount", totalColumns: "totalColumns", tabIndex: "tabIndex", size: "size", groupingMode: "groupingMode" }, host: { properties: { "class.k-table-thead": "this.hostClass" } }, viewQueries: [{ propertyName: "dropTargets", predicate: DropTargetDirective, descendants: true }, { propertyName: "filterMenus", predicate: FilterMenuComponent, descendants: true }, { propertyName: "columnMenus", predicate: ColumnMenuComponent, descendants: true }], usesOnChanges: true, ngImport: i0, template: `
20554
20830
  @for (i of columnLevels; track $index; let levelIndex = $index) {
20555
20831
  <tr
20556
20832
  kendoGridLogicalRow
@@ -20559,12 +20835,14 @@ class HeaderComponent {
20559
20835
  [logicalCellsCount]="columns.length"
20560
20836
  [logicalSlaveCellsCount]="unlockedColumnsCount"
20561
20837
  [totalColumns]="totalColumns">
20562
- @for (g of groups; track g) {
20563
- <th
20564
- class="k-group-cell k-header k-table-th"
20565
- role="presentation"
20566
- >
20567
- </th>
20838
+ @if (groupingMode === 'default') {
20839
+ @for (g of groups; track g) {
20840
+ <th
20841
+ class="k-group-cell k-header k-table-th"
20842
+ role="presentation"
20843
+ >
20844
+ </th>
20845
+ }
20568
20846
  }
20569
20847
  @if (detailTemplate?.templateRef && !isStacked) {
20570
20848
  <th class="k-hierarchy-cell k-header k-table-th"
@@ -20805,9 +21083,10 @@ class HeaderComponent {
20805
21083
  [logicalSlaveRow]="lockedColumnsCount > 0"
20806
21084
  [logicalCellsCount]="columns.length"
20807
21085
  [logicalSlaveCellsCount]="unlockedColumnsCount"
20808
- [totalColumns]="totalColumns"></tr>
21086
+ [totalColumns]="totalColumns"
21087
+ [groupingMode]="groupingMode"></tr>
20809
21088
  }
20810
- `, isInline: true, dependencies: [{ kind: "directive", type: LogicalRowDirective, selector: "[kendoGridLogicalRow]", inputs: ["logicalRowIndex", "logicalSlaveRow", "logicalCellsCount", "logicalSlaveCellsCount", "dataRowIndex", "dataItem", "totalColumns"] }, { kind: "directive", type: LogicalCellDirective, selector: "[kendoGridLogicalCell]", inputs: ["logicalColIndex", "logicalRowIndex", "logicalSlaveCell", "colIndex", "colSpan", "rowSpan", "groupItem", "dataRowIndex", "dataItem", "detailExpandCell", "headerLabelText"] }, { kind: "directive", type: DropTargetDirective, selector: "[kendoDropTarget]", inputs: ["context"], outputs: ["enter", "leave", "drop"] }, { kind: "directive", type: DraggableDirective, selector: "[kendoDraggable]", inputs: ["enableDrag"], outputs: ["kendoPress", "kendoDrag", "kendoRelease"] }, { kind: "directive", type: DraggableColumnDirective, selector: "[kendoDraggableColumn]", inputs: ["context", "enableDrag"], outputs: ["drag"] }, { kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "directive", type: TemplateContextDirective, selector: "[templateContext]", inputs: ["templateContext"] }, { kind: "component", type: FilterMenuComponent, selector: "kendo-grid-filter-menu", inputs: ["column", "filter", "tabIndex"] }, { kind: "component", type: ColumnMenuComponent, selector: "kendo-grid-column-menu", inputs: ["standalone", "column", "settings", "sort", "filter", "sortable", "columnMenuTemplate", "tabIndex"] }, { kind: "component", type: IconWrapperComponent, selector: "kendo-icon-wrapper", inputs: ["name", "svgIcon", "innerCssClass", "customFontClass", "size"], exportAs: ["kendoIconWrapper"] }, { kind: "directive", type: SelectAllCheckboxDirective, selector: "[kendoGridSelectAllCheckbox]", inputs: ["state"], outputs: ["selectAllChange"] }, { kind: "directive", type: FocusableDirective, selector: "[kendoGridFocusable],\n [kendoGridEditCommand],\n [kendoGridRemoveCommand],\n [kendoGridSaveCommand],\n [kendoGridCancelCommand],\n [kendoGridSelectionCheckbox]\n ", inputs: ["kendoGridFocusable"] }, { kind: "directive", type: ColumnHandleDirective, selector: "[kendoGridColumnHandle]", inputs: ["isLast", "columns", "column"] }, { kind: "component", type: FilterRowComponent, selector: "[kendoGridFilterRow]", inputs: ["columns", "filter", "groups", "detailTemplate", "logicalRowIndex", "lockedColumnsCount"] }, { kind: "component", type: CheckBoxComponent, selector: "kendo-checkbox", inputs: ["checkedState", "rounded"], outputs: ["checkedStateChange"], exportAs: ["kendoCheckBox"] }] });
21089
+ `, isInline: true, dependencies: [{ kind: "directive", type: LogicalRowDirective, selector: "[kendoGridLogicalRow]", inputs: ["logicalRowIndex", "logicalSlaveRow", "logicalCellsCount", "logicalSlaveCellsCount", "dataRowIndex", "dataItem", "totalColumns"] }, { kind: "directive", type: LogicalCellDirective, selector: "[kendoGridLogicalCell]", inputs: ["logicalColIndex", "logicalRowIndex", "logicalSlaveCell", "colIndex", "colSpan", "rowSpan", "groupItem", "dataRowIndex", "dataItem", "detailExpandCell", "headerLabelText"] }, { kind: "directive", type: DropTargetDirective, selector: "[kendoDropTarget]", inputs: ["context"], outputs: ["enter", "leave", "drop"] }, { kind: "directive", type: DraggableDirective, selector: "[kendoDraggable]", inputs: ["enableDrag"], outputs: ["kendoPress", "kendoDrag", "kendoRelease"] }, { kind: "directive", type: DraggableColumnDirective, selector: "[kendoDraggableColumn]", inputs: ["context", "enableDrag"], outputs: ["drag"] }, { kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "directive", type: TemplateContextDirective, selector: "[templateContext]", inputs: ["templateContext"] }, { kind: "component", type: FilterMenuComponent, selector: "kendo-grid-filter-menu", inputs: ["column", "filter", "tabIndex"] }, { kind: "component", type: ColumnMenuComponent, selector: "kendo-grid-column-menu", inputs: ["standalone", "column", "settings", "sort", "filter", "sortable", "columnMenuTemplate", "tabIndex"] }, { kind: "component", type: IconWrapperComponent, selector: "kendo-icon-wrapper", inputs: ["name", "svgIcon", "innerCssClass", "customFontClass", "size"], exportAs: ["kendoIconWrapper"] }, { kind: "directive", type: SelectAllCheckboxDirective, selector: "[kendoGridSelectAllCheckbox]", inputs: ["state"], outputs: ["selectAllChange"] }, { kind: "directive", type: FocusableDirective, selector: "[kendoGridFocusable],\n [kendoGridEditCommand],\n [kendoGridRemoveCommand],\n [kendoGridSaveCommand],\n [kendoGridCancelCommand],\n [kendoGridSelectionCheckbox]\n ", inputs: ["kendoGridFocusable"] }, { kind: "directive", type: ColumnHandleDirective, selector: "[kendoGridColumnHandle]", inputs: ["isLast", "columns", "column"] }, { kind: "component", type: FilterRowComponent, selector: "[kendoGridFilterRow]", inputs: ["columns", "filter", "groups", "detailTemplate", "logicalRowIndex", "lockedColumnsCount", "groupingMode"] }, { kind: "component", type: CheckBoxComponent, selector: "kendo-checkbox", inputs: ["checkedState", "rounded"], outputs: ["checkedStateChange"], exportAs: ["kendoCheckBox"] }] });
20811
21090
  }
20812
21091
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.26", ngImport: i0, type: HeaderComponent, decorators: [{
20813
21092
  type: Component,
@@ -20822,12 +21101,14 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.26", ngImpo
20822
21101
  [logicalCellsCount]="columns.length"
20823
21102
  [logicalSlaveCellsCount]="unlockedColumnsCount"
20824
21103
  [totalColumns]="totalColumns">
20825
- @for (g of groups; track g) {
20826
- <th
20827
- class="k-group-cell k-header k-table-th"
20828
- role="presentation"
20829
- >
20830
- </th>
21104
+ @if (groupingMode === 'default') {
21105
+ @for (g of groups; track g) {
21106
+ <th
21107
+ class="k-group-cell k-header k-table-th"
21108
+ role="presentation"
21109
+ >
21110
+ </th>
21111
+ }
20831
21112
  }
20832
21113
  @if (detailTemplate?.templateRef && !isStacked) {
20833
21114
  <th class="k-hierarchy-cell k-header k-table-th"
@@ -21068,7 +21349,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.26", ngImpo
21068
21349
  [logicalSlaveRow]="lockedColumnsCount > 0"
21069
21350
  [logicalCellsCount]="columns.length"
21070
21351
  [logicalSlaveCellsCount]="unlockedColumnsCount"
21071
- [totalColumns]="totalColumns"></tr>
21352
+ [totalColumns]="totalColumns"
21353
+ [groupingMode]="groupingMode"></tr>
21072
21354
  }
21073
21355
  `,
21074
21356
  standalone: true,
@@ -21129,6 +21411,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.26", ngImpo
21129
21411
  type: Input
21130
21412
  }], size: [{
21131
21413
  type: Input
21414
+ }], groupingMode: [{
21415
+ type: Input
21132
21416
  }], hostClass: [{
21133
21417
  type: HostBinding,
21134
21418
  args: ['class.k-table-thead']
@@ -21157,6 +21441,7 @@ class FooterComponent {
21157
21441
  logicalRowIndex = 0;
21158
21442
  totalColumns;
21159
21443
  totalColumnsCount = 0;
21444
+ groupingMode = 'default';
21160
21445
  get footerClass() {
21161
21446
  return !this.scrollable;
21162
21447
  }
@@ -21194,7 +21479,7 @@ class FooterComponent {
21194
21479
  return this.ctx.grid?.isStacked;
21195
21480
  }
21196
21481
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.26", ngImport: i0, type: FooterComponent, deps: [{ token: ColumnInfoService }, { token: ContextService }], target: i0.ɵɵFactoryTarget.Component });
21197
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.26", 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: `
21482
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.26", type: FooterComponent, isStandalone: true, selector: "[kendoGridFooter]", inputs: { columns: "columns", groups: "groups", detailTemplate: "detailTemplate", scrollable: "scrollable", lockedColumnsCount: "lockedColumnsCount", logicalRowIndex: "logicalRowIndex", totalColumns: "totalColumns", totalColumnsCount: "totalColumnsCount", groupingMode: "groupingMode" }, host: { properties: { "class.k-grid-footer": "this.footerClass", "class.k-table-tfoot": "this.hostClass", "attr.role": "this.hostRole" } }, ngImport: i0, template: `
21198
21483
  <ng-container>
21199
21484
  <tr
21200
21485
  class="k-footer-template"
@@ -21206,12 +21491,14 @@ class FooterComponent {
21206
21491
  [totalColumns]="totalColumns"
21207
21492
  >
21208
21493
  @if (!isStacked) {
21209
- @for (g of groups; track g) {
21210
- <td
21211
- class="k-table-td k-group-cell k-table-group-td"
21212
- role="presentation"
21213
- >
21214
- </td>
21494
+ @if (groupingMode === 'default') {
21495
+ @for (g of groups; track g) {
21496
+ <td
21497
+ class="k-table-td k-group-cell k-table-group-td"
21498
+ role="presentation"
21499
+ >
21500
+ </td>
21501
+ }
21215
21502
  }
21216
21503
  }
21217
21504
  @if (detailTemplate?.templateRef && !isStacked) {
@@ -21292,12 +21579,14 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.26", ngImpo
21292
21579
  [totalColumns]="totalColumns"
21293
21580
  >
21294
21581
  @if (!isStacked) {
21295
- @for (g of groups; track g) {
21296
- <td
21297
- class="k-table-td k-group-cell k-table-group-td"
21298
- role="presentation"
21299
- >
21300
- </td>
21582
+ @if (groupingMode === 'default') {
21583
+ @for (g of groups; track g) {
21584
+ <td
21585
+ class="k-table-td k-group-cell k-table-group-td"
21586
+ role="presentation"
21587
+ >
21588
+ </td>
21589
+ }
21301
21590
  }
21302
21591
  }
21303
21592
  @if (detailTemplate?.templateRef && !isStacked) {
@@ -21380,6 +21669,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.26", ngImpo
21380
21669
  type: Input
21381
21670
  }], totalColumnsCount: [{
21382
21671
  type: Input
21672
+ }], groupingMode: [{
21673
+ type: Input
21383
21674
  }], footerClass: [{
21384
21675
  type: HostBinding,
21385
21676
  args: ['class.k-grid-footer']
@@ -22771,6 +23062,7 @@ class TableBodyComponent {
22771
23062
  detailRowHeight;
22772
23063
  isPinContainer = false;
22773
23064
  pinPosition = null;
23065
+ groupingMode = 'default';
22774
23066
  hostClass = true;
22775
23067
  groupHeaderSlaveCellsCount;
22776
23068
  groupHeaderColumns;
@@ -22871,7 +23163,8 @@ class TableBodyComponent {
22871
23163
  });
22872
23164
  }
22873
23165
  if (this.hasGroupHeaderColumn) {
22874
- this.groupHeaderColumns = columnsToRender(this.skipGroupDecoration ? this.columns : this.columns.toArray().slice(1));
23166
+ const shouldSlice = !this.skipGroupDecoration && this.groupingMode === 'default';
23167
+ this.groupHeaderColumns = columnsToRender(shouldSlice ? this.columns.toArray().slice(1) : this.columns);
22875
23168
  }
22876
23169
  else {
22877
23170
  this.groupHeaderColumns = [];
@@ -23210,7 +23503,7 @@ class TableBodyComponent {
23210
23503
  }
23211
23504
  }
23212
23505
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.26", ngImport: i0, type: TableBodyComponent, deps: [{ token: DetailsService }, { token: GroupsService }, { token: ChangeNotificationService }, { token: EditService }, { token: ContextService }, { token: i0.NgZone }, { token: i0.Renderer2 }, { token: i0.ElementRef }, { token: DomEventsService }, { token: SelectionService }, { token: CellSelectionService }, { token: ColumnInfoService }, { token: NavigationService }], target: i0.ɵɵFactoryTarget.Component });
23213
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.26", type: TableBodyComponent, isStandalone: true, selector: "[kendoGridTableBody]", inputs: { columns: "columns", allColumns: "allColumns", groups: "groups", detailTemplate: "detailTemplate", noRecordsTemplate: "noRecordsTemplate", rowsToRender: "rowsToRender", skip: "skip", selectable: "selectable", filterable: "filterable", noRecordsText: "noRecordsText", isLocked: "isLocked", isLoading: "isLoading", isVirtual: "isVirtual", cellLoadingTemplate: "cellLoadingTemplate", skipGroupDecoration: "skipGroupDecoration", lockedColumnsCount: "lockedColumnsCount", totalColumnsCount: "totalColumnsCount", virtualColumns: "virtualColumns", trackBy: "trackBy", rowSticky: "rowSticky", totalColumns: "totalColumns", rowClass: "rowClass", rowHeight: "rowHeight", detailRowHeight: "detailRowHeight", isPinContainer: "isPinContainer", pinPosition: "pinPosition" }, host: { properties: { "class.k-table-tbody": "this.hostClass" } }, usesOnChanges: true, ngImport: i0, template: `
23506
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.26", type: TableBodyComponent, isStandalone: true, selector: "[kendoGridTableBody]", inputs: { columns: "columns", allColumns: "allColumns", groups: "groups", detailTemplate: "detailTemplate", noRecordsTemplate: "noRecordsTemplate", rowsToRender: "rowsToRender", skip: "skip", selectable: "selectable", filterable: "filterable", noRecordsText: "noRecordsText", isLocked: "isLocked", isLoading: "isLoading", isVirtual: "isVirtual", cellLoadingTemplate: "cellLoadingTemplate", skipGroupDecoration: "skipGroupDecoration", lockedColumnsCount: "lockedColumnsCount", totalColumnsCount: "totalColumnsCount", virtualColumns: "virtualColumns", trackBy: "trackBy", rowSticky: "rowSticky", totalColumns: "totalColumns", rowClass: "rowClass", rowHeight: "rowHeight", detailRowHeight: "detailRowHeight", isPinContainer: "isPinContainer", pinPosition: "pinPosition", groupingMode: "groupingMode" }, host: { properties: { "class.k-table-tbody": "this.hostClass" } }, usesOnChanges: true, ngImport: i0, template: `
23214
23507
  @if (editService.hasNewItem) {
23215
23508
  <tr class="k-grid-add-row k-grid-edit-row k-master-row"
23216
23509
  [style.height.px]="rowHeight"
@@ -23221,8 +23514,10 @@ class TableBodyComponent {
23221
23514
  [logicalSlaveCellsCount]="unlockedColumnsCount()"
23222
23515
  [totalColumns]="totalColumns">
23223
23516
  @if (!skipGroupDecoration) {
23224
- @for (g of groups; track $index) {
23225
- <td class="k-group-cell k-table-td k-table-group-td" role="presentation"></td>
23517
+ @if (groupingMode === 'default') {
23518
+ @for (g of groups; track $index) {
23519
+ <td class="k-group-cell k-table-td k-table-group-td" role="presentation"></td>
23520
+ }
23226
23521
  }
23227
23522
  }
23228
23523
  @if (detailTemplate?.templateRef && !isStackedMode) {
@@ -23309,7 +23604,8 @@ class TableBodyComponent {
23309
23604
  [logicalSlaveRow]="lockedColumnsCount > 0 && !isStackedMode"
23310
23605
  [totalColumns]="totalColumns"
23311
23606
  [logicalCellsCount]="columns.length"
23312
- [logicalSlaveCellsCount]="0">
23607
+ [logicalSlaveCellsCount]="0"
23608
+ [groupingMode]="groupingMode">
23313
23609
  </tr>
23314
23610
  }
23315
23611
  @if (item.showDataItem) {
@@ -23335,8 +23631,10 @@ class TableBodyComponent {
23335
23631
  [class.k-selected]="isSelectable({ dataItem: item.data, index: $any(item).index }) && isRowSelected(item)"
23336
23632
  [class.k-highlighted]="item.isHighlighted">
23337
23633
  @if (!skipGroupDecoration) {
23338
- @for (g of groups; track $index) {
23339
- <td class="k-group-cell k-table-td k-table-group-td" role="presentation"></td>
23634
+ @if (groupingMode === 'default') {
23635
+ @for (g of groups; track $index) {
23636
+ <td class="k-group-cell k-table-td k-table-group-td" role="presentation"></td>
23637
+ }
23340
23638
  }
23341
23639
  }
23342
23640
  @if (detailTemplate?.templateRef && !isStackedMode) {
@@ -23386,37 +23684,44 @@ class TableBodyComponent {
23386
23684
  } @else {
23387
23685
  @for (column of columns; track virtualColumns ? $index : column; let columnIndex = $index) {
23388
23686
  @if (!item.cells?.[lockedColumnsCount + columnIndex]?.skip) {
23389
- <td
23390
- kendoGridCell
23391
- [rowIndex]="$any(item).index"
23392
- [columnIndex]="lockedColumnsCount + columnIndex"
23393
- [attr.data-kendo-grid-column-index]="lockedColumnsCount + columnIndex"
23394
- [column]="column"
23395
- [columns]="allColumns"
23396
- [dataItem]="item.data"
23397
- [isLoading]="isLoading"
23398
- [isVirtual]="isVirtual"
23399
- [loadingTemplate]="cellLoadingTemplate"
23400
- kendoGridLogicalCell
23401
- [logicalRowIndex]="logicalRowIndex(rowIndex)"
23402
- [logicalColIndex]="logicalColIndex(column)"
23403
- [dataRowIndex]="$any(item).index"
23404
- [dataItem]="item.data"
23405
- [colIndex]="columnIndex"
23406
- [colSpan]="column.colspan"
23407
- [rowSpan]="item.cells[lockedColumnsCount + columnIndex]?.rowspan"
23408
- [attr.role]="column.tableCellsRole"
23409
- class="k-table-td"
23410
- [attr.aria-selected]="lockedColumnsCount < 1 && isSelectable({ dataItem: item.data, index: $any(item).index }) ? isAriaSelected(item, column) : undefined"
23411
- [class.k-grid-content-sticky]="column.sticky"
23412
- [class.k-touch-action-none]="isSelectable({ dataItem: item.data, index: $any(item).index }) && $any(selectable).drag"
23413
- [ngClass]="column.cssClass"
23414
- [class.k-grid-edit-cell]="isEditingCell($any(item).index, column)"
23415
- [ngStyle]="column.sticky ? addStickyColumnStyles(column) : column.style"
23416
- [attr.colspan]="column.colspan"
23417
- [class.k-selected]="isSelectable && cellSelectionService.isCellSelected(item, column)"
23418
- [class.k-highlighted]="item.cells[lockedColumnsCount + columnIndex]?.isHighlighted">
23419
- </td>
23687
+ @if ($any(column).isGroupColumn) {
23688
+ <td class="k-table-group-td k-group-cell k-table-td" role="presentation"
23689
+ [ngStyle]="column.sticky ? addStickyColumnStyles(column) : null"
23690
+ [class.k-grid-content-sticky]="column.sticky"
23691
+ ></td>
23692
+ } @else {
23693
+ <td
23694
+ kendoGridCell
23695
+ [rowIndex]="$any(item).index"
23696
+ [columnIndex]="lockedColumnsCount + columnIndex"
23697
+ [attr.data-kendo-grid-column-index]="lockedColumnsCount + columnIndex"
23698
+ [column]="column"
23699
+ [columns]="allColumns"
23700
+ [dataItem]="item.data"
23701
+ [isLoading]="isLoading"
23702
+ [isVirtual]="isVirtual"
23703
+ [loadingTemplate]="cellLoadingTemplate"
23704
+ kendoGridLogicalCell
23705
+ [logicalRowIndex]="logicalRowIndex(rowIndex)"
23706
+ [logicalColIndex]="logicalColIndex(column)"
23707
+ [dataRowIndex]="$any(item).index"
23708
+ [dataItem]="item.data"
23709
+ [colIndex]="columnIndex"
23710
+ [colSpan]="column.colspan"
23711
+ [rowSpan]="item.cells[lockedColumnsCount + columnIndex]?.rowspan"
23712
+ [attr.role]="column.tableCellsRole"
23713
+ class="k-table-td"
23714
+ [attr.aria-selected]="lockedColumnsCount < 1 && isSelectable({ dataItem: item.data, index: $any(item).index }) ? isAriaSelected(item, column) : undefined"
23715
+ [class.k-grid-content-sticky]="column.sticky"
23716
+ [class.k-touch-action-none]="isSelectable({ dataItem: item.data, index: $any(item).index }) && $any(selectable).drag"
23717
+ [ngClass]="column.cssClass"
23718
+ [class.k-grid-edit-cell]="isEditingCell($any(item).index, column)"
23719
+ [ngStyle]="column.sticky ? addStickyColumnStyles(column) : column.style"
23720
+ [attr.colspan]="column.colspan"
23721
+ [class.k-selected]="isSelectable && cellSelectionService.isCellSelected(item, column)"
23722
+ [class.k-highlighted]="item.cells[lockedColumnsCount + columnIndex]?.isHighlighted">
23723
+ </td>
23724
+ }
23420
23725
  }
23421
23726
  }
23422
23727
  }
@@ -23491,8 +23796,10 @@ class TableBodyComponent {
23491
23796
  [logicalCellsCount]="columns.length"
23492
23797
  [logicalSlaveCellsCount]="unlockedColumnsCount(item)">
23493
23798
  @if (!skipGroupDecoration) {
23494
- @for (g of groups; track $index) {
23495
- <td class="k-group-cell k-table-td k-table-group-td"></td>
23799
+ @if (groupingMode === 'default') {
23800
+ @for (g of groups; track $index) {
23801
+ <td class="k-group-cell k-table-td k-table-group-td"></td>
23802
+ }
23496
23803
  }
23497
23804
  }
23498
23805
  @if (detailTemplate?.templateRef && !isStackedMode) {
@@ -23555,7 +23862,7 @@ class TableBodyComponent {
23555
23862
  @if (rowSticky) {
23556
23863
  <kendo-resize-sensor (resize)="resizeHandler()"></kendo-resize-sensor>
23557
23864
  }
23558
- `, isInline: true, dependencies: [{ kind: "directive", type: LogicalRowDirective, selector: "[kendoGridLogicalRow]", inputs: ["logicalRowIndex", "logicalSlaveRow", "logicalCellsCount", "logicalSlaveCellsCount", "dataRowIndex", "dataItem", "totalColumns"] }, { kind: "directive", type: LogicalCellDirective, selector: "[kendoGridLogicalCell]", inputs: ["logicalColIndex", "logicalRowIndex", "logicalSlaveCell", "colIndex", "colSpan", "rowSpan", "groupItem", "dataRowIndex", "dataItem", "detailExpandCell", "headerLabelText"] }, { kind: "component", type: CellComponent, selector: "[kendoGridCell]", inputs: ["column", "columns", "columnIndex", "isNew", "isLoading", "isVirtual", "loadingTemplate", "detailTemplate", "item", "rowIndex", "dataItem"] }, { kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "directive", type: TemplateContextDirective, selector: "[templateContext]", inputs: ["templateContext"] }, { kind: "component", type: GroupHeaderComponent, selector: "[kendoGridGroupHeader]", inputs: ["rowIndex", "logicalRowIndex", "item", "skipGroupDecoration", "hasDetails", "totalColumnsCount", "hasGroupHeaderColumn", "groupHeaderColumns", "columns", "groups"] }, { kind: "component", type: IconWrapperComponent, selector: "kendo-icon-wrapper", inputs: ["name", "svgIcon", "innerCssClass", "customFontClass", "size"], exportAs: ["kendoIconWrapper"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: ResizeSensorComponent, selector: "kendo-resize-sensor", inputs: ["rateLimit"], outputs: ["resize"] }] });
23865
+ `, isInline: true, dependencies: [{ kind: "directive", type: LogicalRowDirective, selector: "[kendoGridLogicalRow]", inputs: ["logicalRowIndex", "logicalSlaveRow", "logicalCellsCount", "logicalSlaveCellsCount", "dataRowIndex", "dataItem", "totalColumns"] }, { kind: "directive", type: LogicalCellDirective, selector: "[kendoGridLogicalCell]", inputs: ["logicalColIndex", "logicalRowIndex", "logicalSlaveCell", "colIndex", "colSpan", "rowSpan", "groupItem", "dataRowIndex", "dataItem", "detailExpandCell", "headerLabelText"] }, { kind: "component", type: CellComponent, selector: "[kendoGridCell]", inputs: ["column", "columns", "columnIndex", "isNew", "isLoading", "isVirtual", "loadingTemplate", "detailTemplate", "item", "rowIndex", "dataItem"] }, { kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "directive", type: TemplateContextDirective, selector: "[templateContext]", inputs: ["templateContext"] }, { kind: "component", type: GroupHeaderComponent, selector: "[kendoGridGroupHeader]", inputs: ["rowIndex", "logicalRowIndex", "item", "skipGroupDecoration", "hasDetails", "totalColumnsCount", "hasGroupHeaderColumn", "groupHeaderColumns", "groupingMode", "columns", "groups"] }, { kind: "component", type: IconWrapperComponent, selector: "kendo-icon-wrapper", inputs: ["name", "svgIcon", "innerCssClass", "customFontClass", "size"], exportAs: ["kendoIconWrapper"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: ResizeSensorComponent, selector: "kendo-resize-sensor", inputs: ["rateLimit"], outputs: ["resize"] }] });
23559
23866
  }
23560
23867
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.26", ngImport: i0, type: TableBodyComponent, decorators: [{
23561
23868
  type: Component,
@@ -23572,8 +23879,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.26", ngImpo
23572
23879
  [logicalSlaveCellsCount]="unlockedColumnsCount()"
23573
23880
  [totalColumns]="totalColumns">
23574
23881
  @if (!skipGroupDecoration) {
23575
- @for (g of groups; track $index) {
23576
- <td class="k-group-cell k-table-td k-table-group-td" role="presentation"></td>
23882
+ @if (groupingMode === 'default') {
23883
+ @for (g of groups; track $index) {
23884
+ <td class="k-group-cell k-table-td k-table-group-td" role="presentation"></td>
23885
+ }
23577
23886
  }
23578
23887
  }
23579
23888
  @if (detailTemplate?.templateRef && !isStackedMode) {
@@ -23660,7 +23969,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.26", ngImpo
23660
23969
  [logicalSlaveRow]="lockedColumnsCount > 0 && !isStackedMode"
23661
23970
  [totalColumns]="totalColumns"
23662
23971
  [logicalCellsCount]="columns.length"
23663
- [logicalSlaveCellsCount]="0">
23972
+ [logicalSlaveCellsCount]="0"
23973
+ [groupingMode]="groupingMode">
23664
23974
  </tr>
23665
23975
  }
23666
23976
  @if (item.showDataItem) {
@@ -23686,8 +23996,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.26", ngImpo
23686
23996
  [class.k-selected]="isSelectable({ dataItem: item.data, index: $any(item).index }) && isRowSelected(item)"
23687
23997
  [class.k-highlighted]="item.isHighlighted">
23688
23998
  @if (!skipGroupDecoration) {
23689
- @for (g of groups; track $index) {
23690
- <td class="k-group-cell k-table-td k-table-group-td" role="presentation"></td>
23999
+ @if (groupingMode === 'default') {
24000
+ @for (g of groups; track $index) {
24001
+ <td class="k-group-cell k-table-td k-table-group-td" role="presentation"></td>
24002
+ }
23691
24003
  }
23692
24004
  }
23693
24005
  @if (detailTemplate?.templateRef && !isStackedMode) {
@@ -23737,37 +24049,44 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.26", ngImpo
23737
24049
  } @else {
23738
24050
  @for (column of columns; track virtualColumns ? $index : column; let columnIndex = $index) {
23739
24051
  @if (!item.cells?.[lockedColumnsCount + columnIndex]?.skip) {
23740
- <td
23741
- kendoGridCell
23742
- [rowIndex]="$any(item).index"
23743
- [columnIndex]="lockedColumnsCount + columnIndex"
23744
- [attr.data-kendo-grid-column-index]="lockedColumnsCount + columnIndex"
23745
- [column]="column"
23746
- [columns]="allColumns"
23747
- [dataItem]="item.data"
23748
- [isLoading]="isLoading"
23749
- [isVirtual]="isVirtual"
23750
- [loadingTemplate]="cellLoadingTemplate"
23751
- kendoGridLogicalCell
23752
- [logicalRowIndex]="logicalRowIndex(rowIndex)"
23753
- [logicalColIndex]="logicalColIndex(column)"
23754
- [dataRowIndex]="$any(item).index"
23755
- [dataItem]="item.data"
23756
- [colIndex]="columnIndex"
23757
- [colSpan]="column.colspan"
23758
- [rowSpan]="item.cells[lockedColumnsCount + columnIndex]?.rowspan"
23759
- [attr.role]="column.tableCellsRole"
23760
- class="k-table-td"
23761
- [attr.aria-selected]="lockedColumnsCount < 1 && isSelectable({ dataItem: item.data, index: $any(item).index }) ? isAriaSelected(item, column) : undefined"
23762
- [class.k-grid-content-sticky]="column.sticky"
23763
- [class.k-touch-action-none]="isSelectable({ dataItem: item.data, index: $any(item).index }) && $any(selectable).drag"
23764
- [ngClass]="column.cssClass"
23765
- [class.k-grid-edit-cell]="isEditingCell($any(item).index, column)"
23766
- [ngStyle]="column.sticky ? addStickyColumnStyles(column) : column.style"
23767
- [attr.colspan]="column.colspan"
23768
- [class.k-selected]="isSelectable && cellSelectionService.isCellSelected(item, column)"
23769
- [class.k-highlighted]="item.cells[lockedColumnsCount + columnIndex]?.isHighlighted">
23770
- </td>
24052
+ @if ($any(column).isGroupColumn) {
24053
+ <td class="k-table-group-td k-group-cell k-table-td" role="presentation"
24054
+ [ngStyle]="column.sticky ? addStickyColumnStyles(column) : null"
24055
+ [class.k-grid-content-sticky]="column.sticky"
24056
+ ></td>
24057
+ } @else {
24058
+ <td
24059
+ kendoGridCell
24060
+ [rowIndex]="$any(item).index"
24061
+ [columnIndex]="lockedColumnsCount + columnIndex"
24062
+ [attr.data-kendo-grid-column-index]="lockedColumnsCount + columnIndex"
24063
+ [column]="column"
24064
+ [columns]="allColumns"
24065
+ [dataItem]="item.data"
24066
+ [isLoading]="isLoading"
24067
+ [isVirtual]="isVirtual"
24068
+ [loadingTemplate]="cellLoadingTemplate"
24069
+ kendoGridLogicalCell
24070
+ [logicalRowIndex]="logicalRowIndex(rowIndex)"
24071
+ [logicalColIndex]="logicalColIndex(column)"
24072
+ [dataRowIndex]="$any(item).index"
24073
+ [dataItem]="item.data"
24074
+ [colIndex]="columnIndex"
24075
+ [colSpan]="column.colspan"
24076
+ [rowSpan]="item.cells[lockedColumnsCount + columnIndex]?.rowspan"
24077
+ [attr.role]="column.tableCellsRole"
24078
+ class="k-table-td"
24079
+ [attr.aria-selected]="lockedColumnsCount < 1 && isSelectable({ dataItem: item.data, index: $any(item).index }) ? isAriaSelected(item, column) : undefined"
24080
+ [class.k-grid-content-sticky]="column.sticky"
24081
+ [class.k-touch-action-none]="isSelectable({ dataItem: item.data, index: $any(item).index }) && $any(selectable).drag"
24082
+ [ngClass]="column.cssClass"
24083
+ [class.k-grid-edit-cell]="isEditingCell($any(item).index, column)"
24084
+ [ngStyle]="column.sticky ? addStickyColumnStyles(column) : column.style"
24085
+ [attr.colspan]="column.colspan"
24086
+ [class.k-selected]="isSelectable && cellSelectionService.isCellSelected(item, column)"
24087
+ [class.k-highlighted]="item.cells[lockedColumnsCount + columnIndex]?.isHighlighted">
24088
+ </td>
24089
+ }
23771
24090
  }
23772
24091
  }
23773
24092
  }
@@ -23842,8 +24161,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.26", ngImpo
23842
24161
  [logicalCellsCount]="columns.length"
23843
24162
  [logicalSlaveCellsCount]="unlockedColumnsCount(item)">
23844
24163
  @if (!skipGroupDecoration) {
23845
- @for (g of groups; track $index) {
23846
- <td class="k-group-cell k-table-td k-table-group-td"></td>
24164
+ @if (groupingMode === 'default') {
24165
+ @for (g of groups; track $index) {
24166
+ <td class="k-group-cell k-table-td k-table-group-td"></td>
24167
+ }
23847
24168
  }
23848
24169
  }
23849
24170
  @if (detailTemplate?.templateRef && !isStackedMode) {
@@ -23965,6 +24286,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.26", ngImpo
23965
24286
  type: Input
23966
24287
  }], pinPosition: [{
23967
24288
  type: Input
24289
+ }], groupingMode: [{
24290
+ type: Input
23968
24291
  }], hostClass: [{
23969
24292
  type: HostBinding,
23970
24293
  args: ['class.k-table-tbody']
@@ -24834,8 +25157,8 @@ const packageMetadata = {
24834
25157
  productName: 'Kendo UI for Angular',
24835
25158
  productCode: 'KENDOUIANGULAR',
24836
25159
  productCodes: ['KENDOUIANGULAR'],
24837
- publishDate: 1785493245,
24838
- version: '25.0.0-develop.17',
25160
+ publishDate: 1785503377,
25161
+ version: '25.0.0-develop.19',
24839
25162
  licensingDocsUrl: 'https://www.telerik.com/kendo-angular-ui/my-license/'
24840
25163
  };
24841
25164
 
@@ -25542,6 +25865,67 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.26", ngImpo
25542
25865
  type: Injectable
25543
25866
  }], ctorParameters: () => [{ type: ContextService }, { type: ColumnInfoService }, { type: i0.NgZone }] });
25544
25867
 
25868
+ /**
25869
+ * Represents the column for displaying groups in the 'singleColumn' and 'multipleColumns' grouping modes.
25870
+ *
25871
+ * @hidden
25872
+ */
25873
+ class GroupColumnComponent extends ColumnBase {
25874
+ localization;
25875
+ isGroupColumn = true;
25876
+ groupLevel = -1;
25877
+ includeInChooser = false;
25878
+ dataColumnDisplayTitle;
25879
+ groupingMode;
25880
+ // Not data-bound
25881
+ sortable = false;
25882
+ filterable = false;
25883
+ editable = false;
25884
+ groupable = false;
25885
+ constructor(localization, parent, idService) {
25886
+ super(parent, idService);
25887
+ this.localization = localization;
25888
+ }
25889
+ get displayTitle() {
25890
+ if (this.title) {
25891
+ return this.title;
25892
+ }
25893
+ if (this.groupingMode === 'singleColumn') {
25894
+ return this.localization.get('groupsSingleColumnTitle');
25895
+ }
25896
+ else {
25897
+ return this.dataColumnDisplayTitle;
25898
+ }
25899
+ }
25900
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.26", ngImport: i0, type: GroupColumnComponent, deps: [{ token: i1$2.LocalizationService }, { token: ColumnBase, host: true, optional: true, skipSelf: true }, { token: IdService, optional: true }], target: i0.ɵɵFactoryTarget.Component });
25901
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.26", type: GroupColumnComponent, isStandalone: true, selector: "kendo-grid-group-column", inputs: { sortable: "sortable", filterable: "filterable", editable: "editable", groupable: "groupable" }, providers: [{ provide: ColumnBase, useExisting: forwardRef(() => GroupColumnComponent) }], usesInheritance: true, ngImport: i0, template: ``, isInline: true });
25902
+ }
25903
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.26", ngImport: i0, type: GroupColumnComponent, decorators: [{
25904
+ type: Component,
25905
+ args: [{
25906
+ providers: [{ provide: ColumnBase, useExisting: forwardRef(() => GroupColumnComponent) }],
25907
+ selector: 'kendo-grid-group-column',
25908
+ template: ``,
25909
+ standalone: true
25910
+ }]
25911
+ }], ctorParameters: () => [{ type: i1$2.LocalizationService }, { type: ColumnBase, decorators: [{
25912
+ type: SkipSelf
25913
+ }, {
25914
+ type: Host
25915
+ }, {
25916
+ type: Optional
25917
+ }] }, { type: IdService, decorators: [{
25918
+ type: Optional
25919
+ }] }], propDecorators: { sortable: [{
25920
+ type: Input
25921
+ }], filterable: [{
25922
+ type: Input
25923
+ }], editable: [{
25924
+ type: Input
25925
+ }], groupable: [{
25926
+ type: Input
25927
+ }] } });
25928
+
25545
25929
  /**
25546
25930
  * @hidden
25547
25931
  */
@@ -26374,11 +26758,12 @@ class NavigationMetadata {
26374
26758
  isStacked;
26375
26759
  pinnedTopRowsCount;
26376
26760
  pinnedBottomRowsCount;
26761
+ isColumnsGroupMode;
26377
26762
  get maxLogicalRowIndex() {
26378
26763
  const dataRows = this.hasDetailTemplate ? this.dataRows * 2 : this.dataRows;
26379
26764
  return this.headerRows + this.pinnedTopRowsCount + dataRows + this.pinnedBottomRowsCount + this.footerRow - 1;
26380
26765
  }
26381
- constructor(dataRows, headerRows, isVirtual, hasPager, hasDetailTemplate, gridElement, virtualColumns, columns, footerRow, isStacked, pinnedTopRowsCount = 0, pinnedBottomRowsCount = 0) {
26766
+ constructor(dataRows, headerRows, isVirtual, hasPager, hasDetailTemplate, gridElement, virtualColumns, columns, footerRow, isStacked, pinnedTopRowsCount = 0, pinnedBottomRowsCount = 0, isColumnsGroupMode) {
26382
26767
  this.dataRows = dataRows;
26383
26768
  this.headerRows = headerRows;
26384
26769
  this.isVirtual = isVirtual;
@@ -26391,6 +26776,7 @@ class NavigationMetadata {
26391
26776
  this.isStacked = isStacked;
26392
26777
  this.pinnedTopRowsCount = pinnedTopRowsCount;
26393
26778
  this.pinnedBottomRowsCount = pinnedBottomRowsCount;
26779
+ this.isColumnsGroupMode = isColumnsGroupMode;
26394
26780
  }
26395
26781
  }
26396
26782
 
@@ -27705,6 +28091,14 @@ class TableDirective {
27705
28091
  if (!info.isParentSpan || (info.isParentSpan && info.isLastInSpan)) {
27706
28092
  data = pipe(row('tbody>tr:not(.k-grouping-row):not(.k-grid-norecords)'), cell(info.index), offsetWidth)(dom);
27707
28093
  }
28094
+ if (info.index === -1) {
28095
+ dom.querySelectorAll('tbody>tr.k-grouping-row').forEach((groupRow) => {
28096
+ const groupCell = groupRow.querySelectorAll('td:not(.k-group-cell):not(.k-hierarchy-cell)')[0];
28097
+ if (groupCell) {
28098
+ data = Math.max(data, groupCell.offsetWidth);
28099
+ }
28100
+ });
28101
+ }
27708
28102
  const footer = pipe(row('tfoot>tr'), cell(info.index), offsetWidth)(dom);
27709
28103
  return Math.max(header, data, footer);
27710
28104
  }
@@ -28652,6 +29046,7 @@ class StickyGroupContainerComponent {
28652
29046
  tableWidth;
28653
29047
  lockedWidth;
28654
29048
  isLocked = false;
29049
+ groupingMode = 'default';
28655
29050
  hostClass = true;
28656
29051
  get isBottom() {
28657
29052
  return this.position === 'bottom';
@@ -28904,7 +29299,7 @@ class StickyGroupContainerComponent {
28904
29299
  * Triggers the scroll-to-root-and-toggle flow via the service.
28905
29300
  * The list component handles actual scrolling, toggling, and focus.
28906
29301
  */
28907
- scrollToGroupAndToggle(stickyItem, groupLevel) {
29302
+ scrollToGroupAndToggle(stickyItem, _groupLevel) {
28908
29303
  const groupItem = stickyItem.item;
28909
29304
  const groupIndex = groupItem.index;
28910
29305
  this.stickyGroupsService.pendingFocusGroupIndex = groupIndex;
@@ -29112,7 +29507,7 @@ class StickyGroupContainerComponent {
29112
29507
  }
29113
29508
  }
29114
29509
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.26", ngImport: i0, type: StickyGroupContainerComponent, deps: [{ token: StickyGroupsService }, { token: i0.ChangeDetectorRef }, { token: ContextService }, { token: i0.ElementRef }, { token: NavigationService }, { token: GroupsService }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component });
29115
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.26", type: StickyGroupContainerComponent, isStandalone: true, selector: "[kendoGridStickyGroupContainer]", inputs: { position: "position", columns: "columns", lockedColumns: "lockedColumns", groups: "groups", detailTemplate: "detailTemplate", totalColumnsCount: "totalColumnsCount", hasGroupHeaderColumn: "hasGroupHeaderColumn", groupHeaderColumns: "groupHeaderColumns", tableWidth: "tableWidth", lockedWidth: "lockedWidth", isLocked: "isLocked" }, host: { listeners: { "click": "onContainerClick($event)", "focusin": "onContainerFocusIn($event)", "focusout": "onContainerFocusOut($event)", "keydown": "onContainerKeydown($event)" }, properties: { "class.k-grid-sticky-container": "this.hostClass", "class.k-pos-bottom": "this.isBottom", "attr.role": "this.hostRole" } }, providers: [
29510
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.26", type: StickyGroupContainerComponent, isStandalone: true, selector: "[kendoGridStickyGroupContainer]", inputs: { position: "position", columns: "columns", lockedColumns: "lockedColumns", groups: "groups", detailTemplate: "detailTemplate", totalColumnsCount: "totalColumnsCount", hasGroupHeaderColumn: "hasGroupHeaderColumn", groupHeaderColumns: "groupHeaderColumns", tableWidth: "tableWidth", lockedWidth: "lockedWidth", isLocked: "isLocked", groupingMode: "groupingMode" }, host: { listeners: { "click": "onContainerClick($event)", "focusin": "onContainerFocusIn($event)", "focusout": "onContainerFocusOut($event)", "keydown": "onContainerKeydown($event)" }, properties: { "class.k-grid-sticky-container": "this.hostClass", "class.k-pos-bottom": "this.isBottom", "attr.role": "this.hostRole" } }, providers: [
29116
29511
  { provide: SKIP_CELL_NAVIGATION, useValue: true }
29117
29512
  ], ngImport: i0, template: `
29118
29513
  @if (isLocked) {
@@ -29128,7 +29523,8 @@ class StickyGroupContainerComponent {
29128
29523
  <colgroup kendoGridColGroup
29129
29524
  [groups]="groups"
29130
29525
  [columns]="$any(lockedColumns)"
29131
- [detailTemplate]="detailTemplate">
29526
+ [detailTemplate]="detailTemplate"
29527
+ [groupingMode]="groupingMode">
29132
29528
  </colgroup>
29133
29529
  <tbody class="k-table-tbody" role="presentation">
29134
29530
  @if (position === 'top') {
@@ -29148,7 +29544,8 @@ class StickyGroupContainerComponent {
29148
29544
  [attr.aria-rowindex]="stickyItem.flatIndex + 1"
29149
29545
  [attr.data-group-index]="$any(stickyItem.item).index"
29150
29546
  [attr.data-group-level]="$any(stickyItem.item).level"
29151
- tabindex="-1">
29547
+ tabindex="-1"
29548
+ [groupingMode]="groupingMode">
29152
29549
  </tr>
29153
29550
  }
29154
29551
  }
@@ -29158,8 +29555,10 @@ class StickyGroupContainerComponent {
29158
29555
  class="k-group-footer"
29159
29556
  [attr.aria-rowindex]="stickyItem.flatIndex + 1"
29160
29557
  [attr.data-sticky-row]="rowIdx">
29161
- @for (g of groups; track $index) {
29162
- <td class="k-group-cell k-table-td k-table-group-td" role="presentation"></td>
29558
+ @if (groupingMode === 'default') {
29559
+ @for (g of groups; track $index) {
29560
+ <td class="k-group-cell k-table-td k-table-group-td" role="presentation"></td>
29561
+ }
29163
29562
  }
29164
29563
  @if (detailTemplate?.templateRef) {
29165
29564
  <td class="k-hierarchy-cell k-table-td" role="gridcell"
@@ -29204,7 +29603,8 @@ class StickyGroupContainerComponent {
29204
29603
  <colgroup kendoGridColGroup
29205
29604
  [groups]="isLocked ? [] : groups"
29206
29605
  [columns]="$any(columns)"
29207
- [detailTemplate]="isLocked ? null : detailTemplate">
29606
+ [detailTemplate]="isLocked ? null : detailTemplate"
29607
+ [groupingMode]="groupingMode">
29208
29608
  </colgroup>
29209
29609
  <tbody class="k-table-tbody" role="rowgroup">
29210
29610
  @if (position === 'top') {
@@ -29224,7 +29624,8 @@ class StickyGroupContainerComponent {
29224
29624
  [attr.aria-rowindex]="stickyItem.flatIndex + 1"
29225
29625
  [attr.data-group-index]="$any(stickyItem.item).index"
29226
29626
  [attr.data-group-level]="$any(stickyItem.item).level"
29227
- tabindex="-1">
29627
+ tabindex="-1"
29628
+ [groupingMode]="groupingMode">
29228
29629
  </tr>
29229
29630
  }
29230
29631
  }
@@ -29235,8 +29636,10 @@ class StickyGroupContainerComponent {
29235
29636
  [attr.aria-rowindex]="stickyItem.flatIndex + 1"
29236
29637
  [attr.data-sticky-row]="rowIdx">
29237
29638
  @if (!isLocked) {
29238
- @for (g of groups; track $index) {
29239
- <td class="k-group-cell k-table-td k-table-group-td" role="presentation"></td>
29639
+ @if (groupingMode === 'default') {
29640
+ @for (g of groups; track $index) {
29641
+ <td class="k-group-cell k-table-td k-table-group-td" role="presentation"></td>
29642
+ }
29240
29643
  }
29241
29644
  @if (detailTemplate?.templateRef && !isStacked) {
29242
29645
  <td class="k-hierarchy-cell k-table-td" role="gridcell"
@@ -29291,7 +29694,7 @@ class StickyGroupContainerComponent {
29291
29694
  </tbody>
29292
29695
  </table>
29293
29696
  </div>
29294
- `, isInline: true, dependencies: [{ kind: "component", type: ColGroupComponent, selector: "[kendoGridColGroup]", inputs: ["columns", "groups", "detailTemplate", "sort"] }, { kind: "component", type: GroupHeaderComponent, selector: "[kendoGridGroupHeader]", inputs: ["rowIndex", "logicalRowIndex", "item", "skipGroupDecoration", "hasDetails", "totalColumnsCount", "hasGroupHeaderColumn", "groupHeaderColumns", "columns", "groups"] }, { kind: "directive", type: TemplateContextDirective, selector: "[templateContext]", inputs: ["templateContext"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
29697
+ `, isInline: true, dependencies: [{ kind: "component", type: ColGroupComponent, selector: "[kendoGridColGroup]", inputs: ["columns", "groups", "detailTemplate", "sort", "groupingMode"] }, { kind: "component", type: GroupHeaderComponent, selector: "[kendoGridGroupHeader]", inputs: ["rowIndex", "logicalRowIndex", "item", "skipGroupDecoration", "hasDetails", "totalColumnsCount", "hasGroupHeaderColumn", "groupHeaderColumns", "groupingMode", "columns", "groups"] }, { kind: "directive", type: TemplateContextDirective, selector: "[templateContext]", inputs: ["templateContext"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
29295
29698
  }
29296
29699
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.26", ngImport: i0, type: StickyGroupContainerComponent, decorators: [{
29297
29700
  type: Component,
@@ -29312,7 +29715,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.26", ngImpo
29312
29715
  <colgroup kendoGridColGroup
29313
29716
  [groups]="groups"
29314
29717
  [columns]="$any(lockedColumns)"
29315
- [detailTemplate]="detailTemplate">
29718
+ [detailTemplate]="detailTemplate"
29719
+ [groupingMode]="groupingMode">
29316
29720
  </colgroup>
29317
29721
  <tbody class="k-table-tbody" role="presentation">
29318
29722
  @if (position === 'top') {
@@ -29332,7 +29736,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.26", ngImpo
29332
29736
  [attr.aria-rowindex]="stickyItem.flatIndex + 1"
29333
29737
  [attr.data-group-index]="$any(stickyItem.item).index"
29334
29738
  [attr.data-group-level]="$any(stickyItem.item).level"
29335
- tabindex="-1">
29739
+ tabindex="-1"
29740
+ [groupingMode]="groupingMode">
29336
29741
  </tr>
29337
29742
  }
29338
29743
  }
@@ -29342,8 +29747,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.26", ngImpo
29342
29747
  class="k-group-footer"
29343
29748
  [attr.aria-rowindex]="stickyItem.flatIndex + 1"
29344
29749
  [attr.data-sticky-row]="rowIdx">
29345
- @for (g of groups; track $index) {
29346
- <td class="k-group-cell k-table-td k-table-group-td" role="presentation"></td>
29750
+ @if (groupingMode === 'default') {
29751
+ @for (g of groups; track $index) {
29752
+ <td class="k-group-cell k-table-td k-table-group-td" role="presentation"></td>
29753
+ }
29347
29754
  }
29348
29755
  @if (detailTemplate?.templateRef) {
29349
29756
  <td class="k-hierarchy-cell k-table-td" role="gridcell"
@@ -29388,7 +29795,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.26", ngImpo
29388
29795
  <colgroup kendoGridColGroup
29389
29796
  [groups]="isLocked ? [] : groups"
29390
29797
  [columns]="$any(columns)"
29391
- [detailTemplate]="isLocked ? null : detailTemplate">
29798
+ [detailTemplate]="isLocked ? null : detailTemplate"
29799
+ [groupingMode]="groupingMode">
29392
29800
  </colgroup>
29393
29801
  <tbody class="k-table-tbody" role="rowgroup">
29394
29802
  @if (position === 'top') {
@@ -29408,7 +29816,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.26", ngImpo
29408
29816
  [attr.aria-rowindex]="stickyItem.flatIndex + 1"
29409
29817
  [attr.data-group-index]="$any(stickyItem.item).index"
29410
29818
  [attr.data-group-level]="$any(stickyItem.item).level"
29411
- tabindex="-1">
29819
+ tabindex="-1"
29820
+ [groupingMode]="groupingMode">
29412
29821
  </tr>
29413
29822
  }
29414
29823
  }
@@ -29419,8 +29828,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.26", ngImpo
29419
29828
  [attr.aria-rowindex]="stickyItem.flatIndex + 1"
29420
29829
  [attr.data-sticky-row]="rowIdx">
29421
29830
  @if (!isLocked) {
29422
- @for (g of groups; track $index) {
29423
- <td class="k-group-cell k-table-td k-table-group-td" role="presentation"></td>
29831
+ @if (groupingMode === 'default') {
29832
+ @for (g of groups; track $index) {
29833
+ <td class="k-group-cell k-table-td k-table-group-td" role="presentation"></td>
29834
+ }
29424
29835
  }
29425
29836
  @if (detailTemplate?.templateRef && !isStacked) {
29426
29837
  <td class="k-hierarchy-cell k-table-td" role="gridcell"
@@ -29508,6 +29919,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.26", ngImpo
29508
29919
  type: Input
29509
29920
  }], isLocked: [{
29510
29921
  type: Input
29922
+ }], groupingMode: [{
29923
+ type: Input
29511
29924
  }], hostClass: [{
29512
29925
  type: HostBinding,
29513
29926
  args: ['class.k-grid-sticky-container']
@@ -29622,6 +30035,7 @@ class ListComponent {
29622
30035
  loadingTemplate;
29623
30036
  sort = new Array();
29624
30037
  size;
30038
+ groupingMode = 'default';
29625
30039
  contentScroll = new EventEmitter();
29626
30040
  pageChange = new EventEmitter();
29627
30041
  scrollBottom = new EventEmitter();
@@ -29687,7 +30101,9 @@ class ListComponent {
29687
30101
  return this.columns.leafColumnsToRender;
29688
30102
  }
29689
30103
  get lockedWidth() {
29690
- const groupCellsWidth = this.groups.length * GROUP_CELL_WIDTH;
30104
+ const groupCellsWidth = this.groupingMode === 'default'
30105
+ ? this.groups.length * GROUP_CELL_WIDTH
30106
+ : 0;
29691
30107
  return expandColumns(this.lockedLeafColumns.toArray()).reduce((prev, curr) => prev + (curr.width || 0), groupCellsWidth);
29692
30108
  }
29693
30109
  get nonLockedWidth() {
@@ -30817,7 +31233,10 @@ class ListComponent {
30817
31233
  for (let idx = 0; idx < column; idx++) {
30818
31234
  offset += columns[idx].width || 0;
30819
31235
  }
30820
- const startOffset = this.lockedLeafColumns.length ? 0 : this.groups.length * GROUP_CELL_WIDTH + (this.detailTemplate && column > 0 ? GROUP_CELL_WIDTH : 0);
31236
+ const groupOffset = this.groupingMode === 'default'
31237
+ ? this.groups.length * GROUP_CELL_WIDTH
31238
+ : 0;
31239
+ const startOffset = this.lockedLeafColumns.length ? 0 : groupOffset + (this.detailTemplate && column > 0 ? GROUP_CELL_WIDTH : 0);
30821
31240
  this.container.nativeElement.scrollLeft = this.normalizeScrollLeft(offset + startOffset);
30822
31241
  }
30823
31242
  else if (column === 0 && this.detailTemplate) {
@@ -30963,7 +31382,7 @@ class ListComponent {
30963
31382
  this.scroller.total = this.isVirtual && !this.ctx.grid?.pageable ? this.total : this.allItems.length;
30964
31383
  }
30965
31384
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.26", ngImport: i0, type: ListComponent, deps: [{ token: SCROLLER_FACTORY_TOKEN }, { token: DetailsService }, { token: ChangeNotificationService }, { token: SuspendService }, { token: GroupsService }, { token: i0.NgZone }, { token: i0.Renderer2 }, { token: ScrollSyncService }, { token: ResizeService }, { token: EditService }, { token: i1$3.ScrollbarService }, { token: NavigationService }, { token: ScrollRequestService }, { token: ContextService }, { token: ColumnResizingService }, { token: i0.ChangeDetectorRef }, { token: PDFService }, { token: ColumnInfoService }, { token: DataMappingService }, { token: StickyGroupsService }], target: i0.ɵɵFactoryTarget.Component });
30966
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.26", type: ListComponent, isStandalone: true, selector: "kendo-grid-list", inputs: { data: "data", groups: "groups", total: "total", rowHeight: "rowHeight", detailRowHeight: "detailRowHeight", take: "take", skip: "skip", columns: "columns", detailTemplate: "detailTemplate", noRecordsTemplate: "noRecordsTemplate", selectable: "selectable", groupable: "groupable", filterable: "filterable", rowClass: "rowClass", rowSticky: "rowSticky", loading: "loading", trackBy: "trackBy", virtualColumns: "virtualColumns", isVirtual: "isVirtual", cellLoadingTemplate: "cellLoadingTemplate", loadingTemplate: "loadingTemplate", sort: "sort", size: "size" }, outputs: { contentScroll: "contentScroll", pageChange: "pageChange", scrollBottom: "scrollBottom" }, host: { properties: { "class.k-grid-container": "this.hostClass", "attr.role": "this.hostRole" } }, providers: [
31385
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.26", type: ListComponent, isStandalone: true, selector: "kendo-grid-list", inputs: { data: "data", groups: "groups", total: "total", rowHeight: "rowHeight", detailRowHeight: "detailRowHeight", take: "take", skip: "skip", columns: "columns", detailTemplate: "detailTemplate", noRecordsTemplate: "noRecordsTemplate", selectable: "selectable", groupable: "groupable", filterable: "filterable", rowClass: "rowClass", rowSticky: "rowSticky", loading: "loading", trackBy: "trackBy", virtualColumns: "virtualColumns", isVirtual: "isVirtual", cellLoadingTemplate: "cellLoadingTemplate", loadingTemplate: "loadingTemplate", sort: "sort", size: "size", groupingMode: "groupingMode" }, outputs: { contentScroll: "contentScroll", pageChange: "pageChange", scrollBottom: "scrollBottom" }, host: { properties: { "class.k-grid-container": "this.hostClass", "attr.role": "this.hostRole" } }, providers: [
30967
31386
  {
30968
31387
  provide: SCROLLER_FACTORY_TOKEN,
30969
31388
  useValue: DEFAULT_SCROLLER_FACTORY
@@ -30982,7 +31401,8 @@ class ListComponent {
30982
31401
  [groupHeaderColumns]="stickyGroupHeaderColumns"
30983
31402
  [tableWidth]="nonLockedWidth"
30984
31403
  [lockedWidth]="lockedWidth"
30985
- [isLocked]="isLocked">
31404
+ [isLocked]="isLocked"
31405
+ [groupingMode]="groupingMode">
30986
31406
  </div>
30987
31407
  }
30988
31408
  @if (isLocked && !isStacked) {
@@ -31010,7 +31430,8 @@ class ListComponent {
31010
31430
  [groups]="groups"
31011
31431
  [columns]="$any(lockedLeafColumns)"
31012
31432
  [detailTemplate]="detailTemplate"
31013
- [sort]="sort">
31433
+ [sort]="sort"
31434
+ [groupingMode]="groupingMode">
31014
31435
  </colgroup>
31015
31436
  <tbody kendoGridTableBody
31016
31437
  role="presentation"
@@ -31031,7 +31452,8 @@ class ListComponent {
31031
31452
  [rowClass]="rowClass"
31032
31453
  [isLoading]="loading"
31033
31454
  [isVirtual]="isVirtual"
31034
- [cellLoadingTemplate]="cellLoadingTemplate">
31455
+ [cellLoadingTemplate]="cellLoadingTemplate"
31456
+ [groupingMode]="groupingMode">
31035
31457
  </tbody>
31036
31458
  </table>
31037
31459
  <kendo-resize-sensor></kendo-resize-sensor>
@@ -31064,7 +31486,8 @@ class ListComponent {
31064
31486
  [groups]="isLocked ? [] : groups"
31065
31487
  [columns]="$any(nonLockedColumnsToRender)"
31066
31488
  [detailTemplate]="detailTemplate"
31067
- [sort]="sort">
31489
+ [sort]="sort"
31490
+ [groupingMode]="groupingMode">
31068
31491
  </colgroup>
31069
31492
  <tbody kendoGridTableBody
31070
31493
  role="rowgroup"
@@ -31089,7 +31512,8 @@ class ListComponent {
31089
31512
  [isVirtual]="isVirtual"
31090
31513
  [cellLoadingTemplate]="cellLoadingTemplate"
31091
31514
  [rowHeight]="rowHeight"
31092
- [detailRowHeight]="detailRowHeight">
31515
+ [detailRowHeight]="detailRowHeight"
31516
+ [groupingMode]="groupingMode">
31093
31517
  </tbody>
31094
31518
  </table>
31095
31519
  @if (isLocked) {
@@ -31123,10 +31547,11 @@ class ListComponent {
31123
31547
  [groupHeaderColumns]="stickyGroupHeaderColumns"
31124
31548
  [tableWidth]="nonLockedWidth"
31125
31549
  [lockedWidth]="lockedWidth"
31126
- [isLocked]="isLocked">
31550
+ [isLocked]="isLocked"
31551
+ [groupingMode]="groupingMode">
31127
31552
  </div>
31128
31553
  }
31129
- `, isInline: true, dependencies: [{ kind: "directive", type: EventsOutsideAngularDirective, selector: "[kendoEventsOutsideAngular]", inputs: ["kendoEventsOutsideAngular", "scope"] }, { 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: TableBodyComponent, selector: "[kendoGridTableBody]", inputs: ["columns", "allColumns", "groups", "detailTemplate", "noRecordsTemplate", "rowsToRender", "skip", "selectable", "filterable", "noRecordsText", "isLocked", "isLoading", "isVirtual", "cellLoadingTemplate", "skipGroupDecoration", "lockedColumnsCount", "totalColumnsCount", "virtualColumns", "trackBy", "rowSticky", "totalColumns", "rowClass", "rowHeight", "detailRowHeight", "isPinContainer", "pinPosition"] }, { kind: "component", type: ResizeSensorComponent, selector: "kendo-resize-sensor", inputs: ["rateLimit"], outputs: ["resize"] }, { kind: "directive", type: ResizableContainerDirective, selector: "[kendoGridResizableContainer]", inputs: ["lockedWidth", "kendoGridResizableContainer"] }, { kind: "component", type: StickyGroupContainerComponent, selector: "[kendoGridStickyGroupContainer]", inputs: ["position", "columns", "lockedColumns", "groups", "detailTemplate", "totalColumnsCount", "hasGroupHeaderColumn", "groupHeaderColumns", "tableWidth", "lockedWidth", "isLocked"] }], changeDetection: i0.ChangeDetectionStrategy.Default });
31554
+ `, isInline: true, dependencies: [{ kind: "directive", type: EventsOutsideAngularDirective, selector: "[kendoEventsOutsideAngular]", inputs: ["kendoEventsOutsideAngular", "scope"] }, { 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", "groupingMode"] }, { kind: "component", type: TableBodyComponent, selector: "[kendoGridTableBody]", inputs: ["columns", "allColumns", "groups", "detailTemplate", "noRecordsTemplate", "rowsToRender", "skip", "selectable", "filterable", "noRecordsText", "isLocked", "isLoading", "isVirtual", "cellLoadingTemplate", "skipGroupDecoration", "lockedColumnsCount", "totalColumnsCount", "virtualColumns", "trackBy", "rowSticky", "totalColumns", "rowClass", "rowHeight", "detailRowHeight", "isPinContainer", "pinPosition", "groupingMode"] }, { kind: "component", type: ResizeSensorComponent, selector: "kendo-resize-sensor", inputs: ["rateLimit"], outputs: ["resize"] }, { kind: "directive", type: ResizableContainerDirective, selector: "[kendoGridResizableContainer]", inputs: ["lockedWidth", "kendoGridResizableContainer"] }, { kind: "component", type: StickyGroupContainerComponent, selector: "[kendoGridStickyGroupContainer]", inputs: ["position", "columns", "lockedColumns", "groups", "detailTemplate", "totalColumnsCount", "hasGroupHeaderColumn", "groupHeaderColumns", "tableWidth", "lockedWidth", "isLocked", "groupingMode"] }], changeDetection: i0.ChangeDetectionStrategy.Default });
31130
31555
  }
31131
31556
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.26", ngImport: i0, type: ListComponent, decorators: [{
31132
31557
  type: Component,
@@ -31153,7 +31578,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.26", ngImpo
31153
31578
  [groupHeaderColumns]="stickyGroupHeaderColumns"
31154
31579
  [tableWidth]="nonLockedWidth"
31155
31580
  [lockedWidth]="lockedWidth"
31156
- [isLocked]="isLocked">
31581
+ [isLocked]="isLocked"
31582
+ [groupingMode]="groupingMode">
31157
31583
  </div>
31158
31584
  }
31159
31585
  @if (isLocked && !isStacked) {
@@ -31181,7 +31607,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.26", ngImpo
31181
31607
  [groups]="groups"
31182
31608
  [columns]="$any(lockedLeafColumns)"
31183
31609
  [detailTemplate]="detailTemplate"
31184
- [sort]="sort">
31610
+ [sort]="sort"
31611
+ [groupingMode]="groupingMode">
31185
31612
  </colgroup>
31186
31613
  <tbody kendoGridTableBody
31187
31614
  role="presentation"
@@ -31202,7 +31629,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.26", ngImpo
31202
31629
  [rowClass]="rowClass"
31203
31630
  [isLoading]="loading"
31204
31631
  [isVirtual]="isVirtual"
31205
- [cellLoadingTemplate]="cellLoadingTemplate">
31632
+ [cellLoadingTemplate]="cellLoadingTemplate"
31633
+ [groupingMode]="groupingMode">
31206
31634
  </tbody>
31207
31635
  </table>
31208
31636
  <kendo-resize-sensor></kendo-resize-sensor>
@@ -31235,7 +31663,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.26", ngImpo
31235
31663
  [groups]="isLocked ? [] : groups"
31236
31664
  [columns]="$any(nonLockedColumnsToRender)"
31237
31665
  [detailTemplate]="detailTemplate"
31238
- [sort]="sort">
31666
+ [sort]="sort"
31667
+ [groupingMode]="groupingMode">
31239
31668
  </colgroup>
31240
31669
  <tbody kendoGridTableBody
31241
31670
  role="rowgroup"
@@ -31260,7 +31689,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.26", ngImpo
31260
31689
  [isVirtual]="isVirtual"
31261
31690
  [cellLoadingTemplate]="cellLoadingTemplate"
31262
31691
  [rowHeight]="rowHeight"
31263
- [detailRowHeight]="detailRowHeight">
31692
+ [detailRowHeight]="detailRowHeight"
31693
+ [groupingMode]="groupingMode">
31264
31694
  </tbody>
31265
31695
  </table>
31266
31696
  @if (isLocked) {
@@ -31294,7 +31724,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.26", ngImpo
31294
31724
  [groupHeaderColumns]="stickyGroupHeaderColumns"
31295
31725
  [tableWidth]="nonLockedWidth"
31296
31726
  [lockedWidth]="lockedWidth"
31297
- [isLocked]="isLocked">
31727
+ [isLocked]="isLocked"
31728
+ [groupingMode]="groupingMode">
31298
31729
  </div>
31299
31730
  }
31300
31731
  `,
@@ -31356,6 +31787,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.26", ngImpo
31356
31787
  type: Input
31357
31788
  }], size: [{
31358
31789
  type: Input
31790
+ }], groupingMode: [{
31791
+ type: Input
31359
31792
  }], contentScroll: [{
31360
31793
  type: Output
31361
31794
  }], pageChange: [{
@@ -32264,8 +32697,12 @@ class GridMessages extends ComponentMessages {
32264
32697
  * Sets the label for the Grid row unpin column icon.
32265
32698
  */
32266
32699
  rowUnpinLabel;
32700
+ /**
32701
+ * Sets the text for the group column's header when group mode is **singleColumn**.
32702
+ */
32703
+ groupsSingleColumnTitle;
32267
32704
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.26", ngImport: i0, type: GridMessages, deps: null, target: i0.ɵɵFactoryTarget.Directive });
32268
- static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "20.3.26", type: GridMessages, isStandalone: true, selector: "kendo-grid-messages-base", inputs: { groupPanelEmpty: "groupPanelEmpty", noRecords: "noRecords", pagerLabel: "pagerLabel", pagerFirstPage: "pagerFirstPage", pagerLastPage: "pagerLastPage", pagerPreviousPage: "pagerPreviousPage", pagerNextPage: "pagerNextPage", pagerPage: "pagerPage", pagerItemsPerPage: "pagerItemsPerPage", pagerOf: "pagerOf", pagerItems: "pagerItems", pagerPageNumberInputTitle: "pagerPageNumberInputTitle", pagerInputLabel: "pagerInputLabel", pagerSelectPage: "pagerSelectPage", filter: "filter", filterInputLabel: "filterInputLabel", filterMenuTitle: "filterMenuTitle", filterMenuOperatorsDropDownLabel: "filterMenuOperatorsDropDownLabel", filterMenuLogicDropDownLabel: "filterMenuLogicDropDownLabel", filterCellOperatorLabel: "filterCellOperatorLabel", booleanFilterCellLabel: "booleanFilterCellLabel", aiAssistantApplyButtonText: "aiAssistantApplyButtonText", aiAssistantToolbarToolText: "aiAssistantToolbarToolText", aiAssistantWindowTitle: "aiAssistantWindowTitle", aiAssistantWindowCloseTitle: "aiAssistantWindowCloseTitle", aiAssistantOutputCardTitle: "aiAssistantOutputCardTitle", aiAssistantOutputCardBodyContent: "aiAssistantOutputCardBodyContent", aiAssistantSelectionNotEnabled: "aiAssistantSelectionNotEnabled", aiAssistantSelectionRowModeRequired: "aiAssistantSelectionRowModeRequired", aiAssistantSelectionCellModeRequired: "aiAssistantSelectionCellModeRequired", aiAssistantWindowMaximizeTitle: "aiAssistantWindowMaximizeTitle", aiAssistantWindowMinimizeTitle: "aiAssistantWindowMinimizeTitle", aiAssistantWindowRestoreTitle: "aiAssistantWindowRestoreTitle", filterEqOperator: "filterEqOperator", filterNotEqOperator: "filterNotEqOperator", filterIsNullOperator: "filterIsNullOperator", filterIsNotNullOperator: "filterIsNotNullOperator", filterIsEmptyOperator: "filterIsEmptyOperator", filterIsNotEmptyOperator: "filterIsNotEmptyOperator", filterStartsWithOperator: "filterStartsWithOperator", filterContainsOperator: "filterContainsOperator", filterNotContainsOperator: "filterNotContainsOperator", filterEndsWithOperator: "filterEndsWithOperator", filterGteOperator: "filterGteOperator", filterGtOperator: "filterGtOperator", filterLteOperator: "filterLteOperator", filterLtOperator: "filterLtOperator", filterIsTrue: "filterIsTrue", filterIsFalse: "filterIsFalse", filterBooleanAll: "filterBooleanAll", adaptiveFilterOperatorsTitle: "adaptiveFilterOperatorsTitle", filterAfterOrEqualOperator: "filterAfterOrEqualOperator", filterAfterOperator: "filterAfterOperator", filterBeforeOperator: "filterBeforeOperator", filterBeforeOrEqualOperator: "filterBeforeOrEqualOperator", filterFilterButton: "filterFilterButton", filterClearButton: "filterClearButton", adaptiveCloseButtonTitle: "adaptiveCloseButtonTitle", adaptiveBackButtonTitle: "adaptiveBackButtonTitle", filterAndLogic: "filterAndLogic", filterOrLogic: "filterOrLogic", filterToolbarToolText: "filterToolbarToolText", loading: "loading", gridLabel: "gridLabel", columnMenu: "columnMenu", setColumnPosition: "setColumnPosition", columns: "columns", columnChooserSelectAll: "columnChooserSelectAll", columnChooserSearchLabel: "columnChooserSearchLabel", columnChooserSelectedColumnsCount: "columnChooserSelectedColumnsCount", columnsSubtitle: "columnsSubtitle", adaptiveFilterTitle: "adaptiveFilterTitle", adaptiveSortTitle: "adaptiveSortTitle", adaptiveGroupTitle: "adaptiveGroupTitle", filterClearAllButton: "filterClearAllButton", groupClearButton: "groupClearButton", sortClearButton: "sortClearButton", sortDoneButton: "sortDoneButton", groupDoneButton: "groupDoneButton", lock: "lock", unlock: "unlock", stick: "stick", unstick: "unstick", sortable: "sortable", sortAscending: "sortAscending", sortDescending: "sortDescending", autosizeThisColumn: "autosizeThisColumn", autosizeAllColumns: "autosizeAllColumns", sortedAscending: "sortedAscending", sortedDescending: "sortedDescending", sortedDefault: "sortedDefault", sortToolbarToolText: "sortToolbarToolText", columnsApply: "columnsApply", columnsReset: "columnsReset", detailExpand: "detailExpand", detailCollapse: "detailCollapse", filterDateToday: "filterDateToday", filterDateToggle: "filterDateToggle", filterNumericDecrement: "filterNumericDecrement", filterNumericIncrement: "filterNumericIncrement", selectionCheckboxLabel: "selectionCheckboxLabel", selectAllCheckboxLabel: "selectAllCheckboxLabel", checkboxColumnHeaderLabel: "checkboxColumnHeaderLabel", groupCollapse: "groupCollapse", groupExpand: "groupExpand", topToolbarLabel: "topToolbarLabel", bottomToolbarLabel: "bottomToolbarLabel", editToolbarToolText: "editToolbarToolText", saveToolbarToolText: "saveToolbarToolText", addToolbarToolText: "addToolbarToolText", cancelToolbarToolText: "cancelToolbarToolText", removeToolbarToolText: "removeToolbarToolText", excelExportToolbarToolText: "excelExportToolbarToolText", csvExportToolbarToolText: "csvExportToolbarToolText", pdfExportToolbarToolText: "pdfExportToolbarToolText", groupPanelLabel: "groupPanelLabel", dragRowHandleLabel: "dragRowHandleLabel", columnMenuFilterTabTitle: "columnMenuFilterTabTitle", columnMenuGeneralTabTitle: "columnMenuGeneralTabTitle", columnMenuColumnsTabTitle: "columnMenuColumnsTabTitle", groupChipMenuPrevious: "groupChipMenuPrevious", groupChipMenuNext: "groupChipMenuNext", groupToolbarToolText: "groupToolbarToolText", formValidationErrorText: "formValidationErrorText", removeConfirmationDialogTitle: "removeConfirmationDialogTitle", removeConfirmationDialogContent: "removeConfirmationDialogContent", removeConfirmationDialogConfirmText: "removeConfirmationDialogConfirmText", removeConfirmationDialogRejectText: "removeConfirmationDialogRejectText", externalEditingTitle: "externalEditingTitle", externalEditingAddTitle: "externalEditingAddTitle", externalEditingSaveText: "externalEditingSaveText", externalEditingCancelText: "externalEditingCancelText", multiCheckboxFilterSearchPlaceholder: "multiCheckboxFilterSearchPlaceholder", multiCheckboxFilterSelectAllLabel: "multiCheckboxFilterSelectAllLabel", multiCheckboxFilterSelectedItemsCount: "multiCheckboxFilterSelectedItemsCount", smartBoxSpeechToTextButton: "smartBoxSpeechToTextButton", smartBoxSubmitPromptButton: "smartBoxSubmitPromptButton", smartBoxSearchPlaceholder: "smartBoxSearchPlaceholder", smartBoxSemanticSearchPlaceholder: "smartBoxSemanticSearchPlaceholder", smartBoxAIAssistantPlaceholder: "smartBoxAIAssistantPlaceholder", smartBoxSuggestedPrompts: "smartBoxSuggestedPrompts", smartBoxNoPreviousSearches: "smartBoxNoPreviousSearches", smartBoxNoPreviousPrompts: "smartBoxNoPreviousPrompts", smartBoxPreviouslySearched: "smartBoxPreviouslySearched", smartBoxPreviouslyAsked: "smartBoxPreviouslyAsked", searchModeListItemText: "searchModeListItemText", searchModeListItemDescription: "searchModeListItemDescription", semanticSearchModeListItemText: "semanticSearchModeListItemText", semanticSearchModeListItemDescription: "semanticSearchModeListItemDescription", smartBoxSearchModePopupButton: "smartBoxSearchModePopupButton", smartBoxAIAssistantModePopupButton: "smartBoxAIAssistantModePopupButton", detailColumnHeaderLabel: "detailColumnHeaderLabel", dragColumnHeaderLabel: "dragColumnHeaderLabel", commandColumnHeaderLabel: "commandColumnHeaderLabel", pinnedTopRowsLabel: "pinnedTopRowsLabel", pinnedBottomRowsLabel: "pinnedBottomRowsLabel", pinMenuPinToTopText: "pinMenuPinToTopText", pinMenuPinToBottomText: "pinMenuPinToBottomText", pinMenuUnpinText: "pinMenuUnpinText", pinColumnHeaderLabel: "pinColumnHeaderLabel", rowPinLabel: "rowPinLabel", rowUnpinLabel: "rowUnpinLabel" }, usesInheritance: true, ngImport: i0 });
32705
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "20.3.26", type: GridMessages, isStandalone: true, selector: "kendo-grid-messages-base", inputs: { groupPanelEmpty: "groupPanelEmpty", noRecords: "noRecords", pagerLabel: "pagerLabel", pagerFirstPage: "pagerFirstPage", pagerLastPage: "pagerLastPage", pagerPreviousPage: "pagerPreviousPage", pagerNextPage: "pagerNextPage", pagerPage: "pagerPage", pagerItemsPerPage: "pagerItemsPerPage", pagerOf: "pagerOf", pagerItems: "pagerItems", pagerPageNumberInputTitle: "pagerPageNumberInputTitle", pagerInputLabel: "pagerInputLabel", pagerSelectPage: "pagerSelectPage", filter: "filter", filterInputLabel: "filterInputLabel", filterMenuTitle: "filterMenuTitle", filterMenuOperatorsDropDownLabel: "filterMenuOperatorsDropDownLabel", filterMenuLogicDropDownLabel: "filterMenuLogicDropDownLabel", filterCellOperatorLabel: "filterCellOperatorLabel", booleanFilterCellLabel: "booleanFilterCellLabel", aiAssistantApplyButtonText: "aiAssistantApplyButtonText", aiAssistantToolbarToolText: "aiAssistantToolbarToolText", aiAssistantWindowTitle: "aiAssistantWindowTitle", aiAssistantWindowCloseTitle: "aiAssistantWindowCloseTitle", aiAssistantOutputCardTitle: "aiAssistantOutputCardTitle", aiAssistantOutputCardBodyContent: "aiAssistantOutputCardBodyContent", aiAssistantSelectionNotEnabled: "aiAssistantSelectionNotEnabled", aiAssistantSelectionRowModeRequired: "aiAssistantSelectionRowModeRequired", aiAssistantSelectionCellModeRequired: "aiAssistantSelectionCellModeRequired", aiAssistantWindowMaximizeTitle: "aiAssistantWindowMaximizeTitle", aiAssistantWindowMinimizeTitle: "aiAssistantWindowMinimizeTitle", aiAssistantWindowRestoreTitle: "aiAssistantWindowRestoreTitle", filterEqOperator: "filterEqOperator", filterNotEqOperator: "filterNotEqOperator", filterIsNullOperator: "filterIsNullOperator", filterIsNotNullOperator: "filterIsNotNullOperator", filterIsEmptyOperator: "filterIsEmptyOperator", filterIsNotEmptyOperator: "filterIsNotEmptyOperator", filterStartsWithOperator: "filterStartsWithOperator", filterContainsOperator: "filterContainsOperator", filterNotContainsOperator: "filterNotContainsOperator", filterEndsWithOperator: "filterEndsWithOperator", filterGteOperator: "filterGteOperator", filterGtOperator: "filterGtOperator", filterLteOperator: "filterLteOperator", filterLtOperator: "filterLtOperator", filterIsTrue: "filterIsTrue", filterIsFalse: "filterIsFalse", filterBooleanAll: "filterBooleanAll", adaptiveFilterOperatorsTitle: "adaptiveFilterOperatorsTitle", filterAfterOrEqualOperator: "filterAfterOrEqualOperator", filterAfterOperator: "filterAfterOperator", filterBeforeOperator: "filterBeforeOperator", filterBeforeOrEqualOperator: "filterBeforeOrEqualOperator", filterFilterButton: "filterFilterButton", filterClearButton: "filterClearButton", adaptiveCloseButtonTitle: "adaptiveCloseButtonTitle", adaptiveBackButtonTitle: "adaptiveBackButtonTitle", filterAndLogic: "filterAndLogic", filterOrLogic: "filterOrLogic", filterToolbarToolText: "filterToolbarToolText", loading: "loading", gridLabel: "gridLabel", columnMenu: "columnMenu", setColumnPosition: "setColumnPosition", columns: "columns", columnChooserSelectAll: "columnChooserSelectAll", columnChooserSearchLabel: "columnChooserSearchLabel", columnChooserSelectedColumnsCount: "columnChooserSelectedColumnsCount", columnsSubtitle: "columnsSubtitle", adaptiveFilterTitle: "adaptiveFilterTitle", adaptiveSortTitle: "adaptiveSortTitle", adaptiveGroupTitle: "adaptiveGroupTitle", filterClearAllButton: "filterClearAllButton", groupClearButton: "groupClearButton", sortClearButton: "sortClearButton", sortDoneButton: "sortDoneButton", groupDoneButton: "groupDoneButton", lock: "lock", unlock: "unlock", stick: "stick", unstick: "unstick", sortable: "sortable", sortAscending: "sortAscending", sortDescending: "sortDescending", autosizeThisColumn: "autosizeThisColumn", autosizeAllColumns: "autosizeAllColumns", sortedAscending: "sortedAscending", sortedDescending: "sortedDescending", sortedDefault: "sortedDefault", sortToolbarToolText: "sortToolbarToolText", columnsApply: "columnsApply", columnsReset: "columnsReset", detailExpand: "detailExpand", detailCollapse: "detailCollapse", filterDateToday: "filterDateToday", filterDateToggle: "filterDateToggle", filterNumericDecrement: "filterNumericDecrement", filterNumericIncrement: "filterNumericIncrement", selectionCheckboxLabel: "selectionCheckboxLabel", selectAllCheckboxLabel: "selectAllCheckboxLabel", checkboxColumnHeaderLabel: "checkboxColumnHeaderLabel", groupCollapse: "groupCollapse", groupExpand: "groupExpand", topToolbarLabel: "topToolbarLabel", bottomToolbarLabel: "bottomToolbarLabel", editToolbarToolText: "editToolbarToolText", saveToolbarToolText: "saveToolbarToolText", addToolbarToolText: "addToolbarToolText", cancelToolbarToolText: "cancelToolbarToolText", removeToolbarToolText: "removeToolbarToolText", excelExportToolbarToolText: "excelExportToolbarToolText", csvExportToolbarToolText: "csvExportToolbarToolText", pdfExportToolbarToolText: "pdfExportToolbarToolText", groupPanelLabel: "groupPanelLabel", dragRowHandleLabel: "dragRowHandleLabel", columnMenuFilterTabTitle: "columnMenuFilterTabTitle", columnMenuGeneralTabTitle: "columnMenuGeneralTabTitle", columnMenuColumnsTabTitle: "columnMenuColumnsTabTitle", groupChipMenuPrevious: "groupChipMenuPrevious", groupChipMenuNext: "groupChipMenuNext", groupToolbarToolText: "groupToolbarToolText", formValidationErrorText: "formValidationErrorText", removeConfirmationDialogTitle: "removeConfirmationDialogTitle", removeConfirmationDialogContent: "removeConfirmationDialogContent", removeConfirmationDialogConfirmText: "removeConfirmationDialogConfirmText", removeConfirmationDialogRejectText: "removeConfirmationDialogRejectText", externalEditingTitle: "externalEditingTitle", externalEditingAddTitle: "externalEditingAddTitle", externalEditingSaveText: "externalEditingSaveText", externalEditingCancelText: "externalEditingCancelText", multiCheckboxFilterSearchPlaceholder: "multiCheckboxFilterSearchPlaceholder", multiCheckboxFilterSelectAllLabel: "multiCheckboxFilterSelectAllLabel", multiCheckboxFilterSelectedItemsCount: "multiCheckboxFilterSelectedItemsCount", smartBoxSpeechToTextButton: "smartBoxSpeechToTextButton", smartBoxSubmitPromptButton: "smartBoxSubmitPromptButton", smartBoxSearchPlaceholder: "smartBoxSearchPlaceholder", smartBoxSemanticSearchPlaceholder: "smartBoxSemanticSearchPlaceholder", smartBoxAIAssistantPlaceholder: "smartBoxAIAssistantPlaceholder", smartBoxSuggestedPrompts: "smartBoxSuggestedPrompts", smartBoxNoPreviousSearches: "smartBoxNoPreviousSearches", smartBoxNoPreviousPrompts: "smartBoxNoPreviousPrompts", smartBoxPreviouslySearched: "smartBoxPreviouslySearched", smartBoxPreviouslyAsked: "smartBoxPreviouslyAsked", searchModeListItemText: "searchModeListItemText", searchModeListItemDescription: "searchModeListItemDescription", semanticSearchModeListItemText: "semanticSearchModeListItemText", semanticSearchModeListItemDescription: "semanticSearchModeListItemDescription", smartBoxSearchModePopupButton: "smartBoxSearchModePopupButton", smartBoxAIAssistantModePopupButton: "smartBoxAIAssistantModePopupButton", detailColumnHeaderLabel: "detailColumnHeaderLabel", dragColumnHeaderLabel: "dragColumnHeaderLabel", commandColumnHeaderLabel: "commandColumnHeaderLabel", pinnedTopRowsLabel: "pinnedTopRowsLabel", pinnedBottomRowsLabel: "pinnedBottomRowsLabel", pinMenuPinToTopText: "pinMenuPinToTopText", pinMenuPinToBottomText: "pinMenuPinToBottomText", pinMenuUnpinText: "pinMenuUnpinText", pinColumnHeaderLabel: "pinColumnHeaderLabel", rowPinLabel: "rowPinLabel", rowUnpinLabel: "rowUnpinLabel", groupsSingleColumnTitle: "groupsSingleColumnTitle" }, usesInheritance: true, ngImport: i0 });
32269
32706
  }
32270
32707
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.26", ngImport: i0, type: GridMessages, decorators: [{
32271
32708
  type: Directive,
@@ -32596,6 +33033,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.26", ngImpo
32596
33033
  type: Input
32597
33034
  }], rowUnpinLabel: [{
32598
33035
  type: Input
33036
+ }], groupsSingleColumnTitle: [{
33037
+ type: Input
32599
33038
  }] } });
32600
33039
 
32601
33040
  /**
@@ -33721,7 +34160,7 @@ class GroupToolbarToolComponent {
33721
34160
  [class.k-disabled]="i === 0"
33722
34161
  >
33723
34162
  <kendo-icon-wrapper
33724
- name="arrow-chevron-up"
34163
+ name="chevron-up"
33725
34164
  [svgIcon]="upIcon"
33726
34165
  [size]="iconSize"
33727
34166
  ></kendo-icon-wrapper>
@@ -33733,7 +34172,7 @@ class GroupToolbarToolComponent {
33733
34172
  [class.k-disabled]="i === groupedColumns.length - 1"
33734
34173
  >
33735
34174
  <kendo-icon-wrapper
33736
- name="arrow-chevron-down"
34175
+ name="chevron-down"
33737
34176
  [svgIcon]="downIcon"
33738
34177
  [size]="iconSize"
33739
34178
  ></kendo-icon-wrapper>
@@ -33821,7 +34260,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.26", ngImpo
33821
34260
  [class.k-disabled]="i === 0"
33822
34261
  >
33823
34262
  <kendo-icon-wrapper
33824
- name="arrow-chevron-up"
34263
+ name="chevron-up"
33825
34264
  [svgIcon]="upIcon"
33826
34265
  [size]="iconSize"
33827
34266
  ></kendo-icon-wrapper>
@@ -33833,7 +34272,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.26", ngImpo
33833
34272
  [class.k-disabled]="i === groupedColumns.length - 1"
33834
34273
  >
33835
34274
  <kendo-icon-wrapper
33836
- name="arrow-chevron-down"
34275
+ name="chevron-down"
33837
34276
  [svgIcon]="downIcon"
33838
34277
  [size]="iconSize"
33839
34278
  ></kendo-icon-wrapper>
@@ -35236,6 +35675,7 @@ class RowPinContainerComponent {
35236
35675
  detailRowHeight;
35237
35676
  loading;
35238
35677
  size;
35678
+ groupingMode = 'default';
35239
35679
  constructor(localization) {
35240
35680
  this.localization = localization;
35241
35681
  }
@@ -35249,7 +35689,7 @@ class RowPinContainerComponent {
35249
35689
  return this.localization.get(labelKey);
35250
35690
  }
35251
35691
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.26", ngImport: i0, type: RowPinContainerComponent, deps: [{ token: i1$2.LocalizationService }], target: i0.ɵɵFactoryTarget.Component });
35252
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.26", type: RowPinContainerComponent, isStandalone: true, selector: "kendo-grid-rowpin-container", inputs: { leafColumns: "leafColumns", lockedLeafColumns: "lockedLeafColumns", nonLockedLeafColumns: "nonLockedLeafColumns", sort: "sort", position: "position", rowsToRender: "rowsToRender", totalColumns: "totalColumns", lockedWidth: "lockedWidth", nonLockedWidth: "nonLockedWidth", isLocked: "isLocked", selectable: "selectable", trackBy: "trackBy", groups: "groups", detailTemplate: "detailTemplate", filterable: "filterable", rowHeight: "rowHeight", detailRowHeight: "detailRowHeight", loading: "loading", size: "size" }, host: { properties: { "class.k-grid-pinned-container": "this.hostClass", "class.k-pos-bottom": "this.bottomClass" } }, providers: [{ provide: IS_PIN_CONTAINER, useValue: true }], viewQueries: [{ propertyName: "pinnedWrapper", first: true, predicate: ["pinnedWrapper"], descendants: true, static: true }, { propertyName: "lockedTable", first: true, predicate: ["lockedTable"], descendants: true }, { propertyName: "pinnedTable", first: true, predicate: ["pinnedTable"], descendants: true, static: true }], ngImport: i0, template: `
35692
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.26", type: RowPinContainerComponent, isStandalone: true, selector: "kendo-grid-rowpin-container", inputs: { leafColumns: "leafColumns", lockedLeafColumns: "lockedLeafColumns", nonLockedLeafColumns: "nonLockedLeafColumns", sort: "sort", position: "position", rowsToRender: "rowsToRender", totalColumns: "totalColumns", lockedWidth: "lockedWidth", nonLockedWidth: "nonLockedWidth", isLocked: "isLocked", selectable: "selectable", trackBy: "trackBy", groups: "groups", detailTemplate: "detailTemplate", filterable: "filterable", rowHeight: "rowHeight", detailRowHeight: "detailRowHeight", loading: "loading", size: "size", groupingMode: "groupingMode" }, host: { properties: { "class.k-grid-pinned-container": "this.hostClass", "class.k-pos-bottom": "this.bottomClass" } }, providers: [{ provide: IS_PIN_CONTAINER, useValue: true }], viewQueries: [{ propertyName: "pinnedWrapper", first: true, predicate: ["pinnedWrapper"], descendants: true, static: true }, { propertyName: "lockedTable", first: true, predicate: ["lockedTable"], descendants: true }, { propertyName: "pinnedTable", first: true, predicate: ["pinnedTable"], descendants: true, static: true }], ngImport: i0, template: `
35253
35693
  @if (isLocked) {
35254
35694
  <div class="k-grid-content-locked" role="presentation" [style.width.px]="lockedWidth">
35255
35695
  <table #lockedTable class="k-grid-table"
@@ -35262,7 +35702,8 @@ class RowPinContainerComponent {
35262
35702
  [groups]="groups"
35263
35703
  [columns]="$any(lockedLeafColumns)"
35264
35704
  [sort]="sort"
35265
- [detailTemplate]="detailTemplate">
35705
+ [detailTemplate]="detailTemplate"
35706
+ [groupingMode]="groupingMode">
35266
35707
  </colgroup>
35267
35708
  <tbody kendoGridTableBody
35268
35709
  role="presentation"
@@ -35280,7 +35721,8 @@ class RowPinContainerComponent {
35280
35721
  [filterable]="filterable"
35281
35722
  [rowHeight]="rowHeight"
35282
35723
  [detailRowHeight]="detailRowHeight"
35283
- [isLoading]="loading">
35724
+ [isLoading]="loading"
35725
+ [groupingMode]="groupingMode">
35284
35726
  </tbody>
35285
35727
  </table>
35286
35728
  </div>
@@ -35295,7 +35737,8 @@ class RowPinContainerComponent {
35295
35737
  [columns]="$any(nonLockedLeafColumns)"
35296
35738
  [sort]="sort"
35297
35739
  [groups]="isLocked ? [] : groups"
35298
- [detailTemplate]="detailTemplate">
35740
+ [detailTemplate]="detailTemplate"
35741
+ [groupingMode]="groupingMode">
35299
35742
  </colgroup>
35300
35743
  <tbody kendoGridTableBody
35301
35744
  role="presentation"
@@ -35313,11 +35756,12 @@ class RowPinContainerComponent {
35313
35756
  [detailTemplate]="detailTemplate"
35314
35757
  [filterable]="filterable"
35315
35758
  [rowHeight]="rowHeight"
35316
- [detailRowHeight]="detailRowHeight">
35759
+ [detailRowHeight]="detailRowHeight"
35760
+ [groupingMode]="groupingMode">
35317
35761
  </tbody>
35318
35762
  </table>
35319
35763
  </div>
35320
- `, isInline: true, dependencies: [{ kind: "directive", type: GridTableDirective, selector: "[kendoGridTable]", inputs: ["size"] }, { kind: "directive", type: TableDirective, selector: "[kendoGridResizableTable]", inputs: ["locked", "virtualColumns"] }, { kind: "component", type: ColGroupComponent, selector: "[kendoGridColGroup]", inputs: ["columns", "groups", "detailTemplate", "sort"] }, { kind: "component", type: TableBodyComponent, selector: "[kendoGridTableBody]", inputs: ["columns", "allColumns", "groups", "detailTemplate", "noRecordsTemplate", "rowsToRender", "skip", "selectable", "filterable", "noRecordsText", "isLocked", "isLoading", "isVirtual", "cellLoadingTemplate", "skipGroupDecoration", "lockedColumnsCount", "totalColumnsCount", "virtualColumns", "trackBy", "rowSticky", "totalColumns", "rowClass", "rowHeight", "detailRowHeight", "isPinContainer", "pinPosition"] }] });
35764
+ `, isInline: true, dependencies: [{ kind: "directive", type: GridTableDirective, selector: "[kendoGridTable]", inputs: ["size"] }, { kind: "directive", type: TableDirective, selector: "[kendoGridResizableTable]", inputs: ["locked", "virtualColumns"] }, { kind: "component", type: ColGroupComponent, selector: "[kendoGridColGroup]", inputs: ["columns", "groups", "detailTemplate", "sort", "groupingMode"] }, { kind: "component", type: TableBodyComponent, selector: "[kendoGridTableBody]", inputs: ["columns", "allColumns", "groups", "detailTemplate", "noRecordsTemplate", "rowsToRender", "skip", "selectable", "filterable", "noRecordsText", "isLocked", "isLoading", "isVirtual", "cellLoadingTemplate", "skipGroupDecoration", "lockedColumnsCount", "totalColumnsCount", "virtualColumns", "trackBy", "rowSticky", "totalColumns", "rowClass", "rowHeight", "detailRowHeight", "isPinContainer", "pinPosition", "groupingMode"] }] });
35321
35765
  }
35322
35766
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.26", ngImport: i0, type: RowPinContainerComponent, decorators: [{
35323
35767
  type: Component,
@@ -35336,7 +35780,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.26", ngImpo
35336
35780
  [groups]="groups"
35337
35781
  [columns]="$any(lockedLeafColumns)"
35338
35782
  [sort]="sort"
35339
- [detailTemplate]="detailTemplate">
35783
+ [detailTemplate]="detailTemplate"
35784
+ [groupingMode]="groupingMode">
35340
35785
  </colgroup>
35341
35786
  <tbody kendoGridTableBody
35342
35787
  role="presentation"
@@ -35354,7 +35799,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.26", ngImpo
35354
35799
  [filterable]="filterable"
35355
35800
  [rowHeight]="rowHeight"
35356
35801
  [detailRowHeight]="detailRowHeight"
35357
- [isLoading]="loading">
35802
+ [isLoading]="loading"
35803
+ [groupingMode]="groupingMode">
35358
35804
  </tbody>
35359
35805
  </table>
35360
35806
  </div>
@@ -35369,7 +35815,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.26", ngImpo
35369
35815
  [columns]="$any(nonLockedLeafColumns)"
35370
35816
  [sort]="sort"
35371
35817
  [groups]="isLocked ? [] : groups"
35372
- [detailTemplate]="detailTemplate">
35818
+ [detailTemplate]="detailTemplate"
35819
+ [groupingMode]="groupingMode">
35373
35820
  </colgroup>
35374
35821
  <tbody kendoGridTableBody
35375
35822
  role="presentation"
@@ -35387,7 +35834,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.26", ngImpo
35387
35834
  [detailTemplate]="detailTemplate"
35388
35835
  [filterable]="filterable"
35389
35836
  [rowHeight]="rowHeight"
35390
- [detailRowHeight]="detailRowHeight">
35837
+ [detailRowHeight]="detailRowHeight"
35838
+ [groupingMode]="groupingMode">
35391
35839
  </tbody>
35392
35840
  </table>
35393
35841
  </div>
@@ -35449,6 +35897,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.26", ngImpo
35449
35897
  type: Input
35450
35898
  }], size: [{
35451
35899
  type: Input
35900
+ }], groupingMode: [{
35901
+ type: Input
35452
35902
  }] } });
35453
35903
 
35454
35904
  /**
@@ -35886,6 +36336,24 @@ class GridComponent {
35886
36336
  get isActionSheetExpanded() {
35887
36337
  return Boolean(this.adaptiveRenderer?.actionSheet?.expanded);
35888
36338
  }
36339
+ /**
36340
+ * @hidden
36341
+ */
36342
+ get groupingMode() {
36343
+ if (!this.groupable || this.groupable === true) {
36344
+ return 'default';
36345
+ }
36346
+ return this.groupable.displayMode ?? 'default';
36347
+ }
36348
+ /**
36349
+ * @hidden
36350
+ * The groups column in 'singleColumn' grouping mode.
36351
+ * Created once and reused across change detection cycles so that its state
36352
+ * is not lost when the view re-renders.
36353
+ */
36354
+ get singleGroupColumn() {
36355
+ return this._singleGroupColumn;
36356
+ }
35889
36357
  /**
35890
36358
  * @hidden
35891
36359
  */
@@ -36445,6 +36913,10 @@ class GridComponent {
36445
36913
  this._customToolbarTemplate = customToolbarTemplate;
36446
36914
  }
36447
36915
  columnMenuTemplates;
36916
+ set groupColumnGroupHeaderTemplates(value) {
36917
+ const template = value.first;
36918
+ this.groupInfoService.groupColumnGroupHeaderTemplate = template ? template.templateRef : null;
36919
+ }
36448
36920
  lockedHeader;
36449
36921
  header;
36450
36922
  pinnedContainers;
@@ -36610,6 +37082,9 @@ class GridComponent {
36610
37082
  _navigable = ['table', 'pager', 'toolbar'];
36611
37083
  _size;
36612
37084
  _loading = false;
37085
+ _singleGroupColumn = null;
37086
+ _multiGroupColumns = [];
37087
+ _hiddenByGrouping = new Set();
36613
37088
  _showPagerInput = true;
36614
37089
  _showPagerPageText = true;
36615
37090
  _showPagerItemsText = true;
@@ -36671,7 +37146,9 @@ class GridComponent {
36671
37146
  if (this.isStacked) {
36672
37147
  return 0;
36673
37148
  }
36674
- const groupCellsWidth = this.group.length * GROUP_CELL_WIDTH;
37149
+ const groupCellsWidth = this.groupingMode === 'default'
37150
+ ? this.group.length * GROUP_CELL_WIDTH
37151
+ : 0;
36675
37152
  return expandColumns(this.lockedLeafColumns.toArray()).reduce((prev, curr) => prev + (curr.width || 0), groupCellsWidth);
36676
37153
  }
36677
37154
  get nonLockedWidth() {
@@ -36960,6 +37437,9 @@ class GridComponent {
36960
37437
  if (this.lockedLeafColumns.length && anyChanged(["pageSize", "skip", "sort", "group"], changes)) {
36961
37438
  this.changeNotification.notify();
36962
37439
  }
37440
+ if (isChanged$1("group", changes) && (this.groupingMode === 'multipleColumns' || this.groupingMode === 'singleColumn')) {
37441
+ this.syncGroupColumn();
37442
+ }
36963
37443
  if (isChanged$1("skip", changes)) {
36964
37444
  this.updatePinnedRowTracking();
36965
37445
  }
@@ -37006,6 +37486,7 @@ class GridComponent {
37006
37486
  }
37007
37487
  if (isChanged$1('groupable', changes, true)) {
37008
37488
  this.groupable = changes['groupable'].currentValue;
37489
+ this.syncGroupColumn();
37009
37490
  }
37010
37491
  if (isChanged$1('navigable', changes, true)) {
37011
37492
  if (this.navigationService.enabled) {
@@ -37030,11 +37511,15 @@ class GridComponent {
37030
37511
  ngAfterContentInit() {
37031
37512
  this.shouldGenerateColumns = !this.columns.length;
37032
37513
  this.autoGenerateColumns();
37514
+ this.syncGroupColumn();
37515
+ this.syncHiddenGroupedColumns();
37033
37516
  this.columnList = new ColumnList(this.columns);
37034
37517
  this.columnsChangeSubscription = this.columns.changes.subscribe(() => {
37035
37518
  if (this.shouldGenerateColumns) {
37036
37519
  this.autoGenerateColumns();
37037
37520
  }
37521
+ this.syncGroupColumn();
37522
+ this.syncHiddenGroupedColumns();
37038
37523
  this.verifySettings();
37039
37524
  });
37040
37525
  }
@@ -37775,12 +38260,106 @@ class GridComponent {
37775
38260
  }
37776
38261
  autoGenerateColumns() {
37777
38262
  if (this.shouldGenerateColumns && !this.columns.length && this.view.length) {
37778
- this.columns.reset(Object.keys(this.view.at(0)).map(field => {
38263
+ const generatedColumns = Object.keys(this.view.at(0)).map(field => {
37779
38264
  const column = new ColumnComponent(undefined, this.idService);
37780
38265
  column.field = field;
37781
38266
  return column;
37782
- }));
38267
+ });
38268
+ this.columns.reset(generatedColumns);
38269
+ }
38270
+ }
38271
+ applyGroupColumnSettings(column, settings, group) {
38272
+ column.title = settings.title;
38273
+ column.width = settings.width;
38274
+ column.locked = settings.locked ?? false;
38275
+ column.lockable = settings.lockable ?? true;
38276
+ column.sticky = settings.sticky ?? false;
38277
+ column.stickable = settings.stickable ?? true;
38278
+ column.resizable = settings.resizable ?? true;
38279
+ column.resizeStep = settings.resizeStep ?? 10;
38280
+ column.minResizableWidth = settings.minResizableWidth ?? 10;
38281
+ column.maxResizableWidth = settings.maxResizableWidth;
38282
+ column.reorderable = settings.reorderable ?? true;
38283
+ column.columnMenu = settings.columnMenu ?? true;
38284
+ column.autoSize = settings.autoSize;
38285
+ column.dataColumnDisplayTitle = this.groupInfoService.columnForGroup(group).displayTitle;
38286
+ column.groupingMode = this.groupingMode;
38287
+ }
38288
+ /**
38289
+ * Ensures the correct synthesized group columns are present for the active `displayMode`:
38290
+ * - `'singleColumn'`: one shared column for all group levels.
38291
+ * - `'multipleColumns'`: one column per active group descriptor.
38292
+ * Removes all group columns when neither mode is active.
38293
+ */
38294
+ syncGroupColumn() {
38295
+ const groups = this.group || [];
38296
+ const groupColumns = this.resolveGroupColumns(groups);
38297
+ const currentColumns = this.columns.toArray();
38298
+ const nonGroupColumns = currentColumns.filter(c => !c.isGroupColumn);
38299
+ const currentGroupColumns = currentColumns.filter(c => c.isGroupColumn);
38300
+ const needsReset = groupColumns.length !== currentGroupColumns.length
38301
+ || !groupColumns.every((col, i) => currentColumns[i] === col);
38302
+ if (needsReset) {
38303
+ this.columns.reset([...groupColumns, ...nonGroupColumns]);
38304
+ this.columnList = new ColumnList(this.columns);
38305
+ }
38306
+ this.applyGroupColumnConfigs(groupColumns, groups);
38307
+ }
38308
+ resolveGroupColumns(groups) {
38309
+ if (this.groupingMode === 'singleColumn' && groups.length > 0) {
38310
+ if (!this._singleGroupColumn) {
38311
+ this._singleGroupColumn = this.createGroupColumn();
38312
+ }
38313
+ return [this._singleGroupColumn];
38314
+ }
38315
+ if (this.groupingMode === 'multipleColumns') {
38316
+ while (this._multiGroupColumns.length < groups.length) {
38317
+ this._multiGroupColumns.push(this.createGroupColumn());
38318
+ }
38319
+ const active = this._multiGroupColumns.slice(0, groups.length);
38320
+ active.forEach((col, i) => { col.groupLevel = i; });
38321
+ return active;
38322
+ }
38323
+ return [];
38324
+ }
38325
+ createGroupColumn() {
38326
+ const col = new GroupColumnComponent(this.localization, undefined, this.idService);
38327
+ col.ngAfterViewInit();
38328
+ return col;
38329
+ }
38330
+ applyGroupColumnConfigs(columns, groups) {
38331
+ const groupCol = this.groupable?.groupColumn;
38332
+ if (!groupCol || !columns.length) {
38333
+ return;
37783
38334
  }
38335
+ columns.forEach((col, i) => {
38336
+ const descriptor = this.groupingMode === 'singleColumn' ? null : groups[i];
38337
+ const settings = typeof groupCol === 'function' ? groupCol(descriptor) : groupCol;
38338
+ this.applyGroupColumnSettings(col, settings, groups[i]);
38339
+ });
38340
+ }
38341
+ syncHiddenGroupedColumns() {
38342
+ const shouldHide = this.groupable?.hideGroupedColumns === true;
38343
+ const groupedFields = new Set((this.group || []).map(g => g.field));
38344
+ this._hiddenByGrouping.forEach(col => {
38345
+ const field = col.field;
38346
+ if (!shouldHide || !groupedFields.has(field)) {
38347
+ col.hidden = undefined;
38348
+ this._hiddenByGrouping.delete(col);
38349
+ }
38350
+ });
38351
+ if (!shouldHide) {
38352
+ return;
38353
+ }
38354
+ expandColumns(this.columnList.toArray()).forEach(col => {
38355
+ if (isColumnComponent(col) && !col.hidden) {
38356
+ const field = col.field;
38357
+ if (field && groupedFields.has(field)) {
38358
+ col.hidden = true;
38359
+ this._hiddenByGrouping.add(col);
38360
+ }
38361
+ }
38362
+ });
37784
38363
  }
37785
38364
  /**
37786
38365
  * @hidden
@@ -37850,6 +38429,13 @@ class GridComponent {
37850
38429
  }
37851
38430
  this.isVirtual && this.ctx.scroller?.resetVirtualSkip();
37852
38431
  this.dataStateChange.emit(x);
38432
+ if (this.groupable) {
38433
+ const shouldSyncGroupColumns = this.groupingMode === 'singleColumn' || this.groupingMode === 'multipleColumns';
38434
+ if (shouldSyncGroupColumns) {
38435
+ this.syncGroupColumn();
38436
+ this.syncHiddenGroupedColumns();
38437
+ }
38438
+ }
37853
38439
  hasObservers(this.gridStateChange) && this.gridStateChange.emit({ ...this.currentState, ...x });
37854
38440
  });
37855
38441
  this.stateChangeSubscription.add(merge(this.columnReorder, this.columnResize, this.columnVisibilityChange, this.columnLockedChange, this.columnStickyChange).pipe(flatMap(() => this.ngZone.onStable.pipe(take(1))))
@@ -38071,7 +38657,7 @@ class GridComponent {
38071
38657
  const addRowOffset = this.editService.hasNewItem ? 1 : 0;
38072
38658
  const filterRowOffset = hasFilterRow(this.filterable) ? 1 : 0;
38073
38659
  const headerRows = this.isStacked ? 0 : this.totalColumnLevels + 1 + filterRowOffset + addRowOffset;
38074
- return new NavigationMetadata(dataRows, headerRows, isVirtual, this.hasPager, isPresent(this.detailTemplate), this.wrapper, this.virtualColumns, this.columnsContainer, this.showFooter ? 1 : 0, this.isStacked, this.pinnedTopRows?.length ?? 0, this.pinnedBottomRows?.length ?? 0);
38660
+ return new NavigationMetadata(dataRows, headerRows, isVirtual, this.hasPager, isPresent(this.detailTemplate), this.wrapper, this.virtualColumns, this.columnsContainer, this.showFooter ? 1 : 0, this.isStacked, this.pinnedTopRows?.length ?? 0, this.pinnedBottomRows?.length ?? 0, Boolean(this.ctx.grid.singleGroupColumn) || this.groupingMode === 'multipleColumns');
38075
38661
  }
38076
38662
  applyAutoSize() {
38077
38663
  const cols = this.columns.filter((c) => this.autoSize ? c.autoSize !== false : c.autoSize);
@@ -38198,6 +38784,7 @@ class GridComponent {
38198
38784
  provide: KENDO_WEBMCP_HOST,
38199
38785
  useExisting: forwardRef(() => GridComponent)
38200
38786
  },
38787
+ provideComponentName('grid'),
38201
38788
  FilterService,
38202
38789
  ResponsiveService,
38203
38790
  PagerContextService,
@@ -38234,7 +38821,7 @@ class GridComponent {
38234
38821
  RowPinService,
38235
38822
  StickyGroupsService,
38236
38823
  PinnedRowTrackingService
38237
- ], queries: [{ propertyName: "columns", predicate: ColumnBase }, { propertyName: "detailTemplateChildren", predicate: DetailTemplateDirective }, { propertyName: "cellLoadingTemplateChildren", predicate: CellLoadingTemplateDirective }, { propertyName: "loadingTemplateChildren", predicate: LoadingTemplateDirective }, { propertyName: "statusBarTemplateChildren", predicate: StatusBarTemplateDirective }, { propertyName: "noRecordsTemplateChildren", predicate: NoRecordsTemplateDirective }, { propertyName: "pagerTemplateChildren", predicate: PagerTemplateDirective }, { propertyName: "toolbarTemplateChildren", predicate: ToolbarTemplateDirective }, { propertyName: "columnMenuTemplates", predicate: ColumnMenuTemplateDirective }], viewQueries: [{ propertyName: "lockedHeader", first: true, predicate: ["lockedHeader"], descendants: true }, { propertyName: "header", first: true, predicate: ["header"], descendants: true }, { propertyName: "ariaRoot", first: true, predicate: ["ariaRoot"], descendants: true, static: true }, { propertyName: "dragTargetContainer", first: true, predicate: DragTargetContainerDirective, descendants: true }, { propertyName: "dropTargetContainer", first: true, predicate: DropTargetContainerDirective, descendants: true }, { propertyName: "dialogContainer", first: true, predicate: ["dialogContainer"], descendants: true, read: ViewContainerRef }, { propertyName: "windowContainer", first: true, predicate: ["windowContainer"], descendants: true, read: ViewContainerRef }, { propertyName: "adaptiveRenderer", first: true, predicate: AdaptiveRendererComponent, descendants: true }, { propertyName: "listComponent", first: true, predicate: ListComponent, descendants: true }, { propertyName: "pinnedContainers", predicate: RowPinContainerComponent, descendants: true }, { propertyName: "footer", predicate: ["footer"], descendants: true }], exportAs: ["kendoGrid"], usesOnChanges: true, ngImport: i0, template: `
38824
+ ], queries: [{ propertyName: "columns", predicate: ColumnBase }, { propertyName: "detailTemplateChildren", predicate: DetailTemplateDirective }, { propertyName: "cellLoadingTemplateChildren", predicate: CellLoadingTemplateDirective }, { propertyName: "loadingTemplateChildren", predicate: LoadingTemplateDirective }, { propertyName: "statusBarTemplateChildren", predicate: StatusBarTemplateDirective }, { propertyName: "noRecordsTemplateChildren", predicate: NoRecordsTemplateDirective }, { propertyName: "pagerTemplateChildren", predicate: PagerTemplateDirective }, { propertyName: "toolbarTemplateChildren", predicate: ToolbarTemplateDirective }, { propertyName: "columnMenuTemplates", predicate: ColumnMenuTemplateDirective }, { propertyName: "groupColumnGroupHeaderTemplates", predicate: GroupColumnGroupHeaderTemplateDirective }], viewQueries: [{ propertyName: "lockedHeader", first: true, predicate: ["lockedHeader"], descendants: true }, { propertyName: "header", first: true, predicate: ["header"], descendants: true }, { propertyName: "ariaRoot", first: true, predicate: ["ariaRoot"], descendants: true, static: true }, { propertyName: "dragTargetContainer", first: true, predicate: DragTargetContainerDirective, descendants: true }, { propertyName: "dropTargetContainer", first: true, predicate: DropTargetContainerDirective, descendants: true }, { propertyName: "dialogContainer", first: true, predicate: ["dialogContainer"], descendants: true, read: ViewContainerRef }, { propertyName: "windowContainer", first: true, predicate: ["windowContainer"], descendants: true, read: ViewContainerRef }, { propertyName: "adaptiveRenderer", first: true, predicate: AdaptiveRendererComponent, descendants: true }, { propertyName: "listComponent", first: true, predicate: ListComponent, descendants: true }, { propertyName: "pinnedContainers", predicate: RowPinContainerComponent, descendants: true }, { propertyName: "footer", predicate: ["footer"], descendants: true }], exportAs: ["kendoGrid"], usesOnChanges: true, ngImport: i0, template: `
38238
38825
  <ng-container kendoGridLocalizedMessages
38239
38826
  i18n-groupPanelEmpty="kendo.grid.groupPanelEmpty|The label visible in the Grid group panel when it is empty"
38240
38827
  groupPanelEmpty="Drag a column header and drop it here to group by that column"
@@ -38721,6 +39308,9 @@ class GridComponent {
38721
39308
 
38722
39309
  i18n-rowUnpinLabel="kendo.grid.rowUnpinLabel|Sets the label for the Grid row unpin column icon"
38723
39310
  rowUnpinLabel="Unpin row"
39311
+
39312
+ i18n-groupsSingleColumnTitle="kendo.grid.groupsSingleColumnTitle|Sets the text for the group column's header when group mode is **singleColumn**."
39313
+ groupsSingleColumnTitle="Groups"
38724
39314
  >
38725
39315
  </ng-container>
38726
39316
  @if (showTopToolbar) {
@@ -38833,8 +39423,9 @@ class GridComponent {
38833
39423
  <colgroup kendoGridColGroup
38834
39424
  [columns]="$any(lockedLeafColumns)"
38835
39425
  [groups]="group"
38836
- [detailTemplate]="detailTemplate">
38837
- </colgroup>
39426
+ [detailTemplate]="detailTemplate"
39427
+ [groupingMode]="groupingMode">
39428
+ </colgroup>
38838
39429
  <thead kendoGridHeader
38839
39430
  role="rowgroup"
38840
39431
  [resizable]="resizable"
@@ -38853,7 +39444,8 @@ class GridComponent {
38853
39444
  [totalColumnsCount]="leafColumns.length"
38854
39445
  [totalColumns]="columnsContainer"
38855
39446
  [detailTemplate]="detailTemplate"
38856
- [tabIndex]="navigation.tableEnabled ? '-1' : '0'">
39447
+ [tabIndex]="navigation.tableEnabled ? '-1' : '0'"
39448
+ [groupingMode]="groupingMode">
38857
39449
  </thead>
38858
39450
  </table>
38859
39451
  </div>
@@ -38872,7 +39464,8 @@ class GridComponent {
38872
39464
  <colgroup kendoGridColGroup
38873
39465
  [columns]="headerLeafColumns"
38874
39466
  [groups]="isLocked ? [] : group"
38875
- [detailTemplate]="detailTemplate">
39467
+ [detailTemplate]="detailTemplate"
39468
+ [groupingMode]="groupingMode">
38876
39469
  </colgroup>
38877
39470
  <thead kendoGridHeader
38878
39471
  [resizable]="resizable"
@@ -38893,7 +39486,8 @@ class GridComponent {
38893
39486
  [totalColumnsCount]="leafColumns.length"
38894
39487
  [totalColumns]="columnsContainer"
38895
39488
  [detailTemplate]="detailTemplate"
38896
- [tabIndex]="navigation.tableEnabled ? '-1' : '0'">
39489
+ [tabIndex]="navigation.tableEnabled ? '-1' : '0'"
39490
+ [groupingMode]="groupingMode">
38897
39491
  </thead>
38898
39492
  </table>
38899
39493
  @if (virtualColumns) {
@@ -38922,7 +39516,8 @@ class GridComponent {
38922
39516
  [detailTemplate]="detailTemplate"
38923
39517
  [filterable]="filterable"
38924
39518
  [rowHeight]="rowHeight"
38925
- [detailRowHeight]="detailRowHeight">
39519
+ [detailRowHeight]="detailRowHeight"
39520
+ [groupingMode]="groupingMode">
38926
39521
  </kendo-grid-rowpin-container>
38927
39522
  }
38928
39523
 
@@ -38955,7 +39550,8 @@ class GridComponent {
38955
39550
  kendoDraggable
38956
39551
  kendoGridSelectionMarquee
38957
39552
  [enableDrag]="marqueeSelection"
38958
- [sort]="sort">
39553
+ [sort]="sort"
39554
+ [groupingMode]="groupingMode">
38959
39555
  </kendo-grid-list>
38960
39556
 
38961
39557
  @if (isPinnable && pinnedBottomRows?.length > 0) {
@@ -38976,7 +39572,8 @@ class GridComponent {
38976
39572
  [detailTemplate]="detailTemplate"
38977
39573
  [filterable]="filterable"
38978
39574
  [rowHeight]="rowHeight"
38979
- [detailRowHeight]="detailRowHeight">
39575
+ [detailRowHeight]="detailRowHeight"
39576
+ [groupingMode]="groupingMode">
38980
39577
  </kendo-grid-rowpin-container>
38981
39578
  }
38982
39579
  @if (showFooter) {
@@ -38999,7 +39596,8 @@ class GridComponent {
38999
39596
  <colgroup kendoGridColGroup
39000
39597
  [columns]="$any(lockedLeafColumns)"
39001
39598
  [groups]="group"
39002
- [detailTemplate]="detailTemplate">
39599
+ [detailTemplate]="detailTemplate"
39600
+ [groupingMode]="groupingMode">
39003
39601
  </colgroup>
39004
39602
  }
39005
39603
  <tfoot kendoGridFooter
@@ -39009,7 +39607,8 @@ class GridComponent {
39009
39607
  [detailTemplate]="detailTemplate"
39010
39608
  [logicalRowIndex]="ariaRowCount"
39011
39609
  [totalColumns]="columnsContainer"
39012
- [totalColumnsCount]="leafColumns.length">
39610
+ [totalColumnsCount]="leafColumns.length"
39611
+ [groupingMode]="groupingMode">
39013
39612
  </tfoot>
39014
39613
  </table>
39015
39614
  </div>
@@ -39029,7 +39628,8 @@ class GridComponent {
39029
39628
  <colgroup kendoGridColGroup
39030
39629
  [columns]="$any(headerLeafColumns)"
39031
39630
  [groups]="isLocked ? [] : group"
39032
- [detailTemplate]="detailTemplate">
39631
+ [detailTemplate]="detailTemplate"
39632
+ [groupingMode]="groupingMode">
39033
39633
  </colgroup>
39034
39634
  }
39035
39635
  <tfoot kendoGridFooter
@@ -39040,7 +39640,8 @@ class GridComponent {
39040
39640
  [lockedColumnsCount]="isStacked ? 0 : lockedLeafColumns.length"
39041
39641
  [detailTemplate]="detailTemplate"
39042
39642
  [totalColumns]="columnsContainer"
39043
- [totalColumnsCount]="leafColumns.length">
39643
+ [totalColumnsCount]="leafColumns.length"
39644
+ [groupingMode]="groupingMode">
39044
39645
  </tfoot>
39045
39646
  </table>
39046
39647
  </div>
@@ -39066,7 +39667,8 @@ class GridComponent {
39066
39667
  [detailTemplate]="detailTemplate"
39067
39668
  [filterable]="filterable"
39068
39669
  [rowHeight]="rowHeight"
39069
- [detailRowHeight]="detailRowHeight">
39670
+ [detailRowHeight]="detailRowHeight"
39671
+ [groupingMode]="groupingMode">
39070
39672
  </kendo-grid-rowpin-container>
39071
39673
  }
39072
39674
  <table
@@ -39080,7 +39682,8 @@ class GridComponent {
39080
39682
  [columns]="$any(leafColumns)"
39081
39683
  [groups]="group"
39082
39684
  [sort]="sort"
39083
- [detailTemplate]="detailTemplate">
39685
+ [detailTemplate]="detailTemplate"
39686
+ [groupingMode]="groupingMode">
39084
39687
  </colgroup>
39085
39688
  @if (!hideHeader && !isStacked) {
39086
39689
  <thead kendoGridHeader
@@ -39102,7 +39705,8 @@ class GridComponent {
39102
39705
  [columnMenu]="columnMenuOptions"
39103
39706
  [columnMenuTemplate]="columnMenuTemplate"
39104
39707
  [detailTemplate]="detailTemplate"
39105
- [tabIndex]="navigation.tableEnabled ? '-1' : '0'">
39708
+ [tabIndex]="navigation.tableEnabled ? '-1' : '0'"
39709
+ [groupingMode]="groupingMode">
39106
39710
  </thead>
39107
39711
  }
39108
39712
  <tbody kendoGridTableBody
@@ -39123,7 +39727,8 @@ class GridComponent {
39123
39727
  [rowClass]="rowClass"
39124
39728
  kendoDraggable
39125
39729
  kendoGridSelectionMarquee
39126
- [enableDrag]="marqueeSelection">
39730
+ [enableDrag]="marqueeSelection"
39731
+ [groupingMode]="groupingMode">
39127
39732
  </tbody>
39128
39733
  @if (showFooter) {
39129
39734
  <tfoot kendoGridFooter
@@ -39133,7 +39738,8 @@ class GridComponent {
39133
39738
  [columns]="$any(leafColumns)"
39134
39739
  [detailTemplate]="detailTemplate"
39135
39740
  [totalColumns]="columnsContainer"
39136
- [totalColumnsCount]="leafColumns.length">
39741
+ [totalColumnsCount]="leafColumns.length"
39742
+ [groupingMode]="groupingMode">
39137
39743
  </tfoot>
39138
39744
  }
39139
39745
  </table>
@@ -39157,7 +39763,8 @@ class GridComponent {
39157
39763
  [rowHeight]="rowHeight"
39158
39764
  [detailRowHeight]="detailRowHeight"
39159
39765
  [size]="size"
39160
- [loading]="loading">
39766
+ [loading]="loading"
39767
+ [groupingMode]="groupingMode">
39161
39768
  </kendo-grid-rowpin-container>
39162
39769
  }
39163
39770
  }
@@ -39232,6 +39839,7 @@ class GridComponent {
39232
39839
  </ng-template>
39233
39840
 
39234
39841
  <ng-template #defaultPager>
39842
+ <ng-container kendoComponentName="pager">
39235
39843
  <div class="k-pager-numbers-wrap">
39236
39844
  @if (normalizedPageableSettings.previousNext) {
39237
39845
  <kendo-pager-prev-buttons [size]="size"></kendo-pager-prev-buttons>
@@ -39261,6 +39869,7 @@ class GridComponent {
39261
39869
  <kendo-pager-info>
39262
39870
  </kendo-pager-info>
39263
39871
  }
39872
+ </ng-container>
39264
39873
  </ng-template>
39265
39874
  <div #dialogContainer></div>
39266
39875
  <div #windowContainer></div>
@@ -39275,7 +39884,7 @@ class GridComponent {
39275
39884
  @if (showLicenseWatermark) {
39276
39885
  <div kendoWatermarkOverlay [licenseMessage]="licenseMessage"></div>
39277
39886
  }
39278
- `, isInline: true, dependencies: [{ kind: "directive", type: LocalizedMessagesDirective, selector: "[kendoGridLocalizedMessages]" }, { 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", "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", "rowsToRender", "skip", "selectable", "filterable", "noRecordsText", "isLocked", "isLoading", "isVirtual", "cellLoadingTemplate", "skipGroupDecoration", "lockedColumnsCount", "totalColumnsCount", "virtualColumns", "trackBy", "rowSticky", "totalColumns", "rowClass", "rowHeight", "detailRowHeight", "isPinContainer", "pinPosition"] }, { 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], kendo-watermark-overlay", inputs: ["licenseMessage"] }, { kind: "component", type: i57.CustomMessagesComponent, selector: "kendo-datapager-messages, kendo-pager-messages" }, { kind: "component", type: i57.PagerInfoComponent, selector: "kendo-datapager-info, kendo-pager-info" }, { kind: "component", type: i57.PagerInputComponent, selector: "kendo-datapager-input, kendo-pager-input", inputs: ["showPageText", "size"] }, { kind: "component", type: i57.PagerNextButtonsComponent, selector: "kendo-datapager-next-buttons, kendo-pager-next-buttons", inputs: ["size"] }, { kind: "component", type: i57.PagerNumericButtonsComponent, selector: "kendo-datapager-numeric-buttons, kendo-pager-numeric-buttons", inputs: ["buttonCount", "size"] }, { kind: "component", type: i57.PagerPageSizesComponent, selector: "kendo-datapager-page-sizes, kendo-pager-page-sizes", inputs: ["showItemsText", "pageSizes", "size", "adaptiveMode"] }, { kind: "component", type: i57.PagerPrevButtonsComponent, selector: "kendo-datapager-prev-buttons, kendo-pager-prev-buttons", inputs: ["size"] }, { kind: "directive", type: i57.PagerTemplateDirective, selector: "[kendoDataPagerTemplate], [kendoPagerTemplate]" }, { kind: "component", type: i57.PagerComponent, selector: "kendo-datapager, kendo-pager", inputs: ["externalTemplate", "total", "skip", "pageSize", "buttonCount", "info", "type", "pageSizeValues", "previousNext", "navigable", "size", "responsive", "adaptiveMode"], outputs: ["pageChange", "pageSizeChange", "pagerInputVisibilityChange", "pageTextVisibilityChange", "itemsTextVisibilityChange"], exportAs: ["kendoDataPager", "kendoPager"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: AdaptiveRendererComponent, selector: "kendo-grid-adaptive-renderer" }, { kind: "component", type: ResizeSensorComponent, selector: "kendo-resize-sensor", inputs: ["rateLimit"], outputs: ["resize"] }, { kind: "component", type: RowPinContainerComponent, selector: "kendo-grid-rowpin-container", inputs: ["leafColumns", "lockedLeafColumns", "nonLockedLeafColumns", "sort", "position", "rowsToRender", "totalColumns", "lockedWidth", "nonLockedWidth", "isLocked", "selectable", "trackBy", "groups", "detailTemplate", "filterable", "rowHeight", "detailRowHeight", "loading", "size"] }], encapsulation: i0.ViewEncapsulation.None });
39887
+ `, isInline: true, dependencies: [{ kind: "directive", type: LocalizedMessagesDirective, selector: "[kendoGridLocalizedMessages]" }, { 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", "groupingMode"] }, { 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", "groupingMode"] }, { kind: "directive", type: ResizableContainerDirective, selector: "[kendoGridResizableContainer]", inputs: ["lockedWidth", "kendoGridResizableContainer"] }, { kind: "component", type: ListComponent, selector: "kendo-grid-list", inputs: ["data", "groups", "total", "rowHeight", "detailRowHeight", "take", "skip", "columns", "detailTemplate", "noRecordsTemplate", "selectable", "groupable", "filterable", "rowClass", "rowSticky", "loading", "trackBy", "virtualColumns", "isVirtual", "cellLoadingTemplate", "loadingTemplate", "sort", "size", "groupingMode"], 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", "groupingMode"] }, { kind: "component", type: TableBodyComponent, selector: "[kendoGridTableBody]", inputs: ["columns", "allColumns", "groups", "detailTemplate", "noRecordsTemplate", "rowsToRender", "skip", "selectable", "filterable", "noRecordsText", "isLocked", "isLoading", "isVirtual", "cellLoadingTemplate", "skipGroupDecoration", "lockedColumnsCount", "totalColumnsCount", "virtualColumns", "trackBy", "rowSticky", "totalColumns", "rowClass", "rowHeight", "detailRowHeight", "isPinContainer", "pinPosition", "groupingMode"] }, { 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], kendo-watermark-overlay", inputs: ["licenseMessage"] }, { kind: "component", type: i58.CustomMessagesComponent, selector: "kendo-datapager-messages, kendo-pager-messages" }, { kind: "component", type: i58.PagerInfoComponent, selector: "kendo-datapager-info, kendo-pager-info" }, { kind: "component", type: i58.PagerInputComponent, selector: "kendo-datapager-input, kendo-pager-input", inputs: ["showPageText", "size"] }, { kind: "component", type: i58.PagerNextButtonsComponent, selector: "kendo-datapager-next-buttons, kendo-pager-next-buttons", inputs: ["size"] }, { kind: "component", type: i58.PagerNumericButtonsComponent, selector: "kendo-datapager-numeric-buttons, kendo-pager-numeric-buttons", inputs: ["buttonCount", "size"] }, { kind: "component", type: i58.PagerPageSizesComponent, selector: "kendo-datapager-page-sizes, kendo-pager-page-sizes", inputs: ["showItemsText", "pageSizes", "size", "adaptiveMode"] }, { kind: "component", type: i58.PagerPrevButtonsComponent, selector: "kendo-datapager-prev-buttons, kendo-pager-prev-buttons", inputs: ["size"] }, { kind: "directive", type: i58.PagerTemplateDirective, selector: "[kendoDataPagerTemplate], [kendoPagerTemplate]" }, { kind: "component", type: i58.PagerComponent, selector: "kendo-datapager, kendo-pager", inputs: ["externalTemplate", "total", "skip", "pageSize", "buttonCount", "info", "type", "pageSizeValues", "previousNext", "navigable", "size", "responsive", "adaptiveMode"], outputs: ["pageChange", "pageSizeChange", "pagerInputVisibilityChange", "pageTextVisibilityChange", "itemsTextVisibilityChange"], exportAs: ["kendoDataPager", "kendoPager"] }, { kind: "directive", type: ComponentNameDirective, selector: "[kendoComponentName]", inputs: ["kendoComponentName"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: AdaptiveRendererComponent, selector: "kendo-grid-adaptive-renderer" }, { kind: "component", type: ResizeSensorComponent, selector: "kendo-resize-sensor", inputs: ["rateLimit"], outputs: ["resize"] }, { kind: "component", type: RowPinContainerComponent, selector: "kendo-grid-rowpin-container", inputs: ["leafColumns", "lockedLeafColumns", "nonLockedLeafColumns", "sort", "position", "rowsToRender", "totalColumns", "lockedWidth", "nonLockedWidth", "isLocked", "selectable", "trackBy", "groups", "detailTemplate", "filterable", "rowHeight", "detailRowHeight", "loading", "size", "groupingMode"] }], encapsulation: i0.ViewEncapsulation.None });
39279
39888
  }
39280
39889
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.26", ngImport: i0, type: GridComponent, decorators: [{
39281
39890
  type: Component,
@@ -39306,6 +39915,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.26", ngImpo
39306
39915
  provide: KENDO_WEBMCP_HOST,
39307
39916
  useExisting: forwardRef(() => GridComponent)
39308
39917
  },
39918
+ provideComponentName('grid'),
39309
39919
  FilterService,
39310
39920
  ResponsiveService,
39311
39921
  PagerContextService,
@@ -39831,6 +40441,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.26", ngImpo
39831
40441
 
39832
40442
  i18n-rowUnpinLabel="kendo.grid.rowUnpinLabel|Sets the label for the Grid row unpin column icon"
39833
40443
  rowUnpinLabel="Unpin row"
40444
+
40445
+ i18n-groupsSingleColumnTitle="kendo.grid.groupsSingleColumnTitle|Sets the text for the group column's header when group mode is **singleColumn**."
40446
+ groupsSingleColumnTitle="Groups"
39834
40447
  >
39835
40448
  </ng-container>
39836
40449
  @if (showTopToolbar) {
@@ -39943,8 +40556,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.26", ngImpo
39943
40556
  <colgroup kendoGridColGroup
39944
40557
  [columns]="$any(lockedLeafColumns)"
39945
40558
  [groups]="group"
39946
- [detailTemplate]="detailTemplate">
39947
- </colgroup>
40559
+ [detailTemplate]="detailTemplate"
40560
+ [groupingMode]="groupingMode">
40561
+ </colgroup>
39948
40562
  <thead kendoGridHeader
39949
40563
  role="rowgroup"
39950
40564
  [resizable]="resizable"
@@ -39963,7 +40577,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.26", ngImpo
39963
40577
  [totalColumnsCount]="leafColumns.length"
39964
40578
  [totalColumns]="columnsContainer"
39965
40579
  [detailTemplate]="detailTemplate"
39966
- [tabIndex]="navigation.tableEnabled ? '-1' : '0'">
40580
+ [tabIndex]="navigation.tableEnabled ? '-1' : '0'"
40581
+ [groupingMode]="groupingMode">
39967
40582
  </thead>
39968
40583
  </table>
39969
40584
  </div>
@@ -39982,7 +40597,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.26", ngImpo
39982
40597
  <colgroup kendoGridColGroup
39983
40598
  [columns]="headerLeafColumns"
39984
40599
  [groups]="isLocked ? [] : group"
39985
- [detailTemplate]="detailTemplate">
40600
+ [detailTemplate]="detailTemplate"
40601
+ [groupingMode]="groupingMode">
39986
40602
  </colgroup>
39987
40603
  <thead kendoGridHeader
39988
40604
  [resizable]="resizable"
@@ -40003,7 +40619,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.26", ngImpo
40003
40619
  [totalColumnsCount]="leafColumns.length"
40004
40620
  [totalColumns]="columnsContainer"
40005
40621
  [detailTemplate]="detailTemplate"
40006
- [tabIndex]="navigation.tableEnabled ? '-1' : '0'">
40622
+ [tabIndex]="navigation.tableEnabled ? '-1' : '0'"
40623
+ [groupingMode]="groupingMode">
40007
40624
  </thead>
40008
40625
  </table>
40009
40626
  @if (virtualColumns) {
@@ -40032,7 +40649,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.26", ngImpo
40032
40649
  [detailTemplate]="detailTemplate"
40033
40650
  [filterable]="filterable"
40034
40651
  [rowHeight]="rowHeight"
40035
- [detailRowHeight]="detailRowHeight">
40652
+ [detailRowHeight]="detailRowHeight"
40653
+ [groupingMode]="groupingMode">
40036
40654
  </kendo-grid-rowpin-container>
40037
40655
  }
40038
40656
 
@@ -40065,7 +40683,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.26", ngImpo
40065
40683
  kendoDraggable
40066
40684
  kendoGridSelectionMarquee
40067
40685
  [enableDrag]="marqueeSelection"
40068
- [sort]="sort">
40686
+ [sort]="sort"
40687
+ [groupingMode]="groupingMode">
40069
40688
  </kendo-grid-list>
40070
40689
 
40071
40690
  @if (isPinnable && pinnedBottomRows?.length > 0) {
@@ -40086,7 +40705,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.26", ngImpo
40086
40705
  [detailTemplate]="detailTemplate"
40087
40706
  [filterable]="filterable"
40088
40707
  [rowHeight]="rowHeight"
40089
- [detailRowHeight]="detailRowHeight">
40708
+ [detailRowHeight]="detailRowHeight"
40709
+ [groupingMode]="groupingMode">
40090
40710
  </kendo-grid-rowpin-container>
40091
40711
  }
40092
40712
  @if (showFooter) {
@@ -40109,7 +40729,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.26", ngImpo
40109
40729
  <colgroup kendoGridColGroup
40110
40730
  [columns]="$any(lockedLeafColumns)"
40111
40731
  [groups]="group"
40112
- [detailTemplate]="detailTemplate">
40732
+ [detailTemplate]="detailTemplate"
40733
+ [groupingMode]="groupingMode">
40113
40734
  </colgroup>
40114
40735
  }
40115
40736
  <tfoot kendoGridFooter
@@ -40119,7 +40740,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.26", ngImpo
40119
40740
  [detailTemplate]="detailTemplate"
40120
40741
  [logicalRowIndex]="ariaRowCount"
40121
40742
  [totalColumns]="columnsContainer"
40122
- [totalColumnsCount]="leafColumns.length">
40743
+ [totalColumnsCount]="leafColumns.length"
40744
+ [groupingMode]="groupingMode">
40123
40745
  </tfoot>
40124
40746
  </table>
40125
40747
  </div>
@@ -40139,7 +40761,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.26", ngImpo
40139
40761
  <colgroup kendoGridColGroup
40140
40762
  [columns]="$any(headerLeafColumns)"
40141
40763
  [groups]="isLocked ? [] : group"
40142
- [detailTemplate]="detailTemplate">
40764
+ [detailTemplate]="detailTemplate"
40765
+ [groupingMode]="groupingMode">
40143
40766
  </colgroup>
40144
40767
  }
40145
40768
  <tfoot kendoGridFooter
@@ -40150,7 +40773,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.26", ngImpo
40150
40773
  [lockedColumnsCount]="isStacked ? 0 : lockedLeafColumns.length"
40151
40774
  [detailTemplate]="detailTemplate"
40152
40775
  [totalColumns]="columnsContainer"
40153
- [totalColumnsCount]="leafColumns.length">
40776
+ [totalColumnsCount]="leafColumns.length"
40777
+ [groupingMode]="groupingMode">
40154
40778
  </tfoot>
40155
40779
  </table>
40156
40780
  </div>
@@ -40176,7 +40800,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.26", ngImpo
40176
40800
  [detailTemplate]="detailTemplate"
40177
40801
  [filterable]="filterable"
40178
40802
  [rowHeight]="rowHeight"
40179
- [detailRowHeight]="detailRowHeight">
40803
+ [detailRowHeight]="detailRowHeight"
40804
+ [groupingMode]="groupingMode">
40180
40805
  </kendo-grid-rowpin-container>
40181
40806
  }
40182
40807
  <table
@@ -40190,7 +40815,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.26", ngImpo
40190
40815
  [columns]="$any(leafColumns)"
40191
40816
  [groups]="group"
40192
40817
  [sort]="sort"
40193
- [detailTemplate]="detailTemplate">
40818
+ [detailTemplate]="detailTemplate"
40819
+ [groupingMode]="groupingMode">
40194
40820
  </colgroup>
40195
40821
  @if (!hideHeader && !isStacked) {
40196
40822
  <thead kendoGridHeader
@@ -40212,7 +40838,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.26", ngImpo
40212
40838
  [columnMenu]="columnMenuOptions"
40213
40839
  [columnMenuTemplate]="columnMenuTemplate"
40214
40840
  [detailTemplate]="detailTemplate"
40215
- [tabIndex]="navigation.tableEnabled ? '-1' : '0'">
40841
+ [tabIndex]="navigation.tableEnabled ? '-1' : '0'"
40842
+ [groupingMode]="groupingMode">
40216
40843
  </thead>
40217
40844
  }
40218
40845
  <tbody kendoGridTableBody
@@ -40233,7 +40860,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.26", ngImpo
40233
40860
  [rowClass]="rowClass"
40234
40861
  kendoDraggable
40235
40862
  kendoGridSelectionMarquee
40236
- [enableDrag]="marqueeSelection">
40863
+ [enableDrag]="marqueeSelection"
40864
+ [groupingMode]="groupingMode">
40237
40865
  </tbody>
40238
40866
  @if (showFooter) {
40239
40867
  <tfoot kendoGridFooter
@@ -40243,7 +40871,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.26", ngImpo
40243
40871
  [columns]="$any(leafColumns)"
40244
40872
  [detailTemplate]="detailTemplate"
40245
40873
  [totalColumns]="columnsContainer"
40246
- [totalColumnsCount]="leafColumns.length">
40874
+ [totalColumnsCount]="leafColumns.length"
40875
+ [groupingMode]="groupingMode">
40247
40876
  </tfoot>
40248
40877
  }
40249
40878
  </table>
@@ -40267,7 +40896,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.26", ngImpo
40267
40896
  [rowHeight]="rowHeight"
40268
40897
  [detailRowHeight]="detailRowHeight"
40269
40898
  [size]="size"
40270
- [loading]="loading">
40899
+ [loading]="loading"
40900
+ [groupingMode]="groupingMode">
40271
40901
  </kendo-grid-rowpin-container>
40272
40902
  }
40273
40903
  }
@@ -40342,6 +40972,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.26", ngImpo
40342
40972
  </ng-template>
40343
40973
 
40344
40974
  <ng-template #defaultPager>
40975
+ <ng-container kendoComponentName="pager">
40345
40976
  <div class="k-pager-numbers-wrap">
40346
40977
  @if (normalizedPageableSettings.previousNext) {
40347
40978
  <kendo-pager-prev-buttons [size]="size"></kendo-pager-prev-buttons>
@@ -40371,6 +41002,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.26", ngImpo
40371
41002
  <kendo-pager-info>
40372
41003
  </kendo-pager-info>
40373
41004
  }
41005
+ </ng-container>
40374
41006
  </ng-template>
40375
41007
  <div #dialogContainer></div>
40376
41008
  <div #windowContainer></div>
@@ -40408,6 +41040,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.26", ngImpo
40408
41040
  IconWrapperComponent,
40409
41041
  WatermarkOverlayComponent,
40410
41042
  ...KENDO_PAGER,
41043
+ ComponentNameDirective,
40411
41044
  NgTemplateOutlet,
40412
41045
  AdaptiveRendererComponent,
40413
41046
  ResizeSensorComponent,
@@ -40622,6 +41255,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.26", ngImpo
40622
41255
  }], columnMenuTemplates: [{
40623
41256
  type: ContentChildren,
40624
41257
  args: [ColumnMenuTemplateDirective]
41258
+ }], groupColumnGroupHeaderTemplates: [{
41259
+ type: ContentChildren,
41260
+ args: [GroupColumnGroupHeaderTemplateDirective]
40625
41261
  }], lockedHeader: [{
40626
41262
  type: ViewChild,
40627
41263
  args: ['lockedHeader']
@@ -42321,7 +42957,7 @@ class PDFCommandToolbarDirective extends ToolbarToolBase {
42321
42957
  e.preventDefault();
42322
42958
  this.pdfService.exportClick.emit();
42323
42959
  }
42324
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.26", ngImport: i0, type: PDFCommandToolbarDirective, deps: [{ token: PDFService }, { token: i58.ToolBarButtonComponent }, { token: ContextService }, { token: i0.NgZone }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Directive });
42960
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.26", ngImport: i0, type: PDFCommandToolbarDirective, deps: [{ token: PDFService }, { token: i59.ToolBarButtonComponent }, { token: ContextService }, { token: i0.NgZone }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Directive });
42325
42961
  static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "20.3.26", type: PDFCommandToolbarDirective, isStandalone: true, selector: "[kendoGridPDFTool]", usesInheritance: true, ngImport: i0 });
42326
42962
  }
42327
42963
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.26", ngImport: i0, type: PDFCommandToolbarDirective, decorators: [{
@@ -42330,7 +42966,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.26", ngImpo
42330
42966
  selector: '[kendoGridPDFTool]',
42331
42967
  standalone: true
42332
42968
  }]
42333
- }], ctorParameters: () => [{ type: PDFService }, { type: i58.ToolBarButtonComponent }, { type: ContextService }, { type: i0.NgZone }, { type: i0.ChangeDetectorRef }] });
42969
+ }], ctorParameters: () => [{ type: PDFService }, { type: i59.ToolBarButtonComponent }, { type: ContextService }, { type: i0.NgZone }, { type: i0.ChangeDetectorRef }] });
42334
42970
 
42335
42971
  /**
42336
42972
  * Represents the **Export to Excel** toolbar tool of the Grid.
@@ -42366,7 +43002,7 @@ class ExcelCommandToolbarDirective extends ToolbarToolBase {
42366
43002
  e.preventDefault();
42367
43003
  this.excelService.exportClick.emit();
42368
43004
  }
42369
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.26", ngImport: i0, type: ExcelCommandToolbarDirective, deps: [{ token: ExcelService }, { token: i58.ToolBarButtonComponent }, { token: ContextService }, { token: i0.NgZone }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Directive });
43005
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.26", ngImport: i0, type: ExcelCommandToolbarDirective, deps: [{ token: ExcelService }, { token: i59.ToolBarButtonComponent }, { token: ContextService }, { token: i0.NgZone }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Directive });
42370
43006
  static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "20.3.26", type: ExcelCommandToolbarDirective, isStandalone: true, selector: "[kendoGridExcelTool]", usesInheritance: true, ngImport: i0 });
42371
43007
  }
42372
43008
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.26", ngImport: i0, type: ExcelCommandToolbarDirective, decorators: [{
@@ -42375,7 +43011,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.26", ngImpo
42375
43011
  selector: '[kendoGridExcelTool]',
42376
43012
  standalone: true
42377
43013
  }]
42378
- }], ctorParameters: () => [{ type: ExcelService }, { type: i58.ToolBarButtonComponent }, { type: ContextService }, { type: i0.NgZone }, { type: i0.ChangeDetectorRef }] });
43014
+ }], ctorParameters: () => [{ type: ExcelService }, { type: i59.ToolBarButtonComponent }, { type: ContextService }, { type: i0.NgZone }, { type: i0.ChangeDetectorRef }] });
42379
43015
 
42380
43016
  /**
42381
43017
  * @hidden
@@ -42448,13 +43084,13 @@ class ToolbarEditingToolBase extends ToolbarToolBase {
42448
43084
  get isSelectionPresent() {
42449
43085
  return isPresent$1(this.lastSelectionIndex) && this.lastSelectionIndex > -1;
42450
43086
  }
42451
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.26", ngImport: i0, type: ToolbarEditingToolBase, deps: [{ token: i58.ToolBarButtonComponent }, { token: 'command' }, { token: ContextService }, { token: i0.NgZone }, { token: i0.ChangeDetectorRef }, { token: EditService }, { token: SelectionService }], target: i0.ɵɵFactoryTarget.Directive });
43087
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.26", ngImport: i0, type: ToolbarEditingToolBase, deps: [{ token: i59.ToolBarButtonComponent }, { token: 'command' }, { token: ContextService }, { token: i0.NgZone }, { token: i0.ChangeDetectorRef }, { token: EditService }, { token: SelectionService }], target: i0.ɵɵFactoryTarget.Directive });
42452
43088
  static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "20.3.26", type: ToolbarEditingToolBase, isStandalone: true, usesInheritance: true, ngImport: i0 });
42453
43089
  }
42454
43090
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.26", ngImport: i0, type: ToolbarEditingToolBase, decorators: [{
42455
43091
  type: Directive,
42456
43092
  args: [{}]
42457
- }], ctorParameters: () => [{ type: i58.ToolBarButtonComponent }, { type: undefined, decorators: [{
43093
+ }], ctorParameters: () => [{ type: i59.ToolBarButtonComponent }, { type: undefined, decorators: [{
42458
43094
  type: Inject,
42459
43095
  args: ['command']
42460
43096
  }] }, { type: ContextService }, { type: i0.NgZone }, { type: i0.ChangeDetectorRef }, { type: EditService }, { type: SelectionService }] });
@@ -42494,7 +43130,7 @@ class AddCommandToolbarDirective extends ToolbarEditingToolBase {
42494
43130
  e.preventDefault();
42495
43131
  this.editService.beginAdd();
42496
43132
  }
42497
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.26", ngImport: i0, type: AddCommandToolbarDirective, deps: [{ token: EditService }, { token: i58.ToolBarButtonComponent }, { token: ContextService }, { token: i0.NgZone }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Directive });
43133
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.26", ngImport: i0, type: AddCommandToolbarDirective, deps: [{ token: EditService }, { token: i59.ToolBarButtonComponent }, { token: ContextService }, { token: i0.NgZone }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Directive });
42498
43134
  static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "20.3.26", type: AddCommandToolbarDirective, isStandalone: true, selector: "[kendoGridAddTool]", usesInheritance: true, ngImport: i0 });
42499
43135
  }
42500
43136
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.26", ngImport: i0, type: AddCommandToolbarDirective, decorators: [{
@@ -42503,7 +43139,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.26", ngImpo
42503
43139
  selector: '[kendoGridAddTool]',
42504
43140
  standalone: true
42505
43141
  }]
42506
- }], ctorParameters: () => [{ type: EditService }, { type: i58.ToolBarButtonComponent }, { type: ContextService }, { type: i0.NgZone }, { type: i0.ChangeDetectorRef }] });
43142
+ }], ctorParameters: () => [{ type: EditService }, { type: i59.ToolBarButtonComponent }, { type: ContextService }, { type: i0.NgZone }, { type: i0.ChangeDetectorRef }] });
42507
43143
 
42508
43144
  /**
42509
43145
  * @hidden
@@ -43074,7 +43710,7 @@ class UndoCommandToolbarDirective {
43074
43710
  e.preventDefault();
43075
43711
  this.undoRedoService.onUndo.next(undefined);
43076
43712
  }
43077
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.26", ngImport: i0, type: UndoCommandToolbarDirective, deps: [{ token: UndoRedoService }, { token: i58.ToolBarButtonComponent }], target: i0.ɵɵFactoryTarget.Directive });
43713
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.26", ngImport: i0, type: UndoCommandToolbarDirective, deps: [{ token: UndoRedoService }, { token: i59.ToolBarButtonComponent }], target: i0.ɵɵFactoryTarget.Directive });
43078
43714
  static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "20.3.26", type: UndoCommandToolbarDirective, isStandalone: true, selector: "[kendoGridUndoTool]", ngImport: i0 });
43079
43715
  }
43080
43716
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.26", ngImport: i0, type: UndoCommandToolbarDirective, decorators: [{
@@ -43083,7 +43719,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.26", ngImpo
43083
43719
  selector: '[kendoGridUndoTool]',
43084
43720
  standalone: true,
43085
43721
  }]
43086
- }], ctorParameters: () => [{ type: UndoRedoService }, { type: i58.ToolBarButtonComponent }] });
43722
+ }], ctorParameters: () => [{ type: UndoRedoService }, { type: i59.ToolBarButtonComponent }] });
43087
43723
 
43088
43724
  /**
43089
43725
  * Represents the command that triggers the redo action in the Grid.
@@ -43137,7 +43773,7 @@ class RedoCommandToolbarDirective {
43137
43773
  e.preventDefault();
43138
43774
  this.undoRedoService.onRedo.next(undefined);
43139
43775
  }
43140
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.26", ngImport: i0, type: RedoCommandToolbarDirective, deps: [{ token: UndoRedoService }, { token: i58.ToolBarButtonComponent }], target: i0.ɵɵFactoryTarget.Directive });
43776
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.26", ngImport: i0, type: RedoCommandToolbarDirective, deps: [{ token: UndoRedoService }, { token: i59.ToolBarButtonComponent }], target: i0.ɵɵFactoryTarget.Directive });
43141
43777
  static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "20.3.26", type: RedoCommandToolbarDirective, isStandalone: true, selector: "[kendoGridRedoTool]", ngImport: i0 });
43142
43778
  }
43143
43779
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.26", ngImport: i0, type: RedoCommandToolbarDirective, decorators: [{
@@ -43146,7 +43782,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.26", ngImpo
43146
43782
  selector: '[kendoGridRedoTool]',
43147
43783
  standalone: true,
43148
43784
  }]
43149
- }], ctorParameters: () => [{ type: UndoRedoService }, { type: i58.ToolBarButtonComponent }] });
43785
+ }], ctorParameters: () => [{ type: UndoRedoService }, { type: i59.ToolBarButtonComponent }] });
43150
43786
 
43151
43787
  let incrementingId$2 = 0;
43152
43788
  /**
@@ -43337,7 +43973,7 @@ class SortCommandToolbarDirective {
43337
43973
  get buttonElement() {
43338
43974
  return this.host.getButton();
43339
43975
  }
43340
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.26", ngImport: i0, type: SortCommandToolbarDirective, deps: [{ token: i58.ToolBarButtonComponent }, { token: i2.PopupService }, { token: ContextService }, { token: SortService }, { token: ColumnInfoService }, { token: i0.NgZone }, { token: i0.Renderer2 }, { token: AdaptiveGridService }], target: i0.ɵɵFactoryTarget.Directive });
43976
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.26", ngImport: i0, type: SortCommandToolbarDirective, deps: [{ token: i59.ToolBarButtonComponent }, { token: i2.PopupService }, { token: ContextService }, { token: SortService }, { token: ColumnInfoService }, { token: i0.NgZone }, { token: i0.Renderer2 }, { token: AdaptiveGridService }], target: i0.ɵɵFactoryTarget.Directive });
43341
43977
  static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "20.3.26", type: SortCommandToolbarDirective, isStandalone: true, selector: "[kendoGridSortTool]", ngImport: i0 });
43342
43978
  }
43343
43979
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.26", ngImport: i0, type: SortCommandToolbarDirective, decorators: [{
@@ -43346,7 +43982,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.26", ngImpo
43346
43982
  selector: '[kendoGridSortTool]',
43347
43983
  standalone: true
43348
43984
  }]
43349
- }], ctorParameters: () => [{ type: i58.ToolBarButtonComponent }, { type: i2.PopupService }, { type: ContextService }, { type: SortService }, { type: ColumnInfoService }, { type: i0.NgZone }, { type: i0.Renderer2 }, { type: AdaptiveGridService }] });
43985
+ }], ctorParameters: () => [{ type: i59.ToolBarButtonComponent }, { type: i2.PopupService }, { type: ContextService }, { type: SortService }, { type: ColumnInfoService }, { type: i0.NgZone }, { type: i0.Renderer2 }, { type: AdaptiveGridService }] });
43350
43986
 
43351
43987
  /**
43352
43988
  * @hidden
@@ -43675,7 +44311,7 @@ class FilterCommandToolbarDirective {
43675
44311
  get buttonElement() {
43676
44312
  return this.host.getButton();
43677
44313
  }
43678
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.26", ngImport: i0, type: FilterCommandToolbarDirective, deps: [{ token: i58.ToolBarButtonComponent }, { token: i2.PopupService }, { token: ContextService }, { token: FilterService }, { token: ColumnInfoService }, { token: i0.NgZone }, { token: i0.Renderer2 }, { token: AdaptiveGridService }, { token: SinglePopupService }], target: i0.ɵɵFactoryTarget.Directive });
44314
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.26", ngImport: i0, type: FilterCommandToolbarDirective, deps: [{ token: i59.ToolBarButtonComponent }, { token: i2.PopupService }, { token: ContextService }, { token: FilterService }, { token: ColumnInfoService }, { token: i0.NgZone }, { token: i0.Renderer2 }, { token: AdaptiveGridService }, { token: SinglePopupService }], target: i0.ɵɵFactoryTarget.Directive });
43679
44315
  static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "20.3.26", type: FilterCommandToolbarDirective, isStandalone: true, selector: "[kendoGridFilterTool]", ngImport: i0 });
43680
44316
  }
43681
44317
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.26", ngImport: i0, type: FilterCommandToolbarDirective, decorators: [{
@@ -43684,7 +44320,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.26", ngImpo
43684
44320
  selector: '[kendoGridFilterTool]',
43685
44321
  standalone: true
43686
44322
  }]
43687
- }], ctorParameters: () => [{ type: i58.ToolBarButtonComponent }, { type: i2.PopupService }, { type: ContextService }, { type: FilterService }, { type: ColumnInfoService }, { type: i0.NgZone }, { type: i0.Renderer2 }, { type: AdaptiveGridService }, { type: SinglePopupService }] });
44323
+ }], ctorParameters: () => [{ type: i59.ToolBarButtonComponent }, { type: i2.PopupService }, { type: ContextService }, { type: FilterService }, { type: ColumnInfoService }, { type: i0.NgZone }, { type: i0.Renderer2 }, { type: AdaptiveGridService }, { type: SinglePopupService }] });
43688
44324
 
43689
44325
  /**
43690
44326
  * Represents the `edit` command in the Grid. Apply this directive to any `kendo-toolbar-button`
@@ -43720,7 +44356,7 @@ class EditCommandToolbarDirective extends ToolbarEditingToolBase {
43720
44356
  }
43721
44357
  this.editService.beginEdit(this.lastSelectionIndex);
43722
44358
  }
43723
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.26", ngImport: i0, type: EditCommandToolbarDirective, deps: [{ token: EditService }, { token: i58.ToolBarButtonComponent }, { token: SelectionService }, { token: ContextService }, { token: i0.NgZone }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Directive });
44359
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.26", ngImport: i0, type: EditCommandToolbarDirective, deps: [{ token: EditService }, { token: i59.ToolBarButtonComponent }, { token: SelectionService }, { token: ContextService }, { token: i0.NgZone }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Directive });
43724
44360
  static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "20.3.26", type: EditCommandToolbarDirective, isStandalone: true, selector: "[kendoGridEditTool]", usesInheritance: true, ngImport: i0 });
43725
44361
  }
43726
44362
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.26", ngImport: i0, type: EditCommandToolbarDirective, decorators: [{
@@ -43729,7 +44365,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.26", ngImpo
43729
44365
  selector: '[kendoGridEditTool]',
43730
44366
  standalone: true
43731
44367
  }]
43732
- }], ctorParameters: () => [{ type: EditService }, { type: i58.ToolBarButtonComponent }, { type: SelectionService }, { type: ContextService }, { type: i0.NgZone }, { type: i0.ChangeDetectorRef }] });
44368
+ }], ctorParameters: () => [{ type: EditService }, { type: i59.ToolBarButtonComponent }, { type: SelectionService }, { type: ContextService }, { type: i0.NgZone }, { type: i0.ChangeDetectorRef }] });
43733
44369
 
43734
44370
  /**
43735
44371
  * Represents the `save` command in the Grid. Apply this directive to any `kendo-toolbar-button`
@@ -43770,7 +44406,7 @@ class SaveCommandToolbarDirective extends ToolbarEditingToolBase {
43770
44406
  this.editService.editedIndices.forEach(i => this.editService.save(i.index));
43771
44407
  }
43772
44408
  }
43773
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.26", ngImport: i0, type: SaveCommandToolbarDirective, deps: [{ token: EditService }, { token: i58.ToolBarButtonComponent }, { token: SelectionService }, { token: ContextService }, { token: i0.NgZone }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Directive });
44409
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.26", ngImport: i0, type: SaveCommandToolbarDirective, deps: [{ token: EditService }, { token: i59.ToolBarButtonComponent }, { token: SelectionService }, { token: ContextService }, { token: i0.NgZone }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Directive });
43774
44410
  static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "20.3.26", type: SaveCommandToolbarDirective, isStandalone: true, selector: "[kendoGridSaveTool]", usesInheritance: true, ngImport: i0 });
43775
44411
  }
43776
44412
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.26", ngImport: i0, type: SaveCommandToolbarDirective, decorators: [{
@@ -43779,7 +44415,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.26", ngImpo
43779
44415
  selector: '[kendoGridSaveTool]',
43780
44416
  standalone: true
43781
44417
  }]
43782
- }], ctorParameters: () => [{ type: EditService }, { type: i58.ToolBarButtonComponent }, { type: SelectionService }, { type: ContextService }, { type: i0.NgZone }, { type: i0.ChangeDetectorRef }] });
44418
+ }], ctorParameters: () => [{ type: EditService }, { type: i59.ToolBarButtonComponent }, { type: SelectionService }, { type: ContextService }, { type: i0.NgZone }, { type: i0.ChangeDetectorRef }] });
43783
44419
 
43784
44420
  /**
43785
44421
  * Represents the `remove` command in the Grid. Apply this directive to any `kendo-toolbar-button`
@@ -43816,7 +44452,7 @@ class RemoveCommandToolbarDirective extends ToolbarEditingToolBase {
43816
44452
  this.editService.remove(this.lastSelectionIndex);
43817
44453
  }
43818
44454
  }
43819
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.26", ngImport: i0, type: RemoveCommandToolbarDirective, deps: [{ token: EditService }, { token: i58.ToolBarButtonComponent }, { token: SelectionService }, { token: ContextService }, { token: i0.NgZone }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Directive });
44455
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.26", ngImport: i0, type: RemoveCommandToolbarDirective, deps: [{ token: EditService }, { token: i59.ToolBarButtonComponent }, { token: SelectionService }, { token: ContextService }, { token: i0.NgZone }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Directive });
43820
44456
  static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "20.3.26", type: RemoveCommandToolbarDirective, isStandalone: true, selector: "[kendoGridRemoveTool]", usesInheritance: true, ngImport: i0 });
43821
44457
  }
43822
44458
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.26", ngImport: i0, type: RemoveCommandToolbarDirective, decorators: [{
@@ -43825,7 +44461,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.26", ngImpo
43825
44461
  selector: '[kendoGridRemoveTool]',
43826
44462
  standalone: true
43827
44463
  }]
43828
- }], ctorParameters: () => [{ type: EditService }, { type: i58.ToolBarButtonComponent }, { type: SelectionService }, { type: ContextService }, { type: i0.NgZone }, { type: i0.ChangeDetectorRef }] });
44464
+ }], ctorParameters: () => [{ type: EditService }, { type: i59.ToolBarButtonComponent }, { type: SelectionService }, { type: ContextService }, { type: i0.NgZone }, { type: i0.ChangeDetectorRef }] });
43829
44465
 
43830
44466
  /**
43831
44467
  * Represents the `cancel` command in the Grid.
@@ -43865,7 +44501,7 @@ class CancelCommandToolbarDirective extends ToolbarEditingToolBase {
43865
44501
  this.editService.editedIndices.forEach(i => this.editService.endEdit(i.index));
43866
44502
  }
43867
44503
  }
43868
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.26", ngImport: i0, type: CancelCommandToolbarDirective, deps: [{ token: EditService }, { token: i58.ToolBarButtonComponent }, { token: SelectionService }, { token: ContextService }, { token: i0.NgZone }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Directive });
44504
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.26", ngImport: i0, type: CancelCommandToolbarDirective, deps: [{ token: EditService }, { token: i59.ToolBarButtonComponent }, { token: SelectionService }, { token: ContextService }, { token: i0.NgZone }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Directive });
43869
44505
  static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "20.3.26", type: CancelCommandToolbarDirective, isStandalone: true, selector: "[kendoGridCancelTool]", usesInheritance: true, ngImport: i0 });
43870
44506
  }
43871
44507
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.26", ngImport: i0, type: CancelCommandToolbarDirective, decorators: [{
@@ -43874,7 +44510,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.26", ngImpo
43874
44510
  selector: '[kendoGridCancelTool]',
43875
44511
  standalone: true
43876
44512
  }]
43877
- }], ctorParameters: () => [{ type: EditService }, { type: i58.ToolBarButtonComponent }, { type: SelectionService }, { type: ContextService }, { type: i0.NgZone }, { type: i0.ChangeDetectorRef }] });
44513
+ }], ctorParameters: () => [{ type: EditService }, { type: i59.ToolBarButtonComponent }, { type: SelectionService }, { type: ContextService }, { type: i0.NgZone }, { type: i0.ChangeDetectorRef }] });
43878
44514
 
43879
44515
  let incrementingId = 0;
43880
44516
  /**
@@ -44055,7 +44691,7 @@ class GroupCommandToolbarDirective {
44055
44691
  isGroupingApplied(group) {
44056
44692
  return isPresent$1(group) && group.length > 0;
44057
44693
  }
44058
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.26", ngImport: i0, type: GroupCommandToolbarDirective, deps: [{ token: i58.ToolBarButtonComponent }, { token: i2.PopupService }, { token: ContextService }, { token: i0.NgZone }, { token: i0.Renderer2 }, { token: AdaptiveGridService }], target: i0.ɵɵFactoryTarget.Directive });
44694
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.26", ngImport: i0, type: GroupCommandToolbarDirective, deps: [{ token: i59.ToolBarButtonComponent }, { token: i2.PopupService }, { token: ContextService }, { token: i0.NgZone }, { token: i0.Renderer2 }, { token: AdaptiveGridService }], target: i0.ɵɵFactoryTarget.Directive });
44059
44695
  static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "20.3.26", type: GroupCommandToolbarDirective, isStandalone: true, selector: "[kendoGridGroupTool]", ngImport: i0 });
44060
44696
  }
44061
44697
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.26", ngImport: i0, type: GroupCommandToolbarDirective, decorators: [{
@@ -44064,7 +44700,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.26", ngImpo
44064
44700
  selector: '[kendoGridGroupTool]',
44065
44701
  standalone: true
44066
44702
  }]
44067
- }], ctorParameters: () => [{ type: i58.ToolBarButtonComponent }, { type: i2.PopupService }, { type: ContextService }, { type: i0.NgZone }, { type: i0.Renderer2 }, { type: AdaptiveGridService }] });
44703
+ }], ctorParameters: () => [{ type: i59.ToolBarButtonComponent }, { type: i2.PopupService }, { type: ContextService }, { type: i0.NgZone }, { type: i0.Renderer2 }, { type: AdaptiveGridService }] });
44068
44704
 
44069
44705
  /**
44070
44706
  * Stores the row and cell highlight state of the Grid.
@@ -44716,7 +45352,7 @@ class AIAssistantToolbarDirective extends ToolbarToolBase {
44716
45352
  this.host.selected = false;
44717
45353
  focusAnchor && this.buttonElement?.focus();
44718
45354
  }
44719
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.26", ngImport: i0, type: AIAssistantToolbarDirective, deps: [{ token: i1$7.WindowService }, { token: i58.ToolBarButtonComponent }, { token: ContextService }, { token: i0.NgZone }, { token: i58.RefreshService }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Directive });
45355
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.26", ngImport: i0, type: AIAssistantToolbarDirective, deps: [{ token: i1$7.WindowService }, { token: i59.ToolBarButtonComponent }, { token: ContextService }, { token: i0.NgZone }, { token: i59.RefreshService }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Directive });
44720
45356
  static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "20.3.26", type: AIAssistantToolbarDirective, isStandalone: true, selector: "[kendoGridAIAssistantTool]", inputs: { requestUrl: "requestUrl", requestOptions: "requestOptions", aiWindowSettings: "aiWindowSettings", aiPromptSettings: "aiPromptSettings", autoClose: "autoClose", keepOutputHistory: "keepOutputHistory" }, outputs: { promptRequest: "promptRequest", cancelRequest: "cancelRequest", responseSuccess: "responseSuccess", responseError: "responseError", close: "close", open: "open" }, usesInheritance: true, ngImport: i0 });
44721
45357
  }
44722
45358
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.26", ngImport: i0, type: AIAssistantToolbarDirective, decorators: [{
@@ -44725,7 +45361,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.26", ngImpo
44725
45361
  selector: '[kendoGridAIAssistantTool]',
44726
45362
  standalone: true
44727
45363
  }]
44728
- }], ctorParameters: () => [{ type: i1$7.WindowService }, { type: i58.ToolBarButtonComponent }, { type: ContextService }, { type: i0.NgZone }, { type: i58.RefreshService }, { type: i0.ChangeDetectorRef }], propDecorators: { requestUrl: [{
45364
+ }], ctorParameters: () => [{ type: i1$7.WindowService }, { type: i59.ToolBarButtonComponent }, { type: ContextService }, { type: i0.NgZone }, { type: i59.RefreshService }, { type: i0.ChangeDetectorRef }], propDecorators: { requestUrl: [{
44729
45365
  type: Input
44730
45366
  }], requestOptions: [{
44731
45367
  type: Input
@@ -46776,6 +47412,7 @@ const KENDO_GRID_SHARED = [
46776
47412
  const KENDO_GRID_GROUP_EXPORTS = [
46777
47413
  GroupHeaderTemplateDirective,
46778
47414
  GroupHeaderColumnTemplateDirective,
47415
+ GroupColumnGroupHeaderTemplateDirective,
46779
47416
  GroupFooterTemplateDirective,
46780
47417
  GroupHeaderComponent,
46781
47418
  GroupPanelComponent,
@@ -47122,9 +47759,9 @@ const KENDO_GRID = [
47122
47759
  */
47123
47760
  class GridModule {
47124
47761
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.26", ngImport: i0, type: GridModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
47125
- static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "20.3.26", ngImport: i0, type: GridModule, imports: [GroupHeaderTemplateDirective, GroupHeaderColumnTemplateDirective, GroupFooterTemplateDirective, GroupHeaderComponent, GroupPanelComponent, ColumnComponent, ColumnGroupComponent, LogicalCellDirective, LogicalRowDirective, FocusableDirective, FooterTemplateDirective, ColGroupComponent, ResizableContainerDirective, i1$3.TemplateContextDirective, FieldAccessorPipe, DetailTemplateDirective, SpanColumnComponent, LoadingComponent, GridTableDirective, CommandColumnComponent, CheckboxColumnComponent, SelectionCheckboxDirective, CellTemplateDirective, EditTemplateDirective, RowDragHandleTemplateDirective, RowDragHintTemplateDirective, TableBodyComponent, NoRecordsTemplateDirective, CellComponent, EditCommandDirective, CancelCommandDirective, SaveCommandDirective, RemoveCommandDirective, AddCommandDirective, AddCommandToolbarDirective, EditCommandToolbarDirective, SaveCommandToolbarDirective, RemoveCommandToolbarDirective, CancelCommandToolbarDirective, CellLoadingTemplateDirective, LoadingTemplateDirective, RowReorderColumnComponent, RowPinColumnComponent, SortCommandToolbarDirective, FilterCommandToolbarDirective, AIAssistantToolbarDirective, GroupCommandToolbarDirective, SelectAllToolbarToolComponent, SmartBoxToolbarToolComponent, GridSmartBoxHistoryItemTemplateDirective, GridSmartBoxPromptSuggestionTemplateDirective, HeaderComponent, HeaderTemplateDirective, ColumnHandleDirective, SelectAllCheckboxDirective, FooterComponent, i57.CustomMessagesComponent, i57.PagerFocusableDirective, i57.PagerInfoComponent, i57.PagerInputComponent, i57.PagerNextButtonsComponent, i57.PagerNumericButtonsComponent, i57.PagerPageSizesComponent, i57.PagerPrevButtonsComponent, i57.PagerTemplateDirective, i57.PagerComponent, i57.PagerSpacerComponent, i58.ToolBarComponent, i58.ToolbarCustomMessagesComponent, i58.ToolBarButtonComponent, i58.ToolBarButtonGroupComponent, i58.ToolBarDropDownButtonComponent, i58.ToolBarSeparatorComponent, i58.ToolBarSpacerComponent, i58.ToolBarSplitButtonComponent, i58.ToolBarToolComponent, FilterRowComponent, FilterCellComponent, FilterCellTemplateDirective, StringFilterCellComponent, NumericFilterCellComponent, AutoCompleteFilterCellComponent, BooleanFilterCellComponent, FilterCellHostDirective, FilterCellWrapperComponent, DateFilterCellComponent, ColumnComponent, ColumnGroupComponent, LogicalCellDirective, LogicalRowDirective, FocusableDirective, FooterTemplateDirective, ColGroupComponent, ResizableContainerDirective, i1$3.TemplateContextDirective, FieldAccessorPipe, DetailTemplateDirective, SpanColumnComponent, LoadingComponent, GridTableDirective, FilterCellOperatorsComponent, ContainsFilterOperatorComponent, DoesNotContainFilterOperatorComponent, EndsWithFilterOperatorComponent, EqualFilterOperatorComponent, IsEmptyFilterOperatorComponent, IsNotEmptyFilterOperatorComponent, IsNotNullFilterOperatorComponent, IsNullFilterOperatorComponent, NotEqualFilterOperatorComponent, StartsWithFilterOperatorComponent, GreaterFilterOperatorComponent, GreaterOrEqualToFilterOperatorComponent, LessFilterOperatorComponent, LessOrEqualToFilterOperatorComponent, AfterFilterOperatorComponent, AfterEqFilterOperatorComponent, BeforeEqFilterOperatorComponent, BeforeFilterOperatorComponent, FilterInputDirective, ColumnComponent, ColumnGroupComponent, LogicalCellDirective, LogicalRowDirective, FocusableDirective, FooterTemplateDirective, ColGroupComponent, ResizableContainerDirective, i1$3.TemplateContextDirective, FieldAccessorPipe, DetailTemplateDirective, SpanColumnComponent, LoadingComponent, GridTableDirective, FilterCellOperatorsComponent, ContainsFilterOperatorComponent, DoesNotContainFilterOperatorComponent, EndsWithFilterOperatorComponent, EqualFilterOperatorComponent, IsEmptyFilterOperatorComponent, IsNotEmptyFilterOperatorComponent, IsNotNullFilterOperatorComponent, IsNullFilterOperatorComponent, NotEqualFilterOperatorComponent, StartsWithFilterOperatorComponent, GreaterFilterOperatorComponent, GreaterOrEqualToFilterOperatorComponent, LessFilterOperatorComponent, LessOrEqualToFilterOperatorComponent, AfterFilterOperatorComponent, AfterEqFilterOperatorComponent, BeforeEqFilterOperatorComponent, BeforeFilterOperatorComponent, FilterInputDirective, FilterMenuComponent, FilterMenuContainerComponent, FilterMenuInputWrapperComponent, StringFilterMenuInputComponent, StringFilterMenuComponent, FilterMenuTemplateDirective, NumericFilterMenuComponent, NumericFilterMenuInputComponent, DateFilterMenuInputComponent, DateFilterMenuComponent, FilterMenuHostDirective, BooleanFilterMenuComponent, FilterMenuDropDownListDirective, BooleanFilterRadioButtonDirective, ColumnListComponent, ColumnChooserComponent, ColumnChooserToolbarDirective, ColumnMenuChooserComponent, ColumnMenuFilterComponent, ColumnMenuItemComponent, ColumnMenuItemContentTemplateDirective, ColumnMenuSortComponent, ColumnMenuComponent, ColumnMenuLockComponent, ColumnMenuTemplateDirective, ColumnMenuContainerComponent, ColumnMenuItemDirective, ColumnMenuStickComponent, ColumnMenuPositionComponent, ColumnMenuAutoSizeColumnComponent, ColumnMenuAutoSizeAllColumnsComponent, GridComponent, ListComponent, ToolbarComponent, LocalizedMessagesDirective, CustomMessagesComponent, DataBindingDirective, ToolbarTemplateDirective, SelectionDirective, HighlightDirective, TemplateEditingDirective, ReactiveEditingDirective, InCellEditingDirective, ExternalEditingDirective, ExpandDetailsDirective, ExpandGroupDirective, GridMarqueeDirective, GridSpacerComponent, GridToolbarFocusableDirective, StatusBarComponent, StatusBarTemplateDirective, GridClipboardDirective, FormComponent, DialogFormComponent, FormFormFieldComponent, UndoRedoDirective, i58.ToolBarComponent, i58.ToolbarCustomMessagesComponent, i58.ToolBarButtonComponent, i58.ToolBarButtonGroupComponent, i58.ToolBarDropDownButtonComponent, i58.ToolBarSeparatorComponent, i58.ToolBarSpacerComponent, i58.ToolBarSplitButtonComponent, i58.ToolBarToolComponent, TableDirective,
47762
+ static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "20.3.26", ngImport: i0, type: GridModule, imports: [GroupHeaderTemplateDirective, GroupHeaderColumnTemplateDirective, GroupColumnGroupHeaderTemplateDirective, GroupFooterTemplateDirective, GroupHeaderComponent, GroupPanelComponent, ColumnComponent, ColumnGroupComponent, LogicalCellDirective, LogicalRowDirective, FocusableDirective, FooterTemplateDirective, ColGroupComponent, ResizableContainerDirective, i1$3.TemplateContextDirective, FieldAccessorPipe, DetailTemplateDirective, SpanColumnComponent, LoadingComponent, GridTableDirective, CommandColumnComponent, CheckboxColumnComponent, SelectionCheckboxDirective, CellTemplateDirective, EditTemplateDirective, RowDragHandleTemplateDirective, RowDragHintTemplateDirective, TableBodyComponent, NoRecordsTemplateDirective, CellComponent, EditCommandDirective, CancelCommandDirective, SaveCommandDirective, RemoveCommandDirective, AddCommandDirective, AddCommandToolbarDirective, EditCommandToolbarDirective, SaveCommandToolbarDirective, RemoveCommandToolbarDirective, CancelCommandToolbarDirective, CellLoadingTemplateDirective, LoadingTemplateDirective, RowReorderColumnComponent, RowPinColumnComponent, SortCommandToolbarDirective, FilterCommandToolbarDirective, AIAssistantToolbarDirective, GroupCommandToolbarDirective, SelectAllToolbarToolComponent, SmartBoxToolbarToolComponent, GridSmartBoxHistoryItemTemplateDirective, GridSmartBoxPromptSuggestionTemplateDirective, HeaderComponent, HeaderTemplateDirective, ColumnHandleDirective, SelectAllCheckboxDirective, FooterComponent, i58.CustomMessagesComponent, i58.PagerFocusableDirective, i58.PagerInfoComponent, i58.PagerInputComponent, i58.PagerNextButtonsComponent, i58.PagerNumericButtonsComponent, i58.PagerPageSizesComponent, i58.PagerPrevButtonsComponent, i58.PagerTemplateDirective, i58.PagerComponent, i58.PagerSpacerComponent, i59.ToolBarComponent, i59.ToolbarCustomMessagesComponent, i59.ToolBarButtonComponent, i59.ToolBarButtonGroupComponent, i59.ToolBarDropDownButtonComponent, i59.ToolBarSeparatorComponent, i59.ToolBarSpacerComponent, i59.ToolBarSplitButtonComponent, i59.ToolBarToolComponent, FilterRowComponent, FilterCellComponent, FilterCellTemplateDirective, StringFilterCellComponent, NumericFilterCellComponent, AutoCompleteFilterCellComponent, BooleanFilterCellComponent, FilterCellHostDirective, FilterCellWrapperComponent, DateFilterCellComponent, ColumnComponent, ColumnGroupComponent, LogicalCellDirective, LogicalRowDirective, FocusableDirective, FooterTemplateDirective, ColGroupComponent, ResizableContainerDirective, i1$3.TemplateContextDirective, FieldAccessorPipe, DetailTemplateDirective, SpanColumnComponent, LoadingComponent, GridTableDirective, FilterCellOperatorsComponent, ContainsFilterOperatorComponent, DoesNotContainFilterOperatorComponent, EndsWithFilterOperatorComponent, EqualFilterOperatorComponent, IsEmptyFilterOperatorComponent, IsNotEmptyFilterOperatorComponent, IsNotNullFilterOperatorComponent, IsNullFilterOperatorComponent, NotEqualFilterOperatorComponent, StartsWithFilterOperatorComponent, GreaterFilterOperatorComponent, GreaterOrEqualToFilterOperatorComponent, LessFilterOperatorComponent, LessOrEqualToFilterOperatorComponent, AfterFilterOperatorComponent, AfterEqFilterOperatorComponent, BeforeEqFilterOperatorComponent, BeforeFilterOperatorComponent, FilterInputDirective, ColumnComponent, ColumnGroupComponent, LogicalCellDirective, LogicalRowDirective, FocusableDirective, FooterTemplateDirective, ColGroupComponent, ResizableContainerDirective, i1$3.TemplateContextDirective, FieldAccessorPipe, DetailTemplateDirective, SpanColumnComponent, LoadingComponent, GridTableDirective, FilterCellOperatorsComponent, ContainsFilterOperatorComponent, DoesNotContainFilterOperatorComponent, EndsWithFilterOperatorComponent, EqualFilterOperatorComponent, IsEmptyFilterOperatorComponent, IsNotEmptyFilterOperatorComponent, IsNotNullFilterOperatorComponent, IsNullFilterOperatorComponent, NotEqualFilterOperatorComponent, StartsWithFilterOperatorComponent, GreaterFilterOperatorComponent, GreaterOrEqualToFilterOperatorComponent, LessFilterOperatorComponent, LessOrEqualToFilterOperatorComponent, AfterFilterOperatorComponent, AfterEqFilterOperatorComponent, BeforeEqFilterOperatorComponent, BeforeFilterOperatorComponent, FilterInputDirective, FilterMenuComponent, FilterMenuContainerComponent, FilterMenuInputWrapperComponent, StringFilterMenuInputComponent, StringFilterMenuComponent, FilterMenuTemplateDirective, NumericFilterMenuComponent, NumericFilterMenuInputComponent, DateFilterMenuInputComponent, DateFilterMenuComponent, FilterMenuHostDirective, BooleanFilterMenuComponent, FilterMenuDropDownListDirective, BooleanFilterRadioButtonDirective, ColumnListComponent, ColumnChooserComponent, ColumnChooserToolbarDirective, ColumnMenuChooserComponent, ColumnMenuFilterComponent, ColumnMenuItemComponent, ColumnMenuItemContentTemplateDirective, ColumnMenuSortComponent, ColumnMenuComponent, ColumnMenuLockComponent, ColumnMenuTemplateDirective, ColumnMenuContainerComponent, ColumnMenuItemDirective, ColumnMenuStickComponent, ColumnMenuPositionComponent, ColumnMenuAutoSizeColumnComponent, ColumnMenuAutoSizeAllColumnsComponent, GridComponent, ListComponent, ToolbarComponent, LocalizedMessagesDirective, CustomMessagesComponent, DataBindingDirective, ToolbarTemplateDirective, SelectionDirective, HighlightDirective, TemplateEditingDirective, ReactiveEditingDirective, InCellEditingDirective, ExternalEditingDirective, ExpandDetailsDirective, ExpandGroupDirective, GridMarqueeDirective, GridSpacerComponent, GridToolbarFocusableDirective, StatusBarComponent, StatusBarTemplateDirective, GridClipboardDirective, FormComponent, DialogFormComponent, FormFormFieldComponent, UndoRedoDirective, i59.ToolBarComponent, i59.ToolbarCustomMessagesComponent, i59.ToolBarButtonComponent, i59.ToolBarButtonGroupComponent, i59.ToolBarDropDownButtonComponent, i59.ToolBarSeparatorComponent, i59.ToolBarSpacerComponent, i59.ToolBarSplitButtonComponent, i59.ToolBarToolComponent, TableDirective,
47126
47763
  UndoCommandToolbarDirective,
47127
- RedoCommandToolbarDirective], exports: [GridComponent, ToolbarTemplateDirective, ToolbarComponent, GridSpacerComponent, StatusBarTemplateDirective, DataBindingDirective, SelectionDirective, HighlightDirective, CustomMessagesComponent, TemplateEditingDirective, ReactiveEditingDirective, InCellEditingDirective, ExternalEditingDirective, ExpandDetailsDirective, ExpandGroupDirective, GridToolbarFocusableDirective, GroupHeaderTemplateDirective, GroupHeaderColumnTemplateDirective, GroupFooterTemplateDirective, GroupHeaderComponent, GroupPanelComponent, ColumnComponent, ColumnGroupComponent, LogicalCellDirective, LogicalRowDirective, FocusableDirective, FooterTemplateDirective, ColGroupComponent, ResizableContainerDirective, i1$3.TemplateContextDirective, FieldAccessorPipe, DetailTemplateDirective, SpanColumnComponent, LoadingComponent, GridTableDirective, CommandColumnComponent, CheckboxColumnComponent, SelectionCheckboxDirective, CellTemplateDirective, EditTemplateDirective, RowDragHandleTemplateDirective, RowDragHintTemplateDirective, TableBodyComponent, NoRecordsTemplateDirective, CellComponent, EditCommandDirective, CancelCommandDirective, SaveCommandDirective, RemoveCommandDirective, AddCommandDirective, AddCommandToolbarDirective, EditCommandToolbarDirective, SaveCommandToolbarDirective, RemoveCommandToolbarDirective, CancelCommandToolbarDirective, CellLoadingTemplateDirective, LoadingTemplateDirective, RowReorderColumnComponent, RowPinColumnComponent, SortCommandToolbarDirective, FilterCommandToolbarDirective, AIAssistantToolbarDirective, GroupCommandToolbarDirective, SelectAllToolbarToolComponent, SmartBoxToolbarToolComponent, GridSmartBoxHistoryItemTemplateDirective, GridSmartBoxPromptSuggestionTemplateDirective, HeaderComponent, HeaderTemplateDirective, ColumnHandleDirective, SelectAllCheckboxDirective, FilterRowComponent, FilterCellComponent, FilterCellTemplateDirective, StringFilterCellComponent, NumericFilterCellComponent, AutoCompleteFilterCellComponent, BooleanFilterCellComponent, FilterCellHostDirective, FilterCellWrapperComponent, DateFilterCellComponent, FilterCellOperatorsComponent, ContainsFilterOperatorComponent, DoesNotContainFilterOperatorComponent, EndsWithFilterOperatorComponent, EqualFilterOperatorComponent, IsEmptyFilterOperatorComponent, IsNotEmptyFilterOperatorComponent, IsNotNullFilterOperatorComponent, IsNullFilterOperatorComponent, NotEqualFilterOperatorComponent, StartsWithFilterOperatorComponent, GreaterFilterOperatorComponent, GreaterOrEqualToFilterOperatorComponent, LessFilterOperatorComponent, LessOrEqualToFilterOperatorComponent, AfterFilterOperatorComponent, AfterEqFilterOperatorComponent, BeforeEqFilterOperatorComponent, BeforeFilterOperatorComponent, FilterMenuComponent, FilterMenuContainerComponent, FilterMenuInputWrapperComponent, StringFilterMenuInputComponent, StringFilterMenuComponent, FilterMenuTemplateDirective, NumericFilterMenuComponent, NumericFilterMenuInputComponent, DateFilterMenuInputComponent, DateFilterMenuComponent, FilterMenuHostDirective, BooleanFilterMenuComponent, FilterMenuDropDownListDirective, BooleanFilterRadioButtonDirective, ColumnChooserComponent, ColumnChooserToolbarDirective, ColumnMenuFilterComponent, ColumnMenuItemComponent, ColumnMenuItemContentTemplateDirective, ColumnMenuSortComponent, ColumnMenuLockComponent, ColumnMenuStickComponent, ColumnMenuPositionComponent, ColumnMenuChooserComponent, ColumnMenuTemplateDirective, ColumnMenuContainerComponent, ColumnMenuItemDirective, ColumnMenuComponent, ColumnMenuAutoSizeColumnComponent, ColumnMenuAutoSizeAllColumnsComponent, GridClipboardDirective, UndoRedoDirective, UndoCommandToolbarDirective, RedoCommandToolbarDirective, i58.ToolBarComponent, i58.ToolbarCustomMessagesComponent, i58.ToolBarButtonComponent, i58.ToolBarButtonGroupComponent, i58.ToolBarDropDownButtonComponent, i58.ToolBarSeparatorComponent, i58.ToolBarSpacerComponent, i58.ToolBarSplitButtonComponent, i58.ToolBarToolComponent, i57.CustomMessagesComponent, i57.PagerFocusableDirective, i57.PagerInfoComponent, i57.PagerInputComponent, i57.PagerNextButtonsComponent, i57.PagerNumericButtonsComponent, i57.PagerPageSizesComponent, i57.PagerPrevButtonsComponent, i57.PagerTemplateDirective, i57.PagerComponent, i57.PagerSpacerComponent] });
47764
+ RedoCommandToolbarDirective], exports: [GridComponent, ToolbarTemplateDirective, ToolbarComponent, GridSpacerComponent, StatusBarTemplateDirective, DataBindingDirective, SelectionDirective, HighlightDirective, CustomMessagesComponent, TemplateEditingDirective, ReactiveEditingDirective, InCellEditingDirective, ExternalEditingDirective, ExpandDetailsDirective, ExpandGroupDirective, GridToolbarFocusableDirective, GroupHeaderTemplateDirective, GroupHeaderColumnTemplateDirective, GroupColumnGroupHeaderTemplateDirective, GroupFooterTemplateDirective, GroupHeaderComponent, GroupPanelComponent, ColumnComponent, ColumnGroupComponent, LogicalCellDirective, LogicalRowDirective, FocusableDirective, FooterTemplateDirective, ColGroupComponent, ResizableContainerDirective, i1$3.TemplateContextDirective, FieldAccessorPipe, DetailTemplateDirective, SpanColumnComponent, LoadingComponent, GridTableDirective, CommandColumnComponent, CheckboxColumnComponent, SelectionCheckboxDirective, CellTemplateDirective, EditTemplateDirective, RowDragHandleTemplateDirective, RowDragHintTemplateDirective, TableBodyComponent, NoRecordsTemplateDirective, CellComponent, EditCommandDirective, CancelCommandDirective, SaveCommandDirective, RemoveCommandDirective, AddCommandDirective, AddCommandToolbarDirective, EditCommandToolbarDirective, SaveCommandToolbarDirective, RemoveCommandToolbarDirective, CancelCommandToolbarDirective, CellLoadingTemplateDirective, LoadingTemplateDirective, RowReorderColumnComponent, RowPinColumnComponent, SortCommandToolbarDirective, FilterCommandToolbarDirective, AIAssistantToolbarDirective, GroupCommandToolbarDirective, SelectAllToolbarToolComponent, SmartBoxToolbarToolComponent, GridSmartBoxHistoryItemTemplateDirective, GridSmartBoxPromptSuggestionTemplateDirective, HeaderComponent, HeaderTemplateDirective, ColumnHandleDirective, SelectAllCheckboxDirective, FilterRowComponent, FilterCellComponent, FilterCellTemplateDirective, StringFilterCellComponent, NumericFilterCellComponent, AutoCompleteFilterCellComponent, BooleanFilterCellComponent, FilterCellHostDirective, FilterCellWrapperComponent, DateFilterCellComponent, FilterCellOperatorsComponent, ContainsFilterOperatorComponent, DoesNotContainFilterOperatorComponent, EndsWithFilterOperatorComponent, EqualFilterOperatorComponent, IsEmptyFilterOperatorComponent, IsNotEmptyFilterOperatorComponent, IsNotNullFilterOperatorComponent, IsNullFilterOperatorComponent, NotEqualFilterOperatorComponent, StartsWithFilterOperatorComponent, GreaterFilterOperatorComponent, GreaterOrEqualToFilterOperatorComponent, LessFilterOperatorComponent, LessOrEqualToFilterOperatorComponent, AfterFilterOperatorComponent, AfterEqFilterOperatorComponent, BeforeEqFilterOperatorComponent, BeforeFilterOperatorComponent, FilterMenuComponent, FilterMenuContainerComponent, FilterMenuInputWrapperComponent, StringFilterMenuInputComponent, StringFilterMenuComponent, FilterMenuTemplateDirective, NumericFilterMenuComponent, NumericFilterMenuInputComponent, DateFilterMenuInputComponent, DateFilterMenuComponent, FilterMenuHostDirective, BooleanFilterMenuComponent, FilterMenuDropDownListDirective, BooleanFilterRadioButtonDirective, ColumnChooserComponent, ColumnChooserToolbarDirective, ColumnMenuFilterComponent, ColumnMenuItemComponent, ColumnMenuItemContentTemplateDirective, ColumnMenuSortComponent, ColumnMenuLockComponent, ColumnMenuStickComponent, ColumnMenuPositionComponent, ColumnMenuChooserComponent, ColumnMenuTemplateDirective, ColumnMenuContainerComponent, ColumnMenuItemDirective, ColumnMenuComponent, ColumnMenuAutoSizeColumnComponent, ColumnMenuAutoSizeAllColumnsComponent, GridClipboardDirective, UndoRedoDirective, UndoCommandToolbarDirective, RedoCommandToolbarDirective, i59.ToolBarComponent, i59.ToolbarCustomMessagesComponent, i59.ToolBarButtonComponent, i59.ToolBarButtonGroupComponent, i59.ToolBarDropDownButtonComponent, i59.ToolBarSeparatorComponent, i59.ToolBarSpacerComponent, i59.ToolBarSplitButtonComponent, i59.ToolBarToolComponent, i58.CustomMessagesComponent, i58.PagerFocusableDirective, i58.PagerInfoComponent, i58.PagerInputComponent, i58.PagerNextButtonsComponent, i58.PagerNumericButtonsComponent, i58.PagerPageSizesComponent, i58.PagerPrevButtonsComponent, i58.PagerTemplateDirective, i58.PagerComponent, i58.PagerSpacerComponent] });
47128
47765
  static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "20.3.26", ngImport: i0, type: GridModule, providers: [
47129
47766
  PopupService,
47130
47767
  ResizeBatchService,
@@ -47139,7 +47776,7 @@ class GridModule {
47139
47776
  MonthViewService,
47140
47777
  YearViewService,
47141
47778
  NavigationService$2
47142
- ], imports: [GroupHeaderComponent, GroupPanelComponent, TableBodyComponent, CellComponent, EditCommandDirective, CancelCommandDirective, SaveCommandDirective, RemoveCommandDirective, AddCommandDirective, SelectAllToolbarToolComponent, SmartBoxToolbarToolComponent, HeaderComponent, i57.CustomMessagesComponent, i57.PagerInfoComponent, i57.PagerInputComponent, i57.PagerNextButtonsComponent, i57.PagerNumericButtonsComponent, i57.PagerPageSizesComponent, i57.PagerPrevButtonsComponent, i57.PagerComponent, i57.PagerSpacerComponent, i58.ToolBarComponent, i58.ToolbarCustomMessagesComponent, i58.ToolBarButtonComponent, i58.ToolBarButtonGroupComponent, i58.ToolBarDropDownButtonComponent, i58.ToolBarSeparatorComponent, i58.ToolBarSpacerComponent, i58.ToolBarSplitButtonComponent, StringFilterCellComponent, NumericFilterCellComponent, AutoCompleteFilterCellComponent, BooleanFilterCellComponent, FilterCellWrapperComponent, DateFilterCellComponent, FilterCellOperatorsComponent, FilterCellOperatorsComponent, FilterMenuComponent, FilterMenuContainerComponent, FilterMenuInputWrapperComponent, StringFilterMenuInputComponent, StringFilterMenuComponent, NumericFilterMenuComponent, NumericFilterMenuInputComponent, DateFilterMenuInputComponent, DateFilterMenuComponent, BooleanFilterMenuComponent, ColumnListComponent, ColumnChooserComponent, ColumnMenuChooserComponent, ColumnMenuFilterComponent, ColumnMenuItemComponent, ColumnMenuSortComponent, ColumnMenuComponent, ColumnMenuLockComponent, ColumnMenuStickComponent, ColumnMenuPositionComponent, ColumnMenuAutoSizeColumnComponent, ColumnMenuAutoSizeAllColumnsComponent, GridComponent, ListComponent, FormComponent, DialogFormComponent, FormFormFieldComponent, i58.ToolBarComponent, i58.ToolbarCustomMessagesComponent, i58.ToolBarButtonComponent, i58.ToolBarButtonGroupComponent, i58.ToolBarDropDownButtonComponent, i58.ToolBarSeparatorComponent, i58.ToolBarSpacerComponent, i58.ToolBarSplitButtonComponent] });
47779
+ ], imports: [GroupHeaderComponent, GroupPanelComponent, TableBodyComponent, CellComponent, EditCommandDirective, CancelCommandDirective, SaveCommandDirective, RemoveCommandDirective, AddCommandDirective, SelectAllToolbarToolComponent, SmartBoxToolbarToolComponent, HeaderComponent, i58.CustomMessagesComponent, i58.PagerInfoComponent, i58.PagerInputComponent, i58.PagerNextButtonsComponent, i58.PagerNumericButtonsComponent, i58.PagerPageSizesComponent, i58.PagerPrevButtonsComponent, i58.PagerComponent, i58.PagerSpacerComponent, i59.ToolBarComponent, i59.ToolbarCustomMessagesComponent, i59.ToolBarButtonComponent, i59.ToolBarButtonGroupComponent, i59.ToolBarDropDownButtonComponent, i59.ToolBarSeparatorComponent, i59.ToolBarSpacerComponent, i59.ToolBarSplitButtonComponent, StringFilterCellComponent, NumericFilterCellComponent, AutoCompleteFilterCellComponent, BooleanFilterCellComponent, FilterCellWrapperComponent, DateFilterCellComponent, FilterCellOperatorsComponent, FilterCellOperatorsComponent, FilterMenuComponent, FilterMenuContainerComponent, FilterMenuInputWrapperComponent, StringFilterMenuInputComponent, StringFilterMenuComponent, NumericFilterMenuComponent, NumericFilterMenuInputComponent, DateFilterMenuInputComponent, DateFilterMenuComponent, BooleanFilterMenuComponent, ColumnListComponent, ColumnChooserComponent, ColumnMenuChooserComponent, ColumnMenuFilterComponent, ColumnMenuItemComponent, ColumnMenuSortComponent, ColumnMenuComponent, ColumnMenuLockComponent, ColumnMenuStickComponent, ColumnMenuPositionComponent, ColumnMenuAutoSizeColumnComponent, ColumnMenuAutoSizeAllColumnsComponent, GridComponent, ListComponent, FormComponent, DialogFormComponent, FormFormFieldComponent, i59.ToolBarComponent, i59.ToolbarCustomMessagesComponent, i59.ToolBarButtonComponent, i59.ToolBarButtonGroupComponent, i59.ToolBarDropDownButtonComponent, i59.ToolBarSeparatorComponent, i59.ToolBarSpacerComponent, i59.ToolBarSplitButtonComponent] });
47143
47780
  }
47144
47781
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.26", ngImport: i0, type: GridModule, decorators: [{
47145
47782
  type: NgModule,
@@ -47284,5 +47921,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.26", ngImpo
47284
47921
  * Generated bundle index. Do not edit.
47285
47922
  */
47286
47923
 
47287
- export { AIAssistantToolbarDirective, AdaptiveGridService, AddCommandDirective, AddCommandToolbarDirective, AfterEqFilterOperatorComponent, AfterFilterOperatorComponent, AutoCompleteFilterCellComponent, BaseFilterCellComponent, BeforeEqFilterOperatorComponent, BeforeFilterOperatorComponent, BooleanFilterCellComponent, BooleanFilterComponent, BooleanFilterMenuComponent, BooleanFilterRadioButtonDirective, CELL_CONTEXT, CSVCommandDirective, CSVCommandToolbarDirective, CSVComponent, CSVExportEvent, CSVModule, CSVService, CancelCommandDirective, CancelCommandToolbarDirective, CellCloseEvent, CellComponent, CellLoadingTemplateDirective, CellSelectionAggregateService, CellSelectionService, CellTemplateDirective, ChangeNotificationService, CheckboxColumnComponent, ColGroupComponent, ColumnBase, ColumnChooserComponent, ColumnChooserToolbarDirective, ColumnComponent, ColumnGroupComponent, ColumnHandleDirective, ColumnInfoService, ColumnListComponent, ColumnLockedChangeEvent, ColumnMenuAutoSizeAllColumnsComponent, ColumnMenuAutoSizeColumnComponent, ColumnMenuChooserComponent, ColumnMenuComponent, ColumnMenuContainerComponent, ColumnMenuFilterComponent, ColumnMenuItemComponent, ColumnMenuItemContentTemplateDirective, ColumnMenuItemDirective, ColumnMenuLockComponent, ColumnMenuPositionComponent, ColumnMenuService, ColumnMenuSortComponent, ColumnMenuStickComponent, ColumnMenuTemplateDirective, ColumnReorderEvent, ColumnReorderService, ColumnResizingService, ColumnStickyChangeEvent, ColumnVisibilityChangeEvent, ColumnsContainer, CommandColumnComponent, ContainsFilterOperatorComponent, ContextService, CustomMessagesComponent, DEFAULT_AI_REQUEST_OPTIONS, DEFAULT_SCROLLER_FACTORY, DataBindingDirective, DateFilterCellComponent, DateFilterComponent, DateFilterMenuComponent, DateFilterMenuInputComponent, DetailCollapseEvent, DetailExpandEvent, DetailTemplateDirective, DetailsService, DoesNotContainFilterOperatorComponent, DomEventsService, DragAndDropService, DragHintService, DropCueService, EditCommandDirective, EditCommandToolbarDirective, EditService as EditServiceClass, EditTemplateDirective, EditingDirectiveBase, EndsWithFilterOperatorComponent, EqualFilterOperatorComponent, ExcelCommandDirective, ExcelCommandToolbarDirective, ExcelComponent, ExcelExportEvent, ExcelModule, ExcelService, ExpandDetailsDirective, ExpandGroupDirective, ExternalEditingDirective, FieldAccessorPipe, FilterCellComponent, FilterCellHostDirective, FilterCellOperatorsComponent, FilterCellTemplateDirective, FilterCellWrapperComponent, FilterCommandToolbarDirective, FilterInputDirective, FilterMenuComponent, FilterMenuContainerComponent, FilterMenuDropDownListDirective, FilterMenuHostDirective, FilterMenuInputWrapperComponent, FilterMenuTemplateDirective, FilterOperatorBase, FilterRowComponent, FilterService, FocusRoot, FocusableDirective, FooterComponent, FooterTemplateDirective, GreaterFilterOperatorComponent, GreaterOrEqualToFilterOperatorComponent, GridAIAssistantResponseErrorEvent, GridAIAssistantResponseSuccessEvent, GridClipboardDirective, GridComponent, GridModule, GridSmartBoxHistoryItemTemplateDirective, GridSmartBoxPromptSuggestionTemplateDirective, GridSmartBoxResponseErrorEvent, GridSmartBoxResponseSuccessEvent, GridSmartBoxSearchEvent, GridSpacerComponent, GridTableDirective, GridToolbarFocusableDirective, GridToolbarNavigationService, GroupCommandToolbarDirective, GroupFooterTemplateDirective, GroupHeaderColumnTemplateDirective, GroupHeaderComponent, GroupHeaderTemplateDirective, GroupInfoService, GroupPanelComponent, GroupsService, HeaderComponent, HeaderTemplateDirective, HighlightDirective, IdService, InCellEditingDirective, IsEmptyFilterOperatorComponent, IsNotEmptyFilterOperatorComponent, IsNotNullFilterOperatorComponent, IsNullFilterOperatorComponent, KENDO_GRID, KENDO_GRID_BODY_EXPORTS, KENDO_GRID_COLUMN_DRAGANDDROP, KENDO_GRID_COLUMN_MENU_DECLARATIONS, KENDO_GRID_COLUMN_MENU_EXPORTS, KENDO_GRID_CSV_EXPORT, KENDO_GRID_DECLARATIONS, KENDO_GRID_EXCEL_EXPORT, KENDO_GRID_EXPORTS, KENDO_GRID_FILTER_MENU, KENDO_GRID_FILTER_MENU_EXPORTS, KENDO_GRID_FILTER_OPERATORS, KENDO_GRID_FILTER_ROW, KENDO_GRID_FILTER_ROW_EXPORTS, KENDO_GRID_FILTER_SHARED, KENDO_GRID_FOOTER_EXPORTS, KENDO_GRID_GROUP_EXPORTS, KENDO_GRID_HEADER_EXPORTS, KENDO_GRID_PDF_EXPORT, KENDO_GRID_SHARED, LessFilterOperatorComponent, LessOrEqualToFilterOperatorComponent, ListComponent, LoadingComponent, LoadingTemplateDirective, LocalDataChangesService, LogicalCellDirective, LogicalRowDirective, MenuTabbingService, MultiCheckboxFilterComponent, NavigationService, NoRecordsTemplateDirective, NotEqualFilterOperatorComponent, NumericFilterCellComponent, NumericFilterComponent, NumericFilterMenuComponent, NumericFilterMenuInputComponent, PDFCommandDirective, PDFCommandToolbarDirective, PDFComponent, PDFMarginComponent, PDFModule, PDFService, PDFTemplateDirective, PopupCloseEvent, ReactiveEditingDirective, RedoCommandToolbarDirective, RemoveCommandDirective, RemoveCommandToolbarDirective, ResizableContainerDirective, ResizeService, ResponsiveService, RowDragHandleTemplateDirective, RowDragHintTemplateDirective, RowEditingDirectiveBase, RowPinColumnComponent, RowPinService, RowReorderColumnComponent, RowReorderService, SaveCommandDirective, SaveCommandToolbarDirective, ScrollRequestService, ScrollSyncService, SelectAllCheckboxDirective, SelectAllToolbarToolComponent, SelectionCheckboxDirective, SelectionDirective, SelectionService, SinglePopupService, SizingOptionsService, Skip, SmartBoxToolbarToolComponent, SortCommandToolbarDirective, SortService, SpanColumnComponent, StartsWithFilterOperatorComponent, StatusBarTemplateDirective, StringFilterCellComponent, StringFilterComponent, StringFilterMenuComponent, StringFilterMenuInputComponent, SuspendService, TableBodyComponent, TableDirective, TemplateEditingDirective, ToolbarComponent, ToolbarTemplateDirective, UndoCommandToolbarDirective, UndoRedoDirective, UndoRedoEvent, defaultTrackBy, hasFilterMenu, hasFilterRow, isFilterable };
47924
+ export { AIAssistantToolbarDirective, AdaptiveGridService, AddCommandDirective, AddCommandToolbarDirective, AfterEqFilterOperatorComponent, AfterFilterOperatorComponent, AutoCompleteFilterCellComponent, BaseFilterCellComponent, BeforeEqFilterOperatorComponent, BeforeFilterOperatorComponent, BooleanFilterCellComponent, BooleanFilterComponent, BooleanFilterMenuComponent, BooleanFilterRadioButtonDirective, CELL_CONTEXT, CSVCommandDirective, CSVCommandToolbarDirective, CSVComponent, CSVExportEvent, CSVModule, CSVService, CancelCommandDirective, CancelCommandToolbarDirective, CellCloseEvent, CellComponent, CellLoadingTemplateDirective, CellSelectionAggregateService, CellSelectionService, CellTemplateDirective, ChangeNotificationService, CheckboxColumnComponent, ColGroupComponent, ColumnBase, ColumnChooserComponent, ColumnChooserToolbarDirective, ColumnComponent, ColumnGroupComponent, ColumnHandleDirective, ColumnInfoService, ColumnListComponent, ColumnLockedChangeEvent, ColumnMenuAutoSizeAllColumnsComponent, ColumnMenuAutoSizeColumnComponent, ColumnMenuChooserComponent, ColumnMenuComponent, ColumnMenuContainerComponent, ColumnMenuFilterComponent, ColumnMenuItemComponent, ColumnMenuItemContentTemplateDirective, ColumnMenuItemDirective, ColumnMenuLockComponent, ColumnMenuPositionComponent, ColumnMenuService, ColumnMenuSortComponent, ColumnMenuStickComponent, ColumnMenuTemplateDirective, ColumnReorderEvent, ColumnReorderService, ColumnResizingService, ColumnStickyChangeEvent, ColumnVisibilityChangeEvent, ColumnsContainer, CommandColumnComponent, ContainsFilterOperatorComponent, ContextService, CustomMessagesComponent, DEFAULT_AI_REQUEST_OPTIONS, DEFAULT_SCROLLER_FACTORY, DataBindingDirective, DateFilterCellComponent, DateFilterComponent, DateFilterMenuComponent, DateFilterMenuInputComponent, DetailCollapseEvent, DetailExpandEvent, DetailTemplateDirective, DetailsService, DoesNotContainFilterOperatorComponent, DomEventsService, DragAndDropService, DragHintService, DropCueService, EditCommandDirective, EditCommandToolbarDirective, EditService as EditServiceClass, EditTemplateDirective, EditingDirectiveBase, EndsWithFilterOperatorComponent, EqualFilterOperatorComponent, ExcelCommandDirective, ExcelCommandToolbarDirective, ExcelComponent, ExcelExportEvent, ExcelModule, ExcelService, ExpandDetailsDirective, ExpandGroupDirective, ExternalEditingDirective, FieldAccessorPipe, FilterCellComponent, FilterCellHostDirective, FilterCellOperatorsComponent, FilterCellTemplateDirective, FilterCellWrapperComponent, FilterCommandToolbarDirective, FilterInputDirective, FilterMenuComponent, FilterMenuContainerComponent, FilterMenuDropDownListDirective, FilterMenuHostDirective, FilterMenuInputWrapperComponent, FilterMenuTemplateDirective, FilterOperatorBase, FilterRowComponent, FilterService, FocusRoot, FocusableDirective, FooterComponent, FooterTemplateDirective, GreaterFilterOperatorComponent, GreaterOrEqualToFilterOperatorComponent, GridAIAssistantResponseErrorEvent, GridAIAssistantResponseSuccessEvent, GridClipboardDirective, GridComponent, GridModule, GridSmartBoxHistoryItemTemplateDirective, GridSmartBoxPromptSuggestionTemplateDirective, GridSmartBoxResponseErrorEvent, GridSmartBoxResponseSuccessEvent, GridSmartBoxSearchEvent, GridSpacerComponent, GridTableDirective, GridToolbarFocusableDirective, GridToolbarNavigationService, GroupColumnGroupHeaderTemplateDirective, GroupCommandToolbarDirective, GroupFooterTemplateDirective, GroupHeaderColumnTemplateDirective, GroupHeaderComponent, GroupHeaderTemplateDirective, GroupInfoService, GroupPanelComponent, GroupsService, HeaderComponent, HeaderTemplateDirective, HighlightDirective, IdService, InCellEditingDirective, IsEmptyFilterOperatorComponent, IsNotEmptyFilterOperatorComponent, IsNotNullFilterOperatorComponent, IsNullFilterOperatorComponent, KENDO_GRID, KENDO_GRID_BODY_EXPORTS, KENDO_GRID_COLUMN_DRAGANDDROP, KENDO_GRID_COLUMN_MENU_DECLARATIONS, KENDO_GRID_COLUMN_MENU_EXPORTS, KENDO_GRID_CSV_EXPORT, KENDO_GRID_DECLARATIONS, KENDO_GRID_EXCEL_EXPORT, KENDO_GRID_EXPORTS, KENDO_GRID_FILTER_MENU, KENDO_GRID_FILTER_MENU_EXPORTS, KENDO_GRID_FILTER_OPERATORS, KENDO_GRID_FILTER_ROW, KENDO_GRID_FILTER_ROW_EXPORTS, KENDO_GRID_FILTER_SHARED, KENDO_GRID_FOOTER_EXPORTS, KENDO_GRID_GROUP_EXPORTS, KENDO_GRID_HEADER_EXPORTS, KENDO_GRID_PDF_EXPORT, KENDO_GRID_SHARED, LessFilterOperatorComponent, LessOrEqualToFilterOperatorComponent, ListComponent, LoadingComponent, LoadingTemplateDirective, LocalDataChangesService, LogicalCellDirective, LogicalRowDirective, MenuTabbingService, MultiCheckboxFilterComponent, NavigationService, NoRecordsTemplateDirective, NotEqualFilterOperatorComponent, NumericFilterCellComponent, NumericFilterComponent, NumericFilterMenuComponent, NumericFilterMenuInputComponent, PDFCommandDirective, PDFCommandToolbarDirective, PDFComponent, PDFMarginComponent, PDFModule, PDFService, PDFTemplateDirective, PopupCloseEvent, ReactiveEditingDirective, RedoCommandToolbarDirective, RemoveCommandDirective, RemoveCommandToolbarDirective, ResizableContainerDirective, ResizeService, ResponsiveService, RowDragHandleTemplateDirective, RowDragHintTemplateDirective, RowEditingDirectiveBase, RowPinColumnComponent, RowPinService, RowReorderColumnComponent, RowReorderService, SaveCommandDirective, SaveCommandToolbarDirective, ScrollRequestService, ScrollSyncService, SelectAllCheckboxDirective, SelectAllToolbarToolComponent, SelectionCheckboxDirective, SelectionDirective, SelectionService, SinglePopupService, SizingOptionsService, Skip, SmartBoxToolbarToolComponent, SortCommandToolbarDirective, SortService, SpanColumnComponent, StartsWithFilterOperatorComponent, StatusBarTemplateDirective, StringFilterCellComponent, StringFilterComponent, StringFilterMenuComponent, StringFilterMenuInputComponent, SuspendService, TableBodyComponent, TableDirective, TemplateEditingDirective, ToolbarComponent, ToolbarTemplateDirective, UndoCommandToolbarDirective, UndoRedoDirective, UndoRedoEvent, defaultTrackBy, hasFilterMenu, hasFilterRow, isFilterable };
47288
47925