@progress/kendo-angular-dropdowns 19.3.0-develop.9 → 19.3.1-develop.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/common/searchbar.component.d.ts +1 -1
- package/esm2022/autocomplete/autocomplete.component.mjs +7 -4
- package/esm2022/comboboxes/combobox.component.mjs +10 -5
- package/esm2022/common/navigation/navigation.service.mjs +3 -2
- package/esm2022/common/searchbar.component.mjs +3 -2
- package/esm2022/common/shared-events.directive.mjs +1 -1
- package/esm2022/dropdownlist/dropdownlist.component.mjs +12 -7
- package/esm2022/dropdowntrees/dropdowntree.component.mjs +1 -1
- package/esm2022/dropdowntrees/multiselecttree.component.mjs +4 -3
- package/esm2022/multiselect/multiselect.component.mjs +9 -7
- package/esm2022/package-metadata.mjs +2 -2
- package/fesm2022/progress-kendo-angular-dropdowns.mjs +46 -28
- package/package.json +11 -11
- package/schematics/ngAdd/index.js +2 -2
|
@@ -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:
|
|
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
|
-
|
|
971
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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 (
|
|
1159
|
+
if (code === Keys.ArrowDown) {
|
|
1155
1160
|
offset = -1;
|
|
1156
1161
|
}
|
|
1157
|
-
else if (
|
|
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
|
-
|
|
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
|
-
|
|
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.
|
|
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
|
-
|
|
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 (
|
|
613
|
+
if (code === Keys.ArrowDown || code === Keys.ArrowRight && this.leftRightArrowsNavigation) {
|
|
610
614
|
offset = -1;
|
|
611
615
|
}
|
|
612
|
-
else if (
|
|
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
|
-
|
|
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.
|
|
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 =
|
|
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.
|
|
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
|
-
(
|
|
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 &&
|
|
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
|
|
960
|
-
const
|
|
961
|
-
const
|
|
962
|
-
|
|
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
|
-
|
|
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.
|
|
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:
|
|
14
|
-
version: '19.3.
|
|
13
|
+
publishDate: 1755502588,
|
|
14
|
+
version: '19.3.1-develop.1',
|
|
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:
|
|
41
|
-
version: '19.3.
|
|
40
|
+
publishDate: 1755502588,
|
|
41
|
+
version: '19.3.1-develop.1',
|
|
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
|
-
|
|
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
|
-
|
|
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.
|
|
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
|
-
|
|
4128
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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 (
|
|
5967
|
+
if (code === Keys.ArrowDown) {
|
|
5958
5968
|
offset = -1;
|
|
5959
5969
|
}
|
|
5960
|
-
else if (
|
|
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
|
-
|
|
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 (
|
|
7555
|
+
if (code === Keys.ArrowDown || code === Keys.ArrowRight && this.leftRightArrowsNavigation) {
|
|
7542
7556
|
offset = -1;
|
|
7543
7557
|
}
|
|
7544
|
-
else if (
|
|
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
|
-
|
|
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.
|
|
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 =
|
|
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
|
|
10185
|
-
const
|
|
10186
|
-
const
|
|
10187
|
-
|
|
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
|
-
|
|
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.
|
|
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.
|
|
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
|
-
(
|
|
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 &&
|
|
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.
|
|
3
|
+
"version": "19.3.1-develop.1",
|
|
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":
|
|
103
|
+
"publishDate": 1755502588,
|
|
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.
|
|
114
|
-
"@progress/kendo-angular-common": "19.3.
|
|
115
|
-
"@progress/kendo-angular-utils": "19.3.
|
|
116
|
-
"@progress/kendo-angular-l10n": "19.3.
|
|
117
|
-
"@progress/kendo-angular-navigation": "19.3.
|
|
118
|
-
"@progress/kendo-angular-popup": "19.3.
|
|
119
|
-
"@progress/kendo-angular-icons": "19.3.
|
|
120
|
-
"@progress/kendo-angular-treeview": "19.3.
|
|
113
|
+
"@progress/kendo-licensing": "^1.7.0",
|
|
114
|
+
"@progress/kendo-angular-common": "19.3.1-develop.1",
|
|
115
|
+
"@progress/kendo-angular-utils": "19.3.1-develop.1",
|
|
116
|
+
"@progress/kendo-angular-l10n": "19.3.1-develop.1",
|
|
117
|
+
"@progress/kendo-angular-navigation": "19.3.1-develop.1",
|
|
118
|
+
"@progress/kendo-angular-popup": "19.3.1-develop.1",
|
|
119
|
+
"@progress/kendo-angular-icons": "19.3.1-develop.1",
|
|
120
|
+
"@progress/kendo-angular-treeview": "19.3.1-develop.1",
|
|
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.
|
|
125
|
+
"@progress/kendo-angular-schematics": "19.3.1-develop.1",
|
|
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.
|
|
7
|
+
'@progress/kendo-angular-inputs': '19.3.1-develop.1',
|
|
8
8
|
// peers of inputs
|
|
9
|
-
'@progress/kendo-angular-intl': '19.3.
|
|
9
|
+
'@progress/kendo-angular-intl': '19.3.1-develop.1',
|
|
10
10
|
'@progress/kendo-drawing': '^1.17.2',
|
|
11
11
|
// Peer dependency of icons
|
|
12
12
|
'@progress/kendo-svg-icons': '^4.0.0'
|