@progress/kendo-angular-dropdowns 19.3.0-develop.32 → 19.3.0-develop.33

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.
@@ -85,7 +85,7 @@ export declare class SearchBarComponent implements OnChanges, OnInit, OnDestroy
85
85
  handleInput(event: any): void;
86
86
  handleFocus(event: any): void;
87
87
  handleBlur(event: any): void;
88
- handleKeydown(event: any): void;
88
+ handleKeydown(event: KeyboardEvent): void;
89
89
  focus(): void;
90
90
  blur(): void;
91
91
  setInputSize(): void;
@@ -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 { Component, Renderer2, forwardRef, ElementRef, Input, Output, EventEmitter, ContentChild, ViewChild, ViewContainerRef, TemplateRef, HostBinding, isDevMode, ChangeDetectorRef, NgZone, Injector } from '@angular/core';
6
- import { isDocumentAvailable, KendoInput, hasObservers, SuffixTemplateDirective, PrefixTemplateDirective, isControlRequired, SeparatorComponent, ResizeSensorComponent, TemplateContextDirective, guid } from '@progress/kendo-angular-common';
6
+ import { isDocumentAvailable, KendoInput, hasObservers, SuffixTemplateDirective, PrefixTemplateDirective, isControlRequired, SeparatorComponent, ResizeSensorComponent, TemplateContextDirective, guid, normalizeNumpadKeys } from '@progress/kendo-angular-common';
7
7
  import { AdaptiveService } from '@progress/kendo-angular-utils';
8
8
  import { NG_VALUE_ACCESSOR, NgControl } from '@angular/forms';
9
9
  import { validatePackage } from '@progress/kendo-licensing';
@@ -988,7 +988,8 @@ export class AutoCompleteComponent {
988
988
  this.subs.add(merge(this.navigationService.pagedown, this.navigationService.pageup).subscribe((event) => {
989
989
  if (this.isOpen) {
990
990
  event.originalEvent.preventDefault();
991
- this.optionsList.scrollWithOnePage(NavigationAction[event.originalEvent.code]);
991
+ const code = normalizeNumpadKeys(event.originalEvent);
992
+ this.optionsList.scrollWithOnePage(NavigationAction[code]);
992
993
  }
993
994
  }));
994
995
  }
@@ -18,7 +18,7 @@ import { NavigationService } from '../common/navigation/navigation.service';
18
18
  import { DisabledItemsService } from '../common/disabled-items/disabled-items.service';
19
19
  import { merge, of, Subject, Subscription } from 'rxjs';
20
20
  import { catchError, filter, map, partition, tap, throttleTime } from 'rxjs/operators';
21
- import { isChanged, isDocumentAvailable, KendoInput, hasObservers, anyChanged, SuffixTemplateDirective, PrefixTemplateDirective, isControlRequired, MultiTabStop, SeparatorComponent, EventsOutsideAngularDirective, ResizeSensorComponent, Keys, TemplateContextDirective, guid } from '@progress/kendo-angular-common';
21
+ import { isChanged, isDocumentAvailable, KendoInput, hasObservers, anyChanged, SuffixTemplateDirective, PrefixTemplateDirective, isControlRequired, MultiTabStop, SeparatorComponent, EventsOutsideAngularDirective, ResizeSensorComponent, Keys, TemplateContextDirective, guid, normalizeNumpadKeys } from '@progress/kendo-angular-common';
22
22
  import { AdaptiveService } from '@progress/kendo-angular-utils';
23
23
  import { isPresent, getter, isEmptyString, isUntouched, inDropDown, getSizeClass, getRoundedClass, getFillModeClass, isTruthy, setListBoxAriaLabelledBy, setActionSheetTitle, animationDuration } from '../common/util';
24
24
  import { NavigationAction } from '../common/navigation/navigation-action';
@@ -798,7 +798,8 @@ export class ComboBoxComponent extends MultiTabStop {
798
798
  this.subs.add(merge(this.navigationService.pagedown, this.navigationService.pageup).subscribe((event) => {
799
799
  if (this.isOpen) {
800
800
  event.originalEvent.preventDefault();
801
- this.optionsList.scrollWithOnePage(NavigationAction[event.originalEvent.code]);
801
+ const code = normalizeNumpadKeys(event.originalEvent);
802
+ this.optionsList.scrollWithOnePage(NavigationAction[code]);
802
803
  }
803
804
  }));
804
805
  this.subs.add(this.navigationService.esc.subscribe(this.handleEscape.bind(this)));
@@ -1147,14 +1148,18 @@ export class ComboBoxComponent extends MultiTabStop {
1147
1148
  if (this.disabled || this.readonly) {
1148
1149
  return;
1149
1150
  }
1150
- if (event.keyCode === Keys.Home || event.keyCode === Keys.End) {
1151
+ // on some keyboards, Home and End keys are mapped to Numpad keys
1152
+ const code = normalizeNumpadKeys(event);
1153
+ const isHomeKey = code === Keys.Home;
1154
+ const isEndKey = code === Keys.End;
1155
+ if (isHomeKey || isEndKey) {
1151
1156
  return;
1152
1157
  }
1153
1158
  if (!hasSelected) {
1154
- if (event.keyCode === Keys.ArrowDown) {
1159
+ if (code === Keys.ArrowDown) {
1155
1160
  offset = -1;
1156
1161
  }
1157
- else if (event.keyCode === Keys.ArrowUp) {
1162
+ else if (code === Keys.ArrowUp) {
1158
1163
  offset = 1;
1159
1164
  }
1160
1165
  }
@@ -4,7 +4,7 @@
4
4
  *-------------------------------------------------------------------------------------------*/
5
5
  import { Injectable, EventEmitter } from '@angular/core';
6
6
  import { isPresent } from '../util';
7
- import { Keys } from '@progress/kendo-angular-common';
7
+ import { Keys, normalizeNumpadKeys } from '@progress/kendo-angular-common';
8
8
  import { NavigationAction } from './navigation-action';
9
9
  import { DisabledItemsService } from '../disabled-items/disabled-items.service';
10
10
  import { SelectionService } from '../selection/selection.service';
@@ -57,7 +57,8 @@ export class NavigationService {
57
57
  this.selectionService = selectionService;
58
58
  }
59
59
  process(args) {
60
- const keyCode = args.originalEvent.keyCode;
60
+ // on some keyboards arrow keys, PageUp/Down, and Home/End are mapped to Numpad keys
61
+ const keyCode = normalizeNumpadKeys(args.originalEvent);
61
62
  const altKey = args.originalEvent.altKey;
62
63
  const shiftKey = args.originalEvent.shiftKey;
63
64
  const ctrlKey = args.originalEvent.ctrlKey || args.originalEvent.metaKey;
@@ -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 { Component, Renderer2, Input, Output, EventEmitter, ElementRef, HostBinding, Injector, NgZone } from '@angular/core';
6
- import { isDocumentAvailable, isObjectPresent, isSafari, removeHTMLAttributes, setHTMLAttributes, Keys, parseAttributes } from '@progress/kendo-angular-common';
6
+ import { isDocumentAvailable, isObjectPresent, isSafari, removeHTMLAttributes, setHTMLAttributes, Keys, parseAttributes, normalizeNumpadKeys } from '@progress/kendo-angular-common';
7
7
  import { combineStr, isJapanese } from './util';
8
8
  import { LocalizationService } from '@progress/kendo-angular-l10n';
9
9
  import { Subscription } from 'rxjs';
@@ -269,7 +269,8 @@ export class SearchBarComponent {
269
269
  this.onBlur.emit(event);
270
270
  }
271
271
  handleKeydown(event) {
272
- const keyCode = event.keyCode;
272
+ // on some keyboards arrow keys, PageUp/Down, and Home/End are mapped to Numpad keys
273
+ const keyCode = normalizeNumpadKeys(event);
273
274
  const keys = [Keys.ArrowUp, Keys.ArrowDown, Keys.ArrowLeft, Keys.ArrowRight, Keys.Enter,
274
275
  Keys.Escape, Keys.Delete, Keys.Backspace, Keys.Home, Keys.End, Keys.PageDown, Keys.PageUp];
275
276
  if (keys.indexOf(keyCode) > -1) {
@@ -63,7 +63,7 @@ export class SharedDropDownEventsDirective {
63
63
  cursorInsideWrapper = false;
64
64
  }));
65
65
  this.subscriptions.add(this.renderer.listen(hostElement, 'keydown', (args) => {
66
- if (args.keyCode === Keys.Tab) {
66
+ if (args.code === Keys.Tab) {
67
67
  tabbing = true;
68
68
  }
69
69
  else {
@@ -8,7 +8,7 @@ import { validatePackage } from '@progress/kendo-licensing';
8
8
  import { packageMetadata } from '../package-metadata';
9
9
  import { merge, interval, Subscription } from 'rxjs';
10
10
  import { concatMap, filter, map, skipWhile, take, takeUntil, tap } from 'rxjs/operators';
11
- import { isDocumentAvailable, KendoInput, hasObservers, anyChanged, isChanged, EventsOutsideAngularDirective, ResizeSensorComponent, Keys, TemplateContextDirective, isSafari, guid } from '@progress/kendo-angular-common';
11
+ import { isDocumentAvailable, KendoInput, hasObservers, anyChanged, isChanged, EventsOutsideAngularDirective, ResizeSensorComponent, Keys, TemplateContextDirective, isSafari, guid, normalizeNumpadKeys } from '@progress/kendo-angular-common';
12
12
  import { AdaptiveService } from '@progress/kendo-angular-utils';
13
13
  import { isPresent, getter, shuffleData, sameCharsOnly, matchText, isUntouched, inDropDown, getSizeClass, getRoundedClass, getFillModeClass, isTruthy, setListBoxAriaLabelledBy, setActionSheetTitle, animationDuration } from '../common/util';
14
14
  import { SelectionService } from '../common/selection/selection.service';
@@ -598,7 +598,11 @@ export class DropDownListComponent {
598
598
  if (this.disabled || this.readonly) {
599
599
  return;
600
600
  }
601
- const isHomeEnd = event.keyCode === Keys.Home || event.keyCode === Keys.End;
601
+ // on some keyboards, Home and End keys are mapped to Numpad keys
602
+ const code = normalizeNumpadKeys(event);
603
+ const isHomeKey = code === Keys.Home;
604
+ const isEndKey = code === Keys.End;
605
+ const isHomeEnd = isHomeKey || isEndKey;
602
606
  const isFilterFocused = this.filterable && this.isFocused && this.isOpen;
603
607
  if (isFilterFocused && isHomeEnd) {
604
608
  return;
@@ -606,10 +610,10 @@ export class DropDownListComponent {
606
610
  const hasSelected = isPresent(this.selectionService.selected[0]);
607
611
  const focusedItemNotSelected = isPresent(this.selectionService.focused) && !this.selectionService.isSelected(this.selectionService.focused);
608
612
  if (!hasSelected || focusedItemNotSelected) {
609
- if (event.keyCode === Keys.ArrowDown || event.keyCode === Keys.ArrowRight && this.leftRightArrowsNavigation) {
613
+ if (code === Keys.ArrowDown || code === Keys.ArrowRight && this.leftRightArrowsNavigation) {
610
614
  offset = -1;
611
615
  }
612
- else if (event.keyCode === Keys.ArrowUp || event.keyCode === Keys.ArrowLeft && this.leftRightArrowsNavigation) {
616
+ else if (code === Keys.ArrowUp || code === Keys.ArrowLeft && this.leftRightArrowsNavigation) {
613
617
  offset = 1;
614
618
  }
615
619
  }
@@ -1061,7 +1065,8 @@ export class DropDownListComponent {
1061
1065
  this.subs.add(merge(this.navigationService.pagedown, this.navigationService.pageup).subscribe((event) => {
1062
1066
  if (this.isOpen) {
1063
1067
  event.originalEvent.preventDefault();
1064
- this.optionsList.scrollWithOnePage(NavigationAction[event.originalEvent.code]);
1068
+ const code = normalizeNumpadKeys(event.originalEvent);
1069
+ this.optionsList.scrollWithOnePage(NavigationAction[code]);
1065
1070
  }
1066
1071
  }));
1067
1072
  this.subs.add(this.navigationService.open.subscribe(() => this.togglePopup(true)));
@@ -1256,10 +1261,10 @@ export class DropDownListComponent {
1256
1261
  }
1257
1262
  }
1258
1263
  onKeyPress(event) {
1259
- if (event.which === 0 || event.keyCode === Keys.Enter) {
1264
+ if (event.which === 0 || event.code === Keys.Enter || event.code === Keys.NumpadEnter || event.key.length > 1) {
1260
1265
  return;
1261
1266
  }
1262
- let character = String.fromCharCode(event.charCode || event.keyCode);
1267
+ let character = event.key;
1263
1268
  if (this.ignoreCase) {
1264
1269
  character = character.toLowerCase();
1265
1270
  }
@@ -804,7 +804,7 @@ export class DropDownTreeComponent {
804
804
  if (this.disabled || this.readonly) {
805
805
  return;
806
806
  }
807
- if (event.keyCode === Keys.Tab && this.isActionSheetExpanded) {
807
+ if (event.code === Keys.Tab && this.isActionSheetExpanded) {
808
808
  this.togglePopup(false);
809
809
  return;
810
810
  }
@@ -4,7 +4,7 @@
4
4
  *-------------------------------------------------------------------------------------------*/
5
5
  import { ChangeDetectorRef, Component, ContentChild, ElementRef, EventEmitter, forwardRef, HostBinding, Injector, Input, isDevMode, NgZone, Output, Renderer2, TemplateRef, ViewChild, ViewContainerRef } from '@angular/core';
6
6
  import { NgControl, NG_VALUE_ACCESSOR } from '@angular/forms';
7
- import { anyChanged, guid, hasObservers, Keys, KendoInput, isDocumentAvailable, EventsOutsideAngularDirective, ResizeSensorComponent, TemplateContextDirective } from '@progress/kendo-angular-common';
7
+ import { anyChanged, guid, hasObservers, Keys, KendoInput, isDocumentAvailable, EventsOutsideAngularDirective, ResizeSensorComponent, TemplateContextDirective, normalizeNumpadKeys } from '@progress/kendo-angular-common';
8
8
  import { AdaptiveService } from '@progress/kendo-angular-utils';
9
9
  import { L10N_PREFIX, LocalizationService } from '@progress/kendo-angular-l10n';
10
10
  import { NavigationService } from '../common/navigation/navigation.service';
@@ -201,14 +201,15 @@ export class MultiSelectTreeComponent {
201
201
  * @hidden
202
202
  */
203
203
  handleKeydown(event, input) {
204
+ const code = normalizeNumpadKeys(event);
204
205
  if (event.target === this.filterInput?.nativeElement &&
205
- (event.keyCode === Keys.ArrowLeft || event.keyCode === Keys.ArrowRight)) {
206
+ (code === Keys.ArrowLeft || code === Keys.ArrowRight)) {
206
207
  return;
207
208
  }
208
209
  if (input) {
209
210
  event.stopImmediatePropagation();
210
211
  }
211
- const deleteTag = this.isWrapperActive && event.keyCode === Keys.Backspace && this.tags.length > 0;
212
+ const deleteTag = this.isWrapperActive && code === Keys.Backspace && this.tags.length > 0;
212
213
  if (deleteTag) {
213
214
  this.handleBackspace();
214
215
  return;
@@ -6,7 +6,7 @@ import { isPresent, isArray, isObjectArray, resolveAllValues, selectedIndices, g
6
6
  import { SearchBarComponent } from '../common/searchbar.component';
7
7
  import { ViewChild, Renderer2, ViewContainerRef, Component, HostBinding, Input, ElementRef, TemplateRef, Output, EventEmitter, isDevMode, forwardRef, ContentChild, ChangeDetectorRef, KeyValueDiffers, NgZone, Injector } from '@angular/core';
8
8
  import { Subscription, Subject, of, merge } from 'rxjs';
9
- import { isChanged, isDocumentAvailable, KendoInput, hasObservers, anyChanged, SuffixTemplateDirective, PrefixTemplateDirective, isControlRequired, SeparatorComponent, ResizeSensorComponent, Keys, TemplateContextDirective, guid } from '@progress/kendo-angular-common';
9
+ import { isChanged, isDocumentAvailable, KendoInput, hasObservers, anyChanged, SuffixTemplateDirective, PrefixTemplateDirective, isControlRequired, SeparatorComponent, ResizeSensorComponent, Keys, TemplateContextDirective, guid, normalizeNumpadKeys } from '@progress/kendo-angular-common';
10
10
  import { AdaptiveService } from '@progress/kendo-angular-utils';
11
11
  import { catchError, filter, map, take, tap } from 'rxjs/operators';
12
12
  import { NG_VALUE_ACCESSOR, NgControl } from '@angular/forms';
@@ -956,10 +956,11 @@ export class MultiSelectComponent {
956
956
  * @hidden
957
957
  */
958
958
  handleNavigate(event) {
959
- const navigateInput = this.text && event.keyCode !== Keys.ArrowDown && event.keyCode !== Keys.ArrowUp;
960
- const selectValue = this.text && event.keyCode === Keys.Enter || event.keyCode === Keys.Escape;
961
- const deleteTag = !this.text && event.keyCode === Keys.Backspace && this.tags.length > 0;
962
- if (event.keyCode === Keys.Backspace && this.isActionSheetExpanded) {
959
+ const code = normalizeNumpadKeys(event);
960
+ const navigateInput = this.text && code !== Keys.ArrowDown && code !== Keys.ArrowUp;
961
+ const selectValue = this.text && code === Keys.Enter || code === Keys.Escape;
962
+ const deleteTag = !this.text && code === Keys.Backspace && this.tags.length > 0;
963
+ if (code === Keys.Backspace && this.isActionSheetExpanded) {
963
964
  return;
964
965
  }
965
966
  if (deleteTag) {
@@ -1217,7 +1218,8 @@ export class MultiSelectComponent {
1217
1218
  merge(this.navigationService.pagedown, this.navigationService.pageup).subscribe((event) => {
1218
1219
  if (this.isOpen) {
1219
1220
  event.originalEvent.preventDefault();
1220
- this.optionsList.scrollWithOnePage(NavigationAction[event.originalEvent.code]);
1221
+ const code = normalizeNumpadKeys(event.originalEvent);
1222
+ this.optionsList.scrollWithOnePage(NavigationAction[code]);
1221
1223
  }
1222
1224
  })
1223
1225
  ].forEach(s => this.subs.add(s));
@@ -1408,7 +1410,7 @@ export class MultiSelectComponent {
1408
1410
  }
1409
1411
  }
1410
1412
  handleKeydown(event) {
1411
- if (this.isFocused && this.isOpen && (event.ctrlKey || event.metaKey) && event.keyCode === Keys.KeyA) {
1413
+ if (this.isFocused && this.isOpen && (event.ctrlKey || event.metaKey) && event.code === Keys.KeyA) {
1412
1414
  event.preventDefault();
1413
1415
  this.handleSelectAll();
1414
1416
  }
@@ -10,7 +10,7 @@ export const packageMetadata = {
10
10
  productName: 'Kendo UI for Angular',
11
11
  productCode: 'KENDOUIANGULAR',
12
12
  productCodes: ['KENDOUIANGULAR'],
13
- publishDate: 1754579498,
14
- version: '19.3.0-develop.32',
13
+ publishDate: 1754589755,
14
+ version: '19.3.0-develop.33',
15
15
  licensingDocsUrl: 'https://www.telerik.com/kendo-angular-ui/my-license/'
16
16
  };
@@ -5,7 +5,7 @@
5
5
  import * as i0 from '@angular/core';
6
6
  import { EventEmitter, Component, Input, HostBinding, Output, Directive, Injectable, HostListener, ViewChildren, ViewChild, forwardRef, isDevMode, ViewContainerRef, ContentChild, ContentChildren, ChangeDetectionStrategy, NgModule } from '@angular/core';
7
7
  import * as i10 from '@progress/kendo-angular-common';
8
- import { isDocumentAvailable, isObjectPresent, removeHTMLAttributes, parseAttributes, isSafari, Keys, setHTMLAttributes, replaceMessagePlaceholder, isChanged, TemplateContextDirective, ResizeSensorComponent, closest as closest$1, isControlRequired, guid, hasObservers, KendoInput, SuffixTemplateDirective, PrefixTemplateDirective, SeparatorComponent, MultiTabStop, anyChanged, EventsOutsideAngularDirective, ToggleButtonTabStopDirective, ResizeBatchService, KENDO_ADORNMENTS, KENDO_TOGGLEBUTTONTABSTOP } from '@progress/kendo-angular-common';
8
+ import { isDocumentAvailable, isObjectPresent, removeHTMLAttributes, parseAttributes, isSafari, normalizeNumpadKeys, Keys, setHTMLAttributes, replaceMessagePlaceholder, isChanged, TemplateContextDirective, ResizeSensorComponent, closest as closest$1, isControlRequired, guid, hasObservers, KendoInput, SuffixTemplateDirective, PrefixTemplateDirective, SeparatorComponent, MultiTabStop, anyChanged, EventsOutsideAngularDirective, ToggleButtonTabStopDirective, ResizeBatchService, KENDO_ADORNMENTS, KENDO_TOGGLEBUTTONTABSTOP } from '@progress/kendo-angular-common';
9
9
  export { PrefixTemplateDirective, SeparatorComponent, SuffixTemplateDirective, ToggleButtonTabStopDirective } from '@progress/kendo-angular-common';
10
10
  import * as i7 from '@progress/kendo-angular-utils';
11
11
  import { AdaptiveService } from '@progress/kendo-angular-utils';
@@ -37,8 +37,8 @@ const packageMetadata = {
37
37
  productName: 'Kendo UI for Angular',
38
38
  productCode: 'KENDOUIANGULAR',
39
39
  productCodes: ['KENDOUIANGULAR'],
40
- publishDate: 1754579498,
41
- version: '19.3.0-develop.32',
40
+ publishDate: 1754589755,
41
+ version: '19.3.0-develop.33',
42
42
  licensingDocsUrl: 'https://www.telerik.com/kendo-angular-ui/my-license/'
43
43
  };
44
44
 
@@ -672,7 +672,8 @@ class SearchBarComponent {
672
672
  this.onBlur.emit(event);
673
673
  }
674
674
  handleKeydown(event) {
675
- const keyCode = event.keyCode;
675
+ // on some keyboards arrow keys, PageUp/Down, and Home/End are mapped to Numpad keys
676
+ const keyCode = normalizeNumpadKeys(event);
676
677
  const keys = [Keys.ArrowUp, Keys.ArrowDown, Keys.ArrowLeft, Keys.ArrowRight, Keys.Enter,
677
678
  Keys.Escape, Keys.Delete, Keys.Backspace, Keys.Home, Keys.End, Keys.PageDown, Keys.PageUp];
678
679
  if (keys.indexOf(keyCode) > -1) {
@@ -1532,7 +1533,8 @@ class NavigationService {
1532
1533
  this.selectionService = selectionService;
1533
1534
  }
1534
1535
  process(args) {
1535
- const keyCode = args.originalEvent.keyCode;
1536
+ // on some keyboards arrow keys, PageUp/Down, and Home/End are mapped to Numpad keys
1537
+ const keyCode = normalizeNumpadKeys(args.originalEvent);
1536
1538
  const altKey = args.originalEvent.altKey;
1537
1539
  const shiftKey = args.originalEvent.shiftKey;
1538
1540
  const ctrlKey = args.originalEvent.ctrlKey || args.originalEvent.metaKey;
@@ -3055,7 +3057,7 @@ class SharedDropDownEventsDirective {
3055
3057
  cursorInsideWrapper = false;
3056
3058
  }));
3057
3059
  this.subscriptions.add(this.renderer.listen(hostElement, 'keydown', (args) => {
3058
- if (args.keyCode === Keys.Tab) {
3060
+ if (args.code === Keys.Tab) {
3059
3061
  tabbing = true;
3060
3062
  }
3061
3063
  else {
@@ -4145,7 +4147,8 @@ class AutoCompleteComponent {
4145
4147
  this.subs.add(merge(this.navigationService.pagedown, this.navigationService.pageup).subscribe((event) => {
4146
4148
  if (this.isOpen) {
4147
4149
  event.originalEvent.preventDefault();
4148
- this.optionsList.scrollWithOnePage(NavigationAction[event.originalEvent.code]);
4150
+ const code = normalizeNumpadKeys(event.originalEvent);
4151
+ this.optionsList.scrollWithOnePage(NavigationAction[code]);
4149
4152
  }
4150
4153
  }));
4151
4154
  }
@@ -5603,7 +5606,8 @@ class ComboBoxComponent extends MultiTabStop {
5603
5606
  this.subs.add(merge(this.navigationService.pagedown, this.navigationService.pageup).subscribe((event) => {
5604
5607
  if (this.isOpen) {
5605
5608
  event.originalEvent.preventDefault();
5606
- this.optionsList.scrollWithOnePage(NavigationAction[event.originalEvent.code]);
5609
+ const code = normalizeNumpadKeys(event.originalEvent);
5610
+ this.optionsList.scrollWithOnePage(NavigationAction[code]);
5607
5611
  }
5608
5612
  }));
5609
5613
  this.subs.add(this.navigationService.esc.subscribe(this.handleEscape.bind(this)));
@@ -5952,14 +5956,18 @@ class ComboBoxComponent extends MultiTabStop {
5952
5956
  if (this.disabled || this.readonly) {
5953
5957
  return;
5954
5958
  }
5955
- if (event.keyCode === Keys.Home || event.keyCode === Keys.End) {
5959
+ // on some keyboards, Home and End keys are mapped to Numpad keys
5960
+ const code = normalizeNumpadKeys(event);
5961
+ const isHomeKey = code === Keys.Home;
5962
+ const isEndKey = code === Keys.End;
5963
+ if (isHomeKey || isEndKey) {
5956
5964
  return;
5957
5965
  }
5958
5966
  if (!hasSelected) {
5959
- if (event.keyCode === Keys.ArrowDown) {
5967
+ if (code === Keys.ArrowDown) {
5960
5968
  offset = -1;
5961
5969
  }
5962
- else if (event.keyCode === Keys.ArrowUp) {
5970
+ else if (code === Keys.ArrowUp) {
5963
5971
  offset = 1;
5964
5972
  }
5965
5973
  }
@@ -7532,7 +7540,11 @@ class DropDownListComponent {
7532
7540
  if (this.disabled || this.readonly) {
7533
7541
  return;
7534
7542
  }
7535
- const isHomeEnd = event.keyCode === Keys.Home || event.keyCode === Keys.End;
7543
+ // on some keyboards, Home and End keys are mapped to Numpad keys
7544
+ const code = normalizeNumpadKeys(event);
7545
+ const isHomeKey = code === Keys.Home;
7546
+ const isEndKey = code === Keys.End;
7547
+ const isHomeEnd = isHomeKey || isEndKey;
7536
7548
  const isFilterFocused = this.filterable && this.isFocused && this.isOpen;
7537
7549
  if (isFilterFocused && isHomeEnd) {
7538
7550
  return;
@@ -7540,10 +7552,10 @@ class DropDownListComponent {
7540
7552
  const hasSelected = isPresent(this.selectionService.selected[0]);
7541
7553
  const focusedItemNotSelected = isPresent(this.selectionService.focused) && !this.selectionService.isSelected(this.selectionService.focused);
7542
7554
  if (!hasSelected || focusedItemNotSelected) {
7543
- if (event.keyCode === Keys.ArrowDown || event.keyCode === Keys.ArrowRight && this.leftRightArrowsNavigation) {
7555
+ if (code === Keys.ArrowDown || code === Keys.ArrowRight && this.leftRightArrowsNavigation) {
7544
7556
  offset = -1;
7545
7557
  }
7546
- else if (event.keyCode === Keys.ArrowUp || event.keyCode === Keys.ArrowLeft && this.leftRightArrowsNavigation) {
7558
+ else if (code === Keys.ArrowUp || code === Keys.ArrowLeft && this.leftRightArrowsNavigation) {
7547
7559
  offset = 1;
7548
7560
  }
7549
7561
  }
@@ -7995,7 +8007,8 @@ class DropDownListComponent {
7995
8007
  this.subs.add(merge(this.navigationService.pagedown, this.navigationService.pageup).subscribe((event) => {
7996
8008
  if (this.isOpen) {
7997
8009
  event.originalEvent.preventDefault();
7998
- this.optionsList.scrollWithOnePage(NavigationAction[event.originalEvent.code]);
8010
+ const code = normalizeNumpadKeys(event.originalEvent);
8011
+ this.optionsList.scrollWithOnePage(NavigationAction[code]);
7999
8012
  }
8000
8013
  }));
8001
8014
  this.subs.add(this.navigationService.open.subscribe(() => this.togglePopup(true)));
@@ -8190,10 +8203,10 @@ class DropDownListComponent {
8190
8203
  }
8191
8204
  }
8192
8205
  onKeyPress(event) {
8193
- if (event.which === 0 || event.keyCode === Keys.Enter) {
8206
+ if (event.which === 0 || event.code === Keys.Enter || event.code === Keys.NumpadEnter || event.key.length > 1) {
8194
8207
  return;
8195
8208
  }
8196
- let character = String.fromCharCode(event.charCode || event.keyCode);
8209
+ let character = event.key;
8197
8210
  if (this.ignoreCase) {
8198
8211
  character = character.toLowerCase();
8199
8212
  }
@@ -10183,10 +10196,11 @@ class MultiSelectComponent {
10183
10196
  * @hidden
10184
10197
  */
10185
10198
  handleNavigate(event) {
10186
- const navigateInput = this.text && event.keyCode !== Keys.ArrowDown && event.keyCode !== Keys.ArrowUp;
10187
- const selectValue = this.text && event.keyCode === Keys.Enter || event.keyCode === Keys.Escape;
10188
- const deleteTag = !this.text && event.keyCode === Keys.Backspace && this.tags.length > 0;
10189
- if (event.keyCode === Keys.Backspace && this.isActionSheetExpanded) {
10199
+ const code = normalizeNumpadKeys(event);
10200
+ const navigateInput = this.text && code !== Keys.ArrowDown && code !== Keys.ArrowUp;
10201
+ const selectValue = this.text && code === Keys.Enter || code === Keys.Escape;
10202
+ const deleteTag = !this.text && code === Keys.Backspace && this.tags.length > 0;
10203
+ if (code === Keys.Backspace && this.isActionSheetExpanded) {
10190
10204
  return;
10191
10205
  }
10192
10206
  if (deleteTag) {
@@ -10444,7 +10458,8 @@ class MultiSelectComponent {
10444
10458
  merge(this.navigationService.pagedown, this.navigationService.pageup).subscribe((event) => {
10445
10459
  if (this.isOpen) {
10446
10460
  event.originalEvent.preventDefault();
10447
- this.optionsList.scrollWithOnePage(NavigationAction[event.originalEvent.code]);
10461
+ const code = normalizeNumpadKeys(event.originalEvent);
10462
+ this.optionsList.scrollWithOnePage(NavigationAction[code]);
10448
10463
  }
10449
10464
  })
10450
10465
  ].forEach(s => this.subs.add(s));
@@ -10635,7 +10650,7 @@ class MultiSelectComponent {
10635
10650
  }
10636
10651
  }
10637
10652
  handleKeydown(event) {
10638
- if (this.isFocused && this.isOpen && (event.ctrlKey || event.metaKey) && event.keyCode === Keys.KeyA) {
10653
+ if (this.isFocused && this.isOpen && (event.ctrlKey || event.metaKey) && event.code === Keys.KeyA) {
10639
10654
  event.preventDefault();
10640
10655
  this.handleSelectAll();
10641
10656
  }
@@ -13382,7 +13397,7 @@ class DropDownTreeComponent {
13382
13397
  if (this.disabled || this.readonly) {
13383
13398
  return;
13384
13399
  }
13385
- if (event.keyCode === Keys.Tab && this.isActionSheetExpanded) {
13400
+ if (event.code === Keys.Tab && this.isActionSheetExpanded) {
13386
13401
  this.togglePopup(false);
13387
13402
  return;
13388
13403
  }
@@ -15125,14 +15140,15 @@ class MultiSelectTreeComponent {
15125
15140
  * @hidden
15126
15141
  */
15127
15142
  handleKeydown(event, input) {
15143
+ const code = normalizeNumpadKeys(event);
15128
15144
  if (event.target === this.filterInput?.nativeElement &&
15129
- (event.keyCode === Keys.ArrowLeft || event.keyCode === Keys.ArrowRight)) {
15145
+ (code === Keys.ArrowLeft || code === Keys.ArrowRight)) {
15130
15146
  return;
15131
15147
  }
15132
15148
  if (input) {
15133
15149
  event.stopImmediatePropagation();
15134
15150
  }
15135
- const deleteTag = this.isWrapperActive && event.keyCode === Keys.Backspace && this.tags.length > 0;
15151
+ const deleteTag = this.isWrapperActive && code === Keys.Backspace && this.tags.length > 0;
15136
15152
  if (deleteTag) {
15137
15153
  this.handleBackspace();
15138
15154
  return;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@progress/kendo-angular-dropdowns",
3
- "version": "19.3.0-develop.32",
3
+ "version": "19.3.0-develop.33",
4
4
  "description": "A wide variety of native Angular dropdown components including AutoComplete, ComboBox, DropDownList, DropDownTree, MultiColumnComboBox, MultiSelect, and MultiSelectTree ",
5
5
  "license": "SEE LICENSE IN LICENSE.md",
6
6
  "author": "Progress",
@@ -100,7 +100,7 @@
100
100
  "package": {
101
101
  "productName": "Kendo UI for Angular",
102
102
  "productCode": "KENDOUIANGULAR",
103
- "publishDate": 1754579498,
103
+ "publishDate": 1754589755,
104
104
  "licensingDocsUrl": "https://www.telerik.com/kendo-angular-ui/my-license/"
105
105
  }
106
106
  },
@@ -111,18 +111,18 @@
111
111
  "@angular/forms": "16 - 20",
112
112
  "@angular/platform-browser": "16 - 20",
113
113
  "@progress/kendo-licensing": "^1.7.0",
114
- "@progress/kendo-angular-common": "19.3.0-develop.32",
115
- "@progress/kendo-angular-utils": "19.3.0-develop.32",
116
- "@progress/kendo-angular-l10n": "19.3.0-develop.32",
117
- "@progress/kendo-angular-navigation": "19.3.0-develop.32",
118
- "@progress/kendo-angular-popup": "19.3.0-develop.32",
119
- "@progress/kendo-angular-icons": "19.3.0-develop.32",
120
- "@progress/kendo-angular-treeview": "19.3.0-develop.32",
114
+ "@progress/kendo-angular-common": "19.3.0-develop.33",
115
+ "@progress/kendo-angular-utils": "19.3.0-develop.33",
116
+ "@progress/kendo-angular-l10n": "19.3.0-develop.33",
117
+ "@progress/kendo-angular-navigation": "19.3.0-develop.33",
118
+ "@progress/kendo-angular-popup": "19.3.0-develop.33",
119
+ "@progress/kendo-angular-icons": "19.3.0-develop.33",
120
+ "@progress/kendo-angular-treeview": "19.3.0-develop.33",
121
121
  "rxjs": "^6.5.3 || ^7.0.0"
122
122
  },
123
123
  "dependencies": {
124
124
  "tslib": "^2.3.1",
125
- "@progress/kendo-angular-schematics": "19.3.0-develop.32",
125
+ "@progress/kendo-angular-schematics": "19.3.0-develop.33",
126
126
  "@progress/kendo-common": "^1.0.1",
127
127
  "node-html-parser": "^7.0.1"
128
128
  },
@@ -4,9 +4,9 @@ const schematics_1 = require("@angular-devkit/schematics");
4
4
  function default_1(options) {
5
5
  const finalOptions = Object.assign(Object.assign({}, options), { mainNgModule: 'DropDownsModule', package: 'dropdowns', peerDependencies: {
6
6
  // peers of the treeview
7
- '@progress/kendo-angular-inputs': '19.3.0-develop.32',
7
+ '@progress/kendo-angular-inputs': '19.3.0-develop.33',
8
8
  // peers of inputs
9
- '@progress/kendo-angular-intl': '19.3.0-develop.32',
9
+ '@progress/kendo-angular-intl': '19.3.0-develop.33',
10
10
  '@progress/kendo-drawing': '^1.17.2',
11
11
  // Peer dependency of icons
12
12
  '@progress/kendo-svg-icons': '^4.0.0'