@progress/kendo-angular-grid 19.1.2 → 19.2.0-develop.10

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 (32) hide show
  1. package/aggregates/selection-aggregate.service.d.ts +1 -3
  2. package/column-menu/column-menu-item.directive.d.ts +1 -1
  3. package/common/provider.service.d.ts +2 -1
  4. package/data/data-mapping.service.d.ts +46 -0
  5. package/databinding.directive.d.ts +2 -1
  6. package/esm2022/aggregates/selection-aggregate.service.mjs +4 -8
  7. package/esm2022/column-menu/column-menu-item.directive.mjs +1 -1
  8. package/esm2022/common/provider.service.mjs +1 -1
  9. package/esm2022/data/data-mapping.service.mjs +125 -0
  10. package/esm2022/databinding.directive.mjs +12 -3
  11. package/esm2022/grid.component.mjs +41 -34
  12. package/esm2022/grouping/group-scroll-binding.directive.mjs +2 -2
  13. package/esm2022/package-metadata.mjs +2 -2
  14. package/esm2022/rendering/list.component.mjs +76 -57
  15. package/esm2022/rendering/table-body.component.mjs +37 -128
  16. package/esm2022/selection/selection-checkbox.directive.mjs +1 -1
  17. package/esm2022/selection/selection.service.mjs +23 -4
  18. package/esm2022/state-management/undo-redo.directive.mjs +74 -16
  19. package/esm2022/state-management/undo-redo.service.mjs +0 -1
  20. package/esm2022/state-management/undo-redo.stack.mjs +6 -0
  21. package/esm2022/utils.mjs +19 -0
  22. package/fesm2022/progress-kendo-angular-grid.mjs +934 -785
  23. package/grid.component.d.ts +12 -6
  24. package/package.json +20 -20
  25. package/rendering/list.component.d.ts +9 -6
  26. package/rendering/table-body.component.d.ts +9 -27
  27. package/schematics/ngAdd/index.js +4 -4
  28. package/selection/selection.service.d.ts +1 -1
  29. package/state-management/undo-redo.directive.d.ts +12 -2
  30. package/state-management/undo-redo.service.d.ts +0 -2
  31. package/state-management/undo-redo.stack.d.ts +2 -0
  32. package/utils.d.ts +5 -0
@@ -10,7 +10,7 @@ import { ScrollerService, PageAction, ScrollAction, ScrollBottomAction } from '.
10
10
  import { ScrollRequestService } from '../scrolling/scroll-request.service';
11
11
  import { ColumnBase } from '../columns/column-base';
12
12
  import { DetailTemplateDirective } from './details/detail-template.directive';
13
- import { isChanged, isPresent, isUniversal, anyChanged, isNumber, requestAnimationFrame, cancelAnimationFrame, recursiveFlatMap } from '../utils';
13
+ import { isChanged, isPresent, isUniversal, anyChanged, isNumber, requestAnimationFrame, cancelAnimationFrame, recursiveFlatMap, calcRowHeight } from '../utils';
14
14
  import { DetailsService } from './details/details.service';
15
15
  import { ColumnsContainer } from '../columns/columns-container';
16
16
  import { ChangeNotificationService } from '../data/change-notification.service';
@@ -40,7 +40,7 @@ import { ColGroupComponent } from './common/col-group.component';
40
40
  import { GridTableDirective } from './grid-table.directive';
41
41
  import { TableDirective } from '../column-resizing/table.directive';
42
42
  import { NgIf } from '@angular/common';
43
- import { RowspanService } from './rowspan.service';
43
+ import { DataMappingService } from '../data/data-mapping.service';
44
44
  import * as i0 from "@angular/core";
45
45
  import * as i1 from "./details/details.service";
46
46
  import * as i2 from "../data/change-notification.service";
@@ -56,7 +56,7 @@ import * as i11 from "../common/provider.service";
56
56
  import * as i12 from "../column-resizing/column-resizing.service";
57
57
  import * as i13 from "../pdf/pdf.service";
58
58
  import * as i14 from "../common/column-info.service";
59
- import * as i15 from "./rowspan.service";
59
+ import * as i15 from "../data/data-mapping.service";
60
60
  const elementAt = (index, elements, elementOffset) => {
61
61
  for (let idx = 0, elementIdx = 0; idx < elements.length; idx++) {
62
62
  const offset = elementOffset(elements[idx]);
@@ -121,14 +121,13 @@ export class ListComponent {
121
121
  changeDetector;
122
122
  pdfService;
123
123
  columnInfo;
124
- rowspanService;
124
+ dataMappingService;
125
125
  hostClass = true;
126
126
  hostRole = 'presentation';
127
127
  data;
128
128
  groups = [];
129
129
  total;
130
130
  rowHeight;
131
- stickyRowHeight;
132
131
  detailRowHeight;
133
132
  take;
134
133
  skip = 0;
@@ -153,6 +152,7 @@ export class ListComponent {
153
152
  scrollBottom = new EventEmitter();
154
153
  totalHeight;
155
154
  columnsStartIdx = 0;
155
+ allItems = [];
156
156
  get showFooter() {
157
157
  return this.groupable && this.groupable.showFooter;
158
158
  }
@@ -178,6 +178,7 @@ export class ListComponent {
178
178
  columnsEndIdx;
179
179
  viewportColumnsWidth;
180
180
  scrollLeft = 0;
181
+ recalculateRowspan = true;
181
182
  observer;
182
183
  get lockedLeafColumns() {
183
184
  return this.columns.lockedLeafColumns;
@@ -210,7 +211,8 @@ export class ListComponent {
210
211
  rtl = false;
211
212
  columnUpdateFrame;
212
213
  hasLockedContainer;
213
- constructor(scrollerFactory, detailsService, changeNotification, suspendService, groupsService, ngZone, renderer, scrollSyncService, resizeService, editService, supportService, navigationService, scrollRequestService, ctx, columnResizingService, changeDetector, pdfService, columnInfo, rowspanService) {
214
+ minRowHeight;
215
+ constructor(scrollerFactory, detailsService, changeNotification, suspendService, groupsService, ngZone, renderer, scrollSyncService, resizeService, editService, supportService, navigationService, scrollRequestService, ctx, columnResizingService, changeDetector, pdfService, columnInfo, dataMappingService) {
214
216
  this.changeNotification = changeNotification;
215
217
  this.suspendService = suspendService;
216
218
  this.groupsService = groupsService;
@@ -226,12 +228,13 @@ export class ListComponent {
226
228
  this.changeDetector = changeDetector;
227
229
  this.pdfService = pdfService;
228
230
  this.columnInfo = columnInfo;
229
- this.rowspanService = rowspanService;
231
+ this.dataMappingService = dataMappingService;
230
232
  this.scroller = scrollerFactory(this.dispatcher);
231
233
  this.subscriptions = detailsService.changes.subscribe(x => this.detailExpand(x));
232
234
  this.subscriptions.add(scrollRequestService.requests.subscribe(req => isPresent(req.adjustIndex) ? this.scrollTo(req.request, req.adjustIndex) : this.scrollToItem(req.request)));
233
235
  }
234
236
  ngOnInit() {
237
+ this.minRowHeight = this.isVirtual ? this.rowHeight || calcRowHeight(this.table.nativeElement) : this.rowHeight;
235
238
  this.init();
236
239
  this.subscriptions.add(this.ngZone.runOutsideAngular(this.handleRowSync.bind(this)));
237
240
  this.subscriptions.add(this.ngZone.runOutsideAngular(this.handleRowNavigationLocked.bind(this)));
@@ -267,6 +270,22 @@ export class ListComponent {
267
270
  if (this.virtualColumns && (!this.viewportColumns || this.viewportWidthChange())) {
268
271
  this.updateViewportColumns();
269
272
  }
273
+ const shouldCalculatePageSize = isDocumentAvailable() && this.isVirtual && this.ctx.grid && !this.ctx.grid.pageSize;
274
+ if (shouldCalculatePageSize) {
275
+ const calculatedPageSize = this.calcVirtualPageSize();
276
+ if (calculatedPageSize > 0) {
277
+ this.ngZone.onMicrotaskEmpty.pipe(take(1)).subscribe(() => {
278
+ this.ctx.grid.pageSize = calculatedPageSize;
279
+ this.ngZone.run(() => {
280
+ this.pageChange.emit({
281
+ skip: this.skip || 0,
282
+ take: calculatedPageSize
283
+ });
284
+ });
285
+ });
286
+ }
287
+ }
288
+ this.allItems = this.dataMappingService.dataMapper(this.data, this.nonLockedColumnsToRender, this.lockedLeafColumns, this.detailTemplate, this.showFooter);
270
289
  }
271
290
  ngAfterViewInit() {
272
291
  if (!isDocumentAvailable()) {
@@ -305,7 +324,7 @@ export class ListComponent {
305
324
  if (this.suspendService.scroll) {
306
325
  return;
307
326
  }
308
- this.rowHeightService = new RowHeightService(this.total, this.rowHeight, this.detailRowHeight);
327
+ this.rowHeightService = new RowHeightService(this.total, this.rowHeight || this.minRowHeight, this.detailRowHeight);
309
328
  this.totalHeight = this.rowHeightService.totalHeight();
310
329
  if (!isUniversal()) {
311
330
  this.ngZone.runOutsideAngular(this.createScroller.bind(this));
@@ -334,6 +353,36 @@ export class ListComponent {
334
353
  args.preventDefault();
335
354
  }
336
355
  }
356
+ updateViewportColumns(range) {
357
+ const columns = this.columns.nonLockedLeafColumns.toArray();
358
+ // eslint-disable-next-line prefer-const
359
+ let { startIdx, endIdx, offset } = range || this.calculateViewportColumns();
360
+ const start = Math.max(0, startIdx - bufferSize);
361
+ const end = Math.min(endIdx + bufferSize, columns.length - 1);
362
+ if (start < startIdx) {
363
+ for (let idx = startIdx - 1; idx >= start; idx--) {
364
+ offset -= columns[idx].width;
365
+ }
366
+ }
367
+ let currentColumns = columns.slice(start, end + 1);
368
+ this.viewportColumnsWidth = currentColumns.reduce((total, column) => total + column.width, 0);
369
+ const stickyBeforeStart = columns.slice(0, start).filter(c => c.sticky && !currentColumns.some(col => col === c));
370
+ const stickyAfterEnd = columns.slice(end, columns.length).filter(c => c.sticky && !currentColumns.some(col => col === c));
371
+ currentColumns = [...stickyBeforeStart, ...currentColumns, ...stickyAfterEnd];
372
+ if (start > 0) {
373
+ const offsetColumn = new ColumnBase();
374
+ offsetColumn.width = offset;
375
+ currentColumns.unshift(offsetColumn);
376
+ }
377
+ this.viewportColumns = new QueryList();
378
+ this.viewportColumns.reset(currentColumns);
379
+ this.columnsStartIdx = start;
380
+ this.columnsEndIdx = end;
381
+ this.columnInfo.columnRangeChange.emit({ start, end, offset });
382
+ if (!range) {
383
+ this.updateColumnViewport(startIdx, endIdx);
384
+ }
385
+ }
337
386
  detailExpand({ index, expand }) {
338
387
  if (expand) {
339
388
  this.rowHeightService.expandDetail(index);
@@ -374,10 +423,10 @@ export class ListComponent {
374
423
  const observable = this.scroller
375
424
  .create(this.rowHeightService, this.skip, this.take, this.total);
376
425
  this.skipScroll = false;
377
- this.scrollerSubscription = observable.pipe(filter((x) => x instanceof PageAction), filter(() => {
426
+ this.scrollerSubscription = observable.pipe(filter((x) => x instanceof PageAction), filter((x) => {
378
427
  const temp = this.skipScroll;
379
428
  this.skipScroll = false;
380
- return !temp;
429
+ return !temp && x.skip !== this.skip;
381
430
  }), tap(() => this.rebind = true))
382
431
  .subscribe((x) => this.ngZone.run(() => this.pageChange.emit(x)));
383
432
  this.scrollerSubscription.add(observable.pipe(filter((x) => x instanceof ScrollAction))
@@ -416,7 +465,6 @@ export class ListComponent {
416
465
  .pipe(filter(isLocked), switchMapTo(onStable())), this.editService.changed, this.resizeService.changes, this.columnResizingService.changes
417
466
  .pipe(filter(change => change.type === 'end')), this.supportService.changes)
418
467
  .pipe(tap(() => {
419
- this.ngZone.run(() => this.rowspanService.reset());
420
468
  this.resetNavigationViewport();
421
469
  }), filter(isLocked))
422
470
  .subscribe(() => {
@@ -560,36 +608,6 @@ export class ListComponent {
560
608
  })
561
609
  .forEach(setHeight(this.renderer));
562
610
  }
563
- updateViewportColumns(range) {
564
- const columns = this.columns.nonLockedLeafColumns.toArray();
565
- // eslint-disable-next-line prefer-const
566
- let { startIdx, endIdx, offset } = range || this.calculateViewportColumns();
567
- const start = Math.max(0, startIdx - bufferSize);
568
- const end = Math.min(endIdx + bufferSize, columns.length - 1);
569
- if (start < startIdx) {
570
- for (let idx = startIdx - 1; idx >= start; idx--) {
571
- offset -= columns[idx].width;
572
- }
573
- }
574
- let currentColumns = columns.slice(start, end + 1);
575
- this.viewportColumnsWidth = currentColumns.reduce((total, column) => total + column.width, 0);
576
- const stickyBeforeStart = columns.slice(0, start).filter(c => c.sticky && !currentColumns.some(col => col === c));
577
- const stickyAfterEnd = columns.slice(end, columns.length).filter(c => c.sticky && !currentColumns.some(col => col === c));
578
- currentColumns = [...stickyBeforeStart, ...currentColumns, ...stickyAfterEnd];
579
- if (start > 0) {
580
- const offsetColumn = new ColumnBase();
581
- offsetColumn.width = offset;
582
- currentColumns.unshift(offsetColumn);
583
- }
584
- this.viewportColumns = new QueryList();
585
- this.viewportColumns.reset(currentColumns);
586
- this.columnsStartIdx = start;
587
- this.columnsEndIdx = end;
588
- this.columnInfo.columnRangeChange.emit({ start, end, offset });
589
- if (!range) {
590
- this.updateColumnViewport(startIdx, endIdx);
591
- }
592
- }
593
611
  handleColumnScroll() {
594
612
  const container = this.container.nativeElement;
595
613
  const scrollLeft = container.scrollLeft;
@@ -661,8 +679,15 @@ export class ListComponent {
661
679
  }
662
680
  return element.offsetLeft;
663
681
  }
664
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: ListComponent, deps: [{ token: SCROLLER_FACTORY_TOKEN }, { token: i1.DetailsService }, { token: i2.ChangeNotificationService }, { token: i3.SuspendService }, { token: i4.GroupsService }, { token: i0.NgZone }, { token: i0.Renderer2 }, { token: i5.ScrollSyncService }, { token: i6.ResizeService }, { token: i7.EditService }, { token: i8.BrowserSupportService }, { token: i9.NavigationService }, { token: i10.ScrollRequestService }, { token: i11.ContextService }, { token: i12.ColumnResizingService }, { token: i0.ChangeDetectorRef }, { token: i13.PDFService }, { token: i14.ColumnInfoService }, { token: i15.RowspanService }], target: i0.ɵɵFactoryTarget.Component });
665
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: ListComponent, isStandalone: true, selector: "kendo-grid-list", inputs: { data: "data", groups: "groups", total: "total", rowHeight: "rowHeight", stickyRowHeight: "stickyRowHeight", 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: [
682
+ calcVirtualPageSize = () => {
683
+ const containerHeight = this.container.nativeElement.offsetHeight;
684
+ if (containerHeight && (this.rowHeight ?? this.minRowHeight)) {
685
+ return Math.ceil((containerHeight / (this.rowHeight ?? this.minRowHeight)) * 1.5);
686
+ }
687
+ return 0;
688
+ };
689
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: ListComponent, deps: [{ token: SCROLLER_FACTORY_TOKEN }, { token: i1.DetailsService }, { token: i2.ChangeNotificationService }, { token: i3.SuspendService }, { token: i4.GroupsService }, { token: i0.NgZone }, { token: i0.Renderer2 }, { token: i5.ScrollSyncService }, { token: i6.ResizeService }, { token: i7.EditService }, { token: i8.BrowserSupportService }, { token: i9.NavigationService }, { token: i10.ScrollRequestService }, { token: i11.ContextService }, { token: i12.ColumnResizingService }, { token: i0.ChangeDetectorRef }, { token: i13.PDFService }, { token: i14.ColumnInfoService }, { token: i15.DataMappingService }], target: i0.ɵɵFactoryTarget.Component });
690
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", 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: [
666
691
  {
667
692
  provide: SCROLLER_FACTORY_TOKEN,
668
693
  useValue: DEFAULT_SCROLLER_FACTORY
@@ -698,13 +723,12 @@ export class ListComponent {
698
723
  role="presentation"
699
724
  [groups]="groups"
700
725
  [isLocked]="true"
701
- [data]="data"
726
+ [rowsToRender]="allItems"
702
727
  [noRecordsText]="''"
703
728
  [columns]="$any(lockedLeafColumns)"
704
729
  [totalColumnsCount]="leafColumns.length"
705
730
  [totalColumns]="columns"
706
731
  [detailTemplate]="detailTemplate"
707
- [showGroupFooters]="showFooter"
708
732
  [skip]="skip"
709
733
  [selectable]="selectable"
710
734
  [trackBy]="trackBy"
@@ -746,9 +770,8 @@ export class ListComponent {
746
770
  <tbody kendoGridTableBody
747
771
  role="rowgroup"
748
772
  [skipGroupDecoration]="isLocked"
749
- [data]="data"
773
+ [rowsToRender]="allItems"
750
774
  [groups]="groups"
751
- [showGroupFooters]="showFooter"
752
775
  [columns]="$any(nonLockedColumnsToRender)"
753
776
  [allColumns]="$any(nonLockedLeafColumns)"
754
777
  [detailTemplate]="detailTemplate"
@@ -778,7 +801,7 @@ export class ListComponent {
778
801
  <div [style.width.px]="totalWidth"></div>
779
802
  </div>
780
803
  </div>
781
- `, isInline: true, dependencies: [{ kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { 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", "data", "skip", "selectable", "filterable", "noRecordsText", "isLocked", "isLoading", "isVirtual", "cellLoadingTemplate", "skipGroupDecoration", "showGroupFooters", "lockedColumnsCount", "totalColumnsCount", "virtualColumns", "trackBy", "rowSticky", "totalColumns", "rowClass"] }, { kind: "component", type: ResizeSensorComponent, selector: "kendo-resize-sensor", inputs: ["rateLimit"], outputs: ["resize"] }, { kind: "directive", type: ResizableContainerDirective, selector: "[kendoGridResizableContainer]", inputs: ["lockedWidth", "kendoGridResizableContainer"] }] });
804
+ `, isInline: true, dependencies: [{ kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { 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"] }, { kind: "component", type: ResizeSensorComponent, selector: "kendo-resize-sensor", inputs: ["rateLimit"], outputs: ["resize"] }, { kind: "directive", type: ResizableContainerDirective, selector: "[kendoGridResizableContainer]", inputs: ["lockedWidth", "kendoGridResizableContainer"] }] });
782
805
  }
783
806
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: ListComponent, decorators: [{
784
807
  type: Component,
@@ -821,13 +844,12 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
821
844
  role="presentation"
822
845
  [groups]="groups"
823
846
  [isLocked]="true"
824
- [data]="data"
847
+ [rowsToRender]="allItems"
825
848
  [noRecordsText]="''"
826
849
  [columns]="$any(lockedLeafColumns)"
827
850
  [totalColumnsCount]="leafColumns.length"
828
851
  [totalColumns]="columns"
829
852
  [detailTemplate]="detailTemplate"
830
- [showGroupFooters]="showFooter"
831
853
  [skip]="skip"
832
854
  [selectable]="selectable"
833
855
  [trackBy]="trackBy"
@@ -869,9 +891,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
869
891
  <tbody kendoGridTableBody
870
892
  role="rowgroup"
871
893
  [skipGroupDecoration]="isLocked"
872
- [data]="data"
894
+ [rowsToRender]="allItems"
873
895
  [groups]="groups"
874
- [showGroupFooters]="showFooter"
875
896
  [columns]="$any(nonLockedColumnsToRender)"
876
897
  [allColumns]="$any(nonLockedLeafColumns)"
877
898
  [detailTemplate]="detailTemplate"
@@ -908,7 +929,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
908
929
  }], ctorParameters: function () { return [{ type: undefined, decorators: [{
909
930
  type: Inject,
910
931
  args: [SCROLLER_FACTORY_TOKEN]
911
- }] }, { type: i1.DetailsService }, { type: i2.ChangeNotificationService }, { type: i3.SuspendService }, { type: i4.GroupsService }, { type: i0.NgZone }, { type: i0.Renderer2 }, { type: i5.ScrollSyncService }, { type: i6.ResizeService }, { type: i7.EditService }, { type: i8.BrowserSupportService }, { type: i9.NavigationService }, { type: i10.ScrollRequestService }, { type: i11.ContextService }, { type: i12.ColumnResizingService }, { type: i0.ChangeDetectorRef }, { type: i13.PDFService }, { type: i14.ColumnInfoService }, { type: i15.RowspanService }]; }, propDecorators: { hostClass: [{
932
+ }] }, { type: i1.DetailsService }, { type: i2.ChangeNotificationService }, { type: i3.SuspendService }, { type: i4.GroupsService }, { type: i0.NgZone }, { type: i0.Renderer2 }, { type: i5.ScrollSyncService }, { type: i6.ResizeService }, { type: i7.EditService }, { type: i8.BrowserSupportService }, { type: i9.NavigationService }, { type: i10.ScrollRequestService }, { type: i11.ContextService }, { type: i12.ColumnResizingService }, { type: i0.ChangeDetectorRef }, { type: i13.PDFService }, { type: i14.ColumnInfoService }, { type: i15.DataMappingService }]; }, propDecorators: { hostClass: [{
912
933
  type: HostBinding,
913
934
  args: ['class.k-grid-container']
914
935
  }], hostRole: [{
@@ -922,8 +943,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
922
943
  type: Input
923
944
  }], rowHeight: [{
924
945
  type: Input
925
- }], stickyRowHeight: [{
926
- type: Input
927
946
  }], detailRowHeight: [{
928
947
  type: Input
929
948
  }], take: [{
@@ -973,10 +992,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
973
992
  args: ['container', { static: true }]
974
993
  }], lockedContainer: [{
975
994
  type: ViewChild,
976
- args: ['lockedContainer', { static: false }]
995
+ args: ['lockedContainer']
977
996
  }], lockedTable: [{
978
997
  type: ViewChild,
979
- args: ['lockedTable', { static: false }]
998
+ args: ['lockedTable']
980
999
  }], table: [{
981
1000
  type: ViewChild,
982
1001
  args: ['table', { static: true }]