@progress/kendo-angular-grid 21.0.0-develop.24 → 21.0.0-develop.26
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/esm2022/excel/excel.component.mjs +9 -2
- package/esm2022/package-metadata.mjs +2 -2
- package/esm2022/rendering/list.component.mjs +12 -5
- package/esm2022/rendering/toolbar/tools/ai-assistant/ai-assistant.component.mjs +18 -15
- package/excel/excel.component.d.ts +6 -2
- package/fesm2022/progress-kendo-angular-grid.mjs +38 -21
- package/package.json +24 -24
- package/rendering/toolbar/tools/ai-assistant/ai-assistant.component.d.ts +3 -2
- package/schematics/ngAdd/index.js +7 -7
|
@@ -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, Input, ContentChildren, QueryList, NgZone } from '@angular/core';
|
|
5
|
+
import { Component, Input, ContentChildren, QueryList, NgZone, EventEmitter, Output } from '@angular/core';
|
|
6
6
|
import { Observable } from 'rxjs';
|
|
7
7
|
import { take } from 'rxjs/operators';
|
|
8
8
|
import { saveAs } from '@progress/kendo-file-saver';
|
|
@@ -116,6 +116,10 @@ export class ExcelComponent {
|
|
|
116
116
|
* Specifies if groups in the Excel file are collapsible.
|
|
117
117
|
*/
|
|
118
118
|
collapsible;
|
|
119
|
+
/**
|
|
120
|
+
* @hidden
|
|
121
|
+
*/
|
|
122
|
+
fileCreated = new EventEmitter();
|
|
119
123
|
/**
|
|
120
124
|
* @hidden
|
|
121
125
|
*/
|
|
@@ -178,10 +182,11 @@ export class ExcelComponent {
|
|
|
178
182
|
forceProxy: this.forceProxy,
|
|
179
183
|
proxyURL: this.proxyURL
|
|
180
184
|
});
|
|
185
|
+
this.fileCreated.emit();
|
|
181
186
|
});
|
|
182
187
|
}
|
|
183
188
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: ExcelComponent, deps: [{ token: i1.ExcelService }, { token: i2.ContextService }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component });
|
|
184
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.14", type: ExcelComponent, isStandalone: true, selector: "kendo-grid-excel", inputs: { fileName: "fileName", filterable: "filterable", creator: "creator", date: "date", forceProxy: "forceProxy", proxyURL: "proxyURL", fetchData: "fetchData", paddingCellOptions: "paddingCellOptions", headerPaddingCellOptions: "headerPaddingCellOptions", collapsible: "collapsible" }, queries: [{ propertyName: "columns", predicate: ColumnBase, descendants: true }], ngImport: i0, template: ``, isInline: true });
|
|
189
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.14", type: ExcelComponent, isStandalone: true, selector: "kendo-grid-excel", inputs: { fileName: "fileName", filterable: "filterable", creator: "creator", date: "date", forceProxy: "forceProxy", proxyURL: "proxyURL", fetchData: "fetchData", paddingCellOptions: "paddingCellOptions", headerPaddingCellOptions: "headerPaddingCellOptions", collapsible: "collapsible" }, outputs: { fileCreated: "fileCreated" }, queries: [{ propertyName: "columns", predicate: ColumnBase, descendants: true }], ngImport: i0, template: ``, isInline: true });
|
|
185
190
|
}
|
|
186
191
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: ExcelComponent, decorators: [{
|
|
187
192
|
type: Component,
|
|
@@ -210,6 +215,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
|
|
|
210
215
|
type: Input
|
|
211
216
|
}], collapsible: [{
|
|
212
217
|
type: Input
|
|
218
|
+
}], fileCreated: [{
|
|
219
|
+
type: Output
|
|
213
220
|
}], columns: [{
|
|
214
221
|
type: ContentChildren,
|
|
215
222
|
args: [ColumnBase, { descendants: true }]
|
|
@@ -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: '21.0.0-develop.
|
|
13
|
+
publishDate: 1762796534,
|
|
14
|
+
version: '21.0.0-develop.26',
|
|
15
15
|
licensingDocsUrl: 'https://www.telerik.com/kendo-angular-ui/my-license/'
|
|
16
16
|
};
|
|
@@ -305,17 +305,24 @@ export class ListComponent {
|
|
|
305
305
|
const previousTotal = this.allItems.length;
|
|
306
306
|
this.allItems = this.dataMappingService.dataMapper(this.data, this.nonLockedColumnsToRender, this.lockedLeafColumns, this.detailTemplate, this.showFooter);
|
|
307
307
|
const totalChanged = previousTotal !== this.allItems.length;
|
|
308
|
+
const totalIncreased = this.allItems.length > previousTotal;
|
|
308
309
|
if (this.totalIsAllItems && totalChanged) {
|
|
309
310
|
this.scroller.reset(this.skipScroll);
|
|
310
311
|
this.scroller.total = this.allItems.length;
|
|
311
312
|
this.itemsToRender = this.allItems.slice(this.scroller.virtualSkip, this.scroller.virtualSkip + this.virtualPageSize);
|
|
312
313
|
}
|
|
313
314
|
else if (totalChanged && !this.ctx.grid?.group?.length) {
|
|
314
|
-
|
|
315
|
-
this.
|
|
316
|
-
|
|
317
|
-
|
|
318
|
-
|
|
315
|
+
// Preserve scroll position for non-virtual endless scrolling (scrollBottom event)
|
|
316
|
+
if (!this.isVirtual && totalIncreased) {
|
|
317
|
+
this.scroller.total = this.total;
|
|
318
|
+
}
|
|
319
|
+
else {
|
|
320
|
+
this.scroller.reset(this.skipScroll);
|
|
321
|
+
this.scroller.total = this.total;
|
|
322
|
+
// Clear flags to allow viewport update on next change detection (virtual scrolling fix)
|
|
323
|
+
this.skipScroll = false;
|
|
324
|
+
this.scroller.scrollSyncing = false;
|
|
325
|
+
}
|
|
319
326
|
}
|
|
320
327
|
if (!this.isVirtual || (this.isVirtual && !this.ctx.grid?.pageable && !this.ctx.grid?.group?.length)) {
|
|
321
328
|
this.itemsToRender = this.allItems;
|
|
@@ -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, ViewChild } from '@angular/core';
|
|
5
|
+
import { Component, ViewChild, NgZone } from '@angular/core';
|
|
6
6
|
import { AIPromptComponent, OutputViewComponent, PromptViewComponent, AIPromptCustomMessagesComponent, AIPromptOutputTemplateDirective, AIPromptOutputBodyTemplateDirective } from '@progress/kendo-angular-conversational-ui';
|
|
7
7
|
import { HttpClient, HttpRequest } from '@angular/common/http';
|
|
8
8
|
import { ContextService } from './../../../../common/provider.service';
|
|
@@ -24,6 +24,7 @@ export class AiAssistantComponent {
|
|
|
24
24
|
http;
|
|
25
25
|
ctx;
|
|
26
26
|
columnInfoService;
|
|
27
|
+
zone;
|
|
27
28
|
aiPrompt;
|
|
28
29
|
activeView = 0;
|
|
29
30
|
requestUrl;
|
|
@@ -43,10 +44,11 @@ export class AiAssistantComponent {
|
|
|
43
44
|
// nested tree representing the actual Grid column components sent to the AI service
|
|
44
45
|
columnsTree = [];
|
|
45
46
|
idCounter = 0;
|
|
46
|
-
constructor(http, ctx, columnInfoService) {
|
|
47
|
+
constructor(http, ctx, columnInfoService, zone) {
|
|
47
48
|
this.http = http;
|
|
48
49
|
this.ctx = ctx;
|
|
49
50
|
this.columnInfoService = columnInfoService;
|
|
51
|
+
this.zone = zone;
|
|
50
52
|
}
|
|
51
53
|
ngAfterViewInit() {
|
|
52
54
|
// Build a nested GridColumnDescriptor tree based on the actual Grid columns structure.
|
|
@@ -400,7 +402,7 @@ export class AiAssistantComponent {
|
|
|
400
402
|
break;
|
|
401
403
|
}
|
|
402
404
|
case 'GridExportPDF': {
|
|
403
|
-
this.runExportWithFileName(this.ctx.pdfComponent, cmd.fileName, () => this.ctx.grid.
|
|
405
|
+
this.runExportWithFileName(this.ctx.pdfComponent, cmd.fileName, () => this.ctx.grid.emitPDFExportEvent());
|
|
404
406
|
break;
|
|
405
407
|
}
|
|
406
408
|
default:
|
|
@@ -410,21 +412,22 @@ export class AiAssistantComponent {
|
|
|
410
412
|
});
|
|
411
413
|
}
|
|
412
414
|
runExportWithFileName(component, fileName, action) {
|
|
413
|
-
if (!component) {
|
|
414
|
-
action();
|
|
415
|
-
return;
|
|
416
|
-
}
|
|
417
|
-
const hasComponentFileName = isPresent(component.fileName) && component.fileName !== '';
|
|
418
|
-
if (hasComponentFileName || !fileName) {
|
|
415
|
+
if (!component || !fileName) {
|
|
419
416
|
action();
|
|
420
417
|
return;
|
|
421
418
|
}
|
|
422
419
|
const previousFileName = component.fileName;
|
|
423
420
|
component.fileName = fileName;
|
|
424
|
-
|
|
425
|
-
|
|
426
|
-
|
|
427
|
-
|
|
421
|
+
action();
|
|
422
|
+
const isExcel = component === this.ctx.excelComponent;
|
|
423
|
+
if (isExcel) {
|
|
424
|
+
this.zone.runOutsideAngular(() => {
|
|
425
|
+
this.ctx.excelComponent.fileCreated.subscribe(() => {
|
|
426
|
+
component.fileName = previousFileName;
|
|
427
|
+
});
|
|
428
|
+
});
|
|
429
|
+
}
|
|
430
|
+
else {
|
|
428
431
|
component.fileName = previousFileName;
|
|
429
432
|
}
|
|
430
433
|
}
|
|
@@ -697,7 +700,7 @@ export class AiAssistantComponent {
|
|
|
697
700
|
this.ctx.grid.filterChange.next(mergedFilter);
|
|
698
701
|
}
|
|
699
702
|
}
|
|
700
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: AiAssistantComponent, deps: [{ token: i1.HttpClient }, { token: i2.ContextService }, { token: i3.ColumnInfoService }], target: i0.ɵɵFactoryTarget.Component });
|
|
703
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: AiAssistantComponent, deps: [{ token: i1.HttpClient }, { token: i2.ContextService }, { token: i3.ColumnInfoService }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component });
|
|
701
704
|
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.14", type: AiAssistantComponent, isStandalone: true, selector: "ng-component", viewQueries: [{ propertyName: "aiPrompt", first: true, predicate: AIPromptComponent, descendants: true }], ngImport: i0, template: `
|
|
702
705
|
<kendo-aiprompt
|
|
703
706
|
#aiPrompt
|
|
@@ -793,7 +796,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
|
|
|
793
796
|
</kendo-aiprompt>
|
|
794
797
|
`
|
|
795
798
|
}]
|
|
796
|
-
}], ctorParameters: () => [{ type: i1.HttpClient }, { type: i2.ContextService }, { type: i3.ColumnInfoService }], propDecorators: { aiPrompt: [{
|
|
799
|
+
}], ctorParameters: () => [{ type: i1.HttpClient }, { type: i2.ContextService }, { type: i3.ColumnInfoService }, { type: i0.NgZone }], propDecorators: { aiPrompt: [{
|
|
797
800
|
type: ViewChild,
|
|
798
801
|
args: [AIPromptComponent]
|
|
799
802
|
}] } });
|
|
@@ -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 { OnDestroy, QueryList, NgZone } from '@angular/core';
|
|
5
|
+
import { OnDestroy, QueryList, NgZone, EventEmitter } from '@angular/core';
|
|
6
6
|
import { ExcelExportData, ColumnBase, CellOptions } from '@progress/kendo-angular-excel-export';
|
|
7
7
|
import { GridComponent } from '../grid.component';
|
|
8
8
|
import { ExcelService } from './excel.service';
|
|
@@ -69,6 +69,10 @@ export declare class ExcelComponent implements OnDestroy {
|
|
|
69
69
|
* Specifies if groups in the Excel file are collapsible.
|
|
70
70
|
*/
|
|
71
71
|
collapsible: boolean;
|
|
72
|
+
/**
|
|
73
|
+
* @hidden
|
|
74
|
+
*/
|
|
75
|
+
fileCreated: EventEmitter<undefined>;
|
|
72
76
|
/**
|
|
73
77
|
* @hidden
|
|
74
78
|
*/
|
|
@@ -81,5 +85,5 @@ export declare class ExcelComponent implements OnDestroy {
|
|
|
81
85
|
protected exportData(component: GridComponent, result: ExcelExportData): void;
|
|
82
86
|
protected saveFile(options: any): void;
|
|
83
87
|
static ɵfac: i0.ɵɵFactoryDeclaration<ExcelComponent, never>;
|
|
84
|
-
static ɵcmp: i0.ɵɵComponentDeclaration<ExcelComponent, "kendo-grid-excel", never, { "fileName": { "alias": "fileName"; "required": false; }; "filterable": { "alias": "filterable"; "required": false; }; "creator": { "alias": "creator"; "required": false; }; "date": { "alias": "date"; "required": false; }; "forceProxy": { "alias": "forceProxy"; "required": false; }; "proxyURL": { "alias": "proxyURL"; "required": false; }; "fetchData": { "alias": "fetchData"; "required": false; }; "paddingCellOptions": { "alias": "paddingCellOptions"; "required": false; }; "headerPaddingCellOptions": { "alias": "headerPaddingCellOptions"; "required": false; }; "collapsible": { "alias": "collapsible"; "required": false; }; }, {}, ["columns"], never, true, never>;
|
|
88
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<ExcelComponent, "kendo-grid-excel", never, { "fileName": { "alias": "fileName"; "required": false; }; "filterable": { "alias": "filterable"; "required": false; }; "creator": { "alias": "creator"; "required": false; }; "date": { "alias": "date"; "required": false; }; "forceProxy": { "alias": "forceProxy"; "required": false; }; "proxyURL": { "alias": "proxyURL"; "required": false; }; "fetchData": { "alias": "fetchData"; "required": false; }; "paddingCellOptions": { "alias": "paddingCellOptions"; "required": false; }; "headerPaddingCellOptions": { "alias": "headerPaddingCellOptions"; "required": false; }; "collapsible": { "alias": "collapsible"; "required": false; }; }, { "fileCreated": "fileCreated"; }, ["columns"], never, true, never>;
|
|
85
89
|
}
|
|
@@ -16409,6 +16409,10 @@ class ExcelComponent {
|
|
|
16409
16409
|
* Specifies if groups in the Excel file are collapsible.
|
|
16410
16410
|
*/
|
|
16411
16411
|
collapsible;
|
|
16412
|
+
/**
|
|
16413
|
+
* @hidden
|
|
16414
|
+
*/
|
|
16415
|
+
fileCreated = new EventEmitter();
|
|
16412
16416
|
/**
|
|
16413
16417
|
* @hidden
|
|
16414
16418
|
*/
|
|
@@ -16471,10 +16475,11 @@ class ExcelComponent {
|
|
|
16471
16475
|
forceProxy: this.forceProxy,
|
|
16472
16476
|
proxyURL: this.proxyURL
|
|
16473
16477
|
});
|
|
16478
|
+
this.fileCreated.emit();
|
|
16474
16479
|
});
|
|
16475
16480
|
}
|
|
16476
16481
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: ExcelComponent, deps: [{ token: ExcelService }, { token: ContextService }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component });
|
|
16477
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.14", type: ExcelComponent, isStandalone: true, selector: "kendo-grid-excel", inputs: { fileName: "fileName", filterable: "filterable", creator: "creator", date: "date", forceProxy: "forceProxy", proxyURL: "proxyURL", fetchData: "fetchData", paddingCellOptions: "paddingCellOptions", headerPaddingCellOptions: "headerPaddingCellOptions", collapsible: "collapsible" }, queries: [{ propertyName: "columns", predicate: ColumnBase$1, descendants: true }], ngImport: i0, template: ``, isInline: true });
|
|
16482
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.14", type: ExcelComponent, isStandalone: true, selector: "kendo-grid-excel", inputs: { fileName: "fileName", filterable: "filterable", creator: "creator", date: "date", forceProxy: "forceProxy", proxyURL: "proxyURL", fetchData: "fetchData", paddingCellOptions: "paddingCellOptions", headerPaddingCellOptions: "headerPaddingCellOptions", collapsible: "collapsible" }, outputs: { fileCreated: "fileCreated" }, queries: [{ propertyName: "columns", predicate: ColumnBase$1, descendants: true }], ngImport: i0, template: ``, isInline: true });
|
|
16478
16483
|
}
|
|
16479
16484
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: ExcelComponent, decorators: [{
|
|
16480
16485
|
type: Component,
|
|
@@ -16503,6 +16508,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
|
|
|
16503
16508
|
type: Input
|
|
16504
16509
|
}], collapsible: [{
|
|
16505
16510
|
type: Input
|
|
16511
|
+
}], fileCreated: [{
|
|
16512
|
+
type: Output
|
|
16506
16513
|
}], columns: [{
|
|
16507
16514
|
type: ContentChildren,
|
|
16508
16515
|
args: [ColumnBase$1, { descendants: true }]
|
|
@@ -22953,8 +22960,8 @@ const packageMetadata = {
|
|
|
22953
22960
|
productName: 'Kendo UI for Angular',
|
|
22954
22961
|
productCode: 'KENDOUIANGULAR',
|
|
22955
22962
|
productCodes: ['KENDOUIANGULAR'],
|
|
22956
|
-
publishDate:
|
|
22957
|
-
version: '21.0.0-develop.
|
|
22963
|
+
publishDate: 1762796534,
|
|
22964
|
+
version: '21.0.0-develop.26',
|
|
22958
22965
|
licensingDocsUrl: 'https://www.telerik.com/kendo-angular-ui/my-license/'
|
|
22959
22966
|
};
|
|
22960
22967
|
|
|
@@ -25581,17 +25588,24 @@ class ListComponent {
|
|
|
25581
25588
|
const previousTotal = this.allItems.length;
|
|
25582
25589
|
this.allItems = this.dataMappingService.dataMapper(this.data, this.nonLockedColumnsToRender, this.lockedLeafColumns, this.detailTemplate, this.showFooter);
|
|
25583
25590
|
const totalChanged = previousTotal !== this.allItems.length;
|
|
25591
|
+
const totalIncreased = this.allItems.length > previousTotal;
|
|
25584
25592
|
if (this.totalIsAllItems && totalChanged) {
|
|
25585
25593
|
this.scroller.reset(this.skipScroll);
|
|
25586
25594
|
this.scroller.total = this.allItems.length;
|
|
25587
25595
|
this.itemsToRender = this.allItems.slice(this.scroller.virtualSkip, this.scroller.virtualSkip + this.virtualPageSize);
|
|
25588
25596
|
}
|
|
25589
25597
|
else if (totalChanged && !this.ctx.grid?.group?.length) {
|
|
25590
|
-
|
|
25591
|
-
this.
|
|
25592
|
-
|
|
25593
|
-
|
|
25594
|
-
|
|
25598
|
+
// Preserve scroll position for non-virtual endless scrolling (scrollBottom event)
|
|
25599
|
+
if (!this.isVirtual && totalIncreased) {
|
|
25600
|
+
this.scroller.total = this.total;
|
|
25601
|
+
}
|
|
25602
|
+
else {
|
|
25603
|
+
this.scroller.reset(this.skipScroll);
|
|
25604
|
+
this.scroller.total = this.total;
|
|
25605
|
+
// Clear flags to allow viewport update on next change detection (virtual scrolling fix)
|
|
25606
|
+
this.skipScroll = false;
|
|
25607
|
+
this.scroller.scrollSyncing = false;
|
|
25608
|
+
}
|
|
25595
25609
|
}
|
|
25596
25610
|
if (!this.isVirtual || (this.isVirtual && !this.ctx.grid?.pageable && !this.ctx.grid?.group?.length)) {
|
|
25597
25611
|
this.itemsToRender = this.allItems;
|
|
@@ -37630,6 +37644,7 @@ class AiAssistantComponent {
|
|
|
37630
37644
|
http;
|
|
37631
37645
|
ctx;
|
|
37632
37646
|
columnInfoService;
|
|
37647
|
+
zone;
|
|
37633
37648
|
aiPrompt;
|
|
37634
37649
|
activeView = 0;
|
|
37635
37650
|
requestUrl;
|
|
@@ -37649,10 +37664,11 @@ class AiAssistantComponent {
|
|
|
37649
37664
|
// nested tree representing the actual Grid column components sent to the AI service
|
|
37650
37665
|
columnsTree = [];
|
|
37651
37666
|
idCounter = 0;
|
|
37652
|
-
constructor(http, ctx, columnInfoService) {
|
|
37667
|
+
constructor(http, ctx, columnInfoService, zone) {
|
|
37653
37668
|
this.http = http;
|
|
37654
37669
|
this.ctx = ctx;
|
|
37655
37670
|
this.columnInfoService = columnInfoService;
|
|
37671
|
+
this.zone = zone;
|
|
37656
37672
|
}
|
|
37657
37673
|
ngAfterViewInit() {
|
|
37658
37674
|
// Build a nested GridColumnDescriptor tree based on the actual Grid columns structure.
|
|
@@ -38006,7 +38022,7 @@ class AiAssistantComponent {
|
|
|
38006
38022
|
break;
|
|
38007
38023
|
}
|
|
38008
38024
|
case 'GridExportPDF': {
|
|
38009
|
-
this.runExportWithFileName(this.ctx.pdfComponent, cmd.fileName, () => this.ctx.grid.
|
|
38025
|
+
this.runExportWithFileName(this.ctx.pdfComponent, cmd.fileName, () => this.ctx.grid.emitPDFExportEvent());
|
|
38010
38026
|
break;
|
|
38011
38027
|
}
|
|
38012
38028
|
default:
|
|
@@ -38016,21 +38032,22 @@ class AiAssistantComponent {
|
|
|
38016
38032
|
});
|
|
38017
38033
|
}
|
|
38018
38034
|
runExportWithFileName(component, fileName, action) {
|
|
38019
|
-
if (!component) {
|
|
38020
|
-
action();
|
|
38021
|
-
return;
|
|
38022
|
-
}
|
|
38023
|
-
const hasComponentFileName = isPresent$1(component.fileName) && component.fileName !== '';
|
|
38024
|
-
if (hasComponentFileName || !fileName) {
|
|
38035
|
+
if (!component || !fileName) {
|
|
38025
38036
|
action();
|
|
38026
38037
|
return;
|
|
38027
38038
|
}
|
|
38028
38039
|
const previousFileName = component.fileName;
|
|
38029
38040
|
component.fileName = fileName;
|
|
38030
|
-
|
|
38031
|
-
|
|
38041
|
+
action();
|
|
38042
|
+
const isExcel = component === this.ctx.excelComponent;
|
|
38043
|
+
if (isExcel) {
|
|
38044
|
+
this.zone.runOutsideAngular(() => {
|
|
38045
|
+
this.ctx.excelComponent.fileCreated.subscribe(() => {
|
|
38046
|
+
component.fileName = previousFileName;
|
|
38047
|
+
});
|
|
38048
|
+
});
|
|
38032
38049
|
}
|
|
38033
|
-
|
|
38050
|
+
else {
|
|
38034
38051
|
component.fileName = previousFileName;
|
|
38035
38052
|
}
|
|
38036
38053
|
}
|
|
@@ -38303,7 +38320,7 @@ class AiAssistantComponent {
|
|
|
38303
38320
|
this.ctx.grid.filterChange.next(mergedFilter);
|
|
38304
38321
|
}
|
|
38305
38322
|
}
|
|
38306
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: AiAssistantComponent, deps: [{ token: i1$8.HttpClient }, { token: ContextService }, { token: ColumnInfoService }], target: i0.ɵɵFactoryTarget.Component });
|
|
38323
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: AiAssistantComponent, deps: [{ token: i1$8.HttpClient }, { token: ContextService }, { token: ColumnInfoService }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component });
|
|
38307
38324
|
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.14", type: AiAssistantComponent, isStandalone: true, selector: "ng-component", viewQueries: [{ propertyName: "aiPrompt", first: true, predicate: AIPromptComponent, descendants: true }], ngImport: i0, template: `
|
|
38308
38325
|
<kendo-aiprompt
|
|
38309
38326
|
#aiPrompt
|
|
@@ -38399,7 +38416,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
|
|
|
38399
38416
|
</kendo-aiprompt>
|
|
38400
38417
|
`
|
|
38401
38418
|
}]
|
|
38402
|
-
}], ctorParameters: () => [{ type: i1$8.HttpClient }, { type: ContextService }, { type: ColumnInfoService }], propDecorators: { aiPrompt: [{
|
|
38419
|
+
}], ctorParameters: () => [{ type: i1$8.HttpClient }, { type: ContextService }, { type: ColumnInfoService }, { type: i0.NgZone }], propDecorators: { aiPrompt: [{
|
|
38403
38420
|
type: ViewChild,
|
|
38404
38421
|
args: [AIPromptComponent]
|
|
38405
38422
|
}] } });
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@progress/kendo-angular-grid",
|
|
3
|
-
"version": "21.0.0-develop.
|
|
3
|
+
"version": "21.0.0-develop.26",
|
|
4
4
|
"description": "Kendo UI Grid for Angular - high performance data grid with paging, filtering, virtualization, CRUD, and more.",
|
|
5
5
|
"license": "SEE LICENSE IN LICENSE.md",
|
|
6
6
|
"author": "Progress",
|
|
@@ -73,7 +73,7 @@
|
|
|
73
73
|
"package": {
|
|
74
74
|
"productName": "Kendo UI for Angular",
|
|
75
75
|
"productCode": "KENDOUIANGULAR",
|
|
76
|
-
"publishDate":
|
|
76
|
+
"publishDate": 1762796534,
|
|
77
77
|
"licensingDocsUrl": "https://www.telerik.com/kendo-angular-ui/my-license/"
|
|
78
78
|
}
|
|
79
79
|
},
|
|
@@ -86,32 +86,32 @@
|
|
|
86
86
|
"@progress/kendo-data-query": "^1.0.0",
|
|
87
87
|
"@progress/kendo-drawing": "^1.21.0",
|
|
88
88
|
"@progress/kendo-licensing": "^1.7.0",
|
|
89
|
-
"@progress/kendo-angular-buttons": "21.0.0-develop.
|
|
90
|
-
"@progress/kendo-angular-common": "21.0.0-develop.
|
|
91
|
-
"@progress/kendo-angular-dateinputs": "21.0.0-develop.
|
|
92
|
-
"@progress/kendo-angular-layout": "21.0.0-develop.
|
|
93
|
-
"@progress/kendo-angular-navigation": "21.0.0-develop.
|
|
94
|
-
"@progress/kendo-angular-dropdowns": "21.0.0-develop.
|
|
95
|
-
"@progress/kendo-angular-excel-export": "21.0.0-develop.
|
|
96
|
-
"@progress/kendo-angular-icons": "21.0.0-develop.
|
|
97
|
-
"@progress/kendo-angular-indicators": "21.0.0-develop.
|
|
98
|
-
"@progress/kendo-angular-inputs": "21.0.0-develop.
|
|
99
|
-
"@progress/kendo-angular-conversational-ui": "21.0.0-develop.
|
|
100
|
-
"@progress/kendo-angular-intl": "21.0.0-develop.
|
|
101
|
-
"@progress/kendo-angular-l10n": "21.0.0-develop.
|
|
102
|
-
"@progress/kendo-angular-label": "21.0.0-develop.
|
|
103
|
-
"@progress/kendo-angular-menu": "21.0.0-develop.
|
|
104
|
-
"@progress/kendo-angular-pager": "21.0.0-develop.
|
|
105
|
-
"@progress/kendo-angular-pdf-export": "21.0.0-develop.
|
|
106
|
-
"@progress/kendo-angular-popup": "21.0.0-develop.
|
|
107
|
-
"@progress/kendo-angular-toolbar": "21.0.0-develop.
|
|
108
|
-
"@progress/kendo-angular-upload": "21.0.0-develop.
|
|
109
|
-
"@progress/kendo-angular-utils": "21.0.0-develop.
|
|
89
|
+
"@progress/kendo-angular-buttons": "21.0.0-develop.26",
|
|
90
|
+
"@progress/kendo-angular-common": "21.0.0-develop.26",
|
|
91
|
+
"@progress/kendo-angular-dateinputs": "21.0.0-develop.26",
|
|
92
|
+
"@progress/kendo-angular-layout": "21.0.0-develop.26",
|
|
93
|
+
"@progress/kendo-angular-navigation": "21.0.0-develop.26",
|
|
94
|
+
"@progress/kendo-angular-dropdowns": "21.0.0-develop.26",
|
|
95
|
+
"@progress/kendo-angular-excel-export": "21.0.0-develop.26",
|
|
96
|
+
"@progress/kendo-angular-icons": "21.0.0-develop.26",
|
|
97
|
+
"@progress/kendo-angular-indicators": "21.0.0-develop.26",
|
|
98
|
+
"@progress/kendo-angular-inputs": "21.0.0-develop.26",
|
|
99
|
+
"@progress/kendo-angular-conversational-ui": "21.0.0-develop.26",
|
|
100
|
+
"@progress/kendo-angular-intl": "21.0.0-develop.26",
|
|
101
|
+
"@progress/kendo-angular-l10n": "21.0.0-develop.26",
|
|
102
|
+
"@progress/kendo-angular-label": "21.0.0-develop.26",
|
|
103
|
+
"@progress/kendo-angular-menu": "21.0.0-develop.26",
|
|
104
|
+
"@progress/kendo-angular-pager": "21.0.0-develop.26",
|
|
105
|
+
"@progress/kendo-angular-pdf-export": "21.0.0-develop.26",
|
|
106
|
+
"@progress/kendo-angular-popup": "21.0.0-develop.26",
|
|
107
|
+
"@progress/kendo-angular-toolbar": "21.0.0-develop.26",
|
|
108
|
+
"@progress/kendo-angular-upload": "21.0.0-develop.26",
|
|
109
|
+
"@progress/kendo-angular-utils": "21.0.0-develop.26",
|
|
110
110
|
"rxjs": "^6.5.3 || ^7.0.0"
|
|
111
111
|
},
|
|
112
112
|
"dependencies": {
|
|
113
113
|
"tslib": "^2.3.1",
|
|
114
|
-
"@progress/kendo-angular-schematics": "21.0.0-develop.
|
|
114
|
+
"@progress/kendo-angular-schematics": "21.0.0-develop.26",
|
|
115
115
|
"@progress/kendo-common": "^1.0.1",
|
|
116
116
|
"@progress/kendo-file-saver": "^1.0.0",
|
|
117
117
|
"node-html-parser": "^7.0.1"
|
|
@@ -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 { OnDestroy, AfterViewInit } from '@angular/core';
|
|
5
|
+
import { OnDestroy, AfterViewInit, NgZone } from '@angular/core';
|
|
6
6
|
import { AIPromptComponent, PromptRequestEvent } from '@progress/kendo-angular-conversational-ui';
|
|
7
7
|
import { HttpClient } from '@angular/common/http';
|
|
8
8
|
import { ContextService } from './../../../../common/provider.service';
|
|
@@ -17,6 +17,7 @@ export declare class AiAssistantComponent implements OnDestroy, AfterViewInit {
|
|
|
17
17
|
private http;
|
|
18
18
|
private ctx;
|
|
19
19
|
private columnInfoService;
|
|
20
|
+
private zone;
|
|
20
21
|
aiPrompt: AIPromptComponent;
|
|
21
22
|
activeView: number;
|
|
22
23
|
requestUrl: string;
|
|
@@ -33,7 +34,7 @@ export declare class AiAssistantComponent implements OnDestroy, AfterViewInit {
|
|
|
33
34
|
private leafColumns;
|
|
34
35
|
private columnsTree;
|
|
35
36
|
private idCounter;
|
|
36
|
-
constructor(http: HttpClient, ctx: ContextService, columnInfoService: ColumnInfoService);
|
|
37
|
+
constructor(http: HttpClient, ctx: ContextService, columnInfoService: ColumnInfoService, zone: NgZone);
|
|
37
38
|
ngAfterViewInit(): void;
|
|
38
39
|
ngOnDestroy(): void;
|
|
39
40
|
message(message: string): string;
|
|
@@ -5,19 +5,19 @@ const schematics_1 = require("@angular-devkit/schematics");
|
|
|
5
5
|
function default_1(options) {
|
|
6
6
|
const finalOptions = Object.assign(Object.assign({}, options), { mainNgModule: 'GridModule', package: 'grid', peerDependencies: {
|
|
7
7
|
// peer deps of the dropdowns
|
|
8
|
-
'@progress/kendo-angular-treeview': '21.0.0-develop.
|
|
9
|
-
'@progress/kendo-angular-navigation': '21.0.0-develop.
|
|
8
|
+
'@progress/kendo-angular-treeview': '21.0.0-develop.26',
|
|
9
|
+
'@progress/kendo-angular-navigation': '21.0.0-develop.26',
|
|
10
10
|
// peer dependency of kendo-angular-inputs
|
|
11
|
-
'@progress/kendo-angular-dialog': '21.0.0-develop.
|
|
11
|
+
'@progress/kendo-angular-dialog': '21.0.0-develop.26',
|
|
12
12
|
// peer dependency of kendo-angular-icons
|
|
13
13
|
'@progress/kendo-svg-icons': '^4.0.0',
|
|
14
14
|
// peer dependency of kendo-angular-layout
|
|
15
|
-
'@progress/kendo-angular-progressbar': '21.0.0-develop.
|
|
15
|
+
'@progress/kendo-angular-progressbar': '21.0.0-develop.26',
|
|
16
16
|
// transitive peer dependencies from toolbar
|
|
17
|
-
'@progress/kendo-angular-indicators': '21.0.0-develop.
|
|
17
|
+
'@progress/kendo-angular-indicators': '21.0.0-develop.26',
|
|
18
18
|
// transitive peer dependencies from conversational-ui
|
|
19
|
-
'@progress/kendo-angular-menu': '21.0.0-develop.
|
|
20
|
-
'@progress/kendo-angular-upload': '21.0.0-develop.
|
|
19
|
+
'@progress/kendo-angular-menu': '21.0.0-develop.26',
|
|
20
|
+
'@progress/kendo-angular-upload': '21.0.0-develop.26'
|
|
21
21
|
} });
|
|
22
22
|
return (0, schematics_1.externalSchematic)('@progress/kendo-angular-schematics', 'ng-add', finalOptions);
|
|
23
23
|
}
|