@progress/kendo-angular-grid 19.1.2 → 19.2.0-develop.1
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.
- package/data/data-mapping.service.d.ts +46 -0
- package/esm2022/data/data-mapping.service.mjs +125 -0
- package/esm2022/databinding.directive.mjs +6 -0
- package/esm2022/grid.component.mjs +24 -23
- package/esm2022/package-metadata.mjs +2 -2
- package/esm2022/rendering/list.component.mjs +45 -27
- package/esm2022/rendering/table-body.component.mjs +37 -128
- package/esm2022/utils.mjs +15 -0
- package/fesm2022/progress-kendo-angular-grid.mjs +256 -192
- package/grid.component.d.ts +10 -3
- package/package.json +20 -20
- package/rendering/list.component.d.ts +8 -5
- package/rendering/table-body.component.d.ts +9 -27
- package/schematics/ngAdd/index.js +4 -4
- package/utils.d.ts +5 -0
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
/**-----------------------------------------------------------------------------------------
|
|
2
|
+
* Copyright © 2025 Progress Software Corporation. All rights reserved.
|
|
3
|
+
* Licensed under commercial license. See LICENSE.md in the project root for more information
|
|
4
|
+
*-------------------------------------------------------------------------------------------*/
|
|
5
|
+
import { QueryList } from '@angular/core';
|
|
6
|
+
import { RowspanService } from '../rendering/rowspan.service';
|
|
7
|
+
import { GroupsService } from '../grouping/groups.service';
|
|
8
|
+
import { GridItem } from './grid-item.interface';
|
|
9
|
+
import { DetailsService } from '../rendering/details/details.service';
|
|
10
|
+
import { ColumnBase } from '../columns/column-base';
|
|
11
|
+
import { DetailTemplateDirective } from '../rendering/details/detail-template.directive';
|
|
12
|
+
import * as i0 from "@angular/core";
|
|
13
|
+
/**
|
|
14
|
+
* @hidden
|
|
15
|
+
*/
|
|
16
|
+
export declare class DataMappingService {
|
|
17
|
+
private rowspanService;
|
|
18
|
+
private groupsService;
|
|
19
|
+
private detailsService;
|
|
20
|
+
private recalculateRowspan;
|
|
21
|
+
private dataArray;
|
|
22
|
+
constructor(rowspanService: RowspanService, groupsService: GroupsService, detailsService: DetailsService);
|
|
23
|
+
private isGroup;
|
|
24
|
+
/**
|
|
25
|
+
* Maps the data to the Grid row items, applying rowspan and detail row logic.
|
|
26
|
+
*/
|
|
27
|
+
dataMapper(data: any, nonLockedColumnsToRender: QueryList<ColumnBase>, lockedLeafColumns: QueryList<ColumnBase>, detailTemplate: DetailTemplateDirective, showFooter: boolean): Array<GridItem & {
|
|
28
|
+
showDataItem?: boolean;
|
|
29
|
+
showDetailRow?: boolean;
|
|
30
|
+
cells?: any[];
|
|
31
|
+
isExpanded?: boolean;
|
|
32
|
+
}>;
|
|
33
|
+
private isDataItem;
|
|
34
|
+
private isFooter;
|
|
35
|
+
private isFooterItemInExpandedGroup;
|
|
36
|
+
private isDataItemInExpandedGroup;
|
|
37
|
+
private isInExpandedGroup;
|
|
38
|
+
private isParentGroupExpanded;
|
|
39
|
+
private isExpanded;
|
|
40
|
+
private shouldRenderItem;
|
|
41
|
+
private shouldSkipCell;
|
|
42
|
+
private cachedDataArray;
|
|
43
|
+
private getRowspan;
|
|
44
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<DataMappingService, never>;
|
|
45
|
+
static ɵprov: i0.ɵɵInjectableDeclaration<DataMappingService>;
|
|
46
|
+
}
|
|
@@ -0,0 +1,125 @@
|
|
|
1
|
+
/**-----------------------------------------------------------------------------------------
|
|
2
|
+
* Copyright © 2025 Progress Software Corporation. All rights reserved.
|
|
3
|
+
* Licensed under commercial license. See LICENSE.md in the project root for more information
|
|
4
|
+
*-------------------------------------------------------------------------------------------*/
|
|
5
|
+
import { Injectable } from '@angular/core';
|
|
6
|
+
import { RowspanService } from '../rendering/rowspan.service';
|
|
7
|
+
import { GroupsService } from '../grouping/groups.service';
|
|
8
|
+
import { DetailsService } from '../rendering/details/details.service';
|
|
9
|
+
import * as i0 from "@angular/core";
|
|
10
|
+
import * as i1 from "../rendering/rowspan.service";
|
|
11
|
+
import * as i2 from "../grouping/groups.service";
|
|
12
|
+
import * as i3 from "../rendering/details/details.service";
|
|
13
|
+
/**
|
|
14
|
+
* @hidden
|
|
15
|
+
*/
|
|
16
|
+
export class DataMappingService {
|
|
17
|
+
rowspanService;
|
|
18
|
+
groupsService;
|
|
19
|
+
detailsService;
|
|
20
|
+
recalculateRowspan = true;
|
|
21
|
+
dataArray = null;
|
|
22
|
+
constructor(rowspanService, groupsService, detailsService) {
|
|
23
|
+
this.rowspanService = rowspanService;
|
|
24
|
+
this.groupsService = groupsService;
|
|
25
|
+
this.detailsService = detailsService;
|
|
26
|
+
}
|
|
27
|
+
isGroup(item) {
|
|
28
|
+
return item.type === 'group';
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* Maps the data to the Grid row items, applying rowspan and detail row logic.
|
|
32
|
+
*/
|
|
33
|
+
dataMapper(data, nonLockedColumnsToRender, lockedLeafColumns, detailTemplate, showFooter) {
|
|
34
|
+
const result = [];
|
|
35
|
+
if (!data || !nonLockedColumnsToRender && !lockedLeafColumns) {
|
|
36
|
+
return [];
|
|
37
|
+
}
|
|
38
|
+
let dataIndex = 0;
|
|
39
|
+
for (const item of data) {
|
|
40
|
+
if (this.shouldRenderItem(item, detailTemplate, showFooter)) {
|
|
41
|
+
if (item.type === 'data') {
|
|
42
|
+
item.cells = [];
|
|
43
|
+
for (let i = 0; i < (lockedLeafColumns.length + nonLockedColumnsToRender.length); i++) {
|
|
44
|
+
const column = i < lockedLeafColumns.length ? lockedLeafColumns.get(i) : nonLockedColumnsToRender.get(i - lockedLeafColumns.length);
|
|
45
|
+
const cell = {};
|
|
46
|
+
if (column.cellRowspan && this.shouldSkipCell(dataIndex, i)) {
|
|
47
|
+
cell.skip = true;
|
|
48
|
+
}
|
|
49
|
+
else {
|
|
50
|
+
cell.rowspan = column.cellRowspan ? this.getRowspan({
|
|
51
|
+
index: dataIndex,
|
|
52
|
+
dataItem: item
|
|
53
|
+
}, column, i, data) : 1;
|
|
54
|
+
}
|
|
55
|
+
item.cells.push(cell);
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
result.push(item);
|
|
59
|
+
}
|
|
60
|
+
dataIndex++;
|
|
61
|
+
}
|
|
62
|
+
this.recalculateRowspan = true;
|
|
63
|
+
this.rowspanService.reset();
|
|
64
|
+
return result;
|
|
65
|
+
}
|
|
66
|
+
isDataItem(item) {
|
|
67
|
+
return !this.isGroup(item) && !this.isFooter(item);
|
|
68
|
+
}
|
|
69
|
+
isFooter(item) {
|
|
70
|
+
return item.type === 'footer';
|
|
71
|
+
}
|
|
72
|
+
isFooterItemInExpandedGroup(item) {
|
|
73
|
+
const footerItem = { data: item.data, index: item.groupIndex, parentGroup: item.group.parentGroup };
|
|
74
|
+
return this.isInExpandedGroup(footerItem);
|
|
75
|
+
}
|
|
76
|
+
isDataItemInExpandedGroup(item) {
|
|
77
|
+
const dataItem = { data: item.group.data, index: item.groupIndex, parentGroup: item.group.parentGroup };
|
|
78
|
+
return this.isInExpandedGroup(dataItem);
|
|
79
|
+
}
|
|
80
|
+
isInExpandedGroup(item) {
|
|
81
|
+
return this.groupsService.isInExpandedGroup(item);
|
|
82
|
+
}
|
|
83
|
+
isParentGroupExpanded(item) {
|
|
84
|
+
return this.groupsService.isInExpandedGroup(item.parentGroup);
|
|
85
|
+
}
|
|
86
|
+
isExpanded(viewItem) {
|
|
87
|
+
return this.detailsService.isExpanded(viewItem.index, viewItem.data);
|
|
88
|
+
}
|
|
89
|
+
shouldRenderItem(item, detailTemplate, showFooter) {
|
|
90
|
+
const renderGroupHeader = this.isGroup(item) && this.isParentGroupExpanded(item);
|
|
91
|
+
const renderDataItem = this.isDataItem(item) && (!item.group || this.isDataItemInExpandedGroup(item));
|
|
92
|
+
const renderDetailTemplate = renderDataItem && detailTemplate?.templateRef && detailTemplate.showIf(item.data, item.index) && this.isExpanded(item);
|
|
93
|
+
const isVisibleFooter = this.isFooter(item) && item.group && (this.isFooterItemInExpandedGroup(item) || (showFooter && this.isParentGroupExpanded(item.group)));
|
|
94
|
+
const renderFooter = isVisibleFooter && !item.data.hideFooter;
|
|
95
|
+
item.showDataItem = renderDataItem;
|
|
96
|
+
item.showDetailRow = renderDataItem && renderDetailTemplate;
|
|
97
|
+
item.isExpanded = this.isExpanded(item);
|
|
98
|
+
return renderGroupHeader || renderDataItem || renderDetailTemplate || renderFooter;
|
|
99
|
+
}
|
|
100
|
+
shouldSkipCell(rowIndex, colIndex) {
|
|
101
|
+
return this.rowspanService.shouldSkip(rowIndex, colIndex);
|
|
102
|
+
}
|
|
103
|
+
cachedDataArray(data) {
|
|
104
|
+
if (!this.dataArray) {
|
|
105
|
+
this.dataArray = data.map(item => item);
|
|
106
|
+
}
|
|
107
|
+
return this.dataArray;
|
|
108
|
+
}
|
|
109
|
+
getRowspan(row, column, colIndex, data) {
|
|
110
|
+
if (this.recalculateRowspan) {
|
|
111
|
+
this.dataArray = null;
|
|
112
|
+
this.recalculateRowspan = false;
|
|
113
|
+
}
|
|
114
|
+
const rowspan = column.cellRowspan(row, column, this.cachedDataArray(data));
|
|
115
|
+
if (rowspan > 1) {
|
|
116
|
+
this.rowspanService.addCells(row.index, colIndex, rowspan);
|
|
117
|
+
}
|
|
118
|
+
return rowspan;
|
|
119
|
+
}
|
|
120
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: DataMappingService, deps: [{ token: i1.RowspanService }, { token: i2.GroupsService }, { token: i3.DetailsService }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
121
|
+
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: DataMappingService });
|
|
122
|
+
}
|
|
123
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: DataMappingService, decorators: [{
|
|
124
|
+
type: Injectable
|
|
125
|
+
}], ctorParameters: function () { return [{ type: i1.RowspanService }, { type: i2.GroupsService }, { type: i3.DetailsService }]; } });
|
|
@@ -174,6 +174,12 @@ export class DataBindingDirective {
|
|
|
174
174
|
}
|
|
175
175
|
}
|
|
176
176
|
process(state) {
|
|
177
|
+
if (this.grid.isVirtual && (!isPresent(state.take) || state.take === 0)) {
|
|
178
|
+
return {
|
|
179
|
+
data: [],
|
|
180
|
+
total: this.originalData?.length || 0
|
|
181
|
+
};
|
|
182
|
+
}
|
|
177
183
|
return process(this.originalData, state);
|
|
178
184
|
}
|
|
179
185
|
applyState({ skip, take, sort, group, filter }) {
|
|
@@ -72,7 +72,7 @@ import { ContextService } from './common/provider.service';
|
|
|
72
72
|
import { LoadingTemplateDirective } from './rendering/loading-template.directive';
|
|
73
73
|
import { SizingOptionsService } from './layout/sizing-options.service';
|
|
74
74
|
import { DraggableDirective, WatermarkOverlayComponent, guid, shouldShowValidationUI } from '@progress/kendo-angular-common';
|
|
75
|
-
import {
|
|
75
|
+
import { DragTargetContainerDirective, DropTargetContainerDirective } from '@progress/kendo-angular-utils';
|
|
76
76
|
import { RowReorderService } from './row-reordering/row-reorder.service';
|
|
77
77
|
import { StatusBarTemplateDirective } from './aggregates/status-bar-template.directive';
|
|
78
78
|
import { CellSelectionAggregateService } from './aggregates/selection-aggregate.service';
|
|
@@ -100,6 +100,7 @@ import { AdaptiveGridService } from './common/adaptiveness.service';
|
|
|
100
100
|
import { AdaptiveRendererComponent } from './adaptiveness/adaptive-renderer.component';
|
|
101
101
|
import { ColumnMenuService } from './column-menu/column-menu.service';
|
|
102
102
|
import { MenuTabbingService } from './filtering/menu/menu-tabbing.service';
|
|
103
|
+
import { DataMappingService } from './data/data-mapping.service';
|
|
103
104
|
import * as i0 from "@angular/core";
|
|
104
105
|
import * as i1 from "./layout/browser-support.service";
|
|
105
106
|
import * as i2 from "./selection/selection.service";
|
|
@@ -124,9 +125,9 @@ import * as i20 from "./scrolling/scroll-request.service";
|
|
|
124
125
|
import * as i21 from "@progress/kendo-angular-l10n";
|
|
125
126
|
import * as i22 from "./common/provider.service";
|
|
126
127
|
import * as i23 from "./layout/sizing-options.service";
|
|
127
|
-
import * as i24 from "
|
|
128
|
-
import * as i25 from "./
|
|
129
|
-
import * as i26 from "./
|
|
128
|
+
import * as i24 from "./common/adaptiveness.service";
|
|
129
|
+
import * as i25 from "./row-reordering/row-reorder.service";
|
|
130
|
+
import * as i26 from "./data/data-mapping.service";
|
|
130
131
|
import * as i27 from "@progress/kendo-angular-pager";
|
|
131
132
|
const createControl = (source) => (acc, key) => {
|
|
132
133
|
acc[key] = new FormControl(source[key]);
|
|
@@ -206,9 +207,9 @@ export class GridComponent {
|
|
|
206
207
|
localization;
|
|
207
208
|
ctx;
|
|
208
209
|
sizingService;
|
|
209
|
-
adaptiveService;
|
|
210
210
|
adaptiveGridService;
|
|
211
211
|
rowReorderService;
|
|
212
|
+
dataMappingService;
|
|
212
213
|
/**
|
|
213
214
|
* Sets the data of the Grid. If you provide an array, the Grid gets the total count automatically.
|
|
214
215
|
* ([more information and example]({% slug binding_grid %})).
|
|
@@ -1119,6 +1120,7 @@ export class GridComponent {
|
|
|
1119
1120
|
*/
|
|
1120
1121
|
blockArrowSelection = false;
|
|
1121
1122
|
undoRedoService;
|
|
1123
|
+
rowsToRender;
|
|
1122
1124
|
selectionSubscription;
|
|
1123
1125
|
stateChangeSubscription;
|
|
1124
1126
|
groupExpandCollapseSubscription;
|
|
@@ -1144,7 +1146,7 @@ export class GridComponent {
|
|
|
1144
1146
|
rowReorderSubscription;
|
|
1145
1147
|
rtl = false;
|
|
1146
1148
|
_rowSticky;
|
|
1147
|
-
constructor(supportService, selectionService, cellSelectionService, wrapper, groupInfoService, groupsService, changeNotification, detailsService, editService, filterService, pdfService, responsiveService, renderer, excelService, ngZone, scrollSyncService, domEvents, columnResizingService, changeDetectorRef, columnReorderService, columnInfoService, navigationService, sortService, scrollRequestService, localization, ctx, sizingService,
|
|
1149
|
+
constructor(supportService, selectionService, cellSelectionService, wrapper, groupInfoService, groupsService, changeNotification, detailsService, editService, filterService, pdfService, responsiveService, renderer, excelService, ngZone, scrollSyncService, domEvents, columnResizingService, changeDetectorRef, columnReorderService, columnInfoService, navigationService, sortService, scrollRequestService, localization, ctx, sizingService, adaptiveGridService, rowReorderService, dataMappingService) {
|
|
1148
1150
|
this.supportService = supportService;
|
|
1149
1151
|
this.selectionService = selectionService;
|
|
1150
1152
|
this.cellSelectionService = cellSelectionService;
|
|
@@ -1172,9 +1174,9 @@ export class GridComponent {
|
|
|
1172
1174
|
this.localization = localization;
|
|
1173
1175
|
this.ctx = ctx;
|
|
1174
1176
|
this.sizingService = sizingService;
|
|
1175
|
-
this.adaptiveService = adaptiveService;
|
|
1176
1177
|
this.adaptiveGridService = adaptiveGridService;
|
|
1177
1178
|
this.rowReorderService = rowReorderService;
|
|
1179
|
+
this.dataMappingService = dataMappingService;
|
|
1178
1180
|
const isValid = validatePackage(packageMetadata);
|
|
1179
1181
|
this.showLicenseWatermark = shouldShowValidationUI(isValid);
|
|
1180
1182
|
this.ctx.grid = this;
|
|
@@ -1281,6 +1283,11 @@ export class GridComponent {
|
|
|
1281
1283
|
this.initSelectionService();
|
|
1282
1284
|
this.updateNavigationMetadata();
|
|
1283
1285
|
}
|
|
1286
|
+
ngDoCheck() {
|
|
1287
|
+
if (!this.isScrollable) {
|
|
1288
|
+
this.rowsToRender = this.dataMappingService.dataMapper(this.view, this.nonLockedLeafColumns, this.lockedLeafColumns, this.detailTemplate, this.showGroupFooters);
|
|
1289
|
+
}
|
|
1290
|
+
}
|
|
1284
1291
|
ngOnChanges(changes) {
|
|
1285
1292
|
if (isChanged("data", changes)) {
|
|
1286
1293
|
this.onDataChange();
|
|
@@ -1976,10 +1983,7 @@ export class GridComponent {
|
|
|
1976
1983
|
if (this.columnList.filter(x => x.locked && x.parent && !x.parent.isLocked).length) {
|
|
1977
1984
|
throw new Error(ColumnConfigurationErrorMessages.lockedParent);
|
|
1978
1985
|
}
|
|
1979
|
-
if (
|
|
1980
|
-
console.warn(GridConfigurationErrorMessages.rowHeightVirtual);
|
|
1981
|
-
}
|
|
1982
|
-
if (!this.rowHeight && this.isVirtual) {
|
|
1986
|
+
if (this.detailRowHeight && !this.isVirtual) {
|
|
1983
1987
|
console.warn(GridConfigurationErrorMessages.rowHeightVirtual);
|
|
1984
1988
|
}
|
|
1985
1989
|
if (!this.detailRowHeight && this.isVirtual && this.detailTemplate) {
|
|
@@ -2026,9 +2030,6 @@ export class GridComponent {
|
|
|
2026
2030
|
}
|
|
2027
2031
|
this.dataStateChange.emit(x);
|
|
2028
2032
|
hasObservers(this.gridStateChange) && this.gridStateChange.emit({ ...this.currentState, ...x });
|
|
2029
|
-
if (this.undoRedoService) {
|
|
2030
|
-
this.undoRedoService.originalEvent = x;
|
|
2031
|
-
}
|
|
2032
2033
|
});
|
|
2033
2034
|
this.stateChangeSubscription.add(merge(this.columnReorder, this.columnResize, this.columnVisibilityChange, this.columnLockedChange, this.columnStickyChange).pipe(flatMap(() => this.ngZone.onStable.pipe(take(1))))
|
|
2034
2035
|
.subscribe(() => this.ngZone.run(() => hasObservers(this.gridStateChange) && this.gridStateChange.emit(this.currentState))));
|
|
@@ -2324,7 +2325,7 @@ export class GridComponent {
|
|
|
2324
2325
|
this.dragTargetContainer?.notify();
|
|
2325
2326
|
this.dropTargetContainer?.notify();
|
|
2326
2327
|
}
|
|
2327
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: GridComponent, deps: [{ token: i1.BrowserSupportService }, { token: i2.SelectionService }, { token: i3.CellSelectionService }, { token: i0.ElementRef }, { token: i4.GroupInfoService }, { token: i5.GroupsService }, { token: i6.ChangeNotificationService }, { token: i7.DetailsService }, { token: i8.EditService }, { token: i9.FilterService }, { token: i10.PDFService }, { token: i11.ResponsiveService }, { token: i0.Renderer2 }, { token: i12.ExcelService }, { token: i0.NgZone }, { token: i13.ScrollSyncService }, { token: i14.DomEventsService }, { token: i15.ColumnResizingService }, { token: i0.ChangeDetectorRef }, { token: i16.ColumnReorderService }, { token: i17.ColumnInfoService }, { token: i18.NavigationService }, { token: i19.SortService }, { token: i20.ScrollRequestService }, { token: i21.LocalizationService }, { token: i22.ContextService }, { token: i23.SizingOptionsService }, { token: i24.
|
|
2328
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: GridComponent, deps: [{ token: i1.BrowserSupportService }, { token: i2.SelectionService }, { token: i3.CellSelectionService }, { token: i0.ElementRef }, { token: i4.GroupInfoService }, { token: i5.GroupsService }, { token: i6.ChangeNotificationService }, { token: i7.DetailsService }, { token: i8.EditService }, { token: i9.FilterService }, { token: i10.PDFService }, { token: i11.ResponsiveService }, { token: i0.Renderer2 }, { token: i12.ExcelService }, { token: i0.NgZone }, { token: i13.ScrollSyncService }, { token: i14.DomEventsService }, { token: i15.ColumnResizingService }, { token: i0.ChangeDetectorRef }, { token: i16.ColumnReorderService }, { token: i17.ColumnInfoService }, { token: i18.NavigationService }, { token: i19.SortService }, { token: i20.ScrollRequestService }, { token: i21.LocalizationService }, { token: i22.ContextService }, { token: i23.SizingOptionsService }, { token: i24.AdaptiveGridService }, { token: i25.RowReorderService }, { token: i26.DataMappingService }], target: i0.ɵɵFactoryTarget.Component });
|
|
2328
2329
|
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: GridComponent, isStandalone: true, selector: "kendo-grid", inputs: { data: "data", pageSize: "pageSize", height: "height", rowHeight: "rowHeight", adaptiveMode: "adaptiveMode", detailRowHeight: "detailRowHeight", skip: "skip", scrollable: "scrollable", selectable: "selectable", sort: "sort", size: "size", trackBy: "trackBy", filter: "filter", group: "group", virtualColumns: "virtualColumns", filterable: "filterable", sortable: "sortable", pageable: "pageable", groupable: "groupable", gridResizable: "gridResizable", rowReorderable: "rowReorderable", navigable: "navigable", autoSize: "autoSize", rowClass: "rowClass", rowSticky: "rowSticky", rowSelected: "rowSelected", isRowSelectable: "isRowSelectable", cellSelected: "cellSelected", resizable: "resizable", reorderable: "reorderable", loading: "loading", columnMenu: "columnMenu", hideHeader: "hideHeader", showInactiveTools: "showInactiveTools", isDetailExpanded: "isDetailExpanded", isGroupExpanded: "isGroupExpanded" }, outputs: { filterChange: "filterChange", pageChange: "pageChange", groupChange: "groupChange", sortChange: "sortChange", selectionChange: "selectionChange", rowReorder: "rowReorder", dataStateChange: "dataStateChange", gridStateChange: "gridStateChange", groupExpand: "groupExpand", groupCollapse: "groupCollapse", detailExpand: "detailExpand", detailCollapse: "detailCollapse", edit: "edit", cancel: "cancel", save: "save", remove: "remove", add: "add", cellClose: "cellClose", cellClick: "cellClick", pdfExport: "pdfExport", excelExport: "excelExport", columnResize: "columnResize", columnReorder: "columnReorder", columnVisibilityChange: "columnVisibilityChange", columnLockedChange: "columnLockedChange", columnStickyChange: "columnStickyChange", scrollBottom: "scrollBottom", contentScroll: "contentScroll" }, host: { properties: { "attr.dir": "this.dir", "class.k-grid": "this.hostClass", "class.k-grid-sm": "this.sizeSmallClass", "class.k-grid-md": "this.sizeMediumClass", "class.k-grid-lockedcolumns": "this.lockedClasses", "class.k-grid-virtual": "this.virtualClasses", "class.k-grid-no-scrollbar": "this.noScrollbarClass", "class.k-grid-resizable": "this.isResizable", "style.minWidth": "this.minWidth", "style.maxWidth": "this.maxWidth", "style.minHeight": "this.minHeight", "style.maxHeight": "this.maxHeight" } }, providers: [
|
|
2329
2330
|
BrowserSupportService,
|
|
2330
2331
|
LocalizationService,
|
|
@@ -2374,7 +2375,8 @@ export class GridComponent {
|
|
|
2374
2375
|
RowspanService,
|
|
2375
2376
|
AdaptiveGridService,
|
|
2376
2377
|
ColumnMenuService,
|
|
2377
|
-
MenuTabbingService
|
|
2378
|
+
MenuTabbingService,
|
|
2379
|
+
DataMappingService
|
|
2378
2380
|
], 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: "adaptiveRenderer", first: true, predicate: AdaptiveRendererComponent, descendants: true }, { propertyName: "footer", predicate: ["footer"], descendants: true }], exportAs: ["kendoGrid"], usesOnChanges: true, ngImport: i0, template: `
|
|
2379
2381
|
<ng-container kendoGridLocalizedMessages
|
|
2380
2382
|
i18n-groupPanelEmpty="kendo.grid.groupPanelEmpty|The label visible in the Grid group panel when it is empty"
|
|
@@ -3026,7 +3028,7 @@ export class GridComponent {
|
|
|
3026
3028
|
<tbody kendoGridTableBody
|
|
3027
3029
|
[isLoading]="loading"
|
|
3028
3030
|
[groups]="group"
|
|
3029
|
-
[
|
|
3031
|
+
[rowsToRender]="rowsToRender"
|
|
3030
3032
|
[skip]="skip"
|
|
3031
3033
|
[columns]="$any(leafColumns)"
|
|
3032
3034
|
[totalColumnsCount]="leafColumns.length"
|
|
@@ -3035,7 +3037,6 @@ export class GridComponent {
|
|
|
3035
3037
|
[filterable]="filterable"
|
|
3036
3038
|
[noRecordsTemplate]="noRecordsTemplate"
|
|
3037
3039
|
[detailTemplate]="detailTemplate"
|
|
3038
|
-
[showGroupFooters]="showGroupFooters"
|
|
3039
3040
|
[trackBy]="trackBy"
|
|
3040
3041
|
[rowClass]="rowClass"
|
|
3041
3042
|
kendoDraggable
|
|
@@ -3142,7 +3143,7 @@ export class GridComponent {
|
|
|
3142
3143
|
<kendo-grid-adaptive-renderer *ngIf="isAdaptiveModeEnabled"></kendo-grid-adaptive-renderer>
|
|
3143
3144
|
|
|
3144
3145
|
<div kendoWatermarkOverlay *ngIf="showLicenseWatermark"></div>
|
|
3145
|
-
`, isInline: true, dependencies: [{ kind: "directive", type: LocalizedMessagesDirective, selector: "[kendoGridLocalizedMessages]" }, { kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: GridToolbarComponent, 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", "
|
|
3146
|
+
`, isInline: true, dependencies: [{ kind: "directive", type: LocalizedMessagesDirective, selector: "[kendoGridLocalizedMessages]" }, { kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: GridToolbarComponent, 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"] }, { 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]" }, { kind: "component", type: i27.CustomMessagesComponent, selector: "kendo-datapager-messages, kendo-pager-messages" }, { kind: "component", type: i27.PagerInfoComponent, selector: "kendo-datapager-info, kendo-pager-info" }, { kind: "component", type: i27.PagerInputComponent, selector: "kendo-datapager-input, kendo-pager-input", inputs: ["showPageText", "size"] }, { kind: "component", type: i27.PagerNextButtonsComponent, selector: "kendo-datapager-next-buttons, kendo-pager-next-buttons", inputs: ["size"] }, { kind: "component", type: i27.PagerNumericButtonsComponent, selector: "kendo-datapager-numeric-buttons, kendo-pager-numeric-buttons", inputs: ["buttonCount", "size"] }, { kind: "component", type: i27.PagerPageSizesComponent, selector: "kendo-datapager-page-sizes, kendo-pager-page-sizes", inputs: ["showItemsText", "pageSizes", "size", "adaptiveMode"] }, { kind: "component", type: i27.PagerPrevButtonsComponent, selector: "kendo-datapager-prev-buttons, kendo-pager-prev-buttons", inputs: ["size"] }, { kind: "directive", type: i27.PagerTemplateDirective, selector: "[kendoDataPagerTemplate], [kendoPagerTemplate]" }, { kind: "component", type: i27.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" }], encapsulation: i0.ViewEncapsulation.None });
|
|
3146
3147
|
}
|
|
3147
3148
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: GridComponent, decorators: [{
|
|
3148
3149
|
type: Component,
|
|
@@ -3198,7 +3199,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
|
|
|
3198
3199
|
RowspanService,
|
|
3199
3200
|
AdaptiveGridService,
|
|
3200
3201
|
ColumnMenuService,
|
|
3201
|
-
MenuTabbingService
|
|
3202
|
+
MenuTabbingService,
|
|
3203
|
+
DataMappingService
|
|
3202
3204
|
],
|
|
3203
3205
|
selector: 'kendo-grid',
|
|
3204
3206
|
template: `
|
|
@@ -3852,7 +3854,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
|
|
|
3852
3854
|
<tbody kendoGridTableBody
|
|
3853
3855
|
[isLoading]="loading"
|
|
3854
3856
|
[groups]="group"
|
|
3855
|
-
[
|
|
3857
|
+
[rowsToRender]="rowsToRender"
|
|
3856
3858
|
[skip]="skip"
|
|
3857
3859
|
[columns]="$any(leafColumns)"
|
|
3858
3860
|
[totalColumnsCount]="leafColumns.length"
|
|
@@ -3861,7 +3863,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
|
|
|
3861
3863
|
[filterable]="filterable"
|
|
3862
3864
|
[noRecordsTemplate]="noRecordsTemplate"
|
|
3863
3865
|
[detailTemplate]="detailTemplate"
|
|
3864
|
-
[showGroupFooters]="showGroupFooters"
|
|
3865
3866
|
[trackBy]="trackBy"
|
|
3866
3867
|
[rowClass]="rowClass"
|
|
3867
3868
|
kendoDraggable
|
|
@@ -3978,7 +3979,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
|
|
|
3978
3979
|
IconWrapperComponent, WatermarkOverlayComponent, ...KENDO_PAGER, NgTemplateOutlet, AdaptiveRendererComponent
|
|
3979
3980
|
]
|
|
3980
3981
|
}]
|
|
3981
|
-
}], ctorParameters: function () { return [{ type: i1.BrowserSupportService }, { type: i2.SelectionService }, { type: i3.CellSelectionService }, { type: i0.ElementRef }, { type: i4.GroupInfoService }, { type: i5.GroupsService }, { type: i6.ChangeNotificationService }, { type: i7.DetailsService }, { type: i8.EditService }, { type: i9.FilterService }, { type: i10.PDFService }, { type: i11.ResponsiveService }, { type: i0.Renderer2 }, { type: i12.ExcelService }, { type: i0.NgZone }, { type: i13.ScrollSyncService }, { type: i14.DomEventsService }, { type: i15.ColumnResizingService }, { type: i0.ChangeDetectorRef }, { type: i16.ColumnReorderService }, { type: i17.ColumnInfoService }, { type: i18.NavigationService }, { type: i19.SortService }, { type: i20.ScrollRequestService }, { type: i21.LocalizationService }, { type: i22.ContextService }, { type: i23.SizingOptionsService }, { type: i24.
|
|
3982
|
+
}], ctorParameters: function () { return [{ type: i1.BrowserSupportService }, { type: i2.SelectionService }, { type: i3.CellSelectionService }, { type: i0.ElementRef }, { type: i4.GroupInfoService }, { type: i5.GroupsService }, { type: i6.ChangeNotificationService }, { type: i7.DetailsService }, { type: i8.EditService }, { type: i9.FilterService }, { type: i10.PDFService }, { type: i11.ResponsiveService }, { type: i0.Renderer2 }, { type: i12.ExcelService }, { type: i0.NgZone }, { type: i13.ScrollSyncService }, { type: i14.DomEventsService }, { type: i15.ColumnResizingService }, { type: i0.ChangeDetectorRef }, { type: i16.ColumnReorderService }, { type: i17.ColumnInfoService }, { type: i18.NavigationService }, { type: i19.SortService }, { type: i20.ScrollRequestService }, { type: i21.LocalizationService }, { type: i22.ContextService }, { type: i23.SizingOptionsService }, { type: i24.AdaptiveGridService }, { type: i25.RowReorderService }, { type: i26.DataMappingService }]; }, propDecorators: { data: [{
|
|
3982
3983
|
type: Input
|
|
3983
3984
|
}], pageSize: [{
|
|
3984
3985
|
type: Input
|
|
@@ -10,7 +10,7 @@ export const packageMetadata = {
|
|
|
10
10
|
productName: 'Kendo UI for Angular',
|
|
11
11
|
productCode: 'KENDOUIANGULAR',
|
|
12
12
|
productCodes: ['KENDOUIANGULAR'],
|
|
13
|
-
publishDate:
|
|
14
|
-
version: '19.1
|
|
13
|
+
publishDate: 1750784754,
|
|
14
|
+
version: '19.2.0-develop.1',
|
|
15
15
|
licensingDocsUrl: 'https://www.telerik.com/kendo-angular-ui/my-license/'
|
|
16
16
|
};
|