@progress/kendo-angular-grid 25.0.0-develop.16 → 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,74 +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
- <p class="k-reset">
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
- {{groupTitle(item)}}: {{item.data | valueOf:"value": formatForGroup(item)}}
6245
- }
6246
- <ng-template
6247
- [templateContext]="{
6248
- templateRef: groupHeaderTemplate(item),
6249
- group: item.data,
6250
- aggregates: item.data?.aggregates,
6251
- value: item.data?.value,
6252
- field: item.data?.field,
6253
- index: item.index,
6254
- expanded: isExpanded,
6255
- $implicit: item.data
6256
- }">
6257
- </ng-template>
6258
- }
6259
- </p>
6260
- @if (isStacked) {
6261
- <div class="k-grid-column-template">
6262
- @for (column of groupHeaderColumns; track column; let index = $index) {
6263
- @if (column.groupHeaderColumnTemplateRef) {
6264
- <div class="k-column-template-item">
6265
- <ng-template [ngTemplateOutlet]="column.groupHeaderColumnTemplateRef"
6266
- [ngTemplateOutletContext]="{
6267
- group: item.data,
6268
- aggregates: item.data?.aggregates,
6269
- value: item.data?.value,
6270
- field: item.data?.field,
6271
- index: item.index,
6272
- $implicit: item.data
6273
- }">
6274
- </ng-template>
6275
- </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>
6276
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>
6277
6383
  }
6278
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>
6279
6412
  }
6280
- </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
+ }
6281
6474
  }
6282
6475
  @if (hasGroupHeaderColumn && !isStacked) {
6283
6476
  @for (column of groupHeaderColumns; track column; let index = $index) {
@@ -6307,7 +6500,7 @@ class GroupHeaderComponent {
6307
6500
  </td>
6308
6501
  }
6309
6502
  }
6310
- `, 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" }] });
6311
6504
  }
6312
6505
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.26", ngImport: i0, type: GroupHeaderComponent, decorators: [{
6313
6506
  type: Component,
@@ -6315,71 +6508,144 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.26", ngImpo
6315
6508
  selector: '[kendoGridGroupHeader]',
6316
6509
  template: `
6317
6510
  @if (!skipGroupDecoration) {
6318
- @for (g of prefixGroupCell(item); track $index) {
6319
- <td class="k-group-cell k-table-td k-table-group-td"
6320
- role="presentation"
6321
- ></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
+ }
6322
6517
  }
6323
6518
  }
6324
6519
  @if (!(skipGroupDecoration && hasGroupHeaderColumn)) {
6325
- <td [attr.colspan]="groupSpan(item)"
6326
- [attr.role]="ariaRole()"
6327
- aria-selected="false"
6328
- class="k-table-td"
6329
- [attr.aria-expanded]="isExpanded"
6330
- kendoGridLogicalCell
6331
- [logicalRowIndex]="logicalRowIndex"
6332
- [logicalColIndex]="0"
6333
- [logicalSlaveCell]="skipGroupDecoration"
6334
- [groupItem]="item"
6335
- [colSpan]="logicalColSpan()">
6336
- <p class="k-reset">
6337
- @if (!skipGroupDecoration) {
6338
- <a tabindex="-1" (click)="toggleGroup(item, $event)"
6339
- [attr.title]="groupButtonTitle"
6340
- [attr.aria-label]="groupButtonTitle">
6341
- <kendo-icon-wrapper
6342
- [name]="arrowIcon"
6343
- [svgIcon]="arrowSVGIcon"></kendo-icon-wrapper>
6344
- </a>
6345
- @if (!groupHeaderTemplate(item)) {
6346
- {{groupTitle(item)}}: {{item.data | valueOf:"value": formatForGroup(item)}}
6347
- }
6348
- <ng-template
6349
- [templateContext]="{
6350
- templateRef: groupHeaderTemplate(item),
6351
- group: item.data,
6352
- aggregates: item.data?.aggregates,
6353
- value: item.data?.value,
6354
- field: item.data?.field,
6355
- index: item.index,
6356
- expanded: isExpanded,
6357
- $implicit: item.data
6358
- }">
6359
- </ng-template>
6360
- }
6361
- </p>
6362
- @if (isStacked) {
6363
- <div class="k-grid-column-template">
6364
- @for (column of groupHeaderColumns; track column; let index = $index) {
6365
- @if (column.groupHeaderColumnTemplateRef) {
6366
- <div class="k-column-template-item">
6367
- <ng-template [ngTemplateOutlet]="column.groupHeaderColumnTemplateRef"
6368
- [ngTemplateOutletContext]="{
6369
- group: item.data,
6370
- aggregates: item.data?.aggregates,
6371
- value: item.data?.value,
6372
- field: item.data?.field,
6373
- index: item.index,
6374
- $implicit: item.data
6375
- }">
6376
- </ng-template>
6377
- </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>
6378
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>
6379
6558
  }
6380
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>
6381
6587
  }
6382
- </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
+ }
6383
6649
  }
6384
6650
  @if (hasGroupHeaderColumn && !isStacked) {
6385
6651
  @for (column of groupHeaderColumns; track column; let index = $index) {
@@ -6411,9 +6677,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.26", ngImpo
6411
6677
  }
6412
6678
  `,
6413
6679
  standalone: true,
6414
- imports: [LogicalCellDirective, IconWrapperComponent, TemplateContextDirective, NgTemplateOutlet, FieldAccessorPipe]
6680
+ imports: [LogicalCellDirective, IconWrapperComponent, NgStyle, TemplateContextDirective, NgTemplateOutlet, FieldAccessorPipe]
6415
6681
  }]
6416
- }], ctorParameters: () => [{ type: GroupsService }, { type: GroupInfoService }, { type: ContextService }], propDecorators: { rowIndex: [{
6682
+ }], ctorParameters: () => [{ type: GroupsService }, { type: GroupInfoService }, { type: ContextService }, { type: ColumnInfoService }], propDecorators: { rowIndex: [{
6417
6683
  type: Input
6418
6684
  }], logicalRowIndex: [{
6419
6685
  type: Input
@@ -6429,6 +6695,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.26", ngImpo
6429
6695
  type: Input
6430
6696
  }], groupHeaderColumns: [{
6431
6697
  type: Input
6698
+ }], groupingMode: [{
6699
+ type: Input
6432
6700
  }], columns: [{
6433
6701
  type: Input
6434
6702
  }], groups: [{
@@ -12874,6 +13142,7 @@ class FilterRowComponent {
12874
13142
  detailTemplate;
12875
13143
  logicalRowIndex;
12876
13144
  lockedColumnsCount;
13145
+ groupingMode = 'default';
12877
13146
  filterRowClass = true;
12878
13147
  constructor(ctx, columnInfoService) {
12879
13148
  this.ctx = ctx;
@@ -12898,12 +13167,14 @@ class FilterRowComponent {
12898
13167
  return this.ctx.grid?.isStacked;
12899
13168
  }
12900
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 });
12901
- 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: `
12902
- @for (g of groups; track g) {
12903
- <td
12904
- class="k-table-td k-group-cell k-table-group-td"
12905
- role="presentation">
12906
- </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
+ }
12907
13178
  }
12908
13179
  @if (detailTemplate?.templateRef && !isStacked) {
12909
13180
  <td
@@ -12933,11 +13204,13 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.26", ngImpo
12933
13204
  args: [{
12934
13205
  selector: '[kendoGridFilterRow]',
12935
13206
  template: `
12936
- @for (g of groups; track g) {
12937
- <td
12938
- class="k-table-td k-group-cell k-table-group-td"
12939
- role="presentation">
12940
- </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
+ }
12941
13214
  }
12942
13215
  @if (detailTemplate?.templateRef && !isStacked) {
12943
13216
  <td
@@ -12976,6 +13249,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.26", ngImpo
12976
13249
  type: Input
12977
13250
  }], lockedColumnsCount: [{
12978
13251
  type: Input
13252
+ }], groupingMode: [{
13253
+ type: Input
12979
13254
  }], filterRowClass: [{
12980
13255
  type: HostBinding,
12981
13256
  args: ['class.k-filter-row']
@@ -14137,13 +14412,13 @@ class ToolbarToolBase {
14137
14412
  get buttonElement() {
14138
14413
  return this.host.getButton();
14139
14414
  }
14140
- 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 });
14141
14416
  static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "20.3.26", type: ToolbarToolBase, isStandalone: true, ngImport: i0 });
14142
14417
  }
14143
14418
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.26", ngImport: i0, type: ToolbarToolBase, decorators: [{
14144
14419
  type: Directive,
14145
14420
  args: [{}]
14146
- }], ctorParameters: () => [{ type: i58.ToolBarButtonComponent }, { type: undefined, decorators: [{
14421
+ }], ctorParameters: () => [{ type: i59.ToolBarButtonComponent }, { type: undefined, decorators: [{
14147
14422
  type: Inject,
14148
14423
  args: ['command']
14149
14424
  }] }, { type: ContextService }, { type: i0.NgZone }, { type: i0.ChangeDetectorRef }] });
@@ -14345,7 +14620,7 @@ class ColumnChooserToolbarDirective extends ToolbarToolBase {
14345
14620
  this.host.selected = false;
14346
14621
  focusAnchor && this.buttonElement?.focus({ preventScroll: true });
14347
14622
  }
14348
- 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 });
14349
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 });
14350
14625
  }
14351
14626
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.26", ngImport: i0, type: ColumnChooserToolbarDirective, decorators: [{
@@ -14354,7 +14629,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.26", ngImpo
14354
14629
  selector: '[kendoGridColumnChooserTool]',
14355
14630
  standalone: true
14356
14631
  }]
14357
- }], 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: [{
14358
14633
  type: Input
14359
14634
  }], allowHideAll: [{
14360
14635
  type: Input
@@ -14627,9 +14902,9 @@ class ColumnMenuItemComponent {
14627
14902
  }
14628
14903
  get expandedIcon() {
14629
14904
  if (this.ctx.grid.isActionSheetExpanded) {
14630
- return 'arrow-chevron-right';
14905
+ return 'chevron-right';
14631
14906
  }
14632
- return this.expanded ? 'arrow-chevron-up' : 'arrow-chevron-down';
14907
+ return this.expanded ? 'chevron-up' : 'chevron-down';
14633
14908
  }
14634
14909
  get expandedSvgIcon() {
14635
14910
  if (this.ctx.grid.isActionSheetExpanded) {
@@ -17704,7 +17979,7 @@ class CSVCommandToolbarDirective extends ToolbarToolBase {
17704
17979
  e.preventDefault();
17705
17980
  this.csvService.exportClick.emit();
17706
17981
  }
17707
- 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 });
17708
17983
  static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "20.3.26", type: CSVCommandToolbarDirective, isStandalone: true, selector: "[kendoGridCSVTool]", usesInheritance: true, ngImport: i0 });
17709
17984
  }
17710
17985
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.26", ngImport: i0, type: CSVCommandToolbarDirective, decorators: [{
@@ -17713,7 +17988,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.26", ngImpo
17713
17988
  selector: '[kendoGridCSVTool]',
17714
17989
  standalone: true
17715
17990
  }]
17716
- }], 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 }] });
17717
17992
 
17718
17993
  /**
17719
17994
  * @hidden
@@ -18603,10 +18878,11 @@ class ColumnHandleDirective {
18603
18878
  const isParentSpan = isInSpanColumn(column);
18604
18879
  const isLastInSpan = isParentSpan ? column.parent.children.last === column : false;
18605
18880
  const index = indexOf(column, allLeafs);
18881
+ const isSingleGroupColumn = column === this.ctx.grid?.singleGroupColumn;
18606
18882
  return {
18607
18883
  column,
18608
18884
  headerIndex: this.columnsForLevel(column.level).indexOf(column),
18609
- index,
18885
+ index: isSingleGroupColumn ? -1 : index,
18610
18886
  isLastInSpan,
18611
18887
  isParentSpan,
18612
18888
  level: column.level
@@ -20106,7 +20382,7 @@ const isRootLevel = ({ parent }) => !isTruthy(parent);
20106
20382
  const ofColumnType = ({ draggable }) => ['column', 'columnGroup']
20107
20383
  .indexOf(draggable.context.type) >= 0;
20108
20384
  const notSameElement = ({ draggable, target }) => draggable.element.nativeElement !== target.element.nativeElement;
20109
- const inSameParent = (x, y) => x.parent === y.parent ||
20385
+ const inSameParent = (x, y) => (x.parent ?? null) === (y.parent ?? null) ||
20110
20386
  (isInSpanColumn$1(y) && inSameParent(x, y.parent));
20111
20387
  const sameParent = ({ draggable, target }) => inSameParent(draggable.context.column, target.context.column);
20112
20388
  const lastNonLocked = ({ draggable }) => !isTruthy(draggable.context.column.locked) &&
@@ -20155,6 +20431,7 @@ class HeaderComponent {
20155
20431
  totalColumns;
20156
20432
  tabIndex;
20157
20433
  size;
20434
+ groupingMode = 'default';
20158
20435
  sortedFields = {};
20159
20436
  hostClass = true;
20160
20437
  get columnMenuSettings() {
@@ -20546,7 +20823,7 @@ class HeaderComponent {
20546
20823
  });
20547
20824
  }
20548
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 });
20549
- 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: `
20550
20827
  @for (i of columnLevels; track $index; let levelIndex = $index) {
20551
20828
  <tr
20552
20829
  kendoGridLogicalRow
@@ -20555,12 +20832,14 @@ class HeaderComponent {
20555
20832
  [logicalCellsCount]="columns.length"
20556
20833
  [logicalSlaveCellsCount]="unlockedColumnsCount"
20557
20834
  [totalColumns]="totalColumns">
20558
- @for (g of groups; track g) {
20559
- <th
20560
- class="k-group-cell k-header k-table-th"
20561
- role="presentation"
20562
- >
20563
- </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
+ }
20564
20843
  }
20565
20844
  @if (detailTemplate?.templateRef && !isStacked) {
20566
20845
  <th class="k-hierarchy-cell k-header k-table-th"
@@ -20801,9 +21080,10 @@ class HeaderComponent {
20801
21080
  [logicalSlaveRow]="lockedColumnsCount > 0"
20802
21081
  [logicalCellsCount]="columns.length"
20803
21082
  [logicalSlaveCellsCount]="unlockedColumnsCount"
20804
- [totalColumns]="totalColumns"></tr>
21083
+ [totalColumns]="totalColumns"
21084
+ [groupingMode]="groupingMode"></tr>
20805
21085
  }
20806
- `, 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"] }] });
20807
21087
  }
20808
21088
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.26", ngImport: i0, type: HeaderComponent, decorators: [{
20809
21089
  type: Component,
@@ -20818,12 +21098,14 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.26", ngImpo
20818
21098
  [logicalCellsCount]="columns.length"
20819
21099
  [logicalSlaveCellsCount]="unlockedColumnsCount"
20820
21100
  [totalColumns]="totalColumns">
20821
- @for (g of groups; track g) {
20822
- <th
20823
- class="k-group-cell k-header k-table-th"
20824
- role="presentation"
20825
- >
20826
- </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
+ }
20827
21109
  }
20828
21110
  @if (detailTemplate?.templateRef && !isStacked) {
20829
21111
  <th class="k-hierarchy-cell k-header k-table-th"
@@ -21064,7 +21346,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.26", ngImpo
21064
21346
  [logicalSlaveRow]="lockedColumnsCount > 0"
21065
21347
  [logicalCellsCount]="columns.length"
21066
21348
  [logicalSlaveCellsCount]="unlockedColumnsCount"
21067
- [totalColumns]="totalColumns"></tr>
21349
+ [totalColumns]="totalColumns"
21350
+ [groupingMode]="groupingMode"></tr>
21068
21351
  }
21069
21352
  `,
21070
21353
  standalone: true,
@@ -21125,6 +21408,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.26", ngImpo
21125
21408
  type: Input
21126
21409
  }], size: [{
21127
21410
  type: Input
21411
+ }], groupingMode: [{
21412
+ type: Input
21128
21413
  }], hostClass: [{
21129
21414
  type: HostBinding,
21130
21415
  args: ['class.k-table-thead']
@@ -21153,6 +21438,7 @@ class FooterComponent {
21153
21438
  logicalRowIndex = 0;
21154
21439
  totalColumns;
21155
21440
  totalColumnsCount = 0;
21441
+ groupingMode = 'default';
21156
21442
  get footerClass() {
21157
21443
  return !this.scrollable;
21158
21444
  }
@@ -21190,7 +21476,7 @@ class FooterComponent {
21190
21476
  return this.ctx.grid?.isStacked;
21191
21477
  }
21192
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 });
21193
- 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: `
21194
21480
  <ng-container>
21195
21481
  <tr
21196
21482
  class="k-footer-template"
@@ -21202,12 +21488,14 @@ class FooterComponent {
21202
21488
  [totalColumns]="totalColumns"
21203
21489
  >
21204
21490
  @if (!isStacked) {
21205
- @for (g of groups; track g) {
21206
- <td
21207
- class="k-table-td k-group-cell k-table-group-td"
21208
- role="presentation"
21209
- >
21210
- </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
+ }
21211
21499
  }
21212
21500
  }
21213
21501
  @if (detailTemplate?.templateRef && !isStacked) {
@@ -21288,12 +21576,14 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.26", ngImpo
21288
21576
  [totalColumns]="totalColumns"
21289
21577
  >
21290
21578
  @if (!isStacked) {
21291
- @for (g of groups; track g) {
21292
- <td
21293
- class="k-table-td k-group-cell k-table-group-td"
21294
- role="presentation"
21295
- >
21296
- </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
+ }
21297
21587
  }
21298
21588
  }
21299
21589
  @if (detailTemplate?.templateRef && !isStacked) {
@@ -21376,6 +21666,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.26", ngImpo
21376
21666
  type: Input
21377
21667
  }], totalColumnsCount: [{
21378
21668
  type: Input
21669
+ }], groupingMode: [{
21670
+ type: Input
21379
21671
  }], footerClass: [{
21380
21672
  type: HostBinding,
21381
21673
  args: ['class.k-grid-footer']
@@ -22767,6 +23059,7 @@ class TableBodyComponent {
22767
23059
  detailRowHeight;
22768
23060
  isPinContainer = false;
22769
23061
  pinPosition = null;
23062
+ groupingMode = 'default';
22770
23063
  hostClass = true;
22771
23064
  groupHeaderSlaveCellsCount;
22772
23065
  groupHeaderColumns;
@@ -22867,7 +23160,8 @@ class TableBodyComponent {
22867
23160
  });
22868
23161
  }
22869
23162
  if (this.hasGroupHeaderColumn) {
22870
- 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);
22871
23165
  }
22872
23166
  else {
22873
23167
  this.groupHeaderColumns = [];
@@ -23206,7 +23500,7 @@ class TableBodyComponent {
23206
23500
  }
23207
23501
  }
23208
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 });
23209
- 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: `
23210
23504
  @if (editService.hasNewItem) {
23211
23505
  <tr class="k-grid-add-row k-grid-edit-row k-master-row"
23212
23506
  [style.height.px]="rowHeight"
@@ -23217,8 +23511,10 @@ class TableBodyComponent {
23217
23511
  [logicalSlaveCellsCount]="unlockedColumnsCount()"
23218
23512
  [totalColumns]="totalColumns">
23219
23513
  @if (!skipGroupDecoration) {
23220
- @for (g of groups; track $index) {
23221
- <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
+ }
23222
23518
  }
23223
23519
  }
23224
23520
  @if (detailTemplate?.templateRef && !isStackedMode) {
@@ -23305,7 +23601,8 @@ class TableBodyComponent {
23305
23601
  [logicalSlaveRow]="lockedColumnsCount > 0 && !isStackedMode"
23306
23602
  [totalColumns]="totalColumns"
23307
23603
  [logicalCellsCount]="columns.length"
23308
- [logicalSlaveCellsCount]="0">
23604
+ [logicalSlaveCellsCount]="0"
23605
+ [groupingMode]="groupingMode">
23309
23606
  </tr>
23310
23607
  }
23311
23608
  @if (item.showDataItem) {
@@ -23331,8 +23628,10 @@ class TableBodyComponent {
23331
23628
  [class.k-selected]="isSelectable({ dataItem: item.data, index: $any(item).index }) && isRowSelected(item)"
23332
23629
  [class.k-highlighted]="item.isHighlighted">
23333
23630
  @if (!skipGroupDecoration) {
23334
- @for (g of groups; track $index) {
23335
- <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
+ }
23336
23635
  }
23337
23636
  }
23338
23637
  @if (detailTemplate?.templateRef && !isStackedMode) {
@@ -23382,37 +23681,44 @@ class TableBodyComponent {
23382
23681
  } @else {
23383
23682
  @for (column of columns; track virtualColumns ? $index : column; let columnIndex = $index) {
23384
23683
  @if (!item.cells?.[lockedColumnsCount + columnIndex]?.skip) {
23385
- <td
23386
- kendoGridCell
23387
- [rowIndex]="$any(item).index"
23388
- [columnIndex]="lockedColumnsCount + columnIndex"
23389
- [attr.data-kendo-grid-column-index]="lockedColumnsCount + columnIndex"
23390
- [column]="column"
23391
- [columns]="allColumns"
23392
- [dataItem]="item.data"
23393
- [isLoading]="isLoading"
23394
- [isVirtual]="isVirtual"
23395
- [loadingTemplate]="cellLoadingTemplate"
23396
- kendoGridLogicalCell
23397
- [logicalRowIndex]="logicalRowIndex(rowIndex)"
23398
- [logicalColIndex]="logicalColIndex(column)"
23399
- [dataRowIndex]="$any(item).index"
23400
- [dataItem]="item.data"
23401
- [colIndex]="columnIndex"
23402
- [colSpan]="column.colspan"
23403
- [rowSpan]="item.cells[lockedColumnsCount + columnIndex]?.rowspan"
23404
- [attr.role]="column.tableCellsRole"
23405
- class="k-table-td"
23406
- [attr.aria-selected]="lockedColumnsCount < 1 && isSelectable({ dataItem: item.data, index: $any(item).index }) ? isAriaSelected(item, column) : undefined"
23407
- [class.k-grid-content-sticky]="column.sticky"
23408
- [class.k-touch-action-none]="isSelectable({ dataItem: item.data, index: $any(item).index }) && $any(selectable).drag"
23409
- [ngClass]="column.cssClass"
23410
- [class.k-grid-edit-cell]="isEditingCell($any(item).index, column)"
23411
- [ngStyle]="column.sticky ? addStickyColumnStyles(column) : column.style"
23412
- [attr.colspan]="column.colspan"
23413
- [class.k-selected]="isSelectable && cellSelectionService.isCellSelected(item, column)"
23414
- [class.k-highlighted]="item.cells[lockedColumnsCount + columnIndex]?.isHighlighted">
23415
- </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
+ }
23416
23722
  }
23417
23723
  }
23418
23724
  }
@@ -23487,8 +23793,10 @@ class TableBodyComponent {
23487
23793
  [logicalCellsCount]="columns.length"
23488
23794
  [logicalSlaveCellsCount]="unlockedColumnsCount(item)">
23489
23795
  @if (!skipGroupDecoration) {
23490
- @for (g of groups; track $index) {
23491
- <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
+ }
23492
23800
  }
23493
23801
  }
23494
23802
  @if (detailTemplate?.templateRef && !isStackedMode) {
@@ -23551,7 +23859,7 @@ class TableBodyComponent {
23551
23859
  @if (rowSticky) {
23552
23860
  <kendo-resize-sensor (resize)="resizeHandler()"></kendo-resize-sensor>
23553
23861
  }
23554
- `, 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"] }] });
23555
23863
  }
23556
23864
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.26", ngImport: i0, type: TableBodyComponent, decorators: [{
23557
23865
  type: Component,
@@ -23568,8 +23876,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.26", ngImpo
23568
23876
  [logicalSlaveCellsCount]="unlockedColumnsCount()"
23569
23877
  [totalColumns]="totalColumns">
23570
23878
  @if (!skipGroupDecoration) {
23571
- @for (g of groups; track $index) {
23572
- <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
+ }
23573
23883
  }
23574
23884
  }
23575
23885
  @if (detailTemplate?.templateRef && !isStackedMode) {
@@ -23656,7 +23966,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.26", ngImpo
23656
23966
  [logicalSlaveRow]="lockedColumnsCount > 0 && !isStackedMode"
23657
23967
  [totalColumns]="totalColumns"
23658
23968
  [logicalCellsCount]="columns.length"
23659
- [logicalSlaveCellsCount]="0">
23969
+ [logicalSlaveCellsCount]="0"
23970
+ [groupingMode]="groupingMode">
23660
23971
  </tr>
23661
23972
  }
23662
23973
  @if (item.showDataItem) {
@@ -23682,8 +23993,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.26", ngImpo
23682
23993
  [class.k-selected]="isSelectable({ dataItem: item.data, index: $any(item).index }) && isRowSelected(item)"
23683
23994
  [class.k-highlighted]="item.isHighlighted">
23684
23995
  @if (!skipGroupDecoration) {
23685
- @for (g of groups; track $index) {
23686
- <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
+ }
23687
24000
  }
23688
24001
  }
23689
24002
  @if (detailTemplate?.templateRef && !isStackedMode) {
@@ -23733,37 +24046,44 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.26", ngImpo
23733
24046
  } @else {
23734
24047
  @for (column of columns; track virtualColumns ? $index : column; let columnIndex = $index) {
23735
24048
  @if (!item.cells?.[lockedColumnsCount + columnIndex]?.skip) {
23736
- <td
23737
- kendoGridCell
23738
- [rowIndex]="$any(item).index"
23739
- [columnIndex]="lockedColumnsCount + columnIndex"
23740
- [attr.data-kendo-grid-column-index]="lockedColumnsCount + columnIndex"
23741
- [column]="column"
23742
- [columns]="allColumns"
23743
- [dataItem]="item.data"
23744
- [isLoading]="isLoading"
23745
- [isVirtual]="isVirtual"
23746
- [loadingTemplate]="cellLoadingTemplate"
23747
- kendoGridLogicalCell
23748
- [logicalRowIndex]="logicalRowIndex(rowIndex)"
23749
- [logicalColIndex]="logicalColIndex(column)"
23750
- [dataRowIndex]="$any(item).index"
23751
- [dataItem]="item.data"
23752
- [colIndex]="columnIndex"
23753
- [colSpan]="column.colspan"
23754
- [rowSpan]="item.cells[lockedColumnsCount + columnIndex]?.rowspan"
23755
- [attr.role]="column.tableCellsRole"
23756
- class="k-table-td"
23757
- [attr.aria-selected]="lockedColumnsCount < 1 && isSelectable({ dataItem: item.data, index: $any(item).index }) ? isAriaSelected(item, column) : undefined"
23758
- [class.k-grid-content-sticky]="column.sticky"
23759
- [class.k-touch-action-none]="isSelectable({ dataItem: item.data, index: $any(item).index }) && $any(selectable).drag"
23760
- [ngClass]="column.cssClass"
23761
- [class.k-grid-edit-cell]="isEditingCell($any(item).index, column)"
23762
- [ngStyle]="column.sticky ? addStickyColumnStyles(column) : column.style"
23763
- [attr.colspan]="column.colspan"
23764
- [class.k-selected]="isSelectable && cellSelectionService.isCellSelected(item, column)"
23765
- [class.k-highlighted]="item.cells[lockedColumnsCount + columnIndex]?.isHighlighted">
23766
- </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
+ }
23767
24087
  }
23768
24088
  }
23769
24089
  }
@@ -23838,8 +24158,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.26", ngImpo
23838
24158
  [logicalCellsCount]="columns.length"
23839
24159
  [logicalSlaveCellsCount]="unlockedColumnsCount(item)">
23840
24160
  @if (!skipGroupDecoration) {
23841
- @for (g of groups; track $index) {
23842
- <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
+ }
23843
24165
  }
23844
24166
  }
23845
24167
  @if (detailTemplate?.templateRef && !isStackedMode) {
@@ -23961,6 +24283,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.26", ngImpo
23961
24283
  type: Input
23962
24284
  }], pinPosition: [{
23963
24285
  type: Input
24286
+ }], groupingMode: [{
24287
+ type: Input
23964
24288
  }], hostClass: [{
23965
24289
  type: HostBinding,
23966
24290
  args: ['class.k-table-tbody']
@@ -24830,8 +25154,8 @@ const packageMetadata = {
24830
25154
  productName: 'Kendo UI for Angular',
24831
25155
  productCode: 'KENDOUIANGULAR',
24832
25156
  productCodes: ['KENDOUIANGULAR'],
24833
- publishDate: 1785489838,
24834
- version: '25.0.0-develop.16',
25157
+ publishDate: 1785502330,
25158
+ version: '25.0.0-develop.18',
24835
25159
  licensingDocsUrl: 'https://www.telerik.com/kendo-angular-ui/my-license/'
24836
25160
  };
24837
25161
 
@@ -25538,6 +25862,67 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.26", ngImpo
25538
25862
  type: Injectable
25539
25863
  }], ctorParameters: () => [{ type: ContextService }, { type: ColumnInfoService }, { type: i0.NgZone }] });
25540
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
+
25541
25926
  /**
25542
25927
  * @hidden
25543
25928
  */
@@ -26370,11 +26755,12 @@ class NavigationMetadata {
26370
26755
  isStacked;
26371
26756
  pinnedTopRowsCount;
26372
26757
  pinnedBottomRowsCount;
26758
+ isColumnsGroupMode;
26373
26759
  get maxLogicalRowIndex() {
26374
26760
  const dataRows = this.hasDetailTemplate ? this.dataRows * 2 : this.dataRows;
26375
26761
  return this.headerRows + this.pinnedTopRowsCount + dataRows + this.pinnedBottomRowsCount + this.footerRow - 1;
26376
26762
  }
26377
- 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) {
26378
26764
  this.dataRows = dataRows;
26379
26765
  this.headerRows = headerRows;
26380
26766
  this.isVirtual = isVirtual;
@@ -26387,6 +26773,7 @@ class NavigationMetadata {
26387
26773
  this.isStacked = isStacked;
26388
26774
  this.pinnedTopRowsCount = pinnedTopRowsCount;
26389
26775
  this.pinnedBottomRowsCount = pinnedBottomRowsCount;
26776
+ this.isColumnsGroupMode = isColumnsGroupMode;
26390
26777
  }
26391
26778
  }
26392
26779
 
@@ -27701,6 +28088,14 @@ class TableDirective {
27701
28088
  if (!info.isParentSpan || (info.isParentSpan && info.isLastInSpan)) {
27702
28089
  data = pipe(row('tbody>tr:not(.k-grouping-row):not(.k-grid-norecords)'), cell(info.index), offsetWidth)(dom);
27703
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
+ }
27704
28099
  const footer = pipe(row('tfoot>tr'), cell(info.index), offsetWidth)(dom);
27705
28100
  return Math.max(header, data, footer);
27706
28101
  }
@@ -28648,6 +29043,7 @@ class StickyGroupContainerComponent {
28648
29043
  tableWidth;
28649
29044
  lockedWidth;
28650
29045
  isLocked = false;
29046
+ groupingMode = 'default';
28651
29047
  hostClass = true;
28652
29048
  get isBottom() {
28653
29049
  return this.position === 'bottom';
@@ -28900,7 +29296,7 @@ class StickyGroupContainerComponent {
28900
29296
  * Triggers the scroll-to-root-and-toggle flow via the service.
28901
29297
  * The list component handles actual scrolling, toggling, and focus.
28902
29298
  */
28903
- scrollToGroupAndToggle(stickyItem, groupLevel) {
29299
+ scrollToGroupAndToggle(stickyItem, _groupLevel) {
28904
29300
  const groupItem = stickyItem.item;
28905
29301
  const groupIndex = groupItem.index;
28906
29302
  this.stickyGroupsService.pendingFocusGroupIndex = groupIndex;
@@ -29108,7 +29504,7 @@ class StickyGroupContainerComponent {
29108
29504
  }
29109
29505
  }
29110
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 });
29111
- 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: [
29112
29508
  { provide: SKIP_CELL_NAVIGATION, useValue: true }
29113
29509
  ], ngImport: i0, template: `
29114
29510
  @if (isLocked) {
@@ -29124,7 +29520,8 @@ class StickyGroupContainerComponent {
29124
29520
  <colgroup kendoGridColGroup
29125
29521
  [groups]="groups"
29126
29522
  [columns]="$any(lockedColumns)"
29127
- [detailTemplate]="detailTemplate">
29523
+ [detailTemplate]="detailTemplate"
29524
+ [groupingMode]="groupingMode">
29128
29525
  </colgroup>
29129
29526
  <tbody class="k-table-tbody" role="presentation">
29130
29527
  @if (position === 'top') {
@@ -29144,7 +29541,8 @@ class StickyGroupContainerComponent {
29144
29541
  [attr.aria-rowindex]="stickyItem.flatIndex + 1"
29145
29542
  [attr.data-group-index]="$any(stickyItem.item).index"
29146
29543
  [attr.data-group-level]="$any(stickyItem.item).level"
29147
- tabindex="-1">
29544
+ tabindex="-1"
29545
+ [groupingMode]="groupingMode">
29148
29546
  </tr>
29149
29547
  }
29150
29548
  }
@@ -29154,8 +29552,10 @@ class StickyGroupContainerComponent {
29154
29552
  class="k-group-footer"
29155
29553
  [attr.aria-rowindex]="stickyItem.flatIndex + 1"
29156
29554
  [attr.data-sticky-row]="rowIdx">
29157
- @for (g of groups; track $index) {
29158
- <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
+ }
29159
29559
  }
29160
29560
  @if (detailTemplate?.templateRef) {
29161
29561
  <td class="k-hierarchy-cell k-table-td" role="gridcell"
@@ -29200,7 +29600,8 @@ class StickyGroupContainerComponent {
29200
29600
  <colgroup kendoGridColGroup
29201
29601
  [groups]="isLocked ? [] : groups"
29202
29602
  [columns]="$any(columns)"
29203
- [detailTemplate]="isLocked ? null : detailTemplate">
29603
+ [detailTemplate]="isLocked ? null : detailTemplate"
29604
+ [groupingMode]="groupingMode">
29204
29605
  </colgroup>
29205
29606
  <tbody class="k-table-tbody" role="rowgroup">
29206
29607
  @if (position === 'top') {
@@ -29220,7 +29621,8 @@ class StickyGroupContainerComponent {
29220
29621
  [attr.aria-rowindex]="stickyItem.flatIndex + 1"
29221
29622
  [attr.data-group-index]="$any(stickyItem.item).index"
29222
29623
  [attr.data-group-level]="$any(stickyItem.item).level"
29223
- tabindex="-1">
29624
+ tabindex="-1"
29625
+ [groupingMode]="groupingMode">
29224
29626
  </tr>
29225
29627
  }
29226
29628
  }
@@ -29231,8 +29633,10 @@ class StickyGroupContainerComponent {
29231
29633
  [attr.aria-rowindex]="stickyItem.flatIndex + 1"
29232
29634
  [attr.data-sticky-row]="rowIdx">
29233
29635
  @if (!isLocked) {
29234
- @for (g of groups; track $index) {
29235
- <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
+ }
29236
29640
  }
29237
29641
  @if (detailTemplate?.templateRef && !isStacked) {
29238
29642
  <td class="k-hierarchy-cell k-table-td" role="gridcell"
@@ -29287,7 +29691,7 @@ class StickyGroupContainerComponent {
29287
29691
  </tbody>
29288
29692
  </table>
29289
29693
  </div>
29290
- `, 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 });
29291
29695
  }
29292
29696
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.26", ngImport: i0, type: StickyGroupContainerComponent, decorators: [{
29293
29697
  type: Component,
@@ -29308,7 +29712,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.26", ngImpo
29308
29712
  <colgroup kendoGridColGroup
29309
29713
  [groups]="groups"
29310
29714
  [columns]="$any(lockedColumns)"
29311
- [detailTemplate]="detailTemplate">
29715
+ [detailTemplate]="detailTemplate"
29716
+ [groupingMode]="groupingMode">
29312
29717
  </colgroup>
29313
29718
  <tbody class="k-table-tbody" role="presentation">
29314
29719
  @if (position === 'top') {
@@ -29328,7 +29733,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.26", ngImpo
29328
29733
  [attr.aria-rowindex]="stickyItem.flatIndex + 1"
29329
29734
  [attr.data-group-index]="$any(stickyItem.item).index"
29330
29735
  [attr.data-group-level]="$any(stickyItem.item).level"
29331
- tabindex="-1">
29736
+ tabindex="-1"
29737
+ [groupingMode]="groupingMode">
29332
29738
  </tr>
29333
29739
  }
29334
29740
  }
@@ -29338,8 +29744,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.26", ngImpo
29338
29744
  class="k-group-footer"
29339
29745
  [attr.aria-rowindex]="stickyItem.flatIndex + 1"
29340
29746
  [attr.data-sticky-row]="rowIdx">
29341
- @for (g of groups; track $index) {
29342
- <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
+ }
29343
29751
  }
29344
29752
  @if (detailTemplate?.templateRef) {
29345
29753
  <td class="k-hierarchy-cell k-table-td" role="gridcell"
@@ -29384,7 +29792,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.26", ngImpo
29384
29792
  <colgroup kendoGridColGroup
29385
29793
  [groups]="isLocked ? [] : groups"
29386
29794
  [columns]="$any(columns)"
29387
- [detailTemplate]="isLocked ? null : detailTemplate">
29795
+ [detailTemplate]="isLocked ? null : detailTemplate"
29796
+ [groupingMode]="groupingMode">
29388
29797
  </colgroup>
29389
29798
  <tbody class="k-table-tbody" role="rowgroup">
29390
29799
  @if (position === 'top') {
@@ -29404,7 +29813,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.26", ngImpo
29404
29813
  [attr.aria-rowindex]="stickyItem.flatIndex + 1"
29405
29814
  [attr.data-group-index]="$any(stickyItem.item).index"
29406
29815
  [attr.data-group-level]="$any(stickyItem.item).level"
29407
- tabindex="-1">
29816
+ tabindex="-1"
29817
+ [groupingMode]="groupingMode">
29408
29818
  </tr>
29409
29819
  }
29410
29820
  }
@@ -29415,8 +29825,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.26", ngImpo
29415
29825
  [attr.aria-rowindex]="stickyItem.flatIndex + 1"
29416
29826
  [attr.data-sticky-row]="rowIdx">
29417
29827
  @if (!isLocked) {
29418
- @for (g of groups; track $index) {
29419
- <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
+ }
29420
29832
  }
29421
29833
  @if (detailTemplate?.templateRef && !isStacked) {
29422
29834
  <td class="k-hierarchy-cell k-table-td" role="gridcell"
@@ -29504,6 +29916,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.26", ngImpo
29504
29916
  type: Input
29505
29917
  }], isLocked: [{
29506
29918
  type: Input
29919
+ }], groupingMode: [{
29920
+ type: Input
29507
29921
  }], hostClass: [{
29508
29922
  type: HostBinding,
29509
29923
  args: ['class.k-grid-sticky-container']
@@ -29618,6 +30032,7 @@ class ListComponent {
29618
30032
  loadingTemplate;
29619
30033
  sort = new Array();
29620
30034
  size;
30035
+ groupingMode = 'default';
29621
30036
  contentScroll = new EventEmitter();
29622
30037
  pageChange = new EventEmitter();
29623
30038
  scrollBottom = new EventEmitter();
@@ -29683,7 +30098,9 @@ class ListComponent {
29683
30098
  return this.columns.leafColumnsToRender;
29684
30099
  }
29685
30100
  get lockedWidth() {
29686
- const groupCellsWidth = this.groups.length * GROUP_CELL_WIDTH;
30101
+ const groupCellsWidth = this.groupingMode === 'default'
30102
+ ? this.groups.length * GROUP_CELL_WIDTH
30103
+ : 0;
29687
30104
  return expandColumns(this.lockedLeafColumns.toArray()).reduce((prev, curr) => prev + (curr.width || 0), groupCellsWidth);
29688
30105
  }
29689
30106
  get nonLockedWidth() {
@@ -30813,7 +31230,10 @@ class ListComponent {
30813
31230
  for (let idx = 0; idx < column; idx++) {
30814
31231
  offset += columns[idx].width || 0;
30815
31232
  }
30816
- 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);
30817
31237
  this.container.nativeElement.scrollLeft = this.normalizeScrollLeft(offset + startOffset);
30818
31238
  }
30819
31239
  else if (column === 0 && this.detailTemplate) {
@@ -30959,7 +31379,7 @@ class ListComponent {
30959
31379
  this.scroller.total = this.isVirtual && !this.ctx.grid?.pageable ? this.total : this.allItems.length;
30960
31380
  }
30961
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 });
30962
- 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: [
30963
31383
  {
30964
31384
  provide: SCROLLER_FACTORY_TOKEN,
30965
31385
  useValue: DEFAULT_SCROLLER_FACTORY
@@ -30978,7 +31398,8 @@ class ListComponent {
30978
31398
  [groupHeaderColumns]="stickyGroupHeaderColumns"
30979
31399
  [tableWidth]="nonLockedWidth"
30980
31400
  [lockedWidth]="lockedWidth"
30981
- [isLocked]="isLocked">
31401
+ [isLocked]="isLocked"
31402
+ [groupingMode]="groupingMode">
30982
31403
  </div>
30983
31404
  }
30984
31405
  @if (isLocked && !isStacked) {
@@ -31006,7 +31427,8 @@ class ListComponent {
31006
31427
  [groups]="groups"
31007
31428
  [columns]="$any(lockedLeafColumns)"
31008
31429
  [detailTemplate]="detailTemplate"
31009
- [sort]="sort">
31430
+ [sort]="sort"
31431
+ [groupingMode]="groupingMode">
31010
31432
  </colgroup>
31011
31433
  <tbody kendoGridTableBody
31012
31434
  role="presentation"
@@ -31027,7 +31449,8 @@ class ListComponent {
31027
31449
  [rowClass]="rowClass"
31028
31450
  [isLoading]="loading"
31029
31451
  [isVirtual]="isVirtual"
31030
- [cellLoadingTemplate]="cellLoadingTemplate">
31452
+ [cellLoadingTemplate]="cellLoadingTemplate"
31453
+ [groupingMode]="groupingMode">
31031
31454
  </tbody>
31032
31455
  </table>
31033
31456
  <kendo-resize-sensor></kendo-resize-sensor>
@@ -31060,7 +31483,8 @@ class ListComponent {
31060
31483
  [groups]="isLocked ? [] : groups"
31061
31484
  [columns]="$any(nonLockedColumnsToRender)"
31062
31485
  [detailTemplate]="detailTemplate"
31063
- [sort]="sort">
31486
+ [sort]="sort"
31487
+ [groupingMode]="groupingMode">
31064
31488
  </colgroup>
31065
31489
  <tbody kendoGridTableBody
31066
31490
  role="rowgroup"
@@ -31085,7 +31509,8 @@ class ListComponent {
31085
31509
  [isVirtual]="isVirtual"
31086
31510
  [cellLoadingTemplate]="cellLoadingTemplate"
31087
31511
  [rowHeight]="rowHeight"
31088
- [detailRowHeight]="detailRowHeight">
31512
+ [detailRowHeight]="detailRowHeight"
31513
+ [groupingMode]="groupingMode">
31089
31514
  </tbody>
31090
31515
  </table>
31091
31516
  @if (isLocked) {
@@ -31119,10 +31544,11 @@ class ListComponent {
31119
31544
  [groupHeaderColumns]="stickyGroupHeaderColumns"
31120
31545
  [tableWidth]="nonLockedWidth"
31121
31546
  [lockedWidth]="lockedWidth"
31122
- [isLocked]="isLocked">
31547
+ [isLocked]="isLocked"
31548
+ [groupingMode]="groupingMode">
31123
31549
  </div>
31124
31550
  }
31125
- `, 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 });
31126
31552
  }
31127
31553
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.26", ngImport: i0, type: ListComponent, decorators: [{
31128
31554
  type: Component,
@@ -31149,7 +31575,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.26", ngImpo
31149
31575
  [groupHeaderColumns]="stickyGroupHeaderColumns"
31150
31576
  [tableWidth]="nonLockedWidth"
31151
31577
  [lockedWidth]="lockedWidth"
31152
- [isLocked]="isLocked">
31578
+ [isLocked]="isLocked"
31579
+ [groupingMode]="groupingMode">
31153
31580
  </div>
31154
31581
  }
31155
31582
  @if (isLocked && !isStacked) {
@@ -31177,7 +31604,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.26", ngImpo
31177
31604
  [groups]="groups"
31178
31605
  [columns]="$any(lockedLeafColumns)"
31179
31606
  [detailTemplate]="detailTemplate"
31180
- [sort]="sort">
31607
+ [sort]="sort"
31608
+ [groupingMode]="groupingMode">
31181
31609
  </colgroup>
31182
31610
  <tbody kendoGridTableBody
31183
31611
  role="presentation"
@@ -31198,7 +31626,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.26", ngImpo
31198
31626
  [rowClass]="rowClass"
31199
31627
  [isLoading]="loading"
31200
31628
  [isVirtual]="isVirtual"
31201
- [cellLoadingTemplate]="cellLoadingTemplate">
31629
+ [cellLoadingTemplate]="cellLoadingTemplate"
31630
+ [groupingMode]="groupingMode">
31202
31631
  </tbody>
31203
31632
  </table>
31204
31633
  <kendo-resize-sensor></kendo-resize-sensor>
@@ -31231,7 +31660,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.26", ngImpo
31231
31660
  [groups]="isLocked ? [] : groups"
31232
31661
  [columns]="$any(nonLockedColumnsToRender)"
31233
31662
  [detailTemplate]="detailTemplate"
31234
- [sort]="sort">
31663
+ [sort]="sort"
31664
+ [groupingMode]="groupingMode">
31235
31665
  </colgroup>
31236
31666
  <tbody kendoGridTableBody
31237
31667
  role="rowgroup"
@@ -31256,7 +31686,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.26", ngImpo
31256
31686
  [isVirtual]="isVirtual"
31257
31687
  [cellLoadingTemplate]="cellLoadingTemplate"
31258
31688
  [rowHeight]="rowHeight"
31259
- [detailRowHeight]="detailRowHeight">
31689
+ [detailRowHeight]="detailRowHeight"
31690
+ [groupingMode]="groupingMode">
31260
31691
  </tbody>
31261
31692
  </table>
31262
31693
  @if (isLocked) {
@@ -31290,7 +31721,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.26", ngImpo
31290
31721
  [groupHeaderColumns]="stickyGroupHeaderColumns"
31291
31722
  [tableWidth]="nonLockedWidth"
31292
31723
  [lockedWidth]="lockedWidth"
31293
- [isLocked]="isLocked">
31724
+ [isLocked]="isLocked"
31725
+ [groupingMode]="groupingMode">
31294
31726
  </div>
31295
31727
  }
31296
31728
  `,
@@ -31352,6 +31784,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.26", ngImpo
31352
31784
  type: Input
31353
31785
  }], size: [{
31354
31786
  type: Input
31787
+ }], groupingMode: [{
31788
+ type: Input
31355
31789
  }], contentScroll: [{
31356
31790
  type: Output
31357
31791
  }], pageChange: [{
@@ -32260,8 +32694,12 @@ class GridMessages extends ComponentMessages {
32260
32694
  * Sets the label for the Grid row unpin column icon.
32261
32695
  */
32262
32696
  rowUnpinLabel;
32697
+ /**
32698
+ * Sets the text for the group column's header when group mode is **singleColumn**.
32699
+ */
32700
+ groupsSingleColumnTitle;
32263
32701
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.26", ngImport: i0, type: GridMessages, deps: null, target: i0.ɵɵFactoryTarget.Directive });
32264
- 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 });
32265
32703
  }
32266
32704
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.26", ngImport: i0, type: GridMessages, decorators: [{
32267
32705
  type: Directive,
@@ -32592,6 +33030,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.26", ngImpo
32592
33030
  type: Input
32593
33031
  }], rowUnpinLabel: [{
32594
33032
  type: Input
33033
+ }], groupsSingleColumnTitle: [{
33034
+ type: Input
32595
33035
  }] } });
32596
33036
 
32597
33037
  /**
@@ -33717,7 +34157,7 @@ class GroupToolbarToolComponent {
33717
34157
  [class.k-disabled]="i === 0"
33718
34158
  >
33719
34159
  <kendo-icon-wrapper
33720
- name="arrow-chevron-up"
34160
+ name="chevron-up"
33721
34161
  [svgIcon]="upIcon"
33722
34162
  [size]="iconSize"
33723
34163
  ></kendo-icon-wrapper>
@@ -33729,7 +34169,7 @@ class GroupToolbarToolComponent {
33729
34169
  [class.k-disabled]="i === groupedColumns.length - 1"
33730
34170
  >
33731
34171
  <kendo-icon-wrapper
33732
- name="arrow-chevron-down"
34172
+ name="chevron-down"
33733
34173
  [svgIcon]="downIcon"
33734
34174
  [size]="iconSize"
33735
34175
  ></kendo-icon-wrapper>
@@ -33817,7 +34257,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.26", ngImpo
33817
34257
  [class.k-disabled]="i === 0"
33818
34258
  >
33819
34259
  <kendo-icon-wrapper
33820
- name="arrow-chevron-up"
34260
+ name="chevron-up"
33821
34261
  [svgIcon]="upIcon"
33822
34262
  [size]="iconSize"
33823
34263
  ></kendo-icon-wrapper>
@@ -33829,7 +34269,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.26", ngImpo
33829
34269
  [class.k-disabled]="i === groupedColumns.length - 1"
33830
34270
  >
33831
34271
  <kendo-icon-wrapper
33832
- name="arrow-chevron-down"
34272
+ name="chevron-down"
33833
34273
  [svgIcon]="downIcon"
33834
34274
  [size]="iconSize"
33835
34275
  ></kendo-icon-wrapper>
@@ -35232,6 +35672,7 @@ class RowPinContainerComponent {
35232
35672
  detailRowHeight;
35233
35673
  loading;
35234
35674
  size;
35675
+ groupingMode = 'default';
35235
35676
  constructor(localization) {
35236
35677
  this.localization = localization;
35237
35678
  }
@@ -35245,7 +35686,7 @@ class RowPinContainerComponent {
35245
35686
  return this.localization.get(labelKey);
35246
35687
  }
35247
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 });
35248
- 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: `
35249
35690
  @if (isLocked) {
35250
35691
  <div class="k-grid-content-locked" role="presentation" [style.width.px]="lockedWidth">
35251
35692
  <table #lockedTable class="k-grid-table"
@@ -35258,7 +35699,8 @@ class RowPinContainerComponent {
35258
35699
  [groups]="groups"
35259
35700
  [columns]="$any(lockedLeafColumns)"
35260
35701
  [sort]="sort"
35261
- [detailTemplate]="detailTemplate">
35702
+ [detailTemplate]="detailTemplate"
35703
+ [groupingMode]="groupingMode">
35262
35704
  </colgroup>
35263
35705
  <tbody kendoGridTableBody
35264
35706
  role="presentation"
@@ -35276,7 +35718,8 @@ class RowPinContainerComponent {
35276
35718
  [filterable]="filterable"
35277
35719
  [rowHeight]="rowHeight"
35278
35720
  [detailRowHeight]="detailRowHeight"
35279
- [isLoading]="loading">
35721
+ [isLoading]="loading"
35722
+ [groupingMode]="groupingMode">
35280
35723
  </tbody>
35281
35724
  </table>
35282
35725
  </div>
@@ -35291,7 +35734,8 @@ class RowPinContainerComponent {
35291
35734
  [columns]="$any(nonLockedLeafColumns)"
35292
35735
  [sort]="sort"
35293
35736
  [groups]="isLocked ? [] : groups"
35294
- [detailTemplate]="detailTemplate">
35737
+ [detailTemplate]="detailTemplate"
35738
+ [groupingMode]="groupingMode">
35295
35739
  </colgroup>
35296
35740
  <tbody kendoGridTableBody
35297
35741
  role="presentation"
@@ -35309,11 +35753,12 @@ class RowPinContainerComponent {
35309
35753
  [detailTemplate]="detailTemplate"
35310
35754
  [filterable]="filterable"
35311
35755
  [rowHeight]="rowHeight"
35312
- [detailRowHeight]="detailRowHeight">
35756
+ [detailRowHeight]="detailRowHeight"
35757
+ [groupingMode]="groupingMode">
35313
35758
  </tbody>
35314
35759
  </table>
35315
35760
  </div>
35316
- `, 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"] }] });
35317
35762
  }
35318
35763
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.26", ngImport: i0, type: RowPinContainerComponent, decorators: [{
35319
35764
  type: Component,
@@ -35332,7 +35777,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.26", ngImpo
35332
35777
  [groups]="groups"
35333
35778
  [columns]="$any(lockedLeafColumns)"
35334
35779
  [sort]="sort"
35335
- [detailTemplate]="detailTemplate">
35780
+ [detailTemplate]="detailTemplate"
35781
+ [groupingMode]="groupingMode">
35336
35782
  </colgroup>
35337
35783
  <tbody kendoGridTableBody
35338
35784
  role="presentation"
@@ -35350,7 +35796,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.26", ngImpo
35350
35796
  [filterable]="filterable"
35351
35797
  [rowHeight]="rowHeight"
35352
35798
  [detailRowHeight]="detailRowHeight"
35353
- [isLoading]="loading">
35799
+ [isLoading]="loading"
35800
+ [groupingMode]="groupingMode">
35354
35801
  </tbody>
35355
35802
  </table>
35356
35803
  </div>
@@ -35365,7 +35812,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.26", ngImpo
35365
35812
  [columns]="$any(nonLockedLeafColumns)"
35366
35813
  [sort]="sort"
35367
35814
  [groups]="isLocked ? [] : groups"
35368
- [detailTemplate]="detailTemplate">
35815
+ [detailTemplate]="detailTemplate"
35816
+ [groupingMode]="groupingMode">
35369
35817
  </colgroup>
35370
35818
  <tbody kendoGridTableBody
35371
35819
  role="presentation"
@@ -35383,7 +35831,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.26", ngImpo
35383
35831
  [detailTemplate]="detailTemplate"
35384
35832
  [filterable]="filterable"
35385
35833
  [rowHeight]="rowHeight"
35386
- [detailRowHeight]="detailRowHeight">
35834
+ [detailRowHeight]="detailRowHeight"
35835
+ [groupingMode]="groupingMode">
35387
35836
  </tbody>
35388
35837
  </table>
35389
35838
  </div>
@@ -35445,6 +35894,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.26", ngImpo
35445
35894
  type: Input
35446
35895
  }], size: [{
35447
35896
  type: Input
35897
+ }], groupingMode: [{
35898
+ type: Input
35448
35899
  }] } });
35449
35900
 
35450
35901
  /**
@@ -35882,6 +36333,24 @@ class GridComponent {
35882
36333
  get isActionSheetExpanded() {
35883
36334
  return Boolean(this.adaptiveRenderer?.actionSheet?.expanded);
35884
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
+ }
35885
36354
  /**
35886
36355
  * @hidden
35887
36356
  */
@@ -36441,6 +36910,10 @@ class GridComponent {
36441
36910
  this._customToolbarTemplate = customToolbarTemplate;
36442
36911
  }
36443
36912
  columnMenuTemplates;
36913
+ set groupColumnGroupHeaderTemplates(value) {
36914
+ const template = value.first;
36915
+ this.groupInfoService.groupColumnGroupHeaderTemplate = template ? template.templateRef : null;
36916
+ }
36444
36917
  lockedHeader;
36445
36918
  header;
36446
36919
  pinnedContainers;
@@ -36606,6 +37079,9 @@ class GridComponent {
36606
37079
  _navigable = ['table', 'pager', 'toolbar'];
36607
37080
  _size;
36608
37081
  _loading = false;
37082
+ _singleGroupColumn = null;
37083
+ _multiGroupColumns = [];
37084
+ _hiddenByGrouping = new Set();
36609
37085
  _showPagerInput = true;
36610
37086
  _showPagerPageText = true;
36611
37087
  _showPagerItemsText = true;
@@ -36667,7 +37143,9 @@ class GridComponent {
36667
37143
  if (this.isStacked) {
36668
37144
  return 0;
36669
37145
  }
36670
- const groupCellsWidth = this.group.length * GROUP_CELL_WIDTH;
37146
+ const groupCellsWidth = this.groupingMode === 'default'
37147
+ ? this.group.length * GROUP_CELL_WIDTH
37148
+ : 0;
36671
37149
  return expandColumns(this.lockedLeafColumns.toArray()).reduce((prev, curr) => prev + (curr.width || 0), groupCellsWidth);
36672
37150
  }
36673
37151
  get nonLockedWidth() {
@@ -36956,6 +37434,9 @@ class GridComponent {
36956
37434
  if (this.lockedLeafColumns.length && anyChanged(["pageSize", "skip", "sort", "group"], changes)) {
36957
37435
  this.changeNotification.notify();
36958
37436
  }
37437
+ if (isChanged$1("group", changes) && (this.groupingMode === 'multipleColumns' || this.groupingMode === 'singleColumn')) {
37438
+ this.syncGroupColumn();
37439
+ }
36959
37440
  if (isChanged$1("skip", changes)) {
36960
37441
  this.updatePinnedRowTracking();
36961
37442
  }
@@ -37002,6 +37483,7 @@ class GridComponent {
37002
37483
  }
37003
37484
  if (isChanged$1('groupable', changes, true)) {
37004
37485
  this.groupable = changes['groupable'].currentValue;
37486
+ this.syncGroupColumn();
37005
37487
  }
37006
37488
  if (isChanged$1('navigable', changes, true)) {
37007
37489
  if (this.navigationService.enabled) {
@@ -37026,11 +37508,15 @@ class GridComponent {
37026
37508
  ngAfterContentInit() {
37027
37509
  this.shouldGenerateColumns = !this.columns.length;
37028
37510
  this.autoGenerateColumns();
37511
+ this.syncGroupColumn();
37512
+ this.syncHiddenGroupedColumns();
37029
37513
  this.columnList = new ColumnList(this.columns);
37030
37514
  this.columnsChangeSubscription = this.columns.changes.subscribe(() => {
37031
37515
  if (this.shouldGenerateColumns) {
37032
37516
  this.autoGenerateColumns();
37033
37517
  }
37518
+ this.syncGroupColumn();
37519
+ this.syncHiddenGroupedColumns();
37034
37520
  this.verifySettings();
37035
37521
  });
37036
37522
  }
@@ -37771,12 +38257,106 @@ class GridComponent {
37771
38257
  }
37772
38258
  autoGenerateColumns() {
37773
38259
  if (this.shouldGenerateColumns && !this.columns.length && this.view.length) {
37774
- this.columns.reset(Object.keys(this.view.at(0)).map(field => {
38260
+ const generatedColumns = Object.keys(this.view.at(0)).map(field => {
37775
38261
  const column = new ColumnComponent(undefined, this.idService);
37776
38262
  column.field = field;
37777
38263
  return column;
37778
- }));
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;
37779
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
+ });
37780
38360
  }
37781
38361
  /**
37782
38362
  * @hidden
@@ -37846,6 +38426,13 @@ class GridComponent {
37846
38426
  }
37847
38427
  this.isVirtual && this.ctx.scroller?.resetVirtualSkip();
37848
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
+ }
37849
38436
  hasObservers(this.gridStateChange) && this.gridStateChange.emit({ ...this.currentState, ...x });
37850
38437
  });
37851
38438
  this.stateChangeSubscription.add(merge(this.columnReorder, this.columnResize, this.columnVisibilityChange, this.columnLockedChange, this.columnStickyChange).pipe(flatMap(() => this.ngZone.onStable.pipe(take(1))))
@@ -38067,7 +38654,7 @@ class GridComponent {
38067
38654
  const addRowOffset = this.editService.hasNewItem ? 1 : 0;
38068
38655
  const filterRowOffset = hasFilterRow(this.filterable) ? 1 : 0;
38069
38656
  const headerRows = this.isStacked ? 0 : this.totalColumnLevels + 1 + filterRowOffset + addRowOffset;
38070
- 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');
38071
38658
  }
38072
38659
  applyAutoSize() {
38073
38660
  const cols = this.columns.filter((c) => this.autoSize ? c.autoSize !== false : c.autoSize);
@@ -38194,6 +38781,7 @@ class GridComponent {
38194
38781
  provide: KENDO_WEBMCP_HOST,
38195
38782
  useExisting: forwardRef(() => GridComponent)
38196
38783
  },
38784
+ provideComponentName('grid'),
38197
38785
  FilterService,
38198
38786
  ResponsiveService,
38199
38787
  PagerContextService,
@@ -38230,7 +38818,7 @@ class GridComponent {
38230
38818
  RowPinService,
38231
38819
  StickyGroupsService,
38232
38820
  PinnedRowTrackingService
38233
- ], 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: `
38234
38822
  <ng-container kendoGridLocalizedMessages
38235
38823
  i18n-groupPanelEmpty="kendo.grid.groupPanelEmpty|The label visible in the Grid group panel when it is empty"
38236
38824
  groupPanelEmpty="Drag a column header and drop it here to group by that column"
@@ -38717,6 +39305,9 @@ class GridComponent {
38717
39305
 
38718
39306
  i18n-rowUnpinLabel="kendo.grid.rowUnpinLabel|Sets the label for the Grid row unpin column icon"
38719
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"
38720
39311
  >
38721
39312
  </ng-container>
38722
39313
  @if (showTopToolbar) {
@@ -38829,8 +39420,9 @@ class GridComponent {
38829
39420
  <colgroup kendoGridColGroup
38830
39421
  [columns]="$any(lockedLeafColumns)"
38831
39422
  [groups]="group"
38832
- [detailTemplate]="detailTemplate">
38833
- </colgroup>
39423
+ [detailTemplate]="detailTemplate"
39424
+ [groupingMode]="groupingMode">
39425
+ </colgroup>
38834
39426
  <thead kendoGridHeader
38835
39427
  role="rowgroup"
38836
39428
  [resizable]="resizable"
@@ -38849,7 +39441,8 @@ class GridComponent {
38849
39441
  [totalColumnsCount]="leafColumns.length"
38850
39442
  [totalColumns]="columnsContainer"
38851
39443
  [detailTemplate]="detailTemplate"
38852
- [tabIndex]="navigation.tableEnabled ? '-1' : '0'">
39444
+ [tabIndex]="navigation.tableEnabled ? '-1' : '0'"
39445
+ [groupingMode]="groupingMode">
38853
39446
  </thead>
38854
39447
  </table>
38855
39448
  </div>
@@ -38868,7 +39461,8 @@ class GridComponent {
38868
39461
  <colgroup kendoGridColGroup
38869
39462
  [columns]="headerLeafColumns"
38870
39463
  [groups]="isLocked ? [] : group"
38871
- [detailTemplate]="detailTemplate">
39464
+ [detailTemplate]="detailTemplate"
39465
+ [groupingMode]="groupingMode">
38872
39466
  </colgroup>
38873
39467
  <thead kendoGridHeader
38874
39468
  [resizable]="resizable"
@@ -38889,7 +39483,8 @@ class GridComponent {
38889
39483
  [totalColumnsCount]="leafColumns.length"
38890
39484
  [totalColumns]="columnsContainer"
38891
39485
  [detailTemplate]="detailTemplate"
38892
- [tabIndex]="navigation.tableEnabled ? '-1' : '0'">
39486
+ [tabIndex]="navigation.tableEnabled ? '-1' : '0'"
39487
+ [groupingMode]="groupingMode">
38893
39488
  </thead>
38894
39489
  </table>
38895
39490
  @if (virtualColumns) {
@@ -38918,7 +39513,8 @@ class GridComponent {
38918
39513
  [detailTemplate]="detailTemplate"
38919
39514
  [filterable]="filterable"
38920
39515
  [rowHeight]="rowHeight"
38921
- [detailRowHeight]="detailRowHeight">
39516
+ [detailRowHeight]="detailRowHeight"
39517
+ [groupingMode]="groupingMode">
38922
39518
  </kendo-grid-rowpin-container>
38923
39519
  }
38924
39520
 
@@ -38951,7 +39547,8 @@ class GridComponent {
38951
39547
  kendoDraggable
38952
39548
  kendoGridSelectionMarquee
38953
39549
  [enableDrag]="marqueeSelection"
38954
- [sort]="sort">
39550
+ [sort]="sort"
39551
+ [groupingMode]="groupingMode">
38955
39552
  </kendo-grid-list>
38956
39553
 
38957
39554
  @if (isPinnable && pinnedBottomRows?.length > 0) {
@@ -38972,7 +39569,8 @@ class GridComponent {
38972
39569
  [detailTemplate]="detailTemplate"
38973
39570
  [filterable]="filterable"
38974
39571
  [rowHeight]="rowHeight"
38975
- [detailRowHeight]="detailRowHeight">
39572
+ [detailRowHeight]="detailRowHeight"
39573
+ [groupingMode]="groupingMode">
38976
39574
  </kendo-grid-rowpin-container>
38977
39575
  }
38978
39576
  @if (showFooter) {
@@ -38995,7 +39593,8 @@ class GridComponent {
38995
39593
  <colgroup kendoGridColGroup
38996
39594
  [columns]="$any(lockedLeafColumns)"
38997
39595
  [groups]="group"
38998
- [detailTemplate]="detailTemplate">
39596
+ [detailTemplate]="detailTemplate"
39597
+ [groupingMode]="groupingMode">
38999
39598
  </colgroup>
39000
39599
  }
39001
39600
  <tfoot kendoGridFooter
@@ -39005,7 +39604,8 @@ class GridComponent {
39005
39604
  [detailTemplate]="detailTemplate"
39006
39605
  [logicalRowIndex]="ariaRowCount"
39007
39606
  [totalColumns]="columnsContainer"
39008
- [totalColumnsCount]="leafColumns.length">
39607
+ [totalColumnsCount]="leafColumns.length"
39608
+ [groupingMode]="groupingMode">
39009
39609
  </tfoot>
39010
39610
  </table>
39011
39611
  </div>
@@ -39025,7 +39625,8 @@ class GridComponent {
39025
39625
  <colgroup kendoGridColGroup
39026
39626
  [columns]="$any(headerLeafColumns)"
39027
39627
  [groups]="isLocked ? [] : group"
39028
- [detailTemplate]="detailTemplate">
39628
+ [detailTemplate]="detailTemplate"
39629
+ [groupingMode]="groupingMode">
39029
39630
  </colgroup>
39030
39631
  }
39031
39632
  <tfoot kendoGridFooter
@@ -39036,7 +39637,8 @@ class GridComponent {
39036
39637
  [lockedColumnsCount]="isStacked ? 0 : lockedLeafColumns.length"
39037
39638
  [detailTemplate]="detailTemplate"
39038
39639
  [totalColumns]="columnsContainer"
39039
- [totalColumnsCount]="leafColumns.length">
39640
+ [totalColumnsCount]="leafColumns.length"
39641
+ [groupingMode]="groupingMode">
39040
39642
  </tfoot>
39041
39643
  </table>
39042
39644
  </div>
@@ -39062,7 +39664,8 @@ class GridComponent {
39062
39664
  [detailTemplate]="detailTemplate"
39063
39665
  [filterable]="filterable"
39064
39666
  [rowHeight]="rowHeight"
39065
- [detailRowHeight]="detailRowHeight">
39667
+ [detailRowHeight]="detailRowHeight"
39668
+ [groupingMode]="groupingMode">
39066
39669
  </kendo-grid-rowpin-container>
39067
39670
  }
39068
39671
  <table
@@ -39076,7 +39679,8 @@ class GridComponent {
39076
39679
  [columns]="$any(leafColumns)"
39077
39680
  [groups]="group"
39078
39681
  [sort]="sort"
39079
- [detailTemplate]="detailTemplate">
39682
+ [detailTemplate]="detailTemplate"
39683
+ [groupingMode]="groupingMode">
39080
39684
  </colgroup>
39081
39685
  @if (!hideHeader && !isStacked) {
39082
39686
  <thead kendoGridHeader
@@ -39098,7 +39702,8 @@ class GridComponent {
39098
39702
  [columnMenu]="columnMenuOptions"
39099
39703
  [columnMenuTemplate]="columnMenuTemplate"
39100
39704
  [detailTemplate]="detailTemplate"
39101
- [tabIndex]="navigation.tableEnabled ? '-1' : '0'">
39705
+ [tabIndex]="navigation.tableEnabled ? '-1' : '0'"
39706
+ [groupingMode]="groupingMode">
39102
39707
  </thead>
39103
39708
  }
39104
39709
  <tbody kendoGridTableBody
@@ -39119,7 +39724,8 @@ class GridComponent {
39119
39724
  [rowClass]="rowClass"
39120
39725
  kendoDraggable
39121
39726
  kendoGridSelectionMarquee
39122
- [enableDrag]="marqueeSelection">
39727
+ [enableDrag]="marqueeSelection"
39728
+ [groupingMode]="groupingMode">
39123
39729
  </tbody>
39124
39730
  @if (showFooter) {
39125
39731
  <tfoot kendoGridFooter
@@ -39129,7 +39735,8 @@ class GridComponent {
39129
39735
  [columns]="$any(leafColumns)"
39130
39736
  [detailTemplate]="detailTemplate"
39131
39737
  [totalColumns]="columnsContainer"
39132
- [totalColumnsCount]="leafColumns.length">
39738
+ [totalColumnsCount]="leafColumns.length"
39739
+ [groupingMode]="groupingMode">
39133
39740
  </tfoot>
39134
39741
  }
39135
39742
  </table>
@@ -39153,7 +39760,8 @@ class GridComponent {
39153
39760
  [rowHeight]="rowHeight"
39154
39761
  [detailRowHeight]="detailRowHeight"
39155
39762
  [size]="size"
39156
- [loading]="loading">
39763
+ [loading]="loading"
39764
+ [groupingMode]="groupingMode">
39157
39765
  </kendo-grid-rowpin-container>
39158
39766
  }
39159
39767
  }
@@ -39228,6 +39836,7 @@ class GridComponent {
39228
39836
  </ng-template>
39229
39837
 
39230
39838
  <ng-template #defaultPager>
39839
+ <ng-container kendoComponentName="pager">
39231
39840
  <div class="k-pager-numbers-wrap">
39232
39841
  @if (normalizedPageableSettings.previousNext) {
39233
39842
  <kendo-pager-prev-buttons [size]="size"></kendo-pager-prev-buttons>
@@ -39257,6 +39866,7 @@ class GridComponent {
39257
39866
  <kendo-pager-info>
39258
39867
  </kendo-pager-info>
39259
39868
  }
39869
+ </ng-container>
39260
39870
  </ng-template>
39261
39871
  <div #dialogContainer></div>
39262
39872
  <div #windowContainer></div>
@@ -39271,7 +39881,7 @@ class GridComponent {
39271
39881
  @if (showLicenseWatermark) {
39272
39882
  <div kendoWatermarkOverlay [licenseMessage]="licenseMessage"></div>
39273
39883
  }
39274
- `, 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 });
39275
39885
  }
39276
39886
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.26", ngImport: i0, type: GridComponent, decorators: [{
39277
39887
  type: Component,
@@ -39302,6 +39912,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.26", ngImpo
39302
39912
  provide: KENDO_WEBMCP_HOST,
39303
39913
  useExisting: forwardRef(() => GridComponent)
39304
39914
  },
39915
+ provideComponentName('grid'),
39305
39916
  FilterService,
39306
39917
  ResponsiveService,
39307
39918
  PagerContextService,
@@ -39827,6 +40438,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.26", ngImpo
39827
40438
 
39828
40439
  i18n-rowUnpinLabel="kendo.grid.rowUnpinLabel|Sets the label for the Grid row unpin column icon"
39829
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"
39830
40444
  >
39831
40445
  </ng-container>
39832
40446
  @if (showTopToolbar) {
@@ -39939,8 +40553,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.26", ngImpo
39939
40553
  <colgroup kendoGridColGroup
39940
40554
  [columns]="$any(lockedLeafColumns)"
39941
40555
  [groups]="group"
39942
- [detailTemplate]="detailTemplate">
39943
- </colgroup>
40556
+ [detailTemplate]="detailTemplate"
40557
+ [groupingMode]="groupingMode">
40558
+ </colgroup>
39944
40559
  <thead kendoGridHeader
39945
40560
  role="rowgroup"
39946
40561
  [resizable]="resizable"
@@ -39959,7 +40574,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.26", ngImpo
39959
40574
  [totalColumnsCount]="leafColumns.length"
39960
40575
  [totalColumns]="columnsContainer"
39961
40576
  [detailTemplate]="detailTemplate"
39962
- [tabIndex]="navigation.tableEnabled ? '-1' : '0'">
40577
+ [tabIndex]="navigation.tableEnabled ? '-1' : '0'"
40578
+ [groupingMode]="groupingMode">
39963
40579
  </thead>
39964
40580
  </table>
39965
40581
  </div>
@@ -39978,7 +40594,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.26", ngImpo
39978
40594
  <colgroup kendoGridColGroup
39979
40595
  [columns]="headerLeafColumns"
39980
40596
  [groups]="isLocked ? [] : group"
39981
- [detailTemplate]="detailTemplate">
40597
+ [detailTemplate]="detailTemplate"
40598
+ [groupingMode]="groupingMode">
39982
40599
  </colgroup>
39983
40600
  <thead kendoGridHeader
39984
40601
  [resizable]="resizable"
@@ -39999,7 +40616,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.26", ngImpo
39999
40616
  [totalColumnsCount]="leafColumns.length"
40000
40617
  [totalColumns]="columnsContainer"
40001
40618
  [detailTemplate]="detailTemplate"
40002
- [tabIndex]="navigation.tableEnabled ? '-1' : '0'">
40619
+ [tabIndex]="navigation.tableEnabled ? '-1' : '0'"
40620
+ [groupingMode]="groupingMode">
40003
40621
  </thead>
40004
40622
  </table>
40005
40623
  @if (virtualColumns) {
@@ -40028,7 +40646,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.26", ngImpo
40028
40646
  [detailTemplate]="detailTemplate"
40029
40647
  [filterable]="filterable"
40030
40648
  [rowHeight]="rowHeight"
40031
- [detailRowHeight]="detailRowHeight">
40649
+ [detailRowHeight]="detailRowHeight"
40650
+ [groupingMode]="groupingMode">
40032
40651
  </kendo-grid-rowpin-container>
40033
40652
  }
40034
40653
 
@@ -40061,7 +40680,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.26", ngImpo
40061
40680
  kendoDraggable
40062
40681
  kendoGridSelectionMarquee
40063
40682
  [enableDrag]="marqueeSelection"
40064
- [sort]="sort">
40683
+ [sort]="sort"
40684
+ [groupingMode]="groupingMode">
40065
40685
  </kendo-grid-list>
40066
40686
 
40067
40687
  @if (isPinnable && pinnedBottomRows?.length > 0) {
@@ -40082,7 +40702,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.26", ngImpo
40082
40702
  [detailTemplate]="detailTemplate"
40083
40703
  [filterable]="filterable"
40084
40704
  [rowHeight]="rowHeight"
40085
- [detailRowHeight]="detailRowHeight">
40705
+ [detailRowHeight]="detailRowHeight"
40706
+ [groupingMode]="groupingMode">
40086
40707
  </kendo-grid-rowpin-container>
40087
40708
  }
40088
40709
  @if (showFooter) {
@@ -40105,7 +40726,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.26", ngImpo
40105
40726
  <colgroup kendoGridColGroup
40106
40727
  [columns]="$any(lockedLeafColumns)"
40107
40728
  [groups]="group"
40108
- [detailTemplate]="detailTemplate">
40729
+ [detailTemplate]="detailTemplate"
40730
+ [groupingMode]="groupingMode">
40109
40731
  </colgroup>
40110
40732
  }
40111
40733
  <tfoot kendoGridFooter
@@ -40115,7 +40737,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.26", ngImpo
40115
40737
  [detailTemplate]="detailTemplate"
40116
40738
  [logicalRowIndex]="ariaRowCount"
40117
40739
  [totalColumns]="columnsContainer"
40118
- [totalColumnsCount]="leafColumns.length">
40740
+ [totalColumnsCount]="leafColumns.length"
40741
+ [groupingMode]="groupingMode">
40119
40742
  </tfoot>
40120
40743
  </table>
40121
40744
  </div>
@@ -40135,7 +40758,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.26", ngImpo
40135
40758
  <colgroup kendoGridColGroup
40136
40759
  [columns]="$any(headerLeafColumns)"
40137
40760
  [groups]="isLocked ? [] : group"
40138
- [detailTemplate]="detailTemplate">
40761
+ [detailTemplate]="detailTemplate"
40762
+ [groupingMode]="groupingMode">
40139
40763
  </colgroup>
40140
40764
  }
40141
40765
  <tfoot kendoGridFooter
@@ -40146,7 +40770,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.26", ngImpo
40146
40770
  [lockedColumnsCount]="isStacked ? 0 : lockedLeafColumns.length"
40147
40771
  [detailTemplate]="detailTemplate"
40148
40772
  [totalColumns]="columnsContainer"
40149
- [totalColumnsCount]="leafColumns.length">
40773
+ [totalColumnsCount]="leafColumns.length"
40774
+ [groupingMode]="groupingMode">
40150
40775
  </tfoot>
40151
40776
  </table>
40152
40777
  </div>
@@ -40172,7 +40797,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.26", ngImpo
40172
40797
  [detailTemplate]="detailTemplate"
40173
40798
  [filterable]="filterable"
40174
40799
  [rowHeight]="rowHeight"
40175
- [detailRowHeight]="detailRowHeight">
40800
+ [detailRowHeight]="detailRowHeight"
40801
+ [groupingMode]="groupingMode">
40176
40802
  </kendo-grid-rowpin-container>
40177
40803
  }
40178
40804
  <table
@@ -40186,7 +40812,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.26", ngImpo
40186
40812
  [columns]="$any(leafColumns)"
40187
40813
  [groups]="group"
40188
40814
  [sort]="sort"
40189
- [detailTemplate]="detailTemplate">
40815
+ [detailTemplate]="detailTemplate"
40816
+ [groupingMode]="groupingMode">
40190
40817
  </colgroup>
40191
40818
  @if (!hideHeader && !isStacked) {
40192
40819
  <thead kendoGridHeader
@@ -40208,7 +40835,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.26", ngImpo
40208
40835
  [columnMenu]="columnMenuOptions"
40209
40836
  [columnMenuTemplate]="columnMenuTemplate"
40210
40837
  [detailTemplate]="detailTemplate"
40211
- [tabIndex]="navigation.tableEnabled ? '-1' : '0'">
40838
+ [tabIndex]="navigation.tableEnabled ? '-1' : '0'"
40839
+ [groupingMode]="groupingMode">
40212
40840
  </thead>
40213
40841
  }
40214
40842
  <tbody kendoGridTableBody
@@ -40229,7 +40857,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.26", ngImpo
40229
40857
  [rowClass]="rowClass"
40230
40858
  kendoDraggable
40231
40859
  kendoGridSelectionMarquee
40232
- [enableDrag]="marqueeSelection">
40860
+ [enableDrag]="marqueeSelection"
40861
+ [groupingMode]="groupingMode">
40233
40862
  </tbody>
40234
40863
  @if (showFooter) {
40235
40864
  <tfoot kendoGridFooter
@@ -40239,7 +40868,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.26", ngImpo
40239
40868
  [columns]="$any(leafColumns)"
40240
40869
  [detailTemplate]="detailTemplate"
40241
40870
  [totalColumns]="columnsContainer"
40242
- [totalColumnsCount]="leafColumns.length">
40871
+ [totalColumnsCount]="leafColumns.length"
40872
+ [groupingMode]="groupingMode">
40243
40873
  </tfoot>
40244
40874
  }
40245
40875
  </table>
@@ -40263,7 +40893,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.26", ngImpo
40263
40893
  [rowHeight]="rowHeight"
40264
40894
  [detailRowHeight]="detailRowHeight"
40265
40895
  [size]="size"
40266
- [loading]="loading">
40896
+ [loading]="loading"
40897
+ [groupingMode]="groupingMode">
40267
40898
  </kendo-grid-rowpin-container>
40268
40899
  }
40269
40900
  }
@@ -40338,6 +40969,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.26", ngImpo
40338
40969
  </ng-template>
40339
40970
 
40340
40971
  <ng-template #defaultPager>
40972
+ <ng-container kendoComponentName="pager">
40341
40973
  <div class="k-pager-numbers-wrap">
40342
40974
  @if (normalizedPageableSettings.previousNext) {
40343
40975
  <kendo-pager-prev-buttons [size]="size"></kendo-pager-prev-buttons>
@@ -40367,6 +40999,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.26", ngImpo
40367
40999
  <kendo-pager-info>
40368
41000
  </kendo-pager-info>
40369
41001
  }
41002
+ </ng-container>
40370
41003
  </ng-template>
40371
41004
  <div #dialogContainer></div>
40372
41005
  <div #windowContainer></div>
@@ -40404,6 +41037,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.26", ngImpo
40404
41037
  IconWrapperComponent,
40405
41038
  WatermarkOverlayComponent,
40406
41039
  ...KENDO_PAGER,
41040
+ ComponentNameDirective,
40407
41041
  NgTemplateOutlet,
40408
41042
  AdaptiveRendererComponent,
40409
41043
  ResizeSensorComponent,
@@ -40618,6 +41252,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.26", ngImpo
40618
41252
  }], columnMenuTemplates: [{
40619
41253
  type: ContentChildren,
40620
41254
  args: [ColumnMenuTemplateDirective]
41255
+ }], groupColumnGroupHeaderTemplates: [{
41256
+ type: ContentChildren,
41257
+ args: [GroupColumnGroupHeaderTemplateDirective]
40621
41258
  }], lockedHeader: [{
40622
41259
  type: ViewChild,
40623
41260
  args: ['lockedHeader']
@@ -42317,7 +42954,7 @@ class PDFCommandToolbarDirective extends ToolbarToolBase {
42317
42954
  e.preventDefault();
42318
42955
  this.pdfService.exportClick.emit();
42319
42956
  }
42320
- 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 });
42321
42958
  static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "20.3.26", type: PDFCommandToolbarDirective, isStandalone: true, selector: "[kendoGridPDFTool]", usesInheritance: true, ngImport: i0 });
42322
42959
  }
42323
42960
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.26", ngImport: i0, type: PDFCommandToolbarDirective, decorators: [{
@@ -42326,7 +42963,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.26", ngImpo
42326
42963
  selector: '[kendoGridPDFTool]',
42327
42964
  standalone: true
42328
42965
  }]
42329
- }], 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 }] });
42330
42967
 
42331
42968
  /**
42332
42969
  * Represents the **Export to Excel** toolbar tool of the Grid.
@@ -42362,7 +42999,7 @@ class ExcelCommandToolbarDirective extends ToolbarToolBase {
42362
42999
  e.preventDefault();
42363
43000
  this.excelService.exportClick.emit();
42364
43001
  }
42365
- 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 });
42366
43003
  static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "20.3.26", type: ExcelCommandToolbarDirective, isStandalone: true, selector: "[kendoGridExcelTool]", usesInheritance: true, ngImport: i0 });
42367
43004
  }
42368
43005
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.26", ngImport: i0, type: ExcelCommandToolbarDirective, decorators: [{
@@ -42371,7 +43008,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.26", ngImpo
42371
43008
  selector: '[kendoGridExcelTool]',
42372
43009
  standalone: true
42373
43010
  }]
42374
- }], 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 }] });
42375
43012
 
42376
43013
  /**
42377
43014
  * @hidden
@@ -42444,13 +43081,13 @@ class ToolbarEditingToolBase extends ToolbarToolBase {
42444
43081
  get isSelectionPresent() {
42445
43082
  return isPresent$1(this.lastSelectionIndex) && this.lastSelectionIndex > -1;
42446
43083
  }
42447
- 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 });
42448
43085
  static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "20.3.26", type: ToolbarEditingToolBase, isStandalone: true, usesInheritance: true, ngImport: i0 });
42449
43086
  }
42450
43087
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.26", ngImport: i0, type: ToolbarEditingToolBase, decorators: [{
42451
43088
  type: Directive,
42452
43089
  args: [{}]
42453
- }], ctorParameters: () => [{ type: i58.ToolBarButtonComponent }, { type: undefined, decorators: [{
43090
+ }], ctorParameters: () => [{ type: i59.ToolBarButtonComponent }, { type: undefined, decorators: [{
42454
43091
  type: Inject,
42455
43092
  args: ['command']
42456
43093
  }] }, { type: ContextService }, { type: i0.NgZone }, { type: i0.ChangeDetectorRef }, { type: EditService }, { type: SelectionService }] });
@@ -42490,7 +43127,7 @@ class AddCommandToolbarDirective extends ToolbarEditingToolBase {
42490
43127
  e.preventDefault();
42491
43128
  this.editService.beginAdd();
42492
43129
  }
42493
- 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 });
42494
43131
  static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "20.3.26", type: AddCommandToolbarDirective, isStandalone: true, selector: "[kendoGridAddTool]", usesInheritance: true, ngImport: i0 });
42495
43132
  }
42496
43133
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.26", ngImport: i0, type: AddCommandToolbarDirective, decorators: [{
@@ -42499,7 +43136,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.26", ngImpo
42499
43136
  selector: '[kendoGridAddTool]',
42500
43137
  standalone: true
42501
43138
  }]
42502
- }], 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 }] });
42503
43140
 
42504
43141
  /**
42505
43142
  * @hidden
@@ -43070,7 +43707,7 @@ class UndoCommandToolbarDirective {
43070
43707
  e.preventDefault();
43071
43708
  this.undoRedoService.onUndo.next(undefined);
43072
43709
  }
43073
- 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 });
43074
43711
  static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "20.3.26", type: UndoCommandToolbarDirective, isStandalone: true, selector: "[kendoGridUndoTool]", ngImport: i0 });
43075
43712
  }
43076
43713
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.26", ngImport: i0, type: UndoCommandToolbarDirective, decorators: [{
@@ -43079,7 +43716,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.26", ngImpo
43079
43716
  selector: '[kendoGridUndoTool]',
43080
43717
  standalone: true,
43081
43718
  }]
43082
- }], ctorParameters: () => [{ type: UndoRedoService }, { type: i58.ToolBarButtonComponent }] });
43719
+ }], ctorParameters: () => [{ type: UndoRedoService }, { type: i59.ToolBarButtonComponent }] });
43083
43720
 
43084
43721
  /**
43085
43722
  * Represents the command that triggers the redo action in the Grid.
@@ -43133,7 +43770,7 @@ class RedoCommandToolbarDirective {
43133
43770
  e.preventDefault();
43134
43771
  this.undoRedoService.onRedo.next(undefined);
43135
43772
  }
43136
- 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 });
43137
43774
  static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "20.3.26", type: RedoCommandToolbarDirective, isStandalone: true, selector: "[kendoGridRedoTool]", ngImport: i0 });
43138
43775
  }
43139
43776
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.26", ngImport: i0, type: RedoCommandToolbarDirective, decorators: [{
@@ -43142,7 +43779,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.26", ngImpo
43142
43779
  selector: '[kendoGridRedoTool]',
43143
43780
  standalone: true,
43144
43781
  }]
43145
- }], ctorParameters: () => [{ type: UndoRedoService }, { type: i58.ToolBarButtonComponent }] });
43782
+ }], ctorParameters: () => [{ type: UndoRedoService }, { type: i59.ToolBarButtonComponent }] });
43146
43783
 
43147
43784
  let incrementingId$2 = 0;
43148
43785
  /**
@@ -43333,7 +43970,7 @@ class SortCommandToolbarDirective {
43333
43970
  get buttonElement() {
43334
43971
  return this.host.getButton();
43335
43972
  }
43336
- 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 });
43337
43974
  static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "20.3.26", type: SortCommandToolbarDirective, isStandalone: true, selector: "[kendoGridSortTool]", ngImport: i0 });
43338
43975
  }
43339
43976
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.26", ngImport: i0, type: SortCommandToolbarDirective, decorators: [{
@@ -43342,7 +43979,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.26", ngImpo
43342
43979
  selector: '[kendoGridSortTool]',
43343
43980
  standalone: true
43344
43981
  }]
43345
- }], 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 }] });
43346
43983
 
43347
43984
  /**
43348
43985
  * @hidden
@@ -43671,7 +44308,7 @@ class FilterCommandToolbarDirective {
43671
44308
  get buttonElement() {
43672
44309
  return this.host.getButton();
43673
44310
  }
43674
- 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 });
43675
44312
  static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "20.3.26", type: FilterCommandToolbarDirective, isStandalone: true, selector: "[kendoGridFilterTool]", ngImport: i0 });
43676
44313
  }
43677
44314
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.26", ngImport: i0, type: FilterCommandToolbarDirective, decorators: [{
@@ -43680,7 +44317,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.26", ngImpo
43680
44317
  selector: '[kendoGridFilterTool]',
43681
44318
  standalone: true
43682
44319
  }]
43683
- }], 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 }] });
43684
44321
 
43685
44322
  /**
43686
44323
  * Represents the `edit` command in the Grid. Apply this directive to any `kendo-toolbar-button`
@@ -43716,7 +44353,7 @@ class EditCommandToolbarDirective extends ToolbarEditingToolBase {
43716
44353
  }
43717
44354
  this.editService.beginEdit(this.lastSelectionIndex);
43718
44355
  }
43719
- 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 });
43720
44357
  static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "20.3.26", type: EditCommandToolbarDirective, isStandalone: true, selector: "[kendoGridEditTool]", usesInheritance: true, ngImport: i0 });
43721
44358
  }
43722
44359
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.26", ngImport: i0, type: EditCommandToolbarDirective, decorators: [{
@@ -43725,7 +44362,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.26", ngImpo
43725
44362
  selector: '[kendoGridEditTool]',
43726
44363
  standalone: true
43727
44364
  }]
43728
- }], 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 }] });
43729
44366
 
43730
44367
  /**
43731
44368
  * Represents the `save` command in the Grid. Apply this directive to any `kendo-toolbar-button`
@@ -43766,7 +44403,7 @@ class SaveCommandToolbarDirective extends ToolbarEditingToolBase {
43766
44403
  this.editService.editedIndices.forEach(i => this.editService.save(i.index));
43767
44404
  }
43768
44405
  }
43769
- 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 });
43770
44407
  static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "20.3.26", type: SaveCommandToolbarDirective, isStandalone: true, selector: "[kendoGridSaveTool]", usesInheritance: true, ngImport: i0 });
43771
44408
  }
43772
44409
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.26", ngImport: i0, type: SaveCommandToolbarDirective, decorators: [{
@@ -43775,7 +44412,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.26", ngImpo
43775
44412
  selector: '[kendoGridSaveTool]',
43776
44413
  standalone: true
43777
44414
  }]
43778
- }], 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 }] });
43779
44416
 
43780
44417
  /**
43781
44418
  * Represents the `remove` command in the Grid. Apply this directive to any `kendo-toolbar-button`
@@ -43812,7 +44449,7 @@ class RemoveCommandToolbarDirective extends ToolbarEditingToolBase {
43812
44449
  this.editService.remove(this.lastSelectionIndex);
43813
44450
  }
43814
44451
  }
43815
- 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 });
43816
44453
  static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "20.3.26", type: RemoveCommandToolbarDirective, isStandalone: true, selector: "[kendoGridRemoveTool]", usesInheritance: true, ngImport: i0 });
43817
44454
  }
43818
44455
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.26", ngImport: i0, type: RemoveCommandToolbarDirective, decorators: [{
@@ -43821,7 +44458,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.26", ngImpo
43821
44458
  selector: '[kendoGridRemoveTool]',
43822
44459
  standalone: true
43823
44460
  }]
43824
- }], 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 }] });
43825
44462
 
43826
44463
  /**
43827
44464
  * Represents the `cancel` command in the Grid.
@@ -43861,7 +44498,7 @@ class CancelCommandToolbarDirective extends ToolbarEditingToolBase {
43861
44498
  this.editService.editedIndices.forEach(i => this.editService.endEdit(i.index));
43862
44499
  }
43863
44500
  }
43864
- 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 });
43865
44502
  static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "20.3.26", type: CancelCommandToolbarDirective, isStandalone: true, selector: "[kendoGridCancelTool]", usesInheritance: true, ngImport: i0 });
43866
44503
  }
43867
44504
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.26", ngImport: i0, type: CancelCommandToolbarDirective, decorators: [{
@@ -43870,7 +44507,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.26", ngImpo
43870
44507
  selector: '[kendoGridCancelTool]',
43871
44508
  standalone: true
43872
44509
  }]
43873
- }], 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 }] });
43874
44511
 
43875
44512
  let incrementingId = 0;
43876
44513
  /**
@@ -44051,7 +44688,7 @@ class GroupCommandToolbarDirective {
44051
44688
  isGroupingApplied(group) {
44052
44689
  return isPresent$1(group) && group.length > 0;
44053
44690
  }
44054
- 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 });
44055
44692
  static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "20.3.26", type: GroupCommandToolbarDirective, isStandalone: true, selector: "[kendoGridGroupTool]", ngImport: i0 });
44056
44693
  }
44057
44694
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.26", ngImport: i0, type: GroupCommandToolbarDirective, decorators: [{
@@ -44060,7 +44697,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.26", ngImpo
44060
44697
  selector: '[kendoGridGroupTool]',
44061
44698
  standalone: true
44062
44699
  }]
44063
- }], 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 }] });
44064
44701
 
44065
44702
  /**
44066
44703
  * Stores the row and cell highlight state of the Grid.
@@ -44712,7 +45349,7 @@ class AIAssistantToolbarDirective extends ToolbarToolBase {
44712
45349
  this.host.selected = false;
44713
45350
  focusAnchor && this.buttonElement?.focus();
44714
45351
  }
44715
- 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 });
44716
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 });
44717
45354
  }
44718
45355
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.26", ngImport: i0, type: AIAssistantToolbarDirective, decorators: [{
@@ -44721,7 +45358,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.26", ngImpo
44721
45358
  selector: '[kendoGridAIAssistantTool]',
44722
45359
  standalone: true
44723
45360
  }]
44724
- }], 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: [{
44725
45362
  type: Input
44726
45363
  }], requestOptions: [{
44727
45364
  type: Input
@@ -46772,6 +47409,7 @@ const KENDO_GRID_SHARED = [
46772
47409
  const KENDO_GRID_GROUP_EXPORTS = [
46773
47410
  GroupHeaderTemplateDirective,
46774
47411
  GroupHeaderColumnTemplateDirective,
47412
+ GroupColumnGroupHeaderTemplateDirective,
46775
47413
  GroupFooterTemplateDirective,
46776
47414
  GroupHeaderComponent,
46777
47415
  GroupPanelComponent,
@@ -47118,9 +47756,9 @@ const KENDO_GRID = [
47118
47756
  */
47119
47757
  class GridModule {
47120
47758
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.26", ngImport: i0, type: GridModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
47121
- 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,
47122
47760
  UndoCommandToolbarDirective,
47123
- 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] });
47124
47762
  static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "20.3.26", ngImport: i0, type: GridModule, providers: [
47125
47763
  PopupService,
47126
47764
  ResizeBatchService,
@@ -47135,7 +47773,7 @@ class GridModule {
47135
47773
  MonthViewService,
47136
47774
  YearViewService,
47137
47775
  NavigationService$2
47138
- ], 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] });
47139
47777
  }
47140
47778
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.26", ngImport: i0, type: GridModule, decorators: [{
47141
47779
  type: NgModule,
@@ -47280,5 +47918,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.26", ngImpo
47280
47918
  * Generated bundle index. Do not edit.
47281
47919
  */
47282
47920
 
47283
- 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 };
47284
47922