@progress/kendo-angular-grid 19.3.0-develop.3 → 19.3.0-develop.31

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (101) hide show
  1. package/columns/columns-container.d.ts +2 -0
  2. package/common/data-layout-mode.d.ts +19 -0
  3. package/common/provider.service.d.ts +2 -0
  4. package/common/stacked-layout-settings.d.ts +24 -0
  5. package/data/data-mapping.service.d.ts +3 -1
  6. package/directives.d.ts +7 -4
  7. package/editing-directives/editing-directive-base.d.ts +3 -0
  8. package/esm2022/adaptiveness/adaptive-renderer.component.mjs +1 -2
  9. package/esm2022/column-menu/column-list.component.mjs +10 -10
  10. package/esm2022/column-menu/column-menu.component.mjs +1 -1
  11. package/esm2022/columns/column-base.mjs +4 -4
  12. package/esm2022/columns/column.component.mjs +1 -1
  13. package/esm2022/columns/columns-container.mjs +3 -0
  14. package/esm2022/common/column-info.service.mjs +1 -1
  15. package/esm2022/common/data-layout-mode.mjs +5 -0
  16. package/esm2022/common/provider.service.mjs +1 -0
  17. package/esm2022/common/stacked-layout-settings.mjs +5 -0
  18. package/esm2022/common/toolbar-tool-base.directive.mjs +3 -2
  19. package/esm2022/data/data-mapping.service.mjs +14 -3
  20. package/esm2022/directives.mjs +8 -1
  21. package/esm2022/editing/form/form-formfield.component.mjs +2 -2
  22. package/esm2022/editing-directives/editing-directive-base.mjs +17 -2
  23. package/esm2022/editing-directives/in-cell-editing.directive.mjs +3 -1
  24. package/esm2022/filtering/cell/boolean-filter-cell.component.mjs +1 -1
  25. package/esm2022/filtering/cell/date-filter-cell.component.mjs +1 -1
  26. package/esm2022/filtering/cell/filter-cell-operators.component.mjs +1 -2
  27. package/esm2022/filtering/cell/numeric-filter-cell.component.mjs +1 -1
  28. package/esm2022/filtering/cell/string-filter-cell.component.mjs +1 -1
  29. package/esm2022/filtering/filter-row.component.mjs +6 -3
  30. package/esm2022/filtering/menu/boolean-filter-menu.component.mjs +1 -2
  31. package/esm2022/filtering/menu/date-filter-menu-input.component.mjs +1 -1
  32. package/esm2022/filtering/menu/date-filter-menu.component.mjs +1 -1
  33. package/esm2022/filtering/menu/filter-menu-input-wrapper.component.mjs +1 -1
  34. package/esm2022/filtering/menu/filter-menu.component.mjs +1 -1
  35. package/esm2022/filtering/menu/numeric-filter-menu-input.component.mjs +1 -1
  36. package/esm2022/filtering/menu/numeric-filter-menu.component.mjs +1 -1
  37. package/esm2022/filtering/menu/string-filter-menu-input.component.mjs +1 -1
  38. package/esm2022/filtering/menu/string-filter-menu.component.mjs +1 -1
  39. package/esm2022/grid.component.mjs +190 -39
  40. package/esm2022/grid.module.mjs +103 -100
  41. package/esm2022/grouping/group-header.component.mjs +39 -4
  42. package/esm2022/grouping/group-panel.component.mjs +7 -3
  43. package/esm2022/highlight/highlight-item.mjs +5 -0
  44. package/esm2022/highlight/highlight.directive.mjs +132 -0
  45. package/esm2022/index.mjs +4 -0
  46. package/esm2022/localization/messages.mjs +57 -3
  47. package/esm2022/navigation/default-focusable-element.mjs +14 -2
  48. package/esm2022/navigation/focusable.directive.mjs +1 -1
  49. package/esm2022/navigation/navigation-cursor.mjs +7 -1
  50. package/esm2022/navigation/navigation-metadata.mjs +3 -1
  51. package/esm2022/navigation/navigation.service.mjs +136 -5
  52. package/esm2022/navigation/toolbar-tool-name.mjs +2 -1
  53. package/esm2022/package-metadata.mjs +2 -2
  54. package/esm2022/pdf/export-element.mjs +14 -5
  55. package/esm2022/pdf/pdf.component.mjs +3 -1
  56. package/esm2022/rendering/cell.component.mjs +466 -188
  57. package/esm2022/rendering/common/col-group.component.mjs +20 -7
  58. package/esm2022/rendering/footer/footer.component.mjs +117 -54
  59. package/esm2022/rendering/header/header.component.mjs +5 -2
  60. package/esm2022/rendering/list.component.mjs +14 -9
  61. package/esm2022/rendering/table-body.component.mjs +388 -171
  62. package/esm2022/rendering/toolbar/tools/ai-assistant/ai-assistant.component.mjs +300 -0
  63. package/esm2022/rendering/toolbar/tools/ai-assistant/ai-tool.directive.mjs +269 -0
  64. package/esm2022/rendering/toolbar/tools/ai-assistant/utils.mjs +74 -0
  65. package/esm2022/rendering/toolbar/tools/select-all-command-tool.directive.mjs +93 -0
  66. package/esm2022/row-reordering/row-reorder.service.mjs +2 -2
  67. package/esm2022/row-reordering/utils.mjs +6 -4
  68. package/esm2022/selection/cell-selection.service.mjs +6 -3
  69. package/esm2022/selection/pair-set.mjs +87 -10
  70. package/esm2022/utils.mjs +0 -4
  71. package/fesm2022/progress-kendo-angular-grid.mjs +2496 -599
  72. package/filtering/filter-row.component.d.ts +1 -0
  73. package/grid.component.d.ts +29 -1
  74. package/grid.module.d.ts +102 -99
  75. package/grouping/group-header.component.d.ts +1 -0
  76. package/highlight/highlight-item.d.ts +17 -0
  77. package/highlight/highlight.directive.d.ts +56 -0
  78. package/index.d.ts +7 -0
  79. package/localization/messages.d.ts +39 -3
  80. package/navigation/default-focusable-element.d.ts +3 -1
  81. package/navigation/focus-group.d.ts +1 -1
  82. package/navigation/navigation-metadata.d.ts +2 -1
  83. package/navigation/navigation.service.d.ts +6 -0
  84. package/navigation/toolbar-tool-name.d.ts +1 -0
  85. package/package.json +22 -21
  86. package/rendering/cell.component.d.ts +30 -15
  87. package/rendering/common/col-group.component.d.ts +5 -0
  88. package/rendering/footer/footer.component.d.ts +4 -1
  89. package/rendering/header/header.component.d.ts +1 -0
  90. package/rendering/list.component.d.ts +4 -1
  91. package/rendering/table-body.component.d.ts +3 -1
  92. package/rendering/toolbar/tools/ai-assistant/ai-assistant.component.d.ts +50 -0
  93. package/rendering/toolbar/tools/ai-assistant/ai-tool.directive.d.ts +118 -0
  94. package/rendering/toolbar/tools/ai-assistant/utils.d.ts +131 -0
  95. package/rendering/toolbar/tools/select-all-command-tool.directive.d.ts +36 -0
  96. package/row-reordering/row-reorder.service.d.ts +1 -1
  97. package/row-reordering/utils.d.ts +1 -1
  98. package/schematics/ngAdd/index.js +4 -4
  99. package/selection/cell-selection.service.d.ts +1 -0
  100. package/selection/pair-set.d.ts +36 -8
  101. package/utils.d.ts +0 -4
@@ -4,20 +4,33 @@
4
4
  *-------------------------------------------------------------------------------------------*/
5
5
  import { Component, Input } from '@angular/core';
6
6
  import { DetailTemplateDirective } from '../details/detail-template.directive';
7
+ import { ColumnBase } from "../../columns/column-base";
7
8
  import { columnsToRender } from '../../columns/column-common';
8
9
  import { isNullOrEmptyString, isTruthy } from '../../utils';
9
10
  import { NgFor, NgIf } from '@angular/common';
11
+ import { ContextService } from '../../common/provider.service';
10
12
  import * as i0 from "@angular/core";
13
+ import * as i1 from "../../common/provider.service";
11
14
  /**
12
15
  * @hidden
13
16
  */
14
17
  export class ColGroupComponent {
18
+ ctx;
15
19
  columns = [];
16
20
  groups = [];
17
21
  detailTemplate;
18
22
  sort = new Array();
23
+ constructor(ctx) {
24
+ this.ctx = ctx;
25
+ }
26
+ getColumnWidth(column) {
27
+ return this.isStacked ? '100%' : `${column.width}px`;
28
+ }
19
29
  get columnsToRender() {
20
- return columnsToRender(this.columns);
30
+ return this.isStacked ? [new ColumnBase()] : columnsToRender(this.columns);
31
+ }
32
+ get isStacked() {
33
+ return this.ctx.grid?.isStacked;
21
34
  }
22
35
  trackBy(index) {
23
36
  return index;
@@ -35,13 +48,13 @@ export class ColGroupComponent {
35
48
  sortDescriptor(field) {
36
49
  return this.sort.find(item => item.field === field) || { field };
37
50
  }
38
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: ColGroupComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
51
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: ColGroupComponent, deps: [{ token: i1.ContextService }], target: i0.ɵɵFactoryTarget.Component });
39
52
  static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: ColGroupComponent, isStandalone: true, selector: "[kendoGridColGroup]", inputs: { columns: "columns", groups: "groups", detailTemplate: "detailTemplate", sort: "sort" }, ngImport: i0, template: `
40
53
  <ng-container>
41
54
  <col [class.k-group-col]="true" *ngFor="let g of groups" />
42
- <col [class.k-hierarchy-col]="true" *ngIf="detailTemplate?.templateRef"/>
55
+ <col [class.k-hierarchy-col]="true" *ngIf="detailTemplate?.templateRef && !isStacked"/>
43
56
  <col *ngFor="let column of columnsToRender; trackBy: trackBy;"
44
- [style.width.px]="column.width"
57
+ [style.width]="getColumnWidth(column)"
45
58
  [class.k-sorted]="isSorted(getColumnComponent(column))"/>
46
59
  </ng-container>
47
60
  `, isInline: true, dependencies: [{ kind: "directive", type: NgFor, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] });
@@ -53,16 +66,16 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
53
66
  template: `
54
67
  <ng-container>
55
68
  <col [class.k-group-col]="true" *ngFor="let g of groups" />
56
- <col [class.k-hierarchy-col]="true" *ngIf="detailTemplate?.templateRef"/>
69
+ <col [class.k-hierarchy-col]="true" *ngIf="detailTemplate?.templateRef && !isStacked"/>
57
70
  <col *ngFor="let column of columnsToRender; trackBy: trackBy;"
58
- [style.width.px]="column.width"
71
+ [style.width]="getColumnWidth(column)"
59
72
  [class.k-sorted]="isSorted(getColumnComponent(column))"/>
60
73
  </ng-container>
61
74
  `,
62
75
  standalone: true,
63
76
  imports: [NgFor, NgIf]
64
77
  }]
65
- }], propDecorators: { columns: [{
78
+ }], ctorParameters: function () { return [{ type: i1.ContextService }]; }, propDecorators: { columns: [{
66
79
  type: Input
67
80
  }], groups: [{
68
81
  type: Input
@@ -13,13 +13,16 @@ import { LogicalCellDirective } from '../../navigation/logical-cell.directive';
13
13
  import { NgFor, NgIf, NgClass, NgStyle } from '@angular/common';
14
14
  import { LogicalRowDirective } from '../../navigation/logical-row.directive';
15
15
  import { TemplateContextDirective } from '@progress/kendo-angular-common';
16
+ import { ContextService } from '../../common/provider.service';
16
17
  import * as i0 from "@angular/core";
17
18
  import * as i1 from "./../../common/column-info.service";
19
+ import * as i2 from "../../common/provider.service";
18
20
  /**
19
21
  * @hidden
20
22
  */
21
23
  export class FooterComponent {
22
24
  columnInfoService;
25
+ ctx;
23
26
  columns = [];
24
27
  groups = [];
25
28
  detailTemplate;
@@ -33,15 +36,16 @@ export class FooterComponent {
33
36
  }
34
37
  hostClass = true;
35
38
  hostRole = 'rowgroup';
36
- constructor(columnInfoService) {
39
+ constructor(columnInfoService, ctx) {
37
40
  this.columnInfoService = columnInfoService;
41
+ this.ctx = ctx;
38
42
  }
39
43
  get columnsToRender() {
40
44
  return columnsToRender(this.columns || []);
41
45
  }
42
46
  // Number of unlocked columns in the next table, if any
43
47
  get unlockedColumnsCount() {
44
- return this.totalColumnsCount - this.lockedColumnsCount - this.columns.length;
48
+ return this.totalColumnsCount - (this.isStacked ? 0 : this.lockedColumnsCount) - this.columns.length;
45
49
  }
46
50
  trackByIndex(index) {
47
51
  return index;
@@ -60,47 +64,78 @@ export class FooterComponent {
60
64
  isColumnGroupComponent(column) {
61
65
  return isColumnGroupComponent(column);
62
66
  }
63
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: FooterComponent, deps: [{ token: i1.ColumnInfoService }], target: i0.ɵɵFactoryTarget.Component });
67
+ get isStacked() {
68
+ return this.ctx.grid?.isStacked;
69
+ }
70
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: FooterComponent, deps: [{ token: i1.ColumnInfoService }, { token: i2.ContextService }], target: i0.ɵɵFactoryTarget.Component });
64
71
  static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: FooterComponent, isStandalone: true, selector: "[kendoGridFooter]", inputs: { columns: "columns", groups: "groups", detailTemplate: "detailTemplate", scrollable: "scrollable", lockedColumnsCount: "lockedColumnsCount", logicalRowIndex: "logicalRowIndex", totalColumns: "totalColumns", totalColumnsCount: "totalColumnsCount" }, host: { properties: { "class.k-grid-footer": "this.footerClass", "class.k-table-tfoot": "this.hostClass", "attr.role": "this.hostRole" } }, ngImport: i0, template: `
65
72
  <ng-container>
66
73
  <tr
67
74
  class="k-footer-template"
68
75
  kendoGridLogicalRow
69
76
  [logicalRowIndex]="logicalRowIndex"
70
- [logicalSlaveRow]="lockedColumnsCount > 0"
77
+ [logicalSlaveRow]="lockedColumnsCount > 0 && !isStacked"
71
78
  [logicalCellsCount]="columns.length"
72
79
  [logicalSlaveCellsCount]="unlockedColumnsCount"
73
80
  [totalColumns]="totalColumns"
74
81
  >
75
- <td
76
- class="k-table-td k-group-cell k-table-group-td"
77
- role="presentation"
78
- *ngFor="let g of groups">
79
- </td>
82
+ <ng-container *ngIf="!isStacked">
83
+ <td
84
+ class="k-table-td k-group-cell k-table-group-td"
85
+ role="presentation"
86
+ *ngFor="let g of groups">
87
+ </td>
88
+ </ng-container>
80
89
  <td
81
90
  role="presentation"
82
91
  class="k-table-td k-hierarchy-cell"
83
- *ngIf="detailTemplate?.templateRef">
92
+ *ngIf="detailTemplate?.templateRef && !isStacked">
84
93
  </td>
85
- <ng-container *ngFor="let column of columnsToRender; let columnIndex = index; trackBy: trackByIndex;">
86
- <td *ngIf="!isColumnGroupComponent(column)"
87
- kendoGridLogicalCell
94
+ <ng-container *ngIf="!isStacked">
95
+ <ng-container *ngFor="let column of columnsToRender; let columnIndex = index; trackBy: trackByIndex;">
96
+ <td *ngIf="!isColumnGroupComponent(column)"
97
+ kendoGridLogicalCell
98
+ class="k-table-td"
99
+ [logicalRowIndex]="logicalRowIndex"
100
+ [logicalColIndex]="logicalColumnIndex(column)"
101
+ role="gridcell"
102
+ aria-selected="false"
103
+ [class.k-grid-footer-sticky]="column.sticky"
104
+ [ngClass]="column.footerClass"
105
+ [ngStyle]="column.sticky ? addStickyStyles(column) : column.footerStyle">
106
+ <ng-template
107
+ [templateContext]="{
108
+ templateRef: column.footerTemplateRef,
109
+ columnIndex: column.leafIndex,
110
+ column: column,
111
+ $implicit: column
112
+ }">
113
+ </ng-template>
114
+ </td>
115
+ </ng-container>
116
+ </ng-container>
117
+
118
+ <ng-container *ngIf="isStacked">
119
+ <td kendoGridLogicalCell
88
120
  class="k-table-td"
89
- [logicalRowIndex]="logicalRowIndex"
90
- [logicalColIndex]="logicalColumnIndex(column)"
91
- role="gridcell"
92
- aria-selected="false"
93
- [class.k-grid-footer-sticky]="column.sticky"
94
- [ngClass]="column.footerClass"
95
- [ngStyle]="column.sticky ? addStickyStyles(column) : column.footerStyle">
96
- <ng-template
97
- [templateContext]="{
98
- templateRef: column.footerTemplateRef,
99
- columnIndex: column.leafIndex,
100
- column: column,
101
- $implicit: column
102
- }">
103
- </ng-template>
121
+ [logicalRowIndex]="logicalRowIndex"
122
+ [logicalColIndex]="detailTemplate ? 1 : 0"
123
+ role="gridcell"
124
+ aria-selected="false">
125
+ <div class="k-grid-column-template">
126
+ <ng-container *ngFor="let column of columnsToRender; trackBy: trackByIndex;">
127
+ <div class="k-column-template-item" *ngIf="column.footerTemplateRef">
128
+ <ng-template
129
+ [templateContext]="{
130
+ templateRef: column.footerTemplateRef,
131
+ columnIndex: column.leafIndex,
132
+ column: column,
133
+ $implicit: column
134
+ }">
135
+ </ng-template>
136
+ </div>
137
+ </ng-container>
138
+ </div>
104
139
  </td>
105
140
  </ng-container>
106
141
  </tr>
@@ -117,40 +152,68 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
117
152
  class="k-footer-template"
118
153
  kendoGridLogicalRow
119
154
  [logicalRowIndex]="logicalRowIndex"
120
- [logicalSlaveRow]="lockedColumnsCount > 0"
155
+ [logicalSlaveRow]="lockedColumnsCount > 0 && !isStacked"
121
156
  [logicalCellsCount]="columns.length"
122
157
  [logicalSlaveCellsCount]="unlockedColumnsCount"
123
158
  [totalColumns]="totalColumns"
124
159
  >
125
- <td
126
- class="k-table-td k-group-cell k-table-group-td"
127
- role="presentation"
128
- *ngFor="let g of groups">
129
- </td>
160
+ <ng-container *ngIf="!isStacked">
161
+ <td
162
+ class="k-table-td k-group-cell k-table-group-td"
163
+ role="presentation"
164
+ *ngFor="let g of groups">
165
+ </td>
166
+ </ng-container>
130
167
  <td
131
168
  role="presentation"
132
169
  class="k-table-td k-hierarchy-cell"
133
- *ngIf="detailTemplate?.templateRef">
170
+ *ngIf="detailTemplate?.templateRef && !isStacked">
134
171
  </td>
135
- <ng-container *ngFor="let column of columnsToRender; let columnIndex = index; trackBy: trackByIndex;">
136
- <td *ngIf="!isColumnGroupComponent(column)"
137
- kendoGridLogicalCell
172
+ <ng-container *ngIf="!isStacked">
173
+ <ng-container *ngFor="let column of columnsToRender; let columnIndex = index; trackBy: trackByIndex;">
174
+ <td *ngIf="!isColumnGroupComponent(column)"
175
+ kendoGridLogicalCell
176
+ class="k-table-td"
177
+ [logicalRowIndex]="logicalRowIndex"
178
+ [logicalColIndex]="logicalColumnIndex(column)"
179
+ role="gridcell"
180
+ aria-selected="false"
181
+ [class.k-grid-footer-sticky]="column.sticky"
182
+ [ngClass]="column.footerClass"
183
+ [ngStyle]="column.sticky ? addStickyStyles(column) : column.footerStyle">
184
+ <ng-template
185
+ [templateContext]="{
186
+ templateRef: column.footerTemplateRef,
187
+ columnIndex: column.leafIndex,
188
+ column: column,
189
+ $implicit: column
190
+ }">
191
+ </ng-template>
192
+ </td>
193
+ </ng-container>
194
+ </ng-container>
195
+
196
+ <ng-container *ngIf="isStacked">
197
+ <td kendoGridLogicalCell
138
198
  class="k-table-td"
139
- [logicalRowIndex]="logicalRowIndex"
140
- [logicalColIndex]="logicalColumnIndex(column)"
141
- role="gridcell"
142
- aria-selected="false"
143
- [class.k-grid-footer-sticky]="column.sticky"
144
- [ngClass]="column.footerClass"
145
- [ngStyle]="column.sticky ? addStickyStyles(column) : column.footerStyle">
146
- <ng-template
147
- [templateContext]="{
148
- templateRef: column.footerTemplateRef,
149
- columnIndex: column.leafIndex,
150
- column: column,
151
- $implicit: column
152
- }">
153
- </ng-template>
199
+ [logicalRowIndex]="logicalRowIndex"
200
+ [logicalColIndex]="detailTemplate ? 1 : 0"
201
+ role="gridcell"
202
+ aria-selected="false">
203
+ <div class="k-grid-column-template">
204
+ <ng-container *ngFor="let column of columnsToRender; trackBy: trackByIndex;">
205
+ <div class="k-column-template-item" *ngIf="column.footerTemplateRef">
206
+ <ng-template
207
+ [templateContext]="{
208
+ templateRef: column.footerTemplateRef,
209
+ columnIndex: column.leafIndex,
210
+ column: column,
211
+ $implicit: column
212
+ }">
213
+ </ng-template>
214
+ </div>
215
+ </ng-container>
216
+ </div>
154
217
  </td>
155
218
  </ng-container>
156
219
  </tr>
@@ -159,7 +222,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
159
222
  standalone: true,
160
223
  imports: [LogicalRowDirective, NgFor, NgIf, LogicalCellDirective, NgClass, NgStyle, TemplateContextDirective]
161
224
  }]
162
- }], ctorParameters: function () { return [{ type: i1.ColumnInfoService }]; }, propDecorators: { columns: [{
225
+ }], ctorParameters: function () { return [{ type: i1.ColumnInfoService }, { type: i2.ContextService }]; }, propDecorators: { columns: [{
163
226
  type: Input
164
227
  }], groups: [{
165
228
  type: Input
@@ -400,6 +400,9 @@ export class HeaderComponent {
400
400
  get leafColumns() {
401
401
  return this._leafColumns;
402
402
  }
403
+ get isStacked() {
404
+ return this.contextService.grid?.isStacked;
405
+ }
403
406
  isReorderable(column) {
404
407
  return this.reorderable && column.reorderable;
405
408
  }
@@ -502,7 +505,7 @@ export class HeaderComponent {
502
505
  </th>
503
506
  <th class="k-hierarchy-cell k-header k-table-th"
504
507
  role="presentation"
505
- *ngIf="detailTemplate?.templateRef"
508
+ *ngIf="detailTemplate?.templateRef && !isStacked"
506
509
  >
507
510
  </th>
508
511
  <ng-container *ngFor="let column of columnsForLevel(levelIndex); let columnIndex = index; let last = last;">
@@ -726,7 +729,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
726
729
  </th>
727
730
  <th class="k-hierarchy-cell k-header k-table-th"
728
731
  role="presentation"
729
- *ngIf="detailTemplate?.templateRef"
732
+ *ngIf="detailTemplate?.templateRef && !isStacked"
730
733
  >
731
734
  </th>
732
735
  <ng-container *ngFor="let column of columnsForLevel(levelIndex); let columnIndex = index; let last = last;">
@@ -178,7 +178,6 @@ export class ListComponent {
178
178
  columnsEndIdx;
179
179
  viewportColumnsWidth;
180
180
  scrollLeft = 0;
181
- recalculateRowspan = true;
182
181
  observer;
183
182
  get lockedLeafColumns() {
184
183
  return this.columns.lockedLeafColumns;
@@ -187,7 +186,7 @@ export class ListComponent {
187
186
  return this.columns.nonLockedLeafColumns;
188
187
  }
189
188
  get nonLockedColumnsToRender() {
190
- if (this.virtualColumns && !this.pdfService.exporting) {
189
+ if (this.virtualColumns && !this.pdfService.exporting && !this.isStacked) {
191
190
  return this.viewportColumns;
192
191
  }
193
192
  return this.nonLockedLeafColumns;
@@ -200,13 +199,13 @@ export class ListComponent {
200
199
  return expandColumns(this.lockedLeafColumns.toArray()).reduce((prev, curr) => prev + (curr.width || 0), groupCellsWidth);
201
200
  }
202
201
  get nonLockedWidth() {
203
- if ((!this.rtl && this.lockedLeafColumns.length) || this.virtualColumns) {
202
+ if (((!this.rtl && this.lockedLeafColumns.length) || this.virtualColumns) && !this.isStacked) {
204
203
  return sumColumnWidths(expandColumns(this.nonLockedColumnsToRender.toArray()));
205
204
  }
206
205
  return undefined;
207
206
  }
208
207
  get isLocked() {
209
- return this.lockedLeafColumns.length > 0;
208
+ return this.lockedLeafColumns.length > 0 && !this.isStacked;
210
209
  }
211
210
  rtl = false;
212
211
  columnUpdateFrame;
@@ -270,7 +269,7 @@ export class ListComponent {
270
269
  if (this.virtualColumns && (!this.viewportColumns || this.viewportWidthChange())) {
271
270
  this.updateViewportColumns();
272
271
  }
273
- const shouldCalculatePageSize = isDocumentAvailable() && this.isVirtual && this.ctx.grid && !this.ctx.grid.pageSize;
272
+ const shouldCalculatePageSize = isDocumentAvailable() && this.isVirtual && this.ctx.grid && !isPresent(this.ctx.grid.pageSize);
274
273
  if (shouldCalculatePageSize) {
275
274
  const calculatedPageSize = this.calcVirtualPageSize();
276
275
  if (calculatedPageSize > 0) {
@@ -383,6 +382,12 @@ export class ListComponent {
383
382
  this.updateColumnViewport(startIdx, endIdx);
384
383
  }
385
384
  }
385
+ /**
386
+ * @hidden
387
+ */
388
+ get isStacked() {
389
+ return this.ctx.grid?.isStacked;
390
+ }
386
391
  detailExpand({ index, expand }) {
387
392
  if (expand) {
388
393
  this.rowHeightService.expandDetail(index);
@@ -694,7 +699,7 @@ export class ListComponent {
694
699
  }
695
700
  ], viewQueries: [{ propertyName: "container", first: true, predicate: ["container"], descendants: true, static: true }, { propertyName: "lockedContainer", first: true, predicate: ["lockedContainer"], descendants: true }, { propertyName: "lockedTable", first: true, predicate: ["lockedTable"], descendants: true }, { propertyName: "table", first: true, predicate: ["table"], descendants: true, static: true }, { propertyName: "resizeSensors", predicate: ResizeSensorComponent, descendants: true }], usesOnChanges: true, ngImport: i0, template: `
696
701
  <div #lockedContainer class="k-grid-content-locked" role="presentation"
697
- *ngIf="isLocked" [style.width.px]="lockedWidth" tabindex="-1"
702
+ *ngIf="isLocked && !isStacked" [style.width.px]="lockedWidth" tabindex="-1"
698
703
  [kendoEventsOutsideAngular]="{
699
704
  keydown: lockedKeydown,
700
705
  scroll: lockedScroll,
@@ -797,7 +802,7 @@ export class ListComponent {
797
802
  <div *ngIf="isVirtual" class="k-height-container" role="presentation">
798
803
  <div [style.height.px]="totalHeight"></div>
799
804
  </div>
800
- <div *ngIf="virtualColumns" class="k-width-container" role="presentation">
805
+ <div *ngIf="virtualColumns && !isStacked" class="k-width-container" role="presentation">
801
806
  <div [style.width.px]="totalWidth"></div>
802
807
  </div>
803
808
  </div>
@@ -815,7 +820,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
815
820
  selector: 'kendo-grid-list',
816
821
  template: `
817
822
  <div #lockedContainer class="k-grid-content-locked" role="presentation"
818
- *ngIf="isLocked" [style.width.px]="lockedWidth" tabindex="-1"
823
+ *ngIf="isLocked && !isStacked" [style.width.px]="lockedWidth" tabindex="-1"
819
824
  [kendoEventsOutsideAngular]="{
820
825
  keydown: lockedKeydown,
821
826
  scroll: lockedScroll,
@@ -918,7 +923,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
918
923
  <div *ngIf="isVirtual" class="k-height-container" role="presentation">
919
924
  <div [style.height.px]="totalHeight"></div>
920
925
  </div>
921
- <div *ngIf="virtualColumns" class="k-width-container" role="presentation">
926
+ <div *ngIf="virtualColumns && !isStacked" class="k-width-container" role="presentation">
922
927
  <div [style.width.px]="totalWidth"></div>
923
928
  </div>
924
929
  </div>