@progress/kendo-angular-dropdowns 16.3.0-develop.1 → 16.3.0-develop.11
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/util.d.ts +1 -1
- package/dropdowntrees/dropdowntree.component.d.ts +1 -1
- package/esm2020/autocomplete/autocomplete.component.mjs +3 -3
- package/esm2020/comboboxes/combobox.component.mjs +3 -8
- package/esm2020/comboboxes/multicolumncombobox.component.mjs +2 -0
- package/esm2020/common/navigation/navigation.service.mjs +8 -0
- package/esm2020/common/util.mjs +3 -3
- package/esm2020/dropdownlist/dropdownlist.component.mjs +6 -4
- package/esm2020/dropdowntrees/dropdowntree.component.mjs +10 -6
- package/esm2020/dropdowntrees/multiselecttree.component.mjs +3 -1
- package/esm2020/multiselect/multiselect.component.mjs +3 -7
- package/esm2020/package-metadata.mjs +2 -2
- package/fesm2015/progress-kendo-angular-dropdowns.mjs +39 -30
- package/fesm2020/progress-kendo-angular-dropdowns.mjs +39 -30
- package/package.json +8 -8
- package/schematics/ngAdd/index.js +2 -2
package/common/util.d.ts
CHANGED
|
@@ -210,7 +210,7 @@ export declare const updateActionSheetAdaptiveAppearance: (actionSheet: ActionSh
|
|
|
210
210
|
/**
|
|
211
211
|
* @hidden
|
|
212
212
|
*/
|
|
213
|
-
export declare const
|
|
213
|
+
export declare const setListBoxAriaLabelledBy: (optionsList: any, element: ElementRef, renderer: Renderer2) => void;
|
|
214
214
|
/**
|
|
215
215
|
* @hidden
|
|
216
216
|
*/
|
|
@@ -507,7 +507,7 @@ export declare class DropDownTreeComponent implements OnInit, OnDestroy, OnChang
|
|
|
507
507
|
/**
|
|
508
508
|
* @hidden
|
|
509
509
|
*/
|
|
510
|
-
handleKeydown(event: any): void;
|
|
510
|
+
handleKeydown(event: any, input?: HTMLInputElement): void;
|
|
511
511
|
/**
|
|
512
512
|
* Focuses a specific item of the DropDownTree based on a provided index in the format of `1_1`.
|
|
513
513
|
* The targeted item should be expanded in order for it to be focused.
|
|
@@ -17,7 +17,7 @@ import { SelectionService } from '../common/selection/selection.service';
|
|
|
17
17
|
import { NavigationService } from '../common/navigation/navigation.service';
|
|
18
18
|
import { DisabledItemsService } from '../common/disabled-items/disabled-items.service';
|
|
19
19
|
import { Subject, Subscription, merge } from 'rxjs';
|
|
20
|
-
import { isPresent, guid, getter, isUntouched, noop, inDropDown, getSizeClass, getRoundedClass, getFillModeClass, windowSize, isTruthy,
|
|
20
|
+
import { isPresent, guid, getter, isUntouched, noop, inDropDown, getSizeClass, getRoundedClass, getFillModeClass, windowSize, isTruthy, setListBoxAriaLabelledBy, setActionSheetTitle, updateActionSheetAdaptiveAppearance, animationDuration } from '../common/util';
|
|
21
21
|
import { NavigationAction } from '../common/navigation/navigation-action';
|
|
22
22
|
import { NoDataTemplateDirective } from '../common/templates/no-data-template.directive';
|
|
23
23
|
import { PreventableEvent } from '../common/models/preventable-event';
|
|
@@ -1033,7 +1033,7 @@ export class AutoCompleteComponent {
|
|
|
1033
1033
|
}
|
|
1034
1034
|
this.subs.add(this.popupRef.popupOpen.subscribe(() => {
|
|
1035
1035
|
this.cdr.detectChanges();
|
|
1036
|
-
|
|
1036
|
+
setListBoxAriaLabelledBy(this.optionsList, this.searchbar.input, this.renderer);
|
|
1037
1037
|
this.optionsList.scrollToItem(this.selectionService.focused);
|
|
1038
1038
|
this.selectionService.focus(this.selectionService.focused);
|
|
1039
1039
|
this.opened.emit();
|
|
@@ -1117,7 +1117,7 @@ export class AutoCompleteComponent {
|
|
|
1117
1117
|
openActionSheet() {
|
|
1118
1118
|
this.actionSheet.toggle(true);
|
|
1119
1119
|
this.cdr.detectChanges();
|
|
1120
|
-
|
|
1120
|
+
setListBoxAriaLabelledBy(this.optionsList, this.searchbar.input, this.renderer);
|
|
1121
1121
|
this.title = setActionSheetTitle(this.searchbar.input, this.title);
|
|
1122
1122
|
updateActionSheetAdaptiveAppearance(this.actionSheet, this.windowSize, this.renderer);
|
|
1123
1123
|
this.cdr.detectChanges();
|
|
@@ -19,7 +19,7 @@ import { DisabledItemsService } from '../common/disabled-items/disabled-items.se
|
|
|
19
19
|
import { merge, of, Subject, Subscription } from 'rxjs';
|
|
20
20
|
import { catchError, filter, map, partition, tap, throttleTime } from 'rxjs/operators';
|
|
21
21
|
import { isChanged, isDocumentAvailable, KendoInput, hasObservers, anyChanged, SuffixTemplateDirective, PrefixTemplateDirective, isControlRequired, MultiTabStop } from '@progress/kendo-angular-common';
|
|
22
|
-
import { isPresent, guid, getter, isEmptyString, isUntouched, inDropDown, getSizeClass, getRoundedClass, getFillModeClass, isTruthy, windowSize,
|
|
22
|
+
import { isPresent, guid, getter, isEmptyString, isUntouched, inDropDown, getSizeClass, getRoundedClass, getFillModeClass, isTruthy, windowSize, setListBoxAriaLabelledBy, setActionSheetTitle, updateActionSheetAdaptiveAppearance, animationDuration } from '../common/util';
|
|
23
23
|
import { NavigationAction } from '../common/navigation/navigation-action';
|
|
24
24
|
import { Keys } from '@progress/kendo-angular-common';
|
|
25
25
|
import { PreventableEvent } from '../common/models/preventable-event';
|
|
@@ -1421,14 +1421,9 @@ export class ComboBoxComponent extends MultiTabStop {
|
|
|
1421
1421
|
this.renderer.setAttribute(popupWrapper, 'role', 'region');
|
|
1422
1422
|
this.renderer.setAttribute(popupWrapper, 'aria-label', this.messageFor('popupLabel'));
|
|
1423
1423
|
}
|
|
1424
|
-
const listBox = this.popupRef.popupElement.querySelector('ul');
|
|
1425
|
-
const ariaLabel = this.searchbar.input.nativeElement.getAttribute('aria-labelledby');
|
|
1426
|
-
if (ariaLabel) {
|
|
1427
|
-
listBox.setAttribute('aria-labelledby', ariaLabel);
|
|
1428
|
-
}
|
|
1429
1424
|
this.popupRef.popupOpen.subscribe(() => {
|
|
1430
1425
|
this.cdr.detectChanges();
|
|
1431
|
-
|
|
1426
|
+
setListBoxAriaLabelledBy(this.optionsList, this.searchbar.input, this.renderer);
|
|
1432
1427
|
this.optionsList.scrollToItem(this.selectionService.focused);
|
|
1433
1428
|
this.selectionService.focus(this.selectionService.focused);
|
|
1434
1429
|
this.opened.emit();
|
|
@@ -1522,7 +1517,7 @@ export class ComboBoxComponent extends MultiTabStop {
|
|
|
1522
1517
|
this.windowSize = windowSize();
|
|
1523
1518
|
this.actionSheet.toggle(true);
|
|
1524
1519
|
this.cdr.detectChanges();
|
|
1525
|
-
|
|
1520
|
+
setListBoxAriaLabelledBy(this.optionsList, this.searchbar.input, this.renderer);
|
|
1526
1521
|
this.title = setActionSheetTitle(this.searchbar.input, this.title);
|
|
1527
1522
|
updateActionSheetAdaptiveAppearance(this.actionSheet, this.windowSize, this.renderer);
|
|
1528
1523
|
this.cdr.detectChanges();
|
|
@@ -398,6 +398,7 @@ MultiColumnComboBoxComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14
|
|
|
398
398
|
[fixedGroupTemplate]="fixedGroupTemplate"
|
|
399
399
|
[height]="listHeight"
|
|
400
400
|
[show]="isOpen"
|
|
401
|
+
[id]="listBoxId"
|
|
401
402
|
[virtual]="virtual"
|
|
402
403
|
[type]="'dropdowngrid'"
|
|
403
404
|
[showStickyHeader]="showStickyHeader"
|
|
@@ -682,6 +683,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImpo
|
|
|
682
683
|
[fixedGroupTemplate]="fixedGroupTemplate"
|
|
683
684
|
[height]="listHeight"
|
|
684
685
|
[show]="isOpen"
|
|
686
|
+
[id]="listBoxId"
|
|
685
687
|
[virtual]="virtual"
|
|
686
688
|
[type]="'dropdowngrid'"
|
|
687
689
|
[showStickyHeader]="showStickyHeader"
|
|
@@ -57,14 +57,22 @@ export class NavigationService {
|
|
|
57
57
|
const altKey = args.originalEvent.altKey;
|
|
58
58
|
const shiftKey = args.originalEvent.shiftKey;
|
|
59
59
|
const ctrlKey = args.originalEvent.ctrlKey || args.originalEvent.metaKey;
|
|
60
|
+
const openOnSpace = args.openOnSpace;
|
|
61
|
+
const closeOnSpace = args.closeOnSpace;
|
|
60
62
|
let index;
|
|
61
63
|
let action = NavigationAction.Undefined;
|
|
62
64
|
if (altKey && keyCode === Keys.ArrowDown) {
|
|
63
65
|
action = NavigationAction.Open;
|
|
64
66
|
}
|
|
67
|
+
else if (openOnSpace && keyCode === Keys.Space) {
|
|
68
|
+
action = NavigationAction.Open;
|
|
69
|
+
}
|
|
65
70
|
else if (altKey && keyCode === Keys.ArrowUp) {
|
|
66
71
|
action = NavigationAction.Close;
|
|
67
72
|
}
|
|
73
|
+
else if (closeOnSpace && keyCode === Keys.Space) {
|
|
74
|
+
action = NavigationAction.Close;
|
|
75
|
+
}
|
|
68
76
|
else if (shiftKey && keyCode === Keys.ArrowUp) {
|
|
69
77
|
action = NavigationAction.SelectPrevious;
|
|
70
78
|
}
|
package/esm2020/common/util.mjs
CHANGED
|
@@ -408,9 +408,9 @@ export const updateActionSheetAdaptiveAppearance = (actionSheet, windowSize, ren
|
|
|
408
408
|
/**
|
|
409
409
|
* @hidden
|
|
410
410
|
*/
|
|
411
|
-
export const
|
|
411
|
+
export const setListBoxAriaLabelledBy = (optionsList, element, renderer) => {
|
|
412
412
|
const listBox = optionsList.wrapper.nativeElement.querySelector('kendo-list ul');
|
|
413
|
-
const ariaLabel = element.nativeElement.getAttribute('aria-labelledby');
|
|
413
|
+
const ariaLabel = element.nativeElement.getAttribute('aria-labelledby') || element.nativeElement.getAttribute('data-kendo-label-id');
|
|
414
414
|
if (ariaLabel) {
|
|
415
415
|
renderer.setAttribute(listBox, 'aria-labelledby', ariaLabel);
|
|
416
416
|
}
|
|
@@ -419,7 +419,7 @@ export const setListBoxAriaLabelLebBy = (optionsList, element, renderer) => {
|
|
|
419
419
|
* @hidden
|
|
420
420
|
*/
|
|
421
421
|
export const setActionSheetTitle = (element, actionSheetTitle) => {
|
|
422
|
-
const ariaLabel = element.nativeElement.getAttribute('aria-labelledby');
|
|
422
|
+
const ariaLabel = element.nativeElement.getAttribute('aria-labelledby') || element.nativeElement.getAttribute('data-kendo-label-id');
|
|
423
423
|
if (!actionSheetTitle && ariaLabel) {
|
|
424
424
|
return document.getElementById(ariaLabel).innerText;
|
|
425
425
|
}
|
|
@@ -10,7 +10,7 @@ import { merge, interval, Subscription } from 'rxjs';
|
|
|
10
10
|
import { concatMap, filter, map, skipWhile, take, takeUntil, tap } from 'rxjs/operators';
|
|
11
11
|
import { isDocumentAvailable, KendoInput, hasObservers, anyChanged, isChanged } from '@progress/kendo-angular-common';
|
|
12
12
|
import { Keys } from '@progress/kendo-angular-common';
|
|
13
|
-
import { isPresent, guid, getter, shuffleData, sameCharsOnly, matchText, isUntouched, inDropDown, getSizeClass, getRoundedClass, getFillModeClass, isTruthy, windowSize, updateActionSheetAdaptiveAppearance,
|
|
13
|
+
import { isPresent, guid, getter, shuffleData, sameCharsOnly, matchText, isUntouched, inDropDown, getSizeClass, getRoundedClass, getFillModeClass, isTruthy, windowSize, updateActionSheetAdaptiveAppearance, setListBoxAriaLabelledBy, setActionSheetTitle, animationDuration } from '../common/util';
|
|
14
14
|
import { SelectionService } from '../common/selection/selection.service';
|
|
15
15
|
import { NavigationService, NavigationEvent } from '../common/navigation/navigation.service';
|
|
16
16
|
import { ItemTemplateDirective } from '../common/templates/item-template.directive';
|
|
@@ -621,7 +621,9 @@ export class DropDownListComponent {
|
|
|
621
621
|
current: focused + offset,
|
|
622
622
|
max: this.dataService.itemsCount - 1,
|
|
623
623
|
min: this.defaultItem ? -1 : 0,
|
|
624
|
-
originalEvent: eventData
|
|
624
|
+
originalEvent: eventData,
|
|
625
|
+
openOnSpace: !this.isOpen,
|
|
626
|
+
closeOnSpace: this.isOpen && !input && !(event.target instanceof HTMLInputElement)
|
|
625
627
|
});
|
|
626
628
|
const leftRightKeys = (action === NavigationAction.Left) || (action === NavigationAction.Right) && this.leftRightArrowsNavigation;
|
|
627
629
|
if (action !== NavigationAction.Undefined &&
|
|
@@ -952,7 +954,7 @@ export class DropDownListComponent {
|
|
|
952
954
|
}
|
|
953
955
|
this.subs.add(this.popupRef.popupOpen.subscribe(() => {
|
|
954
956
|
this.cdr.detectChanges();
|
|
955
|
-
|
|
957
|
+
setListBoxAriaLabelledBy(this.optionsList, this.wrapper, this.renderer);
|
|
956
958
|
this.optionsList.scrollToItem(this.selectionService.focused);
|
|
957
959
|
this.selectionService.focus(this.selectionService.focused);
|
|
958
960
|
this.opened.emit();
|
|
@@ -1378,7 +1380,7 @@ export class DropDownListComponent {
|
|
|
1378
1380
|
this.windowSize = windowSize();
|
|
1379
1381
|
this.actionSheet.toggle(true);
|
|
1380
1382
|
this.cdr.detectChanges();
|
|
1381
|
-
|
|
1383
|
+
setListBoxAriaLabelledBy(this.optionsList, this.wrapper, this.renderer);
|
|
1382
1384
|
this.title = setActionSheetTitle(this.wrapper, this.title);
|
|
1383
1385
|
updateActionSheetAdaptiveAppearance(this.actionSheet, this.windowSize, this.renderer);
|
|
1384
1386
|
this.cdr.detectChanges();
|
|
@@ -721,7 +721,7 @@ export class DropDownTreeComponent {
|
|
|
721
721
|
/**
|
|
722
722
|
* @hidden
|
|
723
723
|
*/
|
|
724
|
-
handleKeydown(event) {
|
|
724
|
+
handleKeydown(event, input) {
|
|
725
725
|
if (this.disabled || this.readonly) {
|
|
726
726
|
return;
|
|
727
727
|
}
|
|
@@ -734,7 +734,9 @@ export class DropDownTreeComponent {
|
|
|
734
734
|
}
|
|
735
735
|
const eventData = event;
|
|
736
736
|
this.navigationService.process({
|
|
737
|
-
originalEvent: eventData
|
|
737
|
+
originalEvent: eventData,
|
|
738
|
+
openOnSpace: !this.isOpen,
|
|
739
|
+
closeOnSpace: this.isOpen && !input && !(event.target instanceof HTMLInputElement)
|
|
738
740
|
});
|
|
739
741
|
}
|
|
740
742
|
/**
|
|
@@ -1376,8 +1378,9 @@ DropDownTreeComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0",
|
|
|
1376
1378
|
#filterInput
|
|
1377
1379
|
(input)="handleFilterInputChange($event.target)"
|
|
1378
1380
|
[filterInput]="filterable && !touchEnabled"
|
|
1379
|
-
(keydown.arrowdown)="handleKeydown($event)"
|
|
1380
|
-
(keydown.alt.arrowup)="handleKeydown($event)"
|
|
1381
|
+
(keydown.arrowdown)="handleKeydown($event, filterInput)"
|
|
1382
|
+
(keydown.alt.arrowup)="handleKeydown($event, filterInput)"
|
|
1383
|
+
(keydown.escape)="handleKeydown($event, filterInput)"
|
|
1381
1384
|
[attr.aria-label]="messageFor('filterInputLabel')"
|
|
1382
1385
|
[value]="filter"
|
|
1383
1386
|
class="k-input-inner"
|
|
@@ -1581,8 +1584,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImpo
|
|
|
1581
1584
|
#filterInput
|
|
1582
1585
|
(input)="handleFilterInputChange($event.target)"
|
|
1583
1586
|
[filterInput]="filterable && !touchEnabled"
|
|
1584
|
-
(keydown.arrowdown)="handleKeydown($event)"
|
|
1585
|
-
(keydown.alt.arrowup)="handleKeydown($event)"
|
|
1587
|
+
(keydown.arrowdown)="handleKeydown($event, filterInput)"
|
|
1588
|
+
(keydown.alt.arrowup)="handleKeydown($event, filterInput)"
|
|
1589
|
+
(keydown.escape)="handleKeydown($event, filterInput)"
|
|
1586
1590
|
[attr.aria-label]="messageFor('filterInputLabel')"
|
|
1587
1591
|
[value]="filter"
|
|
1588
1592
|
class="k-input-inner"
|
|
@@ -379,7 +379,9 @@ export class MultiSelectTreeComponent {
|
|
|
379
379
|
}
|
|
380
380
|
const eventData = event;
|
|
381
381
|
const action = this.navigationService.process({
|
|
382
|
-
originalEvent: eventData
|
|
382
|
+
originalEvent: eventData,
|
|
383
|
+
openOnSpace: !this.isOpen,
|
|
384
|
+
closeOnSpace: false
|
|
383
385
|
});
|
|
384
386
|
if (action === NavigationAction.Open) {
|
|
385
387
|
eventData.preventDefault();
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
* Copyright © 2024 Progress Software Corporation. All rights reserved.
|
|
3
3
|
* Licensed under commercial license. See LICENSE.md in the project root for more information
|
|
4
4
|
*-------------------------------------------------------------------------------------------*/
|
|
5
|
-
import { guid, isPresent, isArray, isObjectArray, resolveAllValues, selectedIndices, getter, isNumber, isUntouched, inDropDown, getSizeClass, getRoundedClass, getFillModeClass, animationDuration, isTruthy, windowSize,
|
|
5
|
+
import { guid, isPresent, isArray, isObjectArray, resolveAllValues, selectedIndices, getter, isNumber, isUntouched, inDropDown, getSizeClass, getRoundedClass, getFillModeClass, animationDuration, isTruthy, windowSize, setListBoxAriaLabelledBy, setActionSheetTitle, updateActionSheetAdaptiveAppearance } from '../common/util';
|
|
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, Optional, Inject, Injector } from '@angular/core';
|
|
8
8
|
import { Subscription, Subject, of, merge } from 'rxjs';
|
|
@@ -1654,13 +1654,9 @@ export class MultiSelectComponent {
|
|
|
1654
1654
|
popupWrapper.style.height = this.height;
|
|
1655
1655
|
popupWrapper.setAttribute("dir", this.direction);
|
|
1656
1656
|
const listBox = popupWrapper.querySelector('ul.k-list-ul');
|
|
1657
|
-
const ariaLabel = this.searchbar.input.nativeElement.getAttribute('aria-labelledby');
|
|
1658
|
-
if (ariaLabel) {
|
|
1659
|
-
listBox.setAttribute('aria-labelledby', ariaLabel);
|
|
1660
|
-
}
|
|
1661
1657
|
this.popupRef.popupOpen.subscribe(() => {
|
|
1662
1658
|
this.cdr.detectChanges();
|
|
1663
|
-
|
|
1659
|
+
setListBoxAriaLabelledBy(this.optionsList, this.searchbar.input, this.renderer);
|
|
1664
1660
|
this.optionsList.scrollToItem(this.selectionService.focused);
|
|
1665
1661
|
this.selectionService.focus(this.selectionService.focused);
|
|
1666
1662
|
this.opened.emit();
|
|
@@ -1728,7 +1724,7 @@ export class MultiSelectComponent {
|
|
|
1728
1724
|
// Stores the current value state until the user either accepts or cancels it
|
|
1729
1725
|
this._valueHolder = [...this.value];
|
|
1730
1726
|
this.cdr.detectChanges();
|
|
1731
|
-
|
|
1727
|
+
setListBoxAriaLabelledBy(this.optionsList, this.searchbar.input, this.renderer);
|
|
1732
1728
|
this.title = setActionSheetTitle(this.searchbar.input, this.title);
|
|
1733
1729
|
updateActionSheetAdaptiveAppearance(this.actionSheet, this.windowSize, this.renderer);
|
|
1734
1730
|
this.cdr.detectChanges();
|
|
@@ -9,7 +9,7 @@ export const packageMetadata = {
|
|
|
9
9
|
name: '@progress/kendo-angular-dropdowns',
|
|
10
10
|
productName: 'Kendo UI for Angular',
|
|
11
11
|
productCodes: ['KENDOUIANGULAR', 'KENDOUICOMPLETE'],
|
|
12
|
-
publishDate:
|
|
13
|
-
version: '16.3.0-develop.
|
|
12
|
+
publishDate: 1718784013,
|
|
13
|
+
version: '16.3.0-develop.11',
|
|
14
14
|
licensingDocsUrl: 'https://www.telerik.com/kendo-angular-ui/my-license/'
|
|
15
15
|
};
|
|
@@ -38,8 +38,8 @@ const packageMetadata = {
|
|
|
38
38
|
name: '@progress/kendo-angular-dropdowns',
|
|
39
39
|
productName: 'Kendo UI for Angular',
|
|
40
40
|
productCodes: ['KENDOUIANGULAR', 'KENDOUICOMPLETE'],
|
|
41
|
-
publishDate:
|
|
42
|
-
version: '16.3.0-develop.
|
|
41
|
+
publishDate: 1718784013,
|
|
42
|
+
version: '16.3.0-develop.11',
|
|
43
43
|
licensingDocsUrl: 'https://www.telerik.com/kendo-angular-ui/my-license/'
|
|
44
44
|
};
|
|
45
45
|
|
|
@@ -447,9 +447,9 @@ const updateActionSheetAdaptiveAppearance = (actionSheet, windowSize, renderer)
|
|
|
447
447
|
/**
|
|
448
448
|
* @hidden
|
|
449
449
|
*/
|
|
450
|
-
const
|
|
450
|
+
const setListBoxAriaLabelledBy = (optionsList, element, renderer) => {
|
|
451
451
|
const listBox = optionsList.wrapper.nativeElement.querySelector('kendo-list ul');
|
|
452
|
-
const ariaLabel = element.nativeElement.getAttribute('aria-labelledby');
|
|
452
|
+
const ariaLabel = element.nativeElement.getAttribute('aria-labelledby') || element.nativeElement.getAttribute('data-kendo-label-id');
|
|
453
453
|
if (ariaLabel) {
|
|
454
454
|
renderer.setAttribute(listBox, 'aria-labelledby', ariaLabel);
|
|
455
455
|
}
|
|
@@ -458,7 +458,7 @@ const setListBoxAriaLabelLebBy = (optionsList, element, renderer) => {
|
|
|
458
458
|
* @hidden
|
|
459
459
|
*/
|
|
460
460
|
const setActionSheetTitle = (element, actionSheetTitle) => {
|
|
461
|
-
const ariaLabel = element.nativeElement.getAttribute('aria-labelledby');
|
|
461
|
+
const ariaLabel = element.nativeElement.getAttribute('aria-labelledby') || element.nativeElement.getAttribute('data-kendo-label-id');
|
|
462
462
|
if (!actionSheetTitle && ariaLabel) {
|
|
463
463
|
return document.getElementById(ariaLabel).innerText;
|
|
464
464
|
}
|
|
@@ -1532,14 +1532,22 @@ class NavigationService {
|
|
|
1532
1532
|
const altKey = args.originalEvent.altKey;
|
|
1533
1533
|
const shiftKey = args.originalEvent.shiftKey;
|
|
1534
1534
|
const ctrlKey = args.originalEvent.ctrlKey || args.originalEvent.metaKey;
|
|
1535
|
+
const openOnSpace = args.openOnSpace;
|
|
1536
|
+
const closeOnSpace = args.closeOnSpace;
|
|
1535
1537
|
let index;
|
|
1536
1538
|
let action = NavigationAction.Undefined;
|
|
1537
1539
|
if (altKey && keyCode === Keys.ArrowDown) {
|
|
1538
1540
|
action = NavigationAction.Open;
|
|
1539
1541
|
}
|
|
1542
|
+
else if (openOnSpace && keyCode === Keys.Space) {
|
|
1543
|
+
action = NavigationAction.Open;
|
|
1544
|
+
}
|
|
1540
1545
|
else if (altKey && keyCode === Keys.ArrowUp) {
|
|
1541
1546
|
action = NavigationAction.Close;
|
|
1542
1547
|
}
|
|
1548
|
+
else if (closeOnSpace && keyCode === Keys.Space) {
|
|
1549
|
+
action = NavigationAction.Close;
|
|
1550
|
+
}
|
|
1543
1551
|
else if (shiftKey && keyCode === Keys.ArrowUp) {
|
|
1544
1552
|
action = NavigationAction.SelectPrevious;
|
|
1545
1553
|
}
|
|
@@ -3957,7 +3965,7 @@ class AutoCompleteComponent {
|
|
|
3957
3965
|
}
|
|
3958
3966
|
this.subs.add(this.popupRef.popupOpen.subscribe(() => {
|
|
3959
3967
|
this.cdr.detectChanges();
|
|
3960
|
-
|
|
3968
|
+
setListBoxAriaLabelledBy(this.optionsList, this.searchbar.input, this.renderer);
|
|
3961
3969
|
this.optionsList.scrollToItem(this.selectionService.focused);
|
|
3962
3970
|
this.selectionService.focus(this.selectionService.focused);
|
|
3963
3971
|
this.opened.emit();
|
|
@@ -4041,7 +4049,7 @@ class AutoCompleteComponent {
|
|
|
4041
4049
|
openActionSheet() {
|
|
4042
4050
|
this.actionSheet.toggle(true);
|
|
4043
4051
|
this.cdr.detectChanges();
|
|
4044
|
-
|
|
4052
|
+
setListBoxAriaLabelledBy(this.optionsList, this.searchbar.input, this.renderer);
|
|
4045
4053
|
this.title = setActionSheetTitle(this.searchbar.input, this.title);
|
|
4046
4054
|
updateActionSheetAdaptiveAppearance(this.actionSheet, this.windowSize, this.renderer);
|
|
4047
4055
|
this.cdr.detectChanges();
|
|
@@ -5947,14 +5955,9 @@ class ComboBoxComponent extends MultiTabStop {
|
|
|
5947
5955
|
this.renderer.setAttribute(popupWrapper, 'role', 'region');
|
|
5948
5956
|
this.renderer.setAttribute(popupWrapper, 'aria-label', this.messageFor('popupLabel'));
|
|
5949
5957
|
}
|
|
5950
|
-
const listBox = this.popupRef.popupElement.querySelector('ul');
|
|
5951
|
-
const ariaLabel = this.searchbar.input.nativeElement.getAttribute('aria-labelledby');
|
|
5952
|
-
if (ariaLabel) {
|
|
5953
|
-
listBox.setAttribute('aria-labelledby', ariaLabel);
|
|
5954
|
-
}
|
|
5955
5958
|
this.popupRef.popupOpen.subscribe(() => {
|
|
5956
5959
|
this.cdr.detectChanges();
|
|
5957
|
-
|
|
5960
|
+
setListBoxAriaLabelledBy(this.optionsList, this.searchbar.input, this.renderer);
|
|
5958
5961
|
this.optionsList.scrollToItem(this.selectionService.focused);
|
|
5959
5962
|
this.selectionService.focus(this.selectionService.focused);
|
|
5960
5963
|
this.opened.emit();
|
|
@@ -6048,7 +6051,7 @@ class ComboBoxComponent extends MultiTabStop {
|
|
|
6048
6051
|
this.windowSize = windowSize();
|
|
6049
6052
|
this.actionSheet.toggle(true);
|
|
6050
6053
|
this.cdr.detectChanges();
|
|
6051
|
-
|
|
6054
|
+
setListBoxAriaLabelledBy(this.optionsList, this.searchbar.input, this.renderer);
|
|
6052
6055
|
this.title = setActionSheetTitle(this.searchbar.input, this.title);
|
|
6053
6056
|
updateActionSheetAdaptiveAppearance(this.actionSheet, this.windowSize, this.renderer);
|
|
6054
6057
|
this.cdr.detectChanges();
|
|
@@ -7233,7 +7236,9 @@ class DropDownListComponent {
|
|
|
7233
7236
|
current: focused + offset,
|
|
7234
7237
|
max: this.dataService.itemsCount - 1,
|
|
7235
7238
|
min: this.defaultItem ? -1 : 0,
|
|
7236
|
-
originalEvent: eventData
|
|
7239
|
+
originalEvent: eventData,
|
|
7240
|
+
openOnSpace: !this.isOpen,
|
|
7241
|
+
closeOnSpace: this.isOpen && !input && !(event.target instanceof HTMLInputElement)
|
|
7237
7242
|
});
|
|
7238
7243
|
const leftRightKeys = (action === NavigationAction.Left) || (action === NavigationAction.Right) && this.leftRightArrowsNavigation;
|
|
7239
7244
|
if (action !== NavigationAction.Undefined &&
|
|
@@ -7564,7 +7569,7 @@ class DropDownListComponent {
|
|
|
7564
7569
|
}
|
|
7565
7570
|
this.subs.add(this.popupRef.popupOpen.subscribe(() => {
|
|
7566
7571
|
this.cdr.detectChanges();
|
|
7567
|
-
|
|
7572
|
+
setListBoxAriaLabelledBy(this.optionsList, this.wrapper, this.renderer);
|
|
7568
7573
|
this.optionsList.scrollToItem(this.selectionService.focused);
|
|
7569
7574
|
this.selectionService.focus(this.selectionService.focused);
|
|
7570
7575
|
this.opened.emit();
|
|
@@ -7991,7 +7996,7 @@ class DropDownListComponent {
|
|
|
7991
7996
|
this.windowSize = windowSize();
|
|
7992
7997
|
this.actionSheet.toggle(true);
|
|
7993
7998
|
this.cdr.detectChanges();
|
|
7994
|
-
|
|
7999
|
+
setListBoxAriaLabelledBy(this.optionsList, this.wrapper, this.renderer);
|
|
7995
8000
|
this.title = setActionSheetTitle(this.wrapper, this.title);
|
|
7996
8001
|
updateActionSheetAdaptiveAppearance(this.actionSheet, this.windowSize, this.renderer);
|
|
7997
8002
|
this.cdr.detectChanges();
|
|
@@ -10586,13 +10591,9 @@ class MultiSelectComponent {
|
|
|
10586
10591
|
popupWrapper.style.height = this.height;
|
|
10587
10592
|
popupWrapper.setAttribute("dir", this.direction);
|
|
10588
10593
|
const listBox = popupWrapper.querySelector('ul.k-list-ul');
|
|
10589
|
-
const ariaLabel = this.searchbar.input.nativeElement.getAttribute('aria-labelledby');
|
|
10590
|
-
if (ariaLabel) {
|
|
10591
|
-
listBox.setAttribute('aria-labelledby', ariaLabel);
|
|
10592
|
-
}
|
|
10593
10594
|
this.popupRef.popupOpen.subscribe(() => {
|
|
10594
10595
|
this.cdr.detectChanges();
|
|
10595
|
-
|
|
10596
|
+
setListBoxAriaLabelledBy(this.optionsList, this.searchbar.input, this.renderer);
|
|
10596
10597
|
this.optionsList.scrollToItem(this.selectionService.focused);
|
|
10597
10598
|
this.selectionService.focus(this.selectionService.focused);
|
|
10598
10599
|
this.opened.emit();
|
|
@@ -10660,7 +10661,7 @@ class MultiSelectComponent {
|
|
|
10660
10661
|
// Stores the current value state until the user either accepts or cancels it
|
|
10661
10662
|
this._valueHolder = [...this.value];
|
|
10662
10663
|
this.cdr.detectChanges();
|
|
10663
|
-
|
|
10664
|
+
setListBoxAriaLabelledBy(this.optionsList, this.searchbar.input, this.renderer);
|
|
10664
10665
|
this.title = setActionSheetTitle(this.searchbar.input, this.title);
|
|
10665
10666
|
updateActionSheetAdaptiveAppearance(this.actionSheet, this.windowSize, this.renderer);
|
|
10666
10667
|
this.cdr.detectChanges();
|
|
@@ -11782,6 +11783,7 @@ MultiColumnComboBoxComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14
|
|
|
11782
11783
|
[fixedGroupTemplate]="fixedGroupTemplate"
|
|
11783
11784
|
[height]="listHeight"
|
|
11784
11785
|
[show]="isOpen"
|
|
11786
|
+
[id]="listBoxId"
|
|
11785
11787
|
[virtual]="virtual"
|
|
11786
11788
|
[type]="'dropdowngrid'"
|
|
11787
11789
|
[showStickyHeader]="showStickyHeader"
|
|
@@ -12066,6 +12068,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImpo
|
|
|
12066
12068
|
[fixedGroupTemplate]="fixedGroupTemplate"
|
|
12067
12069
|
[height]="listHeight"
|
|
12068
12070
|
[show]="isOpen"
|
|
12071
|
+
[id]="listBoxId"
|
|
12069
12072
|
[virtual]="virtual"
|
|
12070
12073
|
[type]="'dropdowngrid'"
|
|
12071
12074
|
[showStickyHeader]="showStickyHeader"
|
|
@@ -12841,7 +12844,7 @@ class DropDownTreeComponent {
|
|
|
12841
12844
|
/**
|
|
12842
12845
|
* @hidden
|
|
12843
12846
|
*/
|
|
12844
|
-
handleKeydown(event) {
|
|
12847
|
+
handleKeydown(event, input) {
|
|
12845
12848
|
var _a;
|
|
12846
12849
|
if (this.disabled || this.readonly) {
|
|
12847
12850
|
return;
|
|
@@ -12855,7 +12858,9 @@ class DropDownTreeComponent {
|
|
|
12855
12858
|
}
|
|
12856
12859
|
const eventData = event;
|
|
12857
12860
|
this.navigationService.process({
|
|
12858
|
-
originalEvent: eventData
|
|
12861
|
+
originalEvent: eventData,
|
|
12862
|
+
openOnSpace: !this.isOpen,
|
|
12863
|
+
closeOnSpace: this.isOpen && !input && !(event.target instanceof HTMLInputElement)
|
|
12859
12864
|
});
|
|
12860
12865
|
}
|
|
12861
12866
|
/**
|
|
@@ -13497,8 +13502,9 @@ DropDownTreeComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0",
|
|
|
13497
13502
|
#filterInput
|
|
13498
13503
|
(input)="handleFilterInputChange($event.target)"
|
|
13499
13504
|
[filterInput]="filterable && !touchEnabled"
|
|
13500
|
-
(keydown.arrowdown)="handleKeydown($event)"
|
|
13501
|
-
(keydown.alt.arrowup)="handleKeydown($event)"
|
|
13505
|
+
(keydown.arrowdown)="handleKeydown($event, filterInput)"
|
|
13506
|
+
(keydown.alt.arrowup)="handleKeydown($event, filterInput)"
|
|
13507
|
+
(keydown.escape)="handleKeydown($event, filterInput)"
|
|
13502
13508
|
[attr.aria-label]="messageFor('filterInputLabel')"
|
|
13503
13509
|
[value]="filter"
|
|
13504
13510
|
class="k-input-inner"
|
|
@@ -13702,8 +13708,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImpo
|
|
|
13702
13708
|
#filterInput
|
|
13703
13709
|
(input)="handleFilterInputChange($event.target)"
|
|
13704
13710
|
[filterInput]="filterable && !touchEnabled"
|
|
13705
|
-
(keydown.arrowdown)="handleKeydown($event)"
|
|
13706
|
-
(keydown.alt.arrowup)="handleKeydown($event)"
|
|
13711
|
+
(keydown.arrowdown)="handleKeydown($event, filterInput)"
|
|
13712
|
+
(keydown.alt.arrowup)="handleKeydown($event, filterInput)"
|
|
13713
|
+
(keydown.escape)="handleKeydown($event, filterInput)"
|
|
13707
13714
|
[attr.aria-label]="messageFor('filterInputLabel')"
|
|
13708
13715
|
[value]="filter"
|
|
13709
13716
|
class="k-input-inner"
|
|
@@ -14713,7 +14720,9 @@ class MultiSelectTreeComponent {
|
|
|
14713
14720
|
}
|
|
14714
14721
|
const eventData = event;
|
|
14715
14722
|
const action = this.navigationService.process({
|
|
14716
|
-
originalEvent: eventData
|
|
14723
|
+
originalEvent: eventData,
|
|
14724
|
+
openOnSpace: !this.isOpen,
|
|
14725
|
+
closeOnSpace: false
|
|
14717
14726
|
});
|
|
14718
14727
|
if (action === NavigationAction.Open) {
|
|
14719
14728
|
eventData.preventDefault();
|
|
@@ -38,8 +38,8 @@ const packageMetadata = {
|
|
|
38
38
|
name: '@progress/kendo-angular-dropdowns',
|
|
39
39
|
productName: 'Kendo UI for Angular',
|
|
40
40
|
productCodes: ['KENDOUIANGULAR', 'KENDOUICOMPLETE'],
|
|
41
|
-
publishDate:
|
|
42
|
-
version: '16.3.0-develop.
|
|
41
|
+
publishDate: 1718784013,
|
|
42
|
+
version: '16.3.0-develop.11',
|
|
43
43
|
licensingDocsUrl: 'https://www.telerik.com/kendo-angular-ui/my-license/'
|
|
44
44
|
};
|
|
45
45
|
|
|
@@ -447,9 +447,9 @@ const updateActionSheetAdaptiveAppearance = (actionSheet, windowSize, renderer)
|
|
|
447
447
|
/**
|
|
448
448
|
* @hidden
|
|
449
449
|
*/
|
|
450
|
-
const
|
|
450
|
+
const setListBoxAriaLabelledBy = (optionsList, element, renderer) => {
|
|
451
451
|
const listBox = optionsList.wrapper.nativeElement.querySelector('kendo-list ul');
|
|
452
|
-
const ariaLabel = element.nativeElement.getAttribute('aria-labelledby');
|
|
452
|
+
const ariaLabel = element.nativeElement.getAttribute('aria-labelledby') || element.nativeElement.getAttribute('data-kendo-label-id');
|
|
453
453
|
if (ariaLabel) {
|
|
454
454
|
renderer.setAttribute(listBox, 'aria-labelledby', ariaLabel);
|
|
455
455
|
}
|
|
@@ -458,7 +458,7 @@ const setListBoxAriaLabelLebBy = (optionsList, element, renderer) => {
|
|
|
458
458
|
* @hidden
|
|
459
459
|
*/
|
|
460
460
|
const setActionSheetTitle = (element, actionSheetTitle) => {
|
|
461
|
-
const ariaLabel = element.nativeElement.getAttribute('aria-labelledby');
|
|
461
|
+
const ariaLabel = element.nativeElement.getAttribute('aria-labelledby') || element.nativeElement.getAttribute('data-kendo-label-id');
|
|
462
462
|
if (!actionSheetTitle && ariaLabel) {
|
|
463
463
|
return document.getElementById(ariaLabel).innerText;
|
|
464
464
|
}
|
|
@@ -1531,14 +1531,22 @@ class NavigationService {
|
|
|
1531
1531
|
const altKey = args.originalEvent.altKey;
|
|
1532
1532
|
const shiftKey = args.originalEvent.shiftKey;
|
|
1533
1533
|
const ctrlKey = args.originalEvent.ctrlKey || args.originalEvent.metaKey;
|
|
1534
|
+
const openOnSpace = args.openOnSpace;
|
|
1535
|
+
const closeOnSpace = args.closeOnSpace;
|
|
1534
1536
|
let index;
|
|
1535
1537
|
let action = NavigationAction.Undefined;
|
|
1536
1538
|
if (altKey && keyCode === Keys.ArrowDown) {
|
|
1537
1539
|
action = NavigationAction.Open;
|
|
1538
1540
|
}
|
|
1541
|
+
else if (openOnSpace && keyCode === Keys.Space) {
|
|
1542
|
+
action = NavigationAction.Open;
|
|
1543
|
+
}
|
|
1539
1544
|
else if (altKey && keyCode === Keys.ArrowUp) {
|
|
1540
1545
|
action = NavigationAction.Close;
|
|
1541
1546
|
}
|
|
1547
|
+
else if (closeOnSpace && keyCode === Keys.Space) {
|
|
1548
|
+
action = NavigationAction.Close;
|
|
1549
|
+
}
|
|
1542
1550
|
else if (shiftKey && keyCode === Keys.ArrowUp) {
|
|
1543
1551
|
action = NavigationAction.SelectPrevious;
|
|
1544
1552
|
}
|
|
@@ -3951,7 +3959,7 @@ class AutoCompleteComponent {
|
|
|
3951
3959
|
}
|
|
3952
3960
|
this.subs.add(this.popupRef.popupOpen.subscribe(() => {
|
|
3953
3961
|
this.cdr.detectChanges();
|
|
3954
|
-
|
|
3962
|
+
setListBoxAriaLabelledBy(this.optionsList, this.searchbar.input, this.renderer);
|
|
3955
3963
|
this.optionsList.scrollToItem(this.selectionService.focused);
|
|
3956
3964
|
this.selectionService.focus(this.selectionService.focused);
|
|
3957
3965
|
this.opened.emit();
|
|
@@ -4035,7 +4043,7 @@ class AutoCompleteComponent {
|
|
|
4035
4043
|
openActionSheet() {
|
|
4036
4044
|
this.actionSheet.toggle(true);
|
|
4037
4045
|
this.cdr.detectChanges();
|
|
4038
|
-
|
|
4046
|
+
setListBoxAriaLabelledBy(this.optionsList, this.searchbar.input, this.renderer);
|
|
4039
4047
|
this.title = setActionSheetTitle(this.searchbar.input, this.title);
|
|
4040
4048
|
updateActionSheetAdaptiveAppearance(this.actionSheet, this.windowSize, this.renderer);
|
|
4041
4049
|
this.cdr.detectChanges();
|
|
@@ -5935,14 +5943,9 @@ class ComboBoxComponent extends MultiTabStop {
|
|
|
5935
5943
|
this.renderer.setAttribute(popupWrapper, 'role', 'region');
|
|
5936
5944
|
this.renderer.setAttribute(popupWrapper, 'aria-label', this.messageFor('popupLabel'));
|
|
5937
5945
|
}
|
|
5938
|
-
const listBox = this.popupRef.popupElement.querySelector('ul');
|
|
5939
|
-
const ariaLabel = this.searchbar.input.nativeElement.getAttribute('aria-labelledby');
|
|
5940
|
-
if (ariaLabel) {
|
|
5941
|
-
listBox.setAttribute('aria-labelledby', ariaLabel);
|
|
5942
|
-
}
|
|
5943
5946
|
this.popupRef.popupOpen.subscribe(() => {
|
|
5944
5947
|
this.cdr.detectChanges();
|
|
5945
|
-
|
|
5948
|
+
setListBoxAriaLabelledBy(this.optionsList, this.searchbar.input, this.renderer);
|
|
5946
5949
|
this.optionsList.scrollToItem(this.selectionService.focused);
|
|
5947
5950
|
this.selectionService.focus(this.selectionService.focused);
|
|
5948
5951
|
this.opened.emit();
|
|
@@ -6036,7 +6039,7 @@ class ComboBoxComponent extends MultiTabStop {
|
|
|
6036
6039
|
this.windowSize = windowSize();
|
|
6037
6040
|
this.actionSheet.toggle(true);
|
|
6038
6041
|
this.cdr.detectChanges();
|
|
6039
|
-
|
|
6042
|
+
setListBoxAriaLabelledBy(this.optionsList, this.searchbar.input, this.renderer);
|
|
6040
6043
|
this.title = setActionSheetTitle(this.searchbar.input, this.title);
|
|
6041
6044
|
updateActionSheetAdaptiveAppearance(this.actionSheet, this.windowSize, this.renderer);
|
|
6042
6045
|
this.cdr.detectChanges();
|
|
@@ -7215,7 +7218,9 @@ class DropDownListComponent {
|
|
|
7215
7218
|
current: focused + offset,
|
|
7216
7219
|
max: this.dataService.itemsCount - 1,
|
|
7217
7220
|
min: this.defaultItem ? -1 : 0,
|
|
7218
|
-
originalEvent: eventData
|
|
7221
|
+
originalEvent: eventData,
|
|
7222
|
+
openOnSpace: !this.isOpen,
|
|
7223
|
+
closeOnSpace: this.isOpen && !input && !(event.target instanceof HTMLInputElement)
|
|
7219
7224
|
});
|
|
7220
7225
|
const leftRightKeys = (action === NavigationAction.Left) || (action === NavigationAction.Right) && this.leftRightArrowsNavigation;
|
|
7221
7226
|
if (action !== NavigationAction.Undefined &&
|
|
@@ -7546,7 +7551,7 @@ class DropDownListComponent {
|
|
|
7546
7551
|
}
|
|
7547
7552
|
this.subs.add(this.popupRef.popupOpen.subscribe(() => {
|
|
7548
7553
|
this.cdr.detectChanges();
|
|
7549
|
-
|
|
7554
|
+
setListBoxAriaLabelledBy(this.optionsList, this.wrapper, this.renderer);
|
|
7550
7555
|
this.optionsList.scrollToItem(this.selectionService.focused);
|
|
7551
7556
|
this.selectionService.focus(this.selectionService.focused);
|
|
7552
7557
|
this.opened.emit();
|
|
@@ -7972,7 +7977,7 @@ class DropDownListComponent {
|
|
|
7972
7977
|
this.windowSize = windowSize();
|
|
7973
7978
|
this.actionSheet.toggle(true);
|
|
7974
7979
|
this.cdr.detectChanges();
|
|
7975
|
-
|
|
7980
|
+
setListBoxAriaLabelledBy(this.optionsList, this.wrapper, this.renderer);
|
|
7976
7981
|
this.title = setActionSheetTitle(this.wrapper, this.title);
|
|
7977
7982
|
updateActionSheetAdaptiveAppearance(this.actionSheet, this.windowSize, this.renderer);
|
|
7978
7983
|
this.cdr.detectChanges();
|
|
@@ -10561,13 +10566,9 @@ class MultiSelectComponent {
|
|
|
10561
10566
|
popupWrapper.style.height = this.height;
|
|
10562
10567
|
popupWrapper.setAttribute("dir", this.direction);
|
|
10563
10568
|
const listBox = popupWrapper.querySelector('ul.k-list-ul');
|
|
10564
|
-
const ariaLabel = this.searchbar.input.nativeElement.getAttribute('aria-labelledby');
|
|
10565
|
-
if (ariaLabel) {
|
|
10566
|
-
listBox.setAttribute('aria-labelledby', ariaLabel);
|
|
10567
|
-
}
|
|
10568
10569
|
this.popupRef.popupOpen.subscribe(() => {
|
|
10569
10570
|
this.cdr.detectChanges();
|
|
10570
|
-
|
|
10571
|
+
setListBoxAriaLabelledBy(this.optionsList, this.searchbar.input, this.renderer);
|
|
10571
10572
|
this.optionsList.scrollToItem(this.selectionService.focused);
|
|
10572
10573
|
this.selectionService.focus(this.selectionService.focused);
|
|
10573
10574
|
this.opened.emit();
|
|
@@ -10635,7 +10636,7 @@ class MultiSelectComponent {
|
|
|
10635
10636
|
// Stores the current value state until the user either accepts or cancels it
|
|
10636
10637
|
this._valueHolder = [...this.value];
|
|
10637
10638
|
this.cdr.detectChanges();
|
|
10638
|
-
|
|
10639
|
+
setListBoxAriaLabelledBy(this.optionsList, this.searchbar.input, this.renderer);
|
|
10639
10640
|
this.title = setActionSheetTitle(this.searchbar.input, this.title);
|
|
10640
10641
|
updateActionSheetAdaptiveAppearance(this.actionSheet, this.windowSize, this.renderer);
|
|
10641
10642
|
this.cdr.detectChanges();
|
|
@@ -11755,6 +11756,7 @@ MultiColumnComboBoxComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14
|
|
|
11755
11756
|
[fixedGroupTemplate]="fixedGroupTemplate"
|
|
11756
11757
|
[height]="listHeight"
|
|
11757
11758
|
[show]="isOpen"
|
|
11759
|
+
[id]="listBoxId"
|
|
11758
11760
|
[virtual]="virtual"
|
|
11759
11761
|
[type]="'dropdowngrid'"
|
|
11760
11762
|
[showStickyHeader]="showStickyHeader"
|
|
@@ -12039,6 +12041,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImpo
|
|
|
12039
12041
|
[fixedGroupTemplate]="fixedGroupTemplate"
|
|
12040
12042
|
[height]="listHeight"
|
|
12041
12043
|
[show]="isOpen"
|
|
12044
|
+
[id]="listBoxId"
|
|
12042
12045
|
[virtual]="virtual"
|
|
12043
12046
|
[type]="'dropdowngrid'"
|
|
12044
12047
|
[showStickyHeader]="showStickyHeader"
|
|
@@ -12808,7 +12811,7 @@ class DropDownTreeComponent {
|
|
|
12808
12811
|
/**
|
|
12809
12812
|
* @hidden
|
|
12810
12813
|
*/
|
|
12811
|
-
handleKeydown(event) {
|
|
12814
|
+
handleKeydown(event, input) {
|
|
12812
12815
|
if (this.disabled || this.readonly) {
|
|
12813
12816
|
return;
|
|
12814
12817
|
}
|
|
@@ -12821,7 +12824,9 @@ class DropDownTreeComponent {
|
|
|
12821
12824
|
}
|
|
12822
12825
|
const eventData = event;
|
|
12823
12826
|
this.navigationService.process({
|
|
12824
|
-
originalEvent: eventData
|
|
12827
|
+
originalEvent: eventData,
|
|
12828
|
+
openOnSpace: !this.isOpen,
|
|
12829
|
+
closeOnSpace: this.isOpen && !input && !(event.target instanceof HTMLInputElement)
|
|
12825
12830
|
});
|
|
12826
12831
|
}
|
|
12827
12832
|
/**
|
|
@@ -13463,8 +13468,9 @@ DropDownTreeComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0",
|
|
|
13463
13468
|
#filterInput
|
|
13464
13469
|
(input)="handleFilterInputChange($event.target)"
|
|
13465
13470
|
[filterInput]="filterable && !touchEnabled"
|
|
13466
|
-
(keydown.arrowdown)="handleKeydown($event)"
|
|
13467
|
-
(keydown.alt.arrowup)="handleKeydown($event)"
|
|
13471
|
+
(keydown.arrowdown)="handleKeydown($event, filterInput)"
|
|
13472
|
+
(keydown.alt.arrowup)="handleKeydown($event, filterInput)"
|
|
13473
|
+
(keydown.escape)="handleKeydown($event, filterInput)"
|
|
13468
13474
|
[attr.aria-label]="messageFor('filterInputLabel')"
|
|
13469
13475
|
[value]="filter"
|
|
13470
13476
|
class="k-input-inner"
|
|
@@ -13668,8 +13674,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImpo
|
|
|
13668
13674
|
#filterInput
|
|
13669
13675
|
(input)="handleFilterInputChange($event.target)"
|
|
13670
13676
|
[filterInput]="filterable && !touchEnabled"
|
|
13671
|
-
(keydown.arrowdown)="handleKeydown($event)"
|
|
13672
|
-
(keydown.alt.arrowup)="handleKeydown($event)"
|
|
13677
|
+
(keydown.arrowdown)="handleKeydown($event, filterInput)"
|
|
13678
|
+
(keydown.alt.arrowup)="handleKeydown($event, filterInput)"
|
|
13679
|
+
(keydown.escape)="handleKeydown($event, filterInput)"
|
|
13673
13680
|
[attr.aria-label]="messageFor('filterInputLabel')"
|
|
13674
13681
|
[value]="filter"
|
|
13675
13682
|
class="k-input-inner"
|
|
@@ -14676,7 +14683,9 @@ class MultiSelectTreeComponent {
|
|
|
14676
14683
|
}
|
|
14677
14684
|
const eventData = event;
|
|
14678
14685
|
const action = this.navigationService.process({
|
|
14679
|
-
originalEvent: eventData
|
|
14686
|
+
originalEvent: eventData,
|
|
14687
|
+
openOnSpace: !this.isOpen,
|
|
14688
|
+
closeOnSpace: false
|
|
14680
14689
|
});
|
|
14681
14690
|
if (action === NavigationAction.Open) {
|
|
14682
14691
|
eventData.preventDefault();
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@progress/kendo-angular-dropdowns",
|
|
3
|
-
"version": "16.3.0-develop.
|
|
3
|
+
"version": "16.3.0-develop.11",
|
|
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",
|
|
@@ -25,17 +25,17 @@
|
|
|
25
25
|
"@angular/forms": "15 - 18",
|
|
26
26
|
"@angular/platform-browser": "15 - 18",
|
|
27
27
|
"@progress/kendo-licensing": "^1.0.2",
|
|
28
|
-
"@progress/kendo-angular-common": "16.3.0-develop.
|
|
29
|
-
"@progress/kendo-angular-l10n": "16.3.0-develop.
|
|
30
|
-
"@progress/kendo-angular-navigation": "16.3.0-develop.
|
|
31
|
-
"@progress/kendo-angular-popup": "16.3.0-develop.
|
|
32
|
-
"@progress/kendo-angular-icons": "16.3.0-develop.
|
|
33
|
-
"@progress/kendo-angular-treeview": "16.3.0-develop.
|
|
28
|
+
"@progress/kendo-angular-common": "16.3.0-develop.11",
|
|
29
|
+
"@progress/kendo-angular-l10n": "16.3.0-develop.11",
|
|
30
|
+
"@progress/kendo-angular-navigation": "16.3.0-develop.11",
|
|
31
|
+
"@progress/kendo-angular-popup": "16.3.0-develop.11",
|
|
32
|
+
"@progress/kendo-angular-icons": "16.3.0-develop.11",
|
|
33
|
+
"@progress/kendo-angular-treeview": "16.3.0-develop.11",
|
|
34
34
|
"rxjs": "^6.5.3 || ^7.0.0"
|
|
35
35
|
},
|
|
36
36
|
"dependencies": {
|
|
37
37
|
"tslib": "^2.3.1",
|
|
38
|
-
"@progress/kendo-angular-schematics": "16.3.0-develop.
|
|
38
|
+
"@progress/kendo-angular-schematics": "16.3.0-develop.11",
|
|
39
39
|
"@progress/kendo-common": "^0.2.1"
|
|
40
40
|
},
|
|
41
41
|
"schematics": "./schematics/collection.json",
|
|
@@ -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': '16.3.0-develop.
|
|
7
|
+
'@progress/kendo-angular-inputs': '16.3.0-develop.11',
|
|
8
8
|
// peers of inputs
|
|
9
|
-
'@progress/kendo-angular-intl': '16.3.0-develop.
|
|
9
|
+
'@progress/kendo-angular-intl': '16.3.0-develop.11',
|
|
10
10
|
'@progress/kendo-drawing': '^1.17.2',
|
|
11
11
|
// Peer dependency of icons
|
|
12
12
|
'@progress/kendo-svg-icons': '^3.0.0'
|