@progress/kendo-angular-treelist 19.3.0-develop.4 → 19.3.0-develop.40

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.
Files changed (35) hide show
  1. package/common/id.service.d.ts +1 -1
  2. package/esm2022/column-menu/column-chooser.component.mjs +1 -1
  3. package/esm2022/column-menu/column-list.component.mjs +6 -5
  4. package/esm2022/column-menu/column-menu-item.directive.mjs +1 -1
  5. package/esm2022/column-menu/column-menu.component.mjs +3 -3
  6. package/esm2022/common/id.service.mjs +1 -1
  7. package/esm2022/filtering/cell/autocomplete-filter-cell.component.mjs +1 -1
  8. package/esm2022/filtering/cell/boolean-filter-cell.component.mjs +1 -1
  9. package/esm2022/filtering/cell/date-filter-cell.component.mjs +1 -1
  10. package/esm2022/filtering/cell/filter-cell-operators.component.mjs +3 -4
  11. package/esm2022/filtering/cell/numeric-filter-cell.component.mjs +1 -1
  12. package/esm2022/filtering/cell/string-filter-cell.component.mjs +1 -1
  13. package/esm2022/filtering/menu/boolean-filter-menu.component.mjs +1 -2
  14. package/esm2022/filtering/menu/date-filter-menu-input.component.mjs +1 -1
  15. package/esm2022/filtering/menu/date-filter-menu.component.mjs +1 -1
  16. package/esm2022/filtering/menu/filter-menu-dropdownlist.directive.mjs +1 -1
  17. package/esm2022/filtering/menu/filter-menu-input-wrapper.component.mjs +1 -1
  18. package/esm2022/filtering/menu/filter-menu.component.mjs +3 -3
  19. package/esm2022/filtering/menu/numeric-filter-menu-input.component.mjs +1 -1
  20. package/esm2022/filtering/menu/numeric-filter-menu.component.mjs +1 -1
  21. package/esm2022/filtering/menu/string-filter-menu-input.component.mjs +1 -1
  22. package/esm2022/filtering/menu/string-filter-menu.component.mjs +1 -1
  23. package/esm2022/navigation/navigation.service.mjs +15 -9
  24. package/esm2022/package-metadata.mjs +2 -2
  25. package/esm2022/rendering/header/header.component.mjs +7 -6
  26. package/esm2022/rendering/list.component.mjs +5 -3
  27. package/esm2022/rendering/table-body.component.mjs +1 -1
  28. package/esm2022/rendering/toolbar/toolbar.component.mjs +2 -2
  29. package/esm2022/selection/selection.service.mjs +1 -1
  30. package/esm2022/utils.mjs +0 -4
  31. package/fesm2022/progress-kendo-angular-treelist.mjs +45 -39
  32. package/package.json +19 -19
  33. package/rendering/list.component.d.ts +1 -1
  34. package/schematics/ngAdd/index.js +3 -3
  35. package/utils.d.ts +0 -4
@@ -10,7 +10,7 @@ export declare class IdService {
10
10
  private prefix;
11
11
  constructor();
12
12
  cellId(rowIndex: number, colIndex: number): string;
13
- gridId(): string;
13
+ treelistId(): string;
14
14
  selectionCheckboxId(itemIndex: any): string;
15
15
  selectAllCheckboxId(): string;
16
16
  static ɵfac: i0.ɵɵFactoryDeclaration<IdService, never>;
@@ -85,7 +85,7 @@ export class ColumnChooserComponent {
85
85
  const popupAriaElement = popupElement.querySelector('.k-popup');
86
86
  this.ngZone.runOutsideAngular(() => {
87
87
  this.escapeListener = this.renderer.listen(popupAriaElement, 'keydown', (e) => {
88
- if (e.keyCode === Keys.Escape) {
88
+ if (e.code === Keys.Escape) {
89
89
  this.close(true);
90
90
  }
91
91
  });
@@ -10,7 +10,7 @@ import { ColumnMenuChooserItemCheckedDirective } from './column-chooser-item-che
10
10
  import { ColumnMenuService } from './column-menu.service';
11
11
  import { ColumnListKeyboardNavigation } from './column-list-kb-nav.service';
12
12
  import { Subscription } from 'rxjs';
13
- import { Keys } from '@progress/kendo-angular-common';
13
+ import { Keys, normalizeNumpadKeys } from '@progress/kendo-angular-common';
14
14
  import * as i0 from "@angular/core";
15
15
  import * as i1 from "./column-list-kb-nav.service";
16
16
  /**
@@ -128,7 +128,8 @@ export class ColumnListComponent {
128
128
  }
129
129
  }
130
130
  onKeydown = (e) => {
131
- if (e.keyCode !== Keys.Tab) {
131
+ const code = normalizeNumpadKeys(e);
132
+ if (code !== Keys.Tab) {
132
133
  e.preventDefault();
133
134
  }
134
135
  if (e.key === 'Tab' && !e.shiftKey && this.autoSync) {
@@ -142,13 +143,13 @@ export class ColumnListComponent {
142
143
  }
143
144
  });
144
145
  }
145
- if (e.keyCode === Keys.ArrowDown) {
146
+ if (code === Keys.ArrowDown) {
146
147
  this.listNavigationService.next();
147
148
  }
148
- else if (e.keyCode === Keys.ArrowUp) {
149
+ else if (code === Keys.ArrowUp) {
149
150
  this.listNavigationService.prev();
150
151
  }
151
- else if (e.keyCode === Keys.Space && e.target.classList.contains('k-column-list-item')) {
152
+ else if (code === Keys.Space && e.target.classList.contains('k-column-list-item')) {
152
153
  this.listNavigationService.toggleCheckedState();
153
154
  }
154
155
  };
@@ -109,7 +109,7 @@ export class ColumnMenuItemDirective {
109
109
  }
110
110
  }
111
111
  onTab = (e) => {
112
- if (e.keyCode !== Keys.Tab) {
112
+ if (e.code !== Keys.Tab) {
113
113
  return;
114
114
  }
115
115
  if (this.isFirst && e.shiftKey && e.target === this.columnMenuItems[0]) {
@@ -23,8 +23,8 @@ import { IdService } from '../common/id.service';
23
23
  import { ContextService } from '../common/provider.service';
24
24
  import { ColumnMenuErrorMessages } from '../common/error-messages';
25
25
  import { Subscription } from 'rxjs';
26
- import { replaceMessagePlaceholder } from '../utils';
27
26
  import { MenuTabbingService } from '../filtering/menu/menu-tabbing.service';
27
+ import { replaceMessagePlaceholder } from '@progress/kendo-angular-common';
28
28
  import * as i0 from "@angular/core";
29
29
  import * as i1 from "../navigation/navigation.service";
30
30
  import * as i2 from "../common/single-popup.service";
@@ -33,7 +33,7 @@ import * as i4 from "./column-menu.service";
33
33
  import * as i5 from "../common/id.service";
34
34
  const POPUP_CLASSES = 'k-grid-columnmenu-popup k-column-menu';
35
35
  let id = 0;
36
- const getId = (gridId) => `${gridId}-column-menu-${id++}`;
36
+ const getId = (treelistId) => `${treelistId}-column-menu-${id++}`;
37
37
  /**
38
38
  * Represents the [column menu]({% slug columnmenu_treelist %}) component of the TreeList.
39
39
  * Use this component to display and manage column menu options for a TreeList column.
@@ -219,7 +219,7 @@ export class ColumnMenuComponent {
219
219
  }));
220
220
  const popupAriaElement = this.popupRef.popupElement.querySelector('.k-grid-columnmenu-popup');
221
221
  if (popupAriaElement) {
222
- const popupId = getId(this.idService?.gridId());
222
+ const popupId = getId(this.idService?.treelistId());
223
223
  this.renderer.setAttribute(popupAriaElement, 'id', popupId);
224
224
  this.renderer.setAttribute(popupAriaElement, 'role', 'dialog');
225
225
  this.renderer.setAttribute(popupAriaElement, 'aria-label', this.columnMenuTitle);
@@ -17,7 +17,7 @@ export class IdService {
17
17
  cellId(rowIndex, colIndex) {
18
18
  return `${this.prefix}-r${rowIndex}c${colIndex}`;
19
19
  }
20
- gridId() {
20
+ treelistId() {
21
21
  return this.prefix;
22
22
  }
23
23
  selectionCheckboxId(itemIndex) {
@@ -9,9 +9,9 @@ import { AutoCompleteComponent } from '@progress/kendo-angular-dropdowns';
9
9
  import { ColumnComponent } from '../../columns/column.component';
10
10
  import { FilterService } from '../filter.service';
11
11
  import { BaseFilterCellComponent, localizeOperators } from '../base-filter-cell.component';
12
- import { replaceMessagePlaceholder } from '../../utils';
13
12
  import { FilterInputDirective } from '../filter-input.directive';
14
13
  import { FilterCellWrapperComponent } from './filter-cell-wrapper.component';
14
+ import { replaceMessagePlaceholder } from '@progress/kendo-angular-common';
15
15
  import * as i0 from "@angular/core";
16
16
  import * as i1 from "../filter.service";
17
17
  import * as i2 from "../../columns/column.component";
@@ -7,10 +7,10 @@ import { LocalizationService } from '@progress/kendo-angular-l10n';
7
7
  import { DropDownListComponent } from '@progress/kendo-angular-dropdowns';
8
8
  import { FilterService } from '../filter.service';
9
9
  import { BooleanFilterComponent } from '../boolean-filter.component';
10
- import { replaceMessagePlaceholder } from '../../utils';
11
10
  import { FilterInputDirective } from '../filter-input.directive';
12
11
  import { FilterCellWrapperComponent } from './filter-cell-wrapper.component';
13
12
  import { FocusableDirective } from '../../navigation/focusable.directive';
13
+ import { replaceMessagePlaceholder } from '@progress/kendo-angular-common';
14
14
  import * as i0 from "@angular/core";
15
15
  import * as i1 from "../filter.service";
16
16
  import * as i2 from "@progress/kendo-angular-l10n";
@@ -7,10 +7,10 @@ import { LocalizationService } from '@progress/kendo-angular-l10n';
7
7
  import { DatePickerComponent, DatePickerCustomMessagesComponent } from '@progress/kendo-angular-dateinputs';
8
8
  import { FilterService } from '../filter.service';
9
9
  import { DateFilterComponent } from '../date-filter.component';
10
- import { replaceMessagePlaceholder } from '../../utils';
11
10
  import { FilterInputDirective } from '../filter-input.directive';
12
11
  import { FilterCellWrapperComponent } from './filter-cell-wrapper.component';
13
12
  import { FocusableDirective } from '../../navigation/focusable.directive';
13
+ import { replaceMessagePlaceholder } from '@progress/kendo-angular-common';
14
14
  import * as i0 from "@angular/core";
15
15
  import * as i1 from "../filter.service";
16
16
  import * as i2 from "@progress/kendo-angular-l10n";
@@ -4,12 +4,11 @@
4
4
  *-------------------------------------------------------------------------------------------*/
5
5
  import { Component, EventEmitter, HostBinding, Input, Output, ViewChild } from '@angular/core';
6
6
  import { NgIf } from '@angular/common';
7
- import { Keys } from '@progress/kendo-angular-common';
7
+ import { Keys, replaceMessagePlaceholder } from '@progress/kendo-angular-common';
8
8
  import { DropDownListComponent } from '@progress/kendo-angular-dropdowns';
9
9
  import { LocalizationService } from '@progress/kendo-angular-l10n';
10
10
  import { filterClearIcon, filterIcon } from '@progress/kendo-svg-icons';
11
11
  import { ButtonComponent } from '@progress/kendo-angular-buttons';
12
- import { replaceMessagePlaceholder } from '../../utils';
13
12
  import { ColumnComponent } from '../../columns/column.component';
14
13
  import { FocusableDirective } from '../../navigation/focusable.directive';
15
14
  import * as i0 from "@angular/core";
@@ -105,7 +104,7 @@ export class FilterCellOperatorsComponent {
105
104
  * @hidden
106
105
  */
107
106
  clearKeydown(args) {
108
- if (args.keyCode === Keys.Enter || args.keyCode === Keys.Space) {
107
+ if (args.code === Keys.Enter || args.code === Keys.NumpadEnter || args.code === Keys.Space) {
109
108
  this.clear.emit();
110
109
  }
111
110
  }
@@ -116,7 +115,7 @@ export class FilterCellOperatorsComponent {
116
115
  if (args.defaultPrevented) {
117
116
  return;
118
117
  }
119
- if (args.keyCode === Keys.Enter && !this.dropdown.isOpen) {
118
+ if ((args.code === Keys.Enter || args.code === Keys.NumpadEnter) && !this.dropdown.isOpen) {
120
119
  this.dropdown.toggle(true);
121
120
  args.preventDefault();
122
121
  }
@@ -7,10 +7,10 @@ import { LocalizationService } from '@progress/kendo-angular-l10n';
7
7
  import { NumericTextBoxComponent, NumericTextBoxCustomMessagesComponent } from '@progress/kendo-angular-inputs';
8
8
  import { FilterService } from '../filter.service';
9
9
  import { NumericFilterComponent } from '../numeric-filter.component';
10
- import { replaceMessagePlaceholder } from '../../utils';
11
10
  import { FilterInputDirective } from '../filter-input.directive';
12
11
  import { FocusableDirective } from '../../navigation/focusable.directive';
13
12
  import { FilterCellWrapperComponent } from './filter-cell-wrapper.component';
13
+ import { replaceMessagePlaceholder } from '@progress/kendo-angular-common';
14
14
  import * as i0 from "@angular/core";
15
15
  import * as i1 from "../filter.service";
16
16
  import * as i2 from "@progress/kendo-angular-l10n";
@@ -7,11 +7,11 @@ import { ReactiveFormsModule, FormsModule } from '@angular/forms';
7
7
  import { LocalizationService } from '@progress/kendo-angular-l10n';
8
8
  import { FilterService } from '../filter.service';
9
9
  import { StringFilterComponent } from '../string-filter.component';
10
- import { replaceMessagePlaceholder } from '../../utils';
11
10
  import { FilterInputDirective } from '../filter-input.directive';
12
11
  import { FocusableDirective } from '../../navigation/focusable.directive';
13
12
  import { FilterCellWrapperComponent } from './filter-cell-wrapper.component';
14
13
  import { TextBoxComponent } from '@progress/kendo-angular-inputs';
14
+ import { replaceMessagePlaceholder } from '@progress/kendo-angular-common';
15
15
  import * as i0 from "@angular/core";
16
16
  import * as i1 from "../filter.service";
17
17
  import * as i2 from "@progress/kendo-angular-l10n";
@@ -4,12 +4,11 @@
4
4
  *-------------------------------------------------------------------------------------------*/
5
5
  import { Component, Input, HostBinding, ViewChild, ElementRef, ViewChildren, QueryList } from '@angular/core';
6
6
  import { NgFor } from '@angular/common';
7
- import { guid } from '@progress/kendo-angular-common';
7
+ import { guid, replaceMessagePlaceholder } from '@progress/kendo-angular-common';
8
8
  import { RadioButtonComponent } from '@progress/kendo-angular-inputs';
9
9
  import { FilterService } from '../filter.service';
10
10
  import { LocalizationService } from '@progress/kendo-angular-l10n';
11
11
  import { BooleanFilterComponent } from '../boolean-filter.component';
12
- import { replaceMessagePlaceholder } from '../../utils';
13
12
  import { BooleanFilterRadioButtonDirective } from './filter-radio-button.directive';
14
13
  import { MenuTabbingService } from './menu-tabbing.service';
15
14
  import * as i0 from "@angular/core";
@@ -11,8 +11,8 @@ import { SinglePopupService } from '../../common/single-popup.service';
11
11
  import { FilterInputDirective } from '../filter-input.directive';
12
12
  import { FilterMenuInputWrapperComponent } from './filter-menu-input-wrapper.component';
13
13
  import { MenuTabbingService } from './menu-tabbing.service';
14
- import { replaceMessagePlaceholder } from '../../utils';
15
14
  import { LocalizationService } from '@progress/kendo-angular-l10n';
15
+ import { replaceMessagePlaceholder } from '@progress/kendo-angular-common';
16
16
  import * as i0 from "@angular/core";
17
17
  import * as i1 from "../../common/single-popup.service";
18
18
  import * as i2 from "@progress/kendo-angular-l10n";
@@ -12,7 +12,7 @@ import { setFilter, logicOperators } from '../base-filter-cell.component';
12
12
  import { DateFilterMenuInputComponent } from './date-filter-menu-input.component';
13
13
  import { FilterMenuDropDownListDirective } from './filter-menu-dropdownlist.directive';
14
14
  import { MenuTabbingService } from './menu-tabbing.service';
15
- import { replaceMessagePlaceholder } from '../../utils';
15
+ import { replaceMessagePlaceholder } from '@progress/kendo-angular-common';
16
16
  import * as i0 from "@angular/core";
17
17
  import * as i1 from "@progress/kendo-angular-l10n";
18
18
  /**
@@ -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
  }
@@ -8,8 +8,8 @@ import { FilterService } from '../filter.service';
8
8
  import { FilterInputWrapperComponent } from "../filter-input-wrapper.component";
9
9
  import { MenuTabbingService } from './menu-tabbing.service';
10
10
  import { FilterMenuDropDownListDirective } from './filter-menu-dropdownlist.directive';
11
- import { replaceMessagePlaceholder } from '../../utils';
12
11
  import { ContextService } from '../../common/provider.service';
12
+ import { replaceMessagePlaceholder } from '@progress/kendo-angular-common';
13
13
  import * as i0 from "@angular/core";
14
14
  import * as i1 from "../../common/provider.service";
15
15
  /**
@@ -13,7 +13,7 @@ import { FilterMenuContainerComponent } from './filter-menu-container.component'
13
13
  import { ContextService } from '../../common/provider.service';
14
14
  import { NavigationService } from '../../navigation/navigation.service';
15
15
  import { IdService } from '../../common/id.service';
16
- import { replaceMessagePlaceholder } from '../../utils';
16
+ import { replaceMessagePlaceholder } from '@progress/kendo-angular-common';
17
17
  import * as i0 from "@angular/core";
18
18
  import * as i1 from "../filter.service";
19
19
  import * as i2 from "../../common/single-popup.service";
@@ -21,7 +21,7 @@ import * as i3 from "../../common/provider.service";
21
21
  import * as i4 from "../../navigation/navigation.service";
22
22
  import * as i5 from "../../common/id.service";
23
23
  let id = 0;
24
- const getId = (gridId) => `${gridId}-filter-menu-${id++}`;
24
+ const getId = (treelistId) => `${treelistId}-filter-menu-${id++}`;
25
25
  /**
26
26
  * @hidden
27
27
  */
@@ -95,7 +95,7 @@ export class FilterMenuComponent {
95
95
  }));
96
96
  const popupAriaElement = this.popupRef.popupElement.querySelector('.k-grid-filter-popup');
97
97
  if (popupAriaElement) {
98
- const popupId = getId(this.idService?.gridId());
98
+ const popupId = getId(this.idService?.treelistId());
99
99
  this.renderer.setAttribute(popupAriaElement, 'id', popupId);
100
100
  this.renderer.setAttribute(popupAriaElement, 'role', 'dialog');
101
101
  this.renderer.setAttribute(popupAriaElement, 'aria-label', this.filterLabel);
@@ -10,7 +10,7 @@ import { FilterInputDirective } from '../filter-input.directive';
10
10
  import { FilterMenuInputWrapperComponent } from './filter-menu-input-wrapper.component';
11
11
  import { MenuTabbingService } from './menu-tabbing.service';
12
12
  import { ContextService } from '../../common/provider.service';
13
- import { replaceMessagePlaceholder } from '../../utils';
13
+ import { replaceMessagePlaceholder } from '@progress/kendo-angular-common';
14
14
  import * as i0 from "@angular/core";
15
15
  import * as i1 from "../../common/provider.service";
16
16
  /**
@@ -11,8 +11,8 @@ import { NumericFilterComponent } from '../numeric-filter.component';
11
11
  import { setFilter, logicOperators } from '../base-filter-cell.component';
12
12
  import { NumericFilterMenuInputComponent } from './numeric-filter-menu-input.component';
13
13
  import { MenuTabbingService } from './menu-tabbing.service';
14
- import { replaceMessagePlaceholder } from '../../utils';
15
14
  import { FilterMenuDropDownListDirective } from './filter-menu-dropdownlist.directive';
15
+ import { replaceMessagePlaceholder } from '@progress/kendo-angular-common';
16
16
  import * as i0 from "@angular/core";
17
17
  import * as i1 from "@progress/kendo-angular-l10n";
18
18
  /**
@@ -8,10 +8,10 @@ import { TextBoxComponent } from '@progress/kendo-angular-inputs';
8
8
  import { ColumnComponent } from "../../columns/column.component";
9
9
  import { FilterService } from '../filter.service';
10
10
  import { LocalizationService } from '@progress/kendo-angular-l10n';
11
- import { replaceMessagePlaceholder } from '../../utils';
12
11
  import { FilterInputDirective } from '../filter-input.directive';
13
12
  import { FilterMenuInputWrapperComponent } from './filter-menu-input-wrapper.component';
14
13
  import { MenuTabbingService } from './menu-tabbing.service';
14
+ import { replaceMessagePlaceholder } from '@progress/kendo-angular-common';
15
15
  import * as i0 from "@angular/core";
16
16
  import * as i1 from "@progress/kendo-angular-l10n";
17
17
  import * as i2 from "@angular/forms";
@@ -11,7 +11,7 @@ import { LocalizationService } from '@progress/kendo-angular-l10n';
11
11
  import { setFilter, logicOperators } from '../base-filter-cell.component';
12
12
  import { StringFilterMenuInputComponent } from './string-filter-menu-input.component';
13
13
  import { MenuTabbingService } from './menu-tabbing.service';
14
- import { replaceMessagePlaceholder } from '../../utils';
14
+ import { replaceMessagePlaceholder } from '@progress/kendo-angular-common';
15
15
  import * as i0 from "@angular/core";
16
16
  import * as i1 from "@progress/kendo-angular-l10n";
17
17
  /**
@@ -3,7 +3,7 @@
3
3
  * Licensed under commercial license. See LICENSE.md in the project root for more information
4
4
  *-------------------------------------------------------------------------------------------*/
5
5
  import { ChangeDetectorRef, EventEmitter, Injectable, NgZone, Optional } from '@angular/core';
6
- import { isDocumentAvailable, Keys } from '@progress/kendo-angular-common';
6
+ import { isDocumentAvailable, Keys, normalizeNumpadKeys } from '@progress/kendo-angular-common';
7
7
  import { LocalizationService } from '@progress/kendo-angular-l10n';
8
8
  import { from, interval, Subscription } from 'rxjs';
9
9
  import { filter, map, switchMap, switchMapTo, take, takeUntil } from 'rxjs/operators';
@@ -181,7 +181,7 @@ export class NavigationService {
181
181
  .subscribe(() => this.cursor.reset(0, 0)));
182
182
  this.subs.add(this.domEvents.keydown
183
183
  .subscribe(args => this.onKeydown(args)));
184
- this.subs.add(this.domEvents.keydown.pipe(filter(args => args.keyCode === Keys.Tab && this.mode === 2 /* NavigationMode.Content */), switchMapTo(this.domEvents.focusOut.pipe(takeUntil(
184
+ this.subs.add(this.domEvents.keydown.pipe(filter(args => args.code === Keys.Tab && this.mode === 2 /* NavigationMode.Content */), switchMapTo(this.domEvents.focusOut.pipe(takeUntil(
185
185
  // Timeout if focusOut doesn't fire very soon
186
186
  interval(0).pipe(take(1))))))
187
187
  .subscribe(() => this.onTabout()));
@@ -398,8 +398,10 @@ export class NavigationService {
398
398
  if (!this.onCellKeydown(args)) {
399
399
  return;
400
400
  }
401
+ // on some keyboards arrow keys, PageUp/Down, and Home/End are mapped to Numpad keys
402
+ const code = normalizeNumpadKeys(args);
401
403
  const row = this.cursor.row;
402
- switch (args.keyCode) {
404
+ switch (code) {
403
405
  case Keys.Space:
404
406
  this.updateSelection(args);
405
407
  preventDefault = this.selectionService.enabled;
@@ -541,13 +543,15 @@ export class NavigationService {
541
543
  if (!this.onCellKeydown(args)) {
542
544
  return;
543
545
  }
544
- const confirm = !args.defaultPrevented && args.keyCode === Keys.Enter && isTextInput(args.target);
545
- if (args.keyCode === Keys.Escape || args.keyCode === Keys.F2 || confirm) {
546
+ // on some keyboards arrow keys, PageUp/Down, and Home/End are mapped to Numpad keys
547
+ const code = normalizeNumpadKeys(args);
548
+ const confirm = !args.defaultPrevented && code === Keys.Enter && isTextInput(args.target);
549
+ if (code === Keys.Escape || code === Keys.F2 || confirm) {
546
550
  this.leaveCell();
547
551
  this.cursor.reset();
548
552
  args.stopPropagation();
549
553
  }
550
- else if (isNavigationKey(args.keyCode) && this.cursor.cell.focusGroup.isNavigable()) {
554
+ else if (isNavigationKey(code) && this.cursor.cell.focusGroup.isNavigable()) {
551
555
  this.onCursorKeydown(args);
552
556
  if (args.defaultPrevented) {
553
557
  this.leaveCell();
@@ -555,10 +559,12 @@ export class NavigationService {
555
559
  }
556
560
  }
557
561
  onCellKeydown(args) {
562
+ // on some keyboards arrow keys, PageUp/Down, and Home/End are mapped to Numpad keys
563
+ const code = normalizeNumpadKeys(args);
558
564
  if (this.editService.isEditingCell()) {
559
- const confirm = args.keyCode === Keys.Enter;
560
- const cancel = args.keyCode === Keys.Escape;
561
- const navigate = isNavigationKey(args.keyCode);
565
+ const confirm = code === Keys.Enter || code === Keys.NumpadEnter;
566
+ const cancel = code === Keys.Escape;
567
+ const navigate = isNavigationKey(code);
562
568
  if (confirm) {
563
569
  return !this.editService.closeCell(args);
564
570
  }
@@ -10,7 +10,7 @@ export const packageMetadata = {
10
10
  productName: 'Kendo UI for Angular',
11
11
  productCode: 'KENDOUIANGULAR',
12
12
  productCodes: ['KENDOUIANGULAR'],
13
- publishDate: 1752065546,
14
- version: '19.3.0-develop.4',
13
+ publishDate: 1754990891,
14
+ version: '19.3.0-develop.40',
15
15
  licensingDocsUrl: 'https://www.telerik.com/kendo-angular-ui/my-license/'
16
16
  };
@@ -8,7 +8,7 @@ import { NgFor, NgIf, NgClass, NgStyle } from '@angular/common';
8
8
  import { Subscription, of, merge } from "rxjs";
9
9
  import { filter, map, switchMap, tap, takeUntil } from 'rxjs/operators';
10
10
  import { LocalizationService } from '@progress/kendo-angular-l10n';
11
- import { Keys, DraggableDirective, TemplateContextDirective } from '@progress/kendo-angular-common';
11
+ import { Keys, DraggableDirective, TemplateContextDirective, normalizeNumpadKeys } from '@progress/kendo-angular-common';
12
12
  import { IconWrapperComponent } from '@progress/kendo-angular-icons';
13
13
  import { sortAscSmallIcon, sortDescSmallIcon } from '@progress/kendo-svg-icons';
14
14
  import { isColumnComponent } from '../../columns/column.component';
@@ -224,14 +224,15 @@ export class HeaderComponent {
224
224
  : event[`${multiSortKey}Key`];
225
225
  }
226
226
  onHeaderKeydown(column, args) {
227
- if (args.keyCode === Keys.ArrowDown && args.altKey && this.showFilterMenu) {
227
+ const code = normalizeNumpadKeys(args);
228
+ if (code === Keys.ArrowDown && args.altKey && this.showFilterMenu) {
228
229
  args.preventDefault();
229
230
  args.stopImmediatePropagation();
230
231
  const filterMenu = this.filterMenus.find(fm => fm.column === column);
231
232
  filterMenu.toggle(filterMenu.anchor.nativeElement, filterMenu.template);
232
233
  return;
233
234
  }
234
- if (args.keyCode === Keys.ArrowDown && args.altKey && this.showColumnMenu(column)) {
235
+ if (code === Keys.ArrowDown && args.altKey && this.showColumnMenu(column)) {
235
236
  args.preventDefault();
236
237
  args.stopImmediatePropagation();
237
238
  const columnMenu = this.columnMenus.find(cm => cm.column === column);
@@ -239,12 +240,12 @@ export class HeaderComponent {
239
240
  return;
240
241
  }
241
242
  const isCtrlOrMeta = args.ctrlKey || args.metaKey;
242
- const isLeftOrRightArrow = args.keyCode === Keys.ArrowLeft || args.keyCode === Keys.ArrowRight;
243
+ const isLeftOrRightArrow = code === Keys.ArrowLeft || code === Keys.ArrowRight;
243
244
  const isReorderingKeyShortcut = isLeftOrRightArrow && isCtrlOrMeta;
244
245
  if (isReorderingKeyShortcut && this.isReorderable(column)) {
245
246
  args.preventDefault();
246
247
  const columnsCount = this.columnInfoService.leafNamedColumns.length;
247
- const reorderDirection = args.keyCode === Keys.ArrowLeft ? -1 : 1;
248
+ const reorderDirection = code === Keys.ArrowLeft ? -1 : 1;
248
249
  const rtlMultiplier = this.contextService.localization.rtl ? -1 : 1;
249
250
  const reorderDirectionOffset = reorderDirection * rtlMultiplier;
250
251
  const newIndex = column.leafIndex + reorderDirectionOffset;
@@ -261,7 +262,7 @@ export class HeaderComponent {
261
262
  if (!this.sortable || args.defaultPrevented || column.sortable === false) {
262
263
  return;
263
264
  }
264
- if (args.keyCode === Keys.Enter && isPresent(column.field)) {
265
+ if (code === Keys.Enter && isPresent(column.field)) {
265
266
  const modifier = this.matchModifier(args);
266
267
  this.sortService.sort(this.toggleSort(column, modifier));
267
268
  }
@@ -19,7 +19,7 @@ import { SuspendService } from '../scrolling/suspend.service';
19
19
  import { expandColumns, sumColumnWidths } from "../columns/column-common";
20
20
  import { ScrollSyncService } from "../scrolling/scroll-sync.service";
21
21
  import { ResizeService } from "../layout/resize.service";
22
- import { EventsOutsideAngularDirective, ResizeSensorComponent } from "@progress/kendo-angular-common";
22
+ import { EventsOutsideAngularDirective, normalizeNumpadKeys, ResizeSensorComponent } from "@progress/kendo-angular-common";
23
23
  import { BrowserSupportService } from "../layout/browser-support.service";
24
24
  import { EditService } from '../editing/edit.service';
25
25
  import { NavigationService } from '../navigation/navigation.service';
@@ -291,8 +291,10 @@ export class ListComponent {
291
291
  }
292
292
  }
293
293
  lockedKeydown(args) {
294
- if (args.keyCode === Keys.PageDown || args.keyCode === Keys.PageUp) {
295
- const dir = args.keyCode === Keys.PageDown ? 1 : -1;
294
+ // on some keyboards arrow keys, PageUp/Down, and Home/End are mapped to Numpad keys
295
+ const code = normalizeNumpadKeys(args);
296
+ if (code === Keys.PageDown || code === Keys.PageUp) {
297
+ const dir = code === Keys.PageDown ? 1 : -1;
296
298
  const element = this.container.nativeElement;
297
299
  element.scrollTop += element.offsetHeight * dir * 0.8;
298
300
  args.preventDefault();
@@ -297,7 +297,7 @@ export class TableBodyComponent {
297
297
  this.domEvents.cellClick.emit(args);
298
298
  }
299
299
  cellKeydownHandler(args) {
300
- if (args.keyCode === Keys.Enter) {
300
+ if (args.code === Keys.Enter || args.code === Keys.NumpadEnter) {
301
301
  this.clickHandler(args);
302
302
  }
303
303
  }
@@ -6,7 +6,7 @@
6
6
  import { Component, Input, HostBinding, Renderer2, ElementRef } from '@angular/core';
7
7
  import { NgIf, NgTemplateOutlet } from '@angular/common';
8
8
  import { Subscription } from 'rxjs';
9
- import { Keys, isDocumentAvailable } from '@progress/kendo-angular-common';
9
+ import { Keys, isDocumentAvailable, normalizeNumpadKeys } from '@progress/kendo-angular-common';
10
10
  import { ContextService } from './../../common/provider.service';
11
11
  import * as i0 from "@angular/core";
12
12
  import * as i1 from "./../../common/provider.service";
@@ -44,7 +44,7 @@ export class ToolbarComponent {
44
44
  }
45
45
  onKeyDown(event) {
46
46
  if (this.navigable && isDocumentAvailable() && this.navigationService.navigableElements.length) {
47
- const keyCode = event.keyCode;
47
+ const keyCode = normalizeNumpadKeys(event);
48
48
  if (keyCode === Keys.ArrowLeft || keyCode === Keys.ArrowRight) {
49
49
  event.preventDefault();
50
50
  const dir = keyCode === Keys.ArrowLeft ? -1 : 1;
@@ -111,7 +111,7 @@ export class SelectionService {
111
111
  }
112
112
  const { dataItem, column, columnIndex, originalEvent } = args;
113
113
  const ctrlKey = originalEvent.ctrlKey || originalEvent.metaKey;
114
- if ((originalEvent.keyCode === Keys.Enter && !ctrlKey) || (originalEvent.button && originalEvent.button !== 0)) {
114
+ if (((originalEvent.code === Keys.Enter || originalEvent.code === Keys.NumpadEnter) && !ctrlKey) || (originalEvent.button && originalEvent.button !== 0)) {
115
115
  return;
116
116
  }
117
117
  const selected = this.isSelected(dataItem, column, columnIndex);
package/esm2022/utils.mjs CHANGED
@@ -111,7 +111,3 @@ export const cancelAnimationFrame = wnd.cancelAnimationFrame || wnd.msCancelRequ
111
111
  /** @hidden */
112
112
  export const isColumnEditable = (column, formGroup) => column.isEditable !== false &&
113
113
  (column.editTemplate || (formGroup && column.field && formGroup.get(column.field)));
114
- /**
115
- * @hidden
116
- */
117
- export const replaceMessagePlaceholder = (message, name, value) => message.replace(new RegExp(`{\\s*${name}\\s*}`, 'g'), value);
@@ -5,7 +5,7 @@
5
5
  import * as i0 from '@angular/core';
6
6
  import { Directive, Optional, EventEmitter, Injectable, QueryList, Input, ContentChildren, ContentChild, InjectionToken, forwardRef, Component, SkipSelf, Host, isDevMode, SecurityContext, Inject, Output, HostBinding, Pipe, ViewChild, ViewChildren, Self, HostListener, NgZone, TemplateRef, ChangeDetectionStrategy, ViewEncapsulation, NgModule } from '@angular/core';
7
7
  import * as i1$4 from '@progress/kendo-angular-common';
8
- import { isDocumentAvailable, isPresent as isPresent$1, hasClasses as hasClasses$1, Keys, anyChanged, isChanged as isChanged$1, ResizeSensorComponent, EventsOutsideAngularDirective, KendoInput, guid, DraggableDirective, TemplateContextDirective, hasObservers, ResizeBatchService } from '@progress/kendo-angular-common';
8
+ import { isDocumentAvailable, isPresent as isPresent$1, hasClasses as hasClasses$1, Keys, normalizeNumpadKeys, anyChanged, isChanged as isChanged$1, ResizeSensorComponent, EventsOutsideAngularDirective, KendoInput, replaceMessagePlaceholder, guid, DraggableDirective, TemplateContextDirective, hasObservers, ResizeBatchService } from '@progress/kendo-angular-common';
9
9
  import * as i2 from '@progress/kendo-angular-icons';
10
10
  import { IconWrapperComponent, IconsService, KENDO_ICONS } from '@progress/kendo-angular-icons';
11
11
  import { DatePickerComponent, DatePickerCustomMessagesComponent, CalendarDOMService, CenturyViewService, DecadeViewService, MonthViewService, YearViewService, NavigationService as NavigationService$1 } from '@progress/kendo-angular-dateinputs';
@@ -49,8 +49,8 @@ const packageMetadata = {
49
49
  productName: 'Kendo UI for Angular',
50
50
  productCode: 'KENDOUIANGULAR',
51
51
  productCodes: ['KENDOUIANGULAR'],
52
- publishDate: 1752065546,
53
- version: '19.3.0-develop.4',
52
+ publishDate: 1754990891,
53
+ version: '19.3.0-develop.40',
54
54
  licensingDocsUrl: 'https://www.telerik.com/kendo-angular-ui/my-license/'
55
55
  };
56
56
 
@@ -694,10 +694,6 @@ const cancelAnimationFrame = wnd.cancelAnimationFrame || wnd.msCancelRequestAnim
694
694
  /** @hidden */
695
695
  const isColumnEditable = (column, formGroup) => column.isEditable !== false &&
696
696
  (column.editTemplate || (formGroup && column.field && formGroup.get(column.field)));
697
- /**
698
- * @hidden
699
- */
700
- const replaceMessagePlaceholder = (message, name, value) => message.replace(new RegExp(`{\\s*${name}\\s*}`, 'g'), value);
701
697
 
702
698
  /**
703
699
  * Represents the filter-cell template for the TreeList.
@@ -4362,7 +4358,7 @@ class SelectionService {
4362
4358
  }
4363
4359
  const { dataItem, column, columnIndex, originalEvent } = args;
4364
4360
  const ctrlKey = originalEvent.ctrlKey || originalEvent.metaKey;
4365
- if ((originalEvent.keyCode === Keys.Enter && !ctrlKey) || (originalEvent.button && originalEvent.button !== 0)) {
4361
+ if (((originalEvent.code === Keys.Enter || originalEvent.code === Keys.NumpadEnter) && !ctrlKey) || (originalEvent.button && originalEvent.button !== 0)) {
4366
4362
  return;
4367
4363
  }
4368
4364
  const selected = this.isSelected(dataItem, column, columnIndex);
@@ -4663,7 +4659,7 @@ class NavigationService {
4663
4659
  .subscribe(() => this.cursor.reset(0, 0)));
4664
4660
  this.subs.add(this.domEvents.keydown
4665
4661
  .subscribe(args => this.onKeydown(args)));
4666
- this.subs.add(this.domEvents.keydown.pipe(filter(args => args.keyCode === Keys.Tab && this.mode === 2 /* NavigationMode.Content */), switchMapTo(this.domEvents.focusOut.pipe(takeUntil(
4662
+ this.subs.add(this.domEvents.keydown.pipe(filter(args => args.code === Keys.Tab && this.mode === 2 /* NavigationMode.Content */), switchMapTo(this.domEvents.focusOut.pipe(takeUntil(
4667
4663
  // Timeout if focusOut doesn't fire very soon
4668
4664
  interval(0).pipe(take(1))))))
4669
4665
  .subscribe(() => this.onTabout()));
@@ -4880,8 +4876,10 @@ class NavigationService {
4880
4876
  if (!this.onCellKeydown(args)) {
4881
4877
  return;
4882
4878
  }
4879
+ // on some keyboards arrow keys, PageUp/Down, and Home/End are mapped to Numpad keys
4880
+ const code = normalizeNumpadKeys(args);
4883
4881
  const row = this.cursor.row;
4884
- switch (args.keyCode) {
4882
+ switch (code) {
4885
4883
  case Keys.Space:
4886
4884
  this.updateSelection(args);
4887
4885
  preventDefault = this.selectionService.enabled;
@@ -5023,13 +5021,15 @@ class NavigationService {
5023
5021
  if (!this.onCellKeydown(args)) {
5024
5022
  return;
5025
5023
  }
5026
- const confirm = !args.defaultPrevented && args.keyCode === Keys.Enter && isTextInput(args.target);
5027
- if (args.keyCode === Keys.Escape || args.keyCode === Keys.F2 || confirm) {
5024
+ // on some keyboards arrow keys, PageUp/Down, and Home/End are mapped to Numpad keys
5025
+ const code = normalizeNumpadKeys(args);
5026
+ const confirm = !args.defaultPrevented && code === Keys.Enter && isTextInput(args.target);
5027
+ if (code === Keys.Escape || code === Keys.F2 || confirm) {
5028
5028
  this.leaveCell();
5029
5029
  this.cursor.reset();
5030
5030
  args.stopPropagation();
5031
5031
  }
5032
- else if (isNavigationKey(args.keyCode) && this.cursor.cell.focusGroup.isNavigable()) {
5032
+ else if (isNavigationKey(code) && this.cursor.cell.focusGroup.isNavigable()) {
5033
5033
  this.onCursorKeydown(args);
5034
5034
  if (args.defaultPrevented) {
5035
5035
  this.leaveCell();
@@ -5037,10 +5037,12 @@ class NavigationService {
5037
5037
  }
5038
5038
  }
5039
5039
  onCellKeydown(args) {
5040
+ // on some keyboards arrow keys, PageUp/Down, and Home/End are mapped to Numpad keys
5041
+ const code = normalizeNumpadKeys(args);
5040
5042
  if (this.editService.isEditingCell()) {
5041
- const confirm = args.keyCode === Keys.Enter;
5042
- const cancel = args.keyCode === Keys.Escape;
5043
- const navigate = isNavigationKey(args.keyCode);
5043
+ const confirm = code === Keys.Enter || code === Keys.NumpadEnter;
5044
+ const cancel = code === Keys.Escape;
5045
+ const navigate = isNavigationKey(code);
5044
5046
  if (confirm) {
5045
5047
  return !this.editService.closeCell(args);
5046
5048
  }
@@ -5160,7 +5162,7 @@ class IdService {
5160
5162
  cellId(rowIndex, colIndex) {
5161
5163
  return `${this.prefix}-r${rowIndex}c${colIndex}`;
5162
5164
  }
5163
- gridId() {
5165
+ treelistId() {
5164
5166
  return this.prefix;
5165
5167
  }
5166
5168
  selectionCheckboxId(itemIndex) {
@@ -6779,7 +6781,7 @@ class TableBodyComponent {
6779
6781
  this.domEvents.cellClick.emit(args);
6780
6782
  }
6781
6783
  cellKeydownHandler(args) {
6782
- if (args.keyCode === Keys.Enter) {
6784
+ if (args.code === Keys.Enter || args.code === Keys.NumpadEnter) {
6783
6785
  this.clickHandler(args);
6784
6786
  }
6785
6787
  }
@@ -8004,8 +8006,10 @@ class ListComponent {
8004
8006
  }
8005
8007
  }
8006
8008
  lockedKeydown(args) {
8007
- if (args.keyCode === Keys.PageDown || args.keyCode === Keys.PageUp) {
8008
- const dir = args.keyCode === Keys.PageDown ? 1 : -1;
8009
+ // on some keyboards arrow keys, PageUp/Down, and Home/End are mapped to Numpad keys
8010
+ const code = normalizeNumpadKeys(args);
8011
+ if (code === Keys.PageDown || code === Keys.PageUp) {
8012
+ const dir = code === Keys.PageDown ? 1 : -1;
8009
8013
  const element = this.container.nativeElement;
8010
8014
  element.scrollTop += element.offsetHeight * dir * 0.8;
8011
8015
  args.preventDefault();
@@ -9513,7 +9517,7 @@ class FilterCellOperatorsComponent {
9513
9517
  * @hidden
9514
9518
  */
9515
9519
  clearKeydown(args) {
9516
- if (args.keyCode === Keys.Enter || args.keyCode === Keys.Space) {
9520
+ if (args.code === Keys.Enter || args.code === Keys.NumpadEnter || args.code === Keys.Space) {
9517
9521
  this.clear.emit();
9518
9522
  }
9519
9523
  }
@@ -9524,7 +9528,7 @@ class FilterCellOperatorsComponent {
9524
9528
  if (args.defaultPrevented) {
9525
9529
  return;
9526
9530
  }
9527
- if (args.keyCode === Keys.Enter && !this.dropdown.isOpen) {
9531
+ if ((args.code === Keys.Enter || args.code === Keys.NumpadEnter) && !this.dropdown.isOpen) {
9528
9532
  this.dropdown.toggle(true);
9529
9533
  args.preventDefault();
9530
9534
  }
@@ -11029,7 +11033,7 @@ class FilterMenuDropDownListDirective {
11029
11033
  this.host.wrapper.nativeElement.removeEventListener('keydown', this.keydownHandler);
11030
11034
  }
11031
11035
  keydownHandler = (e) => {
11032
- if (e.keyCode === Keys.Escape && this.host.isOpen) {
11036
+ if (e.code === Keys.Escape && this.host.isOpen) {
11033
11037
  e.stopPropagation();
11034
11038
  this.host.toggle(false);
11035
11039
  }
@@ -13204,7 +13208,8 @@ class ColumnListComponent {
13204
13208
  }
13205
13209
  }
13206
13210
  onKeydown = (e) => {
13207
- if (e.keyCode !== Keys.Tab) {
13211
+ const code = normalizeNumpadKeys(e);
13212
+ if (code !== Keys.Tab) {
13208
13213
  e.preventDefault();
13209
13214
  }
13210
13215
  if (e.key === 'Tab' && !e.shiftKey && this.autoSync) {
@@ -13218,13 +13223,13 @@ class ColumnListComponent {
13218
13223
  }
13219
13224
  });
13220
13225
  }
13221
- if (e.keyCode === Keys.ArrowDown) {
13226
+ if (code === Keys.ArrowDown) {
13222
13227
  this.listNavigationService.next();
13223
13228
  }
13224
- else if (e.keyCode === Keys.ArrowUp) {
13229
+ else if (code === Keys.ArrowUp) {
13225
13230
  this.listNavigationService.prev();
13226
13231
  }
13227
- else if (e.keyCode === Keys.Space && e.target.classList.contains('k-column-list-item')) {
13232
+ else if (code === Keys.Space && e.target.classList.contains('k-column-list-item')) {
13228
13233
  this.listNavigationService.toggleCheckedState();
13229
13234
  }
13230
13235
  };
@@ -13900,7 +13905,7 @@ class ColumnMenuItemDirective {
13900
13905
  }
13901
13906
  }
13902
13907
  onTab = (e) => {
13903
- if (e.keyCode !== Keys.Tab) {
13908
+ if (e.code !== Keys.Tab) {
13904
13909
  return;
13905
13910
  }
13906
13911
  if (this.isFirst && e.shiftKey && e.target === this.columnMenuItems[0]) {
@@ -14124,7 +14129,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
14124
14129
 
14125
14130
  const POPUP_CLASSES = 'k-grid-columnmenu-popup k-column-menu';
14126
14131
  let id$1 = 0;
14127
- const getId$1 = (gridId) => `${gridId}-column-menu-${id$1++}`;
14132
+ const getId$1 = (treelistId) => `${treelistId}-column-menu-${id$1++}`;
14128
14133
  /**
14129
14134
  * Represents the [column menu]({% slug columnmenu_treelist %}) component of the TreeList.
14130
14135
  * Use this component to display and manage column menu options for a TreeList column.
@@ -14310,7 +14315,7 @@ class ColumnMenuComponent {
14310
14315
  }));
14311
14316
  const popupAriaElement = this.popupRef.popupElement.querySelector('.k-grid-columnmenu-popup');
14312
14317
  if (popupAriaElement) {
14313
- const popupId = getId$1(this.idService?.gridId());
14318
+ const popupId = getId$1(this.idService?.treelistId());
14314
14319
  this.renderer.setAttribute(popupAriaElement, 'id', popupId);
14315
14320
  this.renderer.setAttribute(popupAriaElement, 'role', 'dialog');
14316
14321
  this.renderer.setAttribute(popupAriaElement, 'aria-label', this.columnMenuTitle);
@@ -14538,7 +14543,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
14538
14543
  }] } });
14539
14544
 
14540
14545
  let id = 0;
14541
- const getId = (gridId) => `${gridId}-filter-menu-${id++}`;
14546
+ const getId = (treelistId) => `${treelistId}-filter-menu-${id++}`;
14542
14547
  /**
14543
14548
  * @hidden
14544
14549
  */
@@ -14612,7 +14617,7 @@ class FilterMenuComponent {
14612
14617
  }));
14613
14618
  const popupAriaElement = this.popupRef.popupElement.querySelector('.k-grid-filter-popup');
14614
14619
  if (popupAriaElement) {
14615
- const popupId = getId(this.idService?.gridId());
14620
+ const popupId = getId(this.idService?.treelistId());
14616
14621
  this.renderer.setAttribute(popupAriaElement, 'id', popupId);
14617
14622
  this.renderer.setAttribute(popupAriaElement, 'role', 'dialog');
14618
14623
  this.renderer.setAttribute(popupAriaElement, 'aria-label', this.filterLabel);
@@ -14965,14 +14970,15 @@ class HeaderComponent {
14965
14970
  : event[`${multiSortKey}Key`];
14966
14971
  }
14967
14972
  onHeaderKeydown(column, args) {
14968
- if (args.keyCode === Keys.ArrowDown && args.altKey && this.showFilterMenu) {
14973
+ const code = normalizeNumpadKeys(args);
14974
+ if (code === Keys.ArrowDown && args.altKey && this.showFilterMenu) {
14969
14975
  args.preventDefault();
14970
14976
  args.stopImmediatePropagation();
14971
14977
  const filterMenu = this.filterMenus.find(fm => fm.column === column);
14972
14978
  filterMenu.toggle(filterMenu.anchor.nativeElement, filterMenu.template);
14973
14979
  return;
14974
14980
  }
14975
- if (args.keyCode === Keys.ArrowDown && args.altKey && this.showColumnMenu(column)) {
14981
+ if (code === Keys.ArrowDown && args.altKey && this.showColumnMenu(column)) {
14976
14982
  args.preventDefault();
14977
14983
  args.stopImmediatePropagation();
14978
14984
  const columnMenu = this.columnMenus.find(cm => cm.column === column);
@@ -14980,12 +14986,12 @@ class HeaderComponent {
14980
14986
  return;
14981
14987
  }
14982
14988
  const isCtrlOrMeta = args.ctrlKey || args.metaKey;
14983
- const isLeftOrRightArrow = args.keyCode === Keys.ArrowLeft || args.keyCode === Keys.ArrowRight;
14989
+ const isLeftOrRightArrow = code === Keys.ArrowLeft || code === Keys.ArrowRight;
14984
14990
  const isReorderingKeyShortcut = isLeftOrRightArrow && isCtrlOrMeta;
14985
14991
  if (isReorderingKeyShortcut && this.isReorderable(column)) {
14986
14992
  args.preventDefault();
14987
14993
  const columnsCount = this.columnInfoService.leafNamedColumns.length;
14988
- const reorderDirection = args.keyCode === Keys.ArrowLeft ? -1 : 1;
14994
+ const reorderDirection = code === Keys.ArrowLeft ? -1 : 1;
14989
14995
  const rtlMultiplier = this.contextService.localization.rtl ? -1 : 1;
14990
14996
  const reorderDirectionOffset = reorderDirection * rtlMultiplier;
14991
14997
  const newIndex = column.leafIndex + reorderDirectionOffset;
@@ -15002,7 +15008,7 @@ class HeaderComponent {
15002
15008
  if (!this.sortable || args.defaultPrevented || column.sortable === false) {
15003
15009
  return;
15004
15010
  }
15005
- if (args.keyCode === Keys.Enter && isPresent(column.field)) {
15011
+ if (code === Keys.Enter && isPresent(column.field)) {
15006
15012
  const modifier = this.matchModifier(args);
15007
15013
  this.sortService.sort(this.toggleSort(column, modifier));
15008
15014
  }
@@ -15712,7 +15718,7 @@ class ToolbarComponent {
15712
15718
  }
15713
15719
  onKeyDown(event) {
15714
15720
  if (this.navigable && isDocumentAvailable() && this.navigationService.navigableElements.length) {
15715
- const keyCode = event.keyCode;
15721
+ const keyCode = normalizeNumpadKeys(event);
15716
15722
  if (keyCode === Keys.ArrowLeft || keyCode === Keys.ArrowRight) {
15717
15723
  event.preventDefault();
15718
15724
  const dir = keyCode === Keys.ArrowLeft ? -1 : 1;
@@ -22759,7 +22765,7 @@ class ColumnChooserComponent {
22759
22765
  const popupAriaElement = popupElement.querySelector('.k-popup');
22760
22766
  this.ngZone.runOutsideAngular(() => {
22761
22767
  this.escapeListener = this.renderer.listen(popupAriaElement, 'keydown', (e) => {
22762
- if (e.keyCode === Keys.Escape) {
22768
+ if (e.code === Keys.Escape) {
22763
22769
  this.close(true);
22764
22770
  }
22765
22771
  });
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@progress/kendo-angular-treelist",
3
- "version": "19.3.0-develop.4",
3
+ "version": "19.3.0-develop.40",
4
4
  "description": "Kendo UI TreeList for Angular - Display hierarchical data in an Angular tree grid view that supports sorting, filtering, paging, and much more.",
5
5
  "license": "SEE LICENSE IN LICENSE.md",
6
6
  "author": "Progress",
@@ -24,7 +24,7 @@
24
24
  "package": {
25
25
  "productName": "Kendo UI for Angular",
26
26
  "productCode": "KENDOUIANGULAR",
27
- "publishDate": 1752065546,
27
+ "publishDate": 1754990891,
28
28
  "licensingDocsUrl": "https://www.telerik.com/kendo-angular-ui/my-license/"
29
29
  }
30
30
  },
@@ -36,27 +36,27 @@
36
36
  "@angular/platform-browser": "16 - 20",
37
37
  "@progress/kendo-data-query": "^1.0.0",
38
38
  "@progress/kendo-drawing": "^1.21.0",
39
- "@progress/kendo-licensing": "^1.5.0",
40
- "@progress/kendo-angular-buttons": "19.3.0-develop.4",
41
- "@progress/kendo-angular-common": "19.3.0-develop.4",
42
- "@progress/kendo-angular-dateinputs": "19.3.0-develop.4",
43
- "@progress/kendo-angular-dropdowns": "19.3.0-develop.4",
44
- "@progress/kendo-angular-excel-export": "19.3.0-develop.4",
45
- "@progress/kendo-angular-icons": "19.3.0-develop.4",
46
- "@progress/kendo-angular-inputs": "19.3.0-develop.4",
47
- "@progress/kendo-angular-intl": "19.3.0-develop.4",
48
- "@progress/kendo-angular-l10n": "19.3.0-develop.4",
49
- "@progress/kendo-angular-label": "19.3.0-develop.4",
50
- "@progress/kendo-angular-pager": "19.3.0-develop.4",
51
- "@progress/kendo-angular-pdf-export": "19.3.0-develop.4",
52
- "@progress/kendo-angular-popup": "19.3.0-develop.4",
53
- "@progress/kendo-angular-toolbar": "19.3.0-develop.4",
54
- "@progress/kendo-angular-utils": "19.3.0-develop.4",
39
+ "@progress/kendo-licensing": "^1.7.0",
40
+ "@progress/kendo-angular-buttons": "19.3.0-develop.40",
41
+ "@progress/kendo-angular-common": "19.3.0-develop.40",
42
+ "@progress/kendo-angular-dateinputs": "19.3.0-develop.40",
43
+ "@progress/kendo-angular-dropdowns": "19.3.0-develop.40",
44
+ "@progress/kendo-angular-excel-export": "19.3.0-develop.40",
45
+ "@progress/kendo-angular-icons": "19.3.0-develop.40",
46
+ "@progress/kendo-angular-inputs": "19.3.0-develop.40",
47
+ "@progress/kendo-angular-intl": "19.3.0-develop.40",
48
+ "@progress/kendo-angular-l10n": "19.3.0-develop.40",
49
+ "@progress/kendo-angular-label": "19.3.0-develop.40",
50
+ "@progress/kendo-angular-pager": "19.3.0-develop.40",
51
+ "@progress/kendo-angular-pdf-export": "19.3.0-develop.40",
52
+ "@progress/kendo-angular-popup": "19.3.0-develop.40",
53
+ "@progress/kendo-angular-toolbar": "19.3.0-develop.40",
54
+ "@progress/kendo-angular-utils": "19.3.0-develop.40",
55
55
  "rxjs": "^6.5.3 || ^7.0.0"
56
56
  },
57
57
  "dependencies": {
58
58
  "tslib": "^2.3.1",
59
- "@progress/kendo-angular-schematics": "19.3.0-develop.4",
59
+ "@progress/kendo-angular-schematics": "19.3.0-develop.40",
60
60
  "@progress/kendo-common": "^1.0.1",
61
61
  "@progress/kendo-file-saver": "^1.0.0"
62
62
  },
@@ -113,7 +113,7 @@ export declare class ListComponent implements OnInit, OnDestroy, AfterViewInit,
113
113
  init(): void;
114
114
  lockedScroll(): void;
115
115
  lockedMousewheel(args: any): void;
116
- lockedKeydown(args: any): void;
116
+ lockedKeydown(args: KeyboardEvent): void;
117
117
  updateViewportColumns(range?: any): void;
118
118
  private attachContainerScroll;
119
119
  private createScroller;
@@ -4,13 +4,13 @@ const schematics_1 = require("@angular-devkit/schematics");
4
4
  function default_1(options) {
5
5
  const finalOptions = Object.assign(Object.assign({}, options), { mainNgModule: 'TreeListModule', package: 'treelist', peerDependencies: {
6
6
  // peer dep of the dropdowns
7
- '@progress/kendo-angular-treeview': '19.3.0-develop.4',
7
+ '@progress/kendo-angular-treeview': '19.3.0-develop.40',
8
8
  // peer dependency of kendo-angular-inputs
9
- '@progress/kendo-angular-dialog': '19.3.0-develop.4',
9
+ '@progress/kendo-angular-dialog': '19.3.0-develop.40',
10
10
  // peer dependency of kendo-angular-icons
11
11
  '@progress/kendo-svg-icons': '^4.0.0',
12
12
  // peer dependency of kendo-angular-dateinputs
13
- '@progress/kendo-angular-navigation': '19.3.0-develop.4',
13
+ '@progress/kendo-angular-navigation': '19.3.0-develop.40',
14
14
  } });
15
15
  return (0, schematics_1.externalSchematic)('@progress/kendo-angular-schematics', 'ng-add', finalOptions);
16
16
  }
package/utils.d.ts CHANGED
@@ -78,7 +78,3 @@ export declare const requestAnimationFrame: any;
78
78
  export declare const cancelAnimationFrame: any;
79
79
  /** @hidden */
80
80
  export declare const isColumnEditable: (column: any, formGroup: any) => boolean;
81
- /**
82
- * @hidden
83
- */
84
- export declare const replaceMessagePlaceholder: (message: string, name: string, value: string) => string;