@progress/kendo-angular-grid 19.3.0-develop.30 → 19.3.0-develop.32
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/grid.component.mjs +1 -0
- package/esm2022/navigation/default-focusable-element.mjs +2 -14
- package/esm2022/navigation/focusable.directive.mjs +1 -1
- package/esm2022/navigation/navigation.service.mjs +27 -18
- package/esm2022/package-metadata.mjs +2 -2
- package/esm2022/rendering/cell.component.mjs +2 -2
- package/esm2022/rendering/toolbar/tools/ai-assistant/ai-assistant.component.mjs +16 -6
- package/esm2022/rendering/toolbar/tools/ai-assistant/ai-tool.directive.mjs +2 -2
- package/esm2022/rendering/toolbar/tools/ai-assistant/utils.mjs +27 -0
- package/fesm2022/progress-kendo-angular-grid.mjs +80 -46
- package/navigation/default-focusable-element.d.ts +1 -3
- package/navigation/navigation.service.d.ts +1 -1
- package/package.json +21 -21
- package/rendering/toolbar/tools/ai-assistant/ai-assistant.component.d.ts +1 -1
- package/rendering/toolbar/tools/ai-assistant/ai-tool.directive.d.ts +5 -6
- package/rendering/toolbar/tools/ai-assistant/utils.d.ts +22 -1
- package/schematics/ngAdd/index.js +4 -4
|
@@ -1546,6 +1546,7 @@ export class GridComponent {
|
|
|
1546
1546
|
*/
|
|
1547
1547
|
closeRow(index) {
|
|
1548
1548
|
this.editService.close(index);
|
|
1549
|
+
this.isStacked && (this.navigationService.stackedCellEntered = false);
|
|
1549
1550
|
}
|
|
1550
1551
|
/**
|
|
1551
1552
|
* Creates a new row editor ([see example]({% slug inline_editing_grid %}#toc-adding-records-1)).
|
|
@@ -15,7 +15,6 @@ const isNavigable = element => !element.disabled && (isButton(element) || isNavi
|
|
|
15
15
|
*/
|
|
16
16
|
export class DefaultFocusableElement {
|
|
17
17
|
renderer;
|
|
18
|
-
ctx;
|
|
19
18
|
get enabled() {
|
|
20
19
|
return this.focusable && !this.focusable.disabled;
|
|
21
20
|
}
|
|
@@ -24,9 +23,8 @@ export class DefaultFocusableElement {
|
|
|
24
23
|
}
|
|
25
24
|
element;
|
|
26
25
|
focusable;
|
|
27
|
-
constructor(host, renderer
|
|
26
|
+
constructor(host, renderer) {
|
|
28
27
|
this.renderer = renderer;
|
|
29
|
-
this.ctx = ctx;
|
|
30
28
|
this.element = host.nativeElement;
|
|
31
29
|
this.focusable = findFocusable(this.element, false) || this.element;
|
|
32
30
|
}
|
|
@@ -34,17 +32,7 @@ export class DefaultFocusableElement {
|
|
|
34
32
|
return this.canFocus() && isNavigable(this.element);
|
|
35
33
|
}
|
|
36
34
|
toggle(active) {
|
|
37
|
-
|
|
38
|
-
if (active) {
|
|
39
|
-
this.renderer.setAttribute(this.focusable, 'tabindex', '0');
|
|
40
|
-
}
|
|
41
|
-
else {
|
|
42
|
-
this.renderer.removeAttribute(this.focusable, 'tabindex');
|
|
43
|
-
}
|
|
44
|
-
}
|
|
45
|
-
else {
|
|
46
|
-
this.renderer.setAttribute(this.focusable, 'tabindex', active ? '0' : '-1');
|
|
47
|
-
}
|
|
35
|
+
this.renderer.setAttribute(this.focusable, 'tabIndex', active ? '0' : '-1');
|
|
48
36
|
}
|
|
49
37
|
focus() {
|
|
50
38
|
if (this.focusable) {
|
|
@@ -70,7 +70,7 @@ export class FocusableDirective {
|
|
|
70
70
|
}
|
|
71
71
|
ngAfterViewInit() {
|
|
72
72
|
if (!this.element && this.ctx.navigable) {
|
|
73
|
-
this.element = new DefaultFocusableElement(this.hostElement, this.renderer
|
|
73
|
+
this.element = new DefaultFocusableElement(this.hostElement, this.renderer);
|
|
74
74
|
}
|
|
75
75
|
if (this.group && this.element) {
|
|
76
76
|
this.toggle(this.group.isActive);
|
|
@@ -230,6 +230,14 @@ export class NavigationService {
|
|
|
230
230
|
// Timeout if focusOut doesn't fire very soon
|
|
231
231
|
interval(0).pipe(take(1))))))
|
|
232
232
|
.subscribe(() => this.onTabout()));
|
|
233
|
+
this.subs.add(this.domEvents.cellClick
|
|
234
|
+
.subscribe(() => {
|
|
235
|
+
if (this.isStackedMode) {
|
|
236
|
+
const stackedCells = this.activeCell.focusGroup.focusableChildren;
|
|
237
|
+
const currFocusedIndex = stackedCells.findIndex(el => el.hasFocus() || el.hostElement?.nativeElement === document.activeElement);
|
|
238
|
+
currFocusedIndex > -1 && (this.stackedFocusedCellIndex = currFocusedIndex);
|
|
239
|
+
}
|
|
240
|
+
}));
|
|
233
241
|
if (this.focusableParent) {
|
|
234
242
|
const element = new GridFocusableElement(this);
|
|
235
243
|
this.focusableParent.registerElement(element);
|
|
@@ -678,6 +686,9 @@ export class NavigationService {
|
|
|
678
686
|
const confirm = !args.defaultPrevented && args.keyCode === Keys.Enter && isTextInput(args.target);
|
|
679
687
|
if (args.keyCode === Keys.Escape || args.keyCode === Keys.F2 || confirm) {
|
|
680
688
|
if (this.tableCellEntered && args.keyCode === Keys.F2 && this.activeRow.dataRowIndex > -1) {
|
|
689
|
+
if (this.editService.isEditingCell()) {
|
|
690
|
+
return;
|
|
691
|
+
}
|
|
681
692
|
this.zone.run(() => {
|
|
682
693
|
this.editService.beginEdit(this.activeRow.dataRowIndex);
|
|
683
694
|
});
|
|
@@ -854,6 +865,7 @@ export class NavigationService {
|
|
|
854
865
|
const stackedCell = closest(target, (el) => hasClasses(el, 'k-grid-stack-cell'));
|
|
855
866
|
const tableCell = closest(target, (el) => hasClasses(el, 'k-table-td'));
|
|
856
867
|
const isInStackedCell = closest(target, (el) => hasClasses(el, 'k-grid-stack-content'));
|
|
868
|
+
const isInCommandCell = closest(target, (el) => hasClasses(el, 'k-command-cell'));
|
|
857
869
|
if (!stackedCell || !tableCell) {
|
|
858
870
|
return;
|
|
859
871
|
}
|
|
@@ -875,7 +887,9 @@ export class NavigationService {
|
|
|
875
887
|
this.editService.closeCell(args);
|
|
876
888
|
this.activeCell.focusGroup.activate();
|
|
877
889
|
this.activeCell.focusGroup.focusableChildren[this.stackedFocusedCellIndex]?.focus();
|
|
878
|
-
|
|
890
|
+
if (!isInCommandCell) {
|
|
891
|
+
args.preventDefault();
|
|
892
|
+
}
|
|
879
893
|
}
|
|
880
894
|
}
|
|
881
895
|
stackedFocusedCellIndex = -1;
|
|
@@ -889,29 +903,24 @@ export class NavigationService {
|
|
|
889
903
|
return;
|
|
890
904
|
}
|
|
891
905
|
const stackedCells = this.activeCell.focusGroup.focusableChildren;
|
|
892
|
-
|
|
906
|
+
const currFocusedIndex = stackedCells.findIndex(el => el.hasFocus() || el.hostElement?.nativeElement === document.activeElement);
|
|
893
907
|
if (args.shiftKey) {
|
|
894
|
-
|
|
895
|
-
|
|
896
|
-
|
|
908
|
+
if (currFocusedIndex === 0) {
|
|
909
|
+
args.stopImmediatePropagation();
|
|
910
|
+
args.preventDefault();
|
|
911
|
+
}
|
|
912
|
+
else {
|
|
913
|
+
this.stackedFocusedCellIndex = currFocusedIndex - 1;
|
|
897
914
|
}
|
|
898
915
|
}
|
|
899
916
|
else {
|
|
900
|
-
|
|
901
|
-
|
|
902
|
-
|
|
917
|
+
if (currFocusedIndex === stackedCells.length - 1) {
|
|
918
|
+
args.stopImmediatePropagation();
|
|
919
|
+
args.preventDefault();
|
|
903
920
|
}
|
|
904
|
-
|
|
905
|
-
|
|
906
|
-
if (nextStackedCell) {
|
|
907
|
-
if (nextStackedCell.hasFocus() || (isDocumentAvailable() && document.activeElement === nextStackedCell.hostElement.nativeElement)) {
|
|
908
|
-
// next cell is already focused (as a focusable child of the previous one), skip to the next one
|
|
909
|
-
nextIndex = args.shiftKey ? this.stackedFocusedCellIndex - 2 : this.stackedFocusedCellIndex + 2;
|
|
910
|
-
nextStackedCell = stackedCells[nextIndex];
|
|
921
|
+
else {
|
|
922
|
+
this.stackedFocusedCellIndex = currFocusedIndex + 1;
|
|
911
923
|
}
|
|
912
|
-
nextStackedCell.focus();
|
|
913
|
-
this.stackedFocusedCellIndex = nextIndex;
|
|
914
|
-
args.preventDefault();
|
|
915
924
|
}
|
|
916
925
|
}
|
|
917
926
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: NavigationService, deps: [{ token: i0.NgZone }, { token: i1.DomEventsService }, { token: i2.PagerContextService }, { token: i3.ScrollRequestService }, { token: i4.GroupsService }, { token: i5.DetailsService }, { token: i6.FocusRoot }, { token: i7.EditService }, { token: i0.ChangeDetectorRef }, { token: i8.ContextService }, { token: i9.ColumnResizingService }, { token: i10.FocusableDirective, optional: true }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
@@ -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.3.0-develop.
|
|
13
|
+
publishDate: 1754579625,
|
|
14
|
+
version: '19.3.0-develop.32',
|
|
15
15
|
licensingDocsUrl: 'https://www.telerik.com/kendo-angular-ui/my-license/'
|
|
16
16
|
};
|
|
@@ -223,7 +223,7 @@ export class CellComponent {
|
|
|
223
223
|
[class.k-grid-stack-edit-cell]="isEdited(col)"
|
|
224
224
|
[class.k-drag-cell]="isRowReorderColumn(col) && !isNew"
|
|
225
225
|
[class.k-command-cell]="isCommand(col)"
|
|
226
|
-
kendoGridFocusable>
|
|
226
|
+
[kendoGridFocusable]="!isCommand(col)">
|
|
227
227
|
<div class="k-grid-stack-header">
|
|
228
228
|
<ng-container *ngIf="!col.headerTemplateRef; else headerTemplate">
|
|
229
229
|
{{col.displayTitle}}
|
|
@@ -431,7 +431,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
|
|
|
431
431
|
[class.k-grid-stack-edit-cell]="isEdited(col)"
|
|
432
432
|
[class.k-drag-cell]="isRowReorderColumn(col) && !isNew"
|
|
433
433
|
[class.k-command-cell]="isCommand(col)"
|
|
434
|
-
kendoGridFocusable>
|
|
434
|
+
[kendoGridFocusable]="!isCommand(col)">
|
|
435
435
|
<div class="k-grid-stack-header">
|
|
436
436
|
<ng-container *ngIf="!col.headerTemplateRef; else headerTemplate">
|
|
437
437
|
{{col.displayTitle}}
|
|
@@ -7,7 +7,7 @@ import { AIPromptComponent, OutputViewComponent, PromptViewComponent, AIPromptCu
|
|
|
7
7
|
import { HttpClient, HttpRequest } from '@angular/common/http';
|
|
8
8
|
import { ContextService } from './../../../../common/provider.service';
|
|
9
9
|
import { ColumnInfoService } from './../../../../common/column-info.service';
|
|
10
|
-
import { convertDateStringsInFilter } from './utils';
|
|
10
|
+
import { convertDateStringsInFilter, GridToolbarAIResponseSuccessEvent, GridToolbarAIResponseErrorEvent } from './utils';
|
|
11
11
|
import { NgIf } from '@angular/common';
|
|
12
12
|
import * as i0 from "@angular/core";
|
|
13
13
|
import * as i1 from "@angular/common/http";
|
|
@@ -110,6 +110,12 @@ export class AiAssistantComponent {
|
|
|
110
110
|
}
|
|
111
111
|
processResponse(response) {
|
|
112
112
|
const responseBody = response.body;
|
|
113
|
+
const responseSuccessEvent = new GridToolbarAIResponseSuccessEvent(response);
|
|
114
|
+
this.aiToolDirective.responseSuccess.emit(responseSuccessEvent);
|
|
115
|
+
if (responseSuccessEvent.isDefaultPrevented()) {
|
|
116
|
+
this.deleteLoadingOutput();
|
|
117
|
+
return;
|
|
118
|
+
}
|
|
113
119
|
const isFilterable = Boolean(this.ctx.grid.filterable);
|
|
114
120
|
const isSortable = Boolean(this.ctx.grid.sortable);
|
|
115
121
|
const isGroupable = Boolean(this.ctx.grid.groupable);
|
|
@@ -132,21 +138,25 @@ export class AiAssistantComponent {
|
|
|
132
138
|
prompt: this.lastMessage,
|
|
133
139
|
output: responseContentStart.concat(responseContentBody).join(''),
|
|
134
140
|
};
|
|
135
|
-
this.
|
|
141
|
+
this.deleteLoadingOutput();
|
|
136
142
|
this.promptOutputs.unshift(output);
|
|
137
|
-
this.aiToolDirective.responseSuccess.emit(response);
|
|
138
143
|
}
|
|
139
144
|
handleError(error) {
|
|
145
|
+
const responseErrorEvent = new GridToolbarAIResponseErrorEvent(error);
|
|
146
|
+
this.aiToolDirective.responseError.emit(responseErrorEvent);
|
|
147
|
+
if (responseErrorEvent.isDefaultPrevented()) {
|
|
148
|
+
this.deleteLoadingOutput();
|
|
149
|
+
return;
|
|
150
|
+
}
|
|
140
151
|
const output = {
|
|
141
152
|
id: this.idCounter++,
|
|
142
153
|
prompt: this.lastMessage,
|
|
143
154
|
output: error.message
|
|
144
155
|
};
|
|
145
|
-
this.
|
|
156
|
+
this.deleteLoadingOutput();
|
|
146
157
|
this.promptOutputs.unshift(output);
|
|
147
|
-
this.aiToolDirective.responseError.emit(error);
|
|
148
158
|
}
|
|
149
|
-
|
|
159
|
+
deleteLoadingOutput() {
|
|
150
160
|
if (this.promptOutputs[0].id === this.loadingOutput.id) {
|
|
151
161
|
this.promptOutputs.splice(0, 1);
|
|
152
162
|
}
|
|
@@ -80,12 +80,12 @@ export class AIAssistantToolbarDirective extends ToolbarToolBase {
|
|
|
80
80
|
cancelRequest = new EventEmitter();
|
|
81
81
|
/**
|
|
82
82
|
* Emits an event when the AI Assistant tool completes the AI request successfully.
|
|
83
|
-
* The event contains the response from the AI service.
|
|
83
|
+
* The event contains the response from the AI service and is preventable to allow stopping the default response handling.
|
|
84
84
|
*/
|
|
85
85
|
responseSuccess = new EventEmitter();
|
|
86
86
|
/**
|
|
87
87
|
* Emits an event when the AI Assistant tool completes the AI request with an error.
|
|
88
|
-
* The event contains the response from the AI service.
|
|
88
|
+
* The event contains the error response from the AI service and is preventable to allow stopping the default error handling.
|
|
89
89
|
*/
|
|
90
90
|
responseError = new EventEmitter();
|
|
91
91
|
/**
|
|
@@ -3,6 +3,7 @@
|
|
|
3
3
|
* Licensed under commercial license. See LICENSE.md in the project root for more information
|
|
4
4
|
*-------------------------------------------------------------------------------------------*/
|
|
5
5
|
import { HttpHeaders } from "@angular/common/http";
|
|
6
|
+
import { PreventableEvent } from "@progress/kendo-angular-common";
|
|
6
7
|
/**
|
|
7
8
|
* @hidden
|
|
8
9
|
*/
|
|
@@ -45,3 +46,29 @@ export const isDateField = (fieldName, columns) => {
|
|
|
45
46
|
const column = columns.find((col) => col.field === fieldName);
|
|
46
47
|
return column?.filter === 'date' || column?.editor === 'date';
|
|
47
48
|
};
|
|
49
|
+
/**
|
|
50
|
+
* Represents the event data when the AI Assistant request completes successfully.
|
|
51
|
+
*/
|
|
52
|
+
export class GridToolbarAIResponseSuccessEvent extends PreventableEvent {
|
|
53
|
+
/**
|
|
54
|
+
* The HTTP response from the AI service.
|
|
55
|
+
*/
|
|
56
|
+
response;
|
|
57
|
+
constructor(response) {
|
|
58
|
+
super();
|
|
59
|
+
this.response = response;
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
/**
|
|
63
|
+
* Represents the event data when the AI Assistant request completes with an error.
|
|
64
|
+
*/
|
|
65
|
+
export class GridToolbarAIResponseErrorEvent extends PreventableEvent {
|
|
66
|
+
/**
|
|
67
|
+
* The HTTP error response from the AI service.
|
|
68
|
+
*/
|
|
69
|
+
error;
|
|
70
|
+
constructor(error) {
|
|
71
|
+
super();
|
|
72
|
+
this.error = error;
|
|
73
|
+
}
|
|
74
|
+
}
|
|
@@ -6,7 +6,7 @@ import * as i0 from '@angular/core';
|
|
|
6
6
|
import { EventEmitter, Injectable, SecurityContext, InjectionToken, Optional, Inject, Directive, SkipSelf, Input, isDevMode, QueryList, Component, ContentChildren, ContentChild, forwardRef, Host, Output, HostBinding, Pipe, TemplateRef, ChangeDetectionStrategy, ViewChildren, ViewChild, Self, NgZone, HostListener, ElementRef, ViewContainerRef, ViewEncapsulation, inject, Injector, NgModule } from '@angular/core';
|
|
7
7
|
import { merge, of, Subject, zip as zip$1, from, Subscription, interval, fromEvent, Observable, BehaviorSubject } from 'rxjs';
|
|
8
8
|
import * as i1$3 from '@progress/kendo-angular-common';
|
|
9
|
-
import { isDocumentAvailable, Keys, hasClasses as hasClasses$1, isPresent as isPresent$1, anyChanged, TemplateContextDirective, DraggableDirective, EventsOutsideAngularDirective, replaceMessagePlaceholder, isChanged as isChanged$1, KendoInput, guid, closest as closest$1, hasObservers, ResizeSensorComponent, closestInScope as closestInScope$1, isFocusable as isFocusable$1, getLicenseMessage, shouldShowValidationUI, WatermarkOverlayComponent,
|
|
9
|
+
import { isDocumentAvailable, Keys, hasClasses as hasClasses$1, isPresent as isPresent$1, anyChanged, TemplateContextDirective, DraggableDirective, EventsOutsideAngularDirective, replaceMessagePlaceholder, isChanged as isChanged$1, KendoInput, guid, closest as closest$1, hasObservers, ResizeSensorComponent, closestInScope as closestInScope$1, isFocusable as isFocusable$1, PreventableEvent as PreventableEvent$1, getLicenseMessage, shouldShowValidationUI, WatermarkOverlayComponent, ResizeBatchService } from '@progress/kendo-angular-common';
|
|
10
10
|
import * as i1 from '@angular/platform-browser';
|
|
11
11
|
import * as i1$1 from '@progress/kendo-angular-icons';
|
|
12
12
|
import { IconWrapperComponent, IconsService, KENDO_ICONS } from '@progress/kendo-angular-icons';
|
|
@@ -758,7 +758,6 @@ const isNavigable = element => !element.disabled && (isButton(element) || isNavi
|
|
|
758
758
|
*/
|
|
759
759
|
class DefaultFocusableElement {
|
|
760
760
|
renderer;
|
|
761
|
-
ctx;
|
|
762
761
|
get enabled() {
|
|
763
762
|
return this.focusable && !this.focusable.disabled;
|
|
764
763
|
}
|
|
@@ -767,9 +766,8 @@ class DefaultFocusableElement {
|
|
|
767
766
|
}
|
|
768
767
|
element;
|
|
769
768
|
focusable;
|
|
770
|
-
constructor(host, renderer
|
|
769
|
+
constructor(host, renderer) {
|
|
771
770
|
this.renderer = renderer;
|
|
772
|
-
this.ctx = ctx;
|
|
773
771
|
this.element = host.nativeElement;
|
|
774
772
|
this.focusable = findFocusable(this.element, false) || this.element;
|
|
775
773
|
}
|
|
@@ -777,17 +775,7 @@ class DefaultFocusableElement {
|
|
|
777
775
|
return this.canFocus() && isNavigable(this.element);
|
|
778
776
|
}
|
|
779
777
|
toggle(active) {
|
|
780
|
-
|
|
781
|
-
if (active) {
|
|
782
|
-
this.renderer.setAttribute(this.focusable, 'tabindex', '0');
|
|
783
|
-
}
|
|
784
|
-
else {
|
|
785
|
-
this.renderer.removeAttribute(this.focusable, 'tabindex');
|
|
786
|
-
}
|
|
787
|
-
}
|
|
788
|
-
else {
|
|
789
|
-
this.renderer.setAttribute(this.focusable, 'tabindex', active ? '0' : '-1');
|
|
790
|
-
}
|
|
778
|
+
this.renderer.setAttribute(this.focusable, 'tabIndex', active ? '0' : '-1');
|
|
791
779
|
}
|
|
792
780
|
focus() {
|
|
793
781
|
if (this.focusable) {
|
|
@@ -956,7 +944,7 @@ class FocusableDirective {
|
|
|
956
944
|
}
|
|
957
945
|
ngAfterViewInit() {
|
|
958
946
|
if (!this.element && this.ctx.navigable) {
|
|
959
|
-
this.element = new DefaultFocusableElement(this.hostElement, this.renderer
|
|
947
|
+
this.element = new DefaultFocusableElement(this.hostElement, this.renderer);
|
|
960
948
|
}
|
|
961
949
|
if (this.group && this.element) {
|
|
962
950
|
this.toggle(this.group.isActive);
|
|
@@ -3590,6 +3578,14 @@ class NavigationService {
|
|
|
3590
3578
|
// Timeout if focusOut doesn't fire very soon
|
|
3591
3579
|
interval(0).pipe(take(1))))))
|
|
3592
3580
|
.subscribe(() => this.onTabout()));
|
|
3581
|
+
this.subs.add(this.domEvents.cellClick
|
|
3582
|
+
.subscribe(() => {
|
|
3583
|
+
if (this.isStackedMode) {
|
|
3584
|
+
const stackedCells = this.activeCell.focusGroup.focusableChildren;
|
|
3585
|
+
const currFocusedIndex = stackedCells.findIndex(el => el.hasFocus() || el.hostElement?.nativeElement === document.activeElement);
|
|
3586
|
+
currFocusedIndex > -1 && (this.stackedFocusedCellIndex = currFocusedIndex);
|
|
3587
|
+
}
|
|
3588
|
+
}));
|
|
3593
3589
|
if (this.focusableParent) {
|
|
3594
3590
|
const element = new GridFocusableElement(this);
|
|
3595
3591
|
this.focusableParent.registerElement(element);
|
|
@@ -4038,6 +4034,9 @@ class NavigationService {
|
|
|
4038
4034
|
const confirm = !args.defaultPrevented && args.keyCode === Keys.Enter && isTextInput(args.target);
|
|
4039
4035
|
if (args.keyCode === Keys.Escape || args.keyCode === Keys.F2 || confirm) {
|
|
4040
4036
|
if (this.tableCellEntered && args.keyCode === Keys.F2 && this.activeRow.dataRowIndex > -1) {
|
|
4037
|
+
if (this.editService.isEditingCell()) {
|
|
4038
|
+
return;
|
|
4039
|
+
}
|
|
4041
4040
|
this.zone.run(() => {
|
|
4042
4041
|
this.editService.beginEdit(this.activeRow.dataRowIndex);
|
|
4043
4042
|
});
|
|
@@ -4214,6 +4213,7 @@ class NavigationService {
|
|
|
4214
4213
|
const stackedCell = closest(target, (el) => hasClasses$1(el, 'k-grid-stack-cell'));
|
|
4215
4214
|
const tableCell = closest(target, (el) => hasClasses$1(el, 'k-table-td'));
|
|
4216
4215
|
const isInStackedCell = closest(target, (el) => hasClasses$1(el, 'k-grid-stack-content'));
|
|
4216
|
+
const isInCommandCell = closest(target, (el) => hasClasses$1(el, 'k-command-cell'));
|
|
4217
4217
|
if (!stackedCell || !tableCell) {
|
|
4218
4218
|
return;
|
|
4219
4219
|
}
|
|
@@ -4235,7 +4235,9 @@ class NavigationService {
|
|
|
4235
4235
|
this.editService.closeCell(args);
|
|
4236
4236
|
this.activeCell.focusGroup.activate();
|
|
4237
4237
|
this.activeCell.focusGroup.focusableChildren[this.stackedFocusedCellIndex]?.focus();
|
|
4238
|
-
|
|
4238
|
+
if (!isInCommandCell) {
|
|
4239
|
+
args.preventDefault();
|
|
4240
|
+
}
|
|
4239
4241
|
}
|
|
4240
4242
|
}
|
|
4241
4243
|
stackedFocusedCellIndex = -1;
|
|
@@ -4249,29 +4251,24 @@ class NavigationService {
|
|
|
4249
4251
|
return;
|
|
4250
4252
|
}
|
|
4251
4253
|
const stackedCells = this.activeCell.focusGroup.focusableChildren;
|
|
4252
|
-
|
|
4254
|
+
const currFocusedIndex = stackedCells.findIndex(el => el.hasFocus() || el.hostElement?.nativeElement === document.activeElement);
|
|
4253
4255
|
if (args.shiftKey) {
|
|
4254
|
-
|
|
4255
|
-
|
|
4256
|
-
|
|
4256
|
+
if (currFocusedIndex === 0) {
|
|
4257
|
+
args.stopImmediatePropagation();
|
|
4258
|
+
args.preventDefault();
|
|
4259
|
+
}
|
|
4260
|
+
else {
|
|
4261
|
+
this.stackedFocusedCellIndex = currFocusedIndex - 1;
|
|
4257
4262
|
}
|
|
4258
4263
|
}
|
|
4259
4264
|
else {
|
|
4260
|
-
|
|
4261
|
-
|
|
4262
|
-
|
|
4265
|
+
if (currFocusedIndex === stackedCells.length - 1) {
|
|
4266
|
+
args.stopImmediatePropagation();
|
|
4267
|
+
args.preventDefault();
|
|
4263
4268
|
}
|
|
4264
|
-
|
|
4265
|
-
|
|
4266
|
-
if (nextStackedCell) {
|
|
4267
|
-
if (nextStackedCell.hasFocus() || (isDocumentAvailable() && document.activeElement === nextStackedCell.hostElement.nativeElement)) {
|
|
4268
|
-
// next cell is already focused (as a focusable child of the previous one), skip to the next one
|
|
4269
|
-
nextIndex = args.shiftKey ? this.stackedFocusedCellIndex - 2 : this.stackedFocusedCellIndex + 2;
|
|
4270
|
-
nextStackedCell = stackedCells[nextIndex];
|
|
4269
|
+
else {
|
|
4270
|
+
this.stackedFocusedCellIndex = currFocusedIndex + 1;
|
|
4271
4271
|
}
|
|
4272
|
-
nextStackedCell.focus();
|
|
4273
|
-
this.stackedFocusedCellIndex = nextIndex;
|
|
4274
|
-
args.preventDefault();
|
|
4275
4272
|
}
|
|
4276
4273
|
}
|
|
4277
4274
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: NavigationService, deps: [{ token: i0.NgZone }, { token: DomEventsService }, { token: i53.PagerContextService }, { token: ScrollRequestService }, { token: GroupsService }, { token: DetailsService }, { token: FocusRoot }, { token: EditService }, { token: i0.ChangeDetectorRef }, { token: ContextService }, { token: ColumnResizingService }, { token: FocusableDirective, optional: true }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
@@ -19716,7 +19713,7 @@ class CellComponent {
|
|
|
19716
19713
|
[class.k-grid-stack-edit-cell]="isEdited(col)"
|
|
19717
19714
|
[class.k-drag-cell]="isRowReorderColumn(col) && !isNew"
|
|
19718
19715
|
[class.k-command-cell]="isCommand(col)"
|
|
19719
|
-
kendoGridFocusable>
|
|
19716
|
+
[kendoGridFocusable]="!isCommand(col)">
|
|
19720
19717
|
<div class="k-grid-stack-header">
|
|
19721
19718
|
<ng-container *ngIf="!col.headerTemplateRef; else headerTemplate">
|
|
19722
19719
|
{{col.displayTitle}}
|
|
@@ -19924,7 +19921,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
|
|
|
19924
19921
|
[class.k-grid-stack-edit-cell]="isEdited(col)"
|
|
19925
19922
|
[class.k-drag-cell]="isRowReorderColumn(col) && !isNew"
|
|
19926
19923
|
[class.k-command-cell]="isCommand(col)"
|
|
19927
|
-
kendoGridFocusable>
|
|
19924
|
+
[kendoGridFocusable]="!isCommand(col)">
|
|
19928
19925
|
<div class="k-grid-stack-header">
|
|
19929
19926
|
<ng-container *ngIf="!col.headerTemplateRef; else headerTemplate">
|
|
19930
19927
|
{{col.displayTitle}}
|
|
@@ -21998,8 +21995,8 @@ const packageMetadata = {
|
|
|
21998
21995
|
productName: 'Kendo UI for Angular',
|
|
21999
21996
|
productCode: 'KENDOUIANGULAR',
|
|
22000
21997
|
productCodes: ['KENDOUIANGULAR'],
|
|
22001
|
-
publishDate:
|
|
22002
|
-
version: '19.3.0-develop.
|
|
21998
|
+
publishDate: 1754579625,
|
|
21999
|
+
version: '19.3.0-develop.32',
|
|
22003
22000
|
licensingDocsUrl: 'https://www.telerik.com/kendo-angular-ui/my-license/'
|
|
22004
22001
|
};
|
|
22005
22002
|
|
|
@@ -28621,6 +28618,32 @@ const isDateField = (fieldName, columns) => {
|
|
|
28621
28618
|
const column = columns.find((col) => col.field === fieldName);
|
|
28622
28619
|
return column?.filter === 'date' || column?.editor === 'date';
|
|
28623
28620
|
};
|
|
28621
|
+
/**
|
|
28622
|
+
* Represents the event data when the AI Assistant request completes successfully.
|
|
28623
|
+
*/
|
|
28624
|
+
class GridToolbarAIResponseSuccessEvent extends PreventableEvent$1 {
|
|
28625
|
+
/**
|
|
28626
|
+
* The HTTP response from the AI service.
|
|
28627
|
+
*/
|
|
28628
|
+
response;
|
|
28629
|
+
constructor(response) {
|
|
28630
|
+
super();
|
|
28631
|
+
this.response = response;
|
|
28632
|
+
}
|
|
28633
|
+
}
|
|
28634
|
+
/**
|
|
28635
|
+
* Represents the event data when the AI Assistant request completes with an error.
|
|
28636
|
+
*/
|
|
28637
|
+
class GridToolbarAIResponseErrorEvent extends PreventableEvent$1 {
|
|
28638
|
+
/**
|
|
28639
|
+
* The HTTP error response from the AI service.
|
|
28640
|
+
*/
|
|
28641
|
+
error;
|
|
28642
|
+
constructor(error) {
|
|
28643
|
+
super();
|
|
28644
|
+
this.error = error;
|
|
28645
|
+
}
|
|
28646
|
+
}
|
|
28624
28647
|
|
|
28625
28648
|
/**
|
|
28626
28649
|
* @hidden
|
|
@@ -28719,6 +28742,12 @@ class AiAssistantComponent {
|
|
|
28719
28742
|
}
|
|
28720
28743
|
processResponse(response) {
|
|
28721
28744
|
const responseBody = response.body;
|
|
28745
|
+
const responseSuccessEvent = new GridToolbarAIResponseSuccessEvent(response);
|
|
28746
|
+
this.aiToolDirective.responseSuccess.emit(responseSuccessEvent);
|
|
28747
|
+
if (responseSuccessEvent.isDefaultPrevented()) {
|
|
28748
|
+
this.deleteLoadingOutput();
|
|
28749
|
+
return;
|
|
28750
|
+
}
|
|
28722
28751
|
const isFilterable = Boolean(this.ctx.grid.filterable);
|
|
28723
28752
|
const isSortable = Boolean(this.ctx.grid.sortable);
|
|
28724
28753
|
const isGroupable = Boolean(this.ctx.grid.groupable);
|
|
@@ -28741,21 +28770,25 @@ class AiAssistantComponent {
|
|
|
28741
28770
|
prompt: this.lastMessage,
|
|
28742
28771
|
output: responseContentStart.concat(responseContentBody).join(''),
|
|
28743
28772
|
};
|
|
28744
|
-
this.
|
|
28773
|
+
this.deleteLoadingOutput();
|
|
28745
28774
|
this.promptOutputs.unshift(output);
|
|
28746
|
-
this.aiToolDirective.responseSuccess.emit(response);
|
|
28747
28775
|
}
|
|
28748
28776
|
handleError(error) {
|
|
28777
|
+
const responseErrorEvent = new GridToolbarAIResponseErrorEvent(error);
|
|
28778
|
+
this.aiToolDirective.responseError.emit(responseErrorEvent);
|
|
28779
|
+
if (responseErrorEvent.isDefaultPrevented()) {
|
|
28780
|
+
this.deleteLoadingOutput();
|
|
28781
|
+
return;
|
|
28782
|
+
}
|
|
28749
28783
|
const output = {
|
|
28750
28784
|
id: this.idCounter++,
|
|
28751
28785
|
prompt: this.lastMessage,
|
|
28752
28786
|
output: error.message
|
|
28753
28787
|
};
|
|
28754
|
-
this.
|
|
28788
|
+
this.deleteLoadingOutput();
|
|
28755
28789
|
this.promptOutputs.unshift(output);
|
|
28756
|
-
this.aiToolDirective.responseError.emit(error);
|
|
28757
28790
|
}
|
|
28758
|
-
|
|
28791
|
+
deleteLoadingOutput() {
|
|
28759
28792
|
if (this.promptOutputs[0].id === this.loadingOutput.id) {
|
|
28760
28793
|
this.promptOutputs.splice(0, 1);
|
|
28761
28794
|
}
|
|
@@ -28960,12 +28993,12 @@ class AIAssistantToolbarDirective extends ToolbarToolBase {
|
|
|
28960
28993
|
cancelRequest = new EventEmitter();
|
|
28961
28994
|
/**
|
|
28962
28995
|
* Emits an event when the AI Assistant tool completes the AI request successfully.
|
|
28963
|
-
* The event contains the response from the AI service.
|
|
28996
|
+
* The event contains the response from the AI service and is preventable to allow stopping the default response handling.
|
|
28964
28997
|
*/
|
|
28965
28998
|
responseSuccess = new EventEmitter();
|
|
28966
28999
|
/**
|
|
28967
29000
|
* Emits an event when the AI Assistant tool completes the AI request with an error.
|
|
28968
|
-
* The event contains the response from the AI service.
|
|
29001
|
+
* The event contains the error response from the AI service and is preventable to allow stopping the default error handling.
|
|
28969
29002
|
*/
|
|
28970
29003
|
responseError = new EventEmitter();
|
|
28971
29004
|
/**
|
|
@@ -30564,6 +30597,7 @@ class GridComponent {
|
|
|
30564
30597
|
*/
|
|
30565
30598
|
closeRow(index) {
|
|
30566
30599
|
this.editService.close(index);
|
|
30600
|
+
this.isStacked && (this.navigationService.stackedCellEntered = false);
|
|
30567
30601
|
}
|
|
30568
30602
|
/**
|
|
30569
30603
|
* Creates a new row editor ([see example]({% slug inline_editing_grid %}#toc-adding-records-1)).
|
|
@@ -37636,5 +37670,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
|
|
|
37636
37670
|
* Generated bundle index. Do not edit.
|
|
37637
37671
|
*/
|
|
37638
37672
|
|
|
37639
|
-
export { AIAssistantToolbarDirective, AddCommandDirective, AddCommandToolbarDirective, AfterEqFilterOperatorComponent, AfterFilterOperatorComponent, AutoCompleteFilterCellComponent, BaseFilterCellComponent, BeforeEqFilterOperatorComponent, BeforeFilterOperatorComponent, BooleanFilterCellComponent, BooleanFilterComponent, BooleanFilterMenuComponent, BooleanFilterRadioButtonDirective, BrowserSupportService, CELL_CONTEXT, CancelCommandDirective, CancelCommandToolbarDirective, CellCloseEvent, CellComponent, CellLoadingTemplateDirective, CellSelectionAggregateService, CellSelectionService, CellTemplateDirective, ChangeNotificationService, CheckboxColumnComponent, ColGroupComponent, ColumnBase, ColumnChooserComponent, ColumnChooserToolbarDirective, ColumnComponent, ColumnGroupComponent, ColumnHandleDirective, ColumnInfoService, ColumnListComponent, ColumnLockedChangeEvent, ColumnMenuAutoSizeAllColumnsComponent, ColumnMenuAutoSizeColumnComponent, ColumnMenuChooserComponent, ColumnMenuComponent, ColumnMenuContainerComponent, ColumnMenuFilterComponent, ColumnMenuItemComponent, ColumnMenuItemContentTemplateDirective, ColumnMenuItemDirective, ColumnMenuLockComponent, ColumnMenuPositionComponent, ColumnMenuService, ColumnMenuSortComponent, ColumnMenuStickComponent, ColumnMenuTemplateDirective, ColumnReorderEvent, ColumnReorderService, ColumnResizingService, ColumnStickyChangeEvent, ColumnVisibilityChangeEvent, ColumnsContainer, CommandColumnComponent, ContainsFilterOperatorComponent, ContextService, CustomMessagesComponent, DEFAULT_AI_REQUEST_OPTIONS, DEFAULT_SCROLLER_FACTORY, DataBindingDirective, DateFilterCellComponent, DateFilterComponent, DateFilterMenuComponent, DateFilterMenuInputComponent, DetailCollapseEvent, DetailExpandEvent, DetailTemplateDirective, DetailsService, DoesNotContainFilterOperatorComponent, DomEventsService, DragAndDropService, DragHintService, DropCueService, EditCommandDirective, EditCommandToolbarDirective, EditService as EditServiceClass, EditTemplateDirective, EditingDirectiveBase, EndsWithFilterOperatorComponent, EqualFilterOperatorComponent, ExcelCommandDirective, ExcelCommandToolbarDirective, ExcelComponent, ExcelExportEvent, ExcelModule, ExcelService, ExpandDetailsDirective, ExpandGroupDirective, ExternalEditingDirective, FieldAccessorPipe, FilterCellComponent, FilterCellHostDirective, FilterCellOperatorsComponent, FilterCellTemplateDirective, FilterCellWrapperComponent, FilterCommandToolbarDirective, FilterInputDirective, FilterMenuComponent, FilterMenuContainerComponent, FilterMenuDropDownListDirective, FilterMenuHostDirective, FilterMenuInputWrapperComponent, FilterMenuTemplateDirective, FilterRowComponent, FilterService, FocusRoot, FocusableDirective, FooterComponent, FooterTemplateDirective, GreaterFilterOperatorComponent, GreaterOrEqualToFilterOperatorComponent, GridClipboardDirective, GridComponent, GridModule, GridSpacerComponent, GridTableDirective, GridToolbarFocusableDirective, GridToolbarNavigationService, GroupBindingDirective, GroupCommandToolbarDirective, GroupFooterTemplateDirective, GroupHeaderColumnTemplateDirective, GroupHeaderComponent, GroupHeaderTemplateDirective, GroupInfoService, GroupPanelComponent, GroupsService, HeaderComponent, HeaderTemplateDirective, HighlightDirective, IdService, InCellEditingDirective, IsEmptyFilterOperatorComponent, IsNotEmptyFilterOperatorComponent, IsNotNullFilterOperatorComponent, IsNullFilterOperatorComponent, KENDO_GRID, KENDO_GRID_BODY_EXPORTS, KENDO_GRID_COLUMN_DRAGANDDROP, KENDO_GRID_COLUMN_MENU_DECLARATIONS, KENDO_GRID_COLUMN_MENU_EXPORTS, KENDO_GRID_DECLARATIONS, KENDO_GRID_EXCEL_EXPORT, KENDO_GRID_EXPORTS, KENDO_GRID_FILTER_MENU, KENDO_GRID_FILTER_MENU_EXPORTS, KENDO_GRID_FILTER_OPERATORS, KENDO_GRID_FILTER_ROW, KENDO_GRID_FILTER_ROW_EXPORTS, KENDO_GRID_FILTER_SHARED, KENDO_GRID_FOOTER_EXPORTS, KENDO_GRID_GROUP_EXPORTS, KENDO_GRID_HEADER_EXPORTS, KENDO_GRID_PDF_EXPORT, KENDO_GRID_SHARED, LessFilterOperatorComponent, LessOrEqualToFilterOperatorComponent, ListComponent, LoadingComponent, LoadingTemplateDirective, LocalDataChangesService, LogicalCellDirective, LogicalRowDirective, MenuTabbingService, NavigationService, NoRecordsTemplateDirective, NotEqualFilterOperatorComponent, NumericFilterCellComponent, NumericFilterComponent, NumericFilterMenuComponent, NumericFilterMenuInputComponent, PDFCommandDirective, PDFCommandToolbarDirective, PDFComponent, PDFMarginComponent, PDFModule, PDFService, PDFTemplateDirective, PopupCloseEvent, ReactiveEditingDirective, RedoCommandToolbarDirective, RemoveCommandDirective, RemoveCommandToolbarDirective, ResizableContainerDirective, ResizeService, ResponsiveService, RowDragHandleTemplateDirective, RowDragHintTemplateDirective, RowEditingDirectiveBase, RowReorderColumnComponent, RowReorderService, SaveCommandDirective, SaveCommandToolbarDirective, ScrollRequestService, ScrollSyncService, SelectAllCheckboxDirective, SelectAllToolbarToolComponent, SelectionCheckboxDirective, SelectionDirective, SelectionService, SinglePopupService, SizingOptionsService, Skip, SortCommandToolbarDirective, SortService, SpanColumnComponent, StartsWithFilterOperatorComponent, StatusBarTemplateDirective, StringFilterCellComponent, StringFilterComponent, StringFilterMenuComponent, StringFilterMenuInputComponent, SuspendService, TableBodyComponent, TableDirective, TemplateEditingDirective, ToolbarComponent, ToolbarTemplateDirective, UndoCommandToolbarDirective, UndoRedoDirective, UndoRedoEvent, convertDateStringsInFilter, count, defaultTrackBy, hasFilterMenu, hasFilterRow, isDateField, isFilterable, slice };
|
|
37673
|
+
export { AIAssistantToolbarDirective, AddCommandDirective, AddCommandToolbarDirective, AfterEqFilterOperatorComponent, AfterFilterOperatorComponent, AutoCompleteFilterCellComponent, BaseFilterCellComponent, BeforeEqFilterOperatorComponent, BeforeFilterOperatorComponent, BooleanFilterCellComponent, BooleanFilterComponent, BooleanFilterMenuComponent, BooleanFilterRadioButtonDirective, BrowserSupportService, CELL_CONTEXT, CancelCommandDirective, CancelCommandToolbarDirective, CellCloseEvent, CellComponent, CellLoadingTemplateDirective, CellSelectionAggregateService, CellSelectionService, CellTemplateDirective, ChangeNotificationService, CheckboxColumnComponent, ColGroupComponent, ColumnBase, ColumnChooserComponent, ColumnChooserToolbarDirective, ColumnComponent, ColumnGroupComponent, ColumnHandleDirective, ColumnInfoService, ColumnListComponent, ColumnLockedChangeEvent, ColumnMenuAutoSizeAllColumnsComponent, ColumnMenuAutoSizeColumnComponent, ColumnMenuChooserComponent, ColumnMenuComponent, ColumnMenuContainerComponent, ColumnMenuFilterComponent, ColumnMenuItemComponent, ColumnMenuItemContentTemplateDirective, ColumnMenuItemDirective, ColumnMenuLockComponent, ColumnMenuPositionComponent, ColumnMenuService, ColumnMenuSortComponent, ColumnMenuStickComponent, ColumnMenuTemplateDirective, ColumnReorderEvent, ColumnReorderService, ColumnResizingService, ColumnStickyChangeEvent, ColumnVisibilityChangeEvent, ColumnsContainer, CommandColumnComponent, ContainsFilterOperatorComponent, ContextService, CustomMessagesComponent, DEFAULT_AI_REQUEST_OPTIONS, DEFAULT_SCROLLER_FACTORY, DataBindingDirective, DateFilterCellComponent, DateFilterComponent, DateFilterMenuComponent, DateFilterMenuInputComponent, DetailCollapseEvent, DetailExpandEvent, DetailTemplateDirective, DetailsService, DoesNotContainFilterOperatorComponent, DomEventsService, DragAndDropService, DragHintService, DropCueService, EditCommandDirective, EditCommandToolbarDirective, EditService as EditServiceClass, EditTemplateDirective, EditingDirectiveBase, EndsWithFilterOperatorComponent, EqualFilterOperatorComponent, ExcelCommandDirective, ExcelCommandToolbarDirective, ExcelComponent, ExcelExportEvent, ExcelModule, ExcelService, ExpandDetailsDirective, ExpandGroupDirective, ExternalEditingDirective, FieldAccessorPipe, FilterCellComponent, FilterCellHostDirective, FilterCellOperatorsComponent, FilterCellTemplateDirective, FilterCellWrapperComponent, FilterCommandToolbarDirective, FilterInputDirective, FilterMenuComponent, FilterMenuContainerComponent, FilterMenuDropDownListDirective, FilterMenuHostDirective, FilterMenuInputWrapperComponent, FilterMenuTemplateDirective, FilterRowComponent, FilterService, FocusRoot, FocusableDirective, FooterComponent, FooterTemplateDirective, GreaterFilterOperatorComponent, GreaterOrEqualToFilterOperatorComponent, GridClipboardDirective, GridComponent, GridModule, GridSpacerComponent, GridTableDirective, GridToolbarAIResponseErrorEvent, GridToolbarAIResponseSuccessEvent, GridToolbarFocusableDirective, GridToolbarNavigationService, GroupBindingDirective, GroupCommandToolbarDirective, GroupFooterTemplateDirective, GroupHeaderColumnTemplateDirective, GroupHeaderComponent, GroupHeaderTemplateDirective, GroupInfoService, GroupPanelComponent, GroupsService, HeaderComponent, HeaderTemplateDirective, HighlightDirective, IdService, InCellEditingDirective, IsEmptyFilterOperatorComponent, IsNotEmptyFilterOperatorComponent, IsNotNullFilterOperatorComponent, IsNullFilterOperatorComponent, KENDO_GRID, KENDO_GRID_BODY_EXPORTS, KENDO_GRID_COLUMN_DRAGANDDROP, KENDO_GRID_COLUMN_MENU_DECLARATIONS, KENDO_GRID_COLUMN_MENU_EXPORTS, KENDO_GRID_DECLARATIONS, KENDO_GRID_EXCEL_EXPORT, KENDO_GRID_EXPORTS, KENDO_GRID_FILTER_MENU, KENDO_GRID_FILTER_MENU_EXPORTS, KENDO_GRID_FILTER_OPERATORS, KENDO_GRID_FILTER_ROW, KENDO_GRID_FILTER_ROW_EXPORTS, KENDO_GRID_FILTER_SHARED, KENDO_GRID_FOOTER_EXPORTS, KENDO_GRID_GROUP_EXPORTS, KENDO_GRID_HEADER_EXPORTS, KENDO_GRID_PDF_EXPORT, KENDO_GRID_SHARED, LessFilterOperatorComponent, LessOrEqualToFilterOperatorComponent, ListComponent, LoadingComponent, LoadingTemplateDirective, LocalDataChangesService, LogicalCellDirective, LogicalRowDirective, MenuTabbingService, NavigationService, NoRecordsTemplateDirective, NotEqualFilterOperatorComponent, NumericFilterCellComponent, NumericFilterComponent, NumericFilterMenuComponent, NumericFilterMenuInputComponent, PDFCommandDirective, PDFCommandToolbarDirective, PDFComponent, PDFMarginComponent, PDFModule, PDFService, PDFTemplateDirective, PopupCloseEvent, ReactiveEditingDirective, RedoCommandToolbarDirective, RemoveCommandDirective, RemoveCommandToolbarDirective, ResizableContainerDirective, ResizeService, ResponsiveService, RowDragHandleTemplateDirective, RowDragHintTemplateDirective, RowEditingDirectiveBase, RowReorderColumnComponent, RowReorderService, SaveCommandDirective, SaveCommandToolbarDirective, ScrollRequestService, ScrollSyncService, SelectAllCheckboxDirective, SelectAllToolbarToolComponent, SelectionCheckboxDirective, SelectionDirective, SelectionService, SinglePopupService, SizingOptionsService, Skip, SortCommandToolbarDirective, SortService, SpanColumnComponent, StartsWithFilterOperatorComponent, StatusBarTemplateDirective, StringFilterCellComponent, StringFilterComponent, StringFilterMenuComponent, StringFilterMenuInputComponent, SuspendService, TableBodyComponent, TableDirective, TemplateEditingDirective, ToolbarComponent, ToolbarTemplateDirective, UndoCommandToolbarDirective, UndoRedoDirective, UndoRedoEvent, convertDateStringsInFilter, count, defaultTrackBy, hasFilterMenu, hasFilterRow, isDateField, isFilterable, slice };
|
|
37640
37674
|
|
|
@@ -4,18 +4,16 @@
|
|
|
4
4
|
*-------------------------------------------------------------------------------------------*/
|
|
5
5
|
import { ElementRef, Renderer2 } from '@angular/core';
|
|
6
6
|
import { FocusableElement } from './focusable-element.interface';
|
|
7
|
-
import { ContextService } from '../common/provider.service';
|
|
8
7
|
/**
|
|
9
8
|
* @hidden
|
|
10
9
|
*/
|
|
11
10
|
export declare class DefaultFocusableElement implements FocusableElement {
|
|
12
11
|
private renderer;
|
|
13
|
-
private ctx;
|
|
14
12
|
private get enabled();
|
|
15
13
|
private get visible();
|
|
16
14
|
private element;
|
|
17
15
|
private focusable;
|
|
18
|
-
constructor(host: ElementRef, renderer: Renderer2
|
|
16
|
+
constructor(host: ElementRef, renderer: Renderer2);
|
|
19
17
|
isNavigable(): boolean;
|
|
20
18
|
toggle(active: boolean): void;
|
|
21
19
|
focus(): void;
|
|
@@ -126,7 +126,7 @@ export declare class NavigationService implements OnDestroy {
|
|
|
126
126
|
private calculateRowspanOffset;
|
|
127
127
|
private get isStackedMode();
|
|
128
128
|
private handleStackedKeydown;
|
|
129
|
-
|
|
129
|
+
stackedFocusedCellIndex: number;
|
|
130
130
|
tableCellEntered: boolean;
|
|
131
131
|
stackedCellEntered: boolean;
|
|
132
132
|
private handleStackedTabNavigation;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@progress/kendo-angular-grid",
|
|
3
|
-
"version": "19.3.0-develop.
|
|
3
|
+
"version": "19.3.0-develop.32",
|
|
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",
|
|
@@ -26,7 +26,7 @@
|
|
|
26
26
|
"package": {
|
|
27
27
|
"productName": "Kendo UI for Angular",
|
|
28
28
|
"productCode": "KENDOUIANGULAR",
|
|
29
|
-
"publishDate":
|
|
29
|
+
"publishDate": 1754579625,
|
|
30
30
|
"licensingDocsUrl": "https://www.telerik.com/kendo-angular-ui/my-license/"
|
|
31
31
|
}
|
|
32
32
|
},
|
|
@@ -39,29 +39,29 @@
|
|
|
39
39
|
"@progress/kendo-data-query": "^1.0.0",
|
|
40
40
|
"@progress/kendo-drawing": "^1.21.0",
|
|
41
41
|
"@progress/kendo-licensing": "^1.7.0",
|
|
42
|
-
"@progress/kendo-angular-buttons": "19.3.0-develop.
|
|
43
|
-
"@progress/kendo-angular-common": "19.3.0-develop.
|
|
44
|
-
"@progress/kendo-angular-dateinputs": "19.3.0-develop.
|
|
45
|
-
"@progress/kendo-angular-layout": "19.3.0-develop.
|
|
46
|
-
"@progress/kendo-angular-navigation": "19.3.0-develop.
|
|
47
|
-
"@progress/kendo-angular-dropdowns": "19.3.0-develop.
|
|
48
|
-
"@progress/kendo-angular-excel-export": "19.3.0-develop.
|
|
49
|
-
"@progress/kendo-angular-icons": "19.3.0-develop.
|
|
50
|
-
"@progress/kendo-angular-inputs": "19.3.0-develop.
|
|
51
|
-
"@progress/kendo-angular-conversational-ui": "19.3.0-develop.
|
|
52
|
-
"@progress/kendo-angular-intl": "19.3.0-develop.
|
|
53
|
-
"@progress/kendo-angular-l10n": "19.3.0-develop.
|
|
54
|
-
"@progress/kendo-angular-label": "19.3.0-develop.
|
|
55
|
-
"@progress/kendo-angular-pager": "19.3.0-develop.
|
|
56
|
-
"@progress/kendo-angular-pdf-export": "19.3.0-develop.
|
|
57
|
-
"@progress/kendo-angular-popup": "19.3.0-develop.
|
|
58
|
-
"@progress/kendo-angular-toolbar": "19.3.0-develop.
|
|
59
|
-
"@progress/kendo-angular-utils": "19.3.0-develop.
|
|
42
|
+
"@progress/kendo-angular-buttons": "19.3.0-develop.32",
|
|
43
|
+
"@progress/kendo-angular-common": "19.3.0-develop.32",
|
|
44
|
+
"@progress/kendo-angular-dateinputs": "19.3.0-develop.32",
|
|
45
|
+
"@progress/kendo-angular-layout": "19.3.0-develop.32",
|
|
46
|
+
"@progress/kendo-angular-navigation": "19.3.0-develop.32",
|
|
47
|
+
"@progress/kendo-angular-dropdowns": "19.3.0-develop.32",
|
|
48
|
+
"@progress/kendo-angular-excel-export": "19.3.0-develop.32",
|
|
49
|
+
"@progress/kendo-angular-icons": "19.3.0-develop.32",
|
|
50
|
+
"@progress/kendo-angular-inputs": "19.3.0-develop.32",
|
|
51
|
+
"@progress/kendo-angular-conversational-ui": "19.3.0-develop.32",
|
|
52
|
+
"@progress/kendo-angular-intl": "19.3.0-develop.32",
|
|
53
|
+
"@progress/kendo-angular-l10n": "19.3.0-develop.32",
|
|
54
|
+
"@progress/kendo-angular-label": "19.3.0-develop.32",
|
|
55
|
+
"@progress/kendo-angular-pager": "19.3.0-develop.32",
|
|
56
|
+
"@progress/kendo-angular-pdf-export": "19.3.0-develop.32",
|
|
57
|
+
"@progress/kendo-angular-popup": "19.3.0-develop.32",
|
|
58
|
+
"@progress/kendo-angular-toolbar": "19.3.0-develop.32",
|
|
59
|
+
"@progress/kendo-angular-utils": "19.3.0-develop.32",
|
|
60
60
|
"rxjs": "^6.5.3 || ^7.0.0"
|
|
61
61
|
},
|
|
62
62
|
"dependencies": {
|
|
63
63
|
"tslib": "^2.3.1",
|
|
64
|
-
"@progress/kendo-angular-schematics": "19.3.0-develop.
|
|
64
|
+
"@progress/kendo-angular-schematics": "19.3.0-develop.32",
|
|
65
65
|
"@progress/kendo-common": "^1.0.1",
|
|
66
66
|
"@progress/kendo-file-saver": "^1.0.0"
|
|
67
67
|
},
|
|
@@ -41,7 +41,7 @@ export declare class AiAssistantComponent implements OnDestroy, AfterViewInit {
|
|
|
41
41
|
private sendPromptRequest;
|
|
42
42
|
private processResponse;
|
|
43
43
|
private handleError;
|
|
44
|
-
private
|
|
44
|
+
private deleteLoadingOutput;
|
|
45
45
|
private unsubscribeCurrentRequest;
|
|
46
46
|
private processArrayResponse;
|
|
47
47
|
private processFilterResponse;
|
|
@@ -8,8 +8,7 @@ import { SVGIcon } from '@progress/kendo-svg-icons';
|
|
|
8
8
|
import { ContextService } from '../../../../common/provider.service';
|
|
9
9
|
import { ToolbarToolBase } from '../../../../common/toolbar-tool-base.directive';
|
|
10
10
|
import { WindowService } from '@progress/kendo-angular-dialog';
|
|
11
|
-
import {
|
|
12
|
-
import { GridToolbarAIOpenEvent, GridToolbarAIPromptSettings, GridToolbarAIWindowSettings, GridToolbarAIRequestData, GridToolbarAIRequestResponse, GridToolbarAIRequestOptions } from './utils';
|
|
11
|
+
import { GridToolbarAIOpenEvent, GridToolbarAIPromptSettings, GridToolbarAIWindowSettings, GridToolbarAIRequestData, GridToolbarAIRequestOptions, GridToolbarAIResponseSuccessEvent, GridToolbarAIResponseErrorEvent } from './utils';
|
|
13
12
|
import * as i0 from "@angular/core";
|
|
14
13
|
/**
|
|
15
14
|
* Represents an AI Assistant tool of the Grid.
|
|
@@ -76,14 +75,14 @@ export declare class AIAssistantToolbarDirective extends ToolbarToolBase impleme
|
|
|
76
75
|
cancelRequest: EventEmitter<undefined>;
|
|
77
76
|
/**
|
|
78
77
|
* Emits an event when the AI Assistant tool completes the AI request successfully.
|
|
79
|
-
* The event contains the response from the AI service.
|
|
78
|
+
* The event contains the response from the AI service and is preventable to allow stopping the default response handling.
|
|
80
79
|
*/
|
|
81
|
-
responseSuccess: EventEmitter<
|
|
80
|
+
responseSuccess: EventEmitter<GridToolbarAIResponseSuccessEvent>;
|
|
82
81
|
/**
|
|
83
82
|
* Emits an event when the AI Assistant tool completes the AI request with an error.
|
|
84
|
-
* The event contains the response from the AI service.
|
|
83
|
+
* The event contains the error response from the AI service and is preventable to allow stopping the default error handling.
|
|
85
84
|
*/
|
|
86
|
-
responseError: EventEmitter<
|
|
85
|
+
responseError: EventEmitter<GridToolbarAIResponseErrorEvent>;
|
|
87
86
|
/**
|
|
88
87
|
* Emits an event when the AI Assistant tool closes.
|
|
89
88
|
*/
|
|
@@ -2,7 +2,8 @@
|
|
|
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 { HttpHeaders } from "@angular/common/http";
|
|
5
|
+
import { HttpHeaders, HttpResponse, HttpErrorResponse } from "@angular/common/http";
|
|
6
|
+
import { PreventableEvent } from "@progress/kendo-angular-common";
|
|
6
7
|
import { AIPromptComponent, AIPromptSettings } from "@progress/kendo-angular-conversational-ui";
|
|
7
8
|
import { WindowComponent, WindowSettings } from "@progress/kendo-angular-dialog";
|
|
8
9
|
import { CompositeFilterDescriptor, FilterDescriptor, GroupDescriptor, SortDescriptor } from "@progress/kendo-data-query";
|
|
@@ -108,3 +109,23 @@ export declare const convertDateStringsInFilter: (filter: any, columns: any[]) =
|
|
|
108
109
|
* @hidden
|
|
109
110
|
*/
|
|
110
111
|
export declare const isDateField: (fieldName: string, columns: any[]) => boolean;
|
|
112
|
+
/**
|
|
113
|
+
* Represents the event data when the AI Assistant request completes successfully.
|
|
114
|
+
*/
|
|
115
|
+
export declare class GridToolbarAIResponseSuccessEvent extends PreventableEvent {
|
|
116
|
+
/**
|
|
117
|
+
* The HTTP response from the AI service.
|
|
118
|
+
*/
|
|
119
|
+
response: HttpResponse<GridToolbarAIRequestResponse>;
|
|
120
|
+
constructor(response: HttpResponse<GridToolbarAIRequestResponse>);
|
|
121
|
+
}
|
|
122
|
+
/**
|
|
123
|
+
* Represents the event data when the AI Assistant request completes with an error.
|
|
124
|
+
*/
|
|
125
|
+
export declare class GridToolbarAIResponseErrorEvent extends PreventableEvent {
|
|
126
|
+
/**
|
|
127
|
+
* The HTTP error response from the AI service.
|
|
128
|
+
*/
|
|
129
|
+
error: HttpErrorResponse;
|
|
130
|
+
constructor(error: HttpErrorResponse);
|
|
131
|
+
}
|
|
@@ -4,14 +4,14 @@ const schematics_1 = require("@angular-devkit/schematics");
|
|
|
4
4
|
function default_1(options) {
|
|
5
5
|
const finalOptions = Object.assign(Object.assign({}, options), { mainNgModule: 'GridModule', package: 'grid', peerDependencies: {
|
|
6
6
|
// peer deps of the dropdowns
|
|
7
|
-
'@progress/kendo-angular-treeview': '19.3.0-develop.
|
|
8
|
-
'@progress/kendo-angular-navigation': '19.3.0-develop.
|
|
7
|
+
'@progress/kendo-angular-treeview': '19.3.0-develop.32',
|
|
8
|
+
'@progress/kendo-angular-navigation': '19.3.0-develop.32',
|
|
9
9
|
// peer dependency of kendo-angular-inputs
|
|
10
|
-
'@progress/kendo-angular-dialog': '19.3.0-develop.
|
|
10
|
+
'@progress/kendo-angular-dialog': '19.3.0-develop.32',
|
|
11
11
|
// peer dependency of kendo-angular-icons
|
|
12
12
|
'@progress/kendo-svg-icons': '^4.0.0',
|
|
13
13
|
// peer dependency of kendo-angular-layout
|
|
14
|
-
'@progress/kendo-angular-progressbar': '19.3.0-develop.
|
|
14
|
+
'@progress/kendo-angular-progressbar': '19.3.0-develop.32'
|
|
15
15
|
} });
|
|
16
16
|
return (0, schematics_1.externalSchematic)('@progress/kendo-angular-schematics', 'ng-add', finalOptions);
|
|
17
17
|
}
|