@progress/kendo-angular-grid 19.3.0-develop.32 → 19.3.0-develop.34

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.
@@ -93,7 +93,7 @@ export class ColumnChooserComponent {
93
93
  const popupAriaElement = popupElement.querySelector('.k-popup');
94
94
  this.ngZone.runOutsideAngular(() => {
95
95
  this.escapeListener = this.renderer.listen(popupAriaElement, 'keydown', (e) => {
96
- if (e.keyCode === Keys.Escape) {
96
+ if (e.code === Keys.Escape) {
97
97
  this.close(true);
98
98
  }
99
99
  });
@@ -6,7 +6,7 @@ import { Component, HostBinding, Input, ElementRef, NgZone, Renderer2, Output, E
6
6
  import { ColumnMenuService } from './column-menu.service';
7
7
  import { ColumnListKeyboardNavigation } from './column-list-kb-nav.service';
8
8
  import { ColumnMenuChooserItemCheckedDirective } from './column-chooser-item-checked.directive';
9
- import { Keys } from '@progress/kendo-angular-common';
9
+ import { Keys, normalizeNumpadKeys } from '@progress/kendo-angular-common';
10
10
  import { Subscription } from 'rxjs';
11
11
  import { NgFor, NgIf, NgClass } from '@angular/common';
12
12
  import { CheckBoxComponent } from '@progress/kendo-angular-inputs';
@@ -157,13 +157,14 @@ export class ColumnListComponent {
157
157
  }
158
158
  }
159
159
  onKeydown = (e) => {
160
- if (e.keyCode !== Keys.Tab) {
160
+ const code = normalizeNumpadKeys(e);
161
+ if (code !== Keys.Tab) {
161
162
  e.preventDefault();
162
163
  }
163
- if (e.key === 'Tab' && !e.shiftKey && this.autoSync) {
164
+ if (code === 'Tab' && !e.shiftKey && this.autoSync) {
164
165
  e.preventDefault();
165
166
  }
166
- if (e.key === 'Tab' && e.shiftKey) {
167
+ if (code === 'Tab' && e.shiftKey) {
167
168
  this.ngZone.run(() => {
168
169
  if (e.target.matches('.k-column-list-item')) {
169
170
  e.preventDefault();
@@ -171,13 +172,13 @@ export class ColumnListComponent {
171
172
  }
172
173
  });
173
174
  }
174
- if (e.keyCode === Keys.ArrowDown) {
175
+ if (code === Keys.ArrowDown) {
175
176
  this.listNavigationService.next();
176
177
  }
177
- else if (e.keyCode === Keys.ArrowUp) {
178
+ else if (code === Keys.ArrowUp) {
178
179
  this.listNavigationService.prev();
179
180
  }
180
- else if (e.keyCode === Keys.Space && e.target.classList.contains('k-column-list-item')) {
181
+ else if (code === Keys.Space && e.target.classList.contains('k-column-list-item')) {
181
182
  this.listNavigationService.toggleCheckedState();
182
183
  }
183
184
  };
@@ -125,7 +125,7 @@ export class ColumnMenuItemDirective {
125
125
  }
126
126
  }
127
127
  onTab = (e) => {
128
- if (e.keyCode !== Keys.Tab) {
128
+ if (e.code !== Keys.Tab) {
129
129
  return;
130
130
  }
131
131
  if (this.isFirst && e.shiftKey && e.target === this.columnMenuItems[0]) {
@@ -74,7 +74,7 @@ export class InCellEditingDirective extends EditingDirectiveBase {
74
74
  args.preventDefault();
75
75
  }
76
76
  else if (formGroup.dirty) {
77
- if (args.originalEvent && args.originalEvent.keyCode === Keys.Escape) {
77
+ if (args.originalEvent && args.originalEvent.code === Keys.Escape) {
78
78
  return;
79
79
  }
80
80
  this.editService.assignValues(dataItem, formGroup.value);
@@ -114,7 +114,7 @@ export class FilterCellOperatorsComponent {
114
114
  * @hidden
115
115
  */
116
116
  clearKeydown(args) {
117
- if (args.keyCode === Keys.Enter || args.keyCode === Keys.Space) {
117
+ if (args.code === Keys.Enter || args.code === Keys.NumpadEnter || args.code === Keys.Space) {
118
118
  this.clear.emit();
119
119
  }
120
120
  }
@@ -125,7 +125,7 @@ export class FilterCellOperatorsComponent {
125
125
  if (args.defaultPrevented) {
126
126
  return;
127
127
  }
128
- if (args.keyCode === Keys.Enter && !this.dropdown.isOpen) {
128
+ if ((args.code === Keys.Enter || args.code === Keys.NumpadEnter) && !this.dropdown.isOpen) {
129
129
  this.dropdown.toggle(true);
130
130
  args.preventDefault();
131
131
  }
@@ -25,7 +25,7 @@ export class FilterMenuDropDownListDirective {
25
25
  this.host.wrapper.nativeElement.removeEventListener('keydown', this.keydownHandler);
26
26
  }
27
27
  keydownHandler = (e) => {
28
- if (e.keyCode === Keys.Escape && this.host.isOpen) {
28
+ if (e.code === Keys.Escape && this.host.isOpen) {
29
29
  e.stopPropagation();
30
30
  this.host.toggle(false);
31
31
  }
@@ -16,7 +16,7 @@ import { ContextService } from '../common/provider.service';
16
16
  import { PopupService } from '@progress/kendo-angular-popup';
17
17
  import { ChipComponent, ChipListComponent } from '@progress/kendo-angular-buttons';
18
18
  import { closest } from '../rendering/common/dom-queries';
19
- import { DraggableDirective, EventsOutsideAngularDirective, Keys } from '@progress/kendo-angular-common';
19
+ import { DraggableDirective, EventsOutsideAngularDirective, Keys, normalizeNumpadKeys } from '@progress/kendo-angular-common';
20
20
  import { IconWrapperComponent } from '@progress/kendo-angular-icons';
21
21
  import { DraggableColumnDirective } from '../dragdrop/draggable-column.directive';
22
22
  import { NgIf, NgFor } from '@angular/common';
@@ -176,18 +176,19 @@ export class GroupPanelComponent {
176
176
  });
177
177
  }
178
178
  handleKeyDown = (e) => {
179
- if (e.keyCode === Keys.ArrowDown || e.keyCode === Keys.ArrowUp) {
179
+ const code = normalizeNumpadKeys(e);
180
+ if (code === Keys.ArrowDown || code === Keys.ArrowUp) {
180
181
  e.preventDefault();
181
182
  const relatedItemType = e.target.matches(':first-child') ? 'next' : 'previous';
182
183
  this.activateMenuItem(e.target, relatedItemType);
183
184
  }
184
- else if (e.keyCode === Keys.Escape) {
185
+ else if (code === Keys.Escape) {
185
186
  this.destroyMenu(true);
186
187
  }
187
- else if (e.keyCode === Keys.Tab) {
188
+ else if (code === Keys.Tab) {
188
189
  this.destroyMenu(true);
189
190
  }
190
- else if (e.keyCode === Keys.Space || e.keyCode === Keys.Enter) {
191
+ else if (code === Keys.Space || code === Keys.Enter) {
191
192
  this.handleMenuClick(e);
192
193
  }
193
194
  };
@@ -11,7 +11,7 @@ import { GridFocusableElement } from './grid-focusable-element';
11
11
  import { NavigationCursor } from './navigation-cursor';
12
12
  import { NavigationModel } from './navigation-model';
13
13
  import { DomEventsService } from '../common/dom-events.service';
14
- import { hasClasses, isDocumentAvailable, isPresent, Keys } from '@progress/kendo-angular-common';
14
+ import { hasClasses, isDocumentAvailable, isPresent, Keys, normalizeNumpadKeys } from '@progress/kendo-angular-common';
15
15
  import { EditService } from '../editing/edit.service';
16
16
  import { GroupsService } from '../grouping/groups.service';
17
17
  import { PagerContextService } from '@progress/kendo-angular-pager';
@@ -226,7 +226,7 @@ export class NavigationService {
226
226
  .subscribe(() => {
227
227
  this.isShiftPressed = false;
228
228
  }));
229
- this.subs.add(this.domEvents.keydown.pipe(filter(args => args.keyCode === Keys.Tab && this.mode === 2 /* NavigationMode.Content */), switchMapTo(this.domEvents.focusOut.pipe(takeUntil(
229
+ this.subs.add(this.domEvents.keydown.pipe(filter(args => args.code === Keys.Tab && this.mode === 2 /* NavigationMode.Content */), switchMapTo(this.domEvents.focusOut.pipe(takeUntil(
230
230
  // Timeout if focusOut doesn't fire very soon
231
231
  interval(0).pipe(take(1))))))
232
232
  .subscribe(() => this.onTabout()));
@@ -501,14 +501,16 @@ export class NavigationService {
501
501
  return;
502
502
  }
503
503
  const row = this.cursor.row;
504
- const dir = args.keyCode === Keys.ArrowDown ? 'Down' : 'Up';
505
- const right = args.keyCode === Keys.ArrowRight;
506
- const isArrowKey = args.code === 'ArrowDown' || args.code === 'ArrowUp' || args.code === 'ArrowLeft' || args.code === 'ArrowRight';
504
+ // on some keyboards arrow keys, PageUp/Down, and Home/End are mapped to Numpad keys
505
+ const code = normalizeNumpadKeys(args);
506
+ const dir = code === Keys.ArrowDown ? 'Down' : 'Up';
507
+ const right = code === Keys.ArrowRight;
508
+ const isArrowKey = code === Keys.ArrowDown || code === Keys.ArrowUp || code === Keys.ArrowLeft || code === Keys.ArrowRight;
507
509
  if (!this.isShiftPressed && args.shiftKey && isArrowKey) {
508
510
  startNewSelection = true;
509
511
  this.isShiftPressed = true;
510
512
  }
511
- switch (args.keyCode) {
513
+ switch (code) {
512
514
  case Keys.ArrowDown:
513
515
  case Keys.ArrowUp:
514
516
  if (rowspan > 1) {
@@ -623,7 +625,7 @@ export class NavigationService {
623
625
  case Keys.Enter:
624
626
  case Keys.F2: {
625
627
  if (this.stackedCellEntered) {
626
- if (args.keyCode === Keys.F2 && row.dataRowIndex > -1) {
628
+ if (code === Keys.F2 && row.dataRowIndex > -1) {
627
629
  this.zone.run(() => {
628
630
  this.editService.beginEdit(row.dataRowIndex);
629
631
  });
@@ -639,7 +641,7 @@ export class NavigationService {
639
641
  this.zone.run(() => this.detailsService.toggleRow(row.dataRowIndex, row.dataItem));
640
642
  }
641
643
  else {
642
- if (args.keyCode === Keys.F2 && row.dataRowIndex > -1) {
644
+ if (code === Keys.F2 && row.dataRowIndex > -1) {
643
645
  this.zone.run(() => {
644
646
  this.editService.beginEdit(row.dataRowIndex);
645
647
  });
@@ -683,12 +685,11 @@ export class NavigationService {
683
685
  if (!this.onCellKeydown(args)) {
684
686
  return;
685
687
  }
686
- const confirm = !args.defaultPrevented && args.keyCode === Keys.Enter && isTextInput(args.target);
687
- if (args.keyCode === Keys.Escape || args.keyCode === Keys.F2 || confirm) {
688
- if (this.tableCellEntered && args.keyCode === Keys.F2 && this.activeRow.dataRowIndex > -1) {
689
- if (this.editService.isEditingCell()) {
690
- return;
691
- }
688
+ // on some keyboards arrow keys, PageUp/Down, and Home/End are mapped to Numpad keys
689
+ const code = normalizeNumpadKeys(args);
690
+ const confirm = !args.defaultPrevented && code === Keys.Enter && isTextInput(args.target);
691
+ if (code === Keys.Escape || code === Keys.F2 || confirm) {
692
+ if (this.tableCellEntered && code === Keys.F2 && this.activeRow.dataRowIndex > -1) {
692
693
  this.zone.run(() => {
693
694
  this.editService.beginEdit(this.activeRow.dataRowIndex);
694
695
  });
@@ -699,7 +700,7 @@ export class NavigationService {
699
700
  this.cursor.reset();
700
701
  args.stopPropagation();
701
702
  }
702
- else if (isNavigationKey(args.keyCode) && this.cursor.cell.focusGroup.isNavigable()) {
703
+ else if (isNavigationKey(code) && this.cursor.cell.focusGroup.isNavigable()) {
703
704
  this.onCursorKeydown(args);
704
705
  if (args.defaultPrevented) {
705
706
  this.leaveCell();
@@ -708,9 +709,11 @@ export class NavigationService {
708
709
  }
709
710
  onCellKeydown(args) {
710
711
  if (this.editService.isEditingCell()) {
711
- const confirm = args.keyCode === Keys.Enter;
712
- const cancel = args.keyCode === Keys.Escape;
713
- const navigate = isNavigationKey(args.keyCode);
712
+ // on some keyboards arrow keys, PageUp/Down, and Home/End are mapped to Numpad keys
713
+ const code = normalizeNumpadKeys(args);
714
+ const confirm = code === Keys.Enter;
715
+ const cancel = code === Keys.Escape;
716
+ const navigate = isNavigationKey(code);
714
717
  if (confirm) {
715
718
  this.editService.closeCell(args);
716
719
  }
@@ -869,10 +872,10 @@ export class NavigationService {
869
872
  if (!stackedCell || !tableCell) {
870
873
  return;
871
874
  }
872
- if (args.keyCode === Keys.Tab) {
875
+ if (args.code === Keys.Tab) {
873
876
  this.handleStackedTabNavigation(args);
874
877
  }
875
- else if (args.keyCode === Keys.Backspace || args.keyCode === Keys.Delete) {
878
+ else if (args.code === Keys.Backspace || args.code === Keys.Delete) {
876
879
  if (this.activeRow && this.activeRow.dataRowIndex >= 0 && this.activeRow.dataItem) {
877
880
  const row = this.cursor.row;
878
881
  if (!row.groupItem && !this.cursor.cell.detailExpandCell) {
@@ -883,7 +886,7 @@ export class NavigationService {
883
886
  }
884
887
  }
885
888
  }
886
- else if (isInStackedCell && (args.keyCode === Keys.Enter || args.keyCode === Keys.Escape)) {
889
+ else if (isInStackedCell && (args.code === Keys.Enter || args.code === Keys.NumpadEnter || args.code === Keys.Escape)) {
887
890
  this.editService.closeCell(args);
888
891
  this.activeCell.focusGroup.activate();
889
892
  this.activeCell.focusGroup.focusableChildren[this.stackedFocusedCellIndex]?.focus();
@@ -10,7 +10,7 @@ export const packageMetadata = {
10
10
  productName: 'Kendo UI for Angular',
11
11
  productCode: 'KENDOUIANGULAR',
12
12
  productCodes: ['KENDOUIANGULAR'],
13
- publishDate: 1754579625,
14
- version: '19.3.0-develop.32',
13
+ publishDate: 1754895009,
14
+ version: '19.3.0-develop.34',
15
15
  licensingDocsUrl: 'https://www.telerik.com/kendo-angular-ui/my-license/'
16
16
  };
@@ -16,7 +16,7 @@ import { columnsToRender, sortColumns, isInSpanColumn } from "../../columns/colu
16
16
  import { SinglePopupService } from '../../common/single-popup.service';
17
17
  import { hasFilterMenu, hasFilterRow } from '../../filtering/filterable';
18
18
  import { IdService } from '../../common/id.service';
19
- import { DraggableDirective, isDocumentAvailable, Keys, TemplateContextDirective } from '@progress/kendo-angular-common';
19
+ import { DraggableDirective, isDocumentAvailable, Keys, normalizeNumpadKeys, TemplateContextDirective } from '@progress/kendo-angular-common';
20
20
  import { DropTargetDirective } from '../../dragdrop/drop-target.directive';
21
21
  import { DraggableColumnDirective } from '../../dragdrop/draggable-column.directive';
22
22
  import { DragHintService } from '../../dragdrop/drag-hint.service';
@@ -168,14 +168,15 @@ export class HeaderComponent {
168
168
  this.sortColumn(toggledColumn);
169
169
  }
170
170
  onHeaderKeydown(column, args) {
171
- if (args.keyCode === Keys.ArrowDown && args.altKey && this.showFilterMenu) {
171
+ const code = normalizeNumpadKeys(args);
172
+ if (code === Keys.ArrowDown && args.altKey && this.showFilterMenu) {
172
173
  args.preventDefault();
173
174
  args.stopImmediatePropagation();
174
175
  const filterMenu = this.filterMenus.find(fm => fm.column === column);
175
176
  filterMenu.toggle(filterMenu.anchor.nativeElement, filterMenu.template);
176
177
  return;
177
178
  }
178
- if (args.keyCode === Keys.ArrowDown && args.altKey && this.showColumnMenu(column)) {
179
+ if (code === Keys.ArrowDown && args.altKey && this.showColumnMenu(column)) {
179
180
  args.preventDefault();
180
181
  args.stopImmediatePropagation();
181
182
  const columnMenu = this.columnMenus.find(cm => cm.column === column);
@@ -183,7 +184,7 @@ export class HeaderComponent {
183
184
  return;
184
185
  }
185
186
  const isCtrlOrMeta = args.ctrlKey || args.metaKey;
186
- const isGroupingKeyShortcut = (args.keyCode === Keys.Enter || args.keyCode === Keys.Space) && isCtrlOrMeta;
187
+ const isGroupingKeyShortcut = (code === Keys.Enter || code === Keys.Space) && isCtrlOrMeta;
187
188
  if (isGroupingKeyShortcut && this.isGroupable(column)) {
188
189
  args.preventDefault();
189
190
  args.stopImmediatePropagation();
@@ -199,12 +200,12 @@ export class HeaderComponent {
199
200
  this.contextService.grid.groupChange.emit(this.groups);
200
201
  return;
201
202
  }
202
- const isLeftOrRightArrow = args.keyCode === Keys.ArrowLeft || args.keyCode === Keys.ArrowRight;
203
+ const isLeftOrRightArrow = code === Keys.ArrowLeft || code === Keys.ArrowRight;
203
204
  const isReorderingKeyShortcut = isLeftOrRightArrow && isCtrlOrMeta;
204
205
  if (isReorderingKeyShortcut && this.isReorderable(column)) {
205
206
  args.preventDefault();
206
207
  const columnsCount = this.columnInfoService.leafNamedColumns.length;
207
- const reorderDirection = args.keyCode === Keys.ArrowLeft ? -1 : 1;
208
+ const reorderDirection = code === Keys.ArrowLeft ? -1 : 1;
208
209
  const rtlMultiplier = this.contextService.localization.rtl ? -1 : 1;
209
210
  const reorderDirectionOffset = reorderDirection * rtlMultiplier;
210
211
  const newIndex = column.leafIndex + reorderDirectionOffset;
@@ -221,7 +222,7 @@ export class HeaderComponent {
221
222
  if (!this.sortable || args.defaultPrevented || column.sortable === false) {
222
223
  return;
223
224
  }
224
- if (args.keyCode === Keys.Enter && isPresent(column.field)) {
225
+ if (code === Keys.Enter && isPresent(column.field)) {
225
226
  const modifier = this.matchModifier(args);
226
227
  this.sortService.sort(this.toggleSort(column, modifier));
227
228
  }
@@ -21,7 +21,7 @@ import { GroupsService } from "../grouping/groups.service";
21
21
  import { expandColumns, sumColumnWidths } from "../columns/column-common";
22
22
  import { ScrollSyncService } from "../scrolling/scroll-sync.service";
23
23
  import { ResizeService } from "../layout/resize.service";
24
- import { EventsOutsideAngularDirective, isDocumentAvailable, ResizeSensorComponent } from "@progress/kendo-angular-common";
24
+ import { EventsOutsideAngularDirective, isDocumentAvailable, normalizeNumpadKeys, ResizeSensorComponent } from "@progress/kendo-angular-common";
25
25
  import { BrowserSupportService } from "../layout/browser-support.service";
26
26
  import { EditService } from '../editing/edit.service';
27
27
  import { NavigationService } from '../navigation/navigation.service';
@@ -345,8 +345,10 @@ export class ListComponent {
345
345
  }
346
346
  }
347
347
  lockedKeydown(args) {
348
- if (args.keyCode === Keys.PageDown || args.keyCode === Keys.PageUp) {
349
- const dir = args.keyCode === Keys.PageDown ? 1 : -1;
348
+ // on some keyboards arrow keys, PageUp/Down, and Home/End are mapped to Numpad keys
349
+ const code = normalizeNumpadKeys(args);
350
+ if (code === Keys.PageDown || code === Keys.PageUp) {
351
+ const dir = code === Keys.PageDown ? 1 : -1;
350
352
  const element = this.container.nativeElement;
351
353
  element.scrollTop += element.offsetHeight * dir * 0.8;
352
354
  args.preventDefault();
@@ -314,7 +314,7 @@ export class TableBodyComponent {
314
314
  const element = this.element.nativeElement;
315
315
  const target = this.eventTarget(eventArg);
316
316
  const selectionEnabled = this.selectable && this.selectable.enabled !== false;
317
- if (eventArg.keyCode === Keys.Space) {
317
+ if (eventArg.code === Keys.Space) {
318
318
  if (!selectionEnabled) {
319
319
  return;
320
320
  }
@@ -403,7 +403,7 @@ export class TableBodyComponent {
403
403
  }));
404
404
  }
405
405
  cellKeydownHandler(args) {
406
- if (args.keyCode === Keys.Enter || args.keyCode === Keys.Space || (this.navigationService.tableCellEntered && args.keyCode === Keys.F2)) {
406
+ if (args.code === Keys.Enter || args.code === Keys.NumpadEnter || args.code === Keys.Space || (this.navigationService.tableCellEntered && args.code === Keys.F2)) {
407
407
  this.clickHandler(args);
408
408
  }
409
409
  }
@@ -48,16 +48,7 @@ export class AIAssistantToolbarDirective extends ToolbarToolBase {
48
48
  /**
49
49
  * Configures the request options that the AI Assistant tool sends with the AI request.
50
50
  *
51
- * @default
52
- * ```ts
53
- * {
54
- * headers: new HttpHeaders({ 'Content-Type': 'application/json' }),
55
- * role: 'user',
56
- * method: 'POST',
57
- * responseType: 'json',
58
- * withCredentials: false
59
- * }
60
- * ```
51
+ * @default { headers: new HttpHeaders({ 'Content-Type': 'application/json' }), role: 'user', method: 'POST', responseType: 'json', withCredentials: false }
61
52
  */
62
53
  requestOptions;
63
54
  /**
@@ -8,7 +8,7 @@ import { IconWrapperComponent } from '@progress/kendo-angular-icons';
8
8
  import { chevronUpIcon, chevronDownIcon, xCircleIcon, plusCircleIcon, xIcon } from '@progress/kendo-svg-icons';
9
9
  import { KENDO_BUTTON } from '@progress/kendo-angular-buttons';
10
10
  import { take } from 'rxjs/operators';
11
- import { isPresent } from '@progress/kendo-angular-common';
11
+ import { isPresent, Keys, normalizeNumpadKeys } from '@progress/kendo-angular-common';
12
12
  import * as i0 from "@angular/core";
13
13
  import * as i1 from "@progress/kendo-angular-buttons";
14
14
  /**
@@ -172,30 +172,32 @@ export class GroupToolbarToolComponent {
172
172
  this.currentFocusedItemIndex = currentIndex;
173
173
  }
174
174
  handleGroupedKeydown(column, index, ev) {
175
- if (ev.code === 'Enter' || ev.code === 'Backspace' || ev.code === 'Delete') {
175
+ const code = normalizeNumpadKeys(ev);
176
+ if (code === Keys.Enter || code === Keys.Backspace || code === Keys.Delete) {
176
177
  this.removeGroup(column, ev);
177
178
  }
178
- else if (ev.code === 'ArrowUp' && ev.shiftKey) {
179
+ else if (code === Keys.ArrowUp && ev.shiftKey) {
179
180
  this.moveGroupUp(column, ev);
180
181
  }
181
- else if (ev.code === 'ArrowDown' && ev.shiftKey) {
182
+ else if (code === Keys.ArrowDown && ev.shiftKey) {
182
183
  this.moveGroupDown(column, ev);
183
184
  }
184
- else if (ev.code === 'ArrowUp') {
185
+ else if (code === Keys.ArrowUp) {
185
186
  this.navigateToPreviousItem();
186
187
  }
187
- else if (ev.code === 'ArrowDown') {
188
+ else if (code === Keys.ArrowDown) {
188
189
  this.navigateToNextItem();
189
190
  }
190
191
  }
191
192
  handleUngroupedKeydown(column, index, ev) {
192
- if (ev.code === 'Enter') {
193
+ const code = normalizeNumpadKeys(ev);
194
+ if (code === Keys.Enter) {
193
195
  this.addGroup(column, ev);
194
196
  }
195
- else if (ev.code === 'ArrowUp') {
197
+ else if (code === Keys.ArrowUp) {
196
198
  this.navigateToPreviousItem();
197
199
  }
198
- else if (ev.code === 'ArrowDown') {
200
+ else if (code === Keys.ArrowDown) {
199
201
  this.navigateToNextItem();
200
202
  }
201
203
  }
@@ -97,7 +97,7 @@ export class SelectionCheckboxDirective {
97
97
  }
98
98
  }
99
99
  onKeyDown(e) {
100
- if (e.keyCode === Keys.Enter) {
100
+ if (e.code === Keys.Enter || e.code === Keys.NumpadEnter) {
101
101
  this.onClick(e);
102
102
  }
103
103
  }
@@ -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, PreventableEvent as PreventableEvent$1, getLicenseMessage, shouldShowValidationUI, WatermarkOverlayComponent, ResizeBatchService } from '@progress/kendo-angular-common';
9
+ import { isDocumentAvailable, Keys, hasClasses as hasClasses$1, normalizeNumpadKeys, 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';
@@ -3574,7 +3574,7 @@ class NavigationService {
3574
3574
  .subscribe(() => {
3575
3575
  this.isShiftPressed = false;
3576
3576
  }));
3577
- this.subs.add(this.domEvents.keydown.pipe(filter(args => args.keyCode === Keys.Tab && this.mode === 2 /* NavigationMode.Content */), switchMapTo(this.domEvents.focusOut.pipe(takeUntil(
3577
+ this.subs.add(this.domEvents.keydown.pipe(filter(args => args.code === Keys.Tab && this.mode === 2 /* NavigationMode.Content */), switchMapTo(this.domEvents.focusOut.pipe(takeUntil(
3578
3578
  // Timeout if focusOut doesn't fire very soon
3579
3579
  interval(0).pipe(take(1))))))
3580
3580
  .subscribe(() => this.onTabout()));
@@ -3849,14 +3849,16 @@ class NavigationService {
3849
3849
  return;
3850
3850
  }
3851
3851
  const row = this.cursor.row;
3852
- const dir = args.keyCode === Keys.ArrowDown ? 'Down' : 'Up';
3853
- const right = args.keyCode === Keys.ArrowRight;
3854
- const isArrowKey = args.code === 'ArrowDown' || args.code === 'ArrowUp' || args.code === 'ArrowLeft' || args.code === 'ArrowRight';
3852
+ // on some keyboards arrow keys, PageUp/Down, and Home/End are mapped to Numpad keys
3853
+ const code = normalizeNumpadKeys(args);
3854
+ const dir = code === Keys.ArrowDown ? 'Down' : 'Up';
3855
+ const right = code === Keys.ArrowRight;
3856
+ const isArrowKey = code === Keys.ArrowDown || code === Keys.ArrowUp || code === Keys.ArrowLeft || code === Keys.ArrowRight;
3855
3857
  if (!this.isShiftPressed && args.shiftKey && isArrowKey) {
3856
3858
  startNewSelection = true;
3857
3859
  this.isShiftPressed = true;
3858
3860
  }
3859
- switch (args.keyCode) {
3861
+ switch (code) {
3860
3862
  case Keys.ArrowDown:
3861
3863
  case Keys.ArrowUp:
3862
3864
  if (rowspan > 1) {
@@ -3971,7 +3973,7 @@ class NavigationService {
3971
3973
  case Keys.Enter:
3972
3974
  case Keys.F2: {
3973
3975
  if (this.stackedCellEntered) {
3974
- if (args.keyCode === Keys.F2 && row.dataRowIndex > -1) {
3976
+ if (code === Keys.F2 && row.dataRowIndex > -1) {
3975
3977
  this.zone.run(() => {
3976
3978
  this.editService.beginEdit(row.dataRowIndex);
3977
3979
  });
@@ -3987,7 +3989,7 @@ class NavigationService {
3987
3989
  this.zone.run(() => this.detailsService.toggleRow(row.dataRowIndex, row.dataItem));
3988
3990
  }
3989
3991
  else {
3990
- if (args.keyCode === Keys.F2 && row.dataRowIndex > -1) {
3992
+ if (code === Keys.F2 && row.dataRowIndex > -1) {
3991
3993
  this.zone.run(() => {
3992
3994
  this.editService.beginEdit(row.dataRowIndex);
3993
3995
  });
@@ -4031,12 +4033,11 @@ class NavigationService {
4031
4033
  if (!this.onCellKeydown(args)) {
4032
4034
  return;
4033
4035
  }
4034
- const confirm = !args.defaultPrevented && args.keyCode === Keys.Enter && isTextInput(args.target);
4035
- if (args.keyCode === Keys.Escape || args.keyCode === Keys.F2 || confirm) {
4036
- if (this.tableCellEntered && args.keyCode === Keys.F2 && this.activeRow.dataRowIndex > -1) {
4037
- if (this.editService.isEditingCell()) {
4038
- return;
4039
- }
4036
+ // on some keyboards arrow keys, PageUp/Down, and Home/End are mapped to Numpad keys
4037
+ const code = normalizeNumpadKeys(args);
4038
+ const confirm = !args.defaultPrevented && code === Keys.Enter && isTextInput(args.target);
4039
+ if (code === Keys.Escape || code === Keys.F2 || confirm) {
4040
+ if (this.tableCellEntered && code === Keys.F2 && this.activeRow.dataRowIndex > -1) {
4040
4041
  this.zone.run(() => {
4041
4042
  this.editService.beginEdit(this.activeRow.dataRowIndex);
4042
4043
  });
@@ -4047,7 +4048,7 @@ class NavigationService {
4047
4048
  this.cursor.reset();
4048
4049
  args.stopPropagation();
4049
4050
  }
4050
- else if (isNavigationKey(args.keyCode) && this.cursor.cell.focusGroup.isNavigable()) {
4051
+ else if (isNavigationKey(code) && this.cursor.cell.focusGroup.isNavigable()) {
4051
4052
  this.onCursorKeydown(args);
4052
4053
  if (args.defaultPrevented) {
4053
4054
  this.leaveCell();
@@ -4056,9 +4057,11 @@ class NavigationService {
4056
4057
  }
4057
4058
  onCellKeydown(args) {
4058
4059
  if (this.editService.isEditingCell()) {
4059
- const confirm = args.keyCode === Keys.Enter;
4060
- const cancel = args.keyCode === Keys.Escape;
4061
- const navigate = isNavigationKey(args.keyCode);
4060
+ // on some keyboards arrow keys, PageUp/Down, and Home/End are mapped to Numpad keys
4061
+ const code = normalizeNumpadKeys(args);
4062
+ const confirm = code === Keys.Enter;
4063
+ const cancel = code === Keys.Escape;
4064
+ const navigate = isNavigationKey(code);
4062
4065
  if (confirm) {
4063
4066
  this.editService.closeCell(args);
4064
4067
  }
@@ -4217,10 +4220,10 @@ class NavigationService {
4217
4220
  if (!stackedCell || !tableCell) {
4218
4221
  return;
4219
4222
  }
4220
- if (args.keyCode === Keys.Tab) {
4223
+ if (args.code === Keys.Tab) {
4221
4224
  this.handleStackedTabNavigation(args);
4222
4225
  }
4223
- else if (args.keyCode === Keys.Backspace || args.keyCode === Keys.Delete) {
4226
+ else if (args.code === Keys.Backspace || args.code === Keys.Delete) {
4224
4227
  if (this.activeRow && this.activeRow.dataRowIndex >= 0 && this.activeRow.dataItem) {
4225
4228
  const row = this.cursor.row;
4226
4229
  if (!row.groupItem && !this.cursor.cell.detailExpandCell) {
@@ -4231,7 +4234,7 @@ class NavigationService {
4231
4234
  }
4232
4235
  }
4233
4236
  }
4234
- else if (isInStackedCell && (args.keyCode === Keys.Enter || args.keyCode === Keys.Escape)) {
4237
+ else if (isInStackedCell && (args.code === Keys.Enter || args.code === Keys.NumpadEnter || args.code === Keys.Escape)) {
4235
4238
  this.editService.closeCell(args);
4236
4239
  this.activeCell.focusGroup.activate();
4237
4240
  this.activeCell.focusGroup.focusableChildren[this.stackedFocusedCellIndex]?.focus();
@@ -6118,18 +6121,19 @@ class GroupPanelComponent {
6118
6121
  });
6119
6122
  }
6120
6123
  handleKeyDown = (e) => {
6121
- if (e.keyCode === Keys.ArrowDown || e.keyCode === Keys.ArrowUp) {
6124
+ const code = normalizeNumpadKeys(e);
6125
+ if (code === Keys.ArrowDown || code === Keys.ArrowUp) {
6122
6126
  e.preventDefault();
6123
6127
  const relatedItemType = e.target.matches(':first-child') ? 'next' : 'previous';
6124
6128
  this.activateMenuItem(e.target, relatedItemType);
6125
6129
  }
6126
- else if (e.keyCode === Keys.Escape) {
6130
+ else if (code === Keys.Escape) {
6127
6131
  this.destroyMenu(true);
6128
6132
  }
6129
- else if (e.keyCode === Keys.Tab) {
6133
+ else if (code === Keys.Tab) {
6130
6134
  this.destroyMenu(true);
6131
6135
  }
6132
- else if (e.keyCode === Keys.Space || e.keyCode === Keys.Enter) {
6136
+ else if (code === Keys.Space || code === Keys.Enter) {
6133
6137
  this.handleMenuClick(e);
6134
6138
  }
6135
6139
  };
@@ -7839,7 +7843,7 @@ class FilterCellOperatorsComponent {
7839
7843
  * @hidden
7840
7844
  */
7841
7845
  clearKeydown(args) {
7842
- if (args.keyCode === Keys.Enter || args.keyCode === Keys.Space) {
7846
+ if (args.code === Keys.Enter || args.code === Keys.NumpadEnter || args.code === Keys.Space) {
7843
7847
  this.clear.emit();
7844
7848
  }
7845
7849
  }
@@ -7850,7 +7854,7 @@ class FilterCellOperatorsComponent {
7850
7854
  if (args.defaultPrevented) {
7851
7855
  return;
7852
7856
  }
7853
- if (args.keyCode === Keys.Enter && !this.dropdown.isOpen) {
7857
+ if ((args.code === Keys.Enter || args.code === Keys.NumpadEnter) && !this.dropdown.isOpen) {
7854
7858
  this.dropdown.toggle(true);
7855
7859
  args.preventDefault();
7856
7860
  }
@@ -8777,7 +8781,7 @@ class FilterMenuDropDownListDirective {
8777
8781
  this.host.wrapper.nativeElement.removeEventListener('keydown', this.keydownHandler);
8778
8782
  }
8779
8783
  keydownHandler = (e) => {
8780
- if (e.keyCode === Keys.Escape && this.host.isOpen) {
8784
+ if (e.code === Keys.Escape && this.host.isOpen) {
8781
8785
  e.stopPropagation();
8782
8786
  this.host.toggle(false);
8783
8787
  }
@@ -12244,13 +12248,14 @@ class ColumnListComponent {
12244
12248
  }
12245
12249
  }
12246
12250
  onKeydown = (e) => {
12247
- if (e.keyCode !== Keys.Tab) {
12251
+ const code = normalizeNumpadKeys(e);
12252
+ if (code !== Keys.Tab) {
12248
12253
  e.preventDefault();
12249
12254
  }
12250
- if (e.key === 'Tab' && !e.shiftKey && this.autoSync) {
12255
+ if (code === 'Tab' && !e.shiftKey && this.autoSync) {
12251
12256
  e.preventDefault();
12252
12257
  }
12253
- if (e.key === 'Tab' && e.shiftKey) {
12258
+ if (code === 'Tab' && e.shiftKey) {
12254
12259
  this.ngZone.run(() => {
12255
12260
  if (e.target.matches('.k-column-list-item')) {
12256
12261
  e.preventDefault();
@@ -12258,13 +12263,13 @@ class ColumnListComponent {
12258
12263
  }
12259
12264
  });
12260
12265
  }
12261
- if (e.keyCode === Keys.ArrowDown) {
12266
+ if (code === Keys.ArrowDown) {
12262
12267
  this.listNavigationService.next();
12263
12268
  }
12264
- else if (e.keyCode === Keys.ArrowUp) {
12269
+ else if (code === Keys.ArrowUp) {
12265
12270
  this.listNavigationService.prev();
12266
12271
  }
12267
- else if (e.keyCode === Keys.Space && e.target.classList.contains('k-column-list-item')) {
12272
+ else if (code === Keys.Space && e.target.classList.contains('k-column-list-item')) {
12268
12273
  this.listNavigationService.toggleCheckedState();
12269
12274
  }
12270
12275
  };
@@ -12589,7 +12594,7 @@ class ColumnChooserComponent {
12589
12594
  const popupAriaElement = popupElement.querySelector('.k-popup');
12590
12595
  this.ngZone.runOutsideAngular(() => {
12591
12596
  this.escapeListener = this.renderer.listen(popupAriaElement, 'keydown', (e) => {
12592
- if (e.keyCode === Keys.Escape) {
12597
+ if (e.code === Keys.Escape) {
12593
12598
  this.close(true);
12594
12599
  }
12595
12600
  });
@@ -14455,7 +14460,7 @@ class ColumnMenuItemDirective {
14455
14460
  }
14456
14461
  }
14457
14462
  onTab = (e) => {
14458
- if (e.keyCode !== Keys.Tab) {
14463
+ if (e.code !== Keys.Tab) {
14459
14464
  return;
14460
14465
  }
14461
14466
  if (this.isFirst && e.shiftKey && e.target === this.columnMenuItems[0]) {
@@ -18103,14 +18108,15 @@ class HeaderComponent {
18103
18108
  this.sortColumn(toggledColumn);
18104
18109
  }
18105
18110
  onHeaderKeydown(column, args) {
18106
- if (args.keyCode === Keys.ArrowDown && args.altKey && this.showFilterMenu) {
18111
+ const code = normalizeNumpadKeys(args);
18112
+ if (code === Keys.ArrowDown && args.altKey && this.showFilterMenu) {
18107
18113
  args.preventDefault();
18108
18114
  args.stopImmediatePropagation();
18109
18115
  const filterMenu = this.filterMenus.find(fm => fm.column === column);
18110
18116
  filterMenu.toggle(filterMenu.anchor.nativeElement, filterMenu.template);
18111
18117
  return;
18112
18118
  }
18113
- if (args.keyCode === Keys.ArrowDown && args.altKey && this.showColumnMenu(column)) {
18119
+ if (code === Keys.ArrowDown && args.altKey && this.showColumnMenu(column)) {
18114
18120
  args.preventDefault();
18115
18121
  args.stopImmediatePropagation();
18116
18122
  const columnMenu = this.columnMenus.find(cm => cm.column === column);
@@ -18118,7 +18124,7 @@ class HeaderComponent {
18118
18124
  return;
18119
18125
  }
18120
18126
  const isCtrlOrMeta = args.ctrlKey || args.metaKey;
18121
- const isGroupingKeyShortcut = (args.keyCode === Keys.Enter || args.keyCode === Keys.Space) && isCtrlOrMeta;
18127
+ const isGroupingKeyShortcut = (code === Keys.Enter || code === Keys.Space) && isCtrlOrMeta;
18122
18128
  if (isGroupingKeyShortcut && this.isGroupable(column)) {
18123
18129
  args.preventDefault();
18124
18130
  args.stopImmediatePropagation();
@@ -18134,12 +18140,12 @@ class HeaderComponent {
18134
18140
  this.contextService.grid.groupChange.emit(this.groups);
18135
18141
  return;
18136
18142
  }
18137
- const isLeftOrRightArrow = args.keyCode === Keys.ArrowLeft || args.keyCode === Keys.ArrowRight;
18143
+ const isLeftOrRightArrow = code === Keys.ArrowLeft || code === Keys.ArrowRight;
18138
18144
  const isReorderingKeyShortcut = isLeftOrRightArrow && isCtrlOrMeta;
18139
18145
  if (isReorderingKeyShortcut && this.isReorderable(column)) {
18140
18146
  args.preventDefault();
18141
18147
  const columnsCount = this.columnInfoService.leafNamedColumns.length;
18142
- const reorderDirection = args.keyCode === Keys.ArrowLeft ? -1 : 1;
18148
+ const reorderDirection = code === Keys.ArrowLeft ? -1 : 1;
18143
18149
  const rtlMultiplier = this.contextService.localization.rtl ? -1 : 1;
18144
18150
  const reorderDirectionOffset = reorderDirection * rtlMultiplier;
18145
18151
  const newIndex = column.leafIndex + reorderDirectionOffset;
@@ -18156,7 +18162,7 @@ class HeaderComponent {
18156
18162
  if (!this.sortable || args.defaultPrevented || column.sortable === false) {
18157
18163
  return;
18158
18164
  }
18159
- if (args.keyCode === Keys.Enter && isPresent(column.field)) {
18165
+ if (code === Keys.Enter && isPresent(column.field)) {
18160
18166
  const modifier = this.matchModifier(args);
18161
18167
  this.sortService.sort(this.toggleSort(column, modifier));
18162
18168
  }
@@ -19405,7 +19411,7 @@ class SelectionCheckboxDirective {
19405
19411
  }
19406
19412
  }
19407
19413
  onKeyDown(e) {
19408
- if (e.keyCode === Keys.Enter) {
19414
+ if (e.code === Keys.Enter || e.code === Keys.NumpadEnter) {
19409
19415
  this.onClick(e);
19410
19416
  }
19411
19417
  }
@@ -20431,7 +20437,7 @@ class TableBodyComponent {
20431
20437
  const element = this.element.nativeElement;
20432
20438
  const target = this.eventTarget(eventArg);
20433
20439
  const selectionEnabled = this.selectable && this.selectable.enabled !== false;
20434
- if (eventArg.keyCode === Keys.Space) {
20440
+ if (eventArg.code === Keys.Space) {
20435
20441
  if (!selectionEnabled) {
20436
20442
  return;
20437
20443
  }
@@ -20520,7 +20526,7 @@ class TableBodyComponent {
20520
20526
  }));
20521
20527
  }
20522
20528
  cellKeydownHandler(args) {
20523
- if (args.keyCode === Keys.Enter || args.keyCode === Keys.Space || (this.navigationService.tableCellEntered && args.keyCode === Keys.F2)) {
20529
+ if (args.code === Keys.Enter || args.code === Keys.NumpadEnter || args.code === Keys.Space || (this.navigationService.tableCellEntered && args.code === Keys.F2)) {
20524
20530
  this.clickHandler(args);
20525
20531
  }
20526
20532
  }
@@ -21995,8 +22001,8 @@ const packageMetadata = {
21995
22001
  productName: 'Kendo UI for Angular',
21996
22002
  productCode: 'KENDOUIANGULAR',
21997
22003
  productCodes: ['KENDOUIANGULAR'],
21998
- publishDate: 1754579625,
21999
- version: '19.3.0-develop.32',
22004
+ publishDate: 1754895009,
22005
+ version: '19.3.0-develop.34',
22000
22006
  licensingDocsUrl: 'https://www.telerik.com/kendo-angular-ui/my-license/'
22001
22007
  };
22002
22008
 
@@ -24543,8 +24549,10 @@ class ListComponent {
24543
24549
  }
24544
24550
  }
24545
24551
  lockedKeydown(args) {
24546
- if (args.keyCode === Keys.PageDown || args.keyCode === Keys.PageUp) {
24547
- const dir = args.keyCode === Keys.PageDown ? 1 : -1;
24552
+ // on some keyboards arrow keys, PageUp/Down, and Home/End are mapped to Numpad keys
24553
+ const code = normalizeNumpadKeys(args);
24554
+ if (code === Keys.PageDown || code === Keys.PageUp) {
24555
+ const dir = code === Keys.PageDown ? 1 : -1;
24548
24556
  const element = this.container.nativeElement;
24549
24557
  element.scrollTop += element.offsetHeight * dir * 0.8;
24550
24558
  args.preventDefault();
@@ -27171,30 +27179,32 @@ class GroupToolbarToolComponent {
27171
27179
  this.currentFocusedItemIndex = currentIndex;
27172
27180
  }
27173
27181
  handleGroupedKeydown(column, index, ev) {
27174
- if (ev.code === 'Enter' || ev.code === 'Backspace' || ev.code === 'Delete') {
27182
+ const code = normalizeNumpadKeys(ev);
27183
+ if (code === Keys.Enter || code === Keys.Backspace || code === Keys.Delete) {
27175
27184
  this.removeGroup(column, ev);
27176
27185
  }
27177
- else if (ev.code === 'ArrowUp' && ev.shiftKey) {
27186
+ else if (code === Keys.ArrowUp && ev.shiftKey) {
27178
27187
  this.moveGroupUp(column, ev);
27179
27188
  }
27180
- else if (ev.code === 'ArrowDown' && ev.shiftKey) {
27189
+ else if (code === Keys.ArrowDown && ev.shiftKey) {
27181
27190
  this.moveGroupDown(column, ev);
27182
27191
  }
27183
- else if (ev.code === 'ArrowUp') {
27192
+ else if (code === Keys.ArrowUp) {
27184
27193
  this.navigateToPreviousItem();
27185
27194
  }
27186
- else if (ev.code === 'ArrowDown') {
27195
+ else if (code === Keys.ArrowDown) {
27187
27196
  this.navigateToNextItem();
27188
27197
  }
27189
27198
  }
27190
27199
  handleUngroupedKeydown(column, index, ev) {
27191
- if (ev.code === 'Enter') {
27200
+ const code = normalizeNumpadKeys(ev);
27201
+ if (code === Keys.Enter) {
27192
27202
  this.addGroup(column, ev);
27193
27203
  }
27194
- else if (ev.code === 'ArrowUp') {
27204
+ else if (code === Keys.ArrowUp) {
27195
27205
  this.navigateToPreviousItem();
27196
27206
  }
27197
- else if (ev.code === 'ArrowDown') {
27207
+ else if (code === Keys.ArrowDown) {
27198
27208
  this.navigateToNextItem();
27199
27209
  }
27200
27210
  }
@@ -28961,16 +28971,7 @@ class AIAssistantToolbarDirective extends ToolbarToolBase {
28961
28971
  /**
28962
28972
  * Configures the request options that the AI Assistant tool sends with the AI request.
28963
28973
  *
28964
- * @default
28965
- * ```ts
28966
- * {
28967
- * headers: new HttpHeaders({ 'Content-Type': 'application/json' }),
28968
- * role: 'user',
28969
- * method: 'POST',
28970
- * responseType: 'json',
28971
- * withCredentials: false
28972
- * }
28973
- * ```
28974
+ * @default { headers: new HttpHeaders({ 'Content-Type': 'application/json' }), role: 'user', method: 'POST', responseType: 'json', withCredentials: false }
28974
28975
  */
28975
28976
  requestOptions;
28976
28977
  /**
@@ -34157,7 +34158,7 @@ class InCellEditingDirective extends EditingDirectiveBase {
34157
34158
  args.preventDefault();
34158
34159
  }
34159
34160
  else if (formGroup.dirty) {
34160
- if (args.originalEvent && args.originalEvent.keyCode === Keys.Escape) {
34161
+ if (args.originalEvent && args.originalEvent.code === Keys.Escape) {
34161
34162
  return;
34162
34163
  }
34163
34164
  this.editService.assignValues(dataItem, formGroup.value);
@@ -60,7 +60,7 @@ export declare class GroupPanelComponent implements OnDestroy, DoCheck {
60
60
  insert(field: string, index: number): void;
61
61
  remove(group: GroupDescriptor): void;
62
62
  toggleMenu(chip: ChipComponent, first: boolean, last: boolean, field: string): void;
63
- handleKeyDown: (e: any) => void;
63
+ handleKeyDown: (e: KeyboardEvent) => void;
64
64
  handleClick: (e: any) => void;
65
65
  canDrop(draggable: DragAndDropContext, target: DragAndDropContext): boolean;
66
66
  private attachTargets;
package/index.d.ts CHANGED
@@ -58,7 +58,7 @@ export { NavigationService } from './navigation/navigation.service';
58
58
  export { CELL_CONTEXT } from './rendering/common/cell-context';
59
59
  export { DetailsService } from './rendering/details/details.service';
60
60
  export { DEFAULT_SCROLLER_FACTORY } from './rendering/list.component';
61
- export { ScrollRequestService } from './scrolling/scroll-request.service';
61
+ export { ScrollRequestService, ScrollToItemRequest } from './scrolling/scroll-request.service';
62
62
  export { ScrollSyncService } from './scrolling/scroll-sync.service';
63
63
  export { CellSelectionService } from './selection/cell-selection.service';
64
64
  export { CellSelectionAggregateService } from './aggregates/selection-aggregate.service';
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@progress/kendo-angular-grid",
3
- "version": "19.3.0-develop.32",
3
+ "version": "19.3.0-develop.34",
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": 1754579625,
29
+ "publishDate": 1754895009,
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.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",
42
+ "@progress/kendo-angular-buttons": "19.3.0-develop.34",
43
+ "@progress/kendo-angular-common": "19.3.0-develop.34",
44
+ "@progress/kendo-angular-dateinputs": "19.3.0-develop.34",
45
+ "@progress/kendo-angular-layout": "19.3.0-develop.34",
46
+ "@progress/kendo-angular-navigation": "19.3.0-develop.34",
47
+ "@progress/kendo-angular-dropdowns": "19.3.0-develop.34",
48
+ "@progress/kendo-angular-excel-export": "19.3.0-develop.34",
49
+ "@progress/kendo-angular-icons": "19.3.0-develop.34",
50
+ "@progress/kendo-angular-inputs": "19.3.0-develop.34",
51
+ "@progress/kendo-angular-conversational-ui": "19.3.0-develop.34",
52
+ "@progress/kendo-angular-intl": "19.3.0-develop.34",
53
+ "@progress/kendo-angular-l10n": "19.3.0-develop.34",
54
+ "@progress/kendo-angular-label": "19.3.0-develop.34",
55
+ "@progress/kendo-angular-pager": "19.3.0-develop.34",
56
+ "@progress/kendo-angular-pdf-export": "19.3.0-develop.34",
57
+ "@progress/kendo-angular-popup": "19.3.0-develop.34",
58
+ "@progress/kendo-angular-toolbar": "19.3.0-develop.34",
59
+ "@progress/kendo-angular-utils": "19.3.0-develop.34",
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.32",
64
+ "@progress/kendo-angular-schematics": "19.3.0-develop.34",
65
65
  "@progress/kendo-common": "^1.0.1",
66
66
  "@progress/kendo-file-saver": "^1.0.0"
67
67
  },
@@ -40,16 +40,7 @@ export declare class AIAssistantToolbarDirective extends ToolbarToolBase impleme
40
40
  /**
41
41
  * Configures the request options that the AI Assistant tool sends with the AI request.
42
42
  *
43
- * @default
44
- * ```ts
45
- * {
46
- * headers: new HttpHeaders({ 'Content-Type': 'application/json' }),
47
- * role: 'user',
48
- * method: 'POST',
49
- * responseType: 'json',
50
- * withCredentials: false
51
- * }
52
- * ```
43
+ * @default { headers: new HttpHeaders({ 'Content-Type': 'application/json' }), role: 'user', method: 'POST', responseType: 'json', withCredentials: false }
53
44
  */
54
45
  requestOptions?: GridToolbarAIRequestOptions;
55
46
  /**
@@ -6,7 +6,7 @@ import { HttpHeaders, HttpResponse, HttpErrorResponse } from "@angular/common/ht
6
6
  import { PreventableEvent } from "@progress/kendo-angular-common";
7
7
  import { AIPromptComponent, AIPromptSettings } from "@progress/kendo-angular-conversational-ui";
8
8
  import { WindowComponent, WindowSettings } from "@progress/kendo-angular-dialog";
9
- import { CompositeFilterDescriptor, FilterDescriptor, GroupDescriptor, SortDescriptor } from "@progress/kendo-data-query";
9
+ import { CompositeFilterDescriptor, GroupDescriptor, SortDescriptor } from "@progress/kendo-data-query";
10
10
  /**
11
11
  * Interface representing all configuration options of the Ai Assistant Window.
12
12
  */
@@ -52,13 +52,6 @@ export interface GridToolbarAIRequestResponse {
52
52
  sort?: SortDescriptor[];
53
53
  filter?: CompositeFilterDescriptor;
54
54
  group?: GroupDescriptor[];
55
- highlight?: {
56
- cells: {
57
- [key: string]: boolean;
58
- };
59
- filters: FilterDescriptor[];
60
- logic: 'and' | 'or';
61
- }[];
62
55
  }
63
56
  /**
64
57
  * Configuration options for the HTTP request.
@@ -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.32',
8
- '@progress/kendo-angular-navigation': '19.3.0-develop.32',
7
+ '@progress/kendo-angular-treeview': '19.3.0-develop.34',
8
+ '@progress/kendo-angular-navigation': '19.3.0-develop.34',
9
9
  // peer dependency of kendo-angular-inputs
10
- '@progress/kendo-angular-dialog': '19.3.0-develop.32',
10
+ '@progress/kendo-angular-dialog': '19.3.0-develop.34',
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.32'
14
+ '@progress/kendo-angular-progressbar': '19.3.0-develop.34'
15
15
  } });
16
16
  return (0, schematics_1.externalSchematic)('@progress/kendo-angular-schematics', 'ng-add', finalOptions);
17
17
  }