@progress/kendo-angular-dropdowns 6.0.1-dev.202201201244 → 6.0.2-dev.202202221531
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/dist/cdn/js/kendo-angular-dropdowns.js +2 -2
- package/dist/cdn/main.js +1 -1
- package/dist/es/autocomplete/autocomplete.component.js +9 -22
- package/dist/es/comboboxes/combobox.component.js +9 -22
- package/dist/es/comboboxes/multicolumncombobox.component.js +1 -1
- package/dist/es/common/localization/messages.js +4 -0
- package/dist/es/common/searchbar.component.js +8 -1
- package/dist/es/common/taglist.component.js +1 -1
- package/dist/es/dropdownlist/dropdownlist.component.js +10 -16
- package/dist/es/dropdowntrees/checked-state/base-check.directive.js +19 -5
- package/dist/es/dropdowntrees/dropdowntree.component.js +1 -1
- package/dist/es/dropdowntrees/multiselecttree.component.js +13 -1
- package/dist/es/multiselect/multiselect.component.js +28 -23
- package/dist/es/package-metadata.js +1 -1
- package/dist/es2015/autocomplete/autocomplete.component.d.ts +4 -4
- package/dist/es2015/autocomplete/autocomplete.component.js +10 -18
- package/dist/es2015/comboboxes/combobox.component.d.ts +4 -4
- package/dist/es2015/comboboxes/combobox.component.js +14 -19
- package/dist/es2015/comboboxes/multicolumncombobox.component.js +3 -2
- package/dist/es2015/common/localization/messages.d.ts +4 -0
- package/dist/es2015/common/localization/messages.js +4 -0
- package/dist/es2015/common/searchbar.component.d.ts +1 -0
- package/dist/es2015/common/searchbar.component.js +4 -1
- package/dist/es2015/common/taglist.component.js +0 -3
- package/dist/es2015/dropdownlist/dropdownlist.component.d.ts +4 -3
- package/dist/es2015/dropdownlist/dropdownlist.component.js +15 -16
- package/dist/es2015/dropdowntrees/checked-state/base-check.directive.d.ts +7 -0
- package/dist/es2015/dropdowntrees/checked-state/base-check.directive.js +19 -5
- package/dist/es2015/dropdowntrees/dropdowntree.component.js +5 -0
- package/dist/es2015/dropdowntrees/multiselecttree.component.d.ts +1 -0
- package/dist/es2015/dropdowntrees/multiselecttree.component.js +9 -1
- package/dist/es2015/index.metadata.json +1 -1
- package/dist/es2015/multiselect/multiselect.component.d.ts +8 -5
- package/dist/es2015/multiselect/multiselect.component.js +27 -21
- package/dist/es2015/package-metadata.js +1 -1
- package/dist/fesm2015/index.js +110 -86
- package/dist/fesm5/index.js +103 -93
- package/dist/npm/autocomplete/autocomplete.component.js +9 -22
- package/dist/npm/comboboxes/combobox.component.js +9 -22
- package/dist/npm/comboboxes/multicolumncombobox.component.js +1 -1
- package/dist/npm/common/localization/messages.js +4 -0
- package/dist/npm/common/searchbar.component.js +8 -1
- package/dist/npm/common/taglist.component.js +1 -1
- package/dist/npm/dropdownlist/dropdownlist.component.js +10 -16
- package/dist/npm/dropdowntrees/checked-state/base-check.directive.js +18 -4
- package/dist/npm/dropdowntrees/dropdowntree.component.js +1 -1
- package/dist/npm/dropdowntrees/multiselecttree.component.js +13 -1
- package/dist/npm/multiselect/multiselect.component.js +28 -23
- package/dist/npm/package-metadata.js +1 -1
- package/dist/systemjs/kendo-angular-dropdowns.js +1 -1
- package/package.json +3 -5
- package/schematics/ngAdd/index.js +1 -1
|
@@ -120,7 +120,8 @@ var MultiSelectComponent = /** @class */ (function () {
|
|
|
120
120
|
*/
|
|
121
121
|
this.clearButton = true;
|
|
122
122
|
/**
|
|
123
|
-
* A user-defined callback function which receives an array of selected data items and maps them to an array of tags
|
|
123
|
+
* A user-defined callback function which receives an array of selected data items and maps them to an array of tags
|
|
124
|
+
* ([see examples]({% slug summarytagmode_multiselect %}#toc-rendering-of-tags)).
|
|
124
125
|
*
|
|
125
126
|
* @param { Any[] } dataItems - The selected data items from the list.
|
|
126
127
|
* @returns { Any[] } - The tags that will be rendered by the component.
|
|
@@ -235,6 +236,7 @@ var MultiSelectComponent = /** @class */ (function () {
|
|
|
235
236
|
*/
|
|
236
237
|
this.removeTag = new EventEmitter();
|
|
237
238
|
this.hostClasses = true;
|
|
239
|
+
this.role = 'combobox';
|
|
238
240
|
this.initialized = false;
|
|
239
241
|
this._size = 'medium';
|
|
240
242
|
this._rounded = 'medium';
|
|
@@ -611,6 +613,13 @@ var MultiSelectComponent = /** @class */ (function () {
|
|
|
611
613
|
enumerable: true,
|
|
612
614
|
configurable: true
|
|
613
615
|
});
|
|
616
|
+
Object.defineProperty(MultiSelectComponent.prototype, "isAriaExpanded", {
|
|
617
|
+
get: function () {
|
|
618
|
+
return this.isOpen;
|
|
619
|
+
},
|
|
620
|
+
enumerable: true,
|
|
621
|
+
configurable: true
|
|
622
|
+
});
|
|
614
623
|
/**
|
|
615
624
|
* @hidden
|
|
616
625
|
*/
|
|
@@ -695,19 +704,12 @@ var MultiSelectComponent = /** @class */ (function () {
|
|
|
695
704
|
Object.defineProperty(MultiSelectComponent.prototype, "noDataLabel", {
|
|
696
705
|
get: function () {
|
|
697
706
|
if (this.dataService.itemsCount === 0) {
|
|
698
|
-
return this.noDataText;
|
|
707
|
+
return this.messageFor('noDataText');
|
|
699
708
|
}
|
|
700
709
|
},
|
|
701
710
|
enumerable: true,
|
|
702
711
|
configurable: true
|
|
703
712
|
});
|
|
704
|
-
Object.defineProperty(MultiSelectComponent.prototype, "clearTitle", {
|
|
705
|
-
get: function () {
|
|
706
|
-
return this.localization.get('clearTitle');
|
|
707
|
-
},
|
|
708
|
-
enumerable: true,
|
|
709
|
-
configurable: true
|
|
710
|
-
});
|
|
711
713
|
Object.defineProperty(MultiSelectComponent.prototype, "clearButtonVisiblity", {
|
|
712
714
|
get: function () {
|
|
713
715
|
if (this.touchEnabled) {
|
|
@@ -927,9 +929,8 @@ var MultiSelectComponent = /** @class */ (function () {
|
|
|
927
929
|
.changes.subscribe(function (_a) {
|
|
928
930
|
var rtl = _a.rtl;
|
|
929
931
|
_this.direction = rtl ? 'rtl' : 'ltr';
|
|
930
|
-
_this.
|
|
932
|
+
_this.cdr.markForCheck();
|
|
931
933
|
});
|
|
932
|
-
this.setMessages();
|
|
933
934
|
this.setState(this.value);
|
|
934
935
|
this.setComponentClasses();
|
|
935
936
|
this.initialized = true;
|
|
@@ -953,7 +954,6 @@ var MultiSelectComponent = /** @class */ (function () {
|
|
|
953
954
|
MultiSelectComponent.prototype.ngOnDestroy = function () {
|
|
954
955
|
this._toggle(false);
|
|
955
956
|
this.unsubscribeEvents();
|
|
956
|
-
clearTimeout(this.messagesTimeout);
|
|
957
957
|
};
|
|
958
958
|
/**
|
|
959
959
|
* Toggles the visibility of the popup
|
|
@@ -991,6 +991,12 @@ var MultiSelectComponent = /** @class */ (function () {
|
|
|
991
991
|
this.text = "";
|
|
992
992
|
this.value = [];
|
|
993
993
|
};
|
|
994
|
+
/**
|
|
995
|
+
* @hidden
|
|
996
|
+
*/
|
|
997
|
+
MultiSelectComponent.prototype.messageFor = function (key) {
|
|
998
|
+
return this.localization.get(key);
|
|
999
|
+
};
|
|
994
1000
|
// NG MODEL BINDINGS
|
|
995
1001
|
/**
|
|
996
1002
|
* @hidden
|
|
@@ -1435,16 +1441,6 @@ var MultiSelectComponent = /** @class */ (function () {
|
|
|
1435
1441
|
setTimeout(function () { return _this._zone.run(f); });
|
|
1436
1442
|
});
|
|
1437
1443
|
};
|
|
1438
|
-
MultiSelectComponent.prototype.setMessages = function () {
|
|
1439
|
-
var _this = this;
|
|
1440
|
-
this._zone.runOutsideAngular(function () {
|
|
1441
|
-
clearTimeout(_this.messagesTimeout);
|
|
1442
|
-
_this.messagesTimeout = setTimeout(function () {
|
|
1443
|
-
_this.noDataText = _this.localization.get('noDataText');
|
|
1444
|
-
_this.cdr.detectChanges();
|
|
1445
|
-
});
|
|
1446
|
-
});
|
|
1447
|
-
};
|
|
1448
1444
|
MultiSelectComponent.prototype.setComponentClasses = function () {
|
|
1449
1445
|
if (this.size) {
|
|
1450
1446
|
this.renderer.addClass(this.wrapper.nativeElement, getSizeClass('input', this.size));
|
|
@@ -1681,6 +1677,15 @@ var MultiSelectComponent = /** @class */ (function () {
|
|
|
1681
1677
|
tslib_1.__metadata("design:type", Boolean),
|
|
1682
1678
|
tslib_1.__metadata("design:paramtypes", [])
|
|
1683
1679
|
], MultiSelectComponent.prototype, "isLoading", null);
|
|
1680
|
+
tslib_1.__decorate([
|
|
1681
|
+
HostBinding('attr.role'),
|
|
1682
|
+
tslib_1.__metadata("design:type", String)
|
|
1683
|
+
], MultiSelectComponent.prototype, "role", void 0);
|
|
1684
|
+
tslib_1.__decorate([
|
|
1685
|
+
HostBinding('attr.aria-expanded'),
|
|
1686
|
+
tslib_1.__metadata("design:type", Boolean),
|
|
1687
|
+
tslib_1.__metadata("design:paramtypes", [])
|
|
1688
|
+
], MultiSelectComponent.prototype, "isAriaExpanded", null);
|
|
1684
1689
|
tslib_1.__decorate([
|
|
1685
1690
|
HostListener('mousedown', ['$event']),
|
|
1686
1691
|
tslib_1.__metadata("design:type", Function),
|
|
@@ -1709,7 +1714,7 @@ var MultiSelectComponent = /** @class */ (function () {
|
|
|
1709
1714
|
}
|
|
1710
1715
|
],
|
|
1711
1716
|
selector: 'kendo-multiselect',
|
|
1712
|
-
template: "\n <ng-container kendoMultiSelectLocalizedMessages\n i18n-noDataText=\"kendo.multiselect.noDataText|The text displayed in the popup when there are no items\"\n noDataText=\"NO DATA FOUND\"\n\n i18n-clearTitle=\"kendo.
|
|
1717
|
+
template: "\n <ng-container kendoMultiSelectLocalizedMessages\n i18n-noDataText=\"kendo.multiselect.noDataText|The text displayed in the popup when there are no items\"\n noDataText=\"NO DATA FOUND\"\n\n i18n-clearTitle=\"kendo.multiselect.clearTitle|The title of the clear button\"\n clearTitle=\"clear\"\n >\n </ng-container>\n <kendo-taglist\n [size]=\"size\"\n [rounded]=\"rounded\"\n [fillMode]=\"fillMode\"\n [id]=\"tagListId\"\n [tags]=\"tags\"\n [textField]=\"textField\"\n [valueField]=\"valueField\"\n [focused]=\"focusedTagIndex\"\n [disabled]=\"disabled\"\n [template]=\"tagTemplate\"\n [groupTemplate]=\"groupTagTemplate\"\n [tagPrefix]=\"tagPrefix\"\n [disabledIndices]=\"disabledIndices\"\n (removeTag)=\"handleRemoveTag($event)\"\n >\n <kendo-searchbar\n #searchbar\n [id]=\"focusableId\"\n [role]=\"'textbox'\"\n [tagListId]=\"tagListId\"\n [activeDescendant]=\"activeDescendant\"\n [noDataLabel]=\"noDataLabel\"\n [userInput]=\"text\"\n [disabled]=\"disabled\"\n [readonly]=\"readonly\"\n [tabIndex]=\"tabIndex\"\n [popupOpen]=\"isOpen\"\n [placeholder]=\"placeholder\"\n (onNavigate)=\"handleNavigate($event)\"\n (valueChange)=\"handleFilter($event)\"\n (onBlur)=\"onSearchBarBlur()\"\n (onFocus)=\"onSearchBarFocus()\"\n >\n </kendo-searchbar>\n </kendo-taglist>\n\n <span\n *ngIf=\"!loading && !readonly && clearButton && (tags?.length || text?.length)\"\n class=\"k-clear-value\"\n [style.visibility]=\"clearButtonVisiblity\"\n [attr.title]=\"messageFor('clearTitle')\"\n role=\"button\"\n tabindex=\"-1\"\n (mousedown)=\"clearAll($event)\"\n >\n <span class=\"k-icon k-i-x\"></span>\n </span>\n <span\n *ngIf=\"loading\"\n class=\"k-icon k-i-loading\"\n >\n </span>\n <ng-template #popupTemplate>\n <!--header template-->\n <ng-template *ngIf=\"headerTemplate\"\n [templateContext]=\"{\n templateRef: headerTemplate.templateRef\n }\">\n </ng-template>\n <!--custom item template-->\n <div\n *ngIf=\"allowCustom && text\"\n class=\"k-list\"\n [ngClass]=\"customItemSizeClass\"\n >\n <div class=\"k-list-item k-custom-item\" kendoDropDownsSelectable [multipleSelection]=\"true\" [index]=\"-1\">\n <ng-template *ngIf=\"customItemTemplate;else default_custom_item_template\"\n [templateContext]=\"{\n templateRef: customItemTemplate.templateRef,\n $implicit: text\n }\">\n </ng-template>\n <ng-template #default_custom_item_template>{{ text }}</ng-template>\n <span class=\"k-icon k-i-plus\" style=\"float: right\"></span>\n </div>\n </div>\n <!--list-->\n <kendo-list\n #optionsList\n [size]=\"size\"\n [rounded]=\"rounded\"\n [id]=\"listBoxId\"\n [optionPrefix]=\"optionPrefix\"\n [data]=\"data\"\n [textField]=\"textField\"\n [valueField]=\"valueField\"\n [height]=\"listHeight\"\n [template]=\"template\"\n [groupTemplate]=\"groupTemplate\"\n [fixedGroupTemplate]=\"fixedGroupTemplate\"\n [show]=\"isOpen\"\n [multipleSelection]=\"true\"\n [virtual]=\"virtual\"\n (pageChange)=\"pageChange($event)\"\n [checkboxes]=\"checkboxes\"\n >\n </kendo-list>\n <!--no data template-->\n <div class=\"k-no-data\" *ngIf=\"data.length === 0\">\n <ng-template [ngIf]=\"noDataTemplate\"\n [templateContext]=\"{\n templateRef: noDataTemplate ? noDataTemplate.templateRef : undefined\n }\">\n </ng-template>\n <ng-template [ngIf]=\"!noDataTemplate\">\n <div>{{ messageFor('noDataText') }}</div>\n </ng-template>\n </div>\n <!--footer template-->\n <ng-template *ngIf=\"footerTemplate\"\n [templateContext]=\"{\n templateRef: footerTemplate.templateRef\n }\">\n </ng-template>\n </ng-template>\n <ng-template [ngIf]=\"isOpen\">\n <kendo-resize-sensor (resize)=\"onResize()\"></kendo-resize-sensor>\n </ng-template>\n <ng-container #container></ng-container>\n "
|
|
1713
1718
|
}),
|
|
1714
1719
|
tslib_1.__param(11, Optional()), tslib_1.__param(11, Inject(TOUCH_ENABLED)),
|
|
1715
1720
|
tslib_1.__metadata("design:paramtypes", [ElementRef,
|
|
@@ -9,7 +9,7 @@ export var packageMetadata = {
|
|
|
9
9
|
name: '@progress/kendo-angular-dropdowns',
|
|
10
10
|
productName: 'Kendo UI for Angular',
|
|
11
11
|
productCodes: ['KENDOUIANGULAR', 'KENDOUICOMPLETE'],
|
|
12
|
-
publishDate:
|
|
12
|
+
publishDate: 1645543730,
|
|
13
13
|
version: '',
|
|
14
14
|
licensingDocsUrl: 'https://www.telerik.com/kendo-angular-ui/my-license/?utm_medium=product&utm_source=kendoangular&utm_campaign=kendo-ui-angular-purchase-license-keys-warning'
|
|
15
15
|
};
|
|
@@ -87,7 +87,6 @@ export declare class AutoCompleteComponent implements ControlValueAccessor, OnDe
|
|
|
87
87
|
togglePopup(open: boolean): void;
|
|
88
88
|
readonly activeDescendant: string;
|
|
89
89
|
readonly noDataLabel: string;
|
|
90
|
-
readonly clearTitle: string;
|
|
91
90
|
/**
|
|
92
91
|
* Defines whether the first match from the suggestions list will be automatically focused.
|
|
93
92
|
* By default, `highlightFirst` is set to `true`.
|
|
@@ -276,7 +275,6 @@ export declare class AutoCompleteComponent implements ControlValueAccessor, OnDe
|
|
|
276
275
|
listBoxId: string;
|
|
277
276
|
optionPrefix: string;
|
|
278
277
|
popupRef: PopupRef;
|
|
279
|
-
noDataText: string;
|
|
280
278
|
protected onChangeCallback: Function;
|
|
281
279
|
protected onTouchedCallback: Function;
|
|
282
280
|
constructor(localization: LocalizationService, dataService: DataService, popupService: PopupService, selectionService: SelectionService, navigationService: NavigationService, disabledItemsService: DisabledItemsService, _zone: NgZone, cdr: ChangeDetectorRef, renderer: Renderer2, hostElement: ElementRef, touchEnabled: boolean);
|
|
@@ -289,6 +287,10 @@ export declare class AutoCompleteComponent implements ControlValueAccessor, OnDe
|
|
|
289
287
|
* the model will not update automatically and the `selectionChange` and `valueChange` events will not be fired.
|
|
290
288
|
*/
|
|
291
289
|
reset(): void;
|
|
290
|
+
/**
|
|
291
|
+
* @hidden
|
|
292
|
+
*/
|
|
293
|
+
messageFor(key: string): string;
|
|
292
294
|
/**
|
|
293
295
|
* @hidden
|
|
294
296
|
*/
|
|
@@ -370,7 +372,6 @@ export declare class AutoCompleteComponent implements ControlValueAccessor, OnDe
|
|
|
370
372
|
private closeSubscription;
|
|
371
373
|
private localizationChangeSubscription;
|
|
372
374
|
private touchstartDisposeHandler;
|
|
373
|
-
private messagesTimeout;
|
|
374
375
|
private wrapper;
|
|
375
376
|
private _isFocused;
|
|
376
377
|
private direction;
|
|
@@ -388,6 +389,5 @@ export declare class AutoCompleteComponent implements ControlValueAccessor, OnDe
|
|
|
388
389
|
private triggerPopupEvents;
|
|
389
390
|
private firstFocusableIndex;
|
|
390
391
|
private findIndexPredicate;
|
|
391
|
-
private setMessages;
|
|
392
392
|
private setComponentClasses;
|
|
393
393
|
}
|
|
@@ -265,12 +265,9 @@ let AutoCompleteComponent = AutoCompleteComponent_1 = class AutoCompleteComponen
|
|
|
265
265
|
}
|
|
266
266
|
get noDataLabel() {
|
|
267
267
|
if (this.data.length === 0) {
|
|
268
|
-
return this.noDataText;
|
|
268
|
+
return this.messageFor('noDataText');
|
|
269
269
|
}
|
|
270
270
|
}
|
|
271
|
-
get clearTitle() {
|
|
272
|
-
return this.localization.get('clearTitle');
|
|
273
|
-
}
|
|
274
271
|
/**
|
|
275
272
|
* Sets the data of the AutoComplete.
|
|
276
273
|
*
|
|
@@ -439,15 +436,13 @@ let AutoCompleteComponent = AutoCompleteComponent_1 = class AutoCompleteComponen
|
|
|
439
436
|
.changes
|
|
440
437
|
.subscribe(({ rtl }) => {
|
|
441
438
|
this.direction = rtl ? 'rtl' : 'ltr';
|
|
442
|
-
this.
|
|
439
|
+
this.cdr.detectChanges();
|
|
443
440
|
});
|
|
444
|
-
this.setMessages();
|
|
445
441
|
this.setComponentClasses();
|
|
446
442
|
}
|
|
447
443
|
ngOnDestroy() {
|
|
448
444
|
this.destroyPopup();
|
|
449
445
|
this.unsubscribeEvents();
|
|
450
|
-
clearTimeout(this.messagesTimeout);
|
|
451
446
|
if (this.localizationChangeSubscription) {
|
|
452
447
|
this.localizationChangeSubscription.unsubscribe();
|
|
453
448
|
}
|
|
@@ -467,6 +462,12 @@ let AutoCompleteComponent = AutoCompleteComponent_1 = class AutoCompleteComponen
|
|
|
467
462
|
reset() {
|
|
468
463
|
this.value = NO_VALUE;
|
|
469
464
|
}
|
|
465
|
+
/**
|
|
466
|
+
* @hidden
|
|
467
|
+
*/
|
|
468
|
+
messageFor(key) {
|
|
469
|
+
return this.localization.get(key);
|
|
470
|
+
}
|
|
470
471
|
/**
|
|
471
472
|
* @hidden
|
|
472
473
|
*/
|
|
@@ -861,15 +862,6 @@ let AutoCompleteComponent = AutoCompleteComponent_1 = class AutoCompleteComponen
|
|
|
861
862
|
};
|
|
862
863
|
}
|
|
863
864
|
}
|
|
864
|
-
setMessages() {
|
|
865
|
-
this._zone.runOutsideAngular(() => {
|
|
866
|
-
clearTimeout(this.messagesTimeout);
|
|
867
|
-
this.messagesTimeout = setTimeout(() => {
|
|
868
|
-
this.noDataText = this.localization.get('noDataText');
|
|
869
|
-
this.cdr.detectChanges();
|
|
870
|
-
});
|
|
871
|
-
});
|
|
872
|
-
}
|
|
873
865
|
setComponentClasses() {
|
|
874
866
|
if (this.size) {
|
|
875
867
|
this.renderer.addClass(this.wrapper, getSizeClass('input', this.size));
|
|
@@ -1122,7 +1114,7 @@ AutoCompleteComponent = AutoCompleteComponent_1 = tslib_1.__decorate([
|
|
|
1122
1114
|
*ngIf="!loading && !readonly && (clearButton && text?.length)"
|
|
1123
1115
|
class="k-clear-value"
|
|
1124
1116
|
[style.visibility]="clearButtonVisiblity"
|
|
1125
|
-
[attr.title]="clearTitle"
|
|
1117
|
+
[attr.title]="messageFor('clearTitle')"
|
|
1126
1118
|
role="button"
|
|
1127
1119
|
tabindex="-1"
|
|
1128
1120
|
(click)="clearValue($event)"
|
|
@@ -1165,7 +1157,7 @@ AutoCompleteComponent = AutoCompleteComponent_1 = tslib_1.__decorate([
|
|
|
1165
1157
|
}">
|
|
1166
1158
|
</ng-template>
|
|
1167
1159
|
<ng-template [ngIf]="!noDataTemplate">
|
|
1168
|
-
<div>{{ noDataText }}</div>
|
|
1160
|
+
<div>{{ messageFor('noDataText') }}</div>
|
|
1169
1161
|
</ng-template>
|
|
1170
1162
|
</div>
|
|
1171
1163
|
<!--footer template-->
|
|
@@ -68,7 +68,6 @@ export declare class ComboBoxComponent implements ControlValueAccessor, OnDestro
|
|
|
68
68
|
togglePopup(open: boolean): void;
|
|
69
69
|
readonly activeDescendant: string;
|
|
70
70
|
readonly noDataLabel: string;
|
|
71
|
-
readonly clearTitle: string;
|
|
72
71
|
readonly appendTo: ViewContainerRef;
|
|
73
72
|
dataItem: any;
|
|
74
73
|
selected: any[];
|
|
@@ -332,7 +331,6 @@ export declare class ComboBoxComponent implements ControlValueAccessor, OnDestro
|
|
|
332
331
|
listBoxId: string;
|
|
333
332
|
optionPrefix: string;
|
|
334
333
|
popupRef: PopupRef;
|
|
335
|
-
noDataText: string;
|
|
336
334
|
protected readonly popupWidth: {
|
|
337
335
|
min: string;
|
|
338
336
|
max: string;
|
|
@@ -349,7 +347,6 @@ export declare class ComboBoxComponent implements ControlValueAccessor, OnDestro
|
|
|
349
347
|
*/
|
|
350
348
|
protected defaultVirtualPageSize: number;
|
|
351
349
|
private valueSubscription;
|
|
352
|
-
private messagesTimeout;
|
|
353
350
|
private _filtering;
|
|
354
351
|
private _text;
|
|
355
352
|
private filterText;
|
|
@@ -416,6 +413,10 @@ export declare class ComboBoxComponent implements ControlValueAccessor, OnDestro
|
|
|
416
413
|
* should be rendered in the input when the component is not focused.
|
|
417
414
|
*/
|
|
418
415
|
isEmpty(): boolean;
|
|
416
|
+
/**
|
|
417
|
+
* @hidden
|
|
418
|
+
*/
|
|
419
|
+
messageFor(key: string): string;
|
|
419
420
|
/**
|
|
420
421
|
* @hidden
|
|
421
422
|
*/
|
|
@@ -519,7 +520,6 @@ export declare class ComboBoxComponent implements ControlValueAccessor, OnDestro
|
|
|
519
520
|
private _toggle;
|
|
520
521
|
private triggerPopupEvents;
|
|
521
522
|
private clearFilter;
|
|
522
|
-
private setMessages;
|
|
523
523
|
private subscribeTouchEvents;
|
|
524
524
|
private attachSelectClickHandler;
|
|
525
525
|
private setComponentClasses;
|
|
@@ -272,12 +272,9 @@ let ComboBoxComponent = ComboBoxComponent_1 = class ComboBoxComponent {
|
|
|
272
272
|
}
|
|
273
273
|
get noDataLabel() {
|
|
274
274
|
if (this.data.length === 0) {
|
|
275
|
-
return this.noDataText;
|
|
275
|
+
return this.messageFor('noDataText');
|
|
276
276
|
}
|
|
277
277
|
}
|
|
278
|
-
get clearTitle() {
|
|
279
|
-
return this.localization.get('clearTitle');
|
|
280
|
-
}
|
|
281
278
|
get appendTo() {
|
|
282
279
|
const { appendTo } = this.popupSettings;
|
|
283
280
|
if (!appendTo || appendTo === 'root') {
|
|
@@ -495,7 +492,6 @@ let ComboBoxComponent = ComboBoxComponent_1 = class ComboBoxComponent {
|
|
|
495
492
|
this.createValueStream();
|
|
496
493
|
this.subscribeTouchEvents();
|
|
497
494
|
this.attachSelectClickHandler();
|
|
498
|
-
this.setMessages();
|
|
499
495
|
this.setComponentClasses();
|
|
500
496
|
}
|
|
501
497
|
createValueStream() {
|
|
@@ -602,7 +598,7 @@ let ComboBoxComponent = ComboBoxComponent_1 = class ComboBoxComponent {
|
|
|
602
598
|
this.subs.add(this.localization
|
|
603
599
|
.changes.subscribe(({ rtl }) => {
|
|
604
600
|
this.direction = rtl ? 'rtl' : 'ltr';
|
|
605
|
-
this.
|
|
601
|
+
this.cdr.detectChanges();
|
|
606
602
|
}));
|
|
607
603
|
this.subs.add(merge(this.navigationService.up, this.navigationService.down, this.navigationService.home, this.navigationService.end)
|
|
608
604
|
.pipe(filter((event) => isPresent(event.index)))
|
|
@@ -635,7 +631,6 @@ let ComboBoxComponent = ComboBoxComponent_1 = class ComboBoxComponent {
|
|
|
635
631
|
}
|
|
636
632
|
ngOnDestroy() {
|
|
637
633
|
this.destroyPopup();
|
|
638
|
-
clearTimeout(this.messagesTimeout);
|
|
639
634
|
this.subs.unsubscribe();
|
|
640
635
|
if (isPresent(this.valueSubscription)) {
|
|
641
636
|
this.valueSubscription.unsubscribe();
|
|
@@ -732,6 +727,12 @@ let ComboBoxComponent = ComboBoxComponent_1 = class ComboBoxComponent {
|
|
|
732
727
|
const valueEmpty = !isPresent(this.value) || isEmptyString(this.value);
|
|
733
728
|
return textEmpty && valueEmpty;
|
|
734
729
|
}
|
|
730
|
+
/**
|
|
731
|
+
* @hidden
|
|
732
|
+
*/
|
|
733
|
+
messageFor(key) {
|
|
734
|
+
return this.localization.get(key);
|
|
735
|
+
}
|
|
735
736
|
/**
|
|
736
737
|
* @hidden
|
|
737
738
|
*/
|
|
@@ -1214,15 +1215,6 @@ let ComboBoxComponent = ComboBoxComponent_1 = class ComboBoxComponent {
|
|
|
1214
1215
|
this.filterText = '';
|
|
1215
1216
|
this.filterChange.emit(this.filterText);
|
|
1216
1217
|
}
|
|
1217
|
-
setMessages() {
|
|
1218
|
-
this.zone.runOutsideAngular(() => {
|
|
1219
|
-
clearTimeout(this.messagesTimeout);
|
|
1220
|
-
this.messagesTimeout = setTimeout(() => {
|
|
1221
|
-
this.noDataText = this.localization.get('noDataText');
|
|
1222
|
-
this.cdr.detectChanges();
|
|
1223
|
-
});
|
|
1224
|
-
});
|
|
1225
|
-
}
|
|
1226
1218
|
subscribeTouchEvents() {
|
|
1227
1219
|
if (!isDocumentAvailable() || !this.touchEnabled) {
|
|
1228
1220
|
return;
|
|
@@ -1498,6 +1490,9 @@ ComboBoxComponent = ComboBoxComponent_1 = tslib_1.__decorate([
|
|
|
1498
1490
|
|
|
1499
1491
|
i18n-clearTitle="kendo.combobox.clearTitle|The title of the clear button"
|
|
1500
1492
|
clearTitle="clear"
|
|
1493
|
+
|
|
1494
|
+
i18n-selectButtonText="kendo.combobox.selectButtonText|The text set as aria-label on the select button"
|
|
1495
|
+
selectButtonText="Select"
|
|
1501
1496
|
>
|
|
1502
1497
|
</ng-container>
|
|
1503
1498
|
<kendo-searchbar #searchbar
|
|
@@ -1523,7 +1518,7 @@ ComboBoxComponent = ComboBoxComponent_1 = tslib_1.__decorate([
|
|
|
1523
1518
|
class="k-clear-value"
|
|
1524
1519
|
[style.visibility]="clearButtonVisiblity"
|
|
1525
1520
|
aria-hidden="true"
|
|
1526
|
-
[attr.title]="clearTitle"
|
|
1521
|
+
[attr.title]="messageFor('clearTitle')"
|
|
1527
1522
|
(click)="clearValue($event)"
|
|
1528
1523
|
[kendoEventsOutsideAngular]="{
|
|
1529
1524
|
mousedown: preventEventDefault
|
|
@@ -1533,11 +1528,11 @@ ComboBoxComponent = ComboBoxComponent_1 = tslib_1.__decorate([
|
|
|
1533
1528
|
</span>
|
|
1534
1529
|
<button
|
|
1535
1530
|
#select
|
|
1536
|
-
aria-hidden="true"
|
|
1537
1531
|
unselectable="on"
|
|
1538
1532
|
type="button"
|
|
1539
1533
|
class="k-input-button k-button k-icon-button"
|
|
1540
1534
|
[ngClass]="selectButtonClasses"
|
|
1535
|
+
[attr.aria-label]="messageFor('selectButtonText')"
|
|
1541
1536
|
[kendoEventsOutsideAngular]="{
|
|
1542
1537
|
mousedown: preventEventDefault
|
|
1543
1538
|
}"
|
|
@@ -1578,7 +1573,7 @@ ComboBoxComponent = ComboBoxComponent_1 = tslib_1.__decorate([
|
|
|
1578
1573
|
}">
|
|
1579
1574
|
</ng-template>
|
|
1580
1575
|
<ng-template [ngIf]="!noDataTemplate">
|
|
1581
|
-
<div>{{ noDataText }}</div>
|
|
1576
|
+
<div>{{ messageFor('noDataText') }}</div>
|
|
1582
1577
|
</ng-template>
|
|
1583
1578
|
</div>
|
|
1584
1579
|
<!--footer template-->
|
|
@@ -222,7 +222,7 @@ MultiColumnComboBoxComponent = MultiColumnComboBoxComponent_1 = tslib_1.__decora
|
|
|
222
222
|
class="k-clear-value"
|
|
223
223
|
[style.visibility]="clearButtonVisiblity"
|
|
224
224
|
aria-hidden="true"
|
|
225
|
-
[attr.title]="clearTitle"
|
|
225
|
+
[attr.title]="messageFor('clearTitle')"
|
|
226
226
|
(click)="clearValue($event)"
|
|
227
227
|
[kendoEventsOutsideAngular]="{
|
|
228
228
|
mousedown: preventEventDefault
|
|
@@ -239,6 +239,7 @@ MultiColumnComboBoxComponent = MultiColumnComboBoxComponent_1 = tslib_1.__decora
|
|
|
239
239
|
type="button"
|
|
240
240
|
class="k-input-button k-button k-icon-button"
|
|
241
241
|
[ngClass]="selectButtonClasses"
|
|
242
|
+
[attr.aria-label]="messageFor('selectButtonText')"
|
|
242
243
|
[kendoEventsOutsideAngular]="{
|
|
243
244
|
mousedown: preventEventDefault
|
|
244
245
|
}"
|
|
@@ -363,7 +364,7 @@ MultiColumnComboBoxComponent = MultiColumnComboBoxComponent_1 = tslib_1.__decora
|
|
|
363
364
|
>
|
|
364
365
|
</ng-template>
|
|
365
366
|
<ng-template [ngIf]="!noDataTemplate">
|
|
366
|
-
<div>{{ noDataText }}</div>
|
|
367
|
+
<div>{{ messageFor('noDataText') }}</div>
|
|
367
368
|
</ng-template>
|
|
368
369
|
</div>
|
|
369
370
|
|
|
@@ -32,6 +32,7 @@ export declare class SearchBarComponent implements OnChanges, OnInit, OnDestroy
|
|
|
32
32
|
searchBarClass: boolean;
|
|
33
33
|
readonly value: string;
|
|
34
34
|
placeholder: string;
|
|
35
|
+
readonly ariaExpanded: boolean;
|
|
35
36
|
private _userInput;
|
|
36
37
|
private _previousValue;
|
|
37
38
|
private _placeholder;
|
|
@@ -43,6 +43,9 @@ let SearchBarComponent = class SearchBarComponent {
|
|
|
43
43
|
get placeholder() {
|
|
44
44
|
return this._placeholder;
|
|
45
45
|
}
|
|
46
|
+
get ariaExpanded() {
|
|
47
|
+
return this.role === 'combobox' ? this.popupOpen : null;
|
|
48
|
+
}
|
|
46
49
|
ngOnInit() {
|
|
47
50
|
this.localizationChangeSubscription = this.localization
|
|
48
51
|
.changes.subscribe(({ rtl }) => this.direction = rtl ? 'rtl' : 'ltr');
|
|
@@ -242,7 +245,7 @@ SearchBarComponent = tslib_1.__decorate([
|
|
|
242
245
|
[attr.aria-disabled]="disabled"
|
|
243
246
|
[attr.aria-readonly]="readonly"
|
|
244
247
|
aria-haspopup="listbox"
|
|
245
|
-
[attr.aria-expanded]="
|
|
248
|
+
[attr.aria-expanded]="ariaExpanded"
|
|
246
249
|
[attr.aria-owns]="listId"
|
|
247
250
|
[attr.aria-describedby]="tagListId"
|
|
248
251
|
[attr.aria-activedescendant]="activeDescendant"
|
|
@@ -164,11 +164,8 @@ TagListComponent = tslib_1.__decorate([
|
|
|
164
164
|
template: `
|
|
165
165
|
<div
|
|
166
166
|
*ngFor="let tag of tags; let index = index;"
|
|
167
|
-
role="option"
|
|
168
167
|
[attr.id]="itemId(tag, index)"
|
|
169
168
|
[attr.aria-hidden]="tagAriaHidden(index)"
|
|
170
|
-
aria-selected="true"
|
|
171
|
-
[attr.aria-setsize]="tags?.length"
|
|
172
169
|
class="k-chip"
|
|
173
170
|
[ngClass]="{
|
|
174
171
|
'k-focus': index === focused,
|
|
@@ -313,7 +313,6 @@ export declare class DropDownListComponent implements ControlValueAccessor, OnDe
|
|
|
313
313
|
direction: Direction;
|
|
314
314
|
dataItem: any;
|
|
315
315
|
popupRef: PopupRef;
|
|
316
|
-
noDataText: string;
|
|
317
316
|
protected onTouchedCallback: Function;
|
|
318
317
|
protected onChangeCallback: Function;
|
|
319
318
|
private popupMouseDownHandler;
|
|
@@ -341,7 +340,6 @@ export declare class DropDownListComponent implements ControlValueAccessor, OnDe
|
|
|
341
340
|
private _popupSettings;
|
|
342
341
|
private _virtualSettings;
|
|
343
342
|
private localizationChangesSubscription;
|
|
344
|
-
private messagesTimeout;
|
|
345
343
|
private _size;
|
|
346
344
|
private _rounded;
|
|
347
345
|
private _fillMode;
|
|
@@ -406,6 +404,10 @@ export declare class DropDownListComponent implements ControlValueAccessor, OnDe
|
|
|
406
404
|
* the model will not update automatically and the `selectionChange` and `valueChange` events will not be fired.
|
|
407
405
|
*/
|
|
408
406
|
reset(): void;
|
|
407
|
+
/**
|
|
408
|
+
* @hidden
|
|
409
|
+
*/
|
|
410
|
+
messageFor(key: string): string;
|
|
409
411
|
/**
|
|
410
412
|
* @hidden
|
|
411
413
|
*/
|
|
@@ -498,7 +500,6 @@ export declare class DropDownListComponent implements ControlValueAccessor, OnDe
|
|
|
498
500
|
* @hidden
|
|
499
501
|
*/
|
|
500
502
|
pageChange(event: PageChangeEvent): void;
|
|
501
|
-
private setMessages;
|
|
502
503
|
private assignAriaDescribedBy;
|
|
503
504
|
private setComponentClasses;
|
|
504
505
|
}
|
|
@@ -211,14 +211,14 @@ let DropDownListComponent = DropDownListComponent_1 = class DropDownListComponen
|
|
|
211
211
|
return this.listBoxId;
|
|
212
212
|
}
|
|
213
213
|
get ariaActivedescendant() {
|
|
214
|
-
if (!isPresent(this.dataItem)) {
|
|
214
|
+
if (!isPresent(this.dataItem) || !this.isOpen) {
|
|
215
215
|
return;
|
|
216
216
|
}
|
|
217
217
|
return this.optionPrefix + "-" + getter(this.dataItem, this.valueField);
|
|
218
218
|
}
|
|
219
219
|
get noDataLabel() {
|
|
220
220
|
if (this.dataService.itemsCount === 0) {
|
|
221
|
-
return this.noDataText;
|
|
221
|
+
return this.messageFor('noDataText');
|
|
222
222
|
}
|
|
223
223
|
}
|
|
224
224
|
get appendTo() {
|
|
@@ -532,9 +532,8 @@ let DropDownListComponent = DropDownListComponent_1 = class DropDownListComponen
|
|
|
532
532
|
this.localizationChangesSubscription = this.localization
|
|
533
533
|
.changes.subscribe(({ rtl }) => {
|
|
534
534
|
this.direction = rtl ? 'rtl' : 'ltr';
|
|
535
|
-
this.
|
|
535
|
+
this.cdr.detectChanges();
|
|
536
536
|
});
|
|
537
|
-
this.setMessages();
|
|
538
537
|
this.assignAriaDescribedBy();
|
|
539
538
|
this.setComponentClasses();
|
|
540
539
|
}
|
|
@@ -558,7 +557,6 @@ let DropDownListComponent = DropDownListComponent_1 = class DropDownListComponen
|
|
|
558
557
|
ngOnDestroy() {
|
|
559
558
|
this.destroyPopup();
|
|
560
559
|
this.unsubscribeEvents();
|
|
561
|
-
clearTimeout(this.messagesTimeout);
|
|
562
560
|
if (this.localizationChangesSubscription) {
|
|
563
561
|
this.localizationChangesSubscription.unsubscribe();
|
|
564
562
|
}
|
|
@@ -679,6 +677,12 @@ let DropDownListComponent = DropDownListComponent_1 = class DropDownListComponen
|
|
|
679
677
|
reset() {
|
|
680
678
|
this.value = undefined;
|
|
681
679
|
}
|
|
680
|
+
/**
|
|
681
|
+
* @hidden
|
|
682
|
+
*/
|
|
683
|
+
messageFor(key) {
|
|
684
|
+
return this.localization.get(key);
|
|
685
|
+
}
|
|
682
686
|
/**
|
|
683
687
|
* @hidden
|
|
684
688
|
*/
|
|
@@ -1173,15 +1177,6 @@ let DropDownListComponent = DropDownListComponent_1 = class DropDownListComponen
|
|
|
1173
1177
|
const virtual = this.virtual;
|
|
1174
1178
|
virtual.skip = event.skip;
|
|
1175
1179
|
}
|
|
1176
|
-
setMessages() {
|
|
1177
|
-
this._zone.runOutsideAngular(() => {
|
|
1178
|
-
clearTimeout(this.messagesTimeout);
|
|
1179
|
-
this.messagesTimeout = setTimeout(() => {
|
|
1180
|
-
this.noDataText = this.localization.get('noDataText');
|
|
1181
|
-
this.cdr.detectChanges();
|
|
1182
|
-
});
|
|
1183
|
-
});
|
|
1184
|
-
}
|
|
1185
1180
|
assignAriaDescribedBy() {
|
|
1186
1181
|
const currentValue = this.wrapper.nativeElement.getAttribute('aria-describedby') || '';
|
|
1187
1182
|
const trimmed = currentValue.replace(this.valueLabelId, '').trim();
|
|
@@ -1483,9 +1478,12 @@ DropDownListComponent = DropDownListComponent_1 = tslib_1.__decorate([
|
|
|
1483
1478
|
<ng-container kendoDropDownListLocalizedMessages
|
|
1484
1479
|
i18n-noDataText="kendo.dropdownlist.noDataText|The text displayed in the popup when there are no items"
|
|
1485
1480
|
noDataText="NO DATA FOUND"
|
|
1481
|
+
|
|
1482
|
+
i18n-selectButtonText="kendo.dropdownlist.selectButtonText|The text set as aria-label on the select button"
|
|
1483
|
+
selectButtonText="Select"
|
|
1486
1484
|
>
|
|
1487
1485
|
</ng-container>
|
|
1488
|
-
<span class="k-input-inner" unselectable="on" [id]="valueLabelId">
|
|
1486
|
+
<span class="k-input-inner" unselectable="on" role="option" [id]="valueLabelId">
|
|
1489
1487
|
<span class="k-input-value-text">
|
|
1490
1488
|
<ng-template *ngIf="valueTemplate"
|
|
1491
1489
|
[templateContext]="{
|
|
@@ -1502,6 +1500,7 @@ DropDownListComponent = DropDownListComponent_1 = tslib_1.__decorate([
|
|
|
1502
1500
|
type="button"
|
|
1503
1501
|
class="k-input-button k-button k-icon-button"
|
|
1504
1502
|
[ngClass]="selectButtonClasses"
|
|
1503
|
+
[attr.aria-label]="messageFor('selectButtonText')"
|
|
1505
1504
|
[kendoEventsOutsideAngular]="{
|
|
1506
1505
|
mousedown: onMouseDown
|
|
1507
1506
|
}"
|
|
@@ -1597,7 +1596,7 @@ DropDownListComponent = DropDownListComponent_1 = tslib_1.__decorate([
|
|
|
1597
1596
|
}">
|
|
1598
1597
|
</ng-template>
|
|
1599
1598
|
<ng-template [ngIf]="!noDataTemplate">
|
|
1600
|
-
<div>{{ noDataText }}</div>
|
|
1599
|
+
<div>{{ messageFor('noDataText') }}</div>
|
|
1601
1600
|
</ng-template>
|
|
1602
1601
|
</div>
|
|
1603
1602
|
<!--footer template-->
|
|
@@ -29,4 +29,11 @@ export declare abstract class BaseCheckDirective {
|
|
|
29
29
|
protected removeItem(item: TreeItem): void;
|
|
30
30
|
protected isItemChecked(item: CheckedItem): boolean;
|
|
31
31
|
protected updateItems(): void;
|
|
32
|
+
/**
|
|
33
|
+
* Adds the item's depth to the item's value to allow duplicate values on different levels.
|
|
34
|
+
*
|
|
35
|
+
* @param item - The checked key.
|
|
36
|
+
* @returns { string } - A string key consisting of the item's `valueField` value and its depth.
|
|
37
|
+
*/
|
|
38
|
+
private getKey;
|
|
32
39
|
}
|