@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, HostListener, ViewChildren, InjectionToken, 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 * as i1 from '@progress/kendo-angular-l10n';
|
|
14
14
|
import { ComponentMessages, LocalizationService, L10N_PREFIX } from '@progress/kendo-angular-l10n';
|
|
15
15
|
import { Subscription, merge, fromEvent, Subject, of, interval } from 'rxjs';
|
|
@@ -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: [{
|
|
@@ -2139,6 +2128,9 @@ ListComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version:
|
|
|
2139
2128
|
*ngIf="checkboxes.enabled"
|
|
2140
2129
|
type="checkbox"
|
|
2141
2130
|
class="k-checkbox"
|
|
2131
|
+
role="presentation"
|
|
2132
|
+
tabindex="-1"
|
|
2133
|
+
aria-hidden="true"
|
|
2142
2134
|
[ngClass]="checkboxClasses"
|
|
2143
2135
|
(change)="onCheckedChange($event, itemIndex)"
|
|
2144
2136
|
[checked]="isChecked(itemIndex)"
|
|
@@ -2267,6 +2259,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
|
|
|
2267
2259
|
*ngIf="checkboxes.enabled"
|
|
2268
2260
|
type="checkbox"
|
|
2269
2261
|
class="k-checkbox"
|
|
2262
|
+
role="presentation"
|
|
2263
|
+
tabindex="-1"
|
|
2264
|
+
aria-hidden="true"
|
|
2270
2265
|
[ngClass]="checkboxClasses"
|
|
2271
2266
|
(change)="onCheckedChange($event, itemIndex)"
|
|
2272
2267
|
[checked]="isChecked(itemIndex)"
|
|
@@ -2435,7 +2430,7 @@ const TOUCH_ENABLED = new InjectionToken('dropdowns-touch-enabled');
|
|
|
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)"
|
|
@@ -3951,8 +3965,8 @@ class ComboBoxComponent {
|
|
|
3951
3965
|
this.onBlur = new EventEmitter();
|
|
3952
3966
|
this.widgetClasses = true;
|
|
3953
3967
|
this._isFocused = false;
|
|
3954
|
-
this.listBoxId = guid()
|
|
3955
|
-
this.optionPrefix = guid()
|
|
3968
|
+
this.listBoxId = `k-${guid()}`;
|
|
3969
|
+
this.optionPrefix = `k-${guid()}`;
|
|
3956
3970
|
this.onChangeCallback = (_) => { };
|
|
3957
3971
|
this.onTouchedCallback = (_) => { };
|
|
3958
3972
|
/**
|
|
@@ -3986,6 +4000,12 @@ class ComboBoxComponent {
|
|
|
3986
4000
|
get text() {
|
|
3987
4001
|
return this._text;
|
|
3988
4002
|
}
|
|
4003
|
+
/**
|
|
4004
|
+
* @hidden
|
|
4005
|
+
*/
|
|
4006
|
+
get ariaControls() {
|
|
4007
|
+
return this.isOpen ? this.listBoxId : undefined;
|
|
4008
|
+
}
|
|
3989
4009
|
/**
|
|
3990
4010
|
* @hidden
|
|
3991
4011
|
*/
|
|
@@ -4924,7 +4944,11 @@ class ComboBoxComponent {
|
|
|
4924
4944
|
popupWrapper.style.minWidth = min;
|
|
4925
4945
|
popupWrapper.style.width = max;
|
|
4926
4946
|
popupWrapper.style.height = this.popupHeight;
|
|
4927
|
-
popupWrapper.setAttribute(
|
|
4947
|
+
popupWrapper.setAttribute('dir', this.direction);
|
|
4948
|
+
if (!this.appendTo) {
|
|
4949
|
+
this.renderer.setAttribute(popupWrapper, 'role', 'region');
|
|
4950
|
+
this.renderer.setAttribute(popupWrapper, 'aria-label', this.messageFor('popupLabel'));
|
|
4951
|
+
}
|
|
4928
4952
|
const listBox = this.popupRef.popupElement.querySelector('ul');
|
|
4929
4953
|
const ariaLabel = this.searchbar.input.nativeElement.getAttribute('aria-labelledby');
|
|
4930
4954
|
if (ariaLabel) {
|
|
@@ -5028,12 +5052,16 @@ ComboBoxComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", vers
|
|
|
5028
5052
|
|
|
5029
5053
|
i18n-selectButtonText="kendo.combobox.selectButtonText|The text set as aria-label on the select button"
|
|
5030
5054
|
selectButtonText="Select"
|
|
5055
|
+
|
|
5056
|
+
i18n-popupLabel="kendo.combobox.popupLabel|The label of the popup element that contains the list of options when its role is 'region'"
|
|
5057
|
+
popupLabel="Options list"
|
|
5031
5058
|
>
|
|
5032
5059
|
</ng-container>
|
|
5033
5060
|
<kendo-searchbar #searchbar
|
|
5034
5061
|
[role]="'combobox'"
|
|
5062
|
+
[ariaExpanded]="isOpen"
|
|
5063
|
+
[ariaControls]="ariaControls"
|
|
5035
5064
|
[id]="focusableId"
|
|
5036
|
-
[listId]="listBoxId"
|
|
5037
5065
|
[isLoading]="loading"
|
|
5038
5066
|
[isSuggestable]="suggest"
|
|
5039
5067
|
[isFilterable]="filterable"
|
|
@@ -5043,7 +5071,6 @@ ComboBoxComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", vers
|
|
|
5043
5071
|
[disabled]="disabled"
|
|
5044
5072
|
[readonly]="readonly"
|
|
5045
5073
|
[tabIndex]="tabIndex"
|
|
5046
|
-
[popupOpen]="isOpen"
|
|
5047
5074
|
[placeholder]="placeholder"
|
|
5048
5075
|
(onNavigate)="handleNavigate($event)"
|
|
5049
5076
|
(valueChange)="searchBarChange($event)"
|
|
@@ -5135,7 +5162,7 @@ ComboBoxComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", vers
|
|
|
5135
5162
|
<kendo-resize-sensor (resize)="onResize()"></kendo-resize-sensor>
|
|
5136
5163
|
</ng-template>
|
|
5137
5164
|
<ng-container #container></ng-container>
|
|
5138
|
-
`, isInline: true, components: [{ type: SearchBarComponent, selector: "kendo-searchbar", inputs: ["id", "
|
|
5165
|
+
`, 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"] }] });
|
|
5139
5166
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: ComboBoxComponent, decorators: [{
|
|
5140
5167
|
type: Component,
|
|
5141
5168
|
args: [{
|
|
@@ -5169,12 +5196,16 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
|
|
|
5169
5196
|
|
|
5170
5197
|
i18n-selectButtonText="kendo.combobox.selectButtonText|The text set as aria-label on the select button"
|
|
5171
5198
|
selectButtonText="Select"
|
|
5199
|
+
|
|
5200
|
+
i18n-popupLabel="kendo.combobox.popupLabel|The label of the popup element that contains the list of options when its role is 'region'"
|
|
5201
|
+
popupLabel="Options list"
|
|
5172
5202
|
>
|
|
5173
5203
|
</ng-container>
|
|
5174
5204
|
<kendo-searchbar #searchbar
|
|
5175
5205
|
[role]="'combobox'"
|
|
5206
|
+
[ariaExpanded]="isOpen"
|
|
5207
|
+
[ariaControls]="ariaControls"
|
|
5176
5208
|
[id]="focusableId"
|
|
5177
|
-
[listId]="listBoxId"
|
|
5178
5209
|
[isLoading]="loading"
|
|
5179
5210
|
[isSuggestable]="suggest"
|
|
5180
5211
|
[isFilterable]="filterable"
|
|
@@ -5184,7 +5215,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
|
|
|
5184
5215
|
[disabled]="disabled"
|
|
5185
5216
|
[readonly]="readonly"
|
|
5186
5217
|
[tabIndex]="tabIndex"
|
|
5187
|
-
[popupOpen]="isOpen"
|
|
5188
5218
|
[placeholder]="placeholder"
|
|
5189
5219
|
(onNavigate)="handleNavigate($event)"
|
|
5190
5220
|
(valueChange)="searchBarChange($event)"
|
|
@@ -5526,6 +5556,7 @@ class DropDownListComponent {
|
|
|
5526
5556
|
* @hidden
|
|
5527
5557
|
*/
|
|
5528
5558
|
this.caretAltDownIcon = caretAltDownIcon;
|
|
5559
|
+
this.listBoxId = `k-${guid()}`;
|
|
5529
5560
|
/**
|
|
5530
5561
|
* Sets the height of the options list. By default, `listHeight` is 200px.
|
|
5531
5562
|
*
|
|
@@ -5607,9 +5638,8 @@ class DropDownListComponent {
|
|
|
5607
5638
|
this.role = 'combobox';
|
|
5608
5639
|
this.haspopup = 'listbox';
|
|
5609
5640
|
this.groupIndices = [];
|
|
5610
|
-
this.
|
|
5611
|
-
this.
|
|
5612
|
-
this.filterText = "";
|
|
5641
|
+
this.optionPrefix = `k-${guid()}`;
|
|
5642
|
+
this.filterText = '';
|
|
5613
5643
|
this.subs = new Subscription();
|
|
5614
5644
|
this._isFocused = false;
|
|
5615
5645
|
this.onTouchedCallback = (_) => { };
|
|
@@ -5915,9 +5945,6 @@ class DropDownListComponent {
|
|
|
5915
5945
|
get isAriaExpanded() {
|
|
5916
5946
|
return this.ariaExpanded;
|
|
5917
5947
|
}
|
|
5918
|
-
get hostAriaControls() {
|
|
5919
|
-
return this.ariaControls;
|
|
5920
|
-
}
|
|
5921
5948
|
get hostAriaInvalid() {
|
|
5922
5949
|
return this.formControl ? this.formControl?.invalid.toString() : null;
|
|
5923
5950
|
}
|
|
@@ -6258,7 +6285,11 @@ class DropDownListComponent {
|
|
|
6258
6285
|
popupWrapper.style.minWidth = min;
|
|
6259
6286
|
popupWrapper.style.width = max;
|
|
6260
6287
|
popupWrapper.style.height = this.height;
|
|
6261
|
-
popupWrapper.setAttribute(
|
|
6288
|
+
popupWrapper.setAttribute('dir', this.direction);
|
|
6289
|
+
if (!this.appendTo) {
|
|
6290
|
+
this.renderer.setAttribute(popupWrapper, 'role', 'region');
|
|
6291
|
+
this.renderer.setAttribute(popupWrapper, 'aria-label', this.messageFor('popupLabel'));
|
|
6292
|
+
}
|
|
6262
6293
|
const listBox = popupWrapper.querySelector('ul.k-list-ul');
|
|
6263
6294
|
const ariaLabel = this.wrapper.nativeElement.getAttribute('aria-labelledby');
|
|
6264
6295
|
if (ariaLabel) {
|
|
@@ -6650,7 +6681,7 @@ class DropDownListComponent {
|
|
|
6650
6681
|
const currentValue = this.wrapper.nativeElement.getAttribute('aria-describedby') || '';
|
|
6651
6682
|
const trimmed = currentValue.replace(this.valueLabelId, '').trim();
|
|
6652
6683
|
// reset the value label ID to force readers to read the new value
|
|
6653
|
-
this.valueLabelId = guid()
|
|
6684
|
+
this.valueLabelId = `k-${guid()}`;
|
|
6654
6685
|
// add to the current value - don't replace it
|
|
6655
6686
|
const newValue = `${this.valueLabelId} ${trimmed}`.trim();
|
|
6656
6687
|
this.renderer.setAttribute(this.wrapper.nativeElement, 'aria-describedby', newValue);
|
|
@@ -6668,7 +6699,7 @@ class DropDownListComponent {
|
|
|
6668
6699
|
}
|
|
6669
6700
|
}
|
|
6670
6701
|
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 });
|
|
6671
|
-
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-
|
|
6702
|
+
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: [
|
|
6672
6703
|
DROPDOWNLIST_VALUE_ACCESSOR,
|
|
6673
6704
|
DataService,
|
|
6674
6705
|
SelectionService,
|
|
@@ -6692,6 +6723,12 @@ DropDownListComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0",
|
|
|
6692
6723
|
|
|
6693
6724
|
i18n-selectButtonText="kendo.dropdownlist.selectButtonText|The text set as aria-label on the select button"
|
|
6694
6725
|
selectButtonText="Select"
|
|
6726
|
+
|
|
6727
|
+
i18n-filterInputLabel="kendo.dropdownlist.filterInputLabel|The text set as aria-label on the filter input"
|
|
6728
|
+
filterInputLabel="Filter"
|
|
6729
|
+
|
|
6730
|
+
i18n-popupLabel="kendo.dropdownlist.popupLabel|The label of the popup element that contains the list of options when its role is 'region'"
|
|
6731
|
+
popupLabel="Options list"
|
|
6695
6732
|
>
|
|
6696
6733
|
</ng-container>
|
|
6697
6734
|
<span class="k-input-inner" unselectable="on" [id]="valueLabelId">
|
|
@@ -6727,27 +6764,26 @@ DropDownListComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0",
|
|
|
6727
6764
|
</button>
|
|
6728
6765
|
<ng-template #popupTemplate>
|
|
6729
6766
|
<!--filterable-->
|
|
6730
|
-
|
|
6731
6767
|
<ng-template [ngIf]="filterable">
|
|
6732
6768
|
<div class="k-list-filter" (click)="$event.stopImmediatePropagation()">
|
|
6733
6769
|
<span
|
|
6734
6770
|
class="k-searchbox k-input"
|
|
6735
|
-
[ngClass]="filterInputClasses"
|
|
6736
|
-
>
|
|
6771
|
+
[ngClass]="filterInputClasses">
|
|
6737
6772
|
<kendo-icon-wrapper
|
|
6738
6773
|
class="k-icon"
|
|
6774
|
+
innerCssClass="k-input-icon"
|
|
6739
6775
|
name="search"
|
|
6740
|
-
[svgIcon]="searchIcon"
|
|
6741
|
-
>
|
|
6776
|
+
[svgIcon]="searchIcon">
|
|
6742
6777
|
</kendo-icon-wrapper>
|
|
6743
6778
|
<input
|
|
6744
6779
|
role="searchbox"
|
|
6745
6780
|
aria-autocomplete="list"
|
|
6746
6781
|
aria-haspopup="listbox"
|
|
6747
|
-
[attr.aria-controls]="ariaControls"
|
|
6782
|
+
[attr.aria-controls]="isOpen ? ariaControls : undefined"
|
|
6748
6783
|
[attr.aria-activedescendant]="ariaActivedescendant"
|
|
6749
6784
|
tabindex="-1"
|
|
6750
6785
|
[filterInput]="isFocused && !touchEnabled"
|
|
6786
|
+
[attr.aria-label]="messageFor('filterInputLabel')"
|
|
6751
6787
|
[dir]="direction"
|
|
6752
6788
|
[(ngModel)]="filterText"
|
|
6753
6789
|
class="k-input-inner"
|
|
@@ -6793,9 +6829,9 @@ DropDownListComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0",
|
|
|
6793
6829
|
<!--list-->
|
|
6794
6830
|
<kendo-list
|
|
6795
6831
|
#optionsList
|
|
6832
|
+
[id]="listBoxId"
|
|
6796
6833
|
[size]="size"
|
|
6797
6834
|
[rounded]="rounded"
|
|
6798
|
-
[id]="listBoxId"
|
|
6799
6835
|
[optionPrefix]="optionPrefix"
|
|
6800
6836
|
[data]="data"
|
|
6801
6837
|
[textField]="textField"
|
|
@@ -6807,8 +6843,7 @@ DropDownListComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0",
|
|
|
6807
6843
|
[show]="isOpen"
|
|
6808
6844
|
[virtual]="virtual"
|
|
6809
6845
|
[ariaLive]="ariaLive"
|
|
6810
|
-
(pageChange)="pageChange($event)"
|
|
6811
|
-
>
|
|
6846
|
+
(pageChange)="pageChange($event)">
|
|
6812
6847
|
</kendo-list>
|
|
6813
6848
|
<!--no-data template-->
|
|
6814
6849
|
<div class="k-no-data" *ngIf="data.length === 0">
|
|
@@ -6863,6 +6898,12 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
|
|
|
6863
6898
|
|
|
6864
6899
|
i18n-selectButtonText="kendo.dropdownlist.selectButtonText|The text set as aria-label on the select button"
|
|
6865
6900
|
selectButtonText="Select"
|
|
6901
|
+
|
|
6902
|
+
i18n-filterInputLabel="kendo.dropdownlist.filterInputLabel|The text set as aria-label on the filter input"
|
|
6903
|
+
filterInputLabel="Filter"
|
|
6904
|
+
|
|
6905
|
+
i18n-popupLabel="kendo.dropdownlist.popupLabel|The label of the popup element that contains the list of options when its role is 'region'"
|
|
6906
|
+
popupLabel="Options list"
|
|
6866
6907
|
>
|
|
6867
6908
|
</ng-container>
|
|
6868
6909
|
<span class="k-input-inner" unselectable="on" [id]="valueLabelId">
|
|
@@ -6898,27 +6939,26 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
|
|
|
6898
6939
|
</button>
|
|
6899
6940
|
<ng-template #popupTemplate>
|
|
6900
6941
|
<!--filterable-->
|
|
6901
|
-
|
|
6902
6942
|
<ng-template [ngIf]="filterable">
|
|
6903
6943
|
<div class="k-list-filter" (click)="$event.stopImmediatePropagation()">
|
|
6904
6944
|
<span
|
|
6905
6945
|
class="k-searchbox k-input"
|
|
6906
|
-
[ngClass]="filterInputClasses"
|
|
6907
|
-
>
|
|
6946
|
+
[ngClass]="filterInputClasses">
|
|
6908
6947
|
<kendo-icon-wrapper
|
|
6909
6948
|
class="k-icon"
|
|
6949
|
+
innerCssClass="k-input-icon"
|
|
6910
6950
|
name="search"
|
|
6911
|
-
[svgIcon]="searchIcon"
|
|
6912
|
-
>
|
|
6951
|
+
[svgIcon]="searchIcon">
|
|
6913
6952
|
</kendo-icon-wrapper>
|
|
6914
6953
|
<input
|
|
6915
6954
|
role="searchbox"
|
|
6916
6955
|
aria-autocomplete="list"
|
|
6917
6956
|
aria-haspopup="listbox"
|
|
6918
|
-
[attr.aria-controls]="ariaControls"
|
|
6957
|
+
[attr.aria-controls]="isOpen ? ariaControls : undefined"
|
|
6919
6958
|
[attr.aria-activedescendant]="ariaActivedescendant"
|
|
6920
6959
|
tabindex="-1"
|
|
6921
6960
|
[filterInput]="isFocused && !touchEnabled"
|
|
6961
|
+
[attr.aria-label]="messageFor('filterInputLabel')"
|
|
6922
6962
|
[dir]="direction"
|
|
6923
6963
|
[(ngModel)]="filterText"
|
|
6924
6964
|
class="k-input-inner"
|
|
@@ -6964,9 +7004,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
|
|
|
6964
7004
|
<!--list-->
|
|
6965
7005
|
<kendo-list
|
|
6966
7006
|
#optionsList
|
|
7007
|
+
[id]="listBoxId"
|
|
6967
7008
|
[size]="size"
|
|
6968
7009
|
[rounded]="rounded"
|
|
6969
|
-
[id]="listBoxId"
|
|
6970
7010
|
[optionPrefix]="optionPrefix"
|
|
6971
7011
|
[data]="data"
|
|
6972
7012
|
[textField]="textField"
|
|
@@ -6978,8 +7018,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
|
|
|
6978
7018
|
[show]="isOpen"
|
|
6979
7019
|
[virtual]="virtual"
|
|
6980
7020
|
[ariaLive]="ariaLive"
|
|
6981
|
-
(pageChange)="pageChange($event)"
|
|
6982
|
-
>
|
|
7021
|
+
(pageChange)="pageChange($event)">
|
|
6983
7022
|
</kendo-list>
|
|
6984
7023
|
<!--no-data template-->
|
|
6985
7024
|
<div class="k-no-data" *ngIf="data.length === 0">
|
|
@@ -7010,7 +7049,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
|
|
|
7010
7049
|
}, {
|
|
7011
7050
|
type: Inject,
|
|
7012
7051
|
args: [TOUCH_ENABLED]
|
|
7013
|
-
}] }, { type: i0.Injector }]; }, propDecorators: {
|
|
7052
|
+
}] }, { type: i0.Injector }]; }, propDecorators: { ariaControls: [{
|
|
7053
|
+
type: HostBinding,
|
|
7054
|
+
args: ['attr.aria-controls']
|
|
7055
|
+
}], iconClass: [{
|
|
7014
7056
|
type: Input
|
|
7015
7057
|
}], loading: [{
|
|
7016
7058
|
type: Input
|
|
@@ -7150,9 +7192,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
|
|
|
7150
7192
|
}], isAriaExpanded: [{
|
|
7151
7193
|
type: HostBinding,
|
|
7152
7194
|
args: ['attr.aria-expanded']
|
|
7153
|
-
}], hostAriaControls: [{
|
|
7154
|
-
type: HostBinding,
|
|
7155
|
-
args: ['attr.aria-controls']
|
|
7156
7195
|
}], hostAriaInvalid: [{
|
|
7157
7196
|
type: HostBinding,
|
|
7158
7197
|
args: ['attr.aria-invalid']
|
|
@@ -7614,8 +7653,8 @@ class MultiSelectComponent {
|
|
|
7614
7653
|
* @hidden
|
|
7615
7654
|
*/
|
|
7616
7655
|
this.plusIcon = plusIcon;
|
|
7617
|
-
this.listBoxId = guid()
|
|
7618
|
-
this.tagListId = guid()
|
|
7656
|
+
this.listBoxId = `k-${guid()}`;
|
|
7657
|
+
this.tagListId = `k-${guid()}`;
|
|
7619
7658
|
this.tagPrefix = "tag-" + guid();
|
|
7620
7659
|
this.optionPrefix = "option-" + guid();
|
|
7621
7660
|
this.focusedTagIndex = undefined;
|
|
@@ -7796,6 +7835,12 @@ class MultiSelectComponent {
|
|
|
7796
7835
|
this.subscribeEvents();
|
|
7797
7836
|
this.subscribeTouchEvents();
|
|
7798
7837
|
}
|
|
7838
|
+
/**
|
|
7839
|
+
* @hidden
|
|
7840
|
+
*/
|
|
7841
|
+
get ariaControls() {
|
|
7842
|
+
return this.isOpen ? this.listBoxId : undefined;
|
|
7843
|
+
}
|
|
7799
7844
|
/**
|
|
7800
7845
|
* Focuses a specific item of the MultiSelect based on a provided index.
|
|
7801
7846
|
* If there is a custom item it is positioned at index -1.
|
|
@@ -8920,6 +8965,10 @@ class MultiSelectComponent {
|
|
|
8920
8965
|
});
|
|
8921
8966
|
const popupWrapper = this.popupRef.popupElement;
|
|
8922
8967
|
const { min, max } = this.width;
|
|
8968
|
+
if (!this.appendTo) {
|
|
8969
|
+
this.renderer.setAttribute(popupWrapper, 'role', 'region');
|
|
8970
|
+
this.renderer.setAttribute(popupWrapper, 'aria-label', this.messageFor('popupLabel'));
|
|
8971
|
+
}
|
|
8923
8972
|
popupWrapper.addEventListener('mousedown', this.popupMouseDownHandler);
|
|
8924
8973
|
popupWrapper.style.minWidth = min;
|
|
8925
8974
|
popupWrapper.style.width = max;
|
|
@@ -9012,6 +9061,9 @@ MultiSelectComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", v
|
|
|
9012
9061
|
|
|
9013
9062
|
i18n-clearTitle="kendo.multiselect.clearTitle|The title of the clear button"
|
|
9014
9063
|
clearTitle="clear"
|
|
9064
|
+
|
|
9065
|
+
i18n-popupLabel="kendo.multiselect.popupLabel|The label of the popup element that contains the list of options when its role is 'region'"
|
|
9066
|
+
popupLabel="Options list"
|
|
9015
9067
|
>
|
|
9016
9068
|
</ng-container>
|
|
9017
9069
|
<kendo-taglist
|
|
@@ -9032,10 +9084,11 @@ MultiSelectComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", v
|
|
|
9032
9084
|
>
|
|
9033
9085
|
<kendo-searchbar
|
|
9034
9086
|
#searchbar
|
|
9087
|
+
[ariaExpanded]="isOpen"
|
|
9088
|
+
[ariaControls]="ariaControls"
|
|
9035
9089
|
[id]="focusableId"
|
|
9036
9090
|
[role]="'combobox'"
|
|
9037
9091
|
[tagListId]="tagListId"
|
|
9038
|
-
[listId]="listBoxId"
|
|
9039
9092
|
[isLoading]="loading"
|
|
9040
9093
|
[isFilterable]="filterable"
|
|
9041
9094
|
[activeDescendant]="activeDescendant"
|
|
@@ -9043,7 +9096,6 @@ MultiSelectComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", v
|
|
|
9043
9096
|
[disabled]="disabled"
|
|
9044
9097
|
[readonly]="readonly"
|
|
9045
9098
|
[tabIndex]="tabIndex"
|
|
9046
|
-
[popupOpen]="isOpen"
|
|
9047
9099
|
[placeholder]="placeholder"
|
|
9048
9100
|
(onNavigate)="handleNavigate($event)"
|
|
9049
9101
|
(valueChange)="handleFilter($event)"
|
|
@@ -9147,7 +9199,7 @@ MultiSelectComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", v
|
|
|
9147
9199
|
<kendo-resize-sensor (resize)="onResize()"></kendo-resize-sensor>
|
|
9148
9200
|
</ng-template>
|
|
9149
9201
|
<ng-container #container></ng-container>
|
|
9150
|
-
`, 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", "
|
|
9202
|
+
`, 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"] }] });
|
|
9151
9203
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: MultiSelectComponent, decorators: [{
|
|
9152
9204
|
type: Component,
|
|
9153
9205
|
args: [{
|
|
@@ -9178,6 +9230,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
|
|
|
9178
9230
|
|
|
9179
9231
|
i18n-clearTitle="kendo.multiselect.clearTitle|The title of the clear button"
|
|
9180
9232
|
clearTitle="clear"
|
|
9233
|
+
|
|
9234
|
+
i18n-popupLabel="kendo.multiselect.popupLabel|The label of the popup element that contains the list of options when its role is 'region'"
|
|
9235
|
+
popupLabel="Options list"
|
|
9181
9236
|
>
|
|
9182
9237
|
</ng-container>
|
|
9183
9238
|
<kendo-taglist
|
|
@@ -9198,10 +9253,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
|
|
|
9198
9253
|
>
|
|
9199
9254
|
<kendo-searchbar
|
|
9200
9255
|
#searchbar
|
|
9256
|
+
[ariaExpanded]="isOpen"
|
|
9257
|
+
[ariaControls]="ariaControls"
|
|
9201
9258
|
[id]="focusableId"
|
|
9202
9259
|
[role]="'combobox'"
|
|
9203
9260
|
[tagListId]="tagListId"
|
|
9204
|
-
[listId]="listBoxId"
|
|
9205
9261
|
[isLoading]="loading"
|
|
9206
9262
|
[isFilterable]="filterable"
|
|
9207
9263
|
[activeDescendant]="activeDescendant"
|
|
@@ -9209,7 +9265,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
|
|
|
9209
9265
|
[disabled]="disabled"
|
|
9210
9266
|
[readonly]="readonly"
|
|
9211
9267
|
[tabIndex]="tabIndex"
|
|
9212
|
-
[popupOpen]="isOpen"
|
|
9213
9268
|
[placeholder]="placeholder"
|
|
9214
9269
|
(onNavigate)="handleNavigate($event)"
|
|
9215
9270
|
(valueChange)="handleFilter($event)"
|
|
@@ -9753,13 +9808,16 @@ MultiColumnComboBoxComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12
|
|
|
9753
9808
|
|
|
9754
9809
|
i18n-selectButtonText="kendo.multicolumncombobox.selectButtonText|The title of the select button"
|
|
9755
9810
|
selectButtonText="Select"
|
|
9756
|
-
|
|
9757
|
-
|
|
9811
|
+
|
|
9812
|
+
i18n-popupLabel="kendo.multicolumncombobox.popupLabel|The label of the popup element that contains the list of options when its role is 'region'"
|
|
9813
|
+
popupLabel="Options list"
|
|
9814
|
+
></ng-container>
|
|
9758
9815
|
<kendo-searchbar
|
|
9759
9816
|
#searchbar
|
|
9760
9817
|
[role]="'combobox'"
|
|
9818
|
+
[ariaExpanded]="isOpen"
|
|
9819
|
+
[ariaControls]="ariaControls"
|
|
9761
9820
|
[id]="focusableId"
|
|
9762
|
-
[listId]="listBoxId"
|
|
9763
9821
|
[isLoading]="loading"
|
|
9764
9822
|
[isSuggestable]="suggest"
|
|
9765
9823
|
[isFilterable]="filterable"
|
|
@@ -9769,7 +9827,6 @@ MultiColumnComboBoxComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12
|
|
|
9769
9827
|
[disabled]="disabled"
|
|
9770
9828
|
[readonly]="readonly"
|
|
9771
9829
|
[tabIndex]="tabIndex"
|
|
9772
|
-
[popupOpen]="isOpen"
|
|
9773
9830
|
[placeholder]="placeholder"
|
|
9774
9831
|
(onNavigate)="handleNavigate($event)"
|
|
9775
9832
|
(valueChange)="searchBarChange($event)"
|
|
@@ -9905,7 +9962,6 @@ MultiColumnComboBoxComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12
|
|
|
9905
9962
|
<!--list-->
|
|
9906
9963
|
<kendo-list
|
|
9907
9964
|
#optionsList
|
|
9908
|
-
[id]="listBoxId"
|
|
9909
9965
|
[optionPrefix]="optionPrefix"
|
|
9910
9966
|
[data]="data"
|
|
9911
9967
|
[textField]="textField"
|
|
@@ -9971,7 +10027,7 @@ MultiColumnComboBoxComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12
|
|
|
9971
10027
|
|
|
9972
10028
|
<!-- when the popupSettings.appendTo value is set to 'component', this container is used -->
|
|
9973
10029
|
<ng-container #container></ng-container>
|
|
9974
|
-
`, isInline: true, components: [{ type: SearchBarComponent, selector: "kendo-searchbar", inputs: ["id", "
|
|
10030
|
+
`, 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"] }] });
|
|
9975
10031
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: MultiColumnComboBoxComponent, decorators: [{
|
|
9976
10032
|
type: Component,
|
|
9977
10033
|
args: [{
|
|
@@ -10012,13 +10068,16 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
|
|
|
10012
10068
|
|
|
10013
10069
|
i18n-selectButtonText="kendo.multicolumncombobox.selectButtonText|The title of the select button"
|
|
10014
10070
|
selectButtonText="Select"
|
|
10015
|
-
|
|
10016
|
-
|
|
10071
|
+
|
|
10072
|
+
i18n-popupLabel="kendo.multicolumncombobox.popupLabel|The label of the popup element that contains the list of options when its role is 'region'"
|
|
10073
|
+
popupLabel="Options list"
|
|
10074
|
+
></ng-container>
|
|
10017
10075
|
<kendo-searchbar
|
|
10018
10076
|
#searchbar
|
|
10019
10077
|
[role]="'combobox'"
|
|
10078
|
+
[ariaExpanded]="isOpen"
|
|
10079
|
+
[ariaControls]="ariaControls"
|
|
10020
10080
|
[id]="focusableId"
|
|
10021
|
-
[listId]="listBoxId"
|
|
10022
10081
|
[isLoading]="loading"
|
|
10023
10082
|
[isSuggestable]="suggest"
|
|
10024
10083
|
[isFilterable]="filterable"
|
|
@@ -10028,7 +10087,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
|
|
|
10028
10087
|
[disabled]="disabled"
|
|
10029
10088
|
[readonly]="readonly"
|
|
10030
10089
|
[tabIndex]="tabIndex"
|
|
10031
|
-
[popupOpen]="isOpen"
|
|
10032
10090
|
[placeholder]="placeholder"
|
|
10033
10091
|
(onNavigate)="handleNavigate($event)"
|
|
10034
10092
|
(valueChange)="searchBarChange($event)"
|
|
@@ -10164,7 +10222,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
|
|
|
10164
10222
|
<!--list-->
|
|
10165
10223
|
<kendo-list
|
|
10166
10224
|
#optionsList
|
|
10167
|
-
[id]="listBoxId"
|
|
10168
10225
|
[optionPrefix]="optionPrefix"
|
|
10169
10226
|
[data]="data"
|
|
10170
10227
|
[textField]="textField"
|
|
@@ -10440,10 +10497,10 @@ class DropDownTreeComponent {
|
|
|
10440
10497
|
* Used to associate the value label with the wrapper via aria-describedby.
|
|
10441
10498
|
*/
|
|
10442
10499
|
this.valueLabelId = `k-${guid$1()}`;
|
|
10500
|
+
this.treeViewId = `k-${guid$1()}`;
|
|
10443
10501
|
this._popupSettings = DEFAULT_POPUP_SETTINGS$1;
|
|
10444
10502
|
this._tabindex = 0;
|
|
10445
10503
|
this._isFocused = false;
|
|
10446
|
-
this._popupId = guid$1();
|
|
10447
10504
|
this._size = 'medium';
|
|
10448
10505
|
this._rounded = 'medium';
|
|
10449
10506
|
this._fillMode = 'solid';
|
|
@@ -10474,7 +10531,7 @@ class DropDownTreeComponent {
|
|
|
10474
10531
|
return this.loading ? 'true' : null;
|
|
10475
10532
|
}
|
|
10476
10533
|
get hostAriaControls() {
|
|
10477
|
-
return this.isOpen ? this.
|
|
10534
|
+
return this.isOpen ? this.treeViewId : undefined;
|
|
10478
10535
|
}
|
|
10479
10536
|
get id() {
|
|
10480
10537
|
return this.focusableId;
|
|
@@ -11070,7 +11127,7 @@ class DropDownTreeComponent {
|
|
|
11070
11127
|
onChildrenLoaded() {
|
|
11071
11128
|
setTimeout(() => {
|
|
11072
11129
|
if (this.popupRef) {
|
|
11073
|
-
this._searchableNodes = getSearchableItems(this.
|
|
11130
|
+
this._searchableNodes = getSearchableItems(this.treeViewId, this.popupRef.popupElement);
|
|
11074
11131
|
}
|
|
11075
11132
|
});
|
|
11076
11133
|
}
|
|
@@ -11126,11 +11183,14 @@ class DropDownTreeComponent {
|
|
|
11126
11183
|
this.renderer.setStyle(popupWrapper, 'width', max);
|
|
11127
11184
|
this.renderer.setStyle(popupWrapper, 'height', this.height);
|
|
11128
11185
|
this.renderer.setAttribute(popupWrapper, 'dir', this.direction);
|
|
11129
|
-
|
|
11186
|
+
if (!this.appendTo) {
|
|
11187
|
+
this.renderer.setAttribute(popupWrapper, 'role', 'region');
|
|
11188
|
+
this.renderer.setAttribute(popupWrapper, 'aria-label', this.messageFor('popupLabel'));
|
|
11189
|
+
}
|
|
11130
11190
|
this.popupRef.popupOpen.subscribe(() => {
|
|
11131
11191
|
this.cdr.detectChanges();
|
|
11132
11192
|
this.opened.emit();
|
|
11133
|
-
this._searchableNodes = getSearchableItems(this.
|
|
11193
|
+
this._searchableNodes = getSearchableItems(this.treeViewId, this.popupRef.popupElement);
|
|
11134
11194
|
});
|
|
11135
11195
|
this.popupRef.popupClose.subscribe(() => {
|
|
11136
11196
|
this.closed.emit();
|
|
@@ -11350,6 +11410,12 @@ DropDownTreeComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0",
|
|
|
11350
11410
|
|
|
11351
11411
|
i18n-selectButtonText="kendo.dropdowntree.selectButtonText|The text set as aria-label on the select button"
|
|
11352
11412
|
selectButtonText="Select"
|
|
11413
|
+
|
|
11414
|
+
i18n-filterInputLabel="kendo.dropdowntree.filterInputLabel|The text set as aria-label on the filter input"
|
|
11415
|
+
filterInputLabel="Filter"
|
|
11416
|
+
|
|
11417
|
+
i18n-popupLabel="kendo.dropdowntree.popupLabel|The label of the popup element that contains the list of options when its role is 'region'"
|
|
11418
|
+
popupLabel="Options list"
|
|
11353
11419
|
>
|
|
11354
11420
|
</ng-container>
|
|
11355
11421
|
<span
|
|
@@ -11420,14 +11486,10 @@ DropDownTreeComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0",
|
|
|
11420
11486
|
[filterInput]="filterable && !touchEnabled"
|
|
11421
11487
|
(keydown.arrowdown)="handleKeydown($event)"
|
|
11422
11488
|
(keydown.alt.arrowup)="handleKeydown($event)"
|
|
11489
|
+
[attr.aria-label]="messageFor('filterInputLabel')"
|
|
11423
11490
|
[(ngModel)]="filter"
|
|
11424
11491
|
class="k-input-inner"
|
|
11425
11492
|
role="textbox"
|
|
11426
|
-
aria-haspopup="true"
|
|
11427
|
-
aria-expanded="false"
|
|
11428
|
-
tabindex="0"
|
|
11429
|
-
aria-disabled="false"
|
|
11430
|
-
aria-readonly="false"
|
|
11431
11493
|
[kendoEventsOutsideAngular]="{
|
|
11432
11494
|
blur: handleBlur
|
|
11433
11495
|
}"
|
|
@@ -11444,6 +11506,7 @@ DropDownTreeComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0",
|
|
|
11444
11506
|
</ng-template>
|
|
11445
11507
|
<kendo-treeview
|
|
11446
11508
|
#treeview
|
|
11509
|
+
[attr.id]="treeViewId"
|
|
11447
11510
|
*ngIf="data.length !== 0 && !allNodesHidden"
|
|
11448
11511
|
[size]="size"
|
|
11449
11512
|
[nodes]="data"
|
|
@@ -11533,6 +11596,12 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
|
|
|
11533
11596
|
|
|
11534
11597
|
i18n-selectButtonText="kendo.dropdowntree.selectButtonText|The text set as aria-label on the select button"
|
|
11535
11598
|
selectButtonText="Select"
|
|
11599
|
+
|
|
11600
|
+
i18n-filterInputLabel="kendo.dropdowntree.filterInputLabel|The text set as aria-label on the filter input"
|
|
11601
|
+
filterInputLabel="Filter"
|
|
11602
|
+
|
|
11603
|
+
i18n-popupLabel="kendo.dropdowntree.popupLabel|The label of the popup element that contains the list of options when its role is 'region'"
|
|
11604
|
+
popupLabel="Options list"
|
|
11536
11605
|
>
|
|
11537
11606
|
</ng-container>
|
|
11538
11607
|
<span
|
|
@@ -11603,14 +11672,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
|
|
|
11603
11672
|
[filterInput]="filterable && !touchEnabled"
|
|
11604
11673
|
(keydown.arrowdown)="handleKeydown($event)"
|
|
11605
11674
|
(keydown.alt.arrowup)="handleKeydown($event)"
|
|
11675
|
+
[attr.aria-label]="messageFor('filterInputLabel')"
|
|
11606
11676
|
[(ngModel)]="filter"
|
|
11607
11677
|
class="k-input-inner"
|
|
11608
11678
|
role="textbox"
|
|
11609
|
-
aria-haspopup="true"
|
|
11610
|
-
aria-expanded="false"
|
|
11611
|
-
tabindex="0"
|
|
11612
|
-
aria-disabled="false"
|
|
11613
|
-
aria-readonly="false"
|
|
11614
11679
|
[kendoEventsOutsideAngular]="{
|
|
11615
11680
|
blur: handleBlur
|
|
11616
11681
|
}"
|
|
@@ -11627,6 +11692,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
|
|
|
11627
11692
|
</ng-template>
|
|
11628
11693
|
<kendo-treeview
|
|
11629
11694
|
#treeview
|
|
11695
|
+
[attr.id]="treeViewId"
|
|
11630
11696
|
*ngIf="data.length !== 0 && !allNodesHidden"
|
|
11631
11697
|
[size]="size"
|
|
11632
11698
|
[nodes]="data"
|
|
@@ -12294,6 +12360,7 @@ class MultiSelectTreeComponent {
|
|
|
12294
12360
|
*/
|
|
12295
12361
|
this.xIcon = xIcon;
|
|
12296
12362
|
this.hostClasses = true;
|
|
12363
|
+
this.treeViewId = `k-${guid$1()}`;
|
|
12297
12364
|
this.role = 'combobox';
|
|
12298
12365
|
this.ariaHasPopup = 'tree';
|
|
12299
12366
|
/**
|
|
@@ -12446,7 +12513,7 @@ class MultiSelectTreeComponent {
|
|
|
12446
12513
|
* @hidden
|
|
12447
12514
|
*/
|
|
12448
12515
|
this.allNodesHidden = false;
|
|
12449
|
-
this.tagListId = guid$1()
|
|
12516
|
+
this.tagListId = `k-${guid$1()}`;
|
|
12450
12517
|
this.tagPrefix = "tag-" + guid$1();
|
|
12451
12518
|
this.focusedTagIndex = undefined;
|
|
12452
12519
|
this._value = [];
|
|
@@ -12454,7 +12521,6 @@ class MultiSelectTreeComponent {
|
|
|
12454
12521
|
this._popupSettings = DEFAULT_POPUP_SETTINGS;
|
|
12455
12522
|
this._checkableSettings = DEFAULT_CHECKABLE_SETTINGS;
|
|
12456
12523
|
this._isFocused = false;
|
|
12457
|
-
this._popupId = guid$1();
|
|
12458
12524
|
this._size = 'medium';
|
|
12459
12525
|
this._rounded = 'medium';
|
|
12460
12526
|
this._fillMode = 'solid';
|
|
@@ -12473,7 +12539,7 @@ class MultiSelectTreeComponent {
|
|
|
12473
12539
|
return this.disabled;
|
|
12474
12540
|
}
|
|
12475
12541
|
get hostAriaControls() {
|
|
12476
|
-
return this.isOpen ? this.
|
|
12542
|
+
return this.isOpen ? this.treeViewId : null;
|
|
12477
12543
|
}
|
|
12478
12544
|
get hostAriaAutocomplete() {
|
|
12479
12545
|
return this.filterable ? 'list' : null;
|
|
@@ -13274,16 +13340,19 @@ class MultiSelectTreeComponent {
|
|
|
13274
13340
|
});
|
|
13275
13341
|
const popupWrapper = this.popupRef.popupElement;
|
|
13276
13342
|
const { min, max } = this.width;
|
|
13343
|
+
if (!this.appendTo) {
|
|
13344
|
+
this.renderer.setAttribute(popupWrapper, 'role', 'region');
|
|
13345
|
+
this.renderer.setAttribute(popupWrapper, 'aria-label', this.messageFor('popupLabel'));
|
|
13346
|
+
}
|
|
13277
13347
|
popupWrapper.style.minWidth = min;
|
|
13278
13348
|
popupWrapper.style.width = max;
|
|
13279
13349
|
popupWrapper.style.height = this.height;
|
|
13280
13350
|
this.renderer.setAttribute(popupWrapper, 'dir', this.direction);
|
|
13281
13351
|
this.renderer.setAttribute(this.wrapper.nativeElement, 'aria-expanded', 'true');
|
|
13282
|
-
this.renderer.setAttribute(popupWrapper, 'id', this._popupId);
|
|
13283
13352
|
this.popupRef.popupOpen.subscribe(() => {
|
|
13284
13353
|
this.cdr.detectChanges();
|
|
13285
13354
|
this.opened.emit();
|
|
13286
|
-
this._searchableNodes = getSearchableItems(this.
|
|
13355
|
+
this._searchableNodes = getSearchableItems(this.treeViewId, this.popupRef.popupElement);
|
|
13287
13356
|
});
|
|
13288
13357
|
this.popupRef.popupClose.subscribe(() => {
|
|
13289
13358
|
this.closed.emit();
|
|
@@ -13512,7 +13581,7 @@ class MultiSelectTreeComponent {
|
|
|
13512
13581
|
onChildrenLoaded() {
|
|
13513
13582
|
setTimeout(() => {
|
|
13514
13583
|
if (this.popupRef) {
|
|
13515
|
-
this._searchableNodes = getSearchableItems(this.
|
|
13584
|
+
this._searchableNodes = getSearchableItems(this.treeViewId, this.popupRef.popupElement);
|
|
13516
13585
|
}
|
|
13517
13586
|
});
|
|
13518
13587
|
}
|
|
@@ -13618,6 +13687,12 @@ MultiSelectTreeComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0
|
|
|
13618
13687
|
|
|
13619
13688
|
i18n-checkAllText="kendo.multiselecttree.checkAllText|The text displayed for the check-all checkbox"
|
|
13620
13689
|
checkAllText="Check all"
|
|
13690
|
+
|
|
13691
|
+
i18n-filterInputLabel="kendo.multiselecttree.filterInputLabel|The text set as aria-label on the filter input"
|
|
13692
|
+
filterInputLabel="Filter"
|
|
13693
|
+
|
|
13694
|
+
i18n-popupLabel="kendo.multiselecttree.popupLabel|The label of the popup element that contains the list of options when its role is 'region'"
|
|
13695
|
+
popupLabel="Options list"
|
|
13621
13696
|
>
|
|
13622
13697
|
</ng-container>
|
|
13623
13698
|
<kendo-taglist
|
|
@@ -13684,6 +13759,7 @@ MultiSelectTreeComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0
|
|
|
13684
13759
|
#filterInput
|
|
13685
13760
|
(input)="handleFilterInputChange($event.target)"
|
|
13686
13761
|
[filterInput]="filterable && !touchEnabled"
|
|
13762
|
+
[attr.aria-label]="messageFor('filterInputLabel')"
|
|
13687
13763
|
(keydown)="handleKeydown($event)"
|
|
13688
13764
|
[(ngModel)]="filter"
|
|
13689
13765
|
class="k-input-inner"
|
|
@@ -13740,6 +13816,7 @@ MultiSelectTreeComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0
|
|
|
13740
13816
|
<kendo-treeview
|
|
13741
13817
|
#treeview
|
|
13742
13818
|
[size]="size"
|
|
13819
|
+
[attr.id]="treeViewId"
|
|
13743
13820
|
[nodes]="data"
|
|
13744
13821
|
[style.maxHeight.px]="listHeight"
|
|
13745
13822
|
[animate]="false"
|
|
@@ -13834,6 +13911,12 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
|
|
|
13834
13911
|
|
|
13835
13912
|
i18n-checkAllText="kendo.multiselecttree.checkAllText|The text displayed for the check-all checkbox"
|
|
13836
13913
|
checkAllText="Check all"
|
|
13914
|
+
|
|
13915
|
+
i18n-filterInputLabel="kendo.multiselecttree.filterInputLabel|The text set as aria-label on the filter input"
|
|
13916
|
+
filterInputLabel="Filter"
|
|
13917
|
+
|
|
13918
|
+
i18n-popupLabel="kendo.multiselecttree.popupLabel|The label of the popup element that contains the list of options when its role is 'region'"
|
|
13919
|
+
popupLabel="Options list"
|
|
13837
13920
|
>
|
|
13838
13921
|
</ng-container>
|
|
13839
13922
|
<kendo-taglist
|
|
@@ -13900,6 +13983,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
|
|
|
13900
13983
|
#filterInput
|
|
13901
13984
|
(input)="handleFilterInputChange($event.target)"
|
|
13902
13985
|
[filterInput]="filterable && !touchEnabled"
|
|
13986
|
+
[attr.aria-label]="messageFor('filterInputLabel')"
|
|
13903
13987
|
(keydown)="handleKeydown($event)"
|
|
13904
13988
|
[(ngModel)]="filter"
|
|
13905
13989
|
class="k-input-inner"
|
|
@@ -13956,6 +14040,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
|
|
|
13956
14040
|
<kendo-treeview
|
|
13957
14041
|
#treeview
|
|
13958
14042
|
[size]="size"
|
|
14043
|
+
[attr.id]="treeViewId"
|
|
13959
14044
|
[nodes]="data"
|
|
13960
14045
|
[style.maxHeight.px]="listHeight"
|
|
13961
14046
|
[animate]="false"
|