@progress/kendo-angular-dropdowns 19.3.0-develop.9 → 19.3.0

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';
@@ -967,8 +967,10 @@ export class AutoCompleteComponent {
967
967
  this.subs.add(this.valueChangeSubject
968
968
  .subscribe(value => {
969
969
  const hasChange = this.value !== value;
970
- const index = this.findIndex(value);
971
- this.selectionService.focused = index;
970
+ if (this.isOpen) {
971
+ const index = this.findIndex(value);
972
+ this.selectionService.focused = index;
973
+ }
972
974
  this.value = value;
973
975
  this.text = value;
974
976
  // emit change after assigning `this.value` => allows the user to modify the component value on `valueChange`
@@ -986,7 +988,8 @@ export class AutoCompleteComponent {
986
988
  this.subs.add(merge(this.navigationService.pagedown, this.navigationService.pageup).subscribe((event) => {
987
989
  if (this.isOpen) {
988
990
  event.originalEvent.preventDefault();
989
- this.optionsList.scrollWithOnePage(NavigationAction[event.originalEvent.code]);
991
+ const code = normalizeNumpadKeys(event.originalEvent);
992
+ this.optionsList.scrollWithOnePage(NavigationAction[code]);
990
993
  }
991
994
  }));
992
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: 1752672216,
14
- version: '19.3.0-develop.9',
13
+ publishDate: 1755030497,
14
+ version: '19.3.0',
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: 1752672216,
41
- version: '19.3.0-develop.9',
40
+ publishDate: 1755030497,
41
+ version: '19.3.0',
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 {
@@ -4124,8 +4126,10 @@ class AutoCompleteComponent {
4124
4126
  this.subs.add(this.valueChangeSubject
4125
4127
  .subscribe(value => {
4126
4128
  const hasChange = this.value !== value;
4127
- const index = this.findIndex(value);
4128
- this.selectionService.focused = index;
4129
+ if (this.isOpen) {
4130
+ const index = this.findIndex(value);
4131
+ this.selectionService.focused = index;
4132
+ }
4129
4133
  this.value = value;
4130
4134
  this.text = value;
4131
4135
  // emit change after assigning `this.value` => allows the user to modify the component value on `valueChange`
@@ -4143,7 +4147,8 @@ class AutoCompleteComponent {
4143
4147
  this.subs.add(merge(this.navigationService.pagedown, this.navigationService.pageup).subscribe((event) => {
4144
4148
  if (this.isOpen) {
4145
4149
  event.originalEvent.preventDefault();
4146
- this.optionsList.scrollWithOnePage(NavigationAction[event.originalEvent.code]);
4150
+ const code = normalizeNumpadKeys(event.originalEvent);
4151
+ this.optionsList.scrollWithOnePage(NavigationAction[code]);
4147
4152
  }
4148
4153
  }));
4149
4154
  }
@@ -5601,7 +5606,8 @@ class ComboBoxComponent extends MultiTabStop {
5601
5606
  this.subs.add(merge(this.navigationService.pagedown, this.navigationService.pageup).subscribe((event) => {
5602
5607
  if (this.isOpen) {
5603
5608
  event.originalEvent.preventDefault();
5604
- this.optionsList.scrollWithOnePage(NavigationAction[event.originalEvent.code]);
5609
+ const code = normalizeNumpadKeys(event.originalEvent);
5610
+ this.optionsList.scrollWithOnePage(NavigationAction[code]);
5605
5611
  }
5606
5612
  }));
5607
5613
  this.subs.add(this.navigationService.esc.subscribe(this.handleEscape.bind(this)));
@@ -5950,14 +5956,18 @@ class ComboBoxComponent extends MultiTabStop {
5950
5956
  if (this.disabled || this.readonly) {
5951
5957
  return;
5952
5958
  }
5953
- 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) {
5954
5964
  return;
5955
5965
  }
5956
5966
  if (!hasSelected) {
5957
- if (event.keyCode === Keys.ArrowDown) {
5967
+ if (code === Keys.ArrowDown) {
5958
5968
  offset = -1;
5959
5969
  }
5960
- else if (event.keyCode === Keys.ArrowUp) {
5970
+ else if (code === Keys.ArrowUp) {
5961
5971
  offset = 1;
5962
5972
  }
5963
5973
  }
@@ -7530,7 +7540,11 @@ class DropDownListComponent {
7530
7540
  if (this.disabled || this.readonly) {
7531
7541
  return;
7532
7542
  }
7533
- 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;
7534
7548
  const isFilterFocused = this.filterable && this.isFocused && this.isOpen;
7535
7549
  if (isFilterFocused && isHomeEnd) {
7536
7550
  return;
@@ -7538,10 +7552,10 @@ class DropDownListComponent {
7538
7552
  const hasSelected = isPresent(this.selectionService.selected[0]);
7539
7553
  const focusedItemNotSelected = isPresent(this.selectionService.focused) && !this.selectionService.isSelected(this.selectionService.focused);
7540
7554
  if (!hasSelected || focusedItemNotSelected) {
7541
- if (event.keyCode === Keys.ArrowDown || event.keyCode === Keys.ArrowRight && this.leftRightArrowsNavigation) {
7555
+ if (code === Keys.ArrowDown || code === Keys.ArrowRight && this.leftRightArrowsNavigation) {
7542
7556
  offset = -1;
7543
7557
  }
7544
- else if (event.keyCode === Keys.ArrowUp || event.keyCode === Keys.ArrowLeft && this.leftRightArrowsNavigation) {
7558
+ else if (code === Keys.ArrowUp || code === Keys.ArrowLeft && this.leftRightArrowsNavigation) {
7545
7559
  offset = 1;
7546
7560
  }
7547
7561
  }
@@ -7993,7 +8007,8 @@ class DropDownListComponent {
7993
8007
  this.subs.add(merge(this.navigationService.pagedown, this.navigationService.pageup).subscribe((event) => {
7994
8008
  if (this.isOpen) {
7995
8009
  event.originalEvent.preventDefault();
7996
- this.optionsList.scrollWithOnePage(NavigationAction[event.originalEvent.code]);
8010
+ const code = normalizeNumpadKeys(event.originalEvent);
8011
+ this.optionsList.scrollWithOnePage(NavigationAction[code]);
7997
8012
  }
7998
8013
  }));
7999
8014
  this.subs.add(this.navigationService.open.subscribe(() => this.togglePopup(true)));
@@ -8188,10 +8203,10 @@ class DropDownListComponent {
8188
8203
  }
8189
8204
  }
8190
8205
  onKeyPress(event) {
8191
- 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) {
8192
8207
  return;
8193
8208
  }
8194
- let character = String.fromCharCode(event.charCode || event.keyCode);
8209
+ let character = event.key;
8195
8210
  if (this.ignoreCase) {
8196
8211
  character = character.toLowerCase();
8197
8212
  }
@@ -10181,10 +10196,11 @@ class MultiSelectComponent {
10181
10196
  * @hidden
10182
10197
  */
10183
10198
  handleNavigate(event) {
10184
- const navigateInput = this.text && event.keyCode !== Keys.ArrowDown && event.keyCode !== Keys.ArrowUp;
10185
- const selectValue = this.text && event.keyCode === Keys.Enter || event.keyCode === Keys.Escape;
10186
- const deleteTag = !this.text && event.keyCode === Keys.Backspace && this.tags.length > 0;
10187
- 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) {
10188
10204
  return;
10189
10205
  }
10190
10206
  if (deleteTag) {
@@ -10442,7 +10458,8 @@ class MultiSelectComponent {
10442
10458
  merge(this.navigationService.pagedown, this.navigationService.pageup).subscribe((event) => {
10443
10459
  if (this.isOpen) {
10444
10460
  event.originalEvent.preventDefault();
10445
- this.optionsList.scrollWithOnePage(NavigationAction[event.originalEvent.code]);
10461
+ const code = normalizeNumpadKeys(event.originalEvent);
10462
+ this.optionsList.scrollWithOnePage(NavigationAction[code]);
10446
10463
  }
10447
10464
  })
10448
10465
  ].forEach(s => this.subs.add(s));
@@ -10633,7 +10650,7 @@ class MultiSelectComponent {
10633
10650
  }
10634
10651
  }
10635
10652
  handleKeydown(event) {
10636
- 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) {
10637
10654
  event.preventDefault();
10638
10655
  this.handleSelectAll();
10639
10656
  }
@@ -13380,7 +13397,7 @@ class DropDownTreeComponent {
13380
13397
  if (this.disabled || this.readonly) {
13381
13398
  return;
13382
13399
  }
13383
- if (event.keyCode === Keys.Tab && this.isActionSheetExpanded) {
13400
+ if (event.code === Keys.Tab && this.isActionSheetExpanded) {
13384
13401
  this.togglePopup(false);
13385
13402
  return;
13386
13403
  }
@@ -15123,14 +15140,15 @@ class MultiSelectTreeComponent {
15123
15140
  * @hidden
15124
15141
  */
15125
15142
  handleKeydown(event, input) {
15143
+ const code = normalizeNumpadKeys(event);
15126
15144
  if (event.target === this.filterInput?.nativeElement &&
15127
- (event.keyCode === Keys.ArrowLeft || event.keyCode === Keys.ArrowRight)) {
15145
+ (code === Keys.ArrowLeft || code === Keys.ArrowRight)) {
15128
15146
  return;
15129
15147
  }
15130
15148
  if (input) {
15131
15149
  event.stopImmediatePropagation();
15132
15150
  }
15133
- const deleteTag = this.isWrapperActive && event.keyCode === Keys.Backspace && this.tags.length > 0;
15151
+ const deleteTag = this.isWrapperActive && code === Keys.Backspace && this.tags.length > 0;
15134
15152
  if (deleteTag) {
15135
15153
  this.handleBackspace();
15136
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.9",
3
+ "version": "19.3.0",
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": 1752672216,
103
+ "publishDate": 1755030497,
104
104
  "licensingDocsUrl": "https://www.telerik.com/kendo-angular-ui/my-license/"
105
105
  }
106
106
  },
@@ -110,19 +110,19 @@
110
110
  "@angular/core": "16 - 20",
111
111
  "@angular/forms": "16 - 20",
112
112
  "@angular/platform-browser": "16 - 20",
113
- "@progress/kendo-licensing": "^1.5.0",
114
- "@progress/kendo-angular-common": "19.3.0-develop.9",
115
- "@progress/kendo-angular-utils": "19.3.0-develop.9",
116
- "@progress/kendo-angular-l10n": "19.3.0-develop.9",
117
- "@progress/kendo-angular-navigation": "19.3.0-develop.9",
118
- "@progress/kendo-angular-popup": "19.3.0-develop.9",
119
- "@progress/kendo-angular-icons": "19.3.0-develop.9",
120
- "@progress/kendo-angular-treeview": "19.3.0-develop.9",
113
+ "@progress/kendo-licensing": "^1.7.0",
114
+ "@progress/kendo-angular-common": "19.3.0",
115
+ "@progress/kendo-angular-utils": "19.3.0",
116
+ "@progress/kendo-angular-l10n": "19.3.0",
117
+ "@progress/kendo-angular-navigation": "19.3.0",
118
+ "@progress/kendo-angular-popup": "19.3.0",
119
+ "@progress/kendo-angular-icons": "19.3.0",
120
+ "@progress/kendo-angular-treeview": "19.3.0",
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.9",
125
+ "@progress/kendo-angular-schematics": "19.3.0",
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.9',
7
+ '@progress/kendo-angular-inputs': '19.3.0',
8
8
  // peers of inputs
9
- '@progress/kendo-angular-intl': '19.3.0-develop.9',
9
+ '@progress/kendo-angular-intl': '19.3.0',
10
10
  '@progress/kendo-drawing': '^1.17.2',
11
11
  // Peer dependency of icons
12
12
  '@progress/kendo-svg-icons': '^4.0.0'