@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
|
@@ -98,6 +98,7 @@ export class DropDownListComponent {
|
|
|
98
98
|
* @hidden
|
|
99
99
|
*/
|
|
100
100
|
this.caretAltDownIcon = caretAltDownIcon;
|
|
101
|
+
this.listBoxId = `k-${guid()}`;
|
|
101
102
|
/**
|
|
102
103
|
* Sets the height of the options list. By default, `listHeight` is 200px.
|
|
103
104
|
*
|
|
@@ -179,9 +180,8 @@ export class DropDownListComponent {
|
|
|
179
180
|
this.role = 'combobox';
|
|
180
181
|
this.haspopup = 'listbox';
|
|
181
182
|
this.groupIndices = [];
|
|
182
|
-
this.
|
|
183
|
-
this.
|
|
184
|
-
this.filterText = "";
|
|
183
|
+
this.optionPrefix = `k-${guid()}`;
|
|
184
|
+
this.filterText = '';
|
|
185
185
|
this.subs = new Subscription();
|
|
186
186
|
this._isFocused = false;
|
|
187
187
|
this.onTouchedCallback = (_) => { };
|
|
@@ -487,9 +487,6 @@ export class DropDownListComponent {
|
|
|
487
487
|
get isAriaExpanded() {
|
|
488
488
|
return this.ariaExpanded;
|
|
489
489
|
}
|
|
490
|
-
get hostAriaControls() {
|
|
491
|
-
return this.ariaControls;
|
|
492
|
-
}
|
|
493
490
|
get hostAriaInvalid() {
|
|
494
491
|
return this.formControl ? this.formControl?.invalid.toString() : null;
|
|
495
492
|
}
|
|
@@ -830,7 +827,11 @@ export class DropDownListComponent {
|
|
|
830
827
|
popupWrapper.style.minWidth = min;
|
|
831
828
|
popupWrapper.style.width = max;
|
|
832
829
|
popupWrapper.style.height = this.height;
|
|
833
|
-
popupWrapper.setAttribute(
|
|
830
|
+
popupWrapper.setAttribute('dir', this.direction);
|
|
831
|
+
if (!this.appendTo) {
|
|
832
|
+
this.renderer.setAttribute(popupWrapper, 'role', 'region');
|
|
833
|
+
this.renderer.setAttribute(popupWrapper, 'aria-label', this.messageFor('popupLabel'));
|
|
834
|
+
}
|
|
834
835
|
const listBox = popupWrapper.querySelector('ul.k-list-ul');
|
|
835
836
|
const ariaLabel = this.wrapper.nativeElement.getAttribute('aria-labelledby');
|
|
836
837
|
if (ariaLabel) {
|
|
@@ -1222,7 +1223,7 @@ export class DropDownListComponent {
|
|
|
1222
1223
|
const currentValue = this.wrapper.nativeElement.getAttribute('aria-describedby') || '';
|
|
1223
1224
|
const trimmed = currentValue.replace(this.valueLabelId, '').trim();
|
|
1224
1225
|
// reset the value label ID to force readers to read the new value
|
|
1225
|
-
this.valueLabelId = guid()
|
|
1226
|
+
this.valueLabelId = `k-${guid()}`;
|
|
1226
1227
|
// add to the current value - don't replace it
|
|
1227
1228
|
const newValue = `${this.valueLabelId} ${trimmed}`.trim();
|
|
1228
1229
|
this.renderer.setAttribute(this.wrapper.nativeElement, 'aria-describedby', newValue);
|
|
@@ -1240,7 +1241,7 @@ export class DropDownListComponent {
|
|
|
1240
1241
|
}
|
|
1241
1242
|
}
|
|
1242
1243
|
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: i3.SelectionService }, { token: i4.NavigationService }, { token: i5.DisabledItemsService }, { token: i6.DataService }, { token: i0.NgZone }, { token: i0.Renderer2 }, { token: i0.ChangeDetectorRef }, { token: TOUCH_ENABLED, optional: true }, { token: i0.Injector }], target: i0.ɵɵFactoryTarget.Component });
|
|
1243
|
-
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-
|
|
1244
|
+
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: [
|
|
1244
1245
|
DROPDOWNLIST_VALUE_ACCESSOR,
|
|
1245
1246
|
DataService,
|
|
1246
1247
|
SelectionService,
|
|
@@ -1264,6 +1265,12 @@ DropDownListComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0",
|
|
|
1264
1265
|
|
|
1265
1266
|
i18n-selectButtonText="kendo.dropdownlist.selectButtonText|The text set as aria-label on the select button"
|
|
1266
1267
|
selectButtonText="Select"
|
|
1268
|
+
|
|
1269
|
+
i18n-filterInputLabel="kendo.dropdownlist.filterInputLabel|The text set as aria-label on the filter input"
|
|
1270
|
+
filterInputLabel="Filter"
|
|
1271
|
+
|
|
1272
|
+
i18n-popupLabel="kendo.dropdownlist.popupLabel|The label of the popup element that contains the list of options when its role is 'region'"
|
|
1273
|
+
popupLabel="Options list"
|
|
1267
1274
|
>
|
|
1268
1275
|
</ng-container>
|
|
1269
1276
|
<span class="k-input-inner" unselectable="on" [id]="valueLabelId">
|
|
@@ -1299,27 +1306,26 @@ DropDownListComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0",
|
|
|
1299
1306
|
</button>
|
|
1300
1307
|
<ng-template #popupTemplate>
|
|
1301
1308
|
<!--filterable-->
|
|
1302
|
-
|
|
1303
1309
|
<ng-template [ngIf]="filterable">
|
|
1304
1310
|
<div class="k-list-filter" (click)="$event.stopImmediatePropagation()">
|
|
1305
1311
|
<span
|
|
1306
1312
|
class="k-searchbox k-input"
|
|
1307
|
-
[ngClass]="filterInputClasses"
|
|
1308
|
-
>
|
|
1313
|
+
[ngClass]="filterInputClasses">
|
|
1309
1314
|
<kendo-icon-wrapper
|
|
1310
1315
|
class="k-icon"
|
|
1316
|
+
innerCssClass="k-input-icon"
|
|
1311
1317
|
name="search"
|
|
1312
|
-
[svgIcon]="searchIcon"
|
|
1313
|
-
>
|
|
1318
|
+
[svgIcon]="searchIcon">
|
|
1314
1319
|
</kendo-icon-wrapper>
|
|
1315
1320
|
<input
|
|
1316
1321
|
role="searchbox"
|
|
1317
1322
|
aria-autocomplete="list"
|
|
1318
1323
|
aria-haspopup="listbox"
|
|
1319
|
-
[attr.aria-controls]="ariaControls"
|
|
1324
|
+
[attr.aria-controls]="isOpen ? ariaControls : undefined"
|
|
1320
1325
|
[attr.aria-activedescendant]="ariaActivedescendant"
|
|
1321
1326
|
tabindex="-1"
|
|
1322
1327
|
[filterInput]="isFocused && !touchEnabled"
|
|
1328
|
+
[attr.aria-label]="messageFor('filterInputLabel')"
|
|
1323
1329
|
[dir]="direction"
|
|
1324
1330
|
[(ngModel)]="filterText"
|
|
1325
1331
|
class="k-input-inner"
|
|
@@ -1365,9 +1371,9 @@ DropDownListComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0",
|
|
|
1365
1371
|
<!--list-->
|
|
1366
1372
|
<kendo-list
|
|
1367
1373
|
#optionsList
|
|
1374
|
+
[id]="listBoxId"
|
|
1368
1375
|
[size]="size"
|
|
1369
1376
|
[rounded]="rounded"
|
|
1370
|
-
[id]="listBoxId"
|
|
1371
1377
|
[optionPrefix]="optionPrefix"
|
|
1372
1378
|
[data]="data"
|
|
1373
1379
|
[textField]="textField"
|
|
@@ -1379,8 +1385,7 @@ DropDownListComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0",
|
|
|
1379
1385
|
[show]="isOpen"
|
|
1380
1386
|
[virtual]="virtual"
|
|
1381
1387
|
[ariaLive]="ariaLive"
|
|
1382
|
-
(pageChange)="pageChange($event)"
|
|
1383
|
-
>
|
|
1388
|
+
(pageChange)="pageChange($event)">
|
|
1384
1389
|
</kendo-list>
|
|
1385
1390
|
<!--no-data template-->
|
|
1386
1391
|
<div class="k-no-data" *ngIf="data.length === 0">
|
|
@@ -1435,6 +1440,12 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
|
|
|
1435
1440
|
|
|
1436
1441
|
i18n-selectButtonText="kendo.dropdownlist.selectButtonText|The text set as aria-label on the select button"
|
|
1437
1442
|
selectButtonText="Select"
|
|
1443
|
+
|
|
1444
|
+
i18n-filterInputLabel="kendo.dropdownlist.filterInputLabel|The text set as aria-label on the filter input"
|
|
1445
|
+
filterInputLabel="Filter"
|
|
1446
|
+
|
|
1447
|
+
i18n-popupLabel="kendo.dropdownlist.popupLabel|The label of the popup element that contains the list of options when its role is 'region'"
|
|
1448
|
+
popupLabel="Options list"
|
|
1438
1449
|
>
|
|
1439
1450
|
</ng-container>
|
|
1440
1451
|
<span class="k-input-inner" unselectable="on" [id]="valueLabelId">
|
|
@@ -1470,27 +1481,26 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
|
|
|
1470
1481
|
</button>
|
|
1471
1482
|
<ng-template #popupTemplate>
|
|
1472
1483
|
<!--filterable-->
|
|
1473
|
-
|
|
1474
1484
|
<ng-template [ngIf]="filterable">
|
|
1475
1485
|
<div class="k-list-filter" (click)="$event.stopImmediatePropagation()">
|
|
1476
1486
|
<span
|
|
1477
1487
|
class="k-searchbox k-input"
|
|
1478
|
-
[ngClass]="filterInputClasses"
|
|
1479
|
-
>
|
|
1488
|
+
[ngClass]="filterInputClasses">
|
|
1480
1489
|
<kendo-icon-wrapper
|
|
1481
1490
|
class="k-icon"
|
|
1491
|
+
innerCssClass="k-input-icon"
|
|
1482
1492
|
name="search"
|
|
1483
|
-
[svgIcon]="searchIcon"
|
|
1484
|
-
>
|
|
1493
|
+
[svgIcon]="searchIcon">
|
|
1485
1494
|
</kendo-icon-wrapper>
|
|
1486
1495
|
<input
|
|
1487
1496
|
role="searchbox"
|
|
1488
1497
|
aria-autocomplete="list"
|
|
1489
1498
|
aria-haspopup="listbox"
|
|
1490
|
-
[attr.aria-controls]="ariaControls"
|
|
1499
|
+
[attr.aria-controls]="isOpen ? ariaControls : undefined"
|
|
1491
1500
|
[attr.aria-activedescendant]="ariaActivedescendant"
|
|
1492
1501
|
tabindex="-1"
|
|
1493
1502
|
[filterInput]="isFocused && !touchEnabled"
|
|
1503
|
+
[attr.aria-label]="messageFor('filterInputLabel')"
|
|
1494
1504
|
[dir]="direction"
|
|
1495
1505
|
[(ngModel)]="filterText"
|
|
1496
1506
|
class="k-input-inner"
|
|
@@ -1536,9 +1546,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
|
|
|
1536
1546
|
<!--list-->
|
|
1537
1547
|
<kendo-list
|
|
1538
1548
|
#optionsList
|
|
1549
|
+
[id]="listBoxId"
|
|
1539
1550
|
[size]="size"
|
|
1540
1551
|
[rounded]="rounded"
|
|
1541
|
-
[id]="listBoxId"
|
|
1542
1552
|
[optionPrefix]="optionPrefix"
|
|
1543
1553
|
[data]="data"
|
|
1544
1554
|
[textField]="textField"
|
|
@@ -1550,8 +1560,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
|
|
|
1550
1560
|
[show]="isOpen"
|
|
1551
1561
|
[virtual]="virtual"
|
|
1552
1562
|
[ariaLive]="ariaLive"
|
|
1553
|
-
(pageChange)="pageChange($event)"
|
|
1554
|
-
>
|
|
1563
|
+
(pageChange)="pageChange($event)">
|
|
1555
1564
|
</kendo-list>
|
|
1556
1565
|
<!--no-data template-->
|
|
1557
1566
|
<div class="k-no-data" *ngIf="data.length === 0">
|
|
@@ -1582,7 +1591,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
|
|
|
1582
1591
|
}, {
|
|
1583
1592
|
type: Inject,
|
|
1584
1593
|
args: [TOUCH_ENABLED]
|
|
1585
|
-
}] }, { type: i0.Injector }]; }, propDecorators: {
|
|
1594
|
+
}] }, { type: i0.Injector }]; }, propDecorators: { ariaControls: [{
|
|
1595
|
+
type: HostBinding,
|
|
1596
|
+
args: ['attr.aria-controls']
|
|
1597
|
+
}], iconClass: [{
|
|
1586
1598
|
type: Input
|
|
1587
1599
|
}], loading: [{
|
|
1588
1600
|
type: Input
|
|
@@ -1722,9 +1734,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
|
|
|
1722
1734
|
}], isAriaExpanded: [{
|
|
1723
1735
|
type: HostBinding,
|
|
1724
1736
|
args: ['attr.aria-expanded']
|
|
1725
|
-
}], hostAriaControls: [{
|
|
1726
|
-
type: HostBinding,
|
|
1727
|
-
args: ['attr.aria-controls']
|
|
1728
1737
|
}], hostAriaInvalid: [{
|
|
1729
1738
|
type: HostBinding,
|
|
1730
1739
|
args: ['attr.aria-invalid']
|
|
@@ -205,10 +205,10 @@ export class DropDownTreeComponent {
|
|
|
205
205
|
* Used to associate the value label with the wrapper via aria-describedby.
|
|
206
206
|
*/
|
|
207
207
|
this.valueLabelId = `k-${guid()}`;
|
|
208
|
+
this.treeViewId = `k-${guid()}`;
|
|
208
209
|
this._popupSettings = DEFAULT_POPUP_SETTINGS;
|
|
209
210
|
this._tabindex = 0;
|
|
210
211
|
this._isFocused = false;
|
|
211
|
-
this._popupId = guid();
|
|
212
212
|
this._size = 'medium';
|
|
213
213
|
this._rounded = 'medium';
|
|
214
214
|
this._fillMode = 'solid';
|
|
@@ -239,7 +239,7 @@ export class DropDownTreeComponent {
|
|
|
239
239
|
return this.loading ? 'true' : null;
|
|
240
240
|
}
|
|
241
241
|
get hostAriaControls() {
|
|
242
|
-
return this.isOpen ? this.
|
|
242
|
+
return this.isOpen ? this.treeViewId : undefined;
|
|
243
243
|
}
|
|
244
244
|
get id() {
|
|
245
245
|
return this.focusableId;
|
|
@@ -835,7 +835,7 @@ export class DropDownTreeComponent {
|
|
|
835
835
|
onChildrenLoaded() {
|
|
836
836
|
setTimeout(() => {
|
|
837
837
|
if (this.popupRef) {
|
|
838
|
-
this._searchableNodes = getSearchableItems(this.
|
|
838
|
+
this._searchableNodes = getSearchableItems(this.treeViewId, this.popupRef.popupElement);
|
|
839
839
|
}
|
|
840
840
|
});
|
|
841
841
|
}
|
|
@@ -891,11 +891,14 @@ export class DropDownTreeComponent {
|
|
|
891
891
|
this.renderer.setStyle(popupWrapper, 'width', max);
|
|
892
892
|
this.renderer.setStyle(popupWrapper, 'height', this.height);
|
|
893
893
|
this.renderer.setAttribute(popupWrapper, 'dir', this.direction);
|
|
894
|
-
|
|
894
|
+
if (!this.appendTo) {
|
|
895
|
+
this.renderer.setAttribute(popupWrapper, 'role', 'region');
|
|
896
|
+
this.renderer.setAttribute(popupWrapper, 'aria-label', this.messageFor('popupLabel'));
|
|
897
|
+
}
|
|
895
898
|
this.popupRef.popupOpen.subscribe(() => {
|
|
896
899
|
this.cdr.detectChanges();
|
|
897
900
|
this.opened.emit();
|
|
898
|
-
this._searchableNodes = getSearchableItems(this.
|
|
901
|
+
this._searchableNodes = getSearchableItems(this.treeViewId, this.popupRef.popupElement);
|
|
899
902
|
});
|
|
900
903
|
this.popupRef.popupClose.subscribe(() => {
|
|
901
904
|
this.closed.emit();
|
|
@@ -1115,6 +1118,12 @@ DropDownTreeComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0",
|
|
|
1115
1118
|
|
|
1116
1119
|
i18n-selectButtonText="kendo.dropdowntree.selectButtonText|The text set as aria-label on the select button"
|
|
1117
1120
|
selectButtonText="Select"
|
|
1121
|
+
|
|
1122
|
+
i18n-filterInputLabel="kendo.dropdowntree.filterInputLabel|The text set as aria-label on the filter input"
|
|
1123
|
+
filterInputLabel="Filter"
|
|
1124
|
+
|
|
1125
|
+
i18n-popupLabel="kendo.dropdowntree.popupLabel|The label of the popup element that contains the list of options when its role is 'region'"
|
|
1126
|
+
popupLabel="Options list"
|
|
1118
1127
|
>
|
|
1119
1128
|
</ng-container>
|
|
1120
1129
|
<span
|
|
@@ -1185,14 +1194,10 @@ DropDownTreeComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0",
|
|
|
1185
1194
|
[filterInput]="filterable && !touchEnabled"
|
|
1186
1195
|
(keydown.arrowdown)="handleKeydown($event)"
|
|
1187
1196
|
(keydown.alt.arrowup)="handleKeydown($event)"
|
|
1197
|
+
[attr.aria-label]="messageFor('filterInputLabel')"
|
|
1188
1198
|
[(ngModel)]="filter"
|
|
1189
1199
|
class="k-input-inner"
|
|
1190
1200
|
role="textbox"
|
|
1191
|
-
aria-haspopup="true"
|
|
1192
|
-
aria-expanded="false"
|
|
1193
|
-
tabindex="0"
|
|
1194
|
-
aria-disabled="false"
|
|
1195
|
-
aria-readonly="false"
|
|
1196
1201
|
[kendoEventsOutsideAngular]="{
|
|
1197
1202
|
blur: handleBlur
|
|
1198
1203
|
}"
|
|
@@ -1209,6 +1214,7 @@ DropDownTreeComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0",
|
|
|
1209
1214
|
</ng-template>
|
|
1210
1215
|
<kendo-treeview
|
|
1211
1216
|
#treeview
|
|
1217
|
+
[attr.id]="treeViewId"
|
|
1212
1218
|
*ngIf="data.length !== 0 && !allNodesHidden"
|
|
1213
1219
|
[size]="size"
|
|
1214
1220
|
[nodes]="data"
|
|
@@ -1298,6 +1304,12 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
|
|
|
1298
1304
|
|
|
1299
1305
|
i18n-selectButtonText="kendo.dropdowntree.selectButtonText|The text set as aria-label on the select button"
|
|
1300
1306
|
selectButtonText="Select"
|
|
1307
|
+
|
|
1308
|
+
i18n-filterInputLabel="kendo.dropdowntree.filterInputLabel|The text set as aria-label on the filter input"
|
|
1309
|
+
filterInputLabel="Filter"
|
|
1310
|
+
|
|
1311
|
+
i18n-popupLabel="kendo.dropdowntree.popupLabel|The label of the popup element that contains the list of options when its role is 'region'"
|
|
1312
|
+
popupLabel="Options list"
|
|
1301
1313
|
>
|
|
1302
1314
|
</ng-container>
|
|
1303
1315
|
<span
|
|
@@ -1368,14 +1380,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
|
|
|
1368
1380
|
[filterInput]="filterable && !touchEnabled"
|
|
1369
1381
|
(keydown.arrowdown)="handleKeydown($event)"
|
|
1370
1382
|
(keydown.alt.arrowup)="handleKeydown($event)"
|
|
1383
|
+
[attr.aria-label]="messageFor('filterInputLabel')"
|
|
1371
1384
|
[(ngModel)]="filter"
|
|
1372
1385
|
class="k-input-inner"
|
|
1373
1386
|
role="textbox"
|
|
1374
|
-
aria-haspopup="true"
|
|
1375
|
-
aria-expanded="false"
|
|
1376
|
-
tabindex="0"
|
|
1377
|
-
aria-disabled="false"
|
|
1378
|
-
aria-readonly="false"
|
|
1379
1387
|
[kendoEventsOutsideAngular]="{
|
|
1380
1388
|
blur: handleBlur
|
|
1381
1389
|
}"
|
|
@@ -1392,6 +1400,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
|
|
|
1392
1400
|
</ng-template>
|
|
1393
1401
|
<kendo-treeview
|
|
1394
1402
|
#treeview
|
|
1403
|
+
[attr.id]="treeViewId"
|
|
1395
1404
|
*ngIf="data.length !== 0 && !allNodesHidden"
|
|
1396
1405
|
[size]="size"
|
|
1397
1406
|
[nodes]="data"
|
|
@@ -77,6 +77,7 @@ export class MultiSelectTreeComponent {
|
|
|
77
77
|
*/
|
|
78
78
|
this.xIcon = xIcon;
|
|
79
79
|
this.hostClasses = true;
|
|
80
|
+
this.treeViewId = `k-${guid()}`;
|
|
80
81
|
this.role = 'combobox';
|
|
81
82
|
this.ariaHasPopup = 'tree';
|
|
82
83
|
/**
|
|
@@ -229,7 +230,7 @@ export class MultiSelectTreeComponent {
|
|
|
229
230
|
* @hidden
|
|
230
231
|
*/
|
|
231
232
|
this.allNodesHidden = false;
|
|
232
|
-
this.tagListId = guid()
|
|
233
|
+
this.tagListId = `k-${guid()}`;
|
|
233
234
|
this.tagPrefix = "tag-" + guid();
|
|
234
235
|
this.focusedTagIndex = undefined;
|
|
235
236
|
this._value = [];
|
|
@@ -237,7 +238,6 @@ export class MultiSelectTreeComponent {
|
|
|
237
238
|
this._popupSettings = DEFAULT_POPUP_SETTINGS;
|
|
238
239
|
this._checkableSettings = DEFAULT_CHECKABLE_SETTINGS;
|
|
239
240
|
this._isFocused = false;
|
|
240
|
-
this._popupId = guid();
|
|
241
241
|
this._size = 'medium';
|
|
242
242
|
this._rounded = 'medium';
|
|
243
243
|
this._fillMode = 'solid';
|
|
@@ -256,7 +256,7 @@ export class MultiSelectTreeComponent {
|
|
|
256
256
|
return this.disabled;
|
|
257
257
|
}
|
|
258
258
|
get hostAriaControls() {
|
|
259
|
-
return this.isOpen ? this.
|
|
259
|
+
return this.isOpen ? this.treeViewId : null;
|
|
260
260
|
}
|
|
261
261
|
get hostAriaAutocomplete() {
|
|
262
262
|
return this.filterable ? 'list' : null;
|
|
@@ -1057,16 +1057,19 @@ export class MultiSelectTreeComponent {
|
|
|
1057
1057
|
});
|
|
1058
1058
|
const popupWrapper = this.popupRef.popupElement;
|
|
1059
1059
|
const { min, max } = this.width;
|
|
1060
|
+
if (!this.appendTo) {
|
|
1061
|
+
this.renderer.setAttribute(popupWrapper, 'role', 'region');
|
|
1062
|
+
this.renderer.setAttribute(popupWrapper, 'aria-label', this.messageFor('popupLabel'));
|
|
1063
|
+
}
|
|
1060
1064
|
popupWrapper.style.minWidth = min;
|
|
1061
1065
|
popupWrapper.style.width = max;
|
|
1062
1066
|
popupWrapper.style.height = this.height;
|
|
1063
1067
|
this.renderer.setAttribute(popupWrapper, 'dir', this.direction);
|
|
1064
1068
|
this.renderer.setAttribute(this.wrapper.nativeElement, 'aria-expanded', 'true');
|
|
1065
|
-
this.renderer.setAttribute(popupWrapper, 'id', this._popupId);
|
|
1066
1069
|
this.popupRef.popupOpen.subscribe(() => {
|
|
1067
1070
|
this.cdr.detectChanges();
|
|
1068
1071
|
this.opened.emit();
|
|
1069
|
-
this._searchableNodes = getSearchableItems(this.
|
|
1072
|
+
this._searchableNodes = getSearchableItems(this.treeViewId, this.popupRef.popupElement);
|
|
1070
1073
|
});
|
|
1071
1074
|
this.popupRef.popupClose.subscribe(() => {
|
|
1072
1075
|
this.closed.emit();
|
|
@@ -1295,7 +1298,7 @@ export class MultiSelectTreeComponent {
|
|
|
1295
1298
|
onChildrenLoaded() {
|
|
1296
1299
|
setTimeout(() => {
|
|
1297
1300
|
if (this.popupRef) {
|
|
1298
|
-
this._searchableNodes = getSearchableItems(this.
|
|
1301
|
+
this._searchableNodes = getSearchableItems(this.treeViewId, this.popupRef.popupElement);
|
|
1299
1302
|
}
|
|
1300
1303
|
});
|
|
1301
1304
|
}
|
|
@@ -1401,6 +1404,12 @@ MultiSelectTreeComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0
|
|
|
1401
1404
|
|
|
1402
1405
|
i18n-checkAllText="kendo.multiselecttree.checkAllText|The text displayed for the check-all checkbox"
|
|
1403
1406
|
checkAllText="Check all"
|
|
1407
|
+
|
|
1408
|
+
i18n-filterInputLabel="kendo.multiselecttree.filterInputLabel|The text set as aria-label on the filter input"
|
|
1409
|
+
filterInputLabel="Filter"
|
|
1410
|
+
|
|
1411
|
+
i18n-popupLabel="kendo.multiselecttree.popupLabel|The label of the popup element that contains the list of options when its role is 'region'"
|
|
1412
|
+
popupLabel="Options list"
|
|
1404
1413
|
>
|
|
1405
1414
|
</ng-container>
|
|
1406
1415
|
<kendo-taglist
|
|
@@ -1467,6 +1476,7 @@ MultiSelectTreeComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0
|
|
|
1467
1476
|
#filterInput
|
|
1468
1477
|
(input)="handleFilterInputChange($event.target)"
|
|
1469
1478
|
[filterInput]="filterable && !touchEnabled"
|
|
1479
|
+
[attr.aria-label]="messageFor('filterInputLabel')"
|
|
1470
1480
|
(keydown)="handleKeydown($event)"
|
|
1471
1481
|
[(ngModel)]="filter"
|
|
1472
1482
|
class="k-input-inner"
|
|
@@ -1523,6 +1533,7 @@ MultiSelectTreeComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0
|
|
|
1523
1533
|
<kendo-treeview
|
|
1524
1534
|
#treeview
|
|
1525
1535
|
[size]="size"
|
|
1536
|
+
[attr.id]="treeViewId"
|
|
1526
1537
|
[nodes]="data"
|
|
1527
1538
|
[style.maxHeight.px]="listHeight"
|
|
1528
1539
|
[animate]="false"
|
|
@@ -1617,6 +1628,12 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
|
|
|
1617
1628
|
|
|
1618
1629
|
i18n-checkAllText="kendo.multiselecttree.checkAllText|The text displayed for the check-all checkbox"
|
|
1619
1630
|
checkAllText="Check all"
|
|
1631
|
+
|
|
1632
|
+
i18n-filterInputLabel="kendo.multiselecttree.filterInputLabel|The text set as aria-label on the filter input"
|
|
1633
|
+
filterInputLabel="Filter"
|
|
1634
|
+
|
|
1635
|
+
i18n-popupLabel="kendo.multiselecttree.popupLabel|The label of the popup element that contains the list of options when its role is 'region'"
|
|
1636
|
+
popupLabel="Options list"
|
|
1620
1637
|
>
|
|
1621
1638
|
</ng-container>
|
|
1622
1639
|
<kendo-taglist
|
|
@@ -1683,6 +1700,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
|
|
|
1683
1700
|
#filterInput
|
|
1684
1701
|
(input)="handleFilterInputChange($event.target)"
|
|
1685
1702
|
[filterInput]="filterable && !touchEnabled"
|
|
1703
|
+
[attr.aria-label]="messageFor('filterInputLabel')"
|
|
1686
1704
|
(keydown)="handleKeydown($event)"
|
|
1687
1705
|
[(ngModel)]="filter"
|
|
1688
1706
|
class="k-input-inner"
|
|
@@ -1739,6 +1757,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
|
|
|
1739
1757
|
<kendo-treeview
|
|
1740
1758
|
#treeview
|
|
1741
1759
|
[size]="size"
|
|
1760
|
+
[attr.id]="treeViewId"
|
|
1742
1761
|
[nodes]="data"
|
|
1743
1762
|
[style.maxHeight.px]="listHeight"
|
|
1744
1763
|
[animate]="false"
|
|
@@ -100,8 +100,8 @@ export class MultiSelectComponent {
|
|
|
100
100
|
* @hidden
|
|
101
101
|
*/
|
|
102
102
|
this.plusIcon = plusIcon;
|
|
103
|
-
this.listBoxId = guid()
|
|
104
|
-
this.tagListId = guid()
|
|
103
|
+
this.listBoxId = `k-${guid()}`;
|
|
104
|
+
this.tagListId = `k-${guid()}`;
|
|
105
105
|
this.tagPrefix = "tag-" + guid();
|
|
106
106
|
this.optionPrefix = "option-" + guid();
|
|
107
107
|
this.focusedTagIndex = undefined;
|
|
@@ -282,6 +282,12 @@ export class MultiSelectComponent {
|
|
|
282
282
|
this.subscribeEvents();
|
|
283
283
|
this.subscribeTouchEvents();
|
|
284
284
|
}
|
|
285
|
+
/**
|
|
286
|
+
* @hidden
|
|
287
|
+
*/
|
|
288
|
+
get ariaControls() {
|
|
289
|
+
return this.isOpen ? this.listBoxId : undefined;
|
|
290
|
+
}
|
|
285
291
|
/**
|
|
286
292
|
* Focuses a specific item of the MultiSelect based on a provided index.
|
|
287
293
|
* If there is a custom item it is positioned at index -1.
|
|
@@ -1406,6 +1412,10 @@ export class MultiSelectComponent {
|
|
|
1406
1412
|
});
|
|
1407
1413
|
const popupWrapper = this.popupRef.popupElement;
|
|
1408
1414
|
const { min, max } = this.width;
|
|
1415
|
+
if (!this.appendTo) {
|
|
1416
|
+
this.renderer.setAttribute(popupWrapper, 'role', 'region');
|
|
1417
|
+
this.renderer.setAttribute(popupWrapper, 'aria-label', this.messageFor('popupLabel'));
|
|
1418
|
+
}
|
|
1409
1419
|
popupWrapper.addEventListener('mousedown', this.popupMouseDownHandler);
|
|
1410
1420
|
popupWrapper.style.minWidth = min;
|
|
1411
1421
|
popupWrapper.style.width = max;
|
|
@@ -1498,6 +1508,9 @@ MultiSelectComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", v
|
|
|
1498
1508
|
|
|
1499
1509
|
i18n-clearTitle="kendo.multiselect.clearTitle|The title of the clear button"
|
|
1500
1510
|
clearTitle="clear"
|
|
1511
|
+
|
|
1512
|
+
i18n-popupLabel="kendo.multiselect.popupLabel|The label of the popup element that contains the list of options when its role is 'region'"
|
|
1513
|
+
popupLabel="Options list"
|
|
1501
1514
|
>
|
|
1502
1515
|
</ng-container>
|
|
1503
1516
|
<kendo-taglist
|
|
@@ -1518,10 +1531,11 @@ MultiSelectComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", v
|
|
|
1518
1531
|
>
|
|
1519
1532
|
<kendo-searchbar
|
|
1520
1533
|
#searchbar
|
|
1534
|
+
[ariaExpanded]="isOpen"
|
|
1535
|
+
[ariaControls]="ariaControls"
|
|
1521
1536
|
[id]="focusableId"
|
|
1522
1537
|
[role]="'combobox'"
|
|
1523
1538
|
[tagListId]="tagListId"
|
|
1524
|
-
[listId]="listBoxId"
|
|
1525
1539
|
[isLoading]="loading"
|
|
1526
1540
|
[isFilterable]="filterable"
|
|
1527
1541
|
[activeDescendant]="activeDescendant"
|
|
@@ -1529,7 +1543,6 @@ MultiSelectComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", v
|
|
|
1529
1543
|
[disabled]="disabled"
|
|
1530
1544
|
[readonly]="readonly"
|
|
1531
1545
|
[tabIndex]="tabIndex"
|
|
1532
|
-
[popupOpen]="isOpen"
|
|
1533
1546
|
[placeholder]="placeholder"
|
|
1534
1547
|
(onNavigate)="handleNavigate($event)"
|
|
1535
1548
|
(valueChange)="handleFilter($event)"
|
|
@@ -1633,7 +1646,7 @@ MultiSelectComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", v
|
|
|
1633
1646
|
<kendo-resize-sensor (resize)="onResize()"></kendo-resize-sensor>
|
|
1634
1647
|
</ng-template>
|
|
1635
1648
|
<ng-container #container></ng-container>
|
|
1636
|
-
`, isInline: true, components: [{ type: i7.TagListComponent, selector: "kendo-taglist", inputs: ["tags", "textField", "valueField", "valueDepth", "focused", "template", "groupTemplate", "disabled", "tagPrefix", "id", "size", "rounded", "fillMode", "disabledIndices"], outputs: ["removeTag"] }, { type: i8.SearchBarComponent, selector: "kendo-searchbar", inputs: ["id", "
|
|
1649
|
+
`, isInline: true, components: [{ type: i7.TagListComponent, selector: "kendo-taglist", inputs: ["tags", "textField", "valueField", "valueDepth", "focused", "template", "groupTemplate", "disabled", "tagPrefix", "id", "size", "rounded", "fillMode", "disabledIndices"], outputs: ["removeTag"] }, { type: i8.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: i9.IconWrapperComponent, selector: "kendo-icon-wrapper", inputs: ["name", "svgIcon", "innerCssClass", "customFontClass"], exportAs: ["kendoIconWrapper"] }, { type: i10.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: i11.ResizeSensorComponent, selector: "kendo-resize-sensor", inputs: ["rateLimit"], outputs: ["resize"] }], directives: [{ type: i12.LocalizedMessagesDirective, selector: "\n [kendoDropDownListLocalizedMessages],\n [kendoDropDownTreeLocalizedMessages],\n [kendoComboBoxLocalizedMessages],\n [kendoMultiColumnComboBoxLocalizedMessages],\n [kendoAutoCompleteLocalizedMessages],\n [kendoMultiSelectLocalizedMessages],\n [kendoMultiSelectTreeLocalizedMessages]\n " }, { type: i13.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i14.TemplateContextDirective, selector: "[templateContext]", inputs: ["templateContext"] }, { type: i13.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i15.SelectableDirective, selector: "[kendoDropDownsSelectable]", inputs: ["index", "checkboxes", "height", "multipleSelection"] }] });
|
|
1637
1650
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: MultiSelectComponent, decorators: [{
|
|
1638
1651
|
type: Component,
|
|
1639
1652
|
args: [{
|
|
@@ -1664,6 +1677,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
|
|
|
1664
1677
|
|
|
1665
1678
|
i18n-clearTitle="kendo.multiselect.clearTitle|The title of the clear button"
|
|
1666
1679
|
clearTitle="clear"
|
|
1680
|
+
|
|
1681
|
+
i18n-popupLabel="kendo.multiselect.popupLabel|The label of the popup element that contains the list of options when its role is 'region'"
|
|
1682
|
+
popupLabel="Options list"
|
|
1667
1683
|
>
|
|
1668
1684
|
</ng-container>
|
|
1669
1685
|
<kendo-taglist
|
|
@@ -1684,10 +1700,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
|
|
|
1684
1700
|
>
|
|
1685
1701
|
<kendo-searchbar
|
|
1686
1702
|
#searchbar
|
|
1703
|
+
[ariaExpanded]="isOpen"
|
|
1704
|
+
[ariaControls]="ariaControls"
|
|
1687
1705
|
[id]="focusableId"
|
|
1688
1706
|
[role]="'combobox'"
|
|
1689
1707
|
[tagListId]="tagListId"
|
|
1690
|
-
[listId]="listBoxId"
|
|
1691
1708
|
[isLoading]="loading"
|
|
1692
1709
|
[isFilterable]="filterable"
|
|
1693
1710
|
[activeDescendant]="activeDescendant"
|
|
@@ -1695,7 +1712,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
|
|
|
1695
1712
|
[disabled]="disabled"
|
|
1696
1713
|
[readonly]="readonly"
|
|
1697
1714
|
[tabIndex]="tabIndex"
|
|
1698
|
-
[popupOpen]="isOpen"
|
|
1699
1715
|
[placeholder]="placeholder"
|
|
1700
1716
|
(onNavigate)="handleNavigate($event)"
|
|
1701
1717
|
(valueChange)="handleFilter($event)"
|
|
@@ -9,7 +9,7 @@ export const packageMetadata = {
|
|
|
9
9
|
name: '@progress/kendo-angular-dropdowns',
|
|
10
10
|
productName: 'Kendo UI for Angular',
|
|
11
11
|
productCodes: ['KENDOUIANGULAR', 'KENDOUICOMPLETE'],
|
|
12
|
-
publishDate:
|
|
13
|
-
version: '11.
|
|
12
|
+
publishDate: 1677586118,
|
|
13
|
+
version: '11.3.0-develop.10',
|
|
14
14
|
licensingDocsUrl: 'https://www.telerik.com/kendo-angular-ui/my-license/'
|
|
15
15
|
};
|