@progress/kendo-angular-grid 19.3.0-develop.4 → 19.3.0-develop.41
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/columns/columns-container.d.ts +2 -0
- package/common/data-layout-mode.d.ts +21 -0
- package/common/grid-col-size.d.ts +13 -0
- package/common/provider.service.d.ts +2 -0
- package/common/toolbar-tool-base.directive.d.ts +1 -0
- package/data/data-mapping.service.d.ts +3 -1
- package/directives.d.ts +7 -4
- package/editing/toolbar-editing-tool-base.directive.d.ts +3 -2
- package/editing-directives/editing-directive-base.d.ts +3 -0
- package/editing-directives/in-cell-editing.directive.d.ts +1 -1
- package/editing-directives/reactive-editing.directive.d.ts +1 -1
- package/editing-directives/template-editing.directive.d.ts +1 -1
- package/esm2022/adaptiveness/adaptive-renderer.component.mjs +1 -2
- package/esm2022/column-menu/column-chooser.component.mjs +1 -1
- package/esm2022/column-menu/column-list.component.mjs +8 -7
- package/esm2022/column-menu/column-menu-item.directive.mjs +1 -1
- package/esm2022/column-menu/column-menu.component.mjs +1 -1
- package/esm2022/columns/column-base.mjs +4 -4
- package/esm2022/columns/column.component.mjs +1 -1
- package/esm2022/columns/columns-container.mjs +3 -0
- package/esm2022/common/column-info.service.mjs +1 -1
- package/esm2022/common/data-layout-mode.mjs +5 -0
- package/esm2022/common/grid-col-size.mjs +5 -0
- package/esm2022/common/provider.service.mjs +1 -0
- package/esm2022/common/toolbar-tool-base.directive.mjs +6 -2
- package/esm2022/data/data-mapping.service.mjs +14 -3
- package/esm2022/directives.mjs +8 -1
- package/esm2022/editing/form/form-formfield.component.mjs +2 -2
- package/esm2022/editing/toolbar-editing-tool-base.directive.mjs +5 -0
- package/esm2022/editing-directives/editing-directive-base.mjs +17 -2
- package/esm2022/editing-directives/in-cell-editing.directive.mjs +5 -3
- package/esm2022/editing-directives/reactive-editing.directive.mjs +1 -1
- package/esm2022/editing-directives/template-editing.directive.mjs +1 -1
- package/esm2022/filtering/cell/boolean-filter-cell.component.mjs +1 -1
- package/esm2022/filtering/cell/date-filter-cell.component.mjs +1 -1
- package/esm2022/filtering/cell/filter-cell-operators.component.mjs +3 -4
- package/esm2022/filtering/cell/numeric-filter-cell.component.mjs +1 -1
- package/esm2022/filtering/cell/string-filter-cell.component.mjs +1 -1
- package/esm2022/filtering/filter-row.component.mjs +6 -3
- package/esm2022/filtering/menu/boolean-filter-menu.component.mjs +1 -2
- package/esm2022/filtering/menu/date-filter-menu-input.component.mjs +1 -1
- package/esm2022/filtering/menu/date-filter-menu.component.mjs +1 -1
- package/esm2022/filtering/menu/filter-menu-dropdownlist.directive.mjs +1 -1
- package/esm2022/filtering/menu/filter-menu-input-wrapper.component.mjs +1 -1
- package/esm2022/filtering/menu/filter-menu.component.mjs +1 -1
- package/esm2022/filtering/menu/numeric-filter-menu-input.component.mjs +1 -1
- package/esm2022/filtering/menu/numeric-filter-menu.component.mjs +1 -1
- package/esm2022/filtering/menu/string-filter-menu-input.component.mjs +1 -1
- package/esm2022/filtering/menu/string-filter-menu.component.mjs +1 -1
- package/esm2022/grid.component.mjs +191 -39
- package/esm2022/grid.module.mjs +103 -100
- package/esm2022/grouping/group-header.component.mjs +39 -4
- package/esm2022/grouping/group-panel.component.mjs +13 -8
- package/esm2022/highlight/highlight-item.mjs +5 -0
- package/esm2022/highlight/highlight.directive.mjs +132 -0
- package/esm2022/index.mjs +4 -0
- package/esm2022/localization/messages.mjs +57 -3
- package/esm2022/navigation/navigation-cursor.mjs +7 -1
- package/esm2022/navigation/navigation-metadata.mjs +3 -1
- package/esm2022/navigation/navigation.service.mjs +162 -16
- package/esm2022/navigation/toolbar-tool-name.mjs +2 -1
- package/esm2022/package-metadata.mjs +2 -2
- package/esm2022/pdf/export-element.mjs +14 -5
- package/esm2022/pdf/pdf.component.mjs +3 -1
- package/esm2022/rendering/cell.component.mjs +466 -188
- package/esm2022/rendering/common/col-group.component.mjs +21 -7
- package/esm2022/rendering/details-expand.directive.mjs +5 -2
- package/esm2022/rendering/footer/footer.component.mjs +117 -54
- package/esm2022/rendering/header/header.component.mjs +13 -9
- package/esm2022/rendering/list.component.mjs +19 -12
- package/esm2022/rendering/loading-template.directive.mjs +1 -0
- package/esm2022/rendering/table-body.component.mjs +394 -174
- package/esm2022/rendering/toolbar/tools/ai-assistant/ai-assistant.component.mjs +305 -0
- package/esm2022/rendering/toolbar/tools/ai-assistant/ai-tool.directive.mjs +269 -0
- package/esm2022/rendering/toolbar/tools/ai-assistant/utils.mjs +74 -0
- package/esm2022/rendering/toolbar/tools/column-chooser-tool.directive.mjs +0 -3
- package/esm2022/rendering/toolbar/tools/group-toolbar-tool.component.mjs +11 -9
- package/esm2022/rendering/toolbar/tools/select-all-command-tool.directive.mjs +93 -0
- package/esm2022/row-reordering/row-reorder.service.mjs +2 -2
- package/esm2022/row-reordering/utils.mjs +6 -4
- package/esm2022/selection/cell-selection.service.mjs +6 -3
- package/esm2022/selection/pair-set.mjs +87 -10
- package/esm2022/selection/selection-checkbox.directive.mjs +1 -1
- package/esm2022/selection/selection.directive.mjs +1 -1
- package/esm2022/utils.mjs +0 -4
- package/fesm2022/progress-kendo-angular-grid.mjs +2568 -642
- package/filtering/filter-row.component.d.ts +1 -0
- package/grid.component.d.ts +29 -1
- package/grid.module.d.ts +102 -99
- package/grouping/group-header.component.d.ts +1 -0
- package/grouping/group-panel.component.d.ts +1 -1
- package/highlight/highlight-item.d.ts +17 -0
- package/highlight/highlight.directive.d.ts +56 -0
- package/index.d.ts +8 -1
- package/localization/messages.d.ts +39 -3
- package/navigation/focus-group.d.ts +1 -1
- package/navigation/navigation-metadata.d.ts +2 -1
- package/navigation/navigation.service.d.ts +6 -0
- package/navigation/toolbar-tool-name.d.ts +1 -0
- package/package.json +22 -21
- package/rendering/cell.component.d.ts +30 -15
- package/rendering/common/col-group.component.d.ts +5 -0
- package/rendering/details-expand.directive.d.ts +5 -2
- package/rendering/footer/footer.component.d.ts +4 -1
- package/rendering/header/header.component.d.ts +1 -0
- package/rendering/list.component.d.ts +4 -1
- package/rendering/loading-template.directive.d.ts +1 -0
- package/rendering/table-body.component.d.ts +3 -1
- package/rendering/toolbar/tools/ai-assistant/ai-assistant.component.d.ts +49 -0
- package/rendering/toolbar/tools/ai-assistant/ai-tool.directive.d.ts +115 -0
- package/rendering/toolbar/tools/ai-assistant/utils.d.ts +124 -0
- package/rendering/toolbar/tools/column-chooser-tool.directive.d.ts +0 -1
- package/rendering/toolbar/tools/select-all-command-tool.directive.d.ts +36 -0
- package/row-reordering/row-reorder.service.d.ts +1 -1
- package/row-reordering/utils.d.ts +1 -1
- package/schematics/ngAdd/index.js +4 -4
- package/selection/cell-selection.service.d.ts +1 -0
- package/selection/pair-set.d.ts +36 -8
- package/selection/selection.directive.d.ts +1 -1
- package/utils.d.ts +0 -4
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
* Copyright © 2025 Progress Software Corporation. All rights reserved.
|
|
3
3
|
* Licensed under commercial license. See LICENSE.md in the project root for more information
|
|
4
4
|
*-------------------------------------------------------------------------------------------*/
|
|
5
|
-
import { Component, ContentChildren, ElementRef, EventEmitter, HostBinding, Input, Output, Renderer2, QueryList, ViewChild, isDevMode, NgZone, ViewChildren, ChangeDetectorRef, ViewEncapsulation, ViewContainerRef } from '@angular/core';
|
|
5
|
+
import { Component, ContentChildren, ElementRef, EventEmitter, HostBinding, Input, Output, Renderer2, QueryList, ViewChild, isDevMode, NgZone, ViewChildren, ChangeDetectorRef, ViewEncapsulation, ViewContainerRef, ContentChild } from '@angular/core';
|
|
6
6
|
import { ZoneAwareEventEmitter } from './common/event-emitter';
|
|
7
7
|
import { FormControl, FormGroup } from '@angular/forms';
|
|
8
8
|
import { merge } from 'rxjs';
|
|
@@ -71,7 +71,7 @@ import { CellLoadingTemplateDirective } from './rendering/cell-loading.template.
|
|
|
71
71
|
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
|
-
import { DraggableDirective, WatermarkOverlayComponent, guid, shouldShowValidationUI } from '@progress/kendo-angular-common';
|
|
74
|
+
import { DraggableDirective, WatermarkOverlayComponent, guid, shouldShowValidationUI, getLicenseMessage } from '@progress/kendo-angular-common';
|
|
75
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';
|
|
@@ -101,6 +101,7 @@ import { AdaptiveRendererComponent } from './adaptiveness/adaptive-renderer.comp
|
|
|
101
101
|
import { ColumnMenuService } from './column-menu/column-menu.service';
|
|
102
102
|
import { MenuTabbingService } from './filtering/menu/menu-tabbing.service';
|
|
103
103
|
import { DataMappingService } from './data/data-mapping.service';
|
|
104
|
+
import { AIAssistantToolbarDirective } from './rendering/toolbar/tools/ai-assistant/ai-tool.directive';
|
|
104
105
|
import * as i0 from "@angular/core";
|
|
105
106
|
import * as i1 from "./layout/browser-support.service";
|
|
106
107
|
import * as i2 from "./selection/selection.service";
|
|
@@ -141,7 +142,7 @@ const handleExpandCollapseGroupsService = (service, expandEmitter, collapseEmitt
|
|
|
141
142
|
.subscribe((x) => x.expand ? expandEmitter.emit(map(x)) : collapseEmitter.emit(map(x))));
|
|
142
143
|
const handleExpandCollapseDetailsService = (service, expandEmitter, collapseEmitter, map) => (service.changes.pipe(filter(({ dataItem }) => isPresent(dataItem)))
|
|
143
144
|
.subscribe((x) => x.expand ? expandEmitter.emit(map(x)) : collapseEmitter.emit(map(x))));
|
|
144
|
-
const isInEditedCell = (element, gridElement) => closest(element, matchesClasses('k-grid-edit-cell')) &&
|
|
145
|
+
const isInEditedCell = (element, gridElement, isStacked = false) => (closest(element, matchesClasses('k-grid-edit-cell')) || (isStacked && closest(element, matchesClasses('k-grid-stack-edit-cell')))) &&
|
|
145
146
|
closest(element, matchesNodeName('kendo-grid')) === gridElement;
|
|
146
147
|
const NOTIFY_DELAY = 500;
|
|
147
148
|
/**
|
|
@@ -388,7 +389,7 @@ export class GridComponent {
|
|
|
388
389
|
* @hidden
|
|
389
390
|
*/
|
|
390
391
|
get isLocked() {
|
|
391
|
-
return this.lockedLeafColumns.length > 0;
|
|
392
|
+
return (this.lockedLeafColumns.length > 0 && !this.isStacked);
|
|
392
393
|
}
|
|
393
394
|
/**
|
|
394
395
|
* @hidden
|
|
@@ -414,7 +415,9 @@ export class GridComponent {
|
|
|
414
415
|
* @hidden
|
|
415
416
|
*/
|
|
416
417
|
get showGroupPanel() {
|
|
417
|
-
|
|
418
|
+
const isGroupable = this.groupable && this.groupable.enabled !== false;
|
|
419
|
+
const isGrouped = this.group?.length > 0;
|
|
420
|
+
return this.isStacked ? isGroupable && isGrouped : isGroupable;
|
|
418
421
|
}
|
|
419
422
|
/**
|
|
420
423
|
* @hidden
|
|
@@ -692,6 +695,12 @@ export class GridComponent {
|
|
|
692
695
|
get isGroupExpanded() {
|
|
693
696
|
return this.groupsService.userCallback;
|
|
694
697
|
}
|
|
698
|
+
/**
|
|
699
|
+
* Sets the Grid data layout display mode.
|
|
700
|
+
*
|
|
701
|
+
* @default 'columns'
|
|
702
|
+
*/
|
|
703
|
+
dataLayoutMode = 'columns';
|
|
695
704
|
/**
|
|
696
705
|
* Fires when the Grid data is filtered through the UI and the filter descriptor changes.
|
|
697
706
|
*/
|
|
@@ -819,8 +828,11 @@ export class GridComponent {
|
|
|
819
828
|
get sizeMediumClass() {
|
|
820
829
|
return this.size === 'medium' || !this.size;
|
|
821
830
|
}
|
|
831
|
+
get stackedClass() {
|
|
832
|
+
return this.dataLayoutMode === 'stacked';
|
|
833
|
+
}
|
|
822
834
|
get lockedClasses() {
|
|
823
|
-
return this.lockedLeafColumns.length > 0;
|
|
835
|
+
return this.lockedLeafColumns.length > 0 && !this.isStacked;
|
|
824
836
|
}
|
|
825
837
|
get virtualClasses() {
|
|
826
838
|
return this.isVirtual;
|
|
@@ -914,6 +926,7 @@ export class GridComponent {
|
|
|
914
926
|
this._customToolbarTemplate = customToolbarTemplate;
|
|
915
927
|
}
|
|
916
928
|
columnMenuTemplates;
|
|
929
|
+
aiAssistantToolbarTool;
|
|
917
930
|
lockedHeader;
|
|
918
931
|
header;
|
|
919
932
|
footer = new QueryList();
|
|
@@ -921,6 +934,7 @@ export class GridComponent {
|
|
|
921
934
|
dragTargetContainer;
|
|
922
935
|
dropTargetContainer;
|
|
923
936
|
dialogContainer;
|
|
937
|
+
windowContainer;
|
|
924
938
|
adaptiveRenderer;
|
|
925
939
|
listComponent;
|
|
926
940
|
get scrollbarWidth() {
|
|
@@ -973,6 +987,10 @@ export class GridComponent {
|
|
|
973
987
|
selectionDirective = false;
|
|
974
988
|
ariaRootId = `k-${guid()}`;
|
|
975
989
|
showLicenseWatermark = false;
|
|
990
|
+
/**
|
|
991
|
+
* @hidden
|
|
992
|
+
*/
|
|
993
|
+
licenseMessage;
|
|
976
994
|
columnsContainer = new ColumnsContainer(() => this.columnList.filterHierarchy(column => {
|
|
977
995
|
if (!isUniversal()) {
|
|
978
996
|
column.matchesMedia = this.matchesMedia(column);
|
|
@@ -1038,6 +1056,12 @@ export class GridComponent {
|
|
|
1038
1056
|
get isScrollable() {
|
|
1039
1057
|
return this.scrollable !== 'none';
|
|
1040
1058
|
}
|
|
1059
|
+
/**
|
|
1060
|
+
* @hidden
|
|
1061
|
+
*/
|
|
1062
|
+
get isStacked() {
|
|
1063
|
+
return typeof this.dataLayoutMode === 'string' ? this.dataLayoutMode !== 'columns' : this.dataLayoutMode.mode !== 'columns';
|
|
1064
|
+
}
|
|
1041
1065
|
get visibleColumns() {
|
|
1042
1066
|
return this.columnsContainer.allColumns;
|
|
1043
1067
|
}
|
|
@@ -1075,11 +1099,14 @@ export class GridComponent {
|
|
|
1075
1099
|
return this.nonLockedLeafColumns;
|
|
1076
1100
|
}
|
|
1077
1101
|
get lockedWidth() {
|
|
1102
|
+
if (this.isStacked) {
|
|
1103
|
+
return 0;
|
|
1104
|
+
}
|
|
1078
1105
|
const groupCellsWidth = this.group.length * GROUP_CELL_WIDTH;
|
|
1079
1106
|
return expandColumns(this.lockedLeafColumns.toArray()).reduce((prev, curr) => prev + (curr.width || 0), groupCellsWidth);
|
|
1080
1107
|
}
|
|
1081
1108
|
get nonLockedWidth() {
|
|
1082
|
-
if ((!this.rtl && this.lockedLeafColumns.length) || this.virtualColumns) {
|
|
1109
|
+
if (((!this.rtl && this.lockedLeafColumns.length) || this.virtualColumns) && !this.isStacked) {
|
|
1083
1110
|
return !this.virtualColumns ? this.columnsContainer.unlockedWidth :
|
|
1084
1111
|
this.leafViewportColumns.reduce((acc, column) => acc + (column.width || 0), 0);
|
|
1085
1112
|
}
|
|
@@ -1105,7 +1132,7 @@ export class GridComponent {
|
|
|
1105
1132
|
* @hidden
|
|
1106
1133
|
*/
|
|
1107
1134
|
getDefaultSelectors(type) {
|
|
1108
|
-
return this.rowReorderService.defaultSelectors[type];
|
|
1135
|
+
return this.rowReorderService.defaultSelectors(this.isStacked)[type];
|
|
1109
1136
|
}
|
|
1110
1137
|
/**
|
|
1111
1138
|
* @hidden
|
|
@@ -1176,8 +1203,10 @@ export class GridComponent {
|
|
|
1176
1203
|
this.rowReorderService = rowReorderService;
|
|
1177
1204
|
this.dataMappingService = dataMappingService;
|
|
1178
1205
|
const isValid = validatePackage(packageMetadata);
|
|
1206
|
+
this.licenseMessage = getLicenseMessage(packageMetadata);
|
|
1179
1207
|
this.showLicenseWatermark = shouldShowValidationUI(isValid);
|
|
1180
1208
|
this.ctx.grid = this;
|
|
1209
|
+
this.ctx.navigable = typeof this.navigable === 'boolean' ? this.navigable : this.navigable.includes('table');
|
|
1181
1210
|
this.groupChange = new ZoneAwareEventEmitter(this.ngZone);
|
|
1182
1211
|
this.cellClick = new ZoneAwareEventEmitter(this.ngZone);
|
|
1183
1212
|
this.columnResize = new ZoneAwareEventEmitter(this.ngZone);
|
|
@@ -1215,6 +1244,7 @@ export class GridComponent {
|
|
|
1215
1244
|
this.columnReorderSubscription = this.columnReorderService
|
|
1216
1245
|
.changes.subscribe(this.reorder.bind(this));
|
|
1217
1246
|
this.columnRangeChangeSubscription = this.columnInfoService.columnRangeChange.subscribe(this.onColumnRangeChange.bind(this));
|
|
1247
|
+
this.columnsContainer.isStacked = this.isStacked;
|
|
1218
1248
|
}
|
|
1219
1249
|
/**
|
|
1220
1250
|
* Expands the master row at the specified data row index ([see example]({% slug hierarchy_grid %})).
|
|
@@ -1335,6 +1365,15 @@ export class GridComponent {
|
|
|
1335
1365
|
}
|
|
1336
1366
|
}
|
|
1337
1367
|
}
|
|
1368
|
+
if (isChanged('dataLayoutMode', changes)) {
|
|
1369
|
+
if (this.isStacked) {
|
|
1370
|
+
this.generateStackedColumns();
|
|
1371
|
+
}
|
|
1372
|
+
else {
|
|
1373
|
+
this.stackedColumns = { columns: [], areDefault: false };
|
|
1374
|
+
}
|
|
1375
|
+
this.columnsContainer.isStacked = this.isStacked;
|
|
1376
|
+
}
|
|
1338
1377
|
}
|
|
1339
1378
|
ngAfterContentInit() {
|
|
1340
1379
|
this.shouldGenerateColumns = !this.columns.length;
|
|
@@ -1361,6 +1400,7 @@ export class GridComponent {
|
|
|
1361
1400
|
if (this.navigable.length) {
|
|
1362
1401
|
this.navigationService.init(this.navigationMetadata(), this.navigable);
|
|
1363
1402
|
}
|
|
1403
|
+
this.isStacked && this.generateStackedColumns();
|
|
1364
1404
|
}
|
|
1365
1405
|
ngOnDestroy() {
|
|
1366
1406
|
if (this.selectionSubscription) {
|
|
@@ -1506,6 +1546,7 @@ export class GridComponent {
|
|
|
1506
1546
|
*/
|
|
1507
1547
|
closeRow(index) {
|
|
1508
1548
|
this.editService.close(index);
|
|
1549
|
+
this.isStacked && (this.navigationService.stackedCellEntered = false);
|
|
1509
1550
|
}
|
|
1510
1551
|
/**
|
|
1511
1552
|
* Creates a new row editor ([see example]({% slug inline_editing_grid %}#toc-adding-records-1)).
|
|
@@ -1531,7 +1572,7 @@ export class GridComponent {
|
|
|
1531
1572
|
editCell(rowIndex, column, group) {
|
|
1532
1573
|
const instance = this.columnInstance(column);
|
|
1533
1574
|
this.editService.editCell(rowIndex, instance, group);
|
|
1534
|
-
this.focusEditElement('.k-grid-edit-cell');
|
|
1575
|
+
this.focusEditElement(this.isStacked ? '.k-grid-stack-edit-cell' : '.k-grid-edit-cell');
|
|
1535
1576
|
}
|
|
1536
1577
|
/**
|
|
1537
1578
|
* Closes the current cell in edit mode and fires the [`cellClose`]({% slug api_grid_gridcomponent %}#toc-cellclose) event.
|
|
@@ -1912,7 +1953,8 @@ export class GridComponent {
|
|
|
1912
1953
|
isRowSelectable: this.isRowSelectable,
|
|
1913
1954
|
selectable: this.selectable,
|
|
1914
1955
|
view: this.view,
|
|
1915
|
-
columns: cellSelectionMode ? this.columnList.toArray() : undefined
|
|
1956
|
+
columns: cellSelectionMode ? this.columnList.toArray() : undefined,
|
|
1957
|
+
isStacked: this.isStacked
|
|
1916
1958
|
});
|
|
1917
1959
|
if (!this.selectionDirective && !this.selectableSettings.enabled) {
|
|
1918
1960
|
this.defaultSelection.reset();
|
|
@@ -1966,7 +2008,7 @@ export class GridComponent {
|
|
|
1966
2008
|
if (this.lockedLeafColumns.length && !this.nonLockedLeafColumns.length) {
|
|
1967
2009
|
console.warn(GridConfigurationErrorMessages.nonLockedColumnPresent);
|
|
1968
2010
|
}
|
|
1969
|
-
if ((locked || this.virtualColumns) && expandColumns(this.columnList.toArray()).filter(column => !column.width && !isColumnGroupComponent(column)).length) {
|
|
2011
|
+
if (!this.isStacked && (locked || this.virtualColumns) && expandColumns(this.columnList.toArray()).filter(column => !column.width && !isColumnGroupComponent(column)).length) {
|
|
1970
2012
|
console.warn(ColumnConfigurationErrorMessages.requiredWidth(locked ? 'Locked' : 'Virtual'));
|
|
1971
2013
|
}
|
|
1972
2014
|
if (locked && !this.isScrollable) {
|
|
@@ -1990,7 +2032,7 @@ export class GridComponent {
|
|
|
1990
2032
|
if (!this.detailRowHeight && this.isVirtual && this.detailTemplate) {
|
|
1991
2033
|
console.warn(GridConfigurationErrorMessages.rowHeightVirtual);
|
|
1992
2034
|
}
|
|
1993
|
-
if (stickyColumns && expandColumns(this.columnList.toArray()).filter(column => !column.width && !isColumnGroupComponent(column)).length) {
|
|
2035
|
+
if (!this.isStacked && stickyColumns && expandColumns(this.columnList.toArray()).filter(column => !column.width && !isColumnGroupComponent(column)).length) {
|
|
1994
2036
|
console.warn(ColumnConfigurationErrorMessages.requiredWidth('Sticky'));
|
|
1995
2037
|
}
|
|
1996
2038
|
if (this.rowSticky && this.scrollable === 'virtual') {
|
|
@@ -2014,6 +2056,47 @@ export class GridComponent {
|
|
|
2014
2056
|
}));
|
|
2015
2057
|
}
|
|
2016
2058
|
}
|
|
2059
|
+
/**
|
|
2060
|
+
* @hidden
|
|
2061
|
+
*/
|
|
2062
|
+
stackedColumns = { columns: [], areDefault: false };
|
|
2063
|
+
generateStackedColumns() {
|
|
2064
|
+
if (!this.isStacked || !isPresent(this.dataLayoutMode)) {
|
|
2065
|
+
return;
|
|
2066
|
+
}
|
|
2067
|
+
this.stackedColumns.columns = [];
|
|
2068
|
+
if (typeof this.dataLayoutMode === 'object') {
|
|
2069
|
+
if (this.dataLayoutMode.mode === 'stacked' && this.dataLayoutMode.stackedCols) {
|
|
2070
|
+
const columns = this.dataLayoutMode.stackedCols;
|
|
2071
|
+
if (typeof columns === 'number') {
|
|
2072
|
+
for (let i = 0; i < columns; i++) {
|
|
2073
|
+
const currCol = { width: `${this.wrapper.nativeElement.clientWidth / columns}px` };
|
|
2074
|
+
this.stackedColumns.columns.push(currCol);
|
|
2075
|
+
}
|
|
2076
|
+
this.stackedColumns.areDefault = true;
|
|
2077
|
+
}
|
|
2078
|
+
else if (Array.isArray(columns)) {
|
|
2079
|
+
this.stackedColumns.columns = columns.map((colSize) => {
|
|
2080
|
+
const stackedColumn = {};
|
|
2081
|
+
if (typeof colSize === 'number') {
|
|
2082
|
+
stackedColumn.width = `${colSize}px`;
|
|
2083
|
+
}
|
|
2084
|
+
else if (typeof colSize === 'object' && colSize?.width) {
|
|
2085
|
+
stackedColumn.width = typeof colSize.width === 'number' ? `${colSize.width}px` : colSize.width;
|
|
2086
|
+
}
|
|
2087
|
+
else if (typeof colSize === 'string') {
|
|
2088
|
+
stackedColumn.width = colSize;
|
|
2089
|
+
}
|
|
2090
|
+
return stackedColumn;
|
|
2091
|
+
});
|
|
2092
|
+
this.stackedColumns.areDefault = false;
|
|
2093
|
+
}
|
|
2094
|
+
}
|
|
2095
|
+
}
|
|
2096
|
+
else {
|
|
2097
|
+
this.stackedColumns = { columns: [{ width: this.wrapper.nativeElement.clientWidth }], areDefault: true };
|
|
2098
|
+
}
|
|
2099
|
+
}
|
|
2017
2100
|
attachStateChangesEmitter() {
|
|
2018
2101
|
this.stateChangeSubscription =
|
|
2019
2102
|
merge(this.pageChange.pipe(map(x => ({
|
|
@@ -2096,14 +2179,14 @@ export class GridComponent {
|
|
|
2096
2179
|
!closest(args.target, matchesClasses('k-animation-container k-grid-ignore-click')) &&
|
|
2097
2180
|
!(activeElement &&
|
|
2098
2181
|
(closest(activeElement, matchesClasses('k-animation-container')) ||
|
|
2099
|
-
isInEditedCell(activeElement, this.wrapper.nativeElement)))) {
|
|
2182
|
+
isInEditedCell(activeElement, this.wrapper.nativeElement, this.isStacked)))) {
|
|
2100
2183
|
this.editService.closeCell(args);
|
|
2101
2184
|
}
|
|
2102
2185
|
});
|
|
2103
2186
|
const windowBlurSubscription = this.renderer.listen('window', 'blur', (args) => {
|
|
2104
2187
|
const activeElement = document.activeElement;
|
|
2105
2188
|
if (activeElement && !(matchesNodeName('input')(activeElement) && activeElement.type === 'file' &&
|
|
2106
|
-
isInEditedCell(activeElement, this.wrapper.nativeElement))) {
|
|
2189
|
+
isInEditedCell(activeElement, this.wrapper.nativeElement, this.isStacked))) {
|
|
2107
2190
|
this.editService.closeCell(args);
|
|
2108
2191
|
}
|
|
2109
2192
|
this.domEvents.windowBlur.emit(args);
|
|
@@ -2222,8 +2305,8 @@ export class GridComponent {
|
|
|
2222
2305
|
const dataRows = isVirtual ? this.view.total : pageSize;
|
|
2223
2306
|
const addRowOffset = this.editService.hasNewItem ? 1 : 0;
|
|
2224
2307
|
const filterRowOffset = hasFilterRow(this.filterable) ? 1 : 0;
|
|
2225
|
-
const headerRows = this.totalColumnLevels + 1 + filterRowOffset + addRowOffset;
|
|
2226
|
-
return new NavigationMetadata(dataRows, headerRows, isVirtual, this.hasPager, isPresent(this.detailTemplate), this.wrapper, this.virtualColumns, this.columnsContainer);
|
|
2308
|
+
const headerRows = this.isStacked ? 0 : this.totalColumnLevels + 1 + filterRowOffset + addRowOffset;
|
|
2309
|
+
return new NavigationMetadata(dataRows, headerRows, isVirtual, this.hasPager, isPresent(this.detailTemplate), this.wrapper, this.virtualColumns, this.columnsContainer, this.isStacked);
|
|
2227
2310
|
}
|
|
2228
2311
|
applyAutoSize() {
|
|
2229
2312
|
const cols = this.columns.filter((c) => this.autoSize ? c.autoSize !== false : c.autoSize);
|
|
@@ -2328,7 +2411,7 @@ export class GridComponent {
|
|
|
2328
2411
|
this.dropTargetContainer?.notify();
|
|
2329
2412
|
}
|
|
2330
2413
|
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 });
|
|
2331
|
-
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: [
|
|
2414
|
+
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", dataLayoutMode: "dataLayoutMode" }, 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-stack": "this.stackedClass", "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: [
|
|
2332
2415
|
BrowserSupportService,
|
|
2333
2416
|
LocalizationService,
|
|
2334
2417
|
ColumnInfoService,
|
|
@@ -2379,7 +2462,7 @@ export class GridComponent {
|
|
|
2379
2462
|
ColumnMenuService,
|
|
2380
2463
|
MenuTabbingService,
|
|
2381
2464
|
DataMappingService
|
|
2382
|
-
], 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: "listComponent", first: true, predicate: ListComponent, descendants: true }, { propertyName: "footer", predicate: ["footer"], descendants: true }], exportAs: ["kendoGrid"], usesOnChanges: true, ngImport: i0, template: `
|
|
2465
|
+
], queries: [{ propertyName: "aiAssistantToolbarTool", first: true, predicate: AIAssistantToolbarDirective, descendants: true }, { 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: "footer", predicate: ["footer"], descendants: true }], exportAs: ["kendoGrid"], usesOnChanges: true, ngImport: i0, template: `
|
|
2383
2466
|
<ng-container kendoGridLocalizedMessages
|
|
2384
2467
|
i18n-groupPanelEmpty="kendo.grid.groupPanelEmpty|The label visible in the Grid group panel when it is empty"
|
|
2385
2468
|
groupPanelEmpty="Drag a column header and drop it here to group by that column"
|
|
@@ -2612,10 +2695,10 @@ export class GridComponent {
|
|
|
2612
2695
|
i18n-columnsReset="kendo.grid.columnsReset|The text shown in the column menu or column chooser for the columns reset button"
|
|
2613
2696
|
columnsReset="Reset"
|
|
2614
2697
|
|
|
2615
|
-
i18n-detailExpand="kendo.grid.detailExpand|The title of the expand icon of detail rows."
|
|
2698
|
+
i18n-detailExpand="kendo.grid.detailExpand|The title of the expand icon of detail rows. Applies also to the expand button text in stacked mode."
|
|
2616
2699
|
detailExpand="Expand Details"
|
|
2617
2700
|
|
|
2618
|
-
i18n-detailCollapse="kendo.grid.detailCollapse|The title of the collapse icon of detail rows."
|
|
2701
|
+
i18n-detailCollapse="kendo.grid.detailCollapse|The title of the collapse icon of detail rows. Applies also to the collapse button text in stacked mode."
|
|
2619
2702
|
detailCollapse="Collapse Details"
|
|
2620
2703
|
|
|
2621
2704
|
i18n-filterDateToday="kendo.grid.filterDateToday|The text of the Today button of the Date filter."
|
|
@@ -2725,6 +2808,33 @@ export class GridComponent {
|
|
|
2725
2808
|
|
|
2726
2809
|
i18n-externalEditingCancelText="kendo.grid.externalEditingCancelText|The text of the external editing form Cancel button"
|
|
2727
2810
|
externalEditingCancelText="Cancel"
|
|
2811
|
+
|
|
2812
|
+
i18n-aiAssistantToolbarToolText="kendo.grid.aiAssistantToolbarToolText|The text of the AI Assistant toolbar tool"
|
|
2813
|
+
aiAssistantToolbarToolText="AI Assistant"
|
|
2814
|
+
|
|
2815
|
+
i18n-aiAssistantWindowTitle="kendo.grid.aiAssistantWindowTitle|The text of the AI Assistant Window title"
|
|
2816
|
+
aiAssistantWindowTitle="AI Assistant"
|
|
2817
|
+
|
|
2818
|
+
i18n-aiAssistantApplyButtonText="kendo.grid.aiAssistantApplyButtonText|The text of the AI Assistant Apply button"
|
|
2819
|
+
aiAssistantApplyButtonText="Apply"
|
|
2820
|
+
|
|
2821
|
+
i18n-aiAssistantWindowCloseTitle="kendo.grid.aiAssistantWindowCloseTitle|The title of the AI Assistant Window close button"
|
|
2822
|
+
aiAssistantWindowCloseTitle="Close"
|
|
2823
|
+
|
|
2824
|
+
i18n-aiAssistantWindowMaximizeTitle="kendo.grid.aiAssistantWindowMaximizeTitle|The title of the AI Assistant Window maximize button"
|
|
2825
|
+
aiAssistantWindowMaximizeTitle="Maximize"
|
|
2826
|
+
|
|
2827
|
+
i18n-aiAssistantWindowMinimizeTitle="kendo.grid.aiAssistantWindowMinimizeTitle|The title of the AI Assistant Window minimize button"
|
|
2828
|
+
aiAssistantWindowMinimizeTitle="Minimize"
|
|
2829
|
+
|
|
2830
|
+
i18n-aiAssistantWindowRestoreTitle="kendo.grid.aiAssistantWindowRestoreTitle|The title of the AI Assistant Window restore button"
|
|
2831
|
+
aiAssistantWindowRestoreTitle="Restore"
|
|
2832
|
+
|
|
2833
|
+
i18n-aiAssistantOutputCardTitle="kendo.grid.aiAssistantOutputCardTitle|The title of the AI Assistant Prompt Output Card"
|
|
2834
|
+
aiAssistantOutputCardTitle="Generated with AI"
|
|
2835
|
+
|
|
2836
|
+
i18n-aiAssistantOutputCardBodyContent="kendo.grid.aiAssistantOutputCardBodyContent|The success message dispayed in the AI Assistant Prompt Output Card's body"
|
|
2837
|
+
aiAssistantOutputCardBodyContent="Operation is successful. Data is:"
|
|
2728
2838
|
>
|
|
2729
2839
|
</ng-container>
|
|
2730
2840
|
<kendo-grid-toolbar
|
|
@@ -2810,7 +2920,7 @@ export class GridComponent {
|
|
|
2810
2920
|
[attr.aria-rowcount]="ariaRowCount"
|
|
2811
2921
|
[attr.aria-colcount]="ariaColCount">
|
|
2812
2922
|
<ng-container *ngIf="isScrollable">
|
|
2813
|
-
<div *ngIf="!hideHeader"
|
|
2923
|
+
<div *ngIf="!hideHeader && !isStacked"
|
|
2814
2924
|
class="k-grid-header"
|
|
2815
2925
|
[class.k-grid-draggable-header]="groupable || reorderable"
|
|
2816
2926
|
role="presentation"
|
|
@@ -2934,7 +3044,7 @@ export class GridComponent {
|
|
|
2934
3044
|
class="k-grid-footer"
|
|
2935
3045
|
[style.padding]="headerPadding">
|
|
2936
3046
|
<div
|
|
2937
|
-
*ngIf="lockedLeafColumns.length"
|
|
3047
|
+
*ngIf="lockedLeafColumns.length && !isStacked"
|
|
2938
3048
|
class="k-grid-footer-locked"
|
|
2939
3049
|
[style.width.px]="lockedWidth">
|
|
2940
3050
|
<table
|
|
@@ -2945,7 +3055,7 @@ export class GridComponent {
|
|
|
2945
3055
|
[style.width.px]="lockedWidth"
|
|
2946
3056
|
kendoGridTable
|
|
2947
3057
|
[size]="size">
|
|
2948
|
-
<colgroup kendoGridColGroup
|
|
3058
|
+
<colgroup kendoGridColGroup *ngIf="!isStacked"
|
|
2949
3059
|
[columns]="$any(lockedLeafColumns)"
|
|
2950
3060
|
[groups]="group"
|
|
2951
3061
|
[detailTemplate]="detailTemplate">
|
|
@@ -2963,7 +3073,7 @@ export class GridComponent {
|
|
|
2963
3073
|
</div>
|
|
2964
3074
|
<div #footer
|
|
2965
3075
|
class="k-grid-footer-wrap" data-scrollable
|
|
2966
|
-
[kendoGridResizableContainer]="lockedLeafColumns.length > 0"
|
|
3076
|
+
[kendoGridResizableContainer]="lockedLeafColumns.length > 0 && !isStacked"
|
|
2967
3077
|
[lockedWidth]="lockedWidth + scrollbarWidth + 3">
|
|
2968
3078
|
<table
|
|
2969
3079
|
role="presentation"
|
|
@@ -2972,7 +3082,7 @@ export class GridComponent {
|
|
|
2972
3082
|
kendoGridTable
|
|
2973
3083
|
kendoGridResizableTable
|
|
2974
3084
|
[size]="size">
|
|
2975
|
-
<colgroup kendoGridColGroup
|
|
3085
|
+
<colgroup kendoGridColGroup *ngIf="!isStacked"
|
|
2976
3086
|
[columns]="$any(headerLeafColumns)"
|
|
2977
3087
|
[groups]="isLocked ? [] : group"
|
|
2978
3088
|
[detailTemplate]="detailTemplate">
|
|
@@ -2982,7 +3092,7 @@ export class GridComponent {
|
|
|
2982
3092
|
[scrollable]="true"
|
|
2983
3093
|
[groups]="isLocked ? [] : group"
|
|
2984
3094
|
[columns]="$any(headerColumns)"
|
|
2985
|
-
[lockedColumnsCount]="lockedLeafColumns.length"
|
|
3095
|
+
[lockedColumnsCount]="isStacked ? 0 : lockedLeafColumns.length"
|
|
2986
3096
|
[detailTemplate]="detailTemplate"
|
|
2987
3097
|
[totalColumns]="columnsContainer"
|
|
2988
3098
|
[totalColumnsCount]="leafColumns.length">
|
|
@@ -3006,7 +3116,7 @@ export class GridComponent {
|
|
|
3006
3116
|
[detailTemplate]="detailTemplate">
|
|
3007
3117
|
</colgroup>
|
|
3008
3118
|
<thead kendoGridHeader
|
|
3009
|
-
*ngIf="!hideHeader"
|
|
3119
|
+
*ngIf="!hideHeader && !isStacked"
|
|
3010
3120
|
class="k-grid-header"
|
|
3011
3121
|
[class.k-grid-draggable-header]="groupable || reorderable"
|
|
3012
3122
|
role="rowgroup"
|
|
@@ -3144,8 +3254,10 @@ export class GridComponent {
|
|
|
3144
3254
|
|
|
3145
3255
|
<kendo-grid-adaptive-renderer *ngIf="isAdaptiveModeEnabled"></kendo-grid-adaptive-renderer>
|
|
3146
3256
|
|
|
3147
|
-
<div
|
|
3148
|
-
|
|
3257
|
+
<div *ngIf="aiAssistantToolbarTool" #windowContainer></div>
|
|
3258
|
+
|
|
3259
|
+
<div kendoWatermarkOverlay *ngIf="showLicenseWatermark" [licenseMessage]="licenseMessage"></div>
|
|
3260
|
+
`, 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]", inputs: ["licenseMessage"] }, { 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 });
|
|
3149
3261
|
}
|
|
3150
3262
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: GridComponent, decorators: [{
|
|
3151
3263
|
type: Component,
|
|
@@ -3438,10 +3550,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
|
|
|
3438
3550
|
i18n-columnsReset="kendo.grid.columnsReset|The text shown in the column menu or column chooser for the columns reset button"
|
|
3439
3551
|
columnsReset="Reset"
|
|
3440
3552
|
|
|
3441
|
-
i18n-detailExpand="kendo.grid.detailExpand|The title of the expand icon of detail rows."
|
|
3553
|
+
i18n-detailExpand="kendo.grid.detailExpand|The title of the expand icon of detail rows. Applies also to the expand button text in stacked mode."
|
|
3442
3554
|
detailExpand="Expand Details"
|
|
3443
3555
|
|
|
3444
|
-
i18n-detailCollapse="kendo.grid.detailCollapse|The title of the collapse icon of detail rows."
|
|
3556
|
+
i18n-detailCollapse="kendo.grid.detailCollapse|The title of the collapse icon of detail rows. Applies also to the collapse button text in stacked mode."
|
|
3445
3557
|
detailCollapse="Collapse Details"
|
|
3446
3558
|
|
|
3447
3559
|
i18n-filterDateToday="kendo.grid.filterDateToday|The text of the Today button of the Date filter."
|
|
@@ -3551,6 +3663,33 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
|
|
|
3551
3663
|
|
|
3552
3664
|
i18n-externalEditingCancelText="kendo.grid.externalEditingCancelText|The text of the external editing form Cancel button"
|
|
3553
3665
|
externalEditingCancelText="Cancel"
|
|
3666
|
+
|
|
3667
|
+
i18n-aiAssistantToolbarToolText="kendo.grid.aiAssistantToolbarToolText|The text of the AI Assistant toolbar tool"
|
|
3668
|
+
aiAssistantToolbarToolText="AI Assistant"
|
|
3669
|
+
|
|
3670
|
+
i18n-aiAssistantWindowTitle="kendo.grid.aiAssistantWindowTitle|The text of the AI Assistant Window title"
|
|
3671
|
+
aiAssistantWindowTitle="AI Assistant"
|
|
3672
|
+
|
|
3673
|
+
i18n-aiAssistantApplyButtonText="kendo.grid.aiAssistantApplyButtonText|The text of the AI Assistant Apply button"
|
|
3674
|
+
aiAssistantApplyButtonText="Apply"
|
|
3675
|
+
|
|
3676
|
+
i18n-aiAssistantWindowCloseTitle="kendo.grid.aiAssistantWindowCloseTitle|The title of the AI Assistant Window close button"
|
|
3677
|
+
aiAssistantWindowCloseTitle="Close"
|
|
3678
|
+
|
|
3679
|
+
i18n-aiAssistantWindowMaximizeTitle="kendo.grid.aiAssistantWindowMaximizeTitle|The title of the AI Assistant Window maximize button"
|
|
3680
|
+
aiAssistantWindowMaximizeTitle="Maximize"
|
|
3681
|
+
|
|
3682
|
+
i18n-aiAssistantWindowMinimizeTitle="kendo.grid.aiAssistantWindowMinimizeTitle|The title of the AI Assistant Window minimize button"
|
|
3683
|
+
aiAssistantWindowMinimizeTitle="Minimize"
|
|
3684
|
+
|
|
3685
|
+
i18n-aiAssistantWindowRestoreTitle="kendo.grid.aiAssistantWindowRestoreTitle|The title of the AI Assistant Window restore button"
|
|
3686
|
+
aiAssistantWindowRestoreTitle="Restore"
|
|
3687
|
+
|
|
3688
|
+
i18n-aiAssistantOutputCardTitle="kendo.grid.aiAssistantOutputCardTitle|The title of the AI Assistant Prompt Output Card"
|
|
3689
|
+
aiAssistantOutputCardTitle="Generated with AI"
|
|
3690
|
+
|
|
3691
|
+
i18n-aiAssistantOutputCardBodyContent="kendo.grid.aiAssistantOutputCardBodyContent|The success message dispayed in the AI Assistant Prompt Output Card's body"
|
|
3692
|
+
aiAssistantOutputCardBodyContent="Operation is successful. Data is:"
|
|
3554
3693
|
>
|
|
3555
3694
|
</ng-container>
|
|
3556
3695
|
<kendo-grid-toolbar
|
|
@@ -3636,7 +3775,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
|
|
|
3636
3775
|
[attr.aria-rowcount]="ariaRowCount"
|
|
3637
3776
|
[attr.aria-colcount]="ariaColCount">
|
|
3638
3777
|
<ng-container *ngIf="isScrollable">
|
|
3639
|
-
<div *ngIf="!hideHeader"
|
|
3778
|
+
<div *ngIf="!hideHeader && !isStacked"
|
|
3640
3779
|
class="k-grid-header"
|
|
3641
3780
|
[class.k-grid-draggable-header]="groupable || reorderable"
|
|
3642
3781
|
role="presentation"
|
|
@@ -3760,7 +3899,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
|
|
|
3760
3899
|
class="k-grid-footer"
|
|
3761
3900
|
[style.padding]="headerPadding">
|
|
3762
3901
|
<div
|
|
3763
|
-
*ngIf="lockedLeafColumns.length"
|
|
3902
|
+
*ngIf="lockedLeafColumns.length && !isStacked"
|
|
3764
3903
|
class="k-grid-footer-locked"
|
|
3765
3904
|
[style.width.px]="lockedWidth">
|
|
3766
3905
|
<table
|
|
@@ -3771,7 +3910,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
|
|
|
3771
3910
|
[style.width.px]="lockedWidth"
|
|
3772
3911
|
kendoGridTable
|
|
3773
3912
|
[size]="size">
|
|
3774
|
-
<colgroup kendoGridColGroup
|
|
3913
|
+
<colgroup kendoGridColGroup *ngIf="!isStacked"
|
|
3775
3914
|
[columns]="$any(lockedLeafColumns)"
|
|
3776
3915
|
[groups]="group"
|
|
3777
3916
|
[detailTemplate]="detailTemplate">
|
|
@@ -3789,7 +3928,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
|
|
|
3789
3928
|
</div>
|
|
3790
3929
|
<div #footer
|
|
3791
3930
|
class="k-grid-footer-wrap" data-scrollable
|
|
3792
|
-
[kendoGridResizableContainer]="lockedLeafColumns.length > 0"
|
|
3931
|
+
[kendoGridResizableContainer]="lockedLeafColumns.length > 0 && !isStacked"
|
|
3793
3932
|
[lockedWidth]="lockedWidth + scrollbarWidth + 3">
|
|
3794
3933
|
<table
|
|
3795
3934
|
role="presentation"
|
|
@@ -3798,7 +3937,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
|
|
|
3798
3937
|
kendoGridTable
|
|
3799
3938
|
kendoGridResizableTable
|
|
3800
3939
|
[size]="size">
|
|
3801
|
-
<colgroup kendoGridColGroup
|
|
3940
|
+
<colgroup kendoGridColGroup *ngIf="!isStacked"
|
|
3802
3941
|
[columns]="$any(headerLeafColumns)"
|
|
3803
3942
|
[groups]="isLocked ? [] : group"
|
|
3804
3943
|
[detailTemplate]="detailTemplate">
|
|
@@ -3808,7 +3947,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
|
|
|
3808
3947
|
[scrollable]="true"
|
|
3809
3948
|
[groups]="isLocked ? [] : group"
|
|
3810
3949
|
[columns]="$any(headerColumns)"
|
|
3811
|
-
[lockedColumnsCount]="lockedLeafColumns.length"
|
|
3950
|
+
[lockedColumnsCount]="isStacked ? 0 : lockedLeafColumns.length"
|
|
3812
3951
|
[detailTemplate]="detailTemplate"
|
|
3813
3952
|
[totalColumns]="columnsContainer"
|
|
3814
3953
|
[totalColumnsCount]="leafColumns.length">
|
|
@@ -3832,7 +3971,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
|
|
|
3832
3971
|
[detailTemplate]="detailTemplate">
|
|
3833
3972
|
</colgroup>
|
|
3834
3973
|
<thead kendoGridHeader
|
|
3835
|
-
*ngIf="!hideHeader"
|
|
3974
|
+
*ngIf="!hideHeader && !isStacked"
|
|
3836
3975
|
class="k-grid-header"
|
|
3837
3976
|
[class.k-grid-draggable-header]="groupable || reorderable"
|
|
3838
3977
|
role="rowgroup"
|
|
@@ -3970,7 +4109,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
|
|
|
3970
4109
|
|
|
3971
4110
|
<kendo-grid-adaptive-renderer *ngIf="isAdaptiveModeEnabled"></kendo-grid-adaptive-renderer>
|
|
3972
4111
|
|
|
3973
|
-
<div
|
|
4112
|
+
<div *ngIf="aiAssistantToolbarTool" #windowContainer></div>
|
|
4113
|
+
|
|
4114
|
+
<div kendoWatermarkOverlay *ngIf="showLicenseWatermark" [licenseMessage]="licenseMessage"></div>
|
|
3974
4115
|
`,
|
|
3975
4116
|
standalone: true,
|
|
3976
4117
|
imports: [
|
|
@@ -4053,6 +4194,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
|
|
|
4053
4194
|
type: Input
|
|
4054
4195
|
}], isGroupExpanded: [{
|
|
4055
4196
|
type: Input
|
|
4197
|
+
}], dataLayoutMode: [{
|
|
4198
|
+
type: Input
|
|
4056
4199
|
}], filterChange: [{
|
|
4057
4200
|
type: Output
|
|
4058
4201
|
}], pageChange: [{
|
|
@@ -4124,6 +4267,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
|
|
|
4124
4267
|
}], sizeMediumClass: [{
|
|
4125
4268
|
type: HostBinding,
|
|
4126
4269
|
args: ['class.k-grid-md']
|
|
4270
|
+
}], stackedClass: [{
|
|
4271
|
+
type: HostBinding,
|
|
4272
|
+
args: ['class.k-grid-stack']
|
|
4127
4273
|
}], lockedClasses: [{
|
|
4128
4274
|
type: HostBinding,
|
|
4129
4275
|
args: ['class.k-grid-lockedcolumns']
|
|
@@ -4172,6 +4318,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
|
|
|
4172
4318
|
}], columnMenuTemplates: [{
|
|
4173
4319
|
type: ContentChildren,
|
|
4174
4320
|
args: [ColumnMenuTemplateDirective]
|
|
4321
|
+
}], aiAssistantToolbarTool: [{
|
|
4322
|
+
type: ContentChild,
|
|
4323
|
+
args: [AIAssistantToolbarDirective]
|
|
4175
4324
|
}], lockedHeader: [{
|
|
4176
4325
|
type: ViewChild,
|
|
4177
4326
|
args: ['lockedHeader']
|
|
@@ -4193,6 +4342,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
|
|
|
4193
4342
|
}], dialogContainer: [{
|
|
4194
4343
|
type: ViewChild,
|
|
4195
4344
|
args: ['dialogContainer', { read: ViewContainerRef }]
|
|
4345
|
+
}], windowContainer: [{
|
|
4346
|
+
type: ViewChild,
|
|
4347
|
+
args: ['windowContainer', { read: ViewContainerRef }]
|
|
4196
4348
|
}], adaptiveRenderer: [{
|
|
4197
4349
|
type: ViewChild,
|
|
4198
4350
|
args: [AdaptiveRendererComponent]
|