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

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) {
@@ -17708,7 +17979,7 @@ class CSVCommandToolbarDirective extends ToolbarToolBase {
17708
17979
  e.preventDefault();
17709
17980
  this.csvService.exportClick.emit();
17710
17981
  }
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 });
17982
+ 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
17983
  static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "20.3.26", type: CSVCommandToolbarDirective, isStandalone: true, selector: "[kendoGridCSVTool]", usesInheritance: true, ngImport: i0 });
17713
17984
  }
17714
17985
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.26", ngImport: i0, type: CSVCommandToolbarDirective, decorators: [{
@@ -17717,7 +17988,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.26", ngImpo
17717
17988
  selector: '[kendoGridCSVTool]',
17718
17989
  standalone: true
17719
17990
  }]
17720
- }], ctorParameters: () => [{ type: CSVService }, { type: i58.ToolBarButtonComponent }, { type: ContextService }, { type: i0.NgZone }, { type: i0.ChangeDetectorRef }] });
17991
+ }], ctorParameters: () => [{ type: CSVService }, { type: i59.ToolBarButtonComponent }, { type: ContextService }, { type: i0.NgZone }, { type: i0.ChangeDetectorRef }] });
17721
17992
 
17722
17993
  /**
17723
17994
  * @hidden
@@ -18607,10 +18878,11 @@ class ColumnHandleDirective {
18607
18878
  const isParentSpan = isInSpanColumn(column);
18608
18879
  const isLastInSpan = isParentSpan ? column.parent.children.last === column : false;
18609
18880
  const index = indexOf(column, allLeafs);
18881
+ const isSingleGroupColumn = column === this.ctx.grid?.singleGroupColumn;
18610
18882
  return {
18611
18883
  column,
18612
18884
  headerIndex: this.columnsForLevel(column.level).indexOf(column),
18613
- index,
18885
+ index: isSingleGroupColumn ? -1 : index,
18614
18886
  isLastInSpan,
18615
18887
  isParentSpan,
18616
18888
  level: column.level
@@ -20110,7 +20382,7 @@ const isRootLevel = ({ parent }) => !isTruthy(parent);
20110
20382
  const ofColumnType = ({ draggable }) => ['column', 'columnGroup']
20111
20383
  .indexOf(draggable.context.type) >= 0;
20112
20384
  const notSameElement = ({ draggable, target }) => draggable.element.nativeElement !== target.element.nativeElement;
20113
- const inSameParent = (x, y) => x.parent === y.parent ||
20385
+ const inSameParent = (x, y) => (x.parent ?? null) === (y.parent ?? null) ||
20114
20386
  (isInSpanColumn$1(y) && inSameParent(x, y.parent));
20115
20387
  const sameParent = ({ draggable, target }) => inSameParent(draggable.context.column, target.context.column);
20116
20388
  const lastNonLocked = ({ draggable }) => !isTruthy(draggable.context.column.locked) &&
@@ -20159,6 +20431,7 @@ class HeaderComponent {
20159
20431
  totalColumns;
20160
20432
  tabIndex;
20161
20433
  size;
20434
+ groupingMode = 'default';
20162
20435
  sortedFields = {};
20163
20436
  hostClass = true;
20164
20437
  get columnMenuSettings() {
@@ -20550,7 +20823,7 @@ class HeaderComponent {
20550
20823
  });
20551
20824
  }
20552
20825
  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: `
20826
+ 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
20827
  @for (i of columnLevels; track $index; let levelIndex = $index) {
20555
20828
  <tr
20556
20829
  kendoGridLogicalRow
@@ -20559,12 +20832,14 @@ class HeaderComponent {
20559
20832
  [logicalCellsCount]="columns.length"
20560
20833
  [logicalSlaveCellsCount]="unlockedColumnsCount"
20561
20834
  [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>
20835
+ @if (groupingMode === 'default') {
20836
+ @for (g of groups; track g) {
20837
+ <th
20838
+ class="k-group-cell k-header k-table-th"
20839
+ role="presentation"
20840
+ >
20841
+ </th>
20842
+ }
20568
20843
  }
20569
20844
  @if (detailTemplate?.templateRef && !isStacked) {
20570
20845
  <th class="k-hierarchy-cell k-header k-table-th"
@@ -20805,9 +21080,10 @@ class HeaderComponent {
20805
21080
  [logicalSlaveRow]="lockedColumnsCount > 0"
20806
21081
  [logicalCellsCount]="columns.length"
20807
21082
  [logicalSlaveCellsCount]="unlockedColumnsCount"
20808
- [totalColumns]="totalColumns"></tr>
21083
+ [totalColumns]="totalColumns"
21084
+ [groupingMode]="groupingMode"></tr>
20809
21085
  }
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"] }] });
21086
+ `, 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
21087
  }
20812
21088
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.26", ngImport: i0, type: HeaderComponent, decorators: [{
20813
21089
  type: Component,
@@ -20822,12 +21098,14 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.26", ngImpo
20822
21098
  [logicalCellsCount]="columns.length"
20823
21099
  [logicalSlaveCellsCount]="unlockedColumnsCount"
20824
21100
  [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>
21101
+ @if (groupingMode === 'default') {
21102
+ @for (g of groups; track g) {
21103
+ <th
21104
+ class="k-group-cell k-header k-table-th"
21105
+ role="presentation"
21106
+ >
21107
+ </th>
21108
+ }
20831
21109
  }
20832
21110
  @if (detailTemplate?.templateRef && !isStacked) {
20833
21111
  <th class="k-hierarchy-cell k-header k-table-th"
@@ -21068,7 +21346,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.26", ngImpo
21068
21346
  [logicalSlaveRow]="lockedColumnsCount > 0"
21069
21347
  [logicalCellsCount]="columns.length"
21070
21348
  [logicalSlaveCellsCount]="unlockedColumnsCount"
21071
- [totalColumns]="totalColumns"></tr>
21349
+ [totalColumns]="totalColumns"
21350
+ [groupingMode]="groupingMode"></tr>
21072
21351
  }
21073
21352
  `,
21074
21353
  standalone: true,
@@ -21129,6 +21408,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.26", ngImpo
21129
21408
  type: Input
21130
21409
  }], size: [{
21131
21410
  type: Input
21411
+ }], groupingMode: [{
21412
+ type: Input
21132
21413
  }], hostClass: [{
21133
21414
  type: HostBinding,
21134
21415
  args: ['class.k-table-thead']
@@ -21157,6 +21438,7 @@ class FooterComponent {
21157
21438
  logicalRowIndex = 0;
21158
21439
  totalColumns;
21159
21440
  totalColumnsCount = 0;
21441
+ groupingMode = 'default';
21160
21442
  get footerClass() {
21161
21443
  return !this.scrollable;
21162
21444
  }
@@ -21194,7 +21476,7 @@ class FooterComponent {
21194
21476
  return this.ctx.grid?.isStacked;
21195
21477
  }
21196
21478
  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: `
21479
+ 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
21480
  <ng-container>
21199
21481
  <tr
21200
21482
  class="k-footer-template"
@@ -21206,12 +21488,14 @@ class FooterComponent {
21206
21488
  [totalColumns]="totalColumns"
21207
21489
  >
21208
21490
  @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>
21491
+ @if (groupingMode === 'default') {
21492
+ @for (g of groups; track g) {
21493
+ <td
21494
+ class="k-table-td k-group-cell k-table-group-td"
21495
+ role="presentation"
21496
+ >
21497
+ </td>
21498
+ }
21215
21499
  }
21216
21500
  }
21217
21501
  @if (detailTemplate?.templateRef && !isStacked) {
@@ -21292,12 +21576,14 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.26", ngImpo
21292
21576
  [totalColumns]="totalColumns"
21293
21577
  >
21294
21578
  @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>
21579
+ @if (groupingMode === 'default') {
21580
+ @for (g of groups; track g) {
21581
+ <td
21582
+ class="k-table-td k-group-cell k-table-group-td"
21583
+ role="presentation"
21584
+ >
21585
+ </td>
21586
+ }
21301
21587
  }
21302
21588
  }
21303
21589
  @if (detailTemplate?.templateRef && !isStacked) {
@@ -21380,6 +21666,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.26", ngImpo
21380
21666
  type: Input
21381
21667
  }], totalColumnsCount: [{
21382
21668
  type: Input
21669
+ }], groupingMode: [{
21670
+ type: Input
21383
21671
  }], footerClass: [{
21384
21672
  type: HostBinding,
21385
21673
  args: ['class.k-grid-footer']
@@ -22771,6 +23059,7 @@ class TableBodyComponent {
22771
23059
  detailRowHeight;
22772
23060
  isPinContainer = false;
22773
23061
  pinPosition = null;
23062
+ groupingMode = 'default';
22774
23063
  hostClass = true;
22775
23064
  groupHeaderSlaveCellsCount;
22776
23065
  groupHeaderColumns;
@@ -22871,7 +23160,8 @@ class TableBodyComponent {
22871
23160
  });
22872
23161
  }
22873
23162
  if (this.hasGroupHeaderColumn) {
22874
- this.groupHeaderColumns = columnsToRender(this.skipGroupDecoration ? this.columns : this.columns.toArray().slice(1));
23163
+ const shouldSlice = !this.skipGroupDecoration && this.groupingMode === 'default';
23164
+ this.groupHeaderColumns = columnsToRender(shouldSlice ? this.columns.toArray().slice(1) : this.columns);
22875
23165
  }
22876
23166
  else {
22877
23167
  this.groupHeaderColumns = [];
@@ -23210,7 +23500,7 @@ class TableBodyComponent {
23210
23500
  }
23211
23501
  }
23212
23502
  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: `
23503
+ 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
23504
  @if (editService.hasNewItem) {
23215
23505
  <tr class="k-grid-add-row k-grid-edit-row k-master-row"
23216
23506
  [style.height.px]="rowHeight"
@@ -23221,8 +23511,10 @@ class TableBodyComponent {
23221
23511
  [logicalSlaveCellsCount]="unlockedColumnsCount()"
23222
23512
  [totalColumns]="totalColumns">
23223
23513
  @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>
23514
+ @if (groupingMode === 'default') {
23515
+ @for (g of groups; track $index) {
23516
+ <td class="k-group-cell k-table-td k-table-group-td" role="presentation"></td>
23517
+ }
23226
23518
  }
23227
23519
  }
23228
23520
  @if (detailTemplate?.templateRef && !isStackedMode) {
@@ -23309,7 +23601,8 @@ class TableBodyComponent {
23309
23601
  [logicalSlaveRow]="lockedColumnsCount > 0 && !isStackedMode"
23310
23602
  [totalColumns]="totalColumns"
23311
23603
  [logicalCellsCount]="columns.length"
23312
- [logicalSlaveCellsCount]="0">
23604
+ [logicalSlaveCellsCount]="0"
23605
+ [groupingMode]="groupingMode">
23313
23606
  </tr>
23314
23607
  }
23315
23608
  @if (item.showDataItem) {
@@ -23335,8 +23628,10 @@ class TableBodyComponent {
23335
23628
  [class.k-selected]="isSelectable({ dataItem: item.data, index: $any(item).index }) && isRowSelected(item)"
23336
23629
  [class.k-highlighted]="item.isHighlighted">
23337
23630
  @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>
23631
+ @if (groupingMode === 'default') {
23632
+ @for (g of groups; track $index) {
23633
+ <td class="k-group-cell k-table-td k-table-group-td" role="presentation"></td>
23634
+ }
23340
23635
  }
23341
23636
  }
23342
23637
  @if (detailTemplate?.templateRef && !isStackedMode) {
@@ -23386,37 +23681,44 @@ class TableBodyComponent {
23386
23681
  } @else {
23387
23682
  @for (column of columns; track virtualColumns ? $index : column; let columnIndex = $index) {
23388
23683
  @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>
23684
+ @if ($any(column).isGroupColumn) {
23685
+ <td class="k-table-group-td k-group-cell k-table-td" role="presentation"
23686
+ [ngStyle]="column.sticky ? addStickyColumnStyles(column) : null"
23687
+ [class.k-grid-content-sticky]="column.sticky"
23688
+ ></td>
23689
+ } @else {
23690
+ <td
23691
+ kendoGridCell
23692
+ [rowIndex]="$any(item).index"
23693
+ [columnIndex]="lockedColumnsCount + columnIndex"
23694
+ [attr.data-kendo-grid-column-index]="lockedColumnsCount + columnIndex"
23695
+ [column]="column"
23696
+ [columns]="allColumns"
23697
+ [dataItem]="item.data"
23698
+ [isLoading]="isLoading"
23699
+ [isVirtual]="isVirtual"
23700
+ [loadingTemplate]="cellLoadingTemplate"
23701
+ kendoGridLogicalCell
23702
+ [logicalRowIndex]="logicalRowIndex(rowIndex)"
23703
+ [logicalColIndex]="logicalColIndex(column)"
23704
+ [dataRowIndex]="$any(item).index"
23705
+ [dataItem]="item.data"
23706
+ [colIndex]="columnIndex"
23707
+ [colSpan]="column.colspan"
23708
+ [rowSpan]="item.cells[lockedColumnsCount + columnIndex]?.rowspan"
23709
+ [attr.role]="column.tableCellsRole"
23710
+ class="k-table-td"
23711
+ [attr.aria-selected]="lockedColumnsCount < 1 && isSelectable({ dataItem: item.data, index: $any(item).index }) ? isAriaSelected(item, column) : undefined"
23712
+ [class.k-grid-content-sticky]="column.sticky"
23713
+ [class.k-touch-action-none]="isSelectable({ dataItem: item.data, index: $any(item).index }) && $any(selectable).drag"
23714
+ [ngClass]="column.cssClass"
23715
+ [class.k-grid-edit-cell]="isEditingCell($any(item).index, column)"
23716
+ [ngStyle]="column.sticky ? addStickyColumnStyles(column) : column.style"
23717
+ [attr.colspan]="column.colspan"
23718
+ [class.k-selected]="isSelectable && cellSelectionService.isCellSelected(item, column)"
23719
+ [class.k-highlighted]="item.cells[lockedColumnsCount + columnIndex]?.isHighlighted">
23720
+ </td>
23721
+ }
23420
23722
  }
23421
23723
  }
23422
23724
  }
@@ -23491,8 +23793,10 @@ class TableBodyComponent {
23491
23793
  [logicalCellsCount]="columns.length"
23492
23794
  [logicalSlaveCellsCount]="unlockedColumnsCount(item)">
23493
23795
  @if (!skipGroupDecoration) {
23494
- @for (g of groups; track $index) {
23495
- <td class="k-group-cell k-table-td k-table-group-td"></td>
23796
+ @if (groupingMode === 'default') {
23797
+ @for (g of groups; track $index) {
23798
+ <td class="k-group-cell k-table-td k-table-group-td"></td>
23799
+ }
23496
23800
  }
23497
23801
  }
23498
23802
  @if (detailTemplate?.templateRef && !isStackedMode) {
@@ -23555,7 +23859,7 @@ class TableBodyComponent {
23555
23859
  @if (rowSticky) {
23556
23860
  <kendo-resize-sensor (resize)="resizeHandler()"></kendo-resize-sensor>
23557
23861
  }
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"] }] });
23862
+ `, 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
23863
  }
23560
23864
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.26", ngImport: i0, type: TableBodyComponent, decorators: [{
23561
23865
  type: Component,
@@ -23572,8 +23876,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.26", ngImpo
23572
23876
  [logicalSlaveCellsCount]="unlockedColumnsCount()"
23573
23877
  [totalColumns]="totalColumns">
23574
23878
  @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>
23879
+ @if (groupingMode === 'default') {
23880
+ @for (g of groups; track $index) {
23881
+ <td class="k-group-cell k-table-td k-table-group-td" role="presentation"></td>
23882
+ }
23577
23883
  }
23578
23884
  }
23579
23885
  @if (detailTemplate?.templateRef && !isStackedMode) {
@@ -23660,7 +23966,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.26", ngImpo
23660
23966
  [logicalSlaveRow]="lockedColumnsCount > 0 && !isStackedMode"
23661
23967
  [totalColumns]="totalColumns"
23662
23968
  [logicalCellsCount]="columns.length"
23663
- [logicalSlaveCellsCount]="0">
23969
+ [logicalSlaveCellsCount]="0"
23970
+ [groupingMode]="groupingMode">
23664
23971
  </tr>
23665
23972
  }
23666
23973
  @if (item.showDataItem) {
@@ -23686,8 +23993,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.26", ngImpo
23686
23993
  [class.k-selected]="isSelectable({ dataItem: item.data, index: $any(item).index }) && isRowSelected(item)"
23687
23994
  [class.k-highlighted]="item.isHighlighted">
23688
23995
  @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>
23996
+ @if (groupingMode === 'default') {
23997
+ @for (g of groups; track $index) {
23998
+ <td class="k-group-cell k-table-td k-table-group-td" role="presentation"></td>
23999
+ }
23691
24000
  }
23692
24001
  }
23693
24002
  @if (detailTemplate?.templateRef && !isStackedMode) {
@@ -23737,37 +24046,44 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.26", ngImpo
23737
24046
  } @else {
23738
24047
  @for (column of columns; track virtualColumns ? $index : column; let columnIndex = $index) {
23739
24048
  @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>
24049
+ @if ($any(column).isGroupColumn) {
24050
+ <td class="k-table-group-td k-group-cell k-table-td" role="presentation"
24051
+ [ngStyle]="column.sticky ? addStickyColumnStyles(column) : null"
24052
+ [class.k-grid-content-sticky]="column.sticky"
24053
+ ></td>
24054
+ } @else {
24055
+ <td
24056
+ kendoGridCell
24057
+ [rowIndex]="$any(item).index"
24058
+ [columnIndex]="lockedColumnsCount + columnIndex"
24059
+ [attr.data-kendo-grid-column-index]="lockedColumnsCount + columnIndex"
24060
+ [column]="column"
24061
+ [columns]="allColumns"
24062
+ [dataItem]="item.data"
24063
+ [isLoading]="isLoading"
24064
+ [isVirtual]="isVirtual"
24065
+ [loadingTemplate]="cellLoadingTemplate"
24066
+ kendoGridLogicalCell
24067
+ [logicalRowIndex]="logicalRowIndex(rowIndex)"
24068
+ [logicalColIndex]="logicalColIndex(column)"
24069
+ [dataRowIndex]="$any(item).index"
24070
+ [dataItem]="item.data"
24071
+ [colIndex]="columnIndex"
24072
+ [colSpan]="column.colspan"
24073
+ [rowSpan]="item.cells[lockedColumnsCount + columnIndex]?.rowspan"
24074
+ [attr.role]="column.tableCellsRole"
24075
+ class="k-table-td"
24076
+ [attr.aria-selected]="lockedColumnsCount < 1 && isSelectable({ dataItem: item.data, index: $any(item).index }) ? isAriaSelected(item, column) : undefined"
24077
+ [class.k-grid-content-sticky]="column.sticky"
24078
+ [class.k-touch-action-none]="isSelectable({ dataItem: item.data, index: $any(item).index }) && $any(selectable).drag"
24079
+ [ngClass]="column.cssClass"
24080
+ [class.k-grid-edit-cell]="isEditingCell($any(item).index, column)"
24081
+ [ngStyle]="column.sticky ? addStickyColumnStyles(column) : column.style"
24082
+ [attr.colspan]="column.colspan"
24083
+ [class.k-selected]="isSelectable && cellSelectionService.isCellSelected(item, column)"
24084
+ [class.k-highlighted]="item.cells[lockedColumnsCount + columnIndex]?.isHighlighted">
24085
+ </td>
24086
+ }
23771
24087
  }
23772
24088
  }
23773
24089
  }
@@ -23842,8 +24158,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.26", ngImpo
23842
24158
  [logicalCellsCount]="columns.length"
23843
24159
  [logicalSlaveCellsCount]="unlockedColumnsCount(item)">
23844
24160
  @if (!skipGroupDecoration) {
23845
- @for (g of groups; track $index) {
23846
- <td class="k-group-cell k-table-td k-table-group-td"></td>
24161
+ @if (groupingMode === 'default') {
24162
+ @for (g of groups; track $index) {
24163
+ <td class="k-group-cell k-table-td k-table-group-td"></td>
24164
+ }
23847
24165
  }
23848
24166
  }
23849
24167
  @if (detailTemplate?.templateRef && !isStackedMode) {
@@ -23965,6 +24283,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.26", ngImpo
23965
24283
  type: Input
23966
24284
  }], pinPosition: [{
23967
24285
  type: Input
24286
+ }], groupingMode: [{
24287
+ type: Input
23968
24288
  }], hostClass: [{
23969
24289
  type: HostBinding,
23970
24290
  args: ['class.k-table-tbody']
@@ -24834,8 +25154,8 @@ const packageMetadata = {
24834
25154
  productName: 'Kendo UI for Angular',
24835
25155
  productCode: 'KENDOUIANGULAR',
24836
25156
  productCodes: ['KENDOUIANGULAR'],
24837
- publishDate: 1785493245,
24838
- version: '25.0.0-develop.17',
25157
+ publishDate: 1785502330,
25158
+ version: '25.0.0-develop.18',
24839
25159
  licensingDocsUrl: 'https://www.telerik.com/kendo-angular-ui/my-license/'
24840
25160
  };
24841
25161
 
@@ -25542,6 +25862,67 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.26", ngImpo
25542
25862
  type: Injectable
25543
25863
  }], ctorParameters: () => [{ type: ContextService }, { type: ColumnInfoService }, { type: i0.NgZone }] });
25544
25864
 
25865
+ /**
25866
+ * Represents the column for displaying groups in the 'singleColumn' and 'multipleColumns' grouping modes.
25867
+ *
25868
+ * @hidden
25869
+ */
25870
+ class GroupColumnComponent extends ColumnBase {
25871
+ localization;
25872
+ isGroupColumn = true;
25873
+ groupLevel = -1;
25874
+ includeInChooser = false;
25875
+ dataColumnDisplayTitle;
25876
+ groupingMode;
25877
+ // Not data-bound
25878
+ sortable = false;
25879
+ filterable = false;
25880
+ editable = false;
25881
+ groupable = false;
25882
+ constructor(localization, parent, idService) {
25883
+ super(parent, idService);
25884
+ this.localization = localization;
25885
+ }
25886
+ get displayTitle() {
25887
+ if (this.title) {
25888
+ return this.title;
25889
+ }
25890
+ if (this.groupingMode === 'singleColumn') {
25891
+ return this.localization.get('groupsSingleColumnTitle');
25892
+ }
25893
+ else {
25894
+ return this.dataColumnDisplayTitle;
25895
+ }
25896
+ }
25897
+ 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 });
25898
+ 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 });
25899
+ }
25900
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.26", ngImport: i0, type: GroupColumnComponent, decorators: [{
25901
+ type: Component,
25902
+ args: [{
25903
+ providers: [{ provide: ColumnBase, useExisting: forwardRef(() => GroupColumnComponent) }],
25904
+ selector: 'kendo-grid-group-column',
25905
+ template: ``,
25906
+ standalone: true
25907
+ }]
25908
+ }], ctorParameters: () => [{ type: i1$2.LocalizationService }, { type: ColumnBase, decorators: [{
25909
+ type: SkipSelf
25910
+ }, {
25911
+ type: Host
25912
+ }, {
25913
+ type: Optional
25914
+ }] }, { type: IdService, decorators: [{
25915
+ type: Optional
25916
+ }] }], propDecorators: { sortable: [{
25917
+ type: Input
25918
+ }], filterable: [{
25919
+ type: Input
25920
+ }], editable: [{
25921
+ type: Input
25922
+ }], groupable: [{
25923
+ type: Input
25924
+ }] } });
25925
+
25545
25926
  /**
25546
25927
  * @hidden
25547
25928
  */
@@ -26374,11 +26755,12 @@ class NavigationMetadata {
26374
26755
  isStacked;
26375
26756
  pinnedTopRowsCount;
26376
26757
  pinnedBottomRowsCount;
26758
+ isColumnsGroupMode;
26377
26759
  get maxLogicalRowIndex() {
26378
26760
  const dataRows = this.hasDetailTemplate ? this.dataRows * 2 : this.dataRows;
26379
26761
  return this.headerRows + this.pinnedTopRowsCount + dataRows + this.pinnedBottomRowsCount + this.footerRow - 1;
26380
26762
  }
26381
- constructor(dataRows, headerRows, isVirtual, hasPager, hasDetailTemplate, gridElement, virtualColumns, columns, footerRow, isStacked, pinnedTopRowsCount = 0, pinnedBottomRowsCount = 0) {
26763
+ constructor(dataRows, headerRows, isVirtual, hasPager, hasDetailTemplate, gridElement, virtualColumns, columns, footerRow, isStacked, pinnedTopRowsCount = 0, pinnedBottomRowsCount = 0, isColumnsGroupMode) {
26382
26764
  this.dataRows = dataRows;
26383
26765
  this.headerRows = headerRows;
26384
26766
  this.isVirtual = isVirtual;
@@ -26391,6 +26773,7 @@ class NavigationMetadata {
26391
26773
  this.isStacked = isStacked;
26392
26774
  this.pinnedTopRowsCount = pinnedTopRowsCount;
26393
26775
  this.pinnedBottomRowsCount = pinnedBottomRowsCount;
26776
+ this.isColumnsGroupMode = isColumnsGroupMode;
26394
26777
  }
26395
26778
  }
26396
26779
 
@@ -27705,6 +28088,14 @@ class TableDirective {
27705
28088
  if (!info.isParentSpan || (info.isParentSpan && info.isLastInSpan)) {
27706
28089
  data = pipe(row('tbody>tr:not(.k-grouping-row):not(.k-grid-norecords)'), cell(info.index), offsetWidth)(dom);
27707
28090
  }
28091
+ if (info.index === -1) {
28092
+ dom.querySelectorAll('tbody>tr.k-grouping-row').forEach((groupRow) => {
28093
+ const groupCell = groupRow.querySelectorAll('td:not(.k-group-cell):not(.k-hierarchy-cell)')[0];
28094
+ if (groupCell) {
28095
+ data = Math.max(data, groupCell.offsetWidth);
28096
+ }
28097
+ });
28098
+ }
27708
28099
  const footer = pipe(row('tfoot>tr'), cell(info.index), offsetWidth)(dom);
27709
28100
  return Math.max(header, data, footer);
27710
28101
  }
@@ -28652,6 +29043,7 @@ class StickyGroupContainerComponent {
28652
29043
  tableWidth;
28653
29044
  lockedWidth;
28654
29045
  isLocked = false;
29046
+ groupingMode = 'default';
28655
29047
  hostClass = true;
28656
29048
  get isBottom() {
28657
29049
  return this.position === 'bottom';
@@ -28904,7 +29296,7 @@ class StickyGroupContainerComponent {
28904
29296
  * Triggers the scroll-to-root-and-toggle flow via the service.
28905
29297
  * The list component handles actual scrolling, toggling, and focus.
28906
29298
  */
28907
- scrollToGroupAndToggle(stickyItem, groupLevel) {
29299
+ scrollToGroupAndToggle(stickyItem, _groupLevel) {
28908
29300
  const groupItem = stickyItem.item;
28909
29301
  const groupIndex = groupItem.index;
28910
29302
  this.stickyGroupsService.pendingFocusGroupIndex = groupIndex;
@@ -29112,7 +29504,7 @@ class StickyGroupContainerComponent {
29112
29504
  }
29113
29505
  }
29114
29506
  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: [
29507
+ 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
29508
  { provide: SKIP_CELL_NAVIGATION, useValue: true }
29117
29509
  ], ngImport: i0, template: `
29118
29510
  @if (isLocked) {
@@ -29128,7 +29520,8 @@ class StickyGroupContainerComponent {
29128
29520
  <colgroup kendoGridColGroup
29129
29521
  [groups]="groups"
29130
29522
  [columns]="$any(lockedColumns)"
29131
- [detailTemplate]="detailTemplate">
29523
+ [detailTemplate]="detailTemplate"
29524
+ [groupingMode]="groupingMode">
29132
29525
  </colgroup>
29133
29526
  <tbody class="k-table-tbody" role="presentation">
29134
29527
  @if (position === 'top') {
@@ -29148,7 +29541,8 @@ class StickyGroupContainerComponent {
29148
29541
  [attr.aria-rowindex]="stickyItem.flatIndex + 1"
29149
29542
  [attr.data-group-index]="$any(stickyItem.item).index"
29150
29543
  [attr.data-group-level]="$any(stickyItem.item).level"
29151
- tabindex="-1">
29544
+ tabindex="-1"
29545
+ [groupingMode]="groupingMode">
29152
29546
  </tr>
29153
29547
  }
29154
29548
  }
@@ -29158,8 +29552,10 @@ class StickyGroupContainerComponent {
29158
29552
  class="k-group-footer"
29159
29553
  [attr.aria-rowindex]="stickyItem.flatIndex + 1"
29160
29554
  [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>
29555
+ @if (groupingMode === 'default') {
29556
+ @for (g of groups; track $index) {
29557
+ <td class="k-group-cell k-table-td k-table-group-td" role="presentation"></td>
29558
+ }
29163
29559
  }
29164
29560
  @if (detailTemplate?.templateRef) {
29165
29561
  <td class="k-hierarchy-cell k-table-td" role="gridcell"
@@ -29204,7 +29600,8 @@ class StickyGroupContainerComponent {
29204
29600
  <colgroup kendoGridColGroup
29205
29601
  [groups]="isLocked ? [] : groups"
29206
29602
  [columns]="$any(columns)"
29207
- [detailTemplate]="isLocked ? null : detailTemplate">
29603
+ [detailTemplate]="isLocked ? null : detailTemplate"
29604
+ [groupingMode]="groupingMode">
29208
29605
  </colgroup>
29209
29606
  <tbody class="k-table-tbody" role="rowgroup">
29210
29607
  @if (position === 'top') {
@@ -29224,7 +29621,8 @@ class StickyGroupContainerComponent {
29224
29621
  [attr.aria-rowindex]="stickyItem.flatIndex + 1"
29225
29622
  [attr.data-group-index]="$any(stickyItem.item).index"
29226
29623
  [attr.data-group-level]="$any(stickyItem.item).level"
29227
- tabindex="-1">
29624
+ tabindex="-1"
29625
+ [groupingMode]="groupingMode">
29228
29626
  </tr>
29229
29627
  }
29230
29628
  }
@@ -29235,8 +29633,10 @@ class StickyGroupContainerComponent {
29235
29633
  [attr.aria-rowindex]="stickyItem.flatIndex + 1"
29236
29634
  [attr.data-sticky-row]="rowIdx">
29237
29635
  @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>
29636
+ @if (groupingMode === 'default') {
29637
+ @for (g of groups; track $index) {
29638
+ <td class="k-group-cell k-table-td k-table-group-td" role="presentation"></td>
29639
+ }
29240
29640
  }
29241
29641
  @if (detailTemplate?.templateRef && !isStacked) {
29242
29642
  <td class="k-hierarchy-cell k-table-td" role="gridcell"
@@ -29291,7 +29691,7 @@ class StickyGroupContainerComponent {
29291
29691
  </tbody>
29292
29692
  </table>
29293
29693
  </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 });
29694
+ `, 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
29695
  }
29296
29696
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.26", ngImport: i0, type: StickyGroupContainerComponent, decorators: [{
29297
29697
  type: Component,
@@ -29312,7 +29712,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.26", ngImpo
29312
29712
  <colgroup kendoGridColGroup
29313
29713
  [groups]="groups"
29314
29714
  [columns]="$any(lockedColumns)"
29315
- [detailTemplate]="detailTemplate">
29715
+ [detailTemplate]="detailTemplate"
29716
+ [groupingMode]="groupingMode">
29316
29717
  </colgroup>
29317
29718
  <tbody class="k-table-tbody" role="presentation">
29318
29719
  @if (position === 'top') {
@@ -29332,7 +29733,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.26", ngImpo
29332
29733
  [attr.aria-rowindex]="stickyItem.flatIndex + 1"
29333
29734
  [attr.data-group-index]="$any(stickyItem.item).index"
29334
29735
  [attr.data-group-level]="$any(stickyItem.item).level"
29335
- tabindex="-1">
29736
+ tabindex="-1"
29737
+ [groupingMode]="groupingMode">
29336
29738
  </tr>
29337
29739
  }
29338
29740
  }
@@ -29342,8 +29744,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.26", ngImpo
29342
29744
  class="k-group-footer"
29343
29745
  [attr.aria-rowindex]="stickyItem.flatIndex + 1"
29344
29746
  [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>
29747
+ @if (groupingMode === 'default') {
29748
+ @for (g of groups; track $index) {
29749
+ <td class="k-group-cell k-table-td k-table-group-td" role="presentation"></td>
29750
+ }
29347
29751
  }
29348
29752
  @if (detailTemplate?.templateRef) {
29349
29753
  <td class="k-hierarchy-cell k-table-td" role="gridcell"
@@ -29388,7 +29792,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.26", ngImpo
29388
29792
  <colgroup kendoGridColGroup
29389
29793
  [groups]="isLocked ? [] : groups"
29390
29794
  [columns]="$any(columns)"
29391
- [detailTemplate]="isLocked ? null : detailTemplate">
29795
+ [detailTemplate]="isLocked ? null : detailTemplate"
29796
+ [groupingMode]="groupingMode">
29392
29797
  </colgroup>
29393
29798
  <tbody class="k-table-tbody" role="rowgroup">
29394
29799
  @if (position === 'top') {
@@ -29408,7 +29813,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.26", ngImpo
29408
29813
  [attr.aria-rowindex]="stickyItem.flatIndex + 1"
29409
29814
  [attr.data-group-index]="$any(stickyItem.item).index"
29410
29815
  [attr.data-group-level]="$any(stickyItem.item).level"
29411
- tabindex="-1">
29816
+ tabindex="-1"
29817
+ [groupingMode]="groupingMode">
29412
29818
  </tr>
29413
29819
  }
29414
29820
  }
@@ -29419,8 +29825,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.26", ngImpo
29419
29825
  [attr.aria-rowindex]="stickyItem.flatIndex + 1"
29420
29826
  [attr.data-sticky-row]="rowIdx">
29421
29827
  @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>
29828
+ @if (groupingMode === 'default') {
29829
+ @for (g of groups; track $index) {
29830
+ <td class="k-group-cell k-table-td k-table-group-td" role="presentation"></td>
29831
+ }
29424
29832
  }
29425
29833
  @if (detailTemplate?.templateRef && !isStacked) {
29426
29834
  <td class="k-hierarchy-cell k-table-td" role="gridcell"
@@ -29508,6 +29916,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.26", ngImpo
29508
29916
  type: Input
29509
29917
  }], isLocked: [{
29510
29918
  type: Input
29919
+ }], groupingMode: [{
29920
+ type: Input
29511
29921
  }], hostClass: [{
29512
29922
  type: HostBinding,
29513
29923
  args: ['class.k-grid-sticky-container']
@@ -29622,6 +30032,7 @@ class ListComponent {
29622
30032
  loadingTemplate;
29623
30033
  sort = new Array();
29624
30034
  size;
30035
+ groupingMode = 'default';
29625
30036
  contentScroll = new EventEmitter();
29626
30037
  pageChange = new EventEmitter();
29627
30038
  scrollBottom = new EventEmitter();
@@ -29687,7 +30098,9 @@ class ListComponent {
29687
30098
  return this.columns.leafColumnsToRender;
29688
30099
  }
29689
30100
  get lockedWidth() {
29690
- const groupCellsWidth = this.groups.length * GROUP_CELL_WIDTH;
30101
+ const groupCellsWidth = this.groupingMode === 'default'
30102
+ ? this.groups.length * GROUP_CELL_WIDTH
30103
+ : 0;
29691
30104
  return expandColumns(this.lockedLeafColumns.toArray()).reduce((prev, curr) => prev + (curr.width || 0), groupCellsWidth);
29692
30105
  }
29693
30106
  get nonLockedWidth() {
@@ -30817,7 +31230,10 @@ class ListComponent {
30817
31230
  for (let idx = 0; idx < column; idx++) {
30818
31231
  offset += columns[idx].width || 0;
30819
31232
  }
30820
- const startOffset = this.lockedLeafColumns.length ? 0 : this.groups.length * GROUP_CELL_WIDTH + (this.detailTemplate && column > 0 ? GROUP_CELL_WIDTH : 0);
31233
+ const groupOffset = this.groupingMode === 'default'
31234
+ ? this.groups.length * GROUP_CELL_WIDTH
31235
+ : 0;
31236
+ const startOffset = this.lockedLeafColumns.length ? 0 : groupOffset + (this.detailTemplate && column > 0 ? GROUP_CELL_WIDTH : 0);
30821
31237
  this.container.nativeElement.scrollLeft = this.normalizeScrollLeft(offset + startOffset);
30822
31238
  }
30823
31239
  else if (column === 0 && this.detailTemplate) {
@@ -30963,7 +31379,7 @@ class ListComponent {
30963
31379
  this.scroller.total = this.isVirtual && !this.ctx.grid?.pageable ? this.total : this.allItems.length;
30964
31380
  }
30965
31381
  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: [
31382
+ 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
31383
  {
30968
31384
  provide: SCROLLER_FACTORY_TOKEN,
30969
31385
  useValue: DEFAULT_SCROLLER_FACTORY
@@ -30982,7 +31398,8 @@ class ListComponent {
30982
31398
  [groupHeaderColumns]="stickyGroupHeaderColumns"
30983
31399
  [tableWidth]="nonLockedWidth"
30984
31400
  [lockedWidth]="lockedWidth"
30985
- [isLocked]="isLocked">
31401
+ [isLocked]="isLocked"
31402
+ [groupingMode]="groupingMode">
30986
31403
  </div>
30987
31404
  }
30988
31405
  @if (isLocked && !isStacked) {
@@ -31010,7 +31427,8 @@ class ListComponent {
31010
31427
  [groups]="groups"
31011
31428
  [columns]="$any(lockedLeafColumns)"
31012
31429
  [detailTemplate]="detailTemplate"
31013
- [sort]="sort">
31430
+ [sort]="sort"
31431
+ [groupingMode]="groupingMode">
31014
31432
  </colgroup>
31015
31433
  <tbody kendoGridTableBody
31016
31434
  role="presentation"
@@ -31031,7 +31449,8 @@ class ListComponent {
31031
31449
  [rowClass]="rowClass"
31032
31450
  [isLoading]="loading"
31033
31451
  [isVirtual]="isVirtual"
31034
- [cellLoadingTemplate]="cellLoadingTemplate">
31452
+ [cellLoadingTemplate]="cellLoadingTemplate"
31453
+ [groupingMode]="groupingMode">
31035
31454
  </tbody>
31036
31455
  </table>
31037
31456
  <kendo-resize-sensor></kendo-resize-sensor>
@@ -31064,7 +31483,8 @@ class ListComponent {
31064
31483
  [groups]="isLocked ? [] : groups"
31065
31484
  [columns]="$any(nonLockedColumnsToRender)"
31066
31485
  [detailTemplate]="detailTemplate"
31067
- [sort]="sort">
31486
+ [sort]="sort"
31487
+ [groupingMode]="groupingMode">
31068
31488
  </colgroup>
31069
31489
  <tbody kendoGridTableBody
31070
31490
  role="rowgroup"
@@ -31089,7 +31509,8 @@ class ListComponent {
31089
31509
  [isVirtual]="isVirtual"
31090
31510
  [cellLoadingTemplate]="cellLoadingTemplate"
31091
31511
  [rowHeight]="rowHeight"
31092
- [detailRowHeight]="detailRowHeight">
31512
+ [detailRowHeight]="detailRowHeight"
31513
+ [groupingMode]="groupingMode">
31093
31514
  </tbody>
31094
31515
  </table>
31095
31516
  @if (isLocked) {
@@ -31123,10 +31544,11 @@ class ListComponent {
31123
31544
  [groupHeaderColumns]="stickyGroupHeaderColumns"
31124
31545
  [tableWidth]="nonLockedWidth"
31125
31546
  [lockedWidth]="lockedWidth"
31126
- [isLocked]="isLocked">
31547
+ [isLocked]="isLocked"
31548
+ [groupingMode]="groupingMode">
31127
31549
  </div>
31128
31550
  }
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 });
31551
+ `, 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
31552
  }
31131
31553
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.26", ngImport: i0, type: ListComponent, decorators: [{
31132
31554
  type: Component,
@@ -31153,7 +31575,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.26", ngImpo
31153
31575
  [groupHeaderColumns]="stickyGroupHeaderColumns"
31154
31576
  [tableWidth]="nonLockedWidth"
31155
31577
  [lockedWidth]="lockedWidth"
31156
- [isLocked]="isLocked">
31578
+ [isLocked]="isLocked"
31579
+ [groupingMode]="groupingMode">
31157
31580
  </div>
31158
31581
  }
31159
31582
  @if (isLocked && !isStacked) {
@@ -31181,7 +31604,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.26", ngImpo
31181
31604
  [groups]="groups"
31182
31605
  [columns]="$any(lockedLeafColumns)"
31183
31606
  [detailTemplate]="detailTemplate"
31184
- [sort]="sort">
31607
+ [sort]="sort"
31608
+ [groupingMode]="groupingMode">
31185
31609
  </colgroup>
31186
31610
  <tbody kendoGridTableBody
31187
31611
  role="presentation"
@@ -31202,7 +31626,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.26", ngImpo
31202
31626
  [rowClass]="rowClass"
31203
31627
  [isLoading]="loading"
31204
31628
  [isVirtual]="isVirtual"
31205
- [cellLoadingTemplate]="cellLoadingTemplate">
31629
+ [cellLoadingTemplate]="cellLoadingTemplate"
31630
+ [groupingMode]="groupingMode">
31206
31631
  </tbody>
31207
31632
  </table>
31208
31633
  <kendo-resize-sensor></kendo-resize-sensor>
@@ -31235,7 +31660,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.26", ngImpo
31235
31660
  [groups]="isLocked ? [] : groups"
31236
31661
  [columns]="$any(nonLockedColumnsToRender)"
31237
31662
  [detailTemplate]="detailTemplate"
31238
- [sort]="sort">
31663
+ [sort]="sort"
31664
+ [groupingMode]="groupingMode">
31239
31665
  </colgroup>
31240
31666
  <tbody kendoGridTableBody
31241
31667
  role="rowgroup"
@@ -31260,7 +31686,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.26", ngImpo
31260
31686
  [isVirtual]="isVirtual"
31261
31687
  [cellLoadingTemplate]="cellLoadingTemplate"
31262
31688
  [rowHeight]="rowHeight"
31263
- [detailRowHeight]="detailRowHeight">
31689
+ [detailRowHeight]="detailRowHeight"
31690
+ [groupingMode]="groupingMode">
31264
31691
  </tbody>
31265
31692
  </table>
31266
31693
  @if (isLocked) {
@@ -31294,7 +31721,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.26", ngImpo
31294
31721
  [groupHeaderColumns]="stickyGroupHeaderColumns"
31295
31722
  [tableWidth]="nonLockedWidth"
31296
31723
  [lockedWidth]="lockedWidth"
31297
- [isLocked]="isLocked">
31724
+ [isLocked]="isLocked"
31725
+ [groupingMode]="groupingMode">
31298
31726
  </div>
31299
31727
  }
31300
31728
  `,
@@ -31356,6 +31784,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.26", ngImpo
31356
31784
  type: Input
31357
31785
  }], size: [{
31358
31786
  type: Input
31787
+ }], groupingMode: [{
31788
+ type: Input
31359
31789
  }], contentScroll: [{
31360
31790
  type: Output
31361
31791
  }], pageChange: [{
@@ -32264,8 +32694,12 @@ class GridMessages extends ComponentMessages {
32264
32694
  * Sets the label for the Grid row unpin column icon.
32265
32695
  */
32266
32696
  rowUnpinLabel;
32697
+ /**
32698
+ * Sets the text for the group column's header when group mode is **singleColumn**.
32699
+ */
32700
+ groupsSingleColumnTitle;
32267
32701
  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 });
32702
+ 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
32703
  }
32270
32704
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.26", ngImport: i0, type: GridMessages, decorators: [{
32271
32705
  type: Directive,
@@ -32596,6 +33030,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.26", ngImpo
32596
33030
  type: Input
32597
33031
  }], rowUnpinLabel: [{
32598
33032
  type: Input
33033
+ }], groupsSingleColumnTitle: [{
33034
+ type: Input
32599
33035
  }] } });
32600
33036
 
32601
33037
  /**
@@ -33721,7 +34157,7 @@ class GroupToolbarToolComponent {
33721
34157
  [class.k-disabled]="i === 0"
33722
34158
  >
33723
34159
  <kendo-icon-wrapper
33724
- name="arrow-chevron-up"
34160
+ name="chevron-up"
33725
34161
  [svgIcon]="upIcon"
33726
34162
  [size]="iconSize"
33727
34163
  ></kendo-icon-wrapper>
@@ -33733,7 +34169,7 @@ class GroupToolbarToolComponent {
33733
34169
  [class.k-disabled]="i === groupedColumns.length - 1"
33734
34170
  >
33735
34171
  <kendo-icon-wrapper
33736
- name="arrow-chevron-down"
34172
+ name="chevron-down"
33737
34173
  [svgIcon]="downIcon"
33738
34174
  [size]="iconSize"
33739
34175
  ></kendo-icon-wrapper>
@@ -33821,7 +34257,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.26", ngImpo
33821
34257
  [class.k-disabled]="i === 0"
33822
34258
  >
33823
34259
  <kendo-icon-wrapper
33824
- name="arrow-chevron-up"
34260
+ name="chevron-up"
33825
34261
  [svgIcon]="upIcon"
33826
34262
  [size]="iconSize"
33827
34263
  ></kendo-icon-wrapper>
@@ -33833,7 +34269,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.26", ngImpo
33833
34269
  [class.k-disabled]="i === groupedColumns.length - 1"
33834
34270
  >
33835
34271
  <kendo-icon-wrapper
33836
- name="arrow-chevron-down"
34272
+ name="chevron-down"
33837
34273
  [svgIcon]="downIcon"
33838
34274
  [size]="iconSize"
33839
34275
  ></kendo-icon-wrapper>
@@ -35236,6 +35672,7 @@ class RowPinContainerComponent {
35236
35672
  detailRowHeight;
35237
35673
  loading;
35238
35674
  size;
35675
+ groupingMode = 'default';
35239
35676
  constructor(localization) {
35240
35677
  this.localization = localization;
35241
35678
  }
@@ -35249,7 +35686,7 @@ class RowPinContainerComponent {
35249
35686
  return this.localization.get(labelKey);
35250
35687
  }
35251
35688
  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: `
35689
+ 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
35690
  @if (isLocked) {
35254
35691
  <div class="k-grid-content-locked" role="presentation" [style.width.px]="lockedWidth">
35255
35692
  <table #lockedTable class="k-grid-table"
@@ -35262,7 +35699,8 @@ class RowPinContainerComponent {
35262
35699
  [groups]="groups"
35263
35700
  [columns]="$any(lockedLeafColumns)"
35264
35701
  [sort]="sort"
35265
- [detailTemplate]="detailTemplate">
35702
+ [detailTemplate]="detailTemplate"
35703
+ [groupingMode]="groupingMode">
35266
35704
  </colgroup>
35267
35705
  <tbody kendoGridTableBody
35268
35706
  role="presentation"
@@ -35280,7 +35718,8 @@ class RowPinContainerComponent {
35280
35718
  [filterable]="filterable"
35281
35719
  [rowHeight]="rowHeight"
35282
35720
  [detailRowHeight]="detailRowHeight"
35283
- [isLoading]="loading">
35721
+ [isLoading]="loading"
35722
+ [groupingMode]="groupingMode">
35284
35723
  </tbody>
35285
35724
  </table>
35286
35725
  </div>
@@ -35295,7 +35734,8 @@ class RowPinContainerComponent {
35295
35734
  [columns]="$any(nonLockedLeafColumns)"
35296
35735
  [sort]="sort"
35297
35736
  [groups]="isLocked ? [] : groups"
35298
- [detailTemplate]="detailTemplate">
35737
+ [detailTemplate]="detailTemplate"
35738
+ [groupingMode]="groupingMode">
35299
35739
  </colgroup>
35300
35740
  <tbody kendoGridTableBody
35301
35741
  role="presentation"
@@ -35313,11 +35753,12 @@ class RowPinContainerComponent {
35313
35753
  [detailTemplate]="detailTemplate"
35314
35754
  [filterable]="filterable"
35315
35755
  [rowHeight]="rowHeight"
35316
- [detailRowHeight]="detailRowHeight">
35756
+ [detailRowHeight]="detailRowHeight"
35757
+ [groupingMode]="groupingMode">
35317
35758
  </tbody>
35318
35759
  </table>
35319
35760
  </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"] }] });
35761
+ `, 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
35762
  }
35322
35763
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.26", ngImport: i0, type: RowPinContainerComponent, decorators: [{
35323
35764
  type: Component,
@@ -35336,7 +35777,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.26", ngImpo
35336
35777
  [groups]="groups"
35337
35778
  [columns]="$any(lockedLeafColumns)"
35338
35779
  [sort]="sort"
35339
- [detailTemplate]="detailTemplate">
35780
+ [detailTemplate]="detailTemplate"
35781
+ [groupingMode]="groupingMode">
35340
35782
  </colgroup>
35341
35783
  <tbody kendoGridTableBody
35342
35784
  role="presentation"
@@ -35354,7 +35796,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.26", ngImpo
35354
35796
  [filterable]="filterable"
35355
35797
  [rowHeight]="rowHeight"
35356
35798
  [detailRowHeight]="detailRowHeight"
35357
- [isLoading]="loading">
35799
+ [isLoading]="loading"
35800
+ [groupingMode]="groupingMode">
35358
35801
  </tbody>
35359
35802
  </table>
35360
35803
  </div>
@@ -35369,7 +35812,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.26", ngImpo
35369
35812
  [columns]="$any(nonLockedLeafColumns)"
35370
35813
  [sort]="sort"
35371
35814
  [groups]="isLocked ? [] : groups"
35372
- [detailTemplate]="detailTemplate">
35815
+ [detailTemplate]="detailTemplate"
35816
+ [groupingMode]="groupingMode">
35373
35817
  </colgroup>
35374
35818
  <tbody kendoGridTableBody
35375
35819
  role="presentation"
@@ -35387,7 +35831,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.26", ngImpo
35387
35831
  [detailTemplate]="detailTemplate"
35388
35832
  [filterable]="filterable"
35389
35833
  [rowHeight]="rowHeight"
35390
- [detailRowHeight]="detailRowHeight">
35834
+ [detailRowHeight]="detailRowHeight"
35835
+ [groupingMode]="groupingMode">
35391
35836
  </tbody>
35392
35837
  </table>
35393
35838
  </div>
@@ -35449,6 +35894,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.26", ngImpo
35449
35894
  type: Input
35450
35895
  }], size: [{
35451
35896
  type: Input
35897
+ }], groupingMode: [{
35898
+ type: Input
35452
35899
  }] } });
35453
35900
 
35454
35901
  /**
@@ -35886,6 +36333,24 @@ class GridComponent {
35886
36333
  get isActionSheetExpanded() {
35887
36334
  return Boolean(this.adaptiveRenderer?.actionSheet?.expanded);
35888
36335
  }
36336
+ /**
36337
+ * @hidden
36338
+ */
36339
+ get groupingMode() {
36340
+ if (!this.groupable || this.groupable === true) {
36341
+ return 'default';
36342
+ }
36343
+ return this.groupable.displayMode ?? 'default';
36344
+ }
36345
+ /**
36346
+ * @hidden
36347
+ * The groups column in 'singleColumn' grouping mode.
36348
+ * Created once and reused across change detection cycles so that its state
36349
+ * is not lost when the view re-renders.
36350
+ */
36351
+ get singleGroupColumn() {
36352
+ return this._singleGroupColumn;
36353
+ }
35889
36354
  /**
35890
36355
  * @hidden
35891
36356
  */
@@ -36445,6 +36910,10 @@ class GridComponent {
36445
36910
  this._customToolbarTemplate = customToolbarTemplate;
36446
36911
  }
36447
36912
  columnMenuTemplates;
36913
+ set groupColumnGroupHeaderTemplates(value) {
36914
+ const template = value.first;
36915
+ this.groupInfoService.groupColumnGroupHeaderTemplate = template ? template.templateRef : null;
36916
+ }
36448
36917
  lockedHeader;
36449
36918
  header;
36450
36919
  pinnedContainers;
@@ -36610,6 +37079,9 @@ class GridComponent {
36610
37079
  _navigable = ['table', 'pager', 'toolbar'];
36611
37080
  _size;
36612
37081
  _loading = false;
37082
+ _singleGroupColumn = null;
37083
+ _multiGroupColumns = [];
37084
+ _hiddenByGrouping = new Set();
36613
37085
  _showPagerInput = true;
36614
37086
  _showPagerPageText = true;
36615
37087
  _showPagerItemsText = true;
@@ -36671,7 +37143,9 @@ class GridComponent {
36671
37143
  if (this.isStacked) {
36672
37144
  return 0;
36673
37145
  }
36674
- const groupCellsWidth = this.group.length * GROUP_CELL_WIDTH;
37146
+ const groupCellsWidth = this.groupingMode === 'default'
37147
+ ? this.group.length * GROUP_CELL_WIDTH
37148
+ : 0;
36675
37149
  return expandColumns(this.lockedLeafColumns.toArray()).reduce((prev, curr) => prev + (curr.width || 0), groupCellsWidth);
36676
37150
  }
36677
37151
  get nonLockedWidth() {
@@ -36960,6 +37434,9 @@ class GridComponent {
36960
37434
  if (this.lockedLeafColumns.length && anyChanged(["pageSize", "skip", "sort", "group"], changes)) {
36961
37435
  this.changeNotification.notify();
36962
37436
  }
37437
+ if (isChanged$1("group", changes) && (this.groupingMode === 'multipleColumns' || this.groupingMode === 'singleColumn')) {
37438
+ this.syncGroupColumn();
37439
+ }
36963
37440
  if (isChanged$1("skip", changes)) {
36964
37441
  this.updatePinnedRowTracking();
36965
37442
  }
@@ -37006,6 +37483,7 @@ class GridComponent {
37006
37483
  }
37007
37484
  if (isChanged$1('groupable', changes, true)) {
37008
37485
  this.groupable = changes['groupable'].currentValue;
37486
+ this.syncGroupColumn();
37009
37487
  }
37010
37488
  if (isChanged$1('navigable', changes, true)) {
37011
37489
  if (this.navigationService.enabled) {
@@ -37030,11 +37508,15 @@ class GridComponent {
37030
37508
  ngAfterContentInit() {
37031
37509
  this.shouldGenerateColumns = !this.columns.length;
37032
37510
  this.autoGenerateColumns();
37511
+ this.syncGroupColumn();
37512
+ this.syncHiddenGroupedColumns();
37033
37513
  this.columnList = new ColumnList(this.columns);
37034
37514
  this.columnsChangeSubscription = this.columns.changes.subscribe(() => {
37035
37515
  if (this.shouldGenerateColumns) {
37036
37516
  this.autoGenerateColumns();
37037
37517
  }
37518
+ this.syncGroupColumn();
37519
+ this.syncHiddenGroupedColumns();
37038
37520
  this.verifySettings();
37039
37521
  });
37040
37522
  }
@@ -37775,12 +38257,106 @@ class GridComponent {
37775
38257
  }
37776
38258
  autoGenerateColumns() {
37777
38259
  if (this.shouldGenerateColumns && !this.columns.length && this.view.length) {
37778
- this.columns.reset(Object.keys(this.view.at(0)).map(field => {
38260
+ const generatedColumns = Object.keys(this.view.at(0)).map(field => {
37779
38261
  const column = new ColumnComponent(undefined, this.idService);
37780
38262
  column.field = field;
37781
38263
  return column;
37782
- }));
38264
+ });
38265
+ this.columns.reset(generatedColumns);
38266
+ }
38267
+ }
38268
+ applyGroupColumnSettings(column, settings, group) {
38269
+ column.title = settings.title;
38270
+ column.width = settings.width;
38271
+ column.locked = settings.locked ?? false;
38272
+ column.lockable = settings.lockable ?? true;
38273
+ column.sticky = settings.sticky ?? false;
38274
+ column.stickable = settings.stickable ?? true;
38275
+ column.resizable = settings.resizable ?? true;
38276
+ column.resizeStep = settings.resizeStep ?? 10;
38277
+ column.minResizableWidth = settings.minResizableWidth ?? 10;
38278
+ column.maxResizableWidth = settings.maxResizableWidth;
38279
+ column.reorderable = settings.reorderable ?? true;
38280
+ column.columnMenu = settings.columnMenu ?? true;
38281
+ column.autoSize = settings.autoSize;
38282
+ column.dataColumnDisplayTitle = this.groupInfoService.columnForGroup(group).displayTitle;
38283
+ column.groupingMode = this.groupingMode;
38284
+ }
38285
+ /**
38286
+ * Ensures the correct synthesized group columns are present for the active `displayMode`:
38287
+ * - `'singleColumn'`: one shared column for all group levels.
38288
+ * - `'multipleColumns'`: one column per active group descriptor.
38289
+ * Removes all group columns when neither mode is active.
38290
+ */
38291
+ syncGroupColumn() {
38292
+ const groups = this.group || [];
38293
+ const groupColumns = this.resolveGroupColumns(groups);
38294
+ const currentColumns = this.columns.toArray();
38295
+ const nonGroupColumns = currentColumns.filter(c => !c.isGroupColumn);
38296
+ const currentGroupColumns = currentColumns.filter(c => c.isGroupColumn);
38297
+ const needsReset = groupColumns.length !== currentGroupColumns.length
38298
+ || !groupColumns.every((col, i) => currentColumns[i] === col);
38299
+ if (needsReset) {
38300
+ this.columns.reset([...groupColumns, ...nonGroupColumns]);
38301
+ this.columnList = new ColumnList(this.columns);
38302
+ }
38303
+ this.applyGroupColumnConfigs(groupColumns, groups);
38304
+ }
38305
+ resolveGroupColumns(groups) {
38306
+ if (this.groupingMode === 'singleColumn' && groups.length > 0) {
38307
+ if (!this._singleGroupColumn) {
38308
+ this._singleGroupColumn = this.createGroupColumn();
38309
+ }
38310
+ return [this._singleGroupColumn];
38311
+ }
38312
+ if (this.groupingMode === 'multipleColumns') {
38313
+ while (this._multiGroupColumns.length < groups.length) {
38314
+ this._multiGroupColumns.push(this.createGroupColumn());
38315
+ }
38316
+ const active = this._multiGroupColumns.slice(0, groups.length);
38317
+ active.forEach((col, i) => { col.groupLevel = i; });
38318
+ return active;
38319
+ }
38320
+ return [];
38321
+ }
38322
+ createGroupColumn() {
38323
+ const col = new GroupColumnComponent(this.localization, undefined, this.idService);
38324
+ col.ngAfterViewInit();
38325
+ return col;
38326
+ }
38327
+ applyGroupColumnConfigs(columns, groups) {
38328
+ const groupCol = this.groupable?.groupColumn;
38329
+ if (!groupCol || !columns.length) {
38330
+ return;
37783
38331
  }
38332
+ columns.forEach((col, i) => {
38333
+ const descriptor = this.groupingMode === 'singleColumn' ? null : groups[i];
38334
+ const settings = typeof groupCol === 'function' ? groupCol(descriptor) : groupCol;
38335
+ this.applyGroupColumnSettings(col, settings, groups[i]);
38336
+ });
38337
+ }
38338
+ syncHiddenGroupedColumns() {
38339
+ const shouldHide = this.groupable?.hideGroupedColumns === true;
38340
+ const groupedFields = new Set((this.group || []).map(g => g.field));
38341
+ this._hiddenByGrouping.forEach(col => {
38342
+ const field = col.field;
38343
+ if (!shouldHide || !groupedFields.has(field)) {
38344
+ col.hidden = undefined;
38345
+ this._hiddenByGrouping.delete(col);
38346
+ }
38347
+ });
38348
+ if (!shouldHide) {
38349
+ return;
38350
+ }
38351
+ expandColumns(this.columnList.toArray()).forEach(col => {
38352
+ if (isColumnComponent(col) && !col.hidden) {
38353
+ const field = col.field;
38354
+ if (field && groupedFields.has(field)) {
38355
+ col.hidden = true;
38356
+ this._hiddenByGrouping.add(col);
38357
+ }
38358
+ }
38359
+ });
37784
38360
  }
37785
38361
  /**
37786
38362
  * @hidden
@@ -37850,6 +38426,13 @@ class GridComponent {
37850
38426
  }
37851
38427
  this.isVirtual && this.ctx.scroller?.resetVirtualSkip();
37852
38428
  this.dataStateChange.emit(x);
38429
+ if (this.groupable) {
38430
+ const shouldSyncGroupColumns = this.groupingMode === 'singleColumn' || this.groupingMode === 'multipleColumns';
38431
+ if (shouldSyncGroupColumns) {
38432
+ this.syncGroupColumn();
38433
+ this.syncHiddenGroupedColumns();
38434
+ }
38435
+ }
37853
38436
  hasObservers(this.gridStateChange) && this.gridStateChange.emit({ ...this.currentState, ...x });
37854
38437
  });
37855
38438
  this.stateChangeSubscription.add(merge(this.columnReorder, this.columnResize, this.columnVisibilityChange, this.columnLockedChange, this.columnStickyChange).pipe(flatMap(() => this.ngZone.onStable.pipe(take(1))))
@@ -38071,7 +38654,7 @@ class GridComponent {
38071
38654
  const addRowOffset = this.editService.hasNewItem ? 1 : 0;
38072
38655
  const filterRowOffset = hasFilterRow(this.filterable) ? 1 : 0;
38073
38656
  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);
38657
+ 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
38658
  }
38076
38659
  applyAutoSize() {
38077
38660
  const cols = this.columns.filter((c) => this.autoSize ? c.autoSize !== false : c.autoSize);
@@ -38198,6 +38781,7 @@ class GridComponent {
38198
38781
  provide: KENDO_WEBMCP_HOST,
38199
38782
  useExisting: forwardRef(() => GridComponent)
38200
38783
  },
38784
+ provideComponentName('grid'),
38201
38785
  FilterService,
38202
38786
  ResponsiveService,
38203
38787
  PagerContextService,
@@ -38234,7 +38818,7 @@ class GridComponent {
38234
38818
  RowPinService,
38235
38819
  StickyGroupsService,
38236
38820
  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: `
38821
+ ], 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
38822
  <ng-container kendoGridLocalizedMessages
38239
38823
  i18n-groupPanelEmpty="kendo.grid.groupPanelEmpty|The label visible in the Grid group panel when it is empty"
38240
38824
  groupPanelEmpty="Drag a column header and drop it here to group by that column"
@@ -38721,6 +39305,9 @@ class GridComponent {
38721
39305
 
38722
39306
  i18n-rowUnpinLabel="kendo.grid.rowUnpinLabel|Sets the label for the Grid row unpin column icon"
38723
39307
  rowUnpinLabel="Unpin row"
39308
+
39309
+ i18n-groupsSingleColumnTitle="kendo.grid.groupsSingleColumnTitle|Sets the text for the group column's header when group mode is **singleColumn**."
39310
+ groupsSingleColumnTitle="Groups"
38724
39311
  >
38725
39312
  </ng-container>
38726
39313
  @if (showTopToolbar) {
@@ -38833,8 +39420,9 @@ class GridComponent {
38833
39420
  <colgroup kendoGridColGroup
38834
39421
  [columns]="$any(lockedLeafColumns)"
38835
39422
  [groups]="group"
38836
- [detailTemplate]="detailTemplate">
38837
- </colgroup>
39423
+ [detailTemplate]="detailTemplate"
39424
+ [groupingMode]="groupingMode">
39425
+ </colgroup>
38838
39426
  <thead kendoGridHeader
38839
39427
  role="rowgroup"
38840
39428
  [resizable]="resizable"
@@ -38853,7 +39441,8 @@ class GridComponent {
38853
39441
  [totalColumnsCount]="leafColumns.length"
38854
39442
  [totalColumns]="columnsContainer"
38855
39443
  [detailTemplate]="detailTemplate"
38856
- [tabIndex]="navigation.tableEnabled ? '-1' : '0'">
39444
+ [tabIndex]="navigation.tableEnabled ? '-1' : '0'"
39445
+ [groupingMode]="groupingMode">
38857
39446
  </thead>
38858
39447
  </table>
38859
39448
  </div>
@@ -38872,7 +39461,8 @@ class GridComponent {
38872
39461
  <colgroup kendoGridColGroup
38873
39462
  [columns]="headerLeafColumns"
38874
39463
  [groups]="isLocked ? [] : group"
38875
- [detailTemplate]="detailTemplate">
39464
+ [detailTemplate]="detailTemplate"
39465
+ [groupingMode]="groupingMode">
38876
39466
  </colgroup>
38877
39467
  <thead kendoGridHeader
38878
39468
  [resizable]="resizable"
@@ -38893,7 +39483,8 @@ class GridComponent {
38893
39483
  [totalColumnsCount]="leafColumns.length"
38894
39484
  [totalColumns]="columnsContainer"
38895
39485
  [detailTemplate]="detailTemplate"
38896
- [tabIndex]="navigation.tableEnabled ? '-1' : '0'">
39486
+ [tabIndex]="navigation.tableEnabled ? '-1' : '0'"
39487
+ [groupingMode]="groupingMode">
38897
39488
  </thead>
38898
39489
  </table>
38899
39490
  @if (virtualColumns) {
@@ -38922,7 +39513,8 @@ class GridComponent {
38922
39513
  [detailTemplate]="detailTemplate"
38923
39514
  [filterable]="filterable"
38924
39515
  [rowHeight]="rowHeight"
38925
- [detailRowHeight]="detailRowHeight">
39516
+ [detailRowHeight]="detailRowHeight"
39517
+ [groupingMode]="groupingMode">
38926
39518
  </kendo-grid-rowpin-container>
38927
39519
  }
38928
39520
 
@@ -38955,7 +39547,8 @@ class GridComponent {
38955
39547
  kendoDraggable
38956
39548
  kendoGridSelectionMarquee
38957
39549
  [enableDrag]="marqueeSelection"
38958
- [sort]="sort">
39550
+ [sort]="sort"
39551
+ [groupingMode]="groupingMode">
38959
39552
  </kendo-grid-list>
38960
39553
 
38961
39554
  @if (isPinnable && pinnedBottomRows?.length > 0) {
@@ -38976,7 +39569,8 @@ class GridComponent {
38976
39569
  [detailTemplate]="detailTemplate"
38977
39570
  [filterable]="filterable"
38978
39571
  [rowHeight]="rowHeight"
38979
- [detailRowHeight]="detailRowHeight">
39572
+ [detailRowHeight]="detailRowHeight"
39573
+ [groupingMode]="groupingMode">
38980
39574
  </kendo-grid-rowpin-container>
38981
39575
  }
38982
39576
  @if (showFooter) {
@@ -38999,7 +39593,8 @@ class GridComponent {
38999
39593
  <colgroup kendoGridColGroup
39000
39594
  [columns]="$any(lockedLeafColumns)"
39001
39595
  [groups]="group"
39002
- [detailTemplate]="detailTemplate">
39596
+ [detailTemplate]="detailTemplate"
39597
+ [groupingMode]="groupingMode">
39003
39598
  </colgroup>
39004
39599
  }
39005
39600
  <tfoot kendoGridFooter
@@ -39009,7 +39604,8 @@ class GridComponent {
39009
39604
  [detailTemplate]="detailTemplate"
39010
39605
  [logicalRowIndex]="ariaRowCount"
39011
39606
  [totalColumns]="columnsContainer"
39012
- [totalColumnsCount]="leafColumns.length">
39607
+ [totalColumnsCount]="leafColumns.length"
39608
+ [groupingMode]="groupingMode">
39013
39609
  </tfoot>
39014
39610
  </table>
39015
39611
  </div>
@@ -39029,7 +39625,8 @@ class GridComponent {
39029
39625
  <colgroup kendoGridColGroup
39030
39626
  [columns]="$any(headerLeafColumns)"
39031
39627
  [groups]="isLocked ? [] : group"
39032
- [detailTemplate]="detailTemplate">
39628
+ [detailTemplate]="detailTemplate"
39629
+ [groupingMode]="groupingMode">
39033
39630
  </colgroup>
39034
39631
  }
39035
39632
  <tfoot kendoGridFooter
@@ -39040,7 +39637,8 @@ class GridComponent {
39040
39637
  [lockedColumnsCount]="isStacked ? 0 : lockedLeafColumns.length"
39041
39638
  [detailTemplate]="detailTemplate"
39042
39639
  [totalColumns]="columnsContainer"
39043
- [totalColumnsCount]="leafColumns.length">
39640
+ [totalColumnsCount]="leafColumns.length"
39641
+ [groupingMode]="groupingMode">
39044
39642
  </tfoot>
39045
39643
  </table>
39046
39644
  </div>
@@ -39066,7 +39664,8 @@ class GridComponent {
39066
39664
  [detailTemplate]="detailTemplate"
39067
39665
  [filterable]="filterable"
39068
39666
  [rowHeight]="rowHeight"
39069
- [detailRowHeight]="detailRowHeight">
39667
+ [detailRowHeight]="detailRowHeight"
39668
+ [groupingMode]="groupingMode">
39070
39669
  </kendo-grid-rowpin-container>
39071
39670
  }
39072
39671
  <table
@@ -39080,7 +39679,8 @@ class GridComponent {
39080
39679
  [columns]="$any(leafColumns)"
39081
39680
  [groups]="group"
39082
39681
  [sort]="sort"
39083
- [detailTemplate]="detailTemplate">
39682
+ [detailTemplate]="detailTemplate"
39683
+ [groupingMode]="groupingMode">
39084
39684
  </colgroup>
39085
39685
  @if (!hideHeader && !isStacked) {
39086
39686
  <thead kendoGridHeader
@@ -39102,7 +39702,8 @@ class GridComponent {
39102
39702
  [columnMenu]="columnMenuOptions"
39103
39703
  [columnMenuTemplate]="columnMenuTemplate"
39104
39704
  [detailTemplate]="detailTemplate"
39105
- [tabIndex]="navigation.tableEnabled ? '-1' : '0'">
39705
+ [tabIndex]="navigation.tableEnabled ? '-1' : '0'"
39706
+ [groupingMode]="groupingMode">
39106
39707
  </thead>
39107
39708
  }
39108
39709
  <tbody kendoGridTableBody
@@ -39123,7 +39724,8 @@ class GridComponent {
39123
39724
  [rowClass]="rowClass"
39124
39725
  kendoDraggable
39125
39726
  kendoGridSelectionMarquee
39126
- [enableDrag]="marqueeSelection">
39727
+ [enableDrag]="marqueeSelection"
39728
+ [groupingMode]="groupingMode">
39127
39729
  </tbody>
39128
39730
  @if (showFooter) {
39129
39731
  <tfoot kendoGridFooter
@@ -39133,7 +39735,8 @@ class GridComponent {
39133
39735
  [columns]="$any(leafColumns)"
39134
39736
  [detailTemplate]="detailTemplate"
39135
39737
  [totalColumns]="columnsContainer"
39136
- [totalColumnsCount]="leafColumns.length">
39738
+ [totalColumnsCount]="leafColumns.length"
39739
+ [groupingMode]="groupingMode">
39137
39740
  </tfoot>
39138
39741
  }
39139
39742
  </table>
@@ -39157,7 +39760,8 @@ class GridComponent {
39157
39760
  [rowHeight]="rowHeight"
39158
39761
  [detailRowHeight]="detailRowHeight"
39159
39762
  [size]="size"
39160
- [loading]="loading">
39763
+ [loading]="loading"
39764
+ [groupingMode]="groupingMode">
39161
39765
  </kendo-grid-rowpin-container>
39162
39766
  }
39163
39767
  }
@@ -39232,6 +39836,7 @@ class GridComponent {
39232
39836
  </ng-template>
39233
39837
 
39234
39838
  <ng-template #defaultPager>
39839
+ <ng-container kendoComponentName="pager">
39235
39840
  <div class="k-pager-numbers-wrap">
39236
39841
  @if (normalizedPageableSettings.previousNext) {
39237
39842
  <kendo-pager-prev-buttons [size]="size"></kendo-pager-prev-buttons>
@@ -39261,6 +39866,7 @@ class GridComponent {
39261
39866
  <kendo-pager-info>
39262
39867
  </kendo-pager-info>
39263
39868
  }
39869
+ </ng-container>
39264
39870
  </ng-template>
39265
39871
  <div #dialogContainer></div>
39266
39872
  <div #windowContainer></div>
@@ -39275,7 +39881,7 @@ class GridComponent {
39275
39881
  @if (showLicenseWatermark) {
39276
39882
  <div kendoWatermarkOverlay [licenseMessage]="licenseMessage"></div>
39277
39883
  }
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 });
39884
+ `, 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
39885
  }
39280
39886
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.26", ngImport: i0, type: GridComponent, decorators: [{
39281
39887
  type: Component,
@@ -39306,6 +39912,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.26", ngImpo
39306
39912
  provide: KENDO_WEBMCP_HOST,
39307
39913
  useExisting: forwardRef(() => GridComponent)
39308
39914
  },
39915
+ provideComponentName('grid'),
39309
39916
  FilterService,
39310
39917
  ResponsiveService,
39311
39918
  PagerContextService,
@@ -39831,6 +40438,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.26", ngImpo
39831
40438
 
39832
40439
  i18n-rowUnpinLabel="kendo.grid.rowUnpinLabel|Sets the label for the Grid row unpin column icon"
39833
40440
  rowUnpinLabel="Unpin row"
40441
+
40442
+ i18n-groupsSingleColumnTitle="kendo.grid.groupsSingleColumnTitle|Sets the text for the group column's header when group mode is **singleColumn**."
40443
+ groupsSingleColumnTitle="Groups"
39834
40444
  >
39835
40445
  </ng-container>
39836
40446
  @if (showTopToolbar) {
@@ -39943,8 +40553,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.26", ngImpo
39943
40553
  <colgroup kendoGridColGroup
39944
40554
  [columns]="$any(lockedLeafColumns)"
39945
40555
  [groups]="group"
39946
- [detailTemplate]="detailTemplate">
39947
- </colgroup>
40556
+ [detailTemplate]="detailTemplate"
40557
+ [groupingMode]="groupingMode">
40558
+ </colgroup>
39948
40559
  <thead kendoGridHeader
39949
40560
  role="rowgroup"
39950
40561
  [resizable]="resizable"
@@ -39963,7 +40574,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.26", ngImpo
39963
40574
  [totalColumnsCount]="leafColumns.length"
39964
40575
  [totalColumns]="columnsContainer"
39965
40576
  [detailTemplate]="detailTemplate"
39966
- [tabIndex]="navigation.tableEnabled ? '-1' : '0'">
40577
+ [tabIndex]="navigation.tableEnabled ? '-1' : '0'"
40578
+ [groupingMode]="groupingMode">
39967
40579
  </thead>
39968
40580
  </table>
39969
40581
  </div>
@@ -39982,7 +40594,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.26", ngImpo
39982
40594
  <colgroup kendoGridColGroup
39983
40595
  [columns]="headerLeafColumns"
39984
40596
  [groups]="isLocked ? [] : group"
39985
- [detailTemplate]="detailTemplate">
40597
+ [detailTemplate]="detailTemplate"
40598
+ [groupingMode]="groupingMode">
39986
40599
  </colgroup>
39987
40600
  <thead kendoGridHeader
39988
40601
  [resizable]="resizable"
@@ -40003,7 +40616,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.26", ngImpo
40003
40616
  [totalColumnsCount]="leafColumns.length"
40004
40617
  [totalColumns]="columnsContainer"
40005
40618
  [detailTemplate]="detailTemplate"
40006
- [tabIndex]="navigation.tableEnabled ? '-1' : '0'">
40619
+ [tabIndex]="navigation.tableEnabled ? '-1' : '0'"
40620
+ [groupingMode]="groupingMode">
40007
40621
  </thead>
40008
40622
  </table>
40009
40623
  @if (virtualColumns) {
@@ -40032,7 +40646,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.26", ngImpo
40032
40646
  [detailTemplate]="detailTemplate"
40033
40647
  [filterable]="filterable"
40034
40648
  [rowHeight]="rowHeight"
40035
- [detailRowHeight]="detailRowHeight">
40649
+ [detailRowHeight]="detailRowHeight"
40650
+ [groupingMode]="groupingMode">
40036
40651
  </kendo-grid-rowpin-container>
40037
40652
  }
40038
40653
 
@@ -40065,7 +40680,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.26", ngImpo
40065
40680
  kendoDraggable
40066
40681
  kendoGridSelectionMarquee
40067
40682
  [enableDrag]="marqueeSelection"
40068
- [sort]="sort">
40683
+ [sort]="sort"
40684
+ [groupingMode]="groupingMode">
40069
40685
  </kendo-grid-list>
40070
40686
 
40071
40687
  @if (isPinnable && pinnedBottomRows?.length > 0) {
@@ -40086,7 +40702,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.26", ngImpo
40086
40702
  [detailTemplate]="detailTemplate"
40087
40703
  [filterable]="filterable"
40088
40704
  [rowHeight]="rowHeight"
40089
- [detailRowHeight]="detailRowHeight">
40705
+ [detailRowHeight]="detailRowHeight"
40706
+ [groupingMode]="groupingMode">
40090
40707
  </kendo-grid-rowpin-container>
40091
40708
  }
40092
40709
  @if (showFooter) {
@@ -40109,7 +40726,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.26", ngImpo
40109
40726
  <colgroup kendoGridColGroup
40110
40727
  [columns]="$any(lockedLeafColumns)"
40111
40728
  [groups]="group"
40112
- [detailTemplate]="detailTemplate">
40729
+ [detailTemplate]="detailTemplate"
40730
+ [groupingMode]="groupingMode">
40113
40731
  </colgroup>
40114
40732
  }
40115
40733
  <tfoot kendoGridFooter
@@ -40119,7 +40737,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.26", ngImpo
40119
40737
  [detailTemplate]="detailTemplate"
40120
40738
  [logicalRowIndex]="ariaRowCount"
40121
40739
  [totalColumns]="columnsContainer"
40122
- [totalColumnsCount]="leafColumns.length">
40740
+ [totalColumnsCount]="leafColumns.length"
40741
+ [groupingMode]="groupingMode">
40123
40742
  </tfoot>
40124
40743
  </table>
40125
40744
  </div>
@@ -40139,7 +40758,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.26", ngImpo
40139
40758
  <colgroup kendoGridColGroup
40140
40759
  [columns]="$any(headerLeafColumns)"
40141
40760
  [groups]="isLocked ? [] : group"
40142
- [detailTemplate]="detailTemplate">
40761
+ [detailTemplate]="detailTemplate"
40762
+ [groupingMode]="groupingMode">
40143
40763
  </colgroup>
40144
40764
  }
40145
40765
  <tfoot kendoGridFooter
@@ -40150,7 +40770,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.26", ngImpo
40150
40770
  [lockedColumnsCount]="isStacked ? 0 : lockedLeafColumns.length"
40151
40771
  [detailTemplate]="detailTemplate"
40152
40772
  [totalColumns]="columnsContainer"
40153
- [totalColumnsCount]="leafColumns.length">
40773
+ [totalColumnsCount]="leafColumns.length"
40774
+ [groupingMode]="groupingMode">
40154
40775
  </tfoot>
40155
40776
  </table>
40156
40777
  </div>
@@ -40176,7 +40797,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.26", ngImpo
40176
40797
  [detailTemplate]="detailTemplate"
40177
40798
  [filterable]="filterable"
40178
40799
  [rowHeight]="rowHeight"
40179
- [detailRowHeight]="detailRowHeight">
40800
+ [detailRowHeight]="detailRowHeight"
40801
+ [groupingMode]="groupingMode">
40180
40802
  </kendo-grid-rowpin-container>
40181
40803
  }
40182
40804
  <table
@@ -40190,7 +40812,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.26", ngImpo
40190
40812
  [columns]="$any(leafColumns)"
40191
40813
  [groups]="group"
40192
40814
  [sort]="sort"
40193
- [detailTemplate]="detailTemplate">
40815
+ [detailTemplate]="detailTemplate"
40816
+ [groupingMode]="groupingMode">
40194
40817
  </colgroup>
40195
40818
  @if (!hideHeader && !isStacked) {
40196
40819
  <thead kendoGridHeader
@@ -40212,7 +40835,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.26", ngImpo
40212
40835
  [columnMenu]="columnMenuOptions"
40213
40836
  [columnMenuTemplate]="columnMenuTemplate"
40214
40837
  [detailTemplate]="detailTemplate"
40215
- [tabIndex]="navigation.tableEnabled ? '-1' : '0'">
40838
+ [tabIndex]="navigation.tableEnabled ? '-1' : '0'"
40839
+ [groupingMode]="groupingMode">
40216
40840
  </thead>
40217
40841
  }
40218
40842
  <tbody kendoGridTableBody
@@ -40233,7 +40857,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.26", ngImpo
40233
40857
  [rowClass]="rowClass"
40234
40858
  kendoDraggable
40235
40859
  kendoGridSelectionMarquee
40236
- [enableDrag]="marqueeSelection">
40860
+ [enableDrag]="marqueeSelection"
40861
+ [groupingMode]="groupingMode">
40237
40862
  </tbody>
40238
40863
  @if (showFooter) {
40239
40864
  <tfoot kendoGridFooter
@@ -40243,7 +40868,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.26", ngImpo
40243
40868
  [columns]="$any(leafColumns)"
40244
40869
  [detailTemplate]="detailTemplate"
40245
40870
  [totalColumns]="columnsContainer"
40246
- [totalColumnsCount]="leafColumns.length">
40871
+ [totalColumnsCount]="leafColumns.length"
40872
+ [groupingMode]="groupingMode">
40247
40873
  </tfoot>
40248
40874
  }
40249
40875
  </table>
@@ -40267,7 +40893,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.26", ngImpo
40267
40893
  [rowHeight]="rowHeight"
40268
40894
  [detailRowHeight]="detailRowHeight"
40269
40895
  [size]="size"
40270
- [loading]="loading">
40896
+ [loading]="loading"
40897
+ [groupingMode]="groupingMode">
40271
40898
  </kendo-grid-rowpin-container>
40272
40899
  }
40273
40900
  }
@@ -40342,6 +40969,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.26", ngImpo
40342
40969
  </ng-template>
40343
40970
 
40344
40971
  <ng-template #defaultPager>
40972
+ <ng-container kendoComponentName="pager">
40345
40973
  <div class="k-pager-numbers-wrap">
40346
40974
  @if (normalizedPageableSettings.previousNext) {
40347
40975
  <kendo-pager-prev-buttons [size]="size"></kendo-pager-prev-buttons>
@@ -40371,6 +40999,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.26", ngImpo
40371
40999
  <kendo-pager-info>
40372
41000
  </kendo-pager-info>
40373
41001
  }
41002
+ </ng-container>
40374
41003
  </ng-template>
40375
41004
  <div #dialogContainer></div>
40376
41005
  <div #windowContainer></div>
@@ -40408,6 +41037,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.26", ngImpo
40408
41037
  IconWrapperComponent,
40409
41038
  WatermarkOverlayComponent,
40410
41039
  ...KENDO_PAGER,
41040
+ ComponentNameDirective,
40411
41041
  NgTemplateOutlet,
40412
41042
  AdaptiveRendererComponent,
40413
41043
  ResizeSensorComponent,
@@ -40622,6 +41252,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.26", ngImpo
40622
41252
  }], columnMenuTemplates: [{
40623
41253
  type: ContentChildren,
40624
41254
  args: [ColumnMenuTemplateDirective]
41255
+ }], groupColumnGroupHeaderTemplates: [{
41256
+ type: ContentChildren,
41257
+ args: [GroupColumnGroupHeaderTemplateDirective]
40625
41258
  }], lockedHeader: [{
40626
41259
  type: ViewChild,
40627
41260
  args: ['lockedHeader']
@@ -42321,7 +42954,7 @@ class PDFCommandToolbarDirective extends ToolbarToolBase {
42321
42954
  e.preventDefault();
42322
42955
  this.pdfService.exportClick.emit();
42323
42956
  }
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 });
42957
+ 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
42958
  static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "20.3.26", type: PDFCommandToolbarDirective, isStandalone: true, selector: "[kendoGridPDFTool]", usesInheritance: true, ngImport: i0 });
42326
42959
  }
42327
42960
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.26", ngImport: i0, type: PDFCommandToolbarDirective, decorators: [{
@@ -42330,7 +42963,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.26", ngImpo
42330
42963
  selector: '[kendoGridPDFTool]',
42331
42964
  standalone: true
42332
42965
  }]
42333
- }], ctorParameters: () => [{ type: PDFService }, { type: i58.ToolBarButtonComponent }, { type: ContextService }, { type: i0.NgZone }, { type: i0.ChangeDetectorRef }] });
42966
+ }], ctorParameters: () => [{ type: PDFService }, { type: i59.ToolBarButtonComponent }, { type: ContextService }, { type: i0.NgZone }, { type: i0.ChangeDetectorRef }] });
42334
42967
 
42335
42968
  /**
42336
42969
  * Represents the **Export to Excel** toolbar tool of the Grid.
@@ -42366,7 +42999,7 @@ class ExcelCommandToolbarDirective extends ToolbarToolBase {
42366
42999
  e.preventDefault();
42367
43000
  this.excelService.exportClick.emit();
42368
43001
  }
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 });
43002
+ 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
43003
  static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "20.3.26", type: ExcelCommandToolbarDirective, isStandalone: true, selector: "[kendoGridExcelTool]", usesInheritance: true, ngImport: i0 });
42371
43004
  }
42372
43005
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.26", ngImport: i0, type: ExcelCommandToolbarDirective, decorators: [{
@@ -42375,7 +43008,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.26", ngImpo
42375
43008
  selector: '[kendoGridExcelTool]',
42376
43009
  standalone: true
42377
43010
  }]
42378
- }], ctorParameters: () => [{ type: ExcelService }, { type: i58.ToolBarButtonComponent }, { type: ContextService }, { type: i0.NgZone }, { type: i0.ChangeDetectorRef }] });
43011
+ }], ctorParameters: () => [{ type: ExcelService }, { type: i59.ToolBarButtonComponent }, { type: ContextService }, { type: i0.NgZone }, { type: i0.ChangeDetectorRef }] });
42379
43012
 
42380
43013
  /**
42381
43014
  * @hidden
@@ -42448,13 +43081,13 @@ class ToolbarEditingToolBase extends ToolbarToolBase {
42448
43081
  get isSelectionPresent() {
42449
43082
  return isPresent$1(this.lastSelectionIndex) && this.lastSelectionIndex > -1;
42450
43083
  }
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 });
43084
+ 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
43085
  static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "20.3.26", type: ToolbarEditingToolBase, isStandalone: true, usesInheritance: true, ngImport: i0 });
42453
43086
  }
42454
43087
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.26", ngImport: i0, type: ToolbarEditingToolBase, decorators: [{
42455
43088
  type: Directive,
42456
43089
  args: [{}]
42457
- }], ctorParameters: () => [{ type: i58.ToolBarButtonComponent }, { type: undefined, decorators: [{
43090
+ }], ctorParameters: () => [{ type: i59.ToolBarButtonComponent }, { type: undefined, decorators: [{
42458
43091
  type: Inject,
42459
43092
  args: ['command']
42460
43093
  }] }, { type: ContextService }, { type: i0.NgZone }, { type: i0.ChangeDetectorRef }, { type: EditService }, { type: SelectionService }] });
@@ -42494,7 +43127,7 @@ class AddCommandToolbarDirective extends ToolbarEditingToolBase {
42494
43127
  e.preventDefault();
42495
43128
  this.editService.beginAdd();
42496
43129
  }
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 });
43130
+ 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
43131
  static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "20.3.26", type: AddCommandToolbarDirective, isStandalone: true, selector: "[kendoGridAddTool]", usesInheritance: true, ngImport: i0 });
42499
43132
  }
42500
43133
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.26", ngImport: i0, type: AddCommandToolbarDirective, decorators: [{
@@ -42503,7 +43136,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.26", ngImpo
42503
43136
  selector: '[kendoGridAddTool]',
42504
43137
  standalone: true
42505
43138
  }]
42506
- }], ctorParameters: () => [{ type: EditService }, { type: i58.ToolBarButtonComponent }, { type: ContextService }, { type: i0.NgZone }, { type: i0.ChangeDetectorRef }] });
43139
+ }], ctorParameters: () => [{ type: EditService }, { type: i59.ToolBarButtonComponent }, { type: ContextService }, { type: i0.NgZone }, { type: i0.ChangeDetectorRef }] });
42507
43140
 
42508
43141
  /**
42509
43142
  * @hidden
@@ -43074,7 +43707,7 @@ class UndoCommandToolbarDirective {
43074
43707
  e.preventDefault();
43075
43708
  this.undoRedoService.onUndo.next(undefined);
43076
43709
  }
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 });
43710
+ 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
43711
  static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "20.3.26", type: UndoCommandToolbarDirective, isStandalone: true, selector: "[kendoGridUndoTool]", ngImport: i0 });
43079
43712
  }
43080
43713
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.26", ngImport: i0, type: UndoCommandToolbarDirective, decorators: [{
@@ -43083,7 +43716,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.26", ngImpo
43083
43716
  selector: '[kendoGridUndoTool]',
43084
43717
  standalone: true,
43085
43718
  }]
43086
- }], ctorParameters: () => [{ type: UndoRedoService }, { type: i58.ToolBarButtonComponent }] });
43719
+ }], ctorParameters: () => [{ type: UndoRedoService }, { type: i59.ToolBarButtonComponent }] });
43087
43720
 
43088
43721
  /**
43089
43722
  * Represents the command that triggers the redo action in the Grid.
@@ -43137,7 +43770,7 @@ class RedoCommandToolbarDirective {
43137
43770
  e.preventDefault();
43138
43771
  this.undoRedoService.onRedo.next(undefined);
43139
43772
  }
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 });
43773
+ 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
43774
  static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "20.3.26", type: RedoCommandToolbarDirective, isStandalone: true, selector: "[kendoGridRedoTool]", ngImport: i0 });
43142
43775
  }
43143
43776
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.26", ngImport: i0, type: RedoCommandToolbarDirective, decorators: [{
@@ -43146,7 +43779,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.26", ngImpo
43146
43779
  selector: '[kendoGridRedoTool]',
43147
43780
  standalone: true,
43148
43781
  }]
43149
- }], ctorParameters: () => [{ type: UndoRedoService }, { type: i58.ToolBarButtonComponent }] });
43782
+ }], ctorParameters: () => [{ type: UndoRedoService }, { type: i59.ToolBarButtonComponent }] });
43150
43783
 
43151
43784
  let incrementingId$2 = 0;
43152
43785
  /**
@@ -43337,7 +43970,7 @@ class SortCommandToolbarDirective {
43337
43970
  get buttonElement() {
43338
43971
  return this.host.getButton();
43339
43972
  }
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 });
43973
+ 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
43974
  static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "20.3.26", type: SortCommandToolbarDirective, isStandalone: true, selector: "[kendoGridSortTool]", ngImport: i0 });
43342
43975
  }
43343
43976
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.26", ngImport: i0, type: SortCommandToolbarDirective, decorators: [{
@@ -43346,7 +43979,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.26", ngImpo
43346
43979
  selector: '[kendoGridSortTool]',
43347
43980
  standalone: true
43348
43981
  }]
43349
- }], ctorParameters: () => [{ type: i58.ToolBarButtonComponent }, { type: i2.PopupService }, { type: ContextService }, { type: SortService }, { type: ColumnInfoService }, { type: i0.NgZone }, { type: i0.Renderer2 }, { type: AdaptiveGridService }] });
43982
+ }], ctorParameters: () => [{ type: i59.ToolBarButtonComponent }, { type: i2.PopupService }, { type: ContextService }, { type: SortService }, { type: ColumnInfoService }, { type: i0.NgZone }, { type: i0.Renderer2 }, { type: AdaptiveGridService }] });
43350
43983
 
43351
43984
  /**
43352
43985
  * @hidden
@@ -43675,7 +44308,7 @@ class FilterCommandToolbarDirective {
43675
44308
  get buttonElement() {
43676
44309
  return this.host.getButton();
43677
44310
  }
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 });
44311
+ 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
44312
  static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "20.3.26", type: FilterCommandToolbarDirective, isStandalone: true, selector: "[kendoGridFilterTool]", ngImport: i0 });
43680
44313
  }
43681
44314
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.26", ngImport: i0, type: FilterCommandToolbarDirective, decorators: [{
@@ -43684,7 +44317,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.26", ngImpo
43684
44317
  selector: '[kendoGridFilterTool]',
43685
44318
  standalone: true
43686
44319
  }]
43687
- }], ctorParameters: () => [{ type: i58.ToolBarButtonComponent }, { type: i2.PopupService }, { type: ContextService }, { type: FilterService }, { type: ColumnInfoService }, { type: i0.NgZone }, { type: i0.Renderer2 }, { type: AdaptiveGridService }, { type: SinglePopupService }] });
44320
+ }], ctorParameters: () => [{ type: i59.ToolBarButtonComponent }, { type: i2.PopupService }, { type: ContextService }, { type: FilterService }, { type: ColumnInfoService }, { type: i0.NgZone }, { type: i0.Renderer2 }, { type: AdaptiveGridService }, { type: SinglePopupService }] });
43688
44321
 
43689
44322
  /**
43690
44323
  * Represents the `edit` command in the Grid. Apply this directive to any `kendo-toolbar-button`
@@ -43720,7 +44353,7 @@ class EditCommandToolbarDirective extends ToolbarEditingToolBase {
43720
44353
  }
43721
44354
  this.editService.beginEdit(this.lastSelectionIndex);
43722
44355
  }
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 });
44356
+ 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
44357
  static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "20.3.26", type: EditCommandToolbarDirective, isStandalone: true, selector: "[kendoGridEditTool]", usesInheritance: true, ngImport: i0 });
43725
44358
  }
43726
44359
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.26", ngImport: i0, type: EditCommandToolbarDirective, decorators: [{
@@ -43729,7 +44362,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.26", ngImpo
43729
44362
  selector: '[kendoGridEditTool]',
43730
44363
  standalone: true
43731
44364
  }]
43732
- }], ctorParameters: () => [{ type: EditService }, { type: i58.ToolBarButtonComponent }, { type: SelectionService }, { type: ContextService }, { type: i0.NgZone }, { type: i0.ChangeDetectorRef }] });
44365
+ }], ctorParameters: () => [{ type: EditService }, { type: i59.ToolBarButtonComponent }, { type: SelectionService }, { type: ContextService }, { type: i0.NgZone }, { type: i0.ChangeDetectorRef }] });
43733
44366
 
43734
44367
  /**
43735
44368
  * Represents the `save` command in the Grid. Apply this directive to any `kendo-toolbar-button`
@@ -43770,7 +44403,7 @@ class SaveCommandToolbarDirective extends ToolbarEditingToolBase {
43770
44403
  this.editService.editedIndices.forEach(i => this.editService.save(i.index));
43771
44404
  }
43772
44405
  }
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 });
44406
+ 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
44407
  static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "20.3.26", type: SaveCommandToolbarDirective, isStandalone: true, selector: "[kendoGridSaveTool]", usesInheritance: true, ngImport: i0 });
43775
44408
  }
43776
44409
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.26", ngImport: i0, type: SaveCommandToolbarDirective, decorators: [{
@@ -43779,7 +44412,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.26", ngImpo
43779
44412
  selector: '[kendoGridSaveTool]',
43780
44413
  standalone: true
43781
44414
  }]
43782
- }], ctorParameters: () => [{ type: EditService }, { type: i58.ToolBarButtonComponent }, { type: SelectionService }, { type: ContextService }, { type: i0.NgZone }, { type: i0.ChangeDetectorRef }] });
44415
+ }], ctorParameters: () => [{ type: EditService }, { type: i59.ToolBarButtonComponent }, { type: SelectionService }, { type: ContextService }, { type: i0.NgZone }, { type: i0.ChangeDetectorRef }] });
43783
44416
 
43784
44417
  /**
43785
44418
  * Represents the `remove` command in the Grid. Apply this directive to any `kendo-toolbar-button`
@@ -43816,7 +44449,7 @@ class RemoveCommandToolbarDirective extends ToolbarEditingToolBase {
43816
44449
  this.editService.remove(this.lastSelectionIndex);
43817
44450
  }
43818
44451
  }
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 });
44452
+ 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
44453
  static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "20.3.26", type: RemoveCommandToolbarDirective, isStandalone: true, selector: "[kendoGridRemoveTool]", usesInheritance: true, ngImport: i0 });
43821
44454
  }
43822
44455
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.26", ngImport: i0, type: RemoveCommandToolbarDirective, decorators: [{
@@ -43825,7 +44458,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.26", ngImpo
43825
44458
  selector: '[kendoGridRemoveTool]',
43826
44459
  standalone: true
43827
44460
  }]
43828
- }], ctorParameters: () => [{ type: EditService }, { type: i58.ToolBarButtonComponent }, { type: SelectionService }, { type: ContextService }, { type: i0.NgZone }, { type: i0.ChangeDetectorRef }] });
44461
+ }], ctorParameters: () => [{ type: EditService }, { type: i59.ToolBarButtonComponent }, { type: SelectionService }, { type: ContextService }, { type: i0.NgZone }, { type: i0.ChangeDetectorRef }] });
43829
44462
 
43830
44463
  /**
43831
44464
  * Represents the `cancel` command in the Grid.
@@ -43865,7 +44498,7 @@ class CancelCommandToolbarDirective extends ToolbarEditingToolBase {
43865
44498
  this.editService.editedIndices.forEach(i => this.editService.endEdit(i.index));
43866
44499
  }
43867
44500
  }
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 });
44501
+ 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
44502
  static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "20.3.26", type: CancelCommandToolbarDirective, isStandalone: true, selector: "[kendoGridCancelTool]", usesInheritance: true, ngImport: i0 });
43870
44503
  }
43871
44504
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.26", ngImport: i0, type: CancelCommandToolbarDirective, decorators: [{
@@ -43874,7 +44507,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.26", ngImpo
43874
44507
  selector: '[kendoGridCancelTool]',
43875
44508
  standalone: true
43876
44509
  }]
43877
- }], ctorParameters: () => [{ type: EditService }, { type: i58.ToolBarButtonComponent }, { type: SelectionService }, { type: ContextService }, { type: i0.NgZone }, { type: i0.ChangeDetectorRef }] });
44510
+ }], ctorParameters: () => [{ type: EditService }, { type: i59.ToolBarButtonComponent }, { type: SelectionService }, { type: ContextService }, { type: i0.NgZone }, { type: i0.ChangeDetectorRef }] });
43878
44511
 
43879
44512
  let incrementingId = 0;
43880
44513
  /**
@@ -44055,7 +44688,7 @@ class GroupCommandToolbarDirective {
44055
44688
  isGroupingApplied(group) {
44056
44689
  return isPresent$1(group) && group.length > 0;
44057
44690
  }
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 });
44691
+ 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
44692
  static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "20.3.26", type: GroupCommandToolbarDirective, isStandalone: true, selector: "[kendoGridGroupTool]", ngImport: i0 });
44060
44693
  }
44061
44694
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.26", ngImport: i0, type: GroupCommandToolbarDirective, decorators: [{
@@ -44064,7 +44697,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.26", ngImpo
44064
44697
  selector: '[kendoGridGroupTool]',
44065
44698
  standalone: true
44066
44699
  }]
44067
- }], ctorParameters: () => [{ type: i58.ToolBarButtonComponent }, { type: i2.PopupService }, { type: ContextService }, { type: i0.NgZone }, { type: i0.Renderer2 }, { type: AdaptiveGridService }] });
44700
+ }], ctorParameters: () => [{ type: i59.ToolBarButtonComponent }, { type: i2.PopupService }, { type: ContextService }, { type: i0.NgZone }, { type: i0.Renderer2 }, { type: AdaptiveGridService }] });
44068
44701
 
44069
44702
  /**
44070
44703
  * Stores the row and cell highlight state of the Grid.
@@ -44716,7 +45349,7 @@ class AIAssistantToolbarDirective extends ToolbarToolBase {
44716
45349
  this.host.selected = false;
44717
45350
  focusAnchor && this.buttonElement?.focus();
44718
45351
  }
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 });
45352
+ 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
45353
  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
45354
  }
44722
45355
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.26", ngImport: i0, type: AIAssistantToolbarDirective, decorators: [{
@@ -44725,7 +45358,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.26", ngImpo
44725
45358
  selector: '[kendoGridAIAssistantTool]',
44726
45359
  standalone: true
44727
45360
  }]
44728
- }], ctorParameters: () => [{ type: i1$7.WindowService }, { type: i58.ToolBarButtonComponent }, { type: ContextService }, { type: i0.NgZone }, { type: i58.RefreshService }, { type: i0.ChangeDetectorRef }], propDecorators: { requestUrl: [{
45361
+ }], ctorParameters: () => [{ type: i1$7.WindowService }, { type: i59.ToolBarButtonComponent }, { type: ContextService }, { type: i0.NgZone }, { type: i59.RefreshService }, { type: i0.ChangeDetectorRef }], propDecorators: { requestUrl: [{
44729
45362
  type: Input
44730
45363
  }], requestOptions: [{
44731
45364
  type: Input
@@ -46776,6 +47409,7 @@ const KENDO_GRID_SHARED = [
46776
47409
  const KENDO_GRID_GROUP_EXPORTS = [
46777
47410
  GroupHeaderTemplateDirective,
46778
47411
  GroupHeaderColumnTemplateDirective,
47412
+ GroupColumnGroupHeaderTemplateDirective,
46779
47413
  GroupFooterTemplateDirective,
46780
47414
  GroupHeaderComponent,
46781
47415
  GroupPanelComponent,
@@ -47122,9 +47756,9 @@ const KENDO_GRID = [
47122
47756
  */
47123
47757
  class GridModule {
47124
47758
  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,
47759
+ 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
47760
  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] });
47761
+ 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
47762
  static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "20.3.26", ngImport: i0, type: GridModule, providers: [
47129
47763
  PopupService,
47130
47764
  ResizeBatchService,
@@ -47139,7 +47773,7 @@ class GridModule {
47139
47773
  MonthViewService,
47140
47774
  YearViewService,
47141
47775
  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] });
47776
+ ], 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
47777
  }
47144
47778
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.26", ngImport: i0, type: GridModule, decorators: [{
47145
47779
  type: NgModule,
@@ -47284,5 +47918,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.26", ngImpo
47284
47918
  * Generated bundle index. Do not edit.
47285
47919
  */
47286
47920
 
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 };
47921
+ 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
47922