@progress/kendo-angular-dropdowns 7.1.0-dev.202208301349 → 7.1.0-dev.202208301423

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.
@@ -7,12 +7,12 @@ import { EventEmitter, Component, Input, Output, ViewChild, HostBinding, Directi
7
7
  import * as i9 from '@progress/kendo-angular-common';
8
8
  import { isDocumentAvailable, Keys, isChanged, hasObservers, KendoInput, anyChanged, guid as guid$1, ResizeSensorModule, EventsModule } from '@progress/kendo-angular-common';
9
9
  import * as i12 from '@angular/forms';
10
- import { NG_VALUE_ACCESSOR, FormsModule } from '@angular/forms';
10
+ import { NgControl, NG_VALUE_ACCESSOR, FormsModule, ReactiveFormsModule } from '@angular/forms';
11
11
  import { validatePackage } from '@progress/kendo-licensing';
12
12
  import { getter as getter$1, pointers, touchEnabled } from '@progress/kendo-common';
13
+ import { Subscription, merge, fromEvent, Subject, of, interval } from 'rxjs';
13
14
  import * as i1 from '@progress/kendo-angular-l10n';
14
15
  import { ComponentMessages, LocalizationService, L10N_PREFIX } from '@progress/kendo-angular-l10n';
15
- import { merge, fromEvent, Subject, Subscription, of, interval } from 'rxjs';
16
16
  import * as i2 from '@progress/kendo-angular-popup';
17
17
  import { PopupModule } from '@progress/kendo-angular-popup';
18
18
  export { PopupComponent } from '@progress/kendo-angular-popup';
@@ -29,7 +29,7 @@ const packageMetadata = {
29
29
  name: '@progress/kendo-angular-dropdowns',
30
30
  productName: 'Kendo UI for Angular',
31
31
  productCodes: ['KENDOUIANGULAR', 'KENDOUICOMPLETE'],
32
- publishDate: 1661867343,
32
+ publishDate: 1661869333,
33
33
  version: '',
34
34
  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'
35
35
  };
@@ -359,8 +359,9 @@ const getFillModeClass = (component, fillMode) => {
359
359
  * @hidden
360
360
  */
361
361
  class SearchBarComponent {
362
- constructor(localization, renderer) {
362
+ constructor(localization, renderer, injector) {
363
363
  this.localization = localization;
364
+ this.injector = injector;
364
365
  this.valueChange = new EventEmitter();
365
366
  this.onBlur = new EventEmitter();
366
367
  this.onFocus = new EventEmitter();
@@ -370,9 +371,30 @@ class SearchBarComponent {
370
371
  this._userInput = "";
371
372
  this._previousValue = "";
372
373
  this._placeholder = "";
374
+ this._isSuggestable = false;
375
+ this._isFilterable = false;
376
+ this.subs = new Subscription();
373
377
  this.direction = localization.rtl ? 'rtl' : 'ltr';
374
378
  this.renderer = renderer;
375
379
  }
380
+ set isSuggestable(isSuggestable) {
381
+ this._isSuggestable = isSuggestable;
382
+ this.setAriaAutocomplete();
383
+ }
384
+ ;
385
+ get isSuggestable() {
386
+ return this._isSuggestable;
387
+ }
388
+ ;
389
+ set isFilterable(isFilterable) {
390
+ this._isFilterable = isFilterable;
391
+ this.setAriaAutocomplete();
392
+ }
393
+ ;
394
+ get isFilterable() {
395
+ return this._isFilterable;
396
+ }
397
+ ;
376
398
  get userInput() {
377
399
  return this._userInput;
378
400
  }
@@ -393,8 +415,19 @@ class SearchBarComponent {
393
415
  return this.role === 'combobox' ? this.popupOpen : null;
394
416
  }
395
417
  ngOnInit() {
396
- this.localizationChangeSubscription = this.localization
397
- .changes.subscribe(({ rtl }) => this.direction = rtl ? 'rtl' : 'ltr');
418
+ this.subs.add(this.localization
419
+ .changes.subscribe(({ rtl }) => this.direction = rtl ? 'rtl' : 'ltr'));
420
+ }
421
+ ngAfterContentChecked() {
422
+ var _a;
423
+ const formControl = (_a = this.injector.get(NgControl, null)) === null || _a === void 0 ? void 0 : _a.control;
424
+ this.control = formControl;
425
+ if (formControl) {
426
+ this.subs.add(formControl.valueChanges.subscribe(() => {
427
+ this.control = formControl;
428
+ }));
429
+ }
430
+ this.setAriaInvalid();
398
431
  }
399
432
  ngOnChanges(changes) {
400
433
  let previousUserInput;
@@ -426,9 +459,7 @@ class SearchBarComponent {
426
459
  }
427
460
  }
428
461
  ngOnDestroy() {
429
- if (this.localizationChangeSubscription) {
430
- this.localizationChangeSubscription.unsubscribe();
431
- }
462
+ this.subs.unsubscribe();
432
463
  }
433
464
  writeInputValue(text) {
434
465
  if (isDocumentAvailable()) {
@@ -445,6 +476,33 @@ class SearchBarComponent {
445
476
  }
446
477
  }
447
478
  }
479
+ setAriaInvalid() {
480
+ if (this.control) {
481
+ if (this.control.invalid) {
482
+ this.renderer.setAttribute(this.input.nativeElement, 'aria-invalid', 'true');
483
+ }
484
+ else {
485
+ this.renderer.setAttribute(this.input.nativeElement, 'aria-invalid', 'false');
486
+ }
487
+ }
488
+ else {
489
+ this.renderer.removeAttribute(this.input.nativeElement, 'aria-invalid');
490
+ }
491
+ }
492
+ setAriaAutocomplete() {
493
+ if (this.isFilterable) {
494
+ this.renderer.setAttribute(this.input.nativeElement, 'aria-autocomplete', 'list');
495
+ }
496
+ if (this.isSuggestable) {
497
+ this.renderer.setAttribute(this.input.nativeElement, 'aria-autocomplete', 'inline');
498
+ }
499
+ if (this.isFilterable && this.isSuggestable) {
500
+ this.renderer.setAttribute(this.input.nativeElement, 'aria-autocomplete', 'both');
501
+ }
502
+ if (!this.isFilterable && !this.isSuggestable) {
503
+ this.renderer.removeAttribute(this.input.nativeElement, 'aria-autocomplete');
504
+ }
505
+ }
448
506
  handleInput(event) {
449
507
  const value = event.target.value;
450
508
  if (value !== this.userInput) {
@@ -485,8 +543,8 @@ class SearchBarComponent {
485
543
  this.renderer.setAttribute(input, 'size', size.toString());
486
544
  }
487
545
  }
488
- SearchBarComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: SearchBarComponent, deps: [{ token: i1.LocalizationService }, { token: i0.Renderer2 }], target: i0.ɵɵFactoryTarget.Component });
489
- SearchBarComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.16", type: SearchBarComponent, selector: "kendo-searchbar", inputs: { id: "id", listId: "listId", tagListId: "tagListId", activeDescendant: "activeDescendant", noDataLabel: "noDataLabel", disabled: "disabled", readonly: "readonly", tabIndex: "tabIndex", popupOpen: "popupOpen", role: "role", 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: `
546
+ SearchBarComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: SearchBarComponent, deps: [{ token: i1.LocalizationService }, { token: i0.Renderer2 }, { token: i0.Injector }], target: i0.ɵɵFactoryTarget.Component });
547
+ SearchBarComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.16", type: SearchBarComponent, selector: "kendo-searchbar", inputs: { id: "id", listId: "listId", tagListId: "tagListId", activeDescendant: "activeDescendant", disabled: "disabled", readonly: "readonly", tabIndex: "tabIndex", popupOpen: "popupOpen", role: "role", isLoading: "isLoading", 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: `
490
548
  <input #input
491
549
  autocomplete="off"
492
550
  [id]="id"
@@ -504,14 +562,12 @@ SearchBarComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", ver
504
562
  [attr.tabIndex]="tabIndex"
505
563
  [attr.dir]="direction"
506
564
  [attr.role]="role"
507
- [attr.aria-disabled]="disabled"
508
- [attr.aria-readonly]="readonly"
509
565
  aria-haspopup="listbox"
510
566
  [attr.aria-expanded]="ariaExpanded"
511
- [attr.aria-owns]="listId"
567
+ [attr.aria-controls]="listId"
512
568
  [attr.aria-describedby]="tagListId"
513
569
  [attr.aria-activedescendant]="activeDescendant"
514
- [attr.aria-label]="noDataLabel"
570
+ [attr.aria-busy]="isLoading"
515
571
  />
516
572
  `, isInline: true, directives: [{ type: i9.EventsOutsideAngularDirective, selector: "[kendoEventsOutsideAngular]", inputs: ["kendoEventsOutsideAngular", "scope"] }] });
517
573
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: SearchBarComponent, decorators: [{
@@ -536,18 +592,16 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImpo
536
592
  [attr.tabIndex]="tabIndex"
537
593
  [attr.dir]="direction"
538
594
  [attr.role]="role"
539
- [attr.aria-disabled]="disabled"
540
- [attr.aria-readonly]="readonly"
541
595
  aria-haspopup="listbox"
542
596
  [attr.aria-expanded]="ariaExpanded"
543
- [attr.aria-owns]="listId"
597
+ [attr.aria-controls]="listId"
544
598
  [attr.aria-describedby]="tagListId"
545
599
  [attr.aria-activedescendant]="activeDescendant"
546
- [attr.aria-label]="noDataLabel"
600
+ [attr.aria-busy]="isLoading"
547
601
  />
548
602
  `
549
603
  }]
550
- }], ctorParameters: function () { return [{ type: i1.LocalizationService }, { type: i0.Renderer2 }]; }, propDecorators: { id: [{
604
+ }], ctorParameters: function () { return [{ type: i1.LocalizationService }, { type: i0.Renderer2 }, { type: i0.Injector }]; }, propDecorators: { id: [{
551
605
  type: Input
552
606
  }], listId: [{
553
607
  type: Input
@@ -555,8 +609,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImpo
555
609
  type: Input
556
610
  }], activeDescendant: [{
557
611
  type: Input
558
- }], noDataLabel: [{
559
- type: Input
560
612
  }], disabled: [{
561
613
  type: Input
562
614
  }], readonly: [{
@@ -567,6 +619,12 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImpo
567
619
  type: Input
568
620
  }], role: [{
569
621
  type: Input
622
+ }], isLoading: [{
623
+ type: Input
624
+ }], isSuggestable: [{
625
+ type: Input
626
+ }], isFilterable: [{
627
+ type: Input
570
628
  }], userInput: [{
571
629
  type: Input
572
630
  }], suggestedText: [{
@@ -1861,6 +1919,9 @@ class ListComponent {
1861
1919
  const hasVirtualScroll = isPresent(this.virtual) && this.hasVirtualScrollbar();
1862
1920
  return hasVirtualScroll || this.list.nativeElement.scrollHeight > this.content.nativeElement.offsetHeight;
1863
1921
  }
1922
+ isItemSelected(index) {
1923
+ return this.selectionService.isSelected(index) || null;
1924
+ }
1864
1925
  /**
1865
1926
  * Sets the list's content overflow (hides/shows scrollbar)
1866
1927
  */
@@ -1906,7 +1967,7 @@ class ListComponent {
1906
1967
  }
1907
1968
  }
1908
1969
  ListComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: ListComponent, deps: [{ token: DataService }, { token: i0.ElementRef }, { token: SelectionService }, { token: DisabledItemsService }, { token: i0.ChangeDetectorRef }, { token: i0.NgZone }, { token: i0.Renderer2 }], target: i0.ɵɵFactoryTarget.Component });
1909
- ListComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.16", type: ListComponent, selector: "kendo-list", inputs: { selected: "selected", focused: "focused", textField: "textField", valueField: "valueField", height: "height", template: "template", groupTemplate: "groupTemplate", fixedGroupTemplate: "fixedGroupTemplate", show: "show", id: "id", optionPrefix: "optionPrefix", multipleSelection: "multipleSelection", virtual: "virtual", type: "type", checkboxes: "checkboxes", data: "data", size: "size", rounded: "rounded" }, outputs: { onClick: "onClick", pageChange: "pageChange", listResize: "listResize" }, viewQueries: [{ propertyName: "content", first: true, predicate: ["content"], descendants: true, static: true }, { propertyName: "list", first: true, predicate: ["list"], descendants: true, static: true }, { propertyName: "virtualContainer", first: true, predicate: ["virtualContainer"], descendants: true }, { propertyName: "items", predicate: ListItemDirective, descendants: true }], usesOnChanges: true, ngImport: i0, template: `
1970
+ ListComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.16", type: ListComponent, selector: "kendo-list", inputs: { selected: "selected", focused: "focused", textField: "textField", valueField: "valueField", height: "height", template: "template", groupTemplate: "groupTemplate", fixedGroupTemplate: "fixedGroupTemplate", show: "show", id: "id", optionPrefix: "optionPrefix", multipleSelection: "multipleSelection", virtual: "virtual", type: "type", checkboxes: "checkboxes", ariaLive: "ariaLive", isMultiselect: "isMultiselect", data: "data", size: "size", rounded: "rounded" }, outputs: { onClick: "onClick", pageChange: "pageChange", listResize: "listResize" }, viewQueries: [{ propertyName: "content", first: true, predicate: ["content"], descendants: true, static: true }, { propertyName: "list", first: true, predicate: ["list"], descendants: true, static: true }, { propertyName: "virtualContainer", first: true, predicate: ["virtualContainer"], descendants: true }, { propertyName: "items", predicate: ListItemDirective, descendants: true }], usesOnChanges: true, ngImport: i0, template: `
1910
1971
  <div *ngIf="dataService.grouped"
1911
1972
  [class]="listGroupStickyHeaderClass"
1912
1973
  [ngStyle]="{
@@ -1931,6 +1992,8 @@ ListComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version:
1931
1992
  role="listbox"
1932
1993
  [class]="listClass"
1933
1994
  [attr.id]="id"
1995
+ [attr.aria-live]="ariaLive"
1996
+ [attr.aria-multiselectable]="isMultiselect"
1934
1997
  [attr.aria-hidden]="!show">
1935
1998
  <ng-template *ngIf="!dataService.grouped && show" ngFor let-dataItem let-itemIndex="index" [ngForOf]="data">
1936
1999
  <li
@@ -1942,6 +2005,7 @@ ListComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version:
1942
2005
  [multipleSelection]="multipleSelection"
1943
2006
  [attr.id]="optionPrefix + '-' + getValue(dataItem)"
1944
2007
  [attr.tabIndex]="-1"
2008
+ [attr.aria-selected]="isItemSelected(itemIndex)"
1945
2009
  [class]="listItemClass"
1946
2010
  [ngClass]="{
1947
2011
  'k-disabled': isDisabled(itemIndex),
@@ -1998,6 +2062,7 @@ ListComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version:
1998
2062
  [attr.absolute-index]="dataItem.index"
1999
2063
  [attr.id]="optionPrefix + '-' + getValue(dataItem.value)"
2000
2064
  [attr.tabIndex]="-1"
2065
+ [attr.aria-selected]="isItemSelected(dataItem.offsetIndex)"
2001
2066
  [class]="listItemClass"
2002
2067
  [ngClass]="{
2003
2068
  'k-disabled': isDisabled(dataItem.offsetIndex),
@@ -2055,6 +2120,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImpo
2055
2120
  role="listbox"
2056
2121
  [class]="listClass"
2057
2122
  [attr.id]="id"
2123
+ [attr.aria-live]="ariaLive"
2124
+ [attr.aria-multiselectable]="isMultiselect"
2058
2125
  [attr.aria-hidden]="!show">
2059
2126
  <ng-template *ngIf="!dataService.grouped && show" ngFor let-dataItem let-itemIndex="index" [ngForOf]="data">
2060
2127
  <li
@@ -2066,6 +2133,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImpo
2066
2133
  [multipleSelection]="multipleSelection"
2067
2134
  [attr.id]="optionPrefix + '-' + getValue(dataItem)"
2068
2135
  [attr.tabIndex]="-1"
2136
+ [attr.aria-selected]="isItemSelected(itemIndex)"
2069
2137
  [class]="listItemClass"
2070
2138
  [ngClass]="{
2071
2139
  'k-disabled': isDisabled(itemIndex),
@@ -2122,6 +2190,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImpo
2122
2190
  [attr.absolute-index]="dataItem.index"
2123
2191
  [attr.id]="optionPrefix + '-' + getValue(dataItem.value)"
2124
2192
  [attr.tabIndex]="-1"
2193
+ [attr.aria-selected]="isItemSelected(dataItem.offsetIndex)"
2125
2194
  [class]="listItemClass"
2126
2195
  [ngClass]="{
2127
2196
  'k-disabled': isDisabled(dataItem.offsetIndex),
@@ -2181,6 +2250,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImpo
2181
2250
  type: Input
2182
2251
  }], checkboxes: [{
2183
2252
  type: Input
2253
+ }], ariaLive: [{
2254
+ type: Input
2255
+ }], isMultiselect: [{
2256
+ type: Input
2184
2257
  }], data: [{
2185
2258
  type: Input
2186
2259
  }], size: [{
@@ -2498,11 +2571,6 @@ class AutoCompleteComponent {
2498
2571
  const dataItem = this.dataService.itemAt(this.selectionService.focused);
2499
2572
  return this.optionPrefix + "-" + getter(dataItem, this.valueField);
2500
2573
  }
2501
- get noDataLabel() {
2502
- if (this.data.length === 0) {
2503
- return this.messageFor('noDataText');
2504
- }
2505
- }
2506
2574
  /**
2507
2575
  * Sets the data of the AutoComplete.
2508
2576
  *
@@ -3055,6 +3123,11 @@ class AutoCompleteComponent {
3055
3123
  popupWrapper.style.width = max;
3056
3124
  popupWrapper.style.height = this.height;
3057
3125
  popupWrapper.setAttribute("dir", this.direction);
3126
+ const listBox = popupWrapper.querySelector('ul.k-list-ul');
3127
+ const ariaLabel = this.searchbar.input.nativeElement.getAttribute('aria-labelledby');
3128
+ if (ariaLabel) {
3129
+ listBox.setAttribute('aria-labelledby', ariaLabel);
3130
+ }
3058
3131
  this.popupRef.popupOpen.subscribe(() => {
3059
3132
  this.cdr.detectChanges();
3060
3133
  this.optionsList.scrollToItem(this.selectionService.focused);
@@ -3158,10 +3231,12 @@ AutoCompleteComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0",
3158
3231
  </ng-container>
3159
3232
  <kendo-searchbar #searchbar
3160
3233
  [role]="'combobox'"
3234
+ [isSuggestable]="suggest"
3235
+ [isFilterable]="filterable"
3236
+ [isLoading]="isLoading"
3161
3237
  [id]="focusableId"
3162
3238
  [listId]="listBoxId"
3163
3239
  [activeDescendant]="activeDescendant"
3164
- [noDataLabel]="noDataLabel"
3165
3240
  [userInput]="text"
3166
3241
  [suggestedText]="suggestion"
3167
3242
  [disabled]="disabled"
@@ -3235,7 +3310,7 @@ AutoCompleteComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0",
3235
3310
  <kendo-resize-sensor (resize)="onResize()"></kendo-resize-sensor>
3236
3311
  </ng-template>
3237
3312
  <ng-container #container></ng-container>
3238
- `, isInline: true, components: [{ type: SearchBarComponent, selector: "kendo-searchbar", inputs: ["id", "listId", "tagListId", "activeDescendant", "noDataLabel", "disabled", "readonly", "tabIndex", "popupOpen", "role", "userInput", "suggestedText", "placeholder"], outputs: ["valueChange", "onBlur", "onFocus", "onClick", "onNavigate"] }, { type: ListComponent, selector: "kendo-list", inputs: ["selected", "focused", "textField", "valueField", "height", "template", "groupTemplate", "fixedGroupTemplate", "show", "id", "optionPrefix", "multipleSelection", "virtual", "type", "checkboxes", "data", "size", "rounded"], outputs: ["onClick", "pageChange", "listResize"] }, { type: i9.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: i11.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: TemplateContextDirective, selector: "[templateContext]", inputs: ["templateContext"] }] });
3313
+ `, isInline: true, components: [{ type: SearchBarComponent, selector: "kendo-searchbar", inputs: ["id", "listId", "tagListId", "activeDescendant", "disabled", "readonly", "tabIndex", "popupOpen", "role", "isLoading", "isSuggestable", "isFilterable", "userInput", "suggestedText", "placeholder"], outputs: ["valueChange", "onBlur", "onFocus", "onClick", "onNavigate"] }, { 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: i9.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: i11.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: TemplateContextDirective, selector: "[templateContext]", inputs: ["templateContext"] }] });
3239
3314
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: AutoCompleteComponent, decorators: [{
3240
3315
  type: Component,
3241
3316
  args: [{
@@ -3272,10 +3347,12 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImpo
3272
3347
  </ng-container>
3273
3348
  <kendo-searchbar #searchbar
3274
3349
  [role]="'combobox'"
3350
+ [isSuggestable]="suggest"
3351
+ [isFilterable]="filterable"
3352
+ [isLoading]="isLoading"
3275
3353
  [id]="focusableId"
3276
3354
  [listId]="listBoxId"
3277
3355
  [activeDescendant]="activeDescendant"
3278
- [noDataLabel]="noDataLabel"
3279
3356
  [userInput]="text"
3280
3357
  [suggestedText]="suggestion"
3281
3358
  [disabled]="disabled"
@@ -3760,11 +3837,6 @@ class ComboBoxComponent {
3760
3837
  const dataItem = this.dataService.itemAt(this.selectionService.focused);
3761
3838
  return this.optionPrefix + "-" + (dataItem ? getter(dataItem, this.valueField) : "");
3762
3839
  }
3763
- get noDataLabel() {
3764
- if (this.data.length === 0) {
3765
- return this.messageFor('noDataText');
3766
- }
3767
- }
3768
3840
  get appendTo() {
3769
3841
  const { appendTo } = this.popupSettings;
3770
3842
  if (!appendTo || appendTo === 'root') {
@@ -4682,6 +4754,11 @@ class ComboBoxComponent {
4682
4754
  popupWrapper.style.width = max;
4683
4755
  popupWrapper.style.height = this.popupHeight;
4684
4756
  popupWrapper.setAttribute("dir", this.direction);
4757
+ const listBox = this.popupRef.popupElement.querySelector('ul.k-list-ul');
4758
+ const ariaLabel = this.searchbar.input.nativeElement.getAttribute('aria-labelledby');
4759
+ if (ariaLabel) {
4760
+ listBox.setAttribute('aria-labelledby', ariaLabel);
4761
+ }
4685
4762
  this.popupRef.popupOpen.subscribe(() => {
4686
4763
  this.cdr.detectChanges();
4687
4764
  this.optionsList.scrollToItem(this.selectionService.focused);
@@ -4786,8 +4863,10 @@ ComboBoxComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", vers
4786
4863
  [role]="'combobox'"
4787
4864
  [id]="focusableId"
4788
4865
  [listId]="listBoxId"
4866
+ [isLoading]="loading"
4867
+ [isSuggestable]="suggest"
4868
+ [isFilterable]="filterable"
4789
4869
  [activeDescendant]="activeDescendant"
4790
- [noDataLabel]="noDataLabel"
4791
4870
  [userInput]="text"
4792
4871
  [suggestedText]="getSuggestion()"
4793
4872
  [disabled]="disabled"
@@ -4815,6 +4894,7 @@ ComboBoxComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", vers
4815
4894
  </span>
4816
4895
  <button
4817
4896
  #select
4897
+ tabindex="-1"
4818
4898
  unselectable="on"
4819
4899
  type="button"
4820
4900
  class="k-input-button k-button k-icon-button"
@@ -4874,7 +4954,7 @@ ComboBoxComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", vers
4874
4954
  <kendo-resize-sensor (resize)="onResize()"></kendo-resize-sensor>
4875
4955
  </ng-template>
4876
4956
  <ng-container #container></ng-container>
4877
- `, isInline: true, components: [{ type: SearchBarComponent, selector: "kendo-searchbar", inputs: ["id", "listId", "tagListId", "activeDescendant", "noDataLabel", "disabled", "readonly", "tabIndex", "popupOpen", "role", "userInput", "suggestedText", "placeholder"], outputs: ["valueChange", "onBlur", "onFocus", "onClick", "onNavigate"] }, { type: ListComponent, selector: "kendo-list", inputs: ["selected", "focused", "textField", "valueField", "height", "template", "groupTemplate", "fixedGroupTemplate", "show", "id", "optionPrefix", "multipleSelection", "virtual", "type", "checkboxes", "data", "size", "rounded"], outputs: ["onClick", "pageChange", "listResize"] }, { type: i9.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: i11.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i9.EventsOutsideAngularDirective, selector: "[kendoEventsOutsideAngular]", inputs: ["kendoEventsOutsideAngular", "scope"] }, { type: i11.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: TemplateContextDirective, selector: "[templateContext]", inputs: ["templateContext"] }] });
4957
+ `, isInline: true, components: [{ type: SearchBarComponent, selector: "kendo-searchbar", inputs: ["id", "listId", "tagListId", "activeDescendant", "disabled", "readonly", "tabIndex", "popupOpen", "role", "isLoading", "isSuggestable", "isFilterable", "userInput", "suggestedText", "placeholder"], outputs: ["valueChange", "onBlur", "onFocus", "onClick", "onNavigate"] }, { 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: i9.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: i11.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i9.EventsOutsideAngularDirective, selector: "[kendoEventsOutsideAngular]", inputs: ["kendoEventsOutsideAngular", "scope"] }, { type: i11.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: TemplateContextDirective, selector: "[templateContext]", inputs: ["templateContext"] }] });
4878
4958
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: ComboBoxComponent, decorators: [{
4879
4959
  type: Component,
4880
4960
  args: [{
@@ -4914,8 +4994,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImpo
4914
4994
  [role]="'combobox'"
4915
4995
  [id]="focusableId"
4916
4996
  [listId]="listBoxId"
4997
+ [isLoading]="loading"
4998
+ [isSuggestable]="suggest"
4999
+ [isFilterable]="filterable"
4917
5000
  [activeDescendant]="activeDescendant"
4918
- [noDataLabel]="noDataLabel"
4919
5001
  [userInput]="text"
4920
5002
  [suggestedText]="getSuggestion()"
4921
5003
  [disabled]="disabled"
@@ -4943,6 +5025,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImpo
4943
5025
  </span>
4944
5026
  <button
4945
5027
  #select
5028
+ tabindex="-1"
4946
5029
  unselectable="on"
4947
5030
  type="button"
4948
5031
  class="k-input-button k-button k-icon-button"
@@ -5231,7 +5314,7 @@ const DEFAULT_FILL_MODE$3 = 'solid';
5231
5314
  * ```
5232
5315
  */
5233
5316
  class DropDownListComponent {
5234
- constructor(wrapper, localization, popupService, selectionService, navigationService, disabledItemsService, dataService, _zone, renderer, cdr, touchEnabled) {
5317
+ constructor(wrapper, localization, popupService, selectionService, navigationService, disabledItemsService, dataService, _zone, renderer, cdr, touchEnabled, injector) {
5235
5318
  this.wrapper = wrapper;
5236
5319
  this.localization = localization;
5237
5320
  this.popupService = popupService;
@@ -5243,6 +5326,7 @@ class DropDownListComponent {
5243
5326
  this.renderer = renderer;
5244
5327
  this.cdr = cdr;
5245
5328
  this.touchEnabled = touchEnabled;
5329
+ this.injector = injector;
5246
5330
  /**
5247
5331
  * Sets the height of the options list. By default, `listHeight` is 200px.
5248
5332
  *
@@ -5250,10 +5334,6 @@ class DropDownListComponent {
5250
5334
  * > To set the height of the popup container, use `popupSettings.height`.
5251
5335
  */
5252
5336
  this.listHeight = 200;
5253
- /**
5254
- * Sets the disabled state of the component.
5255
- */
5256
- this.disabled = false;
5257
5337
  /**
5258
5338
  * Sets the read-only state of the component.
5259
5339
  */
@@ -5325,7 +5405,8 @@ class DropDownListComponent {
5325
5405
  * @hidden
5326
5406
  */
5327
5407
  this.focusableId = `k-${guid()}`;
5328
- this.role = 'listbox';
5408
+ this.role = 'combobox';
5409
+ this.haspopup = 'listbox';
5329
5410
  this.groupIndices = [];
5330
5411
  this.listBoxId = guid();
5331
5412
  this.optionPrefix = guid();
@@ -5375,7 +5456,7 @@ class DropDownListComponent {
5375
5456
  get ariaExpanded() {
5376
5457
  return this.isOpen;
5377
5458
  }
5378
- get ariaOwns() {
5459
+ get ariaControls() {
5379
5460
  if (!this.isOpen) {
5380
5461
  return;
5381
5462
  }
@@ -5387,11 +5468,6 @@ class DropDownListComponent {
5387
5468
  }
5388
5469
  return this.optionPrefix + "-" + getter(this.dataItem, this.valueField);
5389
5470
  }
5390
- get noDataLabel() {
5391
- if (this.dataService.itemsCount === 0) {
5392
- return this.messageFor('noDataText');
5393
- }
5394
- }
5395
5471
  get appendTo() {
5396
5472
  const { appendTo } = this.popupSettings;
5397
5473
  if (!appendTo || appendTo === 'root') {
@@ -5399,6 +5475,12 @@ class DropDownListComponent {
5399
5475
  }
5400
5476
  return appendTo === 'component' ? this.container : appendTo;
5401
5477
  }
5478
+ /**
5479
+ * @hidden
5480
+ */
5481
+ get ariaLive() {
5482
+ return this.filterable ? 'polite' : 'off';
5483
+ }
5402
5484
  /**
5403
5485
  * Sets the data of the DropDownList.
5404
5486
  *
@@ -5607,9 +5689,12 @@ class DropDownListComponent {
5607
5689
  popupWrapper.style.width = max;
5608
5690
  }
5609
5691
  }
5610
- get isDisabled() {
5692
+ get isDisabledClass() {
5611
5693
  return this.disabled;
5612
5694
  }
5695
+ get isDisabledAttribute() {
5696
+ return this.disabled ? '' : null;
5697
+ }
5613
5698
  get isLoading() {
5614
5699
  return this.loading;
5615
5700
  }
@@ -5619,21 +5704,28 @@ class DropDownListComponent {
5619
5704
  get hostTabIndex() {
5620
5705
  return this.widgetTabIndex;
5621
5706
  }
5622
- get isReadonly() {
5707
+ get readonlyClass() {
5623
5708
  return this.readonly;
5624
5709
  }
5710
+ get readonlyAttr() {
5711
+ return this.readonly ? '' : null;
5712
+ }
5713
+ get isBusy() {
5714
+ return this.isLoading;
5715
+ }
5625
5716
  get isAriaExpanded() {
5626
5717
  return this.ariaExpanded;
5627
5718
  }
5628
- get hostAriaOwns() {
5629
- return this.ariaOwns;
5719
+ get hostAriaControls() {
5720
+ return this.ariaControls;
5721
+ }
5722
+ get hostAriaInvalid() {
5723
+ var _a;
5724
+ return this.formControl ? (_a = this.formControl) === null || _a === void 0 ? void 0 : _a.invalid.toString() : null;
5630
5725
  }
5631
5726
  get hostAriaActivedescendant() {
5632
5727
  return this.ariaActivedescendant;
5633
5728
  }
5634
- get hostNoDataLabel() {
5635
- return this.noDataLabel;
5636
- }
5637
5729
  /**
5638
5730
  * @hidden
5639
5731
  */
@@ -5760,6 +5852,13 @@ class DropDownListComponent {
5760
5852
  ngAfterContentChecked() {
5761
5853
  this.verifySettings();
5762
5854
  }
5855
+ /**
5856
+ * @hidden
5857
+ */
5858
+ get formControl() {
5859
+ const ngControl = this.injector.get(NgControl, null);
5860
+ return (ngControl === null || ngControl === void 0 ? void 0 : ngControl.control) || null;
5861
+ }
5763
5862
  /**
5764
5863
  * Focuses a specific item of the DropDownList based on a provided index.
5765
5864
  * If there is a default item it is positioned at index -1.
@@ -5789,6 +5888,7 @@ class DropDownListComponent {
5789
5888
  blur() {
5790
5889
  if (!this.disabled) {
5791
5890
  this.wrapper.nativeElement.blur();
5891
+ this.cdr.detectChanges();
5792
5892
  }
5793
5893
  }
5794
5894
  /**
@@ -5960,6 +6060,11 @@ class DropDownListComponent {
5960
6060
  popupWrapper.style.width = max;
5961
6061
  popupWrapper.style.height = this.height;
5962
6062
  popupWrapper.setAttribute("dir", this.direction);
6063
+ const listBox = popupWrapper.querySelector('ul.k-list-ul');
6064
+ const ariaLabel = this.wrapper.nativeElement.getAttribute('aria-labelledby');
6065
+ if (ariaLabel) {
6066
+ listBox.setAttribute('aria-labelledby', ariaLabel);
6067
+ }
5963
6068
  this.subs.add(this.popupRef.popupOpen.subscribe(() => {
5964
6069
  this.cdr.detectChanges();
5965
6070
  this.optionsList.scrollToItem(this.selectionService.focused);
@@ -6362,8 +6467,8 @@ class DropDownListComponent {
6362
6467
  }
6363
6468
  }
6364
6469
  }
6365
- DropDownListComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", 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 }], target: i0.ɵɵFactoryTarget.Component });
6366
- DropDownListComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.16", 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.isDisabled", "attr.aria-disabled": "this.isDisabled", "class.k-loading": "this.isLoading", "attr.id": "this.focusableId", "attr.dir": "this.dir", "attr.tabindex": "this.hostTabIndex", "attr.readonly": "this.isReadonly", "attr.aria-readonly": "this.isReadonly", "attr.role": "this.role", "attr.aria-haspopup": "this.role", "attr.aria-expanded": "this.isAriaExpanded", "attr.aria-owns": "this.hostAriaOwns", "attr.aria-activedescendant": "this.hostAriaActivedescendant", "attr.aria-label": "this.hostNoDataLabel" } }, providers: [
6470
+ DropDownListComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", 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 });
6471
+ DropDownListComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.16", 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-controls": "this.hostAriaControls", "attr.aria-invalid": "this.hostAriaInvalid", "attr.aria-activedescendant": "this.hostAriaActivedescendant" } }, providers: [
6367
6472
  DROPDOWNLIST_VALUE_ACCESSOR,
6368
6473
  DataService,
6369
6474
  SelectionService,
@@ -6389,7 +6494,7 @@ DropDownListComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0",
6389
6494
  selectButtonText="Select"
6390
6495
  >
6391
6496
  </ng-container>
6392
- <span class="k-input-inner" unselectable="on" role="option" [id]="valueLabelId">
6497
+ <span class="k-input-inner" unselectable="on" [id]="valueLabelId">
6393
6498
  <span class="k-input-value-text">
6394
6499
  <ng-template *ngIf="valueTemplate"
6395
6500
  [templateContext]="{
@@ -6428,9 +6533,11 @@ DropDownListComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0",
6428
6533
  >
6429
6534
  <span class="k-input-icon k-icon k-i-search" unselectable="on"></span>
6430
6535
  <input
6431
- [attr.aria-owns]="ariaOwns"
6536
+ role="searchbox"
6537
+ aria-autocomplete="list"
6538
+ aria-haspopup="listbox"
6539
+ [attr.aria-controls]="ariaControls"
6432
6540
  [attr.aria-activedescendant]="ariaActivedescendant"
6433
- [attr.aria-label]="noDataLabel"
6434
6541
  tabindex="-1"
6435
6542
  [filterInput]="isFocused && !touchEnabled"
6436
6543
  [dir]="direction"
@@ -6491,6 +6598,7 @@ DropDownListComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0",
6491
6598
  [height]="listHeight"
6492
6599
  [show]="isOpen"
6493
6600
  [virtual]="virtual"
6601
+ [ariaLive]="ariaLive"
6494
6602
  (pageChange)="pageChange($event)"
6495
6603
  >
6496
6604
  </kendo-list>
@@ -6516,7 +6624,7 @@ DropDownListComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0",
6516
6624
  <kendo-resize-sensor (resize)="onResize()"></kendo-resize-sensor>
6517
6625
  </ng-template>
6518
6626
  <ng-container #container></ng-container>
6519
- `, isInline: true, components: [{ type: ListComponent, selector: "kendo-list", inputs: ["selected", "focused", "textField", "valueField", "height", "template", "groupTemplate", "fixedGroupTemplate", "show", "id", "optionPrefix", "multipleSelection", "virtual", "type", "checkboxes", "data", "size", "rounded"], outputs: ["onClick", "pageChange", "listResize"] }, { type: i9.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: i11.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: TemplateContextDirective, selector: "[templateContext]", inputs: ["templateContext"] }, { type: i11.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i9.EventsOutsideAngularDirective, selector: "[kendoEventsOutsideAngular]", inputs: ["kendoEventsOutsideAngular", "scope"] }, { type: i12.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { type: FilterInputDirective, selector: "[filterInput]", inputs: ["filterInput"] }, { type: i12.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i12.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { type: SelectableDirective, selector: "[kendoDropDownsSelectable]", inputs: ["index", "checkboxes", "height", "multipleSelection"] }] });
6627
+ `, isInline: true, components: [{ 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: i9.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: i11.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: TemplateContextDirective, selector: "[templateContext]", inputs: ["templateContext"] }, { type: i11.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i9.EventsOutsideAngularDirective, selector: "[kendoEventsOutsideAngular]", inputs: ["kendoEventsOutsideAngular", "scope"] }, { type: i12.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { type: FilterInputDirective, selector: "[filterInput]", inputs: ["filterInput"] }, { type: i12.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i12.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { type: SelectableDirective, selector: "[kendoDropDownsSelectable]", inputs: ["index", "checkboxes", "height", "multipleSelection"] }] });
6520
6628
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: DropDownListComponent, decorators: [{
6521
6629
  type: Component,
6522
6630
  args: [{
@@ -6549,7 +6657,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImpo
6549
6657
  selectButtonText="Select"
6550
6658
  >
6551
6659
  </ng-container>
6552
- <span class="k-input-inner" unselectable="on" role="option" [id]="valueLabelId">
6660
+ <span class="k-input-inner" unselectable="on" [id]="valueLabelId">
6553
6661
  <span class="k-input-value-text">
6554
6662
  <ng-template *ngIf="valueTemplate"
6555
6663
  [templateContext]="{
@@ -6588,9 +6696,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImpo
6588
6696
  >
6589
6697
  <span class="k-input-icon k-icon k-i-search" unselectable="on"></span>
6590
6698
  <input
6591
- [attr.aria-owns]="ariaOwns"
6699
+ role="searchbox"
6700
+ aria-autocomplete="list"
6701
+ aria-haspopup="listbox"
6702
+ [attr.aria-controls]="ariaControls"
6592
6703
  [attr.aria-activedescendant]="ariaActivedescendant"
6593
- [attr.aria-label]="noDataLabel"
6594
6704
  tabindex="-1"
6595
6705
  [filterInput]="isFocused && !touchEnabled"
6596
6706
  [dir]="direction"
@@ -6651,6 +6761,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImpo
6651
6761
  [height]="listHeight"
6652
6762
  [show]="isOpen"
6653
6763
  [virtual]="virtual"
6764
+ [ariaLive]="ariaLive"
6654
6765
  (pageChange)="pageChange($event)"
6655
6766
  >
6656
6767
  </kendo-list>
@@ -6683,7 +6794,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImpo
6683
6794
  }, {
6684
6795
  type: Inject,
6685
6796
  args: [TOUCH_ENABLED]
6686
- }] }]; }, propDecorators: { iconClass: [{
6797
+ }] }, { type: i0.Injector }]; }, propDecorators: { iconClass: [{
6687
6798
  type: Input
6688
6799
  }], loading: [{
6689
6800
  type: Input
@@ -6784,12 +6895,12 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImpo
6784
6895
  }, {
6785
6896
  type: HostBinding,
6786
6897
  args: ['class.k-picker']
6787
- }], isDisabled: [{
6898
+ }], isDisabledClass: [{
6788
6899
  type: HostBinding,
6789
6900
  args: ['class.k-disabled']
6790
- }, {
6901
+ }], isDisabledAttribute: [{
6791
6902
  type: HostBinding,
6792
- args: ['attr.aria-disabled']
6903
+ args: ['attr.disabled']
6793
6904
  }], isLoading: [{
6794
6905
  type: HostBinding,
6795
6906
  args: ['class.k-loading']
@@ -6805,30 +6916,33 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImpo
6805
6916
  }], hostTabIndex: [{
6806
6917
  type: HostBinding,
6807
6918
  args: ['attr.tabindex']
6808
- }], isReadonly: [{
6919
+ }], readonlyClass: [{
6809
6920
  type: HostBinding,
6810
6921
  args: ['attr.readonly']
6811
- }, {
6922
+ }], readonlyAttr: [{
6812
6923
  type: HostBinding,
6813
- args: ['attr.aria-readonly']
6924
+ args: ['attr.readonly']
6925
+ }], isBusy: [{
6926
+ type: HostBinding,
6927
+ args: ['attr.aria-busy']
6814
6928
  }], role: [{
6815
6929
  type: HostBinding,
6816
6930
  args: ['attr.role']
6817
- }, {
6931
+ }], haspopup: [{
6818
6932
  type: HostBinding,
6819
6933
  args: ['attr.aria-haspopup']
6820
6934
  }], isAriaExpanded: [{
6821
6935
  type: HostBinding,
6822
6936
  args: ['attr.aria-expanded']
6823
- }], hostAriaOwns: [{
6937
+ }], hostAriaControls: [{
6938
+ type: HostBinding,
6939
+ args: ['attr.aria-controls']
6940
+ }], hostAriaInvalid: [{
6824
6941
  type: HostBinding,
6825
- args: ['attr.aria-owns']
6942
+ args: ['attr.aria-invalid']
6826
6943
  }], hostAriaActivedescendant: [{
6827
6944
  type: HostBinding,
6828
6945
  args: ['attr.aria-activedescendant']
6829
- }], hostNoDataLabel: [{
6830
- type: HostBinding,
6831
- args: ['attr.aria-label']
6832
6946
  }], keydown: [{
6833
6947
  type: HostListener,
6834
6948
  args: ['keydown', ['$event']]
@@ -7426,7 +7540,6 @@ class MultiSelectComponent {
7426
7540
  */
7427
7541
  this.removeTag = new EventEmitter();
7428
7542
  this.hostClasses = true;
7429
- this.role = 'combobox';
7430
7543
  this.initialized = false;
7431
7544
  this._size = 'medium';
7432
7545
  this._rounded = 'medium';
@@ -7739,9 +7852,6 @@ class MultiSelectComponent {
7739
7852
  get isLoading() {
7740
7853
  return this.loading;
7741
7854
  }
7742
- get isAriaExpanded() {
7743
- return this.isOpen;
7744
- }
7745
7855
  /**
7746
7856
  * @hidden
7747
7857
  */
@@ -7803,11 +7913,6 @@ class MultiSelectComponent {
7803
7913
  }
7804
7914
  return prefix + "-" + getter(item, this.valueField);
7805
7915
  }
7806
- get noDataLabel() {
7807
- if (this.dataService.itemsCount === 0) {
7808
- return this.messageFor('noDataText');
7809
- }
7810
- }
7811
7916
  get clearButtonVisiblity() {
7812
7917
  if (this.touchEnabled) {
7813
7918
  return 'visible';
@@ -8463,6 +8568,11 @@ class MultiSelectComponent {
8463
8568
  popupWrapper.style.width = max;
8464
8569
  popupWrapper.style.height = this.height;
8465
8570
  popupWrapper.setAttribute("dir", this.direction);
8571
+ const listBox = popupWrapper.querySelector('ul.k-list-ul');
8572
+ const ariaLabel = this.searchbar.input.nativeElement.getAttribute('aria-labelledby');
8573
+ if (ariaLabel) {
8574
+ listBox.setAttribute('aria-labelledby', ariaLabel);
8575
+ }
8466
8576
  this.popupRef.popupOpen.subscribe(() => {
8467
8577
  this.cdr.detectChanges();
8468
8578
  this.optionsList.scrollToItem(this.selectionService.focused);
@@ -8521,7 +8631,7 @@ class MultiSelectComponent {
8521
8631
  }
8522
8632
  }
8523
8633
  MultiSelectComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: MultiSelectComponent, deps: [{ token: i0.ElementRef }, { token: i1.LocalizationService }, { token: i2.PopupService }, { token: DataService }, { token: SelectionService }, { token: NavigationService }, { token: DisabledItemsService }, { token: i0.ChangeDetectorRef }, { token: i0.KeyValueDiffers }, { token: i0.Renderer2 }, { token: i0.NgZone }, { token: TOUCH_ENABLED, optional: true }], target: i0.ɵɵFactoryTarget.Component });
8524
- MultiSelectComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.16", type: MultiSelectComponent, selector: "kendo-multiselect", inputs: { focusableId: "focusableId", autoClose: "autoClose", loading: "loading", data: "data", value: "value", valueField: "valueField", textField: "textField", tabindex: "tabindex", tabIndex: "tabIndex", size: "size", rounded: "rounded", fillMode: "fillMode", placeholder: "placeholder", disabled: "disabled", itemDisabled: "itemDisabled", checkboxes: "checkboxes", readonly: "readonly", filterable: "filterable", virtual: "virtual", popupSettings: "popupSettings", listHeight: "listHeight", valuePrimitive: "valuePrimitive", clearButton: "clearButton", tagMapper: "tagMapper", allowCustom: "allowCustom", valueNormalizer: "valueNormalizer" }, outputs: { filterChange: "filterChange", valueChange: "valueChange", open: "open", opened: "opened", close: "close", closed: "closed", onFocus: "focus", onBlur: "blur", removeTag: "removeTag" }, host: { listeners: { "mousedown": "hostMousedown($event)" }, properties: { "class.k-multiselect": "this.hostClasses", "class.k-input": "this.hostClasses", "attr.dir": "this.dir", "class.k-disabled": "this.disabledClass", "class.k-loading": "this.isLoading", "attr.role": "this.role", "attr.aria-expanded": "this.isAriaExpanded" } }, providers: [
8634
+ MultiSelectComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.16", type: MultiSelectComponent, selector: "kendo-multiselect", inputs: { focusableId: "focusableId", autoClose: "autoClose", loading: "loading", data: "data", value: "value", valueField: "valueField", textField: "textField", tabindex: "tabindex", tabIndex: "tabIndex", size: "size", rounded: "rounded", fillMode: "fillMode", placeholder: "placeholder", disabled: "disabled", itemDisabled: "itemDisabled", checkboxes: "checkboxes", readonly: "readonly", filterable: "filterable", virtual: "virtual", popupSettings: "popupSettings", listHeight: "listHeight", valuePrimitive: "valuePrimitive", clearButton: "clearButton", tagMapper: "tagMapper", allowCustom: "allowCustom", valueNormalizer: "valueNormalizer" }, outputs: { filterChange: "filterChange", valueChange: "valueChange", open: "open", opened: "opened", close: "close", closed: "closed", onFocus: "focus", onBlur: "blur", removeTag: "removeTag" }, host: { listeners: { "mousedown": "hostMousedown($event)" }, properties: { "class.k-multiselect": "this.hostClasses", "class.k-input": "this.hostClasses", "attr.dir": "this.dir", "class.k-disabled": "this.disabledClass", "class.k-loading": "this.isLoading" } }, providers: [
8525
8635
  MULTISELECT_VALUE_ACCESSOR,
8526
8636
  DataService,
8527
8637
  SelectionService,
@@ -8566,10 +8676,12 @@ MultiSelectComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", v
8566
8676
  <kendo-searchbar
8567
8677
  #searchbar
8568
8678
  [id]="focusableId"
8569
- [role]="'textbox'"
8679
+ [role]="'combobox'"
8570
8680
  [tagListId]="tagListId"
8681
+ [listId]="listBoxId"
8682
+ [isLoading]="loading"
8683
+ [isFilterable]="filterable"
8571
8684
  [activeDescendant]="activeDescendant"
8572
- [noDataLabel]="noDataLabel"
8573
8685
  [userInput]="text"
8574
8686
  [disabled]="disabled"
8575
8687
  [readonly]="readonly"
@@ -8643,6 +8755,7 @@ MultiSelectComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", v
8643
8755
  [virtual]="virtual"
8644
8756
  (pageChange)="pageChange($event)"
8645
8757
  [checkboxes]="checkboxes"
8758
+ [isMultiselect]="true"
8646
8759
  >
8647
8760
  </kendo-list>
8648
8761
  <!--no data template-->
@@ -8667,7 +8780,7 @@ MultiSelectComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", v
8667
8780
  <kendo-resize-sensor (resize)="onResize()"></kendo-resize-sensor>
8668
8781
  </ng-template>
8669
8782
  <ng-container #container></ng-container>
8670
- `, 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", "listId", "tagListId", "activeDescendant", "noDataLabel", "disabled", "readonly", "tabIndex", "popupOpen", "role", "userInput", "suggestedText", "placeholder"], outputs: ["valueChange", "onBlur", "onFocus", "onClick", "onNavigate"] }, { type: ListComponent, selector: "kendo-list", inputs: ["selected", "focused", "textField", "valueField", "height", "template", "groupTemplate", "fixedGroupTemplate", "show", "id", "optionPrefix", "multipleSelection", "virtual", "type", "checkboxes", "data", "size", "rounded"], outputs: ["onClick", "pageChange", "listResize"] }, { type: i9.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: i11.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: TemplateContextDirective, selector: "[templateContext]", inputs: ["templateContext"] }, { type: i11.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: SelectableDirective, selector: "[kendoDropDownsSelectable]", inputs: ["index", "checkboxes", "height", "multipleSelection"] }] });
8783
+ `, 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", "listId", "tagListId", "activeDescendant", "disabled", "readonly", "tabIndex", "popupOpen", "role", "isLoading", "isSuggestable", "isFilterable", "userInput", "suggestedText", "placeholder"], outputs: ["valueChange", "onBlur", "onFocus", "onClick", "onNavigate"] }, { 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: i9.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: i11.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: TemplateContextDirective, selector: "[templateContext]", inputs: ["templateContext"] }, { type: i11.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: SelectableDirective, selector: "[kendoDropDownsSelectable]", inputs: ["index", "checkboxes", "height", "multipleSelection"] }] });
8671
8784
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: MultiSelectComponent, decorators: [{
8672
8785
  type: Component,
8673
8786
  args: [{
@@ -8719,10 +8832,12 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImpo
8719
8832
  <kendo-searchbar
8720
8833
  #searchbar
8721
8834
  [id]="focusableId"
8722
- [role]="'textbox'"
8835
+ [role]="'combobox'"
8723
8836
  [tagListId]="tagListId"
8837
+ [listId]="listBoxId"
8838
+ [isLoading]="loading"
8839
+ [isFilterable]="filterable"
8724
8840
  [activeDescendant]="activeDescendant"
8725
- [noDataLabel]="noDataLabel"
8726
8841
  [userInput]="text"
8727
8842
  [disabled]="disabled"
8728
8843
  [readonly]="readonly"
@@ -8796,6 +8911,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImpo
8796
8911
  [virtual]="virtual"
8797
8912
  (pageChange)="pageChange($event)"
8798
8913
  [checkboxes]="checkboxes"
8914
+ [isMultiselect]="true"
8799
8915
  >
8800
8916
  </kendo-list>
8801
8917
  <!--no data template-->
@@ -8954,12 +9070,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImpo
8954
9070
  }], isLoading: [{
8955
9071
  type: HostBinding,
8956
9072
  args: ['class.k-loading']
8957
- }], role: [{
8958
- type: HostBinding,
8959
- args: ['attr.role']
8960
- }], isAriaExpanded: [{
8961
- type: HostBinding,
8962
- args: ['attr.aria-expanded']
8963
9073
  }], hostMousedown: [{
8964
9074
  type: HostListener,
8965
9075
  args: ['mousedown', ['$event']]
@@ -9266,6 +9376,9 @@ MultiColumnComboBoxComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12
9266
9376
 
9267
9377
  i18n-clearTitle="kendo.multicolumncombobox.clearTitle|The title of the clear button"
9268
9378
  clearTitle="clear"
9379
+
9380
+ i18n-selectButtonText="kendo.multicolumncombobox.selectButtonText|The title of the select button"
9381
+ selectButtonText="Select"
9269
9382
  >
9270
9383
  </ng-container>
9271
9384
  <kendo-searchbar
@@ -9273,8 +9386,10 @@ MultiColumnComboBoxComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12
9273
9386
  [role]="'combobox'"
9274
9387
  [id]="focusableId"
9275
9388
  [listId]="listBoxId"
9389
+ [isLoading]="loading"
9390
+ [isSuggestable]="suggest"
9391
+ [isFilterable]="filterable"
9276
9392
  [activeDescendant]="activeDescendant"
9277
- [noDataLabel]="noDataLabel"
9278
9393
  [userInput]="text"
9279
9394
  [suggestedText]="getSuggestion()"
9280
9395
  [disabled]="disabled"
@@ -9472,7 +9587,7 @@ MultiColumnComboBoxComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12
9472
9587
 
9473
9588
  <!-- when the popupSettings.appendTo value is set to 'component', this container is used -->
9474
9589
  <ng-container #container></ng-container>
9475
- `, isInline: true, components: [{ type: SearchBarComponent, selector: "kendo-searchbar", inputs: ["id", "listId", "tagListId", "activeDescendant", "noDataLabel", "disabled", "readonly", "tabIndex", "popupOpen", "role", "userInput", "suggestedText", "placeholder"], outputs: ["valueChange", "onBlur", "onFocus", "onClick", "onNavigate"] }, { type: ListComponent, selector: "kendo-list", inputs: ["selected", "focused", "textField", "valueField", "height", "template", "groupTemplate", "fixedGroupTemplate", "show", "id", "optionPrefix", "multipleSelection", "virtual", "type", "checkboxes", "data", "size", "rounded"], outputs: ["onClick", "pageChange", "listResize"] }, { type: i9.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: i11.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i9.EventsOutsideAngularDirective, selector: "[kendoEventsOutsideAngular]", inputs: ["kendoEventsOutsideAngular", "scope"] }, { type: i11.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: TemplateContextDirective, selector: "[templateContext]", inputs: ["templateContext"] }, { type: i11.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i11.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }] });
9590
+ `, isInline: true, components: [{ type: SearchBarComponent, selector: "kendo-searchbar", inputs: ["id", "listId", "tagListId", "activeDescendant", "disabled", "readonly", "tabIndex", "popupOpen", "role", "isLoading", "isSuggestable", "isFilterable", "userInput", "suggestedText", "placeholder"], outputs: ["valueChange", "onBlur", "onFocus", "onClick", "onNavigate"] }, { 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: i9.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: i11.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i9.EventsOutsideAngularDirective, selector: "[kendoEventsOutsideAngular]", inputs: ["kendoEventsOutsideAngular", "scope"] }, { type: i11.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: TemplateContextDirective, selector: "[templateContext]", inputs: ["templateContext"] }, { type: i11.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i11.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }] });
9476
9591
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: MultiColumnComboBoxComponent, decorators: [{
9477
9592
  type: Component,
9478
9593
  args: [{
@@ -9510,6 +9625,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImpo
9510
9625
 
9511
9626
  i18n-clearTitle="kendo.multicolumncombobox.clearTitle|The title of the clear button"
9512
9627
  clearTitle="clear"
9628
+
9629
+ i18n-selectButtonText="kendo.multicolumncombobox.selectButtonText|The title of the select button"
9630
+ selectButtonText="Select"
9513
9631
  >
9514
9632
  </ng-container>
9515
9633
  <kendo-searchbar
@@ -9517,8 +9635,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImpo
9517
9635
  [role]="'combobox'"
9518
9636
  [id]="focusableId"
9519
9637
  [listId]="listBoxId"
9638
+ [isLoading]="loading"
9639
+ [isSuggestable]="suggest"
9640
+ [isFilterable]="filterable"
9520
9641
  [activeDescendant]="activeDescendant"
9521
- [noDataLabel]="noDataLabel"
9522
9642
  [userInput]="text"
9523
9643
  [suggestedText]="getSuggestion()"
9524
9644
  [disabled]="disabled"
@@ -13839,21 +13959,21 @@ SharedModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "
13839
13959
  TemplateContextDirective,
13840
13960
  TagListComponent,
13841
13961
  CheckDirective,
13842
- CheckAllDirective], imports: [CommonModule, FormsModule, PopupModule, ResizeSensorModule, SharedDirectivesModule, EventsModule], exports: [ListComponent,
13962
+ CheckAllDirective], imports: [CommonModule, FormsModule, ReactiveFormsModule, PopupModule, ResizeSensorModule, SharedDirectivesModule, EventsModule], exports: [ListComponent,
13843
13963
  ListItemDirective,
13844
13964
  SelectableDirective,
13845
13965
  SearchBarComponent,
13846
13966
  TemplateContextDirective,
13847
13967
  TagListComponent,
13848
13968
  CheckDirective,
13849
- CheckAllDirective, CommonModule, FormsModule, PopupModule, ResizeSensorModule, SharedDirectivesModule, EventsModule] });
13850
- SharedModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: SharedModule, imports: [[CommonModule, FormsModule, PopupModule, ResizeSensorModule, SharedDirectivesModule, EventsModule], CommonModule, FormsModule, PopupModule, ResizeSensorModule, SharedDirectivesModule, EventsModule] });
13969
+ CheckAllDirective, CommonModule, FormsModule, ReactiveFormsModule, PopupModule, ResizeSensorModule, SharedDirectivesModule, EventsModule] });
13970
+ SharedModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: SharedModule, imports: [[CommonModule, FormsModule, ReactiveFormsModule, PopupModule, ResizeSensorModule, SharedDirectivesModule, EventsModule], CommonModule, FormsModule, ReactiveFormsModule, PopupModule, ResizeSensorModule, SharedDirectivesModule, EventsModule] });
13851
13971
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: SharedModule, decorators: [{
13852
13972
  type: NgModule,
13853
13973
  args: [{
13854
13974
  declarations: [INTERNAL_DIRECTIVES],
13855
- exports: [INTERNAL_DIRECTIVES, CommonModule, FormsModule, PopupModule, ResizeSensorModule, SharedDirectivesModule, EventsModule],
13856
- imports: [CommonModule, FormsModule, PopupModule, ResizeSensorModule, SharedDirectivesModule, EventsModule]
13975
+ exports: [INTERNAL_DIRECTIVES, CommonModule, FormsModule, ReactiveFormsModule, PopupModule, ResizeSensorModule, SharedDirectivesModule, EventsModule],
13976
+ imports: [CommonModule, FormsModule, ReactiveFormsModule, PopupModule, ResizeSensorModule, SharedDirectivesModule, EventsModule]
13857
13977
  }]
13858
13978
  }] });
13859
13979