@progress/kendo-angular-dropdowns 11.2.0 → 11.3.0-develop.10
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/autocomplete/autocomplete.component.d.ts +1 -0
- package/comboboxes/combobox.component.d.ts +4 -0
- package/common/localization/messages.d.ts +9 -1
- package/common/searchbar.component.d.ts +3 -4
- package/common/util.d.ts +1 -7
- package/dropdownlist/dropdownlist.component.d.ts +1 -2
- package/dropdowntrees/dropdowntree.component.d.ts +1 -1
- package/dropdowntrees/multiselecttree.component.d.ts +1 -1
- package/esm2020/autocomplete/autocomplete.component.mjs +26 -11
- package/esm2020/comboboxes/combobox.component.mjs +24 -8
- package/esm2020/comboboxes/multicolumncombobox.component.mjs +13 -11
- package/esm2020/common/list.component.mjs +6 -0
- package/esm2020/common/localization/messages.mjs +5 -1
- package/esm2020/common/searchbar.component.mjs +12 -14
- package/esm2020/common/util.mjs +3 -12
- package/esm2020/dropdownlist/dropdownlist.component.mjs +40 -31
- package/esm2020/dropdowntrees/dropdowntree.component.mjs +24 -15
- package/esm2020/dropdowntrees/multiselecttree.component.mjs +25 -6
- package/esm2020/multiselect/multiselect.component.mjs +23 -7
- package/esm2020/package-metadata.mjs +2 -2
- package/fesm2015/progress-kendo-angular-dropdowns.mjs +202 -117
- package/fesm2020/progress-kendo-angular-dropdowns.mjs +202 -117
- package/multiselect/multiselect.component.d.ts +4 -0
- package/package.json +8 -8
- package/schematics/ngAdd/index.js +2 -2
|
@@ -5,11 +5,11 @@
|
|
|
5
5
|
import * as i0 from '@angular/core';
|
|
6
6
|
import { EventEmitter, Component, Input, Output, ViewChild, HostBinding, Directive, Injectable, InjectionToken, HostListener, ViewChildren, forwardRef, isDevMode, ViewContainerRef, Optional, Inject, ContentChild, ContentChildren, ChangeDetectionStrategy, NgModule } from '@angular/core';
|
|
7
7
|
import * as i10 from '@progress/kendo-angular-common';
|
|
8
|
-
import { isDocumentAvailable, Keys, isChanged, hasObservers, KendoInput, anyChanged, guid as guid$1, ResizeSensorModule, EventsModule } from '@progress/kendo-angular-common';
|
|
8
|
+
import { isDocumentAvailable, isSafari, Keys, isChanged, hasObservers, KendoInput, anyChanged, guid as guid$1, ResizeSensorModule, EventsModule } from '@progress/kendo-angular-common';
|
|
9
9
|
import * as i13 from '@angular/forms';
|
|
10
10
|
import { NgControl, NG_VALUE_ACCESSOR, FormsModule, ReactiveFormsModule } from '@angular/forms';
|
|
11
11
|
import { validatePackage } from '@progress/kendo-licensing';
|
|
12
|
-
import { getter as getter$1,
|
|
12
|
+
import { getter as getter$1, pointers, touchEnabled } from '@progress/kendo-common';
|
|
13
13
|
import { Subscription, merge, fromEvent, Subject, of, interval } from 'rxjs';
|
|
14
14
|
import * as i1 from '@progress/kendo-angular-l10n';
|
|
15
15
|
import { ComponentMessages, LocalizationService, L10N_PREFIX } from '@progress/kendo-angular-l10n';
|
|
@@ -32,8 +32,8 @@ const packageMetadata = {
|
|
|
32
32
|
name: '@progress/kendo-angular-dropdowns',
|
|
33
33
|
productName: 'Kendo UI for Angular',
|
|
34
34
|
productCodes: ['KENDOUIANGULAR', 'KENDOUICOMPLETE'],
|
|
35
|
-
publishDate:
|
|
36
|
-
version: '11.
|
|
35
|
+
publishDate: 1677586118,
|
|
36
|
+
version: '11.3.0-develop.10',
|
|
37
37
|
licensingDocsUrl: 'https://www.telerik.com/kendo-angular-ui/my-license/'
|
|
38
38
|
};
|
|
39
39
|
|
|
@@ -361,15 +361,6 @@ const getFillModeClass = (component, fillMode) => {
|
|
|
361
361
|
* @hidden
|
|
362
362
|
*/
|
|
363
363
|
const filterAndMap = (arr, predicate, mapper) => arr.reduce((acc, curr) => predicate(curr) ? [...acc, mapper(curr)] : acc, []);
|
|
364
|
-
/**
|
|
365
|
-
* @hidden
|
|
366
|
-
*
|
|
367
|
-
* Returns true if the used browser is Safari.
|
|
368
|
-
*/
|
|
369
|
-
const isSafari = (userAgent) => {
|
|
370
|
-
return detectDesktopBrowser(userAgent).safari ||
|
|
371
|
-
(detectMobileOS(userAgent) && detectMobileOS(userAgent).browser === 'mobilesafari');
|
|
372
|
-
};
|
|
373
364
|
/**
|
|
374
365
|
* @hidden
|
|
375
366
|
*
|
|
@@ -398,8 +389,8 @@ const getTextField = (field, level) => {
|
|
|
398
389
|
/**
|
|
399
390
|
* @hidden
|
|
400
391
|
*/
|
|
401
|
-
const getSearchableItems = (
|
|
402
|
-
const nodeSeletor = `kendo-
|
|
392
|
+
const getSearchableItems = (treeViewId, popupElement) => {
|
|
393
|
+
const nodeSeletor = `kendo-treeview[id='${treeViewId}'] li.k-treeview-item`;
|
|
403
394
|
const liElements = Array.from(popupElement.querySelectorAll(nodeSeletor));
|
|
404
395
|
return liElements.map((liElement) => {
|
|
405
396
|
return { text: liElement.innerText, index: liElement.getAttribute('data-treeindex') };
|
|
@@ -413,6 +404,7 @@ class SearchBarComponent {
|
|
|
413
404
|
constructor(localization, renderer, injector) {
|
|
414
405
|
this.localization = localization;
|
|
415
406
|
this.injector = injector;
|
|
407
|
+
this.ariaExpanded = null;
|
|
416
408
|
this.valueChange = new EventEmitter();
|
|
417
409
|
this.onBlur = new EventEmitter();
|
|
418
410
|
this.onFocus = new EventEmitter();
|
|
@@ -469,9 +461,6 @@ class SearchBarComponent {
|
|
|
469
461
|
get placeholder() {
|
|
470
462
|
return this._placeholder;
|
|
471
463
|
}
|
|
472
|
-
get ariaExpanded() {
|
|
473
|
-
return this.role === 'combobox' ? this.popupOpen : null;
|
|
474
|
-
}
|
|
475
464
|
ngOnInit() {
|
|
476
465
|
this.subs.add(this.localization
|
|
477
466
|
.changes.subscribe(({ rtl }) => this.direction = rtl ? 'rtl' : 'ltr'));
|
|
@@ -586,14 +575,14 @@ class SearchBarComponent {
|
|
|
586
575
|
}
|
|
587
576
|
}
|
|
588
577
|
SearchBarComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: SearchBarComponent, deps: [{ token: i1.LocalizationService }, { token: i0.Renderer2 }, { token: i0.Injector }], target: i0.ɵɵFactoryTarget.Component });
|
|
589
|
-
SearchBarComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.12", type: SearchBarComponent, selector: "kendo-searchbar", inputs: { id: "id",
|
|
578
|
+
SearchBarComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.12", type: SearchBarComponent, selector: "kendo-searchbar", inputs: { id: "id", tagListId: "tagListId", activeDescendant: "activeDescendant", disabled: "disabled", readonly: "readonly", tabIndex: "tabIndex", role: "role", isLoading: "isLoading", ariaControls: "ariaControls", ariaExpanded: "ariaExpanded", isSuggestable: "isSuggestable", isFilterable: "isFilterable", userInput: "userInput", suggestedText: "suggestedText", placeholder: "placeholder" }, outputs: { valueChange: "valueChange", onBlur: "onBlur", onFocus: "onFocus", onClick: "onClick", onNavigate: "onNavigate" }, host: { properties: { "class.k-searchbar": "this.searchBarClass" } }, viewQueries: [{ propertyName: "input", first: true, predicate: ["input"], descendants: true, static: true }], usesOnChanges: true, ngImport: i0, template: `
|
|
590
579
|
<input #input
|
|
591
580
|
autocomplete="off"
|
|
592
581
|
[id]="id"
|
|
593
582
|
[disabled]="disabled"
|
|
594
583
|
[readonly]="readonly"
|
|
595
584
|
[placeholder]="placeholder"
|
|
596
|
-
|
|
585
|
+
class="k-input-inner"
|
|
597
586
|
(input)="handleInput($event)"
|
|
598
587
|
(keydown)="handleKeydown($event)"
|
|
599
588
|
[kendoEventsOutsideAngular]="{
|
|
@@ -606,7 +595,7 @@ SearchBarComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", ver
|
|
|
606
595
|
[attr.role]="role"
|
|
607
596
|
aria-haspopup="listbox"
|
|
608
597
|
[attr.aria-expanded]="ariaExpanded"
|
|
609
|
-
[attr.aria-controls]="
|
|
598
|
+
[attr.aria-controls]="ariaControls"
|
|
610
599
|
[attr.aria-describedby]="tagListId"
|
|
611
600
|
[attr.aria-activedescendant]="activeDescendant"
|
|
612
601
|
[attr.aria-busy]="isLoading"
|
|
@@ -624,7 +613,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
|
|
|
624
613
|
[disabled]="disabled"
|
|
625
614
|
[readonly]="readonly"
|
|
626
615
|
[placeholder]="placeholder"
|
|
627
|
-
|
|
616
|
+
class="k-input-inner"
|
|
628
617
|
(input)="handleInput($event)"
|
|
629
618
|
(keydown)="handleKeydown($event)"
|
|
630
619
|
[kendoEventsOutsideAngular]="{
|
|
@@ -637,7 +626,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
|
|
|
637
626
|
[attr.role]="role"
|
|
638
627
|
aria-haspopup="listbox"
|
|
639
628
|
[attr.aria-expanded]="ariaExpanded"
|
|
640
|
-
[attr.aria-controls]="
|
|
629
|
+
[attr.aria-controls]="ariaControls"
|
|
641
630
|
[attr.aria-describedby]="tagListId"
|
|
642
631
|
[attr.aria-activedescendant]="activeDescendant"
|
|
643
632
|
[attr.aria-busy]="isLoading"
|
|
@@ -647,8 +636,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
|
|
|
647
636
|
}]
|
|
648
637
|
}], ctorParameters: function () { return [{ type: i1.LocalizationService }, { type: i0.Renderer2 }, { type: i0.Injector }]; }, propDecorators: { id: [{
|
|
649
638
|
type: Input
|
|
650
|
-
}], listId: [{
|
|
651
|
-
type: Input
|
|
652
639
|
}], tagListId: [{
|
|
653
640
|
type: Input
|
|
654
641
|
}], activeDescendant: [{
|
|
@@ -659,12 +646,14 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
|
|
|
659
646
|
type: Input
|
|
660
647
|
}], tabIndex: [{
|
|
661
648
|
type: Input
|
|
662
|
-
}], popupOpen: [{
|
|
663
|
-
type: Input
|
|
664
649
|
}], role: [{
|
|
665
650
|
type: Input
|
|
666
651
|
}], isLoading: [{
|
|
667
652
|
type: Input
|
|
653
|
+
}], ariaControls: [{
|
|
654
|
+
type: Input
|
|
655
|
+
}], ariaExpanded: [{
|
|
656
|
+
type: Input
|
|
668
657
|
}], isSuggestable: [{
|
|
669
658
|
type: Input
|
|
670
659
|
}], isFilterable: [{
|
|
@@ -2165,6 +2154,9 @@ ListComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version:
|
|
|
2165
2154
|
*ngIf="checkboxes.enabled"
|
|
2166
2155
|
type="checkbox"
|
|
2167
2156
|
class="k-checkbox"
|
|
2157
|
+
role="presentation"
|
|
2158
|
+
tabindex="-1"
|
|
2159
|
+
aria-hidden="true"
|
|
2168
2160
|
[ngClass]="checkboxClasses"
|
|
2169
2161
|
(change)="onCheckedChange($event, itemIndex)"
|
|
2170
2162
|
[checked]="isChecked(itemIndex)"
|
|
@@ -2293,6 +2285,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
|
|
|
2293
2285
|
*ngIf="checkboxes.enabled"
|
|
2294
2286
|
type="checkbox"
|
|
2295
2287
|
class="k-checkbox"
|
|
2288
|
+
role="presentation"
|
|
2289
|
+
tabindex="-1"
|
|
2290
|
+
aria-hidden="true"
|
|
2296
2291
|
[ngClass]="checkboxClasses"
|
|
2297
2292
|
(change)="onCheckedChange($event, itemIndex)"
|
|
2298
2293
|
[checked]="isChecked(itemIndex)"
|
|
@@ -2435,7 +2430,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
|
|
|
2435
2430
|
class Messages extends ComponentMessages {
|
|
2436
2431
|
}
|
|
2437
2432
|
Messages.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: Messages, deps: null, target: i0.ɵɵFactoryTarget.Directive });
|
|
2438
|
-
Messages.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.3.12", type: Messages, inputs: { noDataText: "noDataText", clearTitle: "clearTitle", checkAllText: "checkAllText", selectButtonText: "selectButtonText" }, usesInheritance: true, ngImport: i0 });
|
|
2433
|
+
Messages.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.3.12", type: Messages, inputs: { noDataText: "noDataText", clearTitle: "clearTitle", checkAllText: "checkAllText", selectButtonText: "selectButtonText", filterInputLabel: "filterInputLabel", popupLabel: "popupLabel" }, usesInheritance: true, ngImport: i0 });
|
|
2439
2434
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: Messages, decorators: [{
|
|
2440
2435
|
type: Directive
|
|
2441
2436
|
}], propDecorators: { noDataText: [{
|
|
@@ -2446,6 +2441,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
|
|
|
2446
2441
|
type: Input
|
|
2447
2442
|
}], selectButtonText: [{
|
|
2448
2443
|
type: Input
|
|
2444
|
+
}], filterInputLabel: [{
|
|
2445
|
+
type: Input
|
|
2446
|
+
}], popupLabel: [{
|
|
2447
|
+
type: Input
|
|
2449
2448
|
}] } });
|
|
2450
2449
|
|
|
2451
2450
|
/**
|
|
@@ -2620,8 +2619,8 @@ class AutoCompleteComponent {
|
|
|
2620
2619
|
*/
|
|
2621
2620
|
this.onBlur = new EventEmitter();
|
|
2622
2621
|
this.widgetClasses = true;
|
|
2623
|
-
this.listBoxId = guid()
|
|
2624
|
-
this.optionPrefix = guid()
|
|
2622
|
+
this.listBoxId = `k-${guid()}`;
|
|
2623
|
+
this.optionPrefix = `k-${guid()}`;
|
|
2625
2624
|
this.onChangeCallback = noop;
|
|
2626
2625
|
this.onTouchedCallback = noop;
|
|
2627
2626
|
this.popupMouseDownHandler = (event) => event.preventDefault();
|
|
@@ -2685,6 +2684,9 @@ class AutoCompleteComponent {
|
|
|
2685
2684
|
return 'visible';
|
|
2686
2685
|
}
|
|
2687
2686
|
}
|
|
2687
|
+
get ariaControls() {
|
|
2688
|
+
return this.isOpen ? this.listBoxId : undefined;
|
|
2689
|
+
}
|
|
2688
2690
|
/**
|
|
2689
2691
|
* Toggles the visibility of the popup.
|
|
2690
2692
|
* If you use the `toggle` method to open or close the popup, the `open` and `close` events will not be fired.
|
|
@@ -3257,9 +3259,9 @@ class AutoCompleteComponent {
|
|
|
3257
3259
|
if (this.virtual) {
|
|
3258
3260
|
this.virtual.skip = 0;
|
|
3259
3261
|
}
|
|
3260
|
-
const horizontalAlign = this.direction ===
|
|
3261
|
-
const anchorPosition = { horizontal: horizontalAlign, vertical:
|
|
3262
|
-
const popupPosition = { horizontal: horizontalAlign, vertical:
|
|
3262
|
+
const horizontalAlign = this.direction === 'rtl' ? 'right' : 'left';
|
|
3263
|
+
const anchorPosition = { horizontal: horizontalAlign, vertical: 'bottom' };
|
|
3264
|
+
const popupPosition = { horizontal: horizontalAlign, vertical: 'top' };
|
|
3263
3265
|
this.popupRef = this.popupService.open({
|
|
3264
3266
|
anchor: this.wrapper,
|
|
3265
3267
|
animate: this.popupSettings.animate,
|
|
@@ -3276,7 +3278,11 @@ class AutoCompleteComponent {
|
|
|
3276
3278
|
popupWrapper.style.minWidth = min;
|
|
3277
3279
|
popupWrapper.style.width = max;
|
|
3278
3280
|
popupWrapper.style.height = this.height;
|
|
3279
|
-
popupWrapper.setAttribute(
|
|
3281
|
+
popupWrapper.setAttribute('dir', this.direction);
|
|
3282
|
+
if (!this.appendTo) {
|
|
3283
|
+
this.renderer.setAttribute(popupWrapper, 'role', 'region');
|
|
3284
|
+
this.renderer.setAttribute(popupWrapper, 'aria-label', this.messageFor('popupLabel'));
|
|
3285
|
+
}
|
|
3280
3286
|
const listBox = popupWrapper.querySelector('ul.k-list-ul');
|
|
3281
3287
|
const ariaLabel = this.searchbar.input.nativeElement.getAttribute('aria-labelledby');
|
|
3282
3288
|
if (ariaLabel) {
|
|
@@ -3381,22 +3387,26 @@ AutoCompleteComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0",
|
|
|
3381
3387
|
|
|
3382
3388
|
i18n-clearTitle="kendo.autocomplete.clearTitle|The title of the clear button"
|
|
3383
3389
|
clearTitle="clear"
|
|
3390
|
+
|
|
3391
|
+
i18n-popupLabel="kendo.autocomplete.popupLabel|The label of the popup element that contains the list of options when its role is 'region'"
|
|
3392
|
+
popupLabel="Options list"
|
|
3384
3393
|
>
|
|
3385
3394
|
</ng-container>
|
|
3386
3395
|
<kendo-searchbar #searchbar
|
|
3387
3396
|
[role]="'combobox'"
|
|
3397
|
+
[ariaExpanded]="isOpen"
|
|
3398
|
+
[ariaControls]="ariaControls"
|
|
3388
3399
|
[isSuggestable]="suggest"
|
|
3389
3400
|
[isFilterable]="filterable"
|
|
3390
3401
|
[isLoading]="isLoading"
|
|
3402
|
+
[ariaControls]="ariaControls"
|
|
3391
3403
|
[id]="focusableId"
|
|
3392
|
-
[listId]="listBoxId"
|
|
3393
3404
|
[activeDescendant]="activeDescendant"
|
|
3394
3405
|
[userInput]="text"
|
|
3395
3406
|
[suggestedText]="suggestion"
|
|
3396
3407
|
[disabled]="disabled"
|
|
3397
3408
|
[readonly]="readonly"
|
|
3398
3409
|
[tabIndex]="tabIndex"
|
|
3399
|
-
[popupOpen]="isOpen"
|
|
3400
3410
|
[placeholder]="placeholder"
|
|
3401
3411
|
(onNavigate)="handleNavigate($event)"
|
|
3402
3412
|
(valueChange)="searchBarChange($event)"
|
|
@@ -3468,7 +3478,7 @@ AutoCompleteComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0",
|
|
|
3468
3478
|
<kendo-resize-sensor (resize)="onResize()"></kendo-resize-sensor>
|
|
3469
3479
|
</ng-template>
|
|
3470
3480
|
<ng-container #container></ng-container>
|
|
3471
|
-
`, isInline: true, components: [{ type: SearchBarComponent, selector: "kendo-searchbar", inputs: ["id", "
|
|
3481
|
+
`, isInline: true, components: [{ type: SearchBarComponent, selector: "kendo-searchbar", inputs: ["id", "tagListId", "activeDescendant", "disabled", "readonly", "tabIndex", "role", "isLoading", "ariaControls", "ariaExpanded", "isSuggestable", "isFilterable", "userInput", "suggestedText", "placeholder"], outputs: ["valueChange", "onBlur", "onFocus", "onClick", "onNavigate"] }, { type: i8.IconWrapperComponent, selector: "kendo-icon-wrapper", inputs: ["name", "svgIcon", "innerCssClass", "customFontClass"], exportAs: ["kendoIconWrapper"] }, { type: ListComponent, selector: "kendo-list", inputs: ["selected", "focused", "textField", "valueField", "height", "template", "groupTemplate", "fixedGroupTemplate", "show", "id", "optionPrefix", "multipleSelection", "virtual", "type", "checkboxes", "ariaLive", "isMultiselect", "data", "size", "rounded"], outputs: ["onClick", "pageChange", "listResize"] }, { type: i10.ResizeSensorComponent, selector: "kendo-resize-sensor", inputs: ["rateLimit"], outputs: ["resize"] }], directives: [{ type: LocalizedMessagesDirective, selector: "\n [kendoDropDownListLocalizedMessages],\n [kendoDropDownTreeLocalizedMessages],\n [kendoComboBoxLocalizedMessages],\n [kendoMultiColumnComboBoxLocalizedMessages],\n [kendoAutoCompleteLocalizedMessages],\n [kendoMultiSelectLocalizedMessages],\n [kendoMultiSelectTreeLocalizedMessages]\n " }, { type: i12.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: TemplateContextDirective, selector: "[templateContext]", inputs: ["templateContext"] }] });
|
|
3472
3482
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: AutoCompleteComponent, decorators: [{
|
|
3473
3483
|
type: Component,
|
|
3474
3484
|
args: [{
|
|
@@ -3501,22 +3511,26 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
|
|
|
3501
3511
|
|
|
3502
3512
|
i18n-clearTitle="kendo.autocomplete.clearTitle|The title of the clear button"
|
|
3503
3513
|
clearTitle="clear"
|
|
3514
|
+
|
|
3515
|
+
i18n-popupLabel="kendo.autocomplete.popupLabel|The label of the popup element that contains the list of options when its role is 'region'"
|
|
3516
|
+
popupLabel="Options list"
|
|
3504
3517
|
>
|
|
3505
3518
|
</ng-container>
|
|
3506
3519
|
<kendo-searchbar #searchbar
|
|
3507
3520
|
[role]="'combobox'"
|
|
3521
|
+
[ariaExpanded]="isOpen"
|
|
3522
|
+
[ariaControls]="ariaControls"
|
|
3508
3523
|
[isSuggestable]="suggest"
|
|
3509
3524
|
[isFilterable]="filterable"
|
|
3510
3525
|
[isLoading]="isLoading"
|
|
3526
|
+
[ariaControls]="ariaControls"
|
|
3511
3527
|
[id]="focusableId"
|
|
3512
|
-
[listId]="listBoxId"
|
|
3513
3528
|
[activeDescendant]="activeDescendant"
|
|
3514
3529
|
[userInput]="text"
|
|
3515
3530
|
[suggestedText]="suggestion"
|
|
3516
3531
|
[disabled]="disabled"
|
|
3517
3532
|
[readonly]="readonly"
|
|
3518
3533
|
[tabIndex]="tabIndex"
|
|
3519
|
-
[popupOpen]="isOpen"
|
|
3520
3534
|
[placeholder]="placeholder"
|
|
3521
3535
|
(onNavigate)="handleNavigate($event)"
|
|
3522
3536
|
(valueChange)="searchBarChange($event)"
|
|
@@ -3953,8 +3967,8 @@ class ComboBoxComponent {
|
|
|
3953
3967
|
this.onBlur = new EventEmitter();
|
|
3954
3968
|
this.widgetClasses = true;
|
|
3955
3969
|
this._isFocused = false;
|
|
3956
|
-
this.listBoxId = guid()
|
|
3957
|
-
this.optionPrefix = guid()
|
|
3970
|
+
this.listBoxId = `k-${guid()}`;
|
|
3971
|
+
this.optionPrefix = `k-${guid()}`;
|
|
3958
3972
|
this.onChangeCallback = (_) => { };
|
|
3959
3973
|
this.onTouchedCallback = (_) => { };
|
|
3960
3974
|
/**
|
|
@@ -3988,6 +4002,12 @@ class ComboBoxComponent {
|
|
|
3988
4002
|
get text() {
|
|
3989
4003
|
return this._text;
|
|
3990
4004
|
}
|
|
4005
|
+
/**
|
|
4006
|
+
* @hidden
|
|
4007
|
+
*/
|
|
4008
|
+
get ariaControls() {
|
|
4009
|
+
return this.isOpen ? this.listBoxId : undefined;
|
|
4010
|
+
}
|
|
3991
4011
|
/**
|
|
3992
4012
|
* @hidden
|
|
3993
4013
|
*/
|
|
@@ -4926,7 +4946,11 @@ class ComboBoxComponent {
|
|
|
4926
4946
|
popupWrapper.style.minWidth = min;
|
|
4927
4947
|
popupWrapper.style.width = max;
|
|
4928
4948
|
popupWrapper.style.height = this.popupHeight;
|
|
4929
|
-
popupWrapper.setAttribute(
|
|
4949
|
+
popupWrapper.setAttribute('dir', this.direction);
|
|
4950
|
+
if (!this.appendTo) {
|
|
4951
|
+
this.renderer.setAttribute(popupWrapper, 'role', 'region');
|
|
4952
|
+
this.renderer.setAttribute(popupWrapper, 'aria-label', this.messageFor('popupLabel'));
|
|
4953
|
+
}
|
|
4930
4954
|
const listBox = this.popupRef.popupElement.querySelector('ul');
|
|
4931
4955
|
const ariaLabel = this.searchbar.input.nativeElement.getAttribute('aria-labelledby');
|
|
4932
4956
|
if (ariaLabel) {
|
|
@@ -5030,12 +5054,16 @@ ComboBoxComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", vers
|
|
|
5030
5054
|
|
|
5031
5055
|
i18n-selectButtonText="kendo.combobox.selectButtonText|The text set as aria-label on the select button"
|
|
5032
5056
|
selectButtonText="Select"
|
|
5057
|
+
|
|
5058
|
+
i18n-popupLabel="kendo.combobox.popupLabel|The label of the popup element that contains the list of options when its role is 'region'"
|
|
5059
|
+
popupLabel="Options list"
|
|
5033
5060
|
>
|
|
5034
5061
|
</ng-container>
|
|
5035
5062
|
<kendo-searchbar #searchbar
|
|
5036
5063
|
[role]="'combobox'"
|
|
5064
|
+
[ariaExpanded]="isOpen"
|
|
5065
|
+
[ariaControls]="ariaControls"
|
|
5037
5066
|
[id]="focusableId"
|
|
5038
|
-
[listId]="listBoxId"
|
|
5039
5067
|
[isLoading]="loading"
|
|
5040
5068
|
[isSuggestable]="suggest"
|
|
5041
5069
|
[isFilterable]="filterable"
|
|
@@ -5045,7 +5073,6 @@ ComboBoxComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", vers
|
|
|
5045
5073
|
[disabled]="disabled"
|
|
5046
5074
|
[readonly]="readonly"
|
|
5047
5075
|
[tabIndex]="tabIndex"
|
|
5048
|
-
[popupOpen]="isOpen"
|
|
5049
5076
|
[placeholder]="placeholder"
|
|
5050
5077
|
(onNavigate)="handleNavigate($event)"
|
|
5051
5078
|
(valueChange)="searchBarChange($event)"
|
|
@@ -5137,7 +5164,7 @@ ComboBoxComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", vers
|
|
|
5137
5164
|
<kendo-resize-sensor (resize)="onResize()"></kendo-resize-sensor>
|
|
5138
5165
|
</ng-template>
|
|
5139
5166
|
<ng-container #container></ng-container>
|
|
5140
|
-
`, isInline: true, components: [{ type: SearchBarComponent, selector: "kendo-searchbar", inputs: ["id", "
|
|
5167
|
+
`, isInline: true, components: [{ type: SearchBarComponent, selector: "kendo-searchbar", inputs: ["id", "tagListId", "activeDescendant", "disabled", "readonly", "tabIndex", "role", "isLoading", "ariaControls", "ariaExpanded", "isSuggestable", "isFilterable", "userInput", "suggestedText", "placeholder"], outputs: ["valueChange", "onBlur", "onFocus", "onClick", "onNavigate"] }, { type: i8.IconWrapperComponent, selector: "kendo-icon-wrapper", inputs: ["name", "svgIcon", "innerCssClass", "customFontClass"], exportAs: ["kendoIconWrapper"] }, { type: ListComponent, selector: "kendo-list", inputs: ["selected", "focused", "textField", "valueField", "height", "template", "groupTemplate", "fixedGroupTemplate", "show", "id", "optionPrefix", "multipleSelection", "virtual", "type", "checkboxes", "ariaLive", "isMultiselect", "data", "size", "rounded"], outputs: ["onClick", "pageChange", "listResize"] }, { type: i10.ResizeSensorComponent, selector: "kendo-resize-sensor", inputs: ["rateLimit"], outputs: ["resize"] }], directives: [{ type: LocalizedMessagesDirective, selector: "\n [kendoDropDownListLocalizedMessages],\n [kendoDropDownTreeLocalizedMessages],\n [kendoComboBoxLocalizedMessages],\n [kendoMultiColumnComboBoxLocalizedMessages],\n [kendoAutoCompleteLocalizedMessages],\n [kendoMultiSelectLocalizedMessages],\n [kendoMultiSelectTreeLocalizedMessages]\n " }, { type: i12.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i10.EventsOutsideAngularDirective, selector: "[kendoEventsOutsideAngular]", inputs: ["kendoEventsOutsideAngular", "scope"] }, { type: i12.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: TemplateContextDirective, selector: "[templateContext]", inputs: ["templateContext"] }] });
|
|
5141
5168
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: ComboBoxComponent, decorators: [{
|
|
5142
5169
|
type: Component,
|
|
5143
5170
|
args: [{
|
|
@@ -5171,12 +5198,16 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
|
|
|
5171
5198
|
|
|
5172
5199
|
i18n-selectButtonText="kendo.combobox.selectButtonText|The text set as aria-label on the select button"
|
|
5173
5200
|
selectButtonText="Select"
|
|
5201
|
+
|
|
5202
|
+
i18n-popupLabel="kendo.combobox.popupLabel|The label of the popup element that contains the list of options when its role is 'region'"
|
|
5203
|
+
popupLabel="Options list"
|
|
5174
5204
|
>
|
|
5175
5205
|
</ng-container>
|
|
5176
5206
|
<kendo-searchbar #searchbar
|
|
5177
5207
|
[role]="'combobox'"
|
|
5208
|
+
[ariaExpanded]="isOpen"
|
|
5209
|
+
[ariaControls]="ariaControls"
|
|
5178
5210
|
[id]="focusableId"
|
|
5179
|
-
[listId]="listBoxId"
|
|
5180
5211
|
[isLoading]="loading"
|
|
5181
5212
|
[isSuggestable]="suggest"
|
|
5182
5213
|
[isFilterable]="filterable"
|
|
@@ -5186,7 +5217,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
|
|
|
5186
5217
|
[disabled]="disabled"
|
|
5187
5218
|
[readonly]="readonly"
|
|
5188
5219
|
[tabIndex]="tabIndex"
|
|
5189
|
-
[popupOpen]="isOpen"
|
|
5190
5220
|
[placeholder]="placeholder"
|
|
5191
5221
|
(onNavigate)="handleNavigate($event)"
|
|
5192
5222
|
(valueChange)="searchBarChange($event)"
|
|
@@ -5530,6 +5560,7 @@ class DropDownListComponent {
|
|
|
5530
5560
|
* @hidden
|
|
5531
5561
|
*/
|
|
5532
5562
|
this.caretAltDownIcon = caretAltDownIcon;
|
|
5563
|
+
this.listBoxId = `k-${guid()}`;
|
|
5533
5564
|
/**
|
|
5534
5565
|
* Sets the height of the options list. By default, `listHeight` is 200px.
|
|
5535
5566
|
*
|
|
@@ -5611,9 +5642,8 @@ class DropDownListComponent {
|
|
|
5611
5642
|
this.role = 'combobox';
|
|
5612
5643
|
this.haspopup = 'listbox';
|
|
5613
5644
|
this.groupIndices = [];
|
|
5614
|
-
this.
|
|
5615
|
-
this.
|
|
5616
|
-
this.filterText = "";
|
|
5645
|
+
this.optionPrefix = `k-${guid()}`;
|
|
5646
|
+
this.filterText = '';
|
|
5617
5647
|
this.subs = new Subscription();
|
|
5618
5648
|
this._isFocused = false;
|
|
5619
5649
|
this.onTouchedCallback = (_) => { };
|
|
@@ -5919,9 +5949,6 @@ class DropDownListComponent {
|
|
|
5919
5949
|
get isAriaExpanded() {
|
|
5920
5950
|
return this.ariaExpanded;
|
|
5921
5951
|
}
|
|
5922
|
-
get hostAriaControls() {
|
|
5923
|
-
return this.ariaControls;
|
|
5924
|
-
}
|
|
5925
5952
|
get hostAriaInvalid() {
|
|
5926
5953
|
var _a;
|
|
5927
5954
|
return this.formControl ? (_a = this.formControl) === null || _a === void 0 ? void 0 : _a.invalid.toString() : null;
|
|
@@ -6263,7 +6290,11 @@ class DropDownListComponent {
|
|
|
6263
6290
|
popupWrapper.style.minWidth = min;
|
|
6264
6291
|
popupWrapper.style.width = max;
|
|
6265
6292
|
popupWrapper.style.height = this.height;
|
|
6266
|
-
popupWrapper.setAttribute(
|
|
6293
|
+
popupWrapper.setAttribute('dir', this.direction);
|
|
6294
|
+
if (!this.appendTo) {
|
|
6295
|
+
this.renderer.setAttribute(popupWrapper, 'role', 'region');
|
|
6296
|
+
this.renderer.setAttribute(popupWrapper, 'aria-label', this.messageFor('popupLabel'));
|
|
6297
|
+
}
|
|
6267
6298
|
const listBox = popupWrapper.querySelector('ul.k-list-ul');
|
|
6268
6299
|
const ariaLabel = this.wrapper.nativeElement.getAttribute('aria-labelledby');
|
|
6269
6300
|
if (ariaLabel) {
|
|
@@ -6655,7 +6686,7 @@ class DropDownListComponent {
|
|
|
6655
6686
|
const currentValue = this.wrapper.nativeElement.getAttribute('aria-describedby') || '';
|
|
6656
6687
|
const trimmed = currentValue.replace(this.valueLabelId, '').trim();
|
|
6657
6688
|
// reset the value label ID to force readers to read the new value
|
|
6658
|
-
this.valueLabelId = guid()
|
|
6689
|
+
this.valueLabelId = `k-${guid()}`;
|
|
6659
6690
|
// add to the current value - don't replace it
|
|
6660
6691
|
const newValue = `${this.valueLabelId} ${trimmed}`.trim();
|
|
6661
6692
|
this.renderer.setAttribute(this.wrapper.nativeElement, 'aria-describedby', newValue);
|
|
@@ -6673,7 +6704,7 @@ class DropDownListComponent {
|
|
|
6673
6704
|
}
|
|
6674
6705
|
}
|
|
6675
6706
|
DropDownListComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: DropDownListComponent, deps: [{ token: i0.ElementRef }, { token: i1.LocalizationService }, { token: i2.PopupService }, { token: SelectionService }, { token: NavigationService }, { token: DisabledItemsService }, { token: DataService }, { token: i0.NgZone }, { token: i0.Renderer2 }, { token: i0.ChangeDetectorRef }, { token: TOUCH_ENABLED, optional: true }, { token: i0.Injector }], target: i0.ɵɵFactoryTarget.Component });
|
|
6676
|
-
DropDownListComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.12", type: DropDownListComponent, selector: "kendo-dropdownlist", inputs: { iconClass: "iconClass", loading: "loading", data: "data", value: "value", textField: "textField", valueField: "valueField", popupSettings: "popupSettings", listHeight: "listHeight", defaultItem: "defaultItem", disabled: "disabled", itemDisabled: "itemDisabled", readonly: "readonly", filterable: "filterable", virtual: "virtual", ignoreCase: "ignoreCase", delay: "delay", valuePrimitive: "valuePrimitive", tabindex: "tabindex", tabIndex: "tabIndex", size: "size", rounded: "rounded", fillMode: "fillMode", focusableId: ["id", "focusableId"] }, outputs: { valueChange: "valueChange", filterChange: "filterChange", selectionChange: "selectionChange", open: "open", opened: "opened", close: "close", closed: "closed", onFocus: "focus", onBlur: "blur" }, host: { listeners: { "keydown": "keydown($event)", "keypress": "keypress($event)", "click": "click($event)" }, properties: { "class.k-dropdownlist": "this.hostClasses", "class.k-picker": "this.hostClasses", "class.k-disabled": "this.isDisabledClass", "attr.disabled": "this.isDisabledAttribute", "class.k-loading": "this.isLoading", "attr.id": "this.focusableId", "attr.dir": "this.dir", "attr.tabindex": "this.hostTabIndex", "attr.readonly": "this.readonlyAttr", "attr.aria-busy": "this.isBusy", "attr.role": "this.role", "attr.aria-haspopup": "this.haspopup", "attr.aria-expanded": "this.isAriaExpanded", "attr.aria-
|
|
6707
|
+
DropDownListComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.12", type: DropDownListComponent, selector: "kendo-dropdownlist", inputs: { iconClass: "iconClass", loading: "loading", data: "data", value: "value", textField: "textField", valueField: "valueField", popupSettings: "popupSettings", listHeight: "listHeight", defaultItem: "defaultItem", disabled: "disabled", itemDisabled: "itemDisabled", readonly: "readonly", filterable: "filterable", virtual: "virtual", ignoreCase: "ignoreCase", delay: "delay", valuePrimitive: "valuePrimitive", tabindex: "tabindex", tabIndex: "tabIndex", size: "size", rounded: "rounded", fillMode: "fillMode", focusableId: ["id", "focusableId"] }, outputs: { valueChange: "valueChange", filterChange: "filterChange", selectionChange: "selectionChange", open: "open", opened: "opened", close: "close", closed: "closed", onFocus: "focus", onBlur: "blur" }, host: { listeners: { "keydown": "keydown($event)", "keypress": "keypress($event)", "click": "click($event)" }, properties: { "attr.aria-controls": "this.ariaControls", "class.k-dropdownlist": "this.hostClasses", "class.k-picker": "this.hostClasses", "class.k-disabled": "this.isDisabledClass", "attr.disabled": "this.isDisabledAttribute", "class.k-loading": "this.isLoading", "attr.id": "this.focusableId", "attr.dir": "this.dir", "attr.tabindex": "this.hostTabIndex", "attr.readonly": "this.readonlyAttr", "attr.aria-busy": "this.isBusy", "attr.role": "this.role", "attr.aria-haspopup": "this.haspopup", "attr.aria-expanded": "this.isAriaExpanded", "attr.aria-invalid": "this.hostAriaInvalid", "attr.aria-activedescendant": "this.hostAriaActivedescendant" } }, providers: [
|
|
6677
6708
|
DROPDOWNLIST_VALUE_ACCESSOR,
|
|
6678
6709
|
DataService,
|
|
6679
6710
|
SelectionService,
|
|
@@ -6697,6 +6728,12 @@ DropDownListComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0",
|
|
|
6697
6728
|
|
|
6698
6729
|
i18n-selectButtonText="kendo.dropdownlist.selectButtonText|The text set as aria-label on the select button"
|
|
6699
6730
|
selectButtonText="Select"
|
|
6731
|
+
|
|
6732
|
+
i18n-filterInputLabel="kendo.dropdownlist.filterInputLabel|The text set as aria-label on the filter input"
|
|
6733
|
+
filterInputLabel="Filter"
|
|
6734
|
+
|
|
6735
|
+
i18n-popupLabel="kendo.dropdownlist.popupLabel|The label of the popup element that contains the list of options when its role is 'region'"
|
|
6736
|
+
popupLabel="Options list"
|
|
6700
6737
|
>
|
|
6701
6738
|
</ng-container>
|
|
6702
6739
|
<span class="k-input-inner" unselectable="on" [id]="valueLabelId">
|
|
@@ -6732,27 +6769,26 @@ DropDownListComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0",
|
|
|
6732
6769
|
</button>
|
|
6733
6770
|
<ng-template #popupTemplate>
|
|
6734
6771
|
<!--filterable-->
|
|
6735
|
-
|
|
6736
6772
|
<ng-template [ngIf]="filterable">
|
|
6737
6773
|
<div class="k-list-filter" (click)="$event.stopImmediatePropagation()">
|
|
6738
6774
|
<span
|
|
6739
6775
|
class="k-searchbox k-input"
|
|
6740
|
-
[ngClass]="filterInputClasses"
|
|
6741
|
-
>
|
|
6776
|
+
[ngClass]="filterInputClasses">
|
|
6742
6777
|
<kendo-icon-wrapper
|
|
6743
6778
|
class="k-icon"
|
|
6779
|
+
innerCssClass="k-input-icon"
|
|
6744
6780
|
name="search"
|
|
6745
|
-
[svgIcon]="searchIcon"
|
|
6746
|
-
>
|
|
6781
|
+
[svgIcon]="searchIcon">
|
|
6747
6782
|
</kendo-icon-wrapper>
|
|
6748
6783
|
<input
|
|
6749
6784
|
role="searchbox"
|
|
6750
6785
|
aria-autocomplete="list"
|
|
6751
6786
|
aria-haspopup="listbox"
|
|
6752
|
-
[attr.aria-controls]="ariaControls"
|
|
6787
|
+
[attr.aria-controls]="isOpen ? ariaControls : undefined"
|
|
6753
6788
|
[attr.aria-activedescendant]="ariaActivedescendant"
|
|
6754
6789
|
tabindex="-1"
|
|
6755
6790
|
[filterInput]="isFocused && !touchEnabled"
|
|
6791
|
+
[attr.aria-label]="messageFor('filterInputLabel')"
|
|
6756
6792
|
[dir]="direction"
|
|
6757
6793
|
[(ngModel)]="filterText"
|
|
6758
6794
|
class="k-input-inner"
|
|
@@ -6798,9 +6834,9 @@ DropDownListComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0",
|
|
|
6798
6834
|
<!--list-->
|
|
6799
6835
|
<kendo-list
|
|
6800
6836
|
#optionsList
|
|
6837
|
+
[id]="listBoxId"
|
|
6801
6838
|
[size]="size"
|
|
6802
6839
|
[rounded]="rounded"
|
|
6803
|
-
[id]="listBoxId"
|
|
6804
6840
|
[optionPrefix]="optionPrefix"
|
|
6805
6841
|
[data]="data"
|
|
6806
6842
|
[textField]="textField"
|
|
@@ -6812,8 +6848,7 @@ DropDownListComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0",
|
|
|
6812
6848
|
[show]="isOpen"
|
|
6813
6849
|
[virtual]="virtual"
|
|
6814
6850
|
[ariaLive]="ariaLive"
|
|
6815
|
-
(pageChange)="pageChange($event)"
|
|
6816
|
-
>
|
|
6851
|
+
(pageChange)="pageChange($event)">
|
|
6817
6852
|
</kendo-list>
|
|
6818
6853
|
<!--no-data template-->
|
|
6819
6854
|
<div class="k-no-data" *ngIf="data.length === 0">
|
|
@@ -6868,6 +6903,12 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
|
|
|
6868
6903
|
|
|
6869
6904
|
i18n-selectButtonText="kendo.dropdownlist.selectButtonText|The text set as aria-label on the select button"
|
|
6870
6905
|
selectButtonText="Select"
|
|
6906
|
+
|
|
6907
|
+
i18n-filterInputLabel="kendo.dropdownlist.filterInputLabel|The text set as aria-label on the filter input"
|
|
6908
|
+
filterInputLabel="Filter"
|
|
6909
|
+
|
|
6910
|
+
i18n-popupLabel="kendo.dropdownlist.popupLabel|The label of the popup element that contains the list of options when its role is 'region'"
|
|
6911
|
+
popupLabel="Options list"
|
|
6871
6912
|
>
|
|
6872
6913
|
</ng-container>
|
|
6873
6914
|
<span class="k-input-inner" unselectable="on" [id]="valueLabelId">
|
|
@@ -6903,27 +6944,26 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
|
|
|
6903
6944
|
</button>
|
|
6904
6945
|
<ng-template #popupTemplate>
|
|
6905
6946
|
<!--filterable-->
|
|
6906
|
-
|
|
6907
6947
|
<ng-template [ngIf]="filterable">
|
|
6908
6948
|
<div class="k-list-filter" (click)="$event.stopImmediatePropagation()">
|
|
6909
6949
|
<span
|
|
6910
6950
|
class="k-searchbox k-input"
|
|
6911
|
-
[ngClass]="filterInputClasses"
|
|
6912
|
-
>
|
|
6951
|
+
[ngClass]="filterInputClasses">
|
|
6913
6952
|
<kendo-icon-wrapper
|
|
6914
6953
|
class="k-icon"
|
|
6954
|
+
innerCssClass="k-input-icon"
|
|
6915
6955
|
name="search"
|
|
6916
|
-
[svgIcon]="searchIcon"
|
|
6917
|
-
>
|
|
6956
|
+
[svgIcon]="searchIcon">
|
|
6918
6957
|
</kendo-icon-wrapper>
|
|
6919
6958
|
<input
|
|
6920
6959
|
role="searchbox"
|
|
6921
6960
|
aria-autocomplete="list"
|
|
6922
6961
|
aria-haspopup="listbox"
|
|
6923
|
-
[attr.aria-controls]="ariaControls"
|
|
6962
|
+
[attr.aria-controls]="isOpen ? ariaControls : undefined"
|
|
6924
6963
|
[attr.aria-activedescendant]="ariaActivedescendant"
|
|
6925
6964
|
tabindex="-1"
|
|
6926
6965
|
[filterInput]="isFocused && !touchEnabled"
|
|
6966
|
+
[attr.aria-label]="messageFor('filterInputLabel')"
|
|
6927
6967
|
[dir]="direction"
|
|
6928
6968
|
[(ngModel)]="filterText"
|
|
6929
6969
|
class="k-input-inner"
|
|
@@ -6969,9 +7009,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
|
|
|
6969
7009
|
<!--list-->
|
|
6970
7010
|
<kendo-list
|
|
6971
7011
|
#optionsList
|
|
7012
|
+
[id]="listBoxId"
|
|
6972
7013
|
[size]="size"
|
|
6973
7014
|
[rounded]="rounded"
|
|
6974
|
-
[id]="listBoxId"
|
|
6975
7015
|
[optionPrefix]="optionPrefix"
|
|
6976
7016
|
[data]="data"
|
|
6977
7017
|
[textField]="textField"
|
|
@@ -6983,8 +7023,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
|
|
|
6983
7023
|
[show]="isOpen"
|
|
6984
7024
|
[virtual]="virtual"
|
|
6985
7025
|
[ariaLive]="ariaLive"
|
|
6986
|
-
(pageChange)="pageChange($event)"
|
|
6987
|
-
>
|
|
7026
|
+
(pageChange)="pageChange($event)">
|
|
6988
7027
|
</kendo-list>
|
|
6989
7028
|
<!--no-data template-->
|
|
6990
7029
|
<div class="k-no-data" *ngIf="data.length === 0">
|
|
@@ -7017,7 +7056,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
|
|
|
7017
7056
|
type: Inject,
|
|
7018
7057
|
args: [TOUCH_ENABLED]
|
|
7019
7058
|
}] }, { type: i0.Injector }];
|
|
7020
|
-
}, propDecorators: {
|
|
7059
|
+
}, propDecorators: { ariaControls: [{
|
|
7060
|
+
type: HostBinding,
|
|
7061
|
+
args: ['attr.aria-controls']
|
|
7062
|
+
}], iconClass: [{
|
|
7021
7063
|
type: Input
|
|
7022
7064
|
}], loading: [{
|
|
7023
7065
|
type: Input
|
|
@@ -7157,9 +7199,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
|
|
|
7157
7199
|
}], isAriaExpanded: [{
|
|
7158
7200
|
type: HostBinding,
|
|
7159
7201
|
args: ['attr.aria-expanded']
|
|
7160
|
-
}], hostAriaControls: [{
|
|
7161
|
-
type: HostBinding,
|
|
7162
|
-
args: ['attr.aria-controls']
|
|
7163
7202
|
}], hostAriaInvalid: [{
|
|
7164
7203
|
type: HostBinding,
|
|
7165
7204
|
args: ['attr.aria-invalid']
|
|
@@ -7621,8 +7660,8 @@ class MultiSelectComponent {
|
|
|
7621
7660
|
* @hidden
|
|
7622
7661
|
*/
|
|
7623
7662
|
this.plusIcon = plusIcon;
|
|
7624
|
-
this.listBoxId = guid()
|
|
7625
|
-
this.tagListId = guid()
|
|
7663
|
+
this.listBoxId = `k-${guid()}`;
|
|
7664
|
+
this.tagListId = `k-${guid()}`;
|
|
7626
7665
|
this.tagPrefix = "tag-" + guid();
|
|
7627
7666
|
this.optionPrefix = "option-" + guid();
|
|
7628
7667
|
this.focusedTagIndex = undefined;
|
|
@@ -7803,6 +7842,12 @@ class MultiSelectComponent {
|
|
|
7803
7842
|
this.subscribeEvents();
|
|
7804
7843
|
this.subscribeTouchEvents();
|
|
7805
7844
|
}
|
|
7845
|
+
/**
|
|
7846
|
+
* @hidden
|
|
7847
|
+
*/
|
|
7848
|
+
get ariaControls() {
|
|
7849
|
+
return this.isOpen ? this.listBoxId : undefined;
|
|
7850
|
+
}
|
|
7806
7851
|
/**
|
|
7807
7852
|
* Focuses a specific item of the MultiSelect based on a provided index.
|
|
7808
7853
|
* If there is a custom item it is positioned at index -1.
|
|
@@ -8927,6 +8972,10 @@ class MultiSelectComponent {
|
|
|
8927
8972
|
});
|
|
8928
8973
|
const popupWrapper = this.popupRef.popupElement;
|
|
8929
8974
|
const { min, max } = this.width;
|
|
8975
|
+
if (!this.appendTo) {
|
|
8976
|
+
this.renderer.setAttribute(popupWrapper, 'role', 'region');
|
|
8977
|
+
this.renderer.setAttribute(popupWrapper, 'aria-label', this.messageFor('popupLabel'));
|
|
8978
|
+
}
|
|
8930
8979
|
popupWrapper.addEventListener('mousedown', this.popupMouseDownHandler);
|
|
8931
8980
|
popupWrapper.style.minWidth = min;
|
|
8932
8981
|
popupWrapper.style.width = max;
|
|
@@ -9019,6 +9068,9 @@ MultiSelectComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", v
|
|
|
9019
9068
|
|
|
9020
9069
|
i18n-clearTitle="kendo.multiselect.clearTitle|The title of the clear button"
|
|
9021
9070
|
clearTitle="clear"
|
|
9071
|
+
|
|
9072
|
+
i18n-popupLabel="kendo.multiselect.popupLabel|The label of the popup element that contains the list of options when its role is 'region'"
|
|
9073
|
+
popupLabel="Options list"
|
|
9022
9074
|
>
|
|
9023
9075
|
</ng-container>
|
|
9024
9076
|
<kendo-taglist
|
|
@@ -9039,10 +9091,11 @@ MultiSelectComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", v
|
|
|
9039
9091
|
>
|
|
9040
9092
|
<kendo-searchbar
|
|
9041
9093
|
#searchbar
|
|
9094
|
+
[ariaExpanded]="isOpen"
|
|
9095
|
+
[ariaControls]="ariaControls"
|
|
9042
9096
|
[id]="focusableId"
|
|
9043
9097
|
[role]="'combobox'"
|
|
9044
9098
|
[tagListId]="tagListId"
|
|
9045
|
-
[listId]="listBoxId"
|
|
9046
9099
|
[isLoading]="loading"
|
|
9047
9100
|
[isFilterable]="filterable"
|
|
9048
9101
|
[activeDescendant]="activeDescendant"
|
|
@@ -9050,7 +9103,6 @@ MultiSelectComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", v
|
|
|
9050
9103
|
[disabled]="disabled"
|
|
9051
9104
|
[readonly]="readonly"
|
|
9052
9105
|
[tabIndex]="tabIndex"
|
|
9053
|
-
[popupOpen]="isOpen"
|
|
9054
9106
|
[placeholder]="placeholder"
|
|
9055
9107
|
(onNavigate)="handleNavigate($event)"
|
|
9056
9108
|
(valueChange)="handleFilter($event)"
|
|
@@ -9154,7 +9206,7 @@ MultiSelectComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", v
|
|
|
9154
9206
|
<kendo-resize-sensor (resize)="onResize()"></kendo-resize-sensor>
|
|
9155
9207
|
</ng-template>
|
|
9156
9208
|
<ng-container #container></ng-container>
|
|
9157
|
-
`, isInline: true, components: [{ type: TagListComponent, selector: "kendo-taglist", inputs: ["tags", "textField", "valueField", "valueDepth", "focused", "template", "groupTemplate", "disabled", "tagPrefix", "id", "size", "rounded", "fillMode", "disabledIndices"], outputs: ["removeTag"] }, { type: SearchBarComponent, selector: "kendo-searchbar", inputs: ["id", "
|
|
9209
|
+
`, isInline: true, components: [{ type: TagListComponent, selector: "kendo-taglist", inputs: ["tags", "textField", "valueField", "valueDepth", "focused", "template", "groupTemplate", "disabled", "tagPrefix", "id", "size", "rounded", "fillMode", "disabledIndices"], outputs: ["removeTag"] }, { type: SearchBarComponent, selector: "kendo-searchbar", inputs: ["id", "tagListId", "activeDescendant", "disabled", "readonly", "tabIndex", "role", "isLoading", "ariaControls", "ariaExpanded", "isSuggestable", "isFilterable", "userInput", "suggestedText", "placeholder"], outputs: ["valueChange", "onBlur", "onFocus", "onClick", "onNavigate"] }, { type: i8.IconWrapperComponent, selector: "kendo-icon-wrapper", inputs: ["name", "svgIcon", "innerCssClass", "customFontClass"], exportAs: ["kendoIconWrapper"] }, { type: ListComponent, selector: "kendo-list", inputs: ["selected", "focused", "textField", "valueField", "height", "template", "groupTemplate", "fixedGroupTemplate", "show", "id", "optionPrefix", "multipleSelection", "virtual", "type", "checkboxes", "ariaLive", "isMultiselect", "data", "size", "rounded"], outputs: ["onClick", "pageChange", "listResize"] }, { type: i10.ResizeSensorComponent, selector: "kendo-resize-sensor", inputs: ["rateLimit"], outputs: ["resize"] }], directives: [{ type: LocalizedMessagesDirective, selector: "\n [kendoDropDownListLocalizedMessages],\n [kendoDropDownTreeLocalizedMessages],\n [kendoComboBoxLocalizedMessages],\n [kendoMultiColumnComboBoxLocalizedMessages],\n [kendoAutoCompleteLocalizedMessages],\n [kendoMultiSelectLocalizedMessages],\n [kendoMultiSelectTreeLocalizedMessages]\n " }, { type: i12.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: TemplateContextDirective, selector: "[templateContext]", inputs: ["templateContext"] }, { type: i12.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: SelectableDirective, selector: "[kendoDropDownsSelectable]", inputs: ["index", "checkboxes", "height", "multipleSelection"] }] });
|
|
9158
9210
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: MultiSelectComponent, decorators: [{
|
|
9159
9211
|
type: Component,
|
|
9160
9212
|
args: [{
|
|
@@ -9185,6 +9237,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
|
|
|
9185
9237
|
|
|
9186
9238
|
i18n-clearTitle="kendo.multiselect.clearTitle|The title of the clear button"
|
|
9187
9239
|
clearTitle="clear"
|
|
9240
|
+
|
|
9241
|
+
i18n-popupLabel="kendo.multiselect.popupLabel|The label of the popup element that contains the list of options when its role is 'region'"
|
|
9242
|
+
popupLabel="Options list"
|
|
9188
9243
|
>
|
|
9189
9244
|
</ng-container>
|
|
9190
9245
|
<kendo-taglist
|
|
@@ -9205,10 +9260,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
|
|
|
9205
9260
|
>
|
|
9206
9261
|
<kendo-searchbar
|
|
9207
9262
|
#searchbar
|
|
9263
|
+
[ariaExpanded]="isOpen"
|
|
9264
|
+
[ariaControls]="ariaControls"
|
|
9208
9265
|
[id]="focusableId"
|
|
9209
9266
|
[role]="'combobox'"
|
|
9210
9267
|
[tagListId]="tagListId"
|
|
9211
|
-
[listId]="listBoxId"
|
|
9212
9268
|
[isLoading]="loading"
|
|
9213
9269
|
[isFilterable]="filterable"
|
|
9214
9270
|
[activeDescendant]="activeDescendant"
|
|
@@ -9216,7 +9272,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
|
|
|
9216
9272
|
[disabled]="disabled"
|
|
9217
9273
|
[readonly]="readonly"
|
|
9218
9274
|
[tabIndex]="tabIndex"
|
|
9219
|
-
[popupOpen]="isOpen"
|
|
9220
9275
|
[placeholder]="placeholder"
|
|
9221
9276
|
(onNavigate)="handleNavigate($event)"
|
|
9222
9277
|
(valueChange)="handleFilter($event)"
|
|
@@ -9762,13 +9817,16 @@ MultiColumnComboBoxComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12
|
|
|
9762
9817
|
|
|
9763
9818
|
i18n-selectButtonText="kendo.multicolumncombobox.selectButtonText|The title of the select button"
|
|
9764
9819
|
selectButtonText="Select"
|
|
9765
|
-
|
|
9766
|
-
|
|
9820
|
+
|
|
9821
|
+
i18n-popupLabel="kendo.multicolumncombobox.popupLabel|The label of the popup element that contains the list of options when its role is 'region'"
|
|
9822
|
+
popupLabel="Options list"
|
|
9823
|
+
></ng-container>
|
|
9767
9824
|
<kendo-searchbar
|
|
9768
9825
|
#searchbar
|
|
9769
9826
|
[role]="'combobox'"
|
|
9827
|
+
[ariaExpanded]="isOpen"
|
|
9828
|
+
[ariaControls]="ariaControls"
|
|
9770
9829
|
[id]="focusableId"
|
|
9771
|
-
[listId]="listBoxId"
|
|
9772
9830
|
[isLoading]="loading"
|
|
9773
9831
|
[isSuggestable]="suggest"
|
|
9774
9832
|
[isFilterable]="filterable"
|
|
@@ -9778,7 +9836,6 @@ MultiColumnComboBoxComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12
|
|
|
9778
9836
|
[disabled]="disabled"
|
|
9779
9837
|
[readonly]="readonly"
|
|
9780
9838
|
[tabIndex]="tabIndex"
|
|
9781
|
-
[popupOpen]="isOpen"
|
|
9782
9839
|
[placeholder]="placeholder"
|
|
9783
9840
|
(onNavigate)="handleNavigate($event)"
|
|
9784
9841
|
(valueChange)="searchBarChange($event)"
|
|
@@ -9914,7 +9971,6 @@ MultiColumnComboBoxComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12
|
|
|
9914
9971
|
<!--list-->
|
|
9915
9972
|
<kendo-list
|
|
9916
9973
|
#optionsList
|
|
9917
|
-
[id]="listBoxId"
|
|
9918
9974
|
[optionPrefix]="optionPrefix"
|
|
9919
9975
|
[data]="data"
|
|
9920
9976
|
[textField]="textField"
|
|
@@ -9980,7 +10036,7 @@ MultiColumnComboBoxComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12
|
|
|
9980
10036
|
|
|
9981
10037
|
<!-- when the popupSettings.appendTo value is set to 'component', this container is used -->
|
|
9982
10038
|
<ng-container #container></ng-container>
|
|
9983
|
-
`, isInline: true, components: [{ type: SearchBarComponent, selector: "kendo-searchbar", inputs: ["id", "
|
|
10039
|
+
`, isInline: true, components: [{ type: SearchBarComponent, selector: "kendo-searchbar", inputs: ["id", "tagListId", "activeDescendant", "disabled", "readonly", "tabIndex", "role", "isLoading", "ariaControls", "ariaExpanded", "isSuggestable", "isFilterable", "userInput", "suggestedText", "placeholder"], outputs: ["valueChange", "onBlur", "onFocus", "onClick", "onNavigate"] }, { type: i8.IconWrapperComponent, selector: "kendo-icon-wrapper", inputs: ["name", "svgIcon", "innerCssClass", "customFontClass"], exportAs: ["kendoIconWrapper"] }, { type: ListComponent, selector: "kendo-list", inputs: ["selected", "focused", "textField", "valueField", "height", "template", "groupTemplate", "fixedGroupTemplate", "show", "id", "optionPrefix", "multipleSelection", "virtual", "type", "checkboxes", "ariaLive", "isMultiselect", "data", "size", "rounded"], outputs: ["onClick", "pageChange", "listResize"] }, { type: i10.ResizeSensorComponent, selector: "kendo-resize-sensor", inputs: ["rateLimit"], outputs: ["resize"] }], directives: [{ type: LocalizedMessagesDirective, selector: "\n [kendoDropDownListLocalizedMessages],\n [kendoDropDownTreeLocalizedMessages],\n [kendoComboBoxLocalizedMessages],\n [kendoMultiColumnComboBoxLocalizedMessages],\n [kendoAutoCompleteLocalizedMessages],\n [kendoMultiSelectLocalizedMessages],\n [kendoMultiSelectTreeLocalizedMessages]\n " }, { type: i12.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i10.EventsOutsideAngularDirective, selector: "[kendoEventsOutsideAngular]", inputs: ["kendoEventsOutsideAngular", "scope"] }, { type: i12.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: TemplateContextDirective, selector: "[templateContext]", inputs: ["templateContext"] }, { type: i12.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i12.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }] });
|
|
9984
10040
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: MultiColumnComboBoxComponent, decorators: [{
|
|
9985
10041
|
type: Component,
|
|
9986
10042
|
args: [{
|
|
@@ -10021,13 +10077,16 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
|
|
|
10021
10077
|
|
|
10022
10078
|
i18n-selectButtonText="kendo.multicolumncombobox.selectButtonText|The title of the select button"
|
|
10023
10079
|
selectButtonText="Select"
|
|
10024
|
-
|
|
10025
|
-
|
|
10080
|
+
|
|
10081
|
+
i18n-popupLabel="kendo.multicolumncombobox.popupLabel|The label of the popup element that contains the list of options when its role is 'region'"
|
|
10082
|
+
popupLabel="Options list"
|
|
10083
|
+
></ng-container>
|
|
10026
10084
|
<kendo-searchbar
|
|
10027
10085
|
#searchbar
|
|
10028
10086
|
[role]="'combobox'"
|
|
10087
|
+
[ariaExpanded]="isOpen"
|
|
10088
|
+
[ariaControls]="ariaControls"
|
|
10029
10089
|
[id]="focusableId"
|
|
10030
|
-
[listId]="listBoxId"
|
|
10031
10090
|
[isLoading]="loading"
|
|
10032
10091
|
[isSuggestable]="suggest"
|
|
10033
10092
|
[isFilterable]="filterable"
|
|
@@ -10037,7 +10096,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
|
|
|
10037
10096
|
[disabled]="disabled"
|
|
10038
10097
|
[readonly]="readonly"
|
|
10039
10098
|
[tabIndex]="tabIndex"
|
|
10040
|
-
[popupOpen]="isOpen"
|
|
10041
10099
|
[placeholder]="placeholder"
|
|
10042
10100
|
(onNavigate)="handleNavigate($event)"
|
|
10043
10101
|
(valueChange)="searchBarChange($event)"
|
|
@@ -10173,7 +10231,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
|
|
|
10173
10231
|
<!--list-->
|
|
10174
10232
|
<kendo-list
|
|
10175
10233
|
#optionsList
|
|
10176
|
-
[id]="listBoxId"
|
|
10177
10234
|
[optionPrefix]="optionPrefix"
|
|
10178
10235
|
[data]="data"
|
|
10179
10236
|
[textField]="textField"
|
|
@@ -10451,10 +10508,10 @@ class DropDownTreeComponent {
|
|
|
10451
10508
|
* Used to associate the value label with the wrapper via aria-describedby.
|
|
10452
10509
|
*/
|
|
10453
10510
|
this.valueLabelId = `k-${guid$1()}`;
|
|
10511
|
+
this.treeViewId = `k-${guid$1()}`;
|
|
10454
10512
|
this._popupSettings = DEFAULT_POPUP_SETTINGS$1;
|
|
10455
10513
|
this._tabindex = 0;
|
|
10456
10514
|
this._isFocused = false;
|
|
10457
|
-
this._popupId = guid$1();
|
|
10458
10515
|
this._size = 'medium';
|
|
10459
10516
|
this._rounded = 'medium';
|
|
10460
10517
|
this._fillMode = 'solid';
|
|
@@ -10485,7 +10542,7 @@ class DropDownTreeComponent {
|
|
|
10485
10542
|
return this.loading ? 'true' : null;
|
|
10486
10543
|
}
|
|
10487
10544
|
get hostAriaControls() {
|
|
10488
|
-
return this.isOpen ? this.
|
|
10545
|
+
return this.isOpen ? this.treeViewId : undefined;
|
|
10489
10546
|
}
|
|
10490
10547
|
get id() {
|
|
10491
10548
|
return this.focusableId;
|
|
@@ -11081,7 +11138,7 @@ class DropDownTreeComponent {
|
|
|
11081
11138
|
onChildrenLoaded() {
|
|
11082
11139
|
setTimeout(() => {
|
|
11083
11140
|
if (this.popupRef) {
|
|
11084
|
-
this._searchableNodes = getSearchableItems(this.
|
|
11141
|
+
this._searchableNodes = getSearchableItems(this.treeViewId, this.popupRef.popupElement);
|
|
11085
11142
|
}
|
|
11086
11143
|
});
|
|
11087
11144
|
}
|
|
@@ -11137,11 +11194,14 @@ class DropDownTreeComponent {
|
|
|
11137
11194
|
this.renderer.setStyle(popupWrapper, 'width', max);
|
|
11138
11195
|
this.renderer.setStyle(popupWrapper, 'height', this.height);
|
|
11139
11196
|
this.renderer.setAttribute(popupWrapper, 'dir', this.direction);
|
|
11140
|
-
|
|
11197
|
+
if (!this.appendTo) {
|
|
11198
|
+
this.renderer.setAttribute(popupWrapper, 'role', 'region');
|
|
11199
|
+
this.renderer.setAttribute(popupWrapper, 'aria-label', this.messageFor('popupLabel'));
|
|
11200
|
+
}
|
|
11141
11201
|
this.popupRef.popupOpen.subscribe(() => {
|
|
11142
11202
|
this.cdr.detectChanges();
|
|
11143
11203
|
this.opened.emit();
|
|
11144
|
-
this._searchableNodes = getSearchableItems(this.
|
|
11204
|
+
this._searchableNodes = getSearchableItems(this.treeViewId, this.popupRef.popupElement);
|
|
11145
11205
|
});
|
|
11146
11206
|
this.popupRef.popupClose.subscribe(() => {
|
|
11147
11207
|
this.closed.emit();
|
|
@@ -11361,6 +11421,12 @@ DropDownTreeComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0",
|
|
|
11361
11421
|
|
|
11362
11422
|
i18n-selectButtonText="kendo.dropdowntree.selectButtonText|The text set as aria-label on the select button"
|
|
11363
11423
|
selectButtonText="Select"
|
|
11424
|
+
|
|
11425
|
+
i18n-filterInputLabel="kendo.dropdowntree.filterInputLabel|The text set as aria-label on the filter input"
|
|
11426
|
+
filterInputLabel="Filter"
|
|
11427
|
+
|
|
11428
|
+
i18n-popupLabel="kendo.dropdowntree.popupLabel|The label of the popup element that contains the list of options when its role is 'region'"
|
|
11429
|
+
popupLabel="Options list"
|
|
11364
11430
|
>
|
|
11365
11431
|
</ng-container>
|
|
11366
11432
|
<span
|
|
@@ -11431,14 +11497,10 @@ DropDownTreeComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0",
|
|
|
11431
11497
|
[filterInput]="filterable && !touchEnabled"
|
|
11432
11498
|
(keydown.arrowdown)="handleKeydown($event)"
|
|
11433
11499
|
(keydown.alt.arrowup)="handleKeydown($event)"
|
|
11500
|
+
[attr.aria-label]="messageFor('filterInputLabel')"
|
|
11434
11501
|
[(ngModel)]="filter"
|
|
11435
11502
|
class="k-input-inner"
|
|
11436
11503
|
role="textbox"
|
|
11437
|
-
aria-haspopup="true"
|
|
11438
|
-
aria-expanded="false"
|
|
11439
|
-
tabindex="0"
|
|
11440
|
-
aria-disabled="false"
|
|
11441
|
-
aria-readonly="false"
|
|
11442
11504
|
[kendoEventsOutsideAngular]="{
|
|
11443
11505
|
blur: handleBlur
|
|
11444
11506
|
}"
|
|
@@ -11455,6 +11517,7 @@ DropDownTreeComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0",
|
|
|
11455
11517
|
</ng-template>
|
|
11456
11518
|
<kendo-treeview
|
|
11457
11519
|
#treeview
|
|
11520
|
+
[attr.id]="treeViewId"
|
|
11458
11521
|
*ngIf="data.length !== 0 && !allNodesHidden"
|
|
11459
11522
|
[size]="size"
|
|
11460
11523
|
[nodes]="data"
|
|
@@ -11544,6 +11607,12 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
|
|
|
11544
11607
|
|
|
11545
11608
|
i18n-selectButtonText="kendo.dropdowntree.selectButtonText|The text set as aria-label on the select button"
|
|
11546
11609
|
selectButtonText="Select"
|
|
11610
|
+
|
|
11611
|
+
i18n-filterInputLabel="kendo.dropdowntree.filterInputLabel|The text set as aria-label on the filter input"
|
|
11612
|
+
filterInputLabel="Filter"
|
|
11613
|
+
|
|
11614
|
+
i18n-popupLabel="kendo.dropdowntree.popupLabel|The label of the popup element that contains the list of options when its role is 'region'"
|
|
11615
|
+
popupLabel="Options list"
|
|
11547
11616
|
>
|
|
11548
11617
|
</ng-container>
|
|
11549
11618
|
<span
|
|
@@ -11614,14 +11683,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
|
|
|
11614
11683
|
[filterInput]="filterable && !touchEnabled"
|
|
11615
11684
|
(keydown.arrowdown)="handleKeydown($event)"
|
|
11616
11685
|
(keydown.alt.arrowup)="handleKeydown($event)"
|
|
11686
|
+
[attr.aria-label]="messageFor('filterInputLabel')"
|
|
11617
11687
|
[(ngModel)]="filter"
|
|
11618
11688
|
class="k-input-inner"
|
|
11619
11689
|
role="textbox"
|
|
11620
|
-
aria-haspopup="true"
|
|
11621
|
-
aria-expanded="false"
|
|
11622
|
-
tabindex="0"
|
|
11623
|
-
aria-disabled="false"
|
|
11624
|
-
aria-readonly="false"
|
|
11625
11690
|
[kendoEventsOutsideAngular]="{
|
|
11626
11691
|
blur: handleBlur
|
|
11627
11692
|
}"
|
|
@@ -11638,6 +11703,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
|
|
|
11638
11703
|
</ng-template>
|
|
11639
11704
|
<kendo-treeview
|
|
11640
11705
|
#treeview
|
|
11706
|
+
[attr.id]="treeViewId"
|
|
11641
11707
|
*ngIf="data.length !== 0 && !allNodesHidden"
|
|
11642
11708
|
[size]="size"
|
|
11643
11709
|
[nodes]="data"
|
|
@@ -12307,6 +12373,7 @@ class MultiSelectTreeComponent {
|
|
|
12307
12373
|
*/
|
|
12308
12374
|
this.xIcon = xIcon;
|
|
12309
12375
|
this.hostClasses = true;
|
|
12376
|
+
this.treeViewId = `k-${guid$1()}`;
|
|
12310
12377
|
this.role = 'combobox';
|
|
12311
12378
|
this.ariaHasPopup = 'tree';
|
|
12312
12379
|
/**
|
|
@@ -12459,7 +12526,7 @@ class MultiSelectTreeComponent {
|
|
|
12459
12526
|
* @hidden
|
|
12460
12527
|
*/
|
|
12461
12528
|
this.allNodesHidden = false;
|
|
12462
|
-
this.tagListId = guid$1()
|
|
12529
|
+
this.tagListId = `k-${guid$1()}`;
|
|
12463
12530
|
this.tagPrefix = "tag-" + guid$1();
|
|
12464
12531
|
this.focusedTagIndex = undefined;
|
|
12465
12532
|
this._value = [];
|
|
@@ -12467,7 +12534,6 @@ class MultiSelectTreeComponent {
|
|
|
12467
12534
|
this._popupSettings = DEFAULT_POPUP_SETTINGS;
|
|
12468
12535
|
this._checkableSettings = DEFAULT_CHECKABLE_SETTINGS;
|
|
12469
12536
|
this._isFocused = false;
|
|
12470
|
-
this._popupId = guid$1();
|
|
12471
12537
|
this._size = 'medium';
|
|
12472
12538
|
this._rounded = 'medium';
|
|
12473
12539
|
this._fillMode = 'solid';
|
|
@@ -12486,7 +12552,7 @@ class MultiSelectTreeComponent {
|
|
|
12486
12552
|
return this.disabled;
|
|
12487
12553
|
}
|
|
12488
12554
|
get hostAriaControls() {
|
|
12489
|
-
return this.isOpen ? this.
|
|
12555
|
+
return this.isOpen ? this.treeViewId : null;
|
|
12490
12556
|
}
|
|
12491
12557
|
get hostAriaAutocomplete() {
|
|
12492
12558
|
return this.filterable ? 'list' : null;
|
|
@@ -13284,16 +13350,19 @@ class MultiSelectTreeComponent {
|
|
|
13284
13350
|
});
|
|
13285
13351
|
const popupWrapper = this.popupRef.popupElement;
|
|
13286
13352
|
const { min, max } = this.width;
|
|
13353
|
+
if (!this.appendTo) {
|
|
13354
|
+
this.renderer.setAttribute(popupWrapper, 'role', 'region');
|
|
13355
|
+
this.renderer.setAttribute(popupWrapper, 'aria-label', this.messageFor('popupLabel'));
|
|
13356
|
+
}
|
|
13287
13357
|
popupWrapper.style.minWidth = min;
|
|
13288
13358
|
popupWrapper.style.width = max;
|
|
13289
13359
|
popupWrapper.style.height = this.height;
|
|
13290
13360
|
this.renderer.setAttribute(popupWrapper, 'dir', this.direction);
|
|
13291
13361
|
this.renderer.setAttribute(this.wrapper.nativeElement, 'aria-expanded', 'true');
|
|
13292
|
-
this.renderer.setAttribute(popupWrapper, 'id', this._popupId);
|
|
13293
13362
|
this.popupRef.popupOpen.subscribe(() => {
|
|
13294
13363
|
this.cdr.detectChanges();
|
|
13295
13364
|
this.opened.emit();
|
|
13296
|
-
this._searchableNodes = getSearchableItems(this.
|
|
13365
|
+
this._searchableNodes = getSearchableItems(this.treeViewId, this.popupRef.popupElement);
|
|
13297
13366
|
});
|
|
13298
13367
|
this.popupRef.popupClose.subscribe(() => {
|
|
13299
13368
|
this.closed.emit();
|
|
@@ -13522,7 +13591,7 @@ class MultiSelectTreeComponent {
|
|
|
13522
13591
|
onChildrenLoaded() {
|
|
13523
13592
|
setTimeout(() => {
|
|
13524
13593
|
if (this.popupRef) {
|
|
13525
|
-
this._searchableNodes = getSearchableItems(this.
|
|
13594
|
+
this._searchableNodes = getSearchableItems(this.treeViewId, this.popupRef.popupElement);
|
|
13526
13595
|
}
|
|
13527
13596
|
});
|
|
13528
13597
|
}
|
|
@@ -13628,6 +13697,12 @@ MultiSelectTreeComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0
|
|
|
13628
13697
|
|
|
13629
13698
|
i18n-checkAllText="kendo.multiselecttree.checkAllText|The text displayed for the check-all checkbox"
|
|
13630
13699
|
checkAllText="Check all"
|
|
13700
|
+
|
|
13701
|
+
i18n-filterInputLabel="kendo.multiselecttree.filterInputLabel|The text set as aria-label on the filter input"
|
|
13702
|
+
filterInputLabel="Filter"
|
|
13703
|
+
|
|
13704
|
+
i18n-popupLabel="kendo.multiselecttree.popupLabel|The label of the popup element that contains the list of options when its role is 'region'"
|
|
13705
|
+
popupLabel="Options list"
|
|
13631
13706
|
>
|
|
13632
13707
|
</ng-container>
|
|
13633
13708
|
<kendo-taglist
|
|
@@ -13694,6 +13769,7 @@ MultiSelectTreeComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0
|
|
|
13694
13769
|
#filterInput
|
|
13695
13770
|
(input)="handleFilterInputChange($event.target)"
|
|
13696
13771
|
[filterInput]="filterable && !touchEnabled"
|
|
13772
|
+
[attr.aria-label]="messageFor('filterInputLabel')"
|
|
13697
13773
|
(keydown)="handleKeydown($event)"
|
|
13698
13774
|
[(ngModel)]="filter"
|
|
13699
13775
|
class="k-input-inner"
|
|
@@ -13750,6 +13826,7 @@ MultiSelectTreeComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0
|
|
|
13750
13826
|
<kendo-treeview
|
|
13751
13827
|
#treeview
|
|
13752
13828
|
[size]="size"
|
|
13829
|
+
[attr.id]="treeViewId"
|
|
13753
13830
|
[nodes]="data"
|
|
13754
13831
|
[style.maxHeight.px]="listHeight"
|
|
13755
13832
|
[animate]="false"
|
|
@@ -13844,6 +13921,12 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
|
|
|
13844
13921
|
|
|
13845
13922
|
i18n-checkAllText="kendo.multiselecttree.checkAllText|The text displayed for the check-all checkbox"
|
|
13846
13923
|
checkAllText="Check all"
|
|
13924
|
+
|
|
13925
|
+
i18n-filterInputLabel="kendo.multiselecttree.filterInputLabel|The text set as aria-label on the filter input"
|
|
13926
|
+
filterInputLabel="Filter"
|
|
13927
|
+
|
|
13928
|
+
i18n-popupLabel="kendo.multiselecttree.popupLabel|The label of the popup element that contains the list of options when its role is 'region'"
|
|
13929
|
+
popupLabel="Options list"
|
|
13847
13930
|
>
|
|
13848
13931
|
</ng-container>
|
|
13849
13932
|
<kendo-taglist
|
|
@@ -13910,6 +13993,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
|
|
|
13910
13993
|
#filterInput
|
|
13911
13994
|
(input)="handleFilterInputChange($event.target)"
|
|
13912
13995
|
[filterInput]="filterable && !touchEnabled"
|
|
13996
|
+
[attr.aria-label]="messageFor('filterInputLabel')"
|
|
13913
13997
|
(keydown)="handleKeydown($event)"
|
|
13914
13998
|
[(ngModel)]="filter"
|
|
13915
13999
|
class="k-input-inner"
|
|
@@ -13966,6 +14050,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
|
|
|
13966
14050
|
<kendo-treeview
|
|
13967
14051
|
#treeview
|
|
13968
14052
|
[size]="size"
|
|
14053
|
+
[attr.id]="treeViewId"
|
|
13969
14054
|
[nodes]="data"
|
|
13970
14055
|
[style.maxHeight.px]="listHeight"
|
|
13971
14056
|
[animate]="false"
|