@progress/kendo-angular-dropdowns 25.0.0-develop.7 → 25.0.0-develop.8

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.
@@ -20,8 +20,8 @@ import { map, switchMap, take, auditTime, tap, filter, partition, throttleTime,
20
20
  import * as i2 from '@progress/kendo-angular-popup';
21
21
  import { PopupService } from '@progress/kendo-angular-popup';
22
22
  import { NgStyle, NgClass, NgTemplateOutlet } from '@angular/common';
23
- import { checkIcon, xIcon, chevronDownIcon, searchIcon, xCircleIcon } from '@progress/kendo-svg-icons';
24
- import { IconComponent, IconWrapperComponent, IconsService } from '@progress/kendo-angular-icons';
23
+ import { checkIcon, searchIcon, xIcon, chevronDownIcon, xCircleIcon } from '@progress/kendo-svg-icons';
24
+ import { IconWrapperComponent, IconsService } from '@progress/kendo-angular-icons';
25
25
  import { ActionSheetComponent, ActionSheetTemplateDirective } from '@progress/kendo-angular-navigation';
26
26
  import { TextBoxComponent, TextBoxPrefixTemplateDirective } from '@progress/kendo-angular-inputs';
27
27
  import { ButtonComponent } from '@progress/kendo-angular-buttons';
@@ -37,8 +37,8 @@ const packageMetadata = {
37
37
  productName: 'Kendo UI for Angular',
38
38
  productCode: 'KENDOUIANGULAR',
39
39
  productCodes: ['KENDOUIANGULAR'],
40
- publishDate: 1784618821,
41
- version: '25.0.0-develop.7',
40
+ publishDate: 1784795912,
41
+ version: '25.0.0-develop.8',
42
42
  licensingDocsUrl: 'https://www.telerik.com/kendo-angular-ui/my-license/'
43
43
  };
44
44
 
@@ -477,12 +477,12 @@ class SearchBarComponent {
477
477
  get isSuggestable() {
478
478
  return this._isSuggestable;
479
479
  }
480
- set isFilterable(isFilterable) {
481
- this._isFilterable = isFilterable;
480
+ set hasListAutocomplete(hasListAutocomplete) {
481
+ this._hasListAutocomplete = hasListAutocomplete;
482
482
  this.setAriaAutocomplete();
483
483
  }
484
- get isFilterable() {
485
- return this._isFilterable;
484
+ get hasListAutocomplete() {
485
+ return this._hasListAutocomplete;
486
486
  }
487
487
  get userInput() {
488
488
  return this._userInput;
@@ -521,7 +521,7 @@ class SearchBarComponent {
521
521
  ariaControls;
522
522
  ariaExpanded = null;
523
523
  get attrAriaInvalid() {
524
- return this.formControl?.invalid ? true : null;
524
+ return (this.formControl?.invalid && (this.formControl?.touched || this.formControl?.dirty)) ? true : null;
525
525
  }
526
526
  set placeholder(text) {
527
527
  this._placeholder = text || '';
@@ -549,7 +549,7 @@ class SearchBarComponent {
549
549
  _previousValue = "";
550
550
  _placeholder = "";
551
551
  _isSuggestable = false;
552
- _isFilterable = false;
552
+ _hasListAutocomplete = false;
553
553
  renderer;
554
554
  subs = new Subscription();
555
555
  _inputAttributes;
@@ -569,7 +569,7 @@ class SearchBarComponent {
569
569
  'aria-controls': this.ariaControls,
570
570
  'aria-activedescendant': this.activeDescendant,
571
571
  'aria-busy': this.isLoading,
572
- 'aria-invalid': this.formControl?.invalid
572
+ 'aria-invalid': this.formControl?.invalid && (this.formControl?.touched || this.formControl?.dirty)
573
573
  };
574
574
  }
575
575
  get mutableAttributes() {
@@ -654,16 +654,16 @@ class SearchBarComponent {
654
654
  }
655
655
  }
656
656
  setAriaAutocomplete() {
657
- if (this.isFilterable) {
657
+ if (this.hasListAutocomplete) {
658
658
  this.renderer.setAttribute(this.input.nativeElement, 'aria-autocomplete', 'list');
659
659
  }
660
660
  if (this.isSuggestable) {
661
661
  this.renderer.setAttribute(this.input.nativeElement, 'aria-autocomplete', 'inline');
662
662
  }
663
- if (this.isFilterable && this.isSuggestable) {
663
+ if (this.hasListAutocomplete && this.isSuggestable) {
664
664
  this.renderer.setAttribute(this.input.nativeElement, 'aria-autocomplete', 'both');
665
665
  }
666
- if (!this.isFilterable && !this.isSuggestable) {
666
+ if (!this.hasListAutocomplete && !this.isSuggestable) {
667
667
  this.renderer.removeAttribute(this.input.nativeElement, 'aria-autocomplete');
668
668
  }
669
669
  }
@@ -716,7 +716,7 @@ class SearchBarComponent {
716
716
  setHTMLAttributes(attributesToRender, this.renderer, this.input.nativeElement, this.injector);
717
717
  }
718
718
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.25", ngImport: i0, type: SearchBarComponent, deps: [{ token: i1.LocalizationService }, { token: i0.Renderer2 }, { token: i0.Injector }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component });
719
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.25", type: SearchBarComponent, isStandalone: true, selector: "input[kendoSearchbar]", inputs: { tagListId: "tagListId", readonly: "readonly", disabled: "disabled", isRequired: "isRequired", isSuggestable: "isSuggestable", isFilterable: "isFilterable", userInput: "userInput", suggestedText: "suggestedText", inputAttributes: "inputAttributes", id: "id", activeDescendant: "activeDescendant", tabIndex: "tabIndex", isLoading: "isLoading", ariaControls: "ariaControls", ariaExpanded: "ariaExpanded", placeholder: "placeholder" }, outputs: { valueChange: "valueChange", onBlur: "onBlur", onFocus: "onFocus", onClick: "onClick", onNavigate: "onNavigate" }, host: { properties: { "attr.id": "this.id", "attr.aria-activedescendant": "this.activeDescendant", "attr.tabindex": "this.tabIndex", "attr.aria-busy": "this.isLoading", "attr.aria-controls": "this.ariaControls", "attr.aria-expanded": "this.ariaExpanded", "attr.aria-invalid": "this.attrAriaInvalid", "attr.placeholder": "this.placeholder", "attr.role": "this.role", "attr.dir": "this.dir" } }, usesOnChanges: true, ngImport: i0, template: ``, isInline: true });
719
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.25", type: SearchBarComponent, isStandalone: true, selector: "input[kendoSearchbar]", inputs: { tagListId: "tagListId", readonly: "readonly", disabled: "disabled", isRequired: "isRequired", isSuggestable: "isSuggestable", hasListAutocomplete: "hasListAutocomplete", userInput: "userInput", suggestedText: "suggestedText", inputAttributes: "inputAttributes", id: "id", activeDescendant: "activeDescendant", tabIndex: "tabIndex", isLoading: "isLoading", ariaControls: "ariaControls", ariaExpanded: "ariaExpanded", placeholder: "placeholder" }, outputs: { valueChange: "valueChange", onBlur: "onBlur", onFocus: "onFocus", onClick: "onClick", onNavigate: "onNavigate" }, host: { properties: { "attr.id": "this.id", "attr.aria-activedescendant": "this.activeDescendant", "attr.tabindex": "this.tabIndex", "attr.aria-busy": "this.isLoading", "attr.aria-controls": "this.ariaControls", "attr.aria-expanded": "this.ariaExpanded", "attr.aria-invalid": "this.attrAriaInvalid", "attr.placeholder": "this.placeholder", "attr.role": "this.role", "attr.dir": "this.dir" } }, usesOnChanges: true, ngImport: i0, template: ``, isInline: true });
720
720
  }
721
721
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.25", ngImport: i0, type: SearchBarComponent, decorators: [{
722
722
  type: Component,
@@ -735,7 +735,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.25", ngImpo
735
735
  type: Input
736
736
  }], isSuggestable: [{
737
737
  type: Input
738
- }], isFilterable: [{
738
+ }], hasListAutocomplete: [{
739
739
  type: Input
740
740
  }], userInput: [{
741
741
  type: Input
@@ -1937,10 +1937,12 @@ class ListComponent {
1937
1937
  type = 'list';
1938
1938
  checkboxes = { enabled: false };
1939
1939
  ariaLive;
1940
+ ariaLabel;
1940
1941
  isMultiselect;
1941
1942
  isActionSheetExpanded;
1942
1943
  showStickyHeader;
1943
1944
  rowWidth;
1945
+ columnsWidths;
1944
1946
  customItemTemplate;
1945
1947
  text;
1946
1948
  allowCustom;
@@ -1965,12 +1967,12 @@ class ListComponent {
1965
1967
  }
1966
1968
  set size(size) {
1967
1969
  if (this.type === 'list') {
1968
- this.renderer.removeClass(this.wrapper.nativeElement, getSizeClass('list', this.size));
1970
+ this.renderer.removeClass(this.wrapper.nativeElement, getSizeClass('list', this._size));
1969
1971
  if (size) {
1970
1972
  this.renderer.addClass(this.wrapper.nativeElement, getSizeClass('list', size));
1971
1973
  }
1972
- this._size = size;
1973
1974
  }
1975
+ this._size = size;
1974
1976
  }
1975
1977
  get size() {
1976
1978
  return this._size;
@@ -2284,6 +2286,10 @@ class ListComponent {
2284
2286
  isItemSelected(index) {
2285
2287
  return this.selectionService.isSelected(index) || null;
2286
2288
  }
2289
+ itemAriaSelected(index) {
2290
+ const selected = this.isItemSelected(index);
2291
+ return this.type === 'list' ? (selected ?? false) : selected;
2292
+ }
2287
2293
  get isDisabledDefaultItem() {
2288
2294
  return this.disabledItemsService.isItemDisabled(this.defaultItem);
2289
2295
  }
@@ -2324,13 +2330,16 @@ class ListComponent {
2324
2330
  }
2325
2331
  if (this.type === 'dropdowngrid') {
2326
2332
  this.renderer.setStyle(this.wrapper.nativeElement, 'overflow-y', 'scroll');
2333
+ if (this.size) {
2334
+ this.renderer.removeClass(this.wrapper.nativeElement, getSizeClass('list', this.size));
2335
+ }
2327
2336
  }
2328
2337
  if (isPresent(this.virtual)) {
2329
2338
  this.renderer.addClass(this.wrapper.nativeElement, this.listVirtualClass);
2330
2339
  }
2331
2340
  }
2332
2341
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.25", ngImport: i0, type: ListComponent, deps: [{ token: DataService }, { token: i0.ElementRef }, { token: SelectionService }, { token: DisabledItemsService }, { token: i0.ChangeDetectorRef }, { token: i0.NgZone }, { token: i0.Renderer2 }, { token: i1.LocalizationService }, { token: i0.Injector }], target: i0.ɵɵFactoryTarget.Component });
2333
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.25", type: ListComponent, isStandalone: true, 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", isActionSheetExpanded: "isActionSheetExpanded", showStickyHeader: "showStickyHeader", rowWidth: "rowWidth", customItemTemplate: "customItemTemplate", text: "text", allowCustom: "allowCustom", defaultItem: "defaultItem", data: "data", size: "size", rounded: "rounded" }, outputs: { onClick: "onClick", pageChange: "pageChange", listResize: "listResize", popupListScroll: "popupListScroll" }, viewQueries: [{ propertyName: "content", first: true, predicate: ["content"], descendants: true, static: true }, { propertyName: "list", first: true, predicate: ["list"], descendants: true }, { propertyName: "virtualContainer", first: true, predicate: ["virtualContainer"], descendants: true }, { propertyName: "items", predicate: ListItemDirective, descendants: true }], usesOnChanges: true, ngImport: i0, template: `
2342
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.25", type: ListComponent, isStandalone: true, 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", ariaLabel: "ariaLabel", isMultiselect: "isMultiselect", isActionSheetExpanded: "isActionSheetExpanded", showStickyHeader: "showStickyHeader", rowWidth: "rowWidth", columnsWidths: "columnsWidths", customItemTemplate: "customItemTemplate", text: "text", allowCustom: "allowCustom", defaultItem: "defaultItem", data: "data", size: "size", rounded: "rounded" }, outputs: { onClick: "onClick", pageChange: "pageChange", listResize: "listResize", popupListScroll: "popupListScroll" }, viewQueries: [{ propertyName: "content", first: true, predicate: ["content"], descendants: true, static: true }, { propertyName: "list", first: true, predicate: ["list"], descendants: true }, { propertyName: "virtualContainer", first: true, predicate: ["virtualContainer"], descendants: true }, { propertyName: "items", predicate: ListItemDirective, descendants: true }], usesOnChanges: true, ngImport: i0, template: `
2334
2343
  @if (defaultItem && !template) {
2335
2344
  <div
2336
2345
  class="k-list-optionlabel"
@@ -2400,11 +2409,12 @@ class ListComponent {
2400
2409
  [style.maxHeight.px]="height"
2401
2410
  unselectable="on"
2402
2411
  (scroll)="popupListScroll.emit($event)"
2403
- [attr.role]="dataService.grouped ? 'listbox' : null"
2404
- [attr.id]="dataService.grouped ? id : null"
2405
- [attr.aria-live]="dataService.grouped ? ariaLive : null"
2406
- [attr.aria-multiselectable]="dataService.grouped ? isMultiselect : null"
2407
- [attr.aria-hidden]="dataService.grouped ? !show : null"
2412
+ [attr.role]="(dataService.grouped && type === 'list') ? 'listbox' : null"
2413
+ [attr.id]="(dataService.grouped && type === 'list') ? id : null"
2414
+ [attr.aria-live]="(dataService.grouped && type === 'list') ? ariaLive : null"
2415
+ [attr.aria-multiselectable]="(dataService.grouped && type === 'list') ? isMultiselect : null"
2416
+ [attr.aria-hidden]="(dataService.grouped && type === 'list') ? (!show ? true : null) : null"
2417
+ [attr.aria-label]="(dataService.grouped && type === 'list') ? (ariaLabel || null) : null"
2408
2418
  >
2409
2419
  @if (!dataService.grouped) {
2410
2420
  <ul #list
@@ -2413,7 +2423,8 @@ class ListComponent {
2413
2423
  [attr.id]="id"
2414
2424
  [attr.aria-live]="ariaLive"
2415
2425
  [attr.aria-multiselectable]="isMultiselect"
2416
- [attr.aria-hidden]="!show">
2426
+ [attr.aria-hidden]="!show ? true : null"
2427
+ [attr.aria-label]="ariaLabel || null">
2417
2428
  @for (dataItem of data; track $index; let itemIndex = $index) {
2418
2429
  <li
2419
2430
  role="option"
@@ -2424,7 +2435,7 @@ class ListComponent {
2424
2435
  [multipleSelection]="multipleSelection"
2425
2436
  [attr.id]="optionPrefix + '-' + itemIndex"
2426
2437
  [attr.tabIndex]="-1"
2427
- [attr.aria-selected]="isItemSelected(itemIndex)"
2438
+ [attr.aria-selected]="itemAriaSelected(itemIndex)"
2428
2439
  [class]="listItemClass"
2429
2440
  [ngClass]="{
2430
2441
  'k-disabled': isDisabled(itemIndex),
@@ -2465,7 +2476,7 @@ class ListComponent {
2465
2476
  </ul>
2466
2477
  }
2467
2478
 
2468
- @if (dataService.grouped) {
2479
+ @if (dataService.grouped && type === 'list') {
2469
2480
  <ng-container #list>
2470
2481
  @for (dataItem of groupedData; track dataItem.groupIndex) {
2471
2482
  <ul
@@ -2512,7 +2523,7 @@ class ListComponent {
2512
2523
  [attr.absolute-index]="item.index"
2513
2524
  [attr.id]="optionPrefix + '-' + (item.index - 1 - item.groupIndex)"
2514
2525
  [attr.tabIndex]="-1"
2515
- [attr.aria-selected]="isItemSelected(item.offsetIndex)"
2526
+ [attr.aria-selected]="itemAriaSelected(item.offsetIndex)"
2516
2527
  [class]="listItemClass"
2517
2528
  [ngClass]="{
2518
2529
  'k-disabled': isDisabled(item.offsetIndex),
@@ -2542,14 +2553,96 @@ class ListComponent {
2542
2553
  }
2543
2554
  </ng-container>
2544
2555
  }
2556
+
2557
+ @if (dataService.grouped && type === 'dropdowngrid') {
2558
+ <ul #list
2559
+ [attr.role]="'listbox'"
2560
+ [class]="listClass"
2561
+ [attr.id]="id"
2562
+ [attr.aria-live]="ariaLive"
2563
+ [attr.aria-label]="ariaLabel || null">
2564
+ @if (columnsWidths?.length) {
2565
+ <div
2566
+ role="presentation"
2567
+ aria-hidden="true"
2568
+ [style.display]="'table-column-group'"
2569
+ >
2570
+ @for (columnWidth of columnsWidths; track $index) {
2571
+ <div [style.display]="'table-column'" [style.width.px]="columnWidth ?? null"></div>
2572
+ }
2573
+ </div>
2574
+ }
2575
+ @for (dataItem of groupedData; track dataItem.groupIndex) {
2576
+ @if (dataItem.header) {
2577
+ <li
2578
+ role="presentation"
2579
+ [class]="listGroupItemClass"
2580
+ [attr.group-index]="dataItem.index"
2581
+ [style.width.px]="rowWidth ?? null"
2582
+ >
2583
+ <span [class]="listGroupItemTextClass">
2584
+ @if (groupTemplate) {
2585
+ <ng-template
2586
+ [templateContext]="{
2587
+ templateRef: groupTemplate.templateRef,
2588
+ $implicit: dataItem.value
2589
+ }">
2590
+ </ng-template>
2591
+ }
2592
+ @if (!groupTemplate) {
2593
+ {{ dataItem.value }}
2594
+ }
2595
+ </span>
2596
+ </li>
2597
+ }
2598
+ @for (item of dataItem.items; track item.offsetIndex) {
2599
+ <li
2600
+ role="option"
2601
+ kendoDropDownsSelectable
2602
+ [height]="virtual?.itemHeight"
2603
+ [index]="item.offsetIndex"
2604
+ [multipleSelection]="multipleSelection"
2605
+ [attr.absolute-index]="item.index"
2606
+ [attr.id]="optionPrefix + '-' + (item.index - 1 - item.groupIndex)"
2607
+ [attr.tabIndex]="-1"
2608
+ [attr.aria-selected]="itemAriaSelected(item.offsetIndex)"
2609
+ [class]="listItemClass"
2610
+ [ngClass]="{
2611
+ 'k-disabled': isDisabled(item.offsetIndex),
2612
+ 'k-table-alt-row': isAltRow(item.index - 1)
2613
+ }"
2614
+ [style.width.px]="rowWidth ?? null">
2615
+ @if (template) {
2616
+ <ng-template
2617
+ [templateContext]="{
2618
+ templateRef: template.templateRef,
2619
+ $implicit: item.value
2620
+ }">
2621
+ </ng-template>
2622
+ }
2623
+ @if (!template) {
2624
+ <span class="k-list-item-text">{{ getText(item.value) }}</span>
2625
+ }
2626
+ </li>
2627
+ }
2628
+ }
2629
+ @if (!virtual) {
2630
+ <kendo-resize-sensor
2631
+ (resize)="listResize.emit()"
2632
+ >
2633
+ </kendo-resize-sensor>
2634
+ }
2635
+ </ul>
2636
+ }
2545
2637
  @if (virtual) {
2546
- <div #virtualContainer class="k-height-container" role="presentation">
2638
+ <div #virtualContainer class="k-height-container">
2547
2639
  <div [style.height.px]="scrollHeight">
2548
2640
  <kendo-resize-sensor (resize)="listResize.emit()"></kendo-resize-sensor>
2549
2641
  </div>
2550
2642
  </div>
2551
2643
  }
2552
2644
  </div>
2645
+ <ng-content select=".k-no-data"></ng-content>
2553
2646
  `, isInline: true, dependencies: [{ kind: "directive", type: NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "directive", type: TemplateContextDirective, selector: "[templateContext]", inputs: ["templateContext"] }, { kind: "directive", type: ListItemDirective, selector: "\"li[role=option], li[role=group], li[role=presentation]\"" }, { kind: "directive", type: SelectableDirective, selector: "[kendoDropDownsSelectable]", inputs: ["index", "checkboxes", "height", "isMultiselect", "multipleSelection"] }, { kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "component", type: ResizeSensorComponent, selector: "kendo-resize-sensor", inputs: ["rateLimit"], outputs: ["resize"] }] });
2554
2647
  }
2555
2648
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.25", ngImport: i0, type: ListComponent, decorators: [{
@@ -2626,11 +2719,12 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.25", ngImpo
2626
2719
  [style.maxHeight.px]="height"
2627
2720
  unselectable="on"
2628
2721
  (scroll)="popupListScroll.emit($event)"
2629
- [attr.role]="dataService.grouped ? 'listbox' : null"
2630
- [attr.id]="dataService.grouped ? id : null"
2631
- [attr.aria-live]="dataService.grouped ? ariaLive : null"
2632
- [attr.aria-multiselectable]="dataService.grouped ? isMultiselect : null"
2633
- [attr.aria-hidden]="dataService.grouped ? !show : null"
2722
+ [attr.role]="(dataService.grouped && type === 'list') ? 'listbox' : null"
2723
+ [attr.id]="(dataService.grouped && type === 'list') ? id : null"
2724
+ [attr.aria-live]="(dataService.grouped && type === 'list') ? ariaLive : null"
2725
+ [attr.aria-multiselectable]="(dataService.grouped && type === 'list') ? isMultiselect : null"
2726
+ [attr.aria-hidden]="(dataService.grouped && type === 'list') ? (!show ? true : null) : null"
2727
+ [attr.aria-label]="(dataService.grouped && type === 'list') ? (ariaLabel || null) : null"
2634
2728
  >
2635
2729
  @if (!dataService.grouped) {
2636
2730
  <ul #list
@@ -2639,7 +2733,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.25", ngImpo
2639
2733
  [attr.id]="id"
2640
2734
  [attr.aria-live]="ariaLive"
2641
2735
  [attr.aria-multiselectable]="isMultiselect"
2642
- [attr.aria-hidden]="!show">
2736
+ [attr.aria-hidden]="!show ? true : null"
2737
+ [attr.aria-label]="ariaLabel || null">
2643
2738
  @for (dataItem of data; track $index; let itemIndex = $index) {
2644
2739
  <li
2645
2740
  role="option"
@@ -2650,7 +2745,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.25", ngImpo
2650
2745
  [multipleSelection]="multipleSelection"
2651
2746
  [attr.id]="optionPrefix + '-' + itemIndex"
2652
2747
  [attr.tabIndex]="-1"
2653
- [attr.aria-selected]="isItemSelected(itemIndex)"
2748
+ [attr.aria-selected]="itemAriaSelected(itemIndex)"
2654
2749
  [class]="listItemClass"
2655
2750
  [ngClass]="{
2656
2751
  'k-disabled': isDisabled(itemIndex),
@@ -2691,7 +2786,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.25", ngImpo
2691
2786
  </ul>
2692
2787
  }
2693
2788
 
2694
- @if (dataService.grouped) {
2789
+ @if (dataService.grouped && type === 'list') {
2695
2790
  <ng-container #list>
2696
2791
  @for (dataItem of groupedData; track dataItem.groupIndex) {
2697
2792
  <ul
@@ -2738,7 +2833,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.25", ngImpo
2738
2833
  [attr.absolute-index]="item.index"
2739
2834
  [attr.id]="optionPrefix + '-' + (item.index - 1 - item.groupIndex)"
2740
2835
  [attr.tabIndex]="-1"
2741
- [attr.aria-selected]="isItemSelected(item.offsetIndex)"
2836
+ [attr.aria-selected]="itemAriaSelected(item.offsetIndex)"
2742
2837
  [class]="listItemClass"
2743
2838
  [ngClass]="{
2744
2839
  'k-disabled': isDisabled(item.offsetIndex),
@@ -2768,14 +2863,96 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.25", ngImpo
2768
2863
  }
2769
2864
  </ng-container>
2770
2865
  }
2866
+
2867
+ @if (dataService.grouped && type === 'dropdowngrid') {
2868
+ <ul #list
2869
+ [attr.role]="'listbox'"
2870
+ [class]="listClass"
2871
+ [attr.id]="id"
2872
+ [attr.aria-live]="ariaLive"
2873
+ [attr.aria-label]="ariaLabel || null">
2874
+ @if (columnsWidths?.length) {
2875
+ <div
2876
+ role="presentation"
2877
+ aria-hidden="true"
2878
+ [style.display]="'table-column-group'"
2879
+ >
2880
+ @for (columnWidth of columnsWidths; track $index) {
2881
+ <div [style.display]="'table-column'" [style.width.px]="columnWidth ?? null"></div>
2882
+ }
2883
+ </div>
2884
+ }
2885
+ @for (dataItem of groupedData; track dataItem.groupIndex) {
2886
+ @if (dataItem.header) {
2887
+ <li
2888
+ role="presentation"
2889
+ [class]="listGroupItemClass"
2890
+ [attr.group-index]="dataItem.index"
2891
+ [style.width.px]="rowWidth ?? null"
2892
+ >
2893
+ <span [class]="listGroupItemTextClass">
2894
+ @if (groupTemplate) {
2895
+ <ng-template
2896
+ [templateContext]="{
2897
+ templateRef: groupTemplate.templateRef,
2898
+ $implicit: dataItem.value
2899
+ }">
2900
+ </ng-template>
2901
+ }
2902
+ @if (!groupTemplate) {
2903
+ {{ dataItem.value }}
2904
+ }
2905
+ </span>
2906
+ </li>
2907
+ }
2908
+ @for (item of dataItem.items; track item.offsetIndex) {
2909
+ <li
2910
+ role="option"
2911
+ kendoDropDownsSelectable
2912
+ [height]="virtual?.itemHeight"
2913
+ [index]="item.offsetIndex"
2914
+ [multipleSelection]="multipleSelection"
2915
+ [attr.absolute-index]="item.index"
2916
+ [attr.id]="optionPrefix + '-' + (item.index - 1 - item.groupIndex)"
2917
+ [attr.tabIndex]="-1"
2918
+ [attr.aria-selected]="itemAriaSelected(item.offsetIndex)"
2919
+ [class]="listItemClass"
2920
+ [ngClass]="{
2921
+ 'k-disabled': isDisabled(item.offsetIndex),
2922
+ 'k-table-alt-row': isAltRow(item.index - 1)
2923
+ }"
2924
+ [style.width.px]="rowWidth ?? null">
2925
+ @if (template) {
2926
+ <ng-template
2927
+ [templateContext]="{
2928
+ templateRef: template.templateRef,
2929
+ $implicit: item.value
2930
+ }">
2931
+ </ng-template>
2932
+ }
2933
+ @if (!template) {
2934
+ <span class="k-list-item-text">{{ getText(item.value) }}</span>
2935
+ }
2936
+ </li>
2937
+ }
2938
+ }
2939
+ @if (!virtual) {
2940
+ <kendo-resize-sensor
2941
+ (resize)="listResize.emit()"
2942
+ >
2943
+ </kendo-resize-sensor>
2944
+ }
2945
+ </ul>
2946
+ }
2771
2947
  @if (virtual) {
2772
- <div #virtualContainer class="k-height-container" role="presentation">
2948
+ <div #virtualContainer class="k-height-container">
2773
2949
  <div [style.height.px]="scrollHeight">
2774
2950
  <kendo-resize-sensor (resize)="listResize.emit()"></kendo-resize-sensor>
2775
2951
  </div>
2776
2952
  </div>
2777
2953
  }
2778
2954
  </div>
2955
+ <ng-content select=".k-no-data"></ng-content>
2779
2956
  `,
2780
2957
  standalone: true,
2781
2958
  imports: [NgStyle, TemplateContextDirective, ListItemDirective, SelectableDirective, NgClass, ResizeSensorComponent]
@@ -2812,6 +2989,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.25", ngImpo
2812
2989
  type: Input
2813
2990
  }], ariaLive: [{
2814
2991
  type: Input
2992
+ }], ariaLabel: [{
2993
+ type: Input
2815
2994
  }], isMultiselect: [{
2816
2995
  type: Input
2817
2996
  }], isActionSheetExpanded: [{
@@ -2820,6 +2999,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.25", ngImpo
2820
2999
  type: Input
2821
3000
  }], rowWidth: [{
2822
3001
  type: Input
3002
+ }], columnsWidths: [{
3003
+ type: Input
2823
3004
  }], customItemTemplate: [{
2824
3005
  type: Input
2825
3006
  }], text: [{
@@ -2891,6 +3072,7 @@ class AdaptiveRendererComponent {
2891
3072
  placeholder;
2892
3073
  searchBarValue;
2893
3074
  filterable;
3075
+ showListContainer = true;
2894
3076
  closePopup = new EventEmitter();
2895
3077
  textInputChange = new EventEmitter();
2896
3078
  navigate = new EventEmitter();
@@ -2903,6 +3085,7 @@ class AdaptiveRendererComponent {
2903
3085
  }
2904
3086
  animationDuration = animationDuration;
2905
3087
  checkIcon = checkIcon;
3088
+ searchIcon = searchIcon;
2906
3089
  expanded = false;
2907
3090
  messageFor(key) {
2908
3091
  return this.localization.get(key);
@@ -2928,7 +3111,7 @@ class AdaptiveRendererComponent {
2928
3111
  return this.adaptiveService.size;
2929
3112
  }
2930
3113
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.25", ngImport: i0, type: AdaptiveRendererComponent, deps: [{ token: i1.LocalizationService }, { token: i7.AdaptiveService }], target: i0.ɵɵFactoryTarget.Component });
2931
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.25", type: AdaptiveRendererComponent, isStandalone: true, selector: "kendo-adaptive-renderer", inputs: { title: "title", subtitle: "subtitle", showTextInput: "showTextInput", sharedPopupActionSheetTemplate: "sharedPopupActionSheetTemplate", text: "text", placeholder: "placeholder", searchBarValue: "searchBarValue", filterable: "filterable" }, outputs: { closePopup: "closePopup", textInputChange: "textInputChange", navigate: "navigate", onExpand: "onExpand" }, viewQueries: [{ propertyName: "actionSheet", first: true, predicate: ActionSheetComponent, descendants: true }, { propertyName: "actionSheetSearchBar", first: true, predicate: ["actionSheetSearchBar"], descendants: true }], ngImport: i0, template: `
3114
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.25", type: AdaptiveRendererComponent, isStandalone: true, selector: "kendo-adaptive-renderer", inputs: { title: "title", subtitle: "subtitle", showTextInput: "showTextInput", sharedPopupActionSheetTemplate: "sharedPopupActionSheetTemplate", text: "text", placeholder: "placeholder", searchBarValue: "searchBarValue", filterable: "filterable", showListContainer: "showListContainer" }, outputs: { closePopup: "closePopup", textInputChange: "textInputChange", navigate: "navigate", onExpand: "onExpand" }, viewQueries: [{ propertyName: "actionSheet", first: true, predicate: ActionSheetComponent, descendants: true }, { propertyName: "actionSheetSearchBar", first: true, predicate: ["actionSheetSearchBar"], descendants: true }], ngImport: i0, template: `
2932
3115
  <kendo-actionsheet
2933
3116
  #actionSheet
2934
3117
  [animation]="{ duration: animationDuration }"
@@ -2947,7 +3130,7 @@ class AdaptiveRendererComponent {
2947
3130
  (collapse)="closePopup.emit()"
2948
3131
  >
2949
3132
  <ng-template kendoActionSheetTemplate>
2950
- <div class="k-text-center k-actionsheet-titlebar">
3133
+ <div class="k-actionsheet-titlebar">
2951
3134
  <div class="k-actionsheet-titlebar-group">
2952
3135
  <div class="k-actionsheet-title">
2953
3136
  @if (title) {
@@ -2963,6 +3146,7 @@ class AdaptiveRendererComponent {
2963
3146
  icon="check"
2964
3147
  type="button"
2965
3148
  [attr.title]="messageFor('adaptiveCloseButtonTitle')"
3149
+ [attr.aria-label]="messageFor('adaptiveCloseButtonTitle')"
2966
3150
  [svgIcon]="checkIcon"
2967
3151
  fillMode="flat"
2968
3152
  themeColor="primary"
@@ -2980,13 +3164,13 @@ class AdaptiveRendererComponent {
2980
3164
  [value]="searchBarValue || ''"
2981
3165
  size="large"
2982
3166
  [placeholder]="filterable ? messageFor('filterInputPlaceholder') : placeholder"
2983
- class="k-searchbox"
3167
+ [inputAttributes]="{'aria-label': title}"
2984
3168
  autocomplete="off"
2985
3169
  (valueChange)="onValueChange($event)"
2986
3170
  >
2987
3171
  @if (filterable) {
2988
3172
  <ng-template kendoTextBoxPrefixTemplate>
2989
- <kendo-icon name="search"></kendo-icon>
3173
+ <kendo-icon-wrapper name="search" [svgIcon]="searchIcon"></kendo-icon-wrapper>
2990
3174
  </ng-template>
2991
3175
  }
2992
3176
  </kendo-textbox>
@@ -2994,13 +3178,17 @@ class AdaptiveRendererComponent {
2994
3178
  }
2995
3179
  </div>
2996
3180
  <div class="k-actionsheet-content">
3181
+ @if (showListContainer) {
2997
3182
  <div class="k-list-container">
2998
3183
  <ng-container *ngTemplateOutlet="sharedPopupActionSheetTemplate"></ng-container>
2999
3184
  </div>
3185
+ } @else {
3186
+ <ng-container *ngTemplateOutlet="sharedPopupActionSheetTemplate"></ng-container>
3187
+ }
3000
3188
  </div>
3001
3189
  </ng-template>
3002
3190
  </kendo-actionsheet>
3003
- `, isInline: true, dependencies: [{ kind: "component", type: ActionSheetComponent, selector: "kendo-actionsheet", inputs: ["actions", "actionsLayout", "overlayClickClose", "title", "subtitle", "items", "cssClass", "cssStyle", "animation", "expanded", "titleId", "initialFocus"], outputs: ["expandedChange", "action", "expand", "collapse", "itemClick", "overlayClick"], exportAs: ["kendoActionSheet"] }, { kind: "directive", type: ActionSheetTemplateDirective, selector: "[kendoActionSheetTemplate]" }, { kind: "component", type: ButtonComponent, selector: "button[kendoButton]", inputs: ["arrowIcon", "toggleable", "togglable", "selected", "tabIndex", "imageUrl", "iconPosition", "iconClass", "icon", "disabled", "size", "rounded", "fillMode", "themeColor", "svgIcon"], outputs: ["selectedChange", "click"], exportAs: ["kendoButton"] }, { kind: "component", type: TextBoxComponent, selector: "kendo-textbox", inputs: ["focusableId", "title", "type", "disabled", "readonly", "tabindex", "value", "selectOnFocus", "showSuccessIcon", "showErrorIcon", "clearButton", "successIcon", "successSvgIcon", "errorIcon", "errorSvgIcon", "clearButtonIcon", "clearButtonSvgIcon", "size", "rounded", "fillMode", "tabIndex", "placeholder", "maxlength", "inputAttributes"], outputs: ["valueChange", "inputFocus", "inputBlur", "focus", "blur"], exportAs: ["kendoTextBox"] }, { kind: "directive", type: TextBoxPrefixTemplateDirective, selector: "[kendoTextBoxPrefixTemplate]", inputs: ["showSeparator"] }, { kind: "component", type: IconComponent, selector: "kendo-icon", inputs: ["name"], exportAs: ["kendoIcon"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }] });
3191
+ `, isInline: true, dependencies: [{ kind: "component", type: ActionSheetComponent, selector: "kendo-actionsheet", inputs: ["actions", "actionsLayout", "overlayClickClose", "title", "subtitle", "items", "cssClass", "cssStyle", "animation", "expanded", "titleId", "initialFocus"], outputs: ["expandedChange", "action", "expand", "collapse", "itemClick", "overlayClick"], exportAs: ["kendoActionSheet"] }, { kind: "directive", type: ActionSheetTemplateDirective, selector: "[kendoActionSheetTemplate]" }, { kind: "component", type: ButtonComponent, selector: "button[kendoButton]", inputs: ["arrowIcon", "toggleable", "togglable", "selected", "tabIndex", "imageUrl", "iconPosition", "iconClass", "icon", "disabled", "size", "rounded", "fillMode", "themeColor", "svgIcon"], outputs: ["selectedChange", "click"], exportAs: ["kendoButton"] }, { kind: "component", type: TextBoxComponent, selector: "kendo-textbox", inputs: ["focusableId", "title", "type", "disabled", "readonly", "tabindex", "value", "selectOnFocus", "showSuccessIcon", "showErrorIcon", "clearButton", "successIcon", "successSvgIcon", "errorIcon", "errorSvgIcon", "clearButtonIcon", "clearButtonSvgIcon", "size", "rounded", "fillMode", "tabIndex", "placeholder", "maxlength", "inputAttributes"], outputs: ["valueChange", "inputFocus", "inputBlur", "focus", "blur"], exportAs: ["kendoTextBox"] }, { kind: "directive", type: TextBoxPrefixTemplateDirective, selector: "[kendoTextBoxPrefixTemplate]", inputs: ["showSeparator"] }, { kind: "component", type: IconWrapperComponent, selector: "kendo-icon-wrapper", inputs: ["name", "svgIcon", "innerCssClass", "customFontClass", "size"], exportAs: ["kendoIconWrapper"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }] });
3004
3192
  }
3005
3193
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.25", ngImport: i0, type: AdaptiveRendererComponent, decorators: [{
3006
3194
  type: Component,
@@ -3025,7 +3213,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.25", ngImpo
3025
3213
  (collapse)="closePopup.emit()"
3026
3214
  >
3027
3215
  <ng-template kendoActionSheetTemplate>
3028
- <div class="k-text-center k-actionsheet-titlebar">
3216
+ <div class="k-actionsheet-titlebar">
3029
3217
  <div class="k-actionsheet-titlebar-group">
3030
3218
  <div class="k-actionsheet-title">
3031
3219
  @if (title) {
@@ -3041,6 +3229,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.25", ngImpo
3041
3229
  icon="check"
3042
3230
  type="button"
3043
3231
  [attr.title]="messageFor('adaptiveCloseButtonTitle')"
3232
+ [attr.aria-label]="messageFor('adaptiveCloseButtonTitle')"
3044
3233
  [svgIcon]="checkIcon"
3045
3234
  fillMode="flat"
3046
3235
  themeColor="primary"
@@ -3058,13 +3247,13 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.25", ngImpo
3058
3247
  [value]="searchBarValue || ''"
3059
3248
  size="large"
3060
3249
  [placeholder]="filterable ? messageFor('filterInputPlaceholder') : placeholder"
3061
- class="k-searchbox"
3250
+ [inputAttributes]="{'aria-label': title}"
3062
3251
  autocomplete="off"
3063
3252
  (valueChange)="onValueChange($event)"
3064
3253
  >
3065
3254
  @if (filterable) {
3066
3255
  <ng-template kendoTextBoxPrefixTemplate>
3067
- <kendo-icon name="search"></kendo-icon>
3256
+ <kendo-icon-wrapper name="search" [svgIcon]="searchIcon"></kendo-icon-wrapper>
3068
3257
  </ng-template>
3069
3258
  }
3070
3259
  </kendo-textbox>
@@ -3072,15 +3261,19 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.25", ngImpo
3072
3261
  }
3073
3262
  </div>
3074
3263
  <div class="k-actionsheet-content">
3264
+ @if (showListContainer) {
3075
3265
  <div class="k-list-container">
3076
3266
  <ng-container *ngTemplateOutlet="sharedPopupActionSheetTemplate"></ng-container>
3077
3267
  </div>
3268
+ } @else {
3269
+ <ng-container *ngTemplateOutlet="sharedPopupActionSheetTemplate"></ng-container>
3270
+ }
3078
3271
  </div>
3079
3272
  </ng-template>
3080
3273
  </kendo-actionsheet>
3081
3274
  `,
3082
3275
  standalone: true,
3083
- imports: [ActionSheetComponent, ActionSheetTemplateDirective, ButtonComponent, TextBoxComponent, TextBoxPrefixTemplateDirective, IconComponent, NgTemplateOutlet]
3276
+ imports: [ActionSheetComponent, ActionSheetTemplateDirective, ButtonComponent, TextBoxComponent, TextBoxPrefixTemplateDirective, IconWrapperComponent, NgTemplateOutlet]
3084
3277
  }]
3085
3278
  }], ctorParameters: () => [{ type: i1.LocalizationService }, { type: i7.AdaptiveService }], propDecorators: { title: [{
3086
3279
  type: Input
@@ -3098,6 +3291,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.25", ngImpo
3098
3291
  type: Input
3099
3292
  }], filterable: [{
3100
3293
  type: Input
3294
+ }], showListContainer: [{
3295
+ type: Input
3101
3296
  }], closePopup: [{
3102
3297
  type: Output
3103
3298
  }], textInputChange: [{
@@ -3232,15 +3427,15 @@ class Messages extends ComponentMessages {
3232
3427
  */
3233
3428
  clearTitle;
3234
3429
  /**
3235
- * The text displayed for the check-all checkbox.
3430
+ * The text displayed for the check-all checkbox. Available for MultiSelectTree.
3236
3431
  */
3237
3432
  checkAllText;
3238
3433
  /**
3239
- * The text set as aria-label on the select button.
3434
+ * The text set as aria-label on the select button. Available for DropDownList, ComboBox, MultiColumnComboBox, and DropDownTree.
3240
3435
  */
3241
3436
  selectButtonText;
3242
3437
  /**
3243
- * The text set as aria-label on the list filter input.
3438
+ * The text set as aria-label on the list filter input. Available for DropDownList, DropDownTree, and MultiSelectTree.
3244
3439
  */
3245
3440
  filterInputLabel;
3246
3441
  /**
@@ -3252,11 +3447,15 @@ class Messages extends ComponentMessages {
3252
3447
  */
3253
3448
  adaptiveCloseButtonTitle;
3254
3449
  /**
3255
- * The text for the input's placeholder when filtering is enabled.
3450
+ * The text for the input's placeholder when filtering is enabled. Available for DropDownTree and MultiSelectTree.
3256
3451
  */
3257
3452
  filterInputPlaceholder;
3258
3453
  /**
3259
- * The text displayed when the user types a custom value that is not in the list of options.
3454
+ * The accessible label of the tag list element that contains the selected items. Available for MultiSelect and MultiSelectTree.
3455
+ */
3456
+ chipListLabel;
3457
+ /**
3458
+ * The text displayed when the user types a custom value that is not in the list of options. Available for ComboBox and MultiSelect.
3260
3459
  *
3261
3460
  * The text includes a localizable string and the custom value.
3262
3461
  * For example, when adding a custom value **Test**, the default text is **Use "Test"**.
@@ -3265,8 +3464,16 @@ class Messages extends ComponentMessages {
3265
3464
  * Use `{customValue}` to insert the value, for example, **Add: {customValue}**.
3266
3465
  */
3267
3466
  useCustomValueText;
3467
+ /**
3468
+ * The accessible label of the listbox that contains the list of options. Available for DropDownList, ComboBox, MultiColumnComboBox, AutoComplete, and MultiSelect.
3469
+ */
3470
+ listboxLabel;
3471
+ /**
3472
+ * The accessible label of the input element. Available for MultiSelectTree.
3473
+ */
3474
+ inputLabel;
3268
3475
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.25", ngImport: i0, type: Messages, deps: null, target: i0.ɵɵFactoryTarget.Directive });
3269
- static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "20.3.25", type: Messages, isStandalone: true, inputs: { noDataText: "noDataText", clearTitle: "clearTitle", checkAllText: "checkAllText", selectButtonText: "selectButtonText", filterInputLabel: "filterInputLabel", popupLabel: "popupLabel", adaptiveCloseButtonTitle: "adaptiveCloseButtonTitle", filterInputPlaceholder: "filterInputPlaceholder", useCustomValueText: "useCustomValueText" }, usesInheritance: true, ngImport: i0 });
3476
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "20.3.25", type: Messages, isStandalone: true, inputs: { noDataText: "noDataText", clearTitle: "clearTitle", checkAllText: "checkAllText", selectButtonText: "selectButtonText", filterInputLabel: "filterInputLabel", popupLabel: "popupLabel", adaptiveCloseButtonTitle: "adaptiveCloseButtonTitle", filterInputPlaceholder: "filterInputPlaceholder", chipListLabel: "chipListLabel", useCustomValueText: "useCustomValueText", listboxLabel: "listboxLabel", inputLabel: "inputLabel" }, usesInheritance: true, ngImport: i0 });
3270
3477
  }
3271
3478
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.25", ngImport: i0, type: Messages, decorators: [{
3272
3479
  type: Directive
@@ -3286,8 +3493,14 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.25", ngImpo
3286
3493
  type: Input
3287
3494
  }], filterInputPlaceholder: [{
3288
3495
  type: Input
3496
+ }], chipListLabel: [{
3497
+ type: Input
3289
3498
  }], useCustomValueText: [{
3290
3499
  type: Input
3500
+ }], listboxLabel: [{
3501
+ type: Input
3502
+ }], inputLabel: [{
3503
+ type: Input
3291
3504
  }] } });
3292
3505
 
3293
3506
  /**
@@ -3444,7 +3657,7 @@ class AutoCompleteComponent {
3444
3657
  * @hidden
3445
3658
  */
3446
3659
  get ariaControls() {
3447
- return this.isOpen ? this.listBoxId : undefined;
3660
+ return (!this.isAdaptive && this.isOpen) ? this.listBoxId : undefined;
3448
3661
  }
3449
3662
  /**
3450
3663
  * @hidden
@@ -4498,6 +4711,9 @@ class AutoCompleteComponent {
4498
4711
 
4499
4712
  i18n-adaptiveCloseButtonTitle="kendo.autocomplete.adaptiveCloseButtonTitle|The title of the Close button of the ActionSheet that is rendered instead of the Popup when using small screen devices in adaptive mode"
4500
4713
  adaptiveCloseButtonTitle="Close"
4714
+
4715
+ i18n-listboxLabel="kendo.autocomplete.listboxLabel|The accessible label of the list of suggestions"
4716
+ listboxLabel="Suggestions"
4501
4717
  >
4502
4718
  </ng-container>
4503
4719
 
@@ -4519,9 +4735,9 @@ class AutoCompleteComponent {
4519
4735
  }
4520
4736
  <input
4521
4737
  kendoSearchbar
4522
- [ariaExpanded]="isOpen"
4738
+ [ariaExpanded]="isAdaptive ? false : isOpen"
4523
4739
  [isSuggestable]="suggest"
4524
- [isFilterable]="filterable"
4740
+ [hasListAutocomplete]="filterable"
4525
4741
  [isLoading]="isLoading"
4526
4742
  [ariaControls]="ariaControls"
4527
4743
  [id]="focusableId"
@@ -4617,24 +4833,25 @@ class AutoCompleteComponent {
4617
4833
  [show]="isOpen"
4618
4834
  [virtual]="virtual"
4619
4835
  [showStickyHeader]="showStickyHeader"
4836
+ [ariaLabel]="messageFor('listboxLabel')"
4620
4837
  (pageChange)="pageChange($event)"
4621
4838
  >
4839
+ <!--no-data template-->
4840
+ @if (data.length === 0) {
4841
+ <div class="k-no-data" [attr.aria-live]="'polite'">
4842
+ @if (noDataTemplate) {
4843
+ <ng-template
4844
+ [templateContext]="{
4845
+ templateRef: noDataTemplate?.templateRef
4846
+ }">
4847
+ </ng-template>
4848
+ }
4849
+ @if (!noDataTemplate) {
4850
+ <div>{{ messageFor('noDataText') }}</div>
4851
+ }
4852
+ </div>
4853
+ }
4622
4854
  </kendo-list>
4623
- <!--no-data template-->
4624
- @if (data.length === 0) {
4625
- <div class="k-no-data" [attr.aria-live]="'polite'">
4626
- @if (noDataTemplate) {
4627
- <ng-template
4628
- [templateContext]="{
4629
- templateRef: noDataTemplate?.templateRef
4630
- }">
4631
- </ng-template>
4632
- }
4633
- @if (!noDataTemplate) {
4634
- <div>{{ messageFor('noDataText') }}</div>
4635
- }
4636
- </div>
4637
- }
4638
4855
  <!--footer template-->
4639
4856
  @if (footerTemplate) {
4640
4857
  <ng-template
@@ -4644,7 +4861,7 @@ class AutoCompleteComponent {
4644
4861
  </ng-template>
4645
4862
  }
4646
4863
  </ng-template>
4647
- `, isInline: true, dependencies: [{ kind: "directive", type: LocalizedMessagesDirective, selector: "\n [kendoDropDownListLocalizedMessages],\n [kendoDropDownTreeLocalizedMessages],\n [kendoComboBoxLocalizedMessages],\n [kendoMultiColumnComboBoxLocalizedMessages],\n [kendoAutoCompleteLocalizedMessages],\n [kendoMultiSelectLocalizedMessages],\n [kendoMultiSelectTreeLocalizedMessages]\n " }, { kind: "directive", type: SharedDropDownEventsDirective, selector: "[kendoDropDownSharedEvents]", inputs: ["hostElement", "clearButtonClicked", "isFocused"], outputs: ["isFocusedChange", "onFocus", "handleBlur"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: SeparatorComponent, selector: "kendo-separator", inputs: ["orientation"] }, { kind: "component", type: SearchBarComponent, selector: "input[kendoSearchbar]", inputs: ["tagListId", "readonly", "disabled", "isRequired", "isSuggestable", "isFilterable", "userInput", "suggestedText", "inputAttributes", "id", "activeDescendant", "tabIndex", "isLoading", "ariaControls", "ariaExpanded", "placeholder"], outputs: ["valueChange", "onBlur", "onFocus", "onClick", "onNavigate"] }, { kind: "component", type: IconWrapperComponent, selector: "kendo-icon-wrapper", inputs: ["name", "svgIcon", "innerCssClass", "customFontClass", "size"], exportAs: ["kendoIconWrapper"] }, { kind: "component", type: ResizeSensorComponent, selector: "kendo-resize-sensor", inputs: ["rateLimit"], outputs: ["resize"] }, { kind: "component", type: AdaptiveRendererComponent, selector: "kendo-adaptive-renderer", inputs: ["title", "subtitle", "showTextInput", "sharedPopupActionSheetTemplate", "text", "placeholder", "searchBarValue", "filterable"], outputs: ["closePopup", "textInputChange", "navigate", "onExpand"] }, { kind: "directive", type: TemplateContextDirective, selector: "[templateContext]", inputs: ["templateContext"] }, { kind: "component", type: ListComponent, selector: "kendo-list", inputs: ["selected", "focused", "textField", "valueField", "height", "template", "groupTemplate", "fixedGroupTemplate", "show", "id", "optionPrefix", "multipleSelection", "virtual", "type", "checkboxes", "ariaLive", "isMultiselect", "isActionSheetExpanded", "showStickyHeader", "rowWidth", "customItemTemplate", "text", "allowCustom", "defaultItem", "data", "size", "rounded"], outputs: ["onClick", "pageChange", "listResize", "popupListScroll"] }] });
4864
+ `, isInline: true, dependencies: [{ kind: "directive", type: LocalizedMessagesDirective, selector: "\n [kendoDropDownListLocalizedMessages],\n [kendoDropDownTreeLocalizedMessages],\n [kendoComboBoxLocalizedMessages],\n [kendoMultiColumnComboBoxLocalizedMessages],\n [kendoAutoCompleteLocalizedMessages],\n [kendoMultiSelectLocalizedMessages],\n [kendoMultiSelectTreeLocalizedMessages]\n " }, { kind: "directive", type: SharedDropDownEventsDirective, selector: "[kendoDropDownSharedEvents]", inputs: ["hostElement", "clearButtonClicked", "isFocused"], outputs: ["isFocusedChange", "onFocus", "handleBlur"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: SeparatorComponent, selector: "kendo-separator", inputs: ["orientation"] }, { kind: "component", type: SearchBarComponent, selector: "input[kendoSearchbar]", inputs: ["tagListId", "readonly", "disabled", "isRequired", "isSuggestable", "hasListAutocomplete", "userInput", "suggestedText", "inputAttributes", "id", "activeDescendant", "tabIndex", "isLoading", "ariaControls", "ariaExpanded", "placeholder"], outputs: ["valueChange", "onBlur", "onFocus", "onClick", "onNavigate"] }, { kind: "component", type: IconWrapperComponent, selector: "kendo-icon-wrapper", inputs: ["name", "svgIcon", "innerCssClass", "customFontClass", "size"], exportAs: ["kendoIconWrapper"] }, { kind: "component", type: ResizeSensorComponent, selector: "kendo-resize-sensor", inputs: ["rateLimit"], outputs: ["resize"] }, { kind: "component", type: AdaptiveRendererComponent, selector: "kendo-adaptive-renderer", inputs: ["title", "subtitle", "showTextInput", "sharedPopupActionSheetTemplate", "text", "placeholder", "searchBarValue", "filterable", "showListContainer"], outputs: ["closePopup", "textInputChange", "navigate", "onExpand"] }, { kind: "directive", type: TemplateContextDirective, selector: "[templateContext]", inputs: ["templateContext"] }, { kind: "component", type: ListComponent, selector: "kendo-list", inputs: ["selected", "focused", "textField", "valueField", "height", "template", "groupTemplate", "fixedGroupTemplate", "show", "id", "optionPrefix", "multipleSelection", "virtual", "type", "checkboxes", "ariaLive", "ariaLabel", "isMultiselect", "isActionSheetExpanded", "showStickyHeader", "rowWidth", "columnsWidths", "customItemTemplate", "text", "allowCustom", "defaultItem", "data", "size", "rounded"], outputs: ["onClick", "pageChange", "listResize", "popupListScroll"] }] });
4648
4865
  }
4649
4866
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.25", ngImport: i0, type: AutoCompleteComponent, decorators: [{
4650
4867
  type: Component,
@@ -4685,6 +4902,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.25", ngImpo
4685
4902
 
4686
4903
  i18n-adaptiveCloseButtonTitle="kendo.autocomplete.adaptiveCloseButtonTitle|The title of the Close button of the ActionSheet that is rendered instead of the Popup when using small screen devices in adaptive mode"
4687
4904
  adaptiveCloseButtonTitle="Close"
4905
+
4906
+ i18n-listboxLabel="kendo.autocomplete.listboxLabel|The accessible label of the list of suggestions"
4907
+ listboxLabel="Suggestions"
4688
4908
  >
4689
4909
  </ng-container>
4690
4910
 
@@ -4706,9 +4926,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.25", ngImpo
4706
4926
  }
4707
4927
  <input
4708
4928
  kendoSearchbar
4709
- [ariaExpanded]="isOpen"
4929
+ [ariaExpanded]="isAdaptive ? false : isOpen"
4710
4930
  [isSuggestable]="suggest"
4711
- [isFilterable]="filterable"
4931
+ [hasListAutocomplete]="filterable"
4712
4932
  [isLoading]="isLoading"
4713
4933
  [ariaControls]="ariaControls"
4714
4934
  [id]="focusableId"
@@ -4804,24 +5024,25 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.25", ngImpo
4804
5024
  [show]="isOpen"
4805
5025
  [virtual]="virtual"
4806
5026
  [showStickyHeader]="showStickyHeader"
5027
+ [ariaLabel]="messageFor('listboxLabel')"
4807
5028
  (pageChange)="pageChange($event)"
4808
5029
  >
5030
+ <!--no-data template-->
5031
+ @if (data.length === 0) {
5032
+ <div class="k-no-data" [attr.aria-live]="'polite'">
5033
+ @if (noDataTemplate) {
5034
+ <ng-template
5035
+ [templateContext]="{
5036
+ templateRef: noDataTemplate?.templateRef
5037
+ }">
5038
+ </ng-template>
5039
+ }
5040
+ @if (!noDataTemplate) {
5041
+ <div>{{ messageFor('noDataText') }}</div>
5042
+ }
5043
+ </div>
5044
+ }
4809
5045
  </kendo-list>
4810
- <!--no-data template-->
4811
- @if (data.length === 0) {
4812
- <div class="k-no-data" [attr.aria-live]="'polite'">
4813
- @if (noDataTemplate) {
4814
- <ng-template
4815
- [templateContext]="{
4816
- templateRef: noDataTemplate?.templateRef
4817
- }">
4818
- </ng-template>
4819
- }
4820
- @if (!noDataTemplate) {
4821
- <div>{{ messageFor('noDataText') }}</div>
4822
- }
4823
- </div>
4824
- }
4825
5046
  <!--footer template-->
4826
5047
  @if (footerTemplate) {
4827
5048
  <ng-template
@@ -5105,7 +5326,7 @@ class ComboBoxComponent extends MultiTabStop {
5105
5326
  * @hidden
5106
5327
  */
5107
5328
  get ariaControls() {
5108
- return this.isOpen ? this.listBoxId : undefined;
5329
+ return (!this.isAdaptive && this.isOpen) ? this.listBoxId : undefined;
5109
5330
  }
5110
5331
  /**
5111
5332
  * @hidden
@@ -5928,7 +6149,7 @@ class ComboBoxComponent extends MultiTabStop {
5928
6149
  * @hidden
5929
6150
  */
5930
6151
  get selectButtonClasses() {
5931
- return `${this.size ? getSizeClass('button', this.size) : ''} ${this.fillMode ? 'k-button-' + this.fillMode : ''}`;
6152
+ return `${this.size ? getSizeClass('button', this.size) : ''} ${this.fillMode ? 'k-button-' + this.fillMode : ''} ${this.disabled ? 'k-disabled' : ''}`;
5932
6153
  }
5933
6154
  /**
5934
6155
  * @hidden
@@ -6195,7 +6416,7 @@ class ComboBoxComponent extends MultiTabStop {
6195
6416
  this.zone.run(() => {
6196
6417
  if (valueHasChanged) {
6197
6418
  const lowerCaseMatch = isPresent(this.focusedItemText) && this.focusedItemText.toLowerCase() === currentText.toLowerCase();
6198
- if (lowerCaseMatch || unresolvedSelection) {
6419
+ if ((lowerCaseMatch && this.shouldResolveSuggestedItem(currentText)) || unresolvedSelection) {
6199
6420
  this.selectionService.change(this.selectionService.focused);
6200
6421
  }
6201
6422
  else {
@@ -6328,6 +6549,9 @@ class ComboBoxComponent extends MultiTabStop {
6328
6549
  const itemText = getter(this.dataService.itemAt(focused), this.textField);
6329
6550
  return !isPresent(itemText) ? "" : itemText.toString();
6330
6551
  }
6552
+ shouldResolveSuggestedItem(currentText) {
6553
+ return !(this.allowCustom && this.suggest && this.focusedItemText !== currentText);
6554
+ }
6331
6555
  /**
6332
6556
  * Focuses the first match when there's text in the input field, but no focused item.
6333
6557
  */
@@ -6516,7 +6740,7 @@ class ComboBoxComponent extends MultiTabStop {
6516
6740
  this.zone.run(() => {
6517
6741
  if (valueHasChanged) {
6518
6742
  const lowerCaseMatch = isPresent(this.focusedItemText) && this.focusedItemText.toLowerCase() === currentText.toLowerCase();
6519
- if (lowerCaseMatch || unresolvedSelection) {
6743
+ if ((lowerCaseMatch && this.shouldResolveSuggestedItem(currentText)) || unresolvedSelection) {
6520
6744
  this.selectionService.change(this.selectionService.focused);
6521
6745
  }
6522
6746
  else {
@@ -6570,6 +6794,12 @@ class ComboBoxComponent extends MultiTabStop {
6570
6794
 
6571
6795
  i18n-adaptiveCloseButtonTitle="kendo.combobox.adaptiveCloseButtonTitle|The title of the Close button of the ActionSheet that is rendered instead of the Popup when using small screen devices in adaptive mode"
6572
6796
  adaptiveCloseButtonTitle="Close"
6797
+
6798
+ i18n-listboxLabel="kendo.combobox.listboxLabel|The accessible label of the listbox that contains the list of options"
6799
+ listboxLabel="Options"
6800
+
6801
+ i18n-useCustomValueText="kendo.combobox.useCustomValueText|The text displayed when the user types a custom value that is not in the list of options."
6802
+ useCustomValueText="{{ 'Use &quot;{customValue}&quot;' }}"
6573
6803
  >
6574
6804
  </ng-container>
6575
6805
 
@@ -6591,12 +6821,12 @@ class ComboBoxComponent extends MultiTabStop {
6591
6821
  }
6592
6822
  <input
6593
6823
  kendoSearchbar
6594
- [ariaExpanded]="isOpen"
6824
+ [ariaExpanded]="isAdaptive ? false : isOpen"
6595
6825
  [ariaControls]="ariaControls"
6596
6826
  [id]="focusableId"
6597
6827
  [isLoading]="loading"
6598
6828
  [isSuggestable]="suggest"
6599
- [isFilterable]="filterable"
6829
+ [hasListAutocomplete]="filterable"
6600
6830
  [activeDescendant]="activeDescendant"
6601
6831
  [userInput]="text"
6602
6832
  [suggestedText]="getSuggestion()"
@@ -6616,7 +6846,6 @@ class ComboBoxComponent extends MultiTabStop {
6616
6846
  <span
6617
6847
  class="k-clear-value"
6618
6848
  [style.visibility]="clearButtonVisibility"
6619
- aria-hidden="true"
6620
6849
  [attr.title]="messageFor('clearTitle')"
6621
6850
  (click)="clearValue($event)"
6622
6851
  [kendoEventsOutsideAngular]="{
@@ -6711,24 +6940,27 @@ class ComboBoxComponent extends MultiTabStop {
6711
6940
  [show]="isOpen"
6712
6941
  [virtual]="virtual"
6713
6942
  [showStickyHeader]="showStickyHeader"
6943
+ [ariaLabel]="messageFor('listboxLabel')"
6944
+ [text]="text"
6945
+ [allowCustom]="allowCustom"
6714
6946
  (pageChange)="pageChange($event)"
6715
6947
  >
6948
+ <!--no-data template-->
6949
+ @if (data.length === 0) {
6950
+ <div class="k-no-data" [attr.aria-live]="'polite'">
6951
+ @if (noDataTemplate) {
6952
+ <ng-template
6953
+ [templateContext]="{
6954
+ templateRef: noDataTemplate ? noDataTemplate.templateRef : undefined
6955
+ }">
6956
+ </ng-template>
6957
+ }
6958
+ @if (!noDataTemplate) {
6959
+ <div>{{ messageFor('noDataText') }}</div>
6960
+ }
6961
+ </div>
6962
+ }
6716
6963
  </kendo-list>
6717
- <!--no-data template-->
6718
- @if (data.length === 0) {
6719
- <div class="k-no-data" [attr.aria-live]="'polite'">
6720
- @if (noDataTemplate) {
6721
- <ng-template
6722
- [templateContext]="{
6723
- templateRef: noDataTemplate ? noDataTemplate.templateRef : undefined
6724
- }">
6725
- </ng-template>
6726
- }
6727
- @if (!noDataTemplate) {
6728
- <div>{{ messageFor('noDataText') }}</div>
6729
- }
6730
- </div>
6731
- }
6732
6964
  <!--footer template-->
6733
6965
  @if (footerTemplate) {
6734
6966
  <ng-template
@@ -6738,7 +6970,7 @@ class ComboBoxComponent extends MultiTabStop {
6738
6970
  </ng-template>
6739
6971
  }
6740
6972
  </ng-template>
6741
- `, isInline: true, dependencies: [{ kind: "directive", type: LocalizedMessagesDirective, selector: "\n [kendoDropDownListLocalizedMessages],\n [kendoDropDownTreeLocalizedMessages],\n [kendoComboBoxLocalizedMessages],\n [kendoMultiColumnComboBoxLocalizedMessages],\n [kendoAutoCompleteLocalizedMessages],\n [kendoMultiSelectLocalizedMessages],\n [kendoMultiSelectTreeLocalizedMessages]\n " }, { kind: "directive", type: SharedDropDownEventsDirective, selector: "[kendoDropDownSharedEvents]", inputs: ["hostElement", "clearButtonClicked", "isFocused"], outputs: ["isFocusedChange", "onFocus", "handleBlur"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: SeparatorComponent, selector: "kendo-separator", inputs: ["orientation"] }, { kind: "component", type: SearchBarComponent, selector: "input[kendoSearchbar]", inputs: ["tagListId", "readonly", "disabled", "isRequired", "isSuggestable", "isFilterable", "userInput", "suggestedText", "inputAttributes", "id", "activeDescendant", "tabIndex", "isLoading", "ariaControls", "ariaExpanded", "placeholder"], outputs: ["valueChange", "onBlur", "onFocus", "onClick", "onNavigate"] }, { kind: "directive", type: EventsOutsideAngularDirective, selector: "[kendoEventsOutsideAngular]", inputs: ["kendoEventsOutsideAngular", "scope"] }, { kind: "component", type: IconWrapperComponent, selector: "kendo-icon-wrapper", inputs: ["name", "svgIcon", "innerCssClass", "customFontClass", "size"], exportAs: ["kendoIconWrapper"] }, { kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "component", type: ResizeSensorComponent, selector: "kendo-resize-sensor", inputs: ["rateLimit"], outputs: ["resize"] }, { kind: "component", type: AdaptiveRendererComponent, selector: "kendo-adaptive-renderer", inputs: ["title", "subtitle", "showTextInput", "sharedPopupActionSheetTemplate", "text", "placeholder", "searchBarValue", "filterable"], outputs: ["closePopup", "textInputChange", "navigate", "onExpand"] }, { kind: "directive", type: TemplateContextDirective, selector: "[templateContext]", inputs: ["templateContext"] }, { kind: "component", type: ListComponent, selector: "kendo-list", inputs: ["selected", "focused", "textField", "valueField", "height", "template", "groupTemplate", "fixedGroupTemplate", "show", "id", "optionPrefix", "multipleSelection", "virtual", "type", "checkboxes", "ariaLive", "isMultiselect", "isActionSheetExpanded", "showStickyHeader", "rowWidth", "customItemTemplate", "text", "allowCustom", "defaultItem", "data", "size", "rounded"], outputs: ["onClick", "pageChange", "listResize", "popupListScroll"] }] });
6973
+ `, isInline: true, dependencies: [{ kind: "directive", type: LocalizedMessagesDirective, selector: "\n [kendoDropDownListLocalizedMessages],\n [kendoDropDownTreeLocalizedMessages],\n [kendoComboBoxLocalizedMessages],\n [kendoMultiColumnComboBoxLocalizedMessages],\n [kendoAutoCompleteLocalizedMessages],\n [kendoMultiSelectLocalizedMessages],\n [kendoMultiSelectTreeLocalizedMessages]\n " }, { kind: "directive", type: SharedDropDownEventsDirective, selector: "[kendoDropDownSharedEvents]", inputs: ["hostElement", "clearButtonClicked", "isFocused"], outputs: ["isFocusedChange", "onFocus", "handleBlur"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: SeparatorComponent, selector: "kendo-separator", inputs: ["orientation"] }, { kind: "component", type: SearchBarComponent, selector: "input[kendoSearchbar]", inputs: ["tagListId", "readonly", "disabled", "isRequired", "isSuggestable", "hasListAutocomplete", "userInput", "suggestedText", "inputAttributes", "id", "activeDescendant", "tabIndex", "isLoading", "ariaControls", "ariaExpanded", "placeholder"], outputs: ["valueChange", "onBlur", "onFocus", "onClick", "onNavigate"] }, { kind: "directive", type: EventsOutsideAngularDirective, selector: "[kendoEventsOutsideAngular]", inputs: ["kendoEventsOutsideAngular", "scope"] }, { kind: "component", type: IconWrapperComponent, selector: "kendo-icon-wrapper", inputs: ["name", "svgIcon", "innerCssClass", "customFontClass", "size"], exportAs: ["kendoIconWrapper"] }, { kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "component", type: ResizeSensorComponent, selector: "kendo-resize-sensor", inputs: ["rateLimit"], outputs: ["resize"] }, { kind: "component", type: AdaptiveRendererComponent, selector: "kendo-adaptive-renderer", inputs: ["title", "subtitle", "showTextInput", "sharedPopupActionSheetTemplate", "text", "placeholder", "searchBarValue", "filterable", "showListContainer"], outputs: ["closePopup", "textInputChange", "navigate", "onExpand"] }, { kind: "directive", type: TemplateContextDirective, selector: "[templateContext]", inputs: ["templateContext"] }, { kind: "component", type: ListComponent, selector: "kendo-list", inputs: ["selected", "focused", "textField", "valueField", "height", "template", "groupTemplate", "fixedGroupTemplate", "show", "id", "optionPrefix", "multipleSelection", "virtual", "type", "checkboxes", "ariaLive", "ariaLabel", "isMultiselect", "isActionSheetExpanded", "showStickyHeader", "rowWidth", "columnsWidths", "customItemTemplate", "text", "allowCustom", "defaultItem", "data", "size", "rounded"], outputs: ["onClick", "pageChange", "listResize", "popupListScroll"] }] });
6742
6974
  }
6743
6975
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.25", ngImport: i0, type: ComboBoxComponent, decorators: [{
6744
6976
  type: Component,
@@ -6783,6 +7015,12 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.25", ngImpo
6783
7015
 
6784
7016
  i18n-adaptiveCloseButtonTitle="kendo.combobox.adaptiveCloseButtonTitle|The title of the Close button of the ActionSheet that is rendered instead of the Popup when using small screen devices in adaptive mode"
6785
7017
  adaptiveCloseButtonTitle="Close"
7018
+
7019
+ i18n-listboxLabel="kendo.combobox.listboxLabel|The accessible label of the listbox that contains the list of options"
7020
+ listboxLabel="Options"
7021
+
7022
+ i18n-useCustomValueText="kendo.combobox.useCustomValueText|The text displayed when the user types a custom value that is not in the list of options."
7023
+ useCustomValueText="{{ 'Use &quot;{customValue}&quot;' }}"
6786
7024
  >
6787
7025
  </ng-container>
6788
7026
 
@@ -6804,12 +7042,12 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.25", ngImpo
6804
7042
  }
6805
7043
  <input
6806
7044
  kendoSearchbar
6807
- [ariaExpanded]="isOpen"
7045
+ [ariaExpanded]="isAdaptive ? false : isOpen"
6808
7046
  [ariaControls]="ariaControls"
6809
7047
  [id]="focusableId"
6810
7048
  [isLoading]="loading"
6811
7049
  [isSuggestable]="suggest"
6812
- [isFilterable]="filterable"
7050
+ [hasListAutocomplete]="filterable"
6813
7051
  [activeDescendant]="activeDescendant"
6814
7052
  [userInput]="text"
6815
7053
  [suggestedText]="getSuggestion()"
@@ -6829,7 +7067,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.25", ngImpo
6829
7067
  <span
6830
7068
  class="k-clear-value"
6831
7069
  [style.visibility]="clearButtonVisibility"
6832
- aria-hidden="true"
6833
7070
  [attr.title]="messageFor('clearTitle')"
6834
7071
  (click)="clearValue($event)"
6835
7072
  [kendoEventsOutsideAngular]="{
@@ -6924,24 +7161,27 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.25", ngImpo
6924
7161
  [show]="isOpen"
6925
7162
  [virtual]="virtual"
6926
7163
  [showStickyHeader]="showStickyHeader"
7164
+ [ariaLabel]="messageFor('listboxLabel')"
7165
+ [text]="text"
7166
+ [allowCustom]="allowCustom"
6927
7167
  (pageChange)="pageChange($event)"
6928
7168
  >
7169
+ <!--no-data template-->
7170
+ @if (data.length === 0) {
7171
+ <div class="k-no-data" [attr.aria-live]="'polite'">
7172
+ @if (noDataTemplate) {
7173
+ <ng-template
7174
+ [templateContext]="{
7175
+ templateRef: noDataTemplate ? noDataTemplate.templateRef : undefined
7176
+ }">
7177
+ </ng-template>
7178
+ }
7179
+ @if (!noDataTemplate) {
7180
+ <div>{{ messageFor('noDataText') }}</div>
7181
+ }
7182
+ </div>
7183
+ }
6929
7184
  </kendo-list>
6930
- <!--no-data template-->
6931
- @if (data.length === 0) {
6932
- <div class="k-no-data" [attr.aria-live]="'polite'">
6933
- @if (noDataTemplate) {
6934
- <ng-template
6935
- [templateContext]="{
6936
- templateRef: noDataTemplate ? noDataTemplate.templateRef : undefined
6937
- }">
6938
- </ng-template>
6939
- }
6940
- @if (!noDataTemplate) {
6941
- <div>{{ messageFor('noDataText') }}</div>
6942
- }
6943
- </div>
6944
- }
6945
7185
  <!--footer template-->
6946
7186
  @if (footerTemplate) {
6947
7187
  <ng-template
@@ -7300,7 +7540,7 @@ class DropDownListComponent {
7300
7540
  * @hidden
7301
7541
  */
7302
7542
  get ariaLive() {
7303
- return this.filterable ? 'polite' : 'off';
7543
+ return this.filterable ? 'polite' : null;
7304
7544
  }
7305
7545
  /**
7306
7546
  * Shows or hides the current group sticky header when using grouped data.
@@ -7689,7 +7929,7 @@ class DropDownListComponent {
7689
7929
  role = 'combobox';
7690
7930
  haspopup = 'listbox';
7691
7931
  get hostAriaInvalid() {
7692
- return this.formControl?.invalid ? true : null;
7932
+ return (this.formControl?.invalid && (this.formControl?.touched || this.formControl?.dirty)) ? true : null;
7693
7933
  }
7694
7934
  /**
7695
7935
  * @hidden
@@ -8538,8 +8778,6 @@ class DropDownListComponent {
8538
8778
  }
8539
8779
  closeActionSheet() {
8540
8780
  this.actionSheet.toggle(false);
8541
- this.renderer.setAttribute(this.wrapper.nativeElement, 'aria-expanded', 'false');
8542
- this.renderer.removeAttribute(this.wrapper.nativeElement, 'aria-controls');
8543
8781
  if (this.filterable) {
8544
8782
  this.adaptiveRenderer.searchBarValue = '';
8545
8783
  this.filterChange.emit('');
@@ -8549,8 +8787,6 @@ class DropDownListComponent {
8549
8787
  openActionSheet() {
8550
8788
  this.actionSheet.toggle(true);
8551
8789
  this.cdr.detectChanges();
8552
- this.renderer.setAttribute(this.wrapper.nativeElement, 'aria-expanded', 'true');
8553
- this.renderer.setAttribute(this.wrapper.nativeElement, 'aria-controls', this.listBoxId);
8554
8790
  if (!this.dataService.grouped) {
8555
8791
  setListBoxAriaLabelledBy(this.optionsList, this.wrapper, this.renderer);
8556
8792
  }
@@ -8602,6 +8838,9 @@ class DropDownListComponent {
8602
8838
 
8603
8839
  i18n-filterPlaceholder="kendo.dropdownlist.filterPlaceholder|The text for the input's placeholder when filtering is enabled"
8604
8840
  filterInputPlaceholder="Filter"
8841
+
8842
+ i18n-listboxLabel="kendo.dropdownlist.listboxLabel|The accessible label of the listbox that contains the list of options"
8843
+ listboxLabel="Options"
8605
8844
  >
8606
8845
  </ng-container>
8607
8846
  <span class="k-input-inner" unselectable="on" [id]="valueLabelId" (click)="$event.preventDefault()">
@@ -8666,7 +8905,6 @@ class DropDownListComponent {
8666
8905
  class="k-searchbox k-input"
8667
8906
  [ngClass]="filterInputClasses">
8668
8907
  <kendo-icon-wrapper
8669
- class="k-icon"
8670
8908
  innerCssClass="k-input-icon"
8671
8909
  name="search"
8672
8910
  [svgIcon]="searchIcon">
@@ -8717,24 +8955,25 @@ class DropDownListComponent {
8717
8955
  [virtual]="virtual"
8718
8956
  [ariaLive]="ariaLive"
8719
8957
  [showStickyHeader]="showStickyHeader"
8958
+ [ariaLabel]="messageFor('listboxLabel')"
8720
8959
  (pageChange)="pageChange($event)"
8721
8960
  [defaultItem]="defaultItem">
8961
+ <!--no-data template-->
8962
+ @if (data.length === 0) {
8963
+ <div class="k-no-data" [attr.aria-live]="'polite'">
8964
+ @if (noDataTemplate) {
8965
+ <ng-template
8966
+ [templateContext]="{
8967
+ templateRef: noDataTemplate ? noDataTemplate.templateRef : undefined
8968
+ }">
8969
+ </ng-template>
8970
+ }
8971
+ @if (!noDataTemplate) {
8972
+ <div>{{ messageFor('noDataText') }}</div>
8973
+ }
8974
+ </div>
8975
+ }
8722
8976
  </kendo-list>
8723
- <!--no-data template-->
8724
- @if (data.length === 0) {
8725
- <div class="k-no-data" [attr.aria-live]="'polite'">
8726
- @if (noDataTemplate) {
8727
- <ng-template
8728
- [templateContext]="{
8729
- templateRef: noDataTemplate ? noDataTemplate.templateRef : undefined
8730
- }">
8731
- </ng-template>
8732
- }
8733
- @if (!noDataTemplate) {
8734
- <div>{{ messageFor('noDataText') }}</div>
8735
- }
8736
- </div>
8737
- }
8738
8977
  <!--footer template-->
8739
8978
  @if (footerTemplate) {
8740
8979
  <ng-template
@@ -8744,7 +8983,7 @@ class DropDownListComponent {
8744
8983
  </ng-template>
8745
8984
  }
8746
8985
  </ng-template>
8747
- `, isInline: true, dependencies: [{ kind: "directive", type: LocalizedMessagesDirective, selector: "\n [kendoDropDownListLocalizedMessages],\n [kendoDropDownTreeLocalizedMessages],\n [kendoComboBoxLocalizedMessages],\n [kendoMultiColumnComboBoxLocalizedMessages],\n [kendoAutoCompleteLocalizedMessages],\n [kendoMultiSelectLocalizedMessages],\n [kendoMultiSelectTreeLocalizedMessages]\n " }, { kind: "directive", type: TemplateContextDirective, selector: "[templateContext]", inputs: ["templateContext"] }, { kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: EventsOutsideAngularDirective, selector: "[kendoEventsOutsideAngular]", inputs: ["kendoEventsOutsideAngular", "scope"] }, { kind: "component", type: IconWrapperComponent, selector: "kendo-icon-wrapper", inputs: ["name", "svgIcon", "innerCssClass", "customFontClass", "size"], exportAs: ["kendoIconWrapper"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: ResizeSensorComponent, selector: "kendo-resize-sensor", inputs: ["rateLimit"], outputs: ["resize"] }, { kind: "component", type: AdaptiveRendererComponent, selector: "kendo-adaptive-renderer", inputs: ["title", "subtitle", "showTextInput", "sharedPopupActionSheetTemplate", "text", "placeholder", "searchBarValue", "filterable"], outputs: ["closePopup", "textInputChange", "navigate", "onExpand"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i8.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i8.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: FilterInputDirective, selector: "[filterInput]", inputs: ["filterInput"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i8.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: ListComponent, selector: "kendo-list", inputs: ["selected", "focused", "textField", "valueField", "height", "template", "groupTemplate", "fixedGroupTemplate", "show", "id", "optionPrefix", "multipleSelection", "virtual", "type", "checkboxes", "ariaLive", "isMultiselect", "isActionSheetExpanded", "showStickyHeader", "rowWidth", "customItemTemplate", "text", "allowCustom", "defaultItem", "data", "size", "rounded"], outputs: ["onClick", "pageChange", "listResize", "popupListScroll"] }] });
8986
+ `, isInline: true, dependencies: [{ kind: "directive", type: LocalizedMessagesDirective, selector: "\n [kendoDropDownListLocalizedMessages],\n [kendoDropDownTreeLocalizedMessages],\n [kendoComboBoxLocalizedMessages],\n [kendoMultiColumnComboBoxLocalizedMessages],\n [kendoAutoCompleteLocalizedMessages],\n [kendoMultiSelectLocalizedMessages],\n [kendoMultiSelectTreeLocalizedMessages]\n " }, { kind: "directive", type: TemplateContextDirective, selector: "[templateContext]", inputs: ["templateContext"] }, { kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: EventsOutsideAngularDirective, selector: "[kendoEventsOutsideAngular]", inputs: ["kendoEventsOutsideAngular", "scope"] }, { kind: "component", type: IconWrapperComponent, selector: "kendo-icon-wrapper", inputs: ["name", "svgIcon", "innerCssClass", "customFontClass", "size"], exportAs: ["kendoIconWrapper"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: ResizeSensorComponent, selector: "kendo-resize-sensor", inputs: ["rateLimit"], outputs: ["resize"] }, { kind: "component", type: AdaptiveRendererComponent, selector: "kendo-adaptive-renderer", inputs: ["title", "subtitle", "showTextInput", "sharedPopupActionSheetTemplate", "text", "placeholder", "searchBarValue", "filterable", "showListContainer"], outputs: ["closePopup", "textInputChange", "navigate", "onExpand"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i8.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i8.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: FilterInputDirective, selector: "[filterInput]", inputs: ["filterInput"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i8.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: ListComponent, selector: "kendo-list", inputs: ["selected", "focused", "textField", "valueField", "height", "template", "groupTemplate", "fixedGroupTemplate", "show", "id", "optionPrefix", "multipleSelection", "virtual", "type", "checkboxes", "ariaLive", "ariaLabel", "isMultiselect", "isActionSheetExpanded", "showStickyHeader", "rowWidth", "columnsWidths", "customItemTemplate", "text", "allowCustom", "defaultItem", "data", "size", "rounded"], outputs: ["onClick", "pageChange", "listResize", "popupListScroll"] }] });
8748
8987
  }
8749
8988
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.25", ngImport: i0, type: DropDownListComponent, decorators: [{
8750
8989
  type: Component,
@@ -8789,6 +9028,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.25", ngImpo
8789
9028
 
8790
9029
  i18n-filterPlaceholder="kendo.dropdownlist.filterPlaceholder|The text for the input's placeholder when filtering is enabled"
8791
9030
  filterInputPlaceholder="Filter"
9031
+
9032
+ i18n-listboxLabel="kendo.dropdownlist.listboxLabel|The accessible label of the listbox that contains the list of options"
9033
+ listboxLabel="Options"
8792
9034
  >
8793
9035
  </ng-container>
8794
9036
  <span class="k-input-inner" unselectable="on" [id]="valueLabelId" (click)="$event.preventDefault()">
@@ -8853,7 +9095,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.25", ngImpo
8853
9095
  class="k-searchbox k-input"
8854
9096
  [ngClass]="filterInputClasses">
8855
9097
  <kendo-icon-wrapper
8856
- class="k-icon"
8857
9098
  innerCssClass="k-input-icon"
8858
9099
  name="search"
8859
9100
  [svgIcon]="searchIcon">
@@ -8904,24 +9145,25 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.25", ngImpo
8904
9145
  [virtual]="virtual"
8905
9146
  [ariaLive]="ariaLive"
8906
9147
  [showStickyHeader]="showStickyHeader"
9148
+ [ariaLabel]="messageFor('listboxLabel')"
8907
9149
  (pageChange)="pageChange($event)"
8908
9150
  [defaultItem]="defaultItem">
9151
+ <!--no-data template-->
9152
+ @if (data.length === 0) {
9153
+ <div class="k-no-data" [attr.aria-live]="'polite'">
9154
+ @if (noDataTemplate) {
9155
+ <ng-template
9156
+ [templateContext]="{
9157
+ templateRef: noDataTemplate ? noDataTemplate.templateRef : undefined
9158
+ }">
9159
+ </ng-template>
9160
+ }
9161
+ @if (!noDataTemplate) {
9162
+ <div>{{ messageFor('noDataText') }}</div>
9163
+ }
9164
+ </div>
9165
+ }
8909
9166
  </kendo-list>
8910
- <!--no-data template-->
8911
- @if (data.length === 0) {
8912
- <div class="k-no-data" [attr.aria-live]="'polite'">
8913
- @if (noDataTemplate) {
8914
- <ng-template
8915
- [templateContext]="{
8916
- templateRef: noDataTemplate ? noDataTemplate.templateRef : undefined
8917
- }">
8918
- </ng-template>
8919
- }
8920
- @if (!noDataTemplate) {
8921
- <div>{{ messageFor('noDataText') }}</div>
8922
- }
8923
- </div>
8924
- }
8925
9167
  <!--footer template-->
8926
9168
  @if (footerTemplate) {
8927
9169
  <ng-template
@@ -9242,6 +9484,7 @@ class TagListComponent {
9242
9484
  disabled;
9243
9485
  tagPrefix;
9244
9486
  id;
9487
+ ariaLabel;
9245
9488
  set size(size) {
9246
9489
  this.renderer.removeClass(this.hostElement.nativeElement, getSizeClass('chip-list', this.size));
9247
9490
  if (size) {
@@ -9264,7 +9507,11 @@ class TagListComponent {
9264
9507
  return this.id;
9265
9508
  }
9266
9509
  taglistRole = 'listbox';
9510
+ get hostAriaLabel() {
9511
+ return this.ariaLabel || null;
9512
+ }
9267
9513
  multiselectable = true;
9514
+ ariaOrientation = 'horizontal';
9268
9515
  _size;
9269
9516
  constructor(renderer, hostElement) {
9270
9517
  this.renderer = renderer;
@@ -9319,7 +9566,7 @@ class TagListComponent {
9319
9566
  }
9320
9567
  }
9321
9568
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.25", ngImport: i0, type: TagListComponent, deps: [{ token: i0.Renderer2 }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component });
9322
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.25", type: TagListComponent, isStandalone: true, selector: "kendo-taglist", inputs: { tags: "tags", textField: "textField", valueField: "valueField", valueDepth: "valueDepth", focused: "focused", template: "template", groupTemplate: "groupTemplate", disabled: "disabled", tagPrefix: "tagPrefix", id: "id", size: "size", rounded: "rounded", fillMode: "fillMode", disabledIndices: "disabledIndices" }, outputs: { removeTag: "removeTag" }, host: { properties: { "class.k-chip-list": "this.hostClass", "attr.id": "this.hostId", "attr.role": "this.taglistRole", "attr.aria-multiselectable": "this.multiselectable" } }, ngImport: i0, template: `
9569
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.25", type: TagListComponent, isStandalone: true, selector: "kendo-taglist", inputs: { tags: "tags", textField: "textField", valueField: "valueField", valueDepth: "valueDepth", focused: "focused", template: "template", groupTemplate: "groupTemplate", disabled: "disabled", tagPrefix: "tagPrefix", id: "id", ariaLabel: "ariaLabel", size: "size", rounded: "rounded", fillMode: "fillMode", disabledIndices: "disabledIndices" }, outputs: { removeTag: "removeTag" }, host: { properties: { "class.k-chip-list": "this.hostClass", "attr.id": "this.hostId", "attr.role": "this.taglistRole", "attr.aria-label": "this.hostAriaLabel", "attr.aria-multiselectable": "this.multiselectable", "attr.aria-orientation": "this.ariaOrientation" } }, ngImport: i0, template: `
9323
9570
  @for (tag of tags; track $index; let index = $index) {
9324
9571
  <div
9325
9572
  [attr.id]="itemId(tag, index)"
@@ -9345,7 +9592,7 @@ class TagListComponent {
9345
9592
  >
9346
9593
  <span class="k-chip-content">
9347
9594
  @if (isGroupTag(tag)) {
9348
- <span class="k-chip-label k-text-ellipsis">
9595
+ <span class="k-chip-label">
9349
9596
  @if (groupTemplate) {
9350
9597
  <ng-template
9351
9598
  [templateContext]="{
@@ -9359,7 +9606,7 @@ class TagListComponent {
9359
9606
  }
9360
9607
  </span>
9361
9608
  } @else {
9362
- <span class="k-chip-label k-text-ellipsis">
9609
+ <span class="k-chip-label">
9363
9610
  @if (template) {
9364
9611
  <ng-template
9365
9612
  [templateContext]="{
@@ -9375,11 +9622,13 @@ class TagListComponent {
9375
9622
  }
9376
9623
  </span>
9377
9624
  <span class="k-chip-actions">
9378
- <span aria-label="delete" [attr.aria-hidden]="index !== focused" class="k-chip-action k-chip-remove-action">
9625
+ <span class="k-chip-action k-chip-remove-action">
9379
9626
  <kendo-icon-wrapper
9627
+ [attr.aria-hidden]="index !== focused"
9380
9628
  (mousedown)="deleteTag($event, tag, index)"
9381
9629
  name="x-circle"
9382
9630
  [svgIcon]="xCircleIcon"
9631
+ size="small"
9383
9632
  >
9384
9633
  </kendo-icon-wrapper>
9385
9634
  </span>
@@ -9419,7 +9668,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.25", ngImpo
9419
9668
  >
9420
9669
  <span class="k-chip-content">
9421
9670
  @if (isGroupTag(tag)) {
9422
- <span class="k-chip-label k-text-ellipsis">
9671
+ <span class="k-chip-label">
9423
9672
  @if (groupTemplate) {
9424
9673
  <ng-template
9425
9674
  [templateContext]="{
@@ -9433,7 +9682,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.25", ngImpo
9433
9682
  }
9434
9683
  </span>
9435
9684
  } @else {
9436
- <span class="k-chip-label k-text-ellipsis">
9685
+ <span class="k-chip-label">
9437
9686
  @if (template) {
9438
9687
  <ng-template
9439
9688
  [templateContext]="{
@@ -9449,11 +9698,13 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.25", ngImpo
9449
9698
  }
9450
9699
  </span>
9451
9700
  <span class="k-chip-actions">
9452
- <span aria-label="delete" [attr.aria-hidden]="index !== focused" class="k-chip-action k-chip-remove-action">
9701
+ <span class="k-chip-action k-chip-remove-action">
9453
9702
  <kendo-icon-wrapper
9703
+ [attr.aria-hidden]="index !== focused"
9454
9704
  (mousedown)="deleteTag($event, tag, index)"
9455
9705
  name="x-circle"
9456
9706
  [svgIcon]="xCircleIcon"
9707
+ size="small"
9457
9708
  >
9458
9709
  </kendo-icon-wrapper>
9459
9710
  </span>
@@ -9485,6 +9736,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.25", ngImpo
9485
9736
  type: Input
9486
9737
  }], id: [{
9487
9738
  type: Input
9739
+ }], ariaLabel: [{
9740
+ type: Input
9488
9741
  }], size: [{
9489
9742
  type: Input
9490
9743
  }], rounded: [{
@@ -9504,9 +9757,15 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.25", ngImpo
9504
9757
  }], taglistRole: [{
9505
9758
  type: HostBinding,
9506
9759
  args: ['attr.role']
9760
+ }], hostAriaLabel: [{
9761
+ type: HostBinding,
9762
+ args: ['attr.aria-label']
9507
9763
  }], multiselectable: [{
9508
9764
  type: HostBinding,
9509
9765
  args: ['attr.aria-multiselectable']
9766
+ }], ariaOrientation: [{
9767
+ type: HostBinding,
9768
+ args: ['attr.aria-orientation']
9510
9769
  }] } });
9511
9770
 
9512
9771
  const MULTISELECT_VALUE_ACCESSOR = {
@@ -9594,7 +9853,7 @@ class MultiSelectComponent {
9594
9853
  * @hidden
9595
9854
  */
9596
9855
  get ariaControls() {
9597
- return this.isOpen ? this.listBoxId : undefined;
9856
+ return (!this.isAdaptive && this.isOpen) ? this.listBoxId : undefined;
9598
9857
  }
9599
9858
  /**
9600
9859
  * @hidden
@@ -11278,6 +11537,9 @@ class MultiSelectComponent {
11278
11537
  i18n-clearTitle="kendo.multiselect.clearTitle|The title of the clear button"
11279
11538
  clearTitle="clear"
11280
11539
 
11540
+ i18n-chipListLabel="kendo.multiselect.chipListLabel|The accessible label of the tag list element that contains the selected items"
11541
+ chipListLabel="chip list"
11542
+
11281
11543
  i18n-popupLabel="kendo.multiselect.popupLabel|The label of the popup element that contains the list of options when its role is 'region'"
11282
11544
  popupLabel="Options list"
11283
11545
 
@@ -11286,6 +11548,9 @@ class MultiSelectComponent {
11286
11548
 
11287
11549
  i18n-useCustomValueText="kendo.multiselect.useCustomValueText|The text displayed when the user types a custom value that is not in the list of options."
11288
11550
  useCustomValueText="Use &quot;[[customValue]]&quot;"
11551
+
11552
+ i18n-listboxLabel="kendo.multiselect.listboxLabel|The accessible label of the listbox that contains the list of options"
11553
+ listboxLabel="Options"
11289
11554
  >
11290
11555
  </ng-container>
11291
11556
 
@@ -11320,17 +11585,18 @@ class MultiSelectComponent {
11320
11585
  [groupTemplate]="groupTagTemplate"
11321
11586
  [tagPrefix]="tagPrefix"
11322
11587
  [disabledIndices]="disabledIndices"
11588
+ [ariaLabel]="messageFor('chipListLabel')"
11323
11589
  (removeTag)="handleRemoveTag($event)"
11324
11590
  >
11325
11591
  </kendo-taglist>
11326
11592
  <input
11327
11593
  kendoSearchbar
11328
11594
  [ariaControls]="ariaControls"
11329
- [ariaExpanded]="isOpen"
11595
+ [ariaExpanded]="isAdaptive ? false : isOpen"
11330
11596
  [id]="focusableId"
11331
11597
  [tagListId]="tagListId"
11332
11598
  [isLoading]="loading"
11333
- [isFilterable]="filterable"
11599
+ [hasListAutocomplete]="filterable"
11334
11600
  [activeDescendant]="activeDescendant"
11335
11601
  [userInput]="text"
11336
11602
  [disabled]="disabled"
@@ -11357,7 +11623,6 @@ class MultiSelectComponent {
11357
11623
  (mousedown)="clearAll($event)"
11358
11624
  >
11359
11625
  <kendo-icon-wrapper
11360
- class="k-icon"
11361
11626
  name="x"
11362
11627
  [svgIcon]="xIcon"
11363
11628
  >
@@ -11435,23 +11700,24 @@ class MultiSelectComponent {
11435
11700
  [customItemTemplate]="customItemTemplate"
11436
11701
  [text]="text"
11437
11702
  [allowCustom]="allowCustom"
11703
+ [ariaLabel]="messageFor('listboxLabel')"
11438
11704
  >
11705
+ <!--no data template-->
11706
+ @if (data.length === 0) {
11707
+ <div class="k-no-data" [attr.aria-live]="'polite'">
11708
+ @if (noDataTemplate) {
11709
+ <ng-template
11710
+ [templateContext]="{
11711
+ templateRef: noDataTemplate ? noDataTemplate.templateRef : undefined
11712
+ }">
11713
+ </ng-template>
11714
+ }
11715
+ @if (!noDataTemplate) {
11716
+ <div>{{ messageFor('noDataText') }}</div>
11717
+ }
11718
+ </div>
11719
+ }
11439
11720
  </kendo-list>
11440
- <!--no data template-->
11441
- @if (data.length === 0) {
11442
- <div class="k-no-data" [attr.aria-live]="'polite'">
11443
- @if (noDataTemplate) {
11444
- <ng-template
11445
- [templateContext]="{
11446
- templateRef: noDataTemplate ? noDataTemplate.templateRef : undefined
11447
- }">
11448
- </ng-template>
11449
- }
11450
- @if (!noDataTemplate) {
11451
- <div>{{ messageFor('noDataText') }}</div>
11452
- }
11453
- </div>
11454
- }
11455
11721
  <!--footer template-->
11456
11722
  @if (footerTemplate) {
11457
11723
  <ng-template
@@ -11461,7 +11727,7 @@ class MultiSelectComponent {
11461
11727
  </ng-template>
11462
11728
  }
11463
11729
  </ng-template>
11464
- `, isInline: true, dependencies: [{ kind: "directive", type: LocalizedMessagesDirective, selector: "\n [kendoDropDownListLocalizedMessages],\n [kendoDropDownTreeLocalizedMessages],\n [kendoComboBoxLocalizedMessages],\n [kendoMultiColumnComboBoxLocalizedMessages],\n [kendoAutoCompleteLocalizedMessages],\n [kendoMultiSelectLocalizedMessages],\n [kendoMultiSelectTreeLocalizedMessages]\n " }, { kind: "directive", type: SharedDropDownEventsDirective, selector: "[kendoDropDownSharedEvents]", inputs: ["hostElement", "clearButtonClicked", "isFocused"], outputs: ["isFocusedChange", "onFocus", "handleBlur"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: SeparatorComponent, selector: "kendo-separator", inputs: ["orientation"] }, { kind: "component", type: TagListComponent, selector: "kendo-taglist", inputs: ["tags", "textField", "valueField", "valueDepth", "focused", "template", "groupTemplate", "disabled", "tagPrefix", "id", "size", "rounded", "fillMode", "disabledIndices"], outputs: ["removeTag"] }, { kind: "component", type: SearchBarComponent, selector: "input[kendoSearchbar]", inputs: ["tagListId", "readonly", "disabled", "isRequired", "isSuggestable", "isFilterable", "userInput", "suggestedText", "inputAttributes", "id", "activeDescendant", "tabIndex", "isLoading", "ariaControls", "ariaExpanded", "placeholder"], outputs: ["valueChange", "onBlur", "onFocus", "onClick", "onNavigate"] }, { kind: "component", type: IconWrapperComponent, selector: "kendo-icon-wrapper", inputs: ["name", "svgIcon", "innerCssClass", "customFontClass", "size"], exportAs: ["kendoIconWrapper"] }, { kind: "component", type: ResizeSensorComponent, selector: "kendo-resize-sensor", inputs: ["rateLimit"], outputs: ["resize"] }, { kind: "component", type: AdaptiveRendererComponent, selector: "kendo-adaptive-renderer", inputs: ["title", "subtitle", "showTextInput", "sharedPopupActionSheetTemplate", "text", "placeholder", "searchBarValue", "filterable"], outputs: ["closePopup", "textInputChange", "navigate", "onExpand"] }, { kind: "directive", type: TemplateContextDirective, selector: "[templateContext]", inputs: ["templateContext"] }, { kind: "component", type: ListComponent, selector: "kendo-list", inputs: ["selected", "focused", "textField", "valueField", "height", "template", "groupTemplate", "fixedGroupTemplate", "show", "id", "optionPrefix", "multipleSelection", "virtual", "type", "checkboxes", "ariaLive", "isMultiselect", "isActionSheetExpanded", "showStickyHeader", "rowWidth", "customItemTemplate", "text", "allowCustom", "defaultItem", "data", "size", "rounded"], outputs: ["onClick", "pageChange", "listResize", "popupListScroll"] }] });
11730
+ `, isInline: true, dependencies: [{ kind: "directive", type: LocalizedMessagesDirective, selector: "\n [kendoDropDownListLocalizedMessages],\n [kendoDropDownTreeLocalizedMessages],\n [kendoComboBoxLocalizedMessages],\n [kendoMultiColumnComboBoxLocalizedMessages],\n [kendoAutoCompleteLocalizedMessages],\n [kendoMultiSelectLocalizedMessages],\n [kendoMultiSelectTreeLocalizedMessages]\n " }, { kind: "directive", type: SharedDropDownEventsDirective, selector: "[kendoDropDownSharedEvents]", inputs: ["hostElement", "clearButtonClicked", "isFocused"], outputs: ["isFocusedChange", "onFocus", "handleBlur"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: SeparatorComponent, selector: "kendo-separator", inputs: ["orientation"] }, { kind: "component", type: TagListComponent, selector: "kendo-taglist", inputs: ["tags", "textField", "valueField", "valueDepth", "focused", "template", "groupTemplate", "disabled", "tagPrefix", "id", "ariaLabel", "size", "rounded", "fillMode", "disabledIndices"], outputs: ["removeTag"] }, { kind: "component", type: SearchBarComponent, selector: "input[kendoSearchbar]", inputs: ["tagListId", "readonly", "disabled", "isRequired", "isSuggestable", "hasListAutocomplete", "userInput", "suggestedText", "inputAttributes", "id", "activeDescendant", "tabIndex", "isLoading", "ariaControls", "ariaExpanded", "placeholder"], outputs: ["valueChange", "onBlur", "onFocus", "onClick", "onNavigate"] }, { kind: "component", type: IconWrapperComponent, selector: "kendo-icon-wrapper", inputs: ["name", "svgIcon", "innerCssClass", "customFontClass", "size"], exportAs: ["kendoIconWrapper"] }, { kind: "component", type: ResizeSensorComponent, selector: "kendo-resize-sensor", inputs: ["rateLimit"], outputs: ["resize"] }, { kind: "component", type: AdaptiveRendererComponent, selector: "kendo-adaptive-renderer", inputs: ["title", "subtitle", "showTextInput", "sharedPopupActionSheetTemplate", "text", "placeholder", "searchBarValue", "filterable", "showListContainer"], outputs: ["closePopup", "textInputChange", "navigate", "onExpand"] }, { kind: "directive", type: TemplateContextDirective, selector: "[templateContext]", inputs: ["templateContext"] }, { kind: "component", type: ListComponent, selector: "kendo-list", inputs: ["selected", "focused", "textField", "valueField", "height", "template", "groupTemplate", "fixedGroupTemplate", "show", "id", "optionPrefix", "multipleSelection", "virtual", "type", "checkboxes", "ariaLive", "ariaLabel", "isMultiselect", "isActionSheetExpanded", "showStickyHeader", "rowWidth", "columnsWidths", "customItemTemplate", "text", "allowCustom", "defaultItem", "data", "size", "rounded"], outputs: ["onClick", "pageChange", "listResize", "popupListScroll"] }] });
11465
11731
  }
11466
11732
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.25", ngImport: i0, type: MultiSelectComponent, decorators: [{
11467
11733
  type: Component,
@@ -11497,6 +11763,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.25", ngImpo
11497
11763
  i18n-clearTitle="kendo.multiselect.clearTitle|The title of the clear button"
11498
11764
  clearTitle="clear"
11499
11765
 
11766
+ i18n-chipListLabel="kendo.multiselect.chipListLabel|The accessible label of the tag list element that contains the selected items"
11767
+ chipListLabel="chip list"
11768
+
11500
11769
  i18n-popupLabel="kendo.multiselect.popupLabel|The label of the popup element that contains the list of options when its role is 'region'"
11501
11770
  popupLabel="Options list"
11502
11771
 
@@ -11505,6 +11774,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.25", ngImpo
11505
11774
 
11506
11775
  i18n-useCustomValueText="kendo.multiselect.useCustomValueText|The text displayed when the user types a custom value that is not in the list of options."
11507
11776
  useCustomValueText="Use &quot;[[customValue]]&quot;"
11777
+
11778
+ i18n-listboxLabel="kendo.multiselect.listboxLabel|The accessible label of the listbox that contains the list of options"
11779
+ listboxLabel="Options"
11508
11780
  >
11509
11781
  </ng-container>
11510
11782
 
@@ -11539,17 +11811,18 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.25", ngImpo
11539
11811
  [groupTemplate]="groupTagTemplate"
11540
11812
  [tagPrefix]="tagPrefix"
11541
11813
  [disabledIndices]="disabledIndices"
11814
+ [ariaLabel]="messageFor('chipListLabel')"
11542
11815
  (removeTag)="handleRemoveTag($event)"
11543
11816
  >
11544
11817
  </kendo-taglist>
11545
11818
  <input
11546
11819
  kendoSearchbar
11547
11820
  [ariaControls]="ariaControls"
11548
- [ariaExpanded]="isOpen"
11821
+ [ariaExpanded]="isAdaptive ? false : isOpen"
11549
11822
  [id]="focusableId"
11550
11823
  [tagListId]="tagListId"
11551
11824
  [isLoading]="loading"
11552
- [isFilterable]="filterable"
11825
+ [hasListAutocomplete]="filterable"
11553
11826
  [activeDescendant]="activeDescendant"
11554
11827
  [userInput]="text"
11555
11828
  [disabled]="disabled"
@@ -11576,7 +11849,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.25", ngImpo
11576
11849
  (mousedown)="clearAll($event)"
11577
11850
  >
11578
11851
  <kendo-icon-wrapper
11579
- class="k-icon"
11580
11852
  name="x"
11581
11853
  [svgIcon]="xIcon"
11582
11854
  >
@@ -11654,23 +11926,24 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.25", ngImpo
11654
11926
  [customItemTemplate]="customItemTemplate"
11655
11927
  [text]="text"
11656
11928
  [allowCustom]="allowCustom"
11929
+ [ariaLabel]="messageFor('listboxLabel')"
11657
11930
  >
11931
+ <!--no data template-->
11932
+ @if (data.length === 0) {
11933
+ <div class="k-no-data" [attr.aria-live]="'polite'">
11934
+ @if (noDataTemplate) {
11935
+ <ng-template
11936
+ [templateContext]="{
11937
+ templateRef: noDataTemplate ? noDataTemplate.templateRef : undefined
11938
+ }">
11939
+ </ng-template>
11940
+ }
11941
+ @if (!noDataTemplate) {
11942
+ <div>{{ messageFor('noDataText') }}</div>
11943
+ }
11944
+ </div>
11945
+ }
11658
11946
  </kendo-list>
11659
- <!--no data template-->
11660
- @if (data.length === 0) {
11661
- <div class="k-no-data" [attr.aria-live]="'polite'">
11662
- @if (noDataTemplate) {
11663
- <ng-template
11664
- [templateContext]="{
11665
- templateRef: noDataTemplate ? noDataTemplate.templateRef : undefined
11666
- }">
11667
- </ng-template>
11668
- }
11669
- @if (!noDataTemplate) {
11670
- <div>{{ messageFor('noDataText') }}</div>
11671
- }
11672
- </div>
11673
- }
11674
11947
  <!--footer template-->
11675
11948
  @if (footerTemplate) {
11676
11949
  <ng-template
@@ -12126,6 +12399,17 @@ class MultiColumnComboBoxComponent extends ComboBoxComponent {
12126
12399
  * @hidden
12127
12400
  */
12128
12401
  totalColumnsWidth;
12402
+ /**
12403
+ * @hidden
12404
+ */
12405
+ get visibleColumnsWidths() {
12406
+ return this.columns.reduce((widths, column, index) => {
12407
+ if (!column.hidden && column.matchesMedia) {
12408
+ widths.push(this.getColumnWidth(index));
12409
+ }
12410
+ return widths;
12411
+ }, []);
12412
+ }
12129
12413
  get popupWidth() {
12130
12414
  const wrapperOffsetWidth = this.wrapper.nativeElement.offsetWidth;
12131
12415
  const min = `${wrapperOffsetWidth}px`;
@@ -12140,7 +12424,8 @@ class MultiColumnComboBoxComponent extends ComboBoxComponent {
12140
12424
  * @hidden
12141
12425
  */
12142
12426
  get tableSizeClass() {
12143
- return `${this.size ? getSizeClass('table', this.size) : ''}`;
12427
+ const effectiveSize = this.isAdaptive ? 'large' : this.size;
12428
+ return `${effectiveSize ? getSizeClass('table', effectiveSize) : ''}`;
12144
12429
  }
12145
12430
  /**
12146
12431
  * @hidden
@@ -12309,6 +12594,8 @@ class MultiColumnComboBoxComponent extends ComboBoxComponent {
12309
12594
  popupLabel="Options list"
12310
12595
  i18n-adaptiveCloseButtonTitle="kendo.multicolumncombobox.adaptiveCloseButtonTitle|The title of the Close button of the ActionSheet that is rendered instead of the Popup when using small screen devices in adaptive mode"
12311
12596
  adaptiveCloseButtonTitle="Close"
12597
+ i18n-listboxLabel="kendo.multicolumncombobox.listboxLabel|The accessible label of the listbox that contains the list of options"
12598
+ listboxLabel="Options"
12312
12599
  ></ng-container>
12313
12600
 
12314
12601
  <ng-container
@@ -12330,11 +12617,11 @@ class MultiColumnComboBoxComponent extends ComboBoxComponent {
12330
12617
  <input
12331
12618
  kendoSearchbar
12332
12619
  [ariaControls]="ariaControls"
12333
- [ariaExpanded]="isOpen"
12620
+ [ariaExpanded]="isAdaptive ? false : isOpen"
12334
12621
  [id]="focusableId"
12335
12622
  [isLoading]="loading"
12336
12623
  [isSuggestable]="suggest"
12337
- [isFilterable]="filterable"
12624
+ [hasListAutocomplete]="filterable"
12338
12625
  [activeDescendant]="activeDescendant"
12339
12626
  [userInput]="text"
12340
12627
  [suggestedText]="getSuggestion()"
@@ -12438,7 +12725,7 @@ class MultiColumnComboBoxComponent extends ComboBoxComponent {
12438
12725
  <!--grid header-->
12439
12726
  <div #header class="k-table-header">
12440
12727
  <div #headerWrap class="k-table-header-wrap">
12441
- <table #headerTable class="k-table" role="presentation">
12728
+ <table #headerTable class="k-table">
12442
12729
  <colgroup>
12443
12730
  @for (column of columns; track column) {
12444
12731
  @if (!column.hidden && column.matchesMedia) {
@@ -12522,7 +12809,9 @@ class MultiColumnComboBoxComponent extends ComboBoxComponent {
12522
12809
  [virtual]="virtual"
12523
12810
  [type]="'dropdowngrid'"
12524
12811
  [rowWidth]="rowWidth"
12812
+ [columnsWidths]="visibleColumnsWidths"
12525
12813
  [showStickyHeader]="showStickyHeader"
12814
+ [ariaLabel]="messageFor('listboxLabel')"
12526
12815
  (pageChange)="pageChange($event)"
12527
12816
  (listResize)="updateHeaderPadding(header)"
12528
12817
  (popupListScroll)="headerWrap.scrollLeft = $event.target.scrollLeft;"
@@ -12549,25 +12838,19 @@ class MultiColumnComboBoxComponent extends ComboBoxComponent {
12549
12838
  <!--user-defined footer template-->
12550
12839
  @if (footerTemplate) {
12551
12840
  <div class="k-table-footer">
12552
- <table class="k-table">
12553
- <tfoot class="k-table-tfoot">
12554
- <tr class="k-table-row">
12555
- <td class="k-table-td">
12556
- <ng-template
12841
+ <span class="k-table-td">
12842
+ <ng-template
12557
12843
  [templateContext]="{
12558
12844
  templateRef: footerTemplate.templateRef
12559
12845
  }"
12560
- >
12561
- </ng-template>
12562
- </td>
12563
- </tr>
12564
- </tfoot>
12565
- </table>
12846
+ >
12847
+ </ng-template>
12848
+ </span>
12566
12849
  </div>
12567
12850
  }
12568
12851
  </div>
12569
12852
  </ng-template>
12570
- `, isInline: true, dependencies: [{ kind: "directive", type: LocalizedMessagesDirective, selector: "\n [kendoDropDownListLocalizedMessages],\n [kendoDropDownTreeLocalizedMessages],\n [kendoComboBoxLocalizedMessages],\n [kendoMultiColumnComboBoxLocalizedMessages],\n [kendoAutoCompleteLocalizedMessages],\n [kendoMultiSelectLocalizedMessages],\n [kendoMultiSelectTreeLocalizedMessages]\n " }, { kind: "directive", type: SharedDropDownEventsDirective, selector: "[kendoDropDownSharedEvents]", inputs: ["hostElement", "clearButtonClicked", "isFocused"], outputs: ["isFocusedChange", "onFocus", "handleBlur"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: SeparatorComponent, selector: "kendo-separator", inputs: ["orientation"] }, { kind: "component", type: SearchBarComponent, selector: "input[kendoSearchbar]", inputs: ["tagListId", "readonly", "disabled", "isRequired", "isSuggestable", "isFilterable", "userInput", "suggestedText", "inputAttributes", "id", "activeDescendant", "tabIndex", "isLoading", "ariaControls", "ariaExpanded", "placeholder"], outputs: ["valueChange", "onBlur", "onFocus", "onClick", "onNavigate"] }, { kind: "directive", type: EventsOutsideAngularDirective, selector: "[kendoEventsOutsideAngular]", inputs: ["kendoEventsOutsideAngular", "scope"] }, { kind: "component", type: IconWrapperComponent, selector: "kendo-icon-wrapper", inputs: ["name", "svgIcon", "innerCssClass", "customFontClass", "size"], exportAs: ["kendoIconWrapper"] }, { kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "component", type: ResizeSensorComponent, selector: "kendo-resize-sensor", inputs: ["rateLimit"], outputs: ["resize"] }, { kind: "component", type: AdaptiveRendererComponent, selector: "kendo-adaptive-renderer", inputs: ["title", "subtitle", "showTextInput", "sharedPopupActionSheetTemplate", "text", "placeholder", "searchBarValue", "filterable"], outputs: ["closePopup", "textInputChange", "navigate", "onExpand"] }, { kind: "directive", type: TemplateContextDirective, selector: "[templateContext]", inputs: ["templateContext"] }, { kind: "directive", type: NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "component", type: ListComponent, selector: "kendo-list", inputs: ["selected", "focused", "textField", "valueField", "height", "template", "groupTemplate", "fixedGroupTemplate", "show", "id", "optionPrefix", "multipleSelection", "virtual", "type", "checkboxes", "ariaLive", "isMultiselect", "isActionSheetExpanded", "showStickyHeader", "rowWidth", "customItemTemplate", "text", "allowCustom", "defaultItem", "data", "size", "rounded"], outputs: ["onClick", "pageChange", "listResize", "popupListScroll"] }] });
12853
+ `, isInline: true, dependencies: [{ kind: "directive", type: LocalizedMessagesDirective, selector: "\n [kendoDropDownListLocalizedMessages],\n [kendoDropDownTreeLocalizedMessages],\n [kendoComboBoxLocalizedMessages],\n [kendoMultiColumnComboBoxLocalizedMessages],\n [kendoAutoCompleteLocalizedMessages],\n [kendoMultiSelectLocalizedMessages],\n [kendoMultiSelectTreeLocalizedMessages]\n " }, { kind: "directive", type: SharedDropDownEventsDirective, selector: "[kendoDropDownSharedEvents]", inputs: ["hostElement", "clearButtonClicked", "isFocused"], outputs: ["isFocusedChange", "onFocus", "handleBlur"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: SeparatorComponent, selector: "kendo-separator", inputs: ["orientation"] }, { kind: "component", type: SearchBarComponent, selector: "input[kendoSearchbar]", inputs: ["tagListId", "readonly", "disabled", "isRequired", "isSuggestable", "hasListAutocomplete", "userInput", "suggestedText", "inputAttributes", "id", "activeDescendant", "tabIndex", "isLoading", "ariaControls", "ariaExpanded", "placeholder"], outputs: ["valueChange", "onBlur", "onFocus", "onClick", "onNavigate"] }, { kind: "directive", type: EventsOutsideAngularDirective, selector: "[kendoEventsOutsideAngular]", inputs: ["kendoEventsOutsideAngular", "scope"] }, { kind: "component", type: IconWrapperComponent, selector: "kendo-icon-wrapper", inputs: ["name", "svgIcon", "innerCssClass", "customFontClass", "size"], exportAs: ["kendoIconWrapper"] }, { kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "component", type: ResizeSensorComponent, selector: "kendo-resize-sensor", inputs: ["rateLimit"], outputs: ["resize"] }, { kind: "component", type: AdaptiveRendererComponent, selector: "kendo-adaptive-renderer", inputs: ["title", "subtitle", "showTextInput", "sharedPopupActionSheetTemplate", "text", "placeholder", "searchBarValue", "filterable", "showListContainer"], outputs: ["closePopup", "textInputChange", "navigate", "onExpand"] }, { kind: "directive", type: TemplateContextDirective, selector: "[templateContext]", inputs: ["templateContext"] }, { kind: "directive", type: NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "component", type: ListComponent, selector: "kendo-list", inputs: ["selected", "focused", "textField", "valueField", "height", "template", "groupTemplate", "fixedGroupTemplate", "show", "id", "optionPrefix", "multipleSelection", "virtual", "type", "checkboxes", "ariaLive", "ariaLabel", "isMultiselect", "isActionSheetExpanded", "showStickyHeader", "rowWidth", "columnsWidths", "customItemTemplate", "text", "allowCustom", "defaultItem", "data", "size", "rounded"], outputs: ["onClick", "pageChange", "listResize", "popupListScroll"] }] });
12571
12854
  }
12572
12855
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.25", ngImport: i0, type: MultiColumnComboBoxComponent, decorators: [{
12573
12856
  type: Component,
@@ -12623,6 +12906,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.25", ngImpo
12623
12906
  popupLabel="Options list"
12624
12907
  i18n-adaptiveCloseButtonTitle="kendo.multicolumncombobox.adaptiveCloseButtonTitle|The title of the Close button of the ActionSheet that is rendered instead of the Popup when using small screen devices in adaptive mode"
12625
12908
  adaptiveCloseButtonTitle="Close"
12909
+ i18n-listboxLabel="kendo.multicolumncombobox.listboxLabel|The accessible label of the listbox that contains the list of options"
12910
+ listboxLabel="Options"
12626
12911
  ></ng-container>
12627
12912
 
12628
12913
  <ng-container
@@ -12644,11 +12929,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.25", ngImpo
12644
12929
  <input
12645
12930
  kendoSearchbar
12646
12931
  [ariaControls]="ariaControls"
12647
- [ariaExpanded]="isOpen"
12932
+ [ariaExpanded]="isAdaptive ? false : isOpen"
12648
12933
  [id]="focusableId"
12649
12934
  [isLoading]="loading"
12650
12935
  [isSuggestable]="suggest"
12651
- [isFilterable]="filterable"
12936
+ [hasListAutocomplete]="filterable"
12652
12937
  [activeDescendant]="activeDescendant"
12653
12938
  [userInput]="text"
12654
12939
  [suggestedText]="getSuggestion()"
@@ -12752,7 +13037,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.25", ngImpo
12752
13037
  <!--grid header-->
12753
13038
  <div #header class="k-table-header">
12754
13039
  <div #headerWrap class="k-table-header-wrap">
12755
- <table #headerTable class="k-table" role="presentation">
13040
+ <table #headerTable class="k-table">
12756
13041
  <colgroup>
12757
13042
  @for (column of columns; track column) {
12758
13043
  @if (!column.hidden && column.matchesMedia) {
@@ -12836,7 +13121,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.25", ngImpo
12836
13121
  [virtual]="virtual"
12837
13122
  [type]="'dropdowngrid'"
12838
13123
  [rowWidth]="rowWidth"
13124
+ [columnsWidths]="visibleColumnsWidths"
12839
13125
  [showStickyHeader]="showStickyHeader"
13126
+ [ariaLabel]="messageFor('listboxLabel')"
12840
13127
  (pageChange)="pageChange($event)"
12841
13128
  (listResize)="updateHeaderPadding(header)"
12842
13129
  (popupListScroll)="headerWrap.scrollLeft = $event.target.scrollLeft;"
@@ -12863,20 +13150,14 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.25", ngImpo
12863
13150
  <!--user-defined footer template-->
12864
13151
  @if (footerTemplate) {
12865
13152
  <div class="k-table-footer">
12866
- <table class="k-table">
12867
- <tfoot class="k-table-tfoot">
12868
- <tr class="k-table-row">
12869
- <td class="k-table-td">
12870
- <ng-template
13153
+ <span class="k-table-td">
13154
+ <ng-template
12871
13155
  [templateContext]="{
12872
13156
  templateRef: footerTemplate.templateRef
12873
13157
  }"
12874
- >
12875
- </ng-template>
12876
- </td>
12877
- </tr>
12878
- </tfoot>
12879
- </table>
13158
+ >
13159
+ </ng-template>
13160
+ </span>
12880
13161
  </div>
12881
13162
  }
12882
13163
  </div>
@@ -13006,7 +13287,7 @@ class DropDownTreeComponent {
13006
13287
  return this.readonly ? '' : null;
13007
13288
  }
13008
13289
  get hostAriaInvalid() {
13009
- return this.formControl?.invalid ? true : null;
13290
+ return (this.formControl?.invalid && (this.formControl?.touched || this.formControl?.dirty)) ? true : null;
13010
13291
  }
13011
13292
  get isDisabled() {
13012
13293
  return this.disabled || null;
@@ -13018,7 +13299,7 @@ class DropDownTreeComponent {
13018
13299
  return this.loading ? 'true' : null;
13019
13300
  }
13020
13301
  get hostAriaControls() {
13021
- return this.isOpen ? this.treeViewId : null;
13302
+ return (!this.isAdaptive && this.isOpen) ? this.treeViewId : null;
13022
13303
  }
13023
13304
  get id() {
13024
13305
  return this.focusableId;
@@ -13030,7 +13311,7 @@ class DropDownTreeComponent {
13030
13311
  role = 'combobox';
13031
13312
  ariaHasPopup = 'tree';
13032
13313
  get isAriaExpanded() {
13033
- return this.isOpen;
13314
+ return this.isAdaptive ? false : this.isOpen;
13034
13315
  }
13035
13316
  get hostAriaAutocomplete() {
13036
13317
  return this.filterable ? 'list' : null;
@@ -13050,6 +13331,7 @@ class DropDownTreeComponent {
13050
13331
  // the treeview animations are initially disabled (we don't want expand animations during popup opening)
13051
13332
  // re-enables the animations for user interaction
13052
13333
  treeview.animate = true;
13334
+ treeview.loadMoreButtonRole = 'treeitem';
13053
13335
  this._treeview = treeview;
13054
13336
  }
13055
13337
  }
@@ -13755,7 +14037,7 @@ class DropDownTreeComponent {
13755
14037
  * @hidden
13756
14038
  */
13757
14039
  get popupContainerClasses() {
13758
- const containerClasses = ['k-dropdowntree-popup'];
14040
+ const containerClasses = ['k-list-container', 'k-dropdowntree-popup'];
13759
14041
  if (!this.popupSettings.popupClass) {
13760
14042
  return containerClasses;
13761
14043
  }
@@ -14333,6 +14615,7 @@ class DropDownTreeComponent {
14333
14615
  [title]="adaptiveTitle"
14334
14616
  [showTextInput]="filterable"
14335
14617
  [subtitle]="adaptiveSubtitle"
14618
+ [showListContainer]="false"
14336
14619
  (closePopup)="togglePopup(false)"
14337
14620
  (textInputChange)="handleFilterInputChange($event)"
14338
14621
  [placeholder]="placeholder"
@@ -14349,14 +14632,14 @@ class DropDownTreeComponent {
14349
14632
  class="k-textbox k-input"
14350
14633
  [ngClass]="filterInputClasses"
14351
14634
  >
14352
- <span class="k-input-prefix">
14635
+ <span class="k-input-prefix k-input-prefix-horizontal">
14353
14636
  <kendo-icon-wrapper
14354
- class="k-icon"
14355
14637
  name="search"
14356
14638
  [svgIcon]="searchIcon"
14357
14639
  >
14358
14640
  </kendo-icon-wrapper>
14359
14641
  </span>
14642
+ <kendo-separator></kendo-separator>
14360
14643
  <input
14361
14644
  #filterInput
14362
14645
  (input)="handleFilterInputChange($event.target)"
@@ -14388,7 +14671,7 @@ class DropDownTreeComponent {
14388
14671
  <kendo-treeview
14389
14672
  #treeview
14390
14673
  [attr.id]="treeViewId"
14391
- [size]="windowSize !== 'large' ? 'large' : size"
14674
+ [size]="isAdaptive ? 'large' : size"
14392
14675
  [nodes]="data"
14393
14676
  [style.maxHeight.px]="listHeight"
14394
14677
  [animate]="false"
@@ -14441,7 +14724,7 @@ class DropDownTreeComponent {
14441
14724
  @if (isOpen || isAdaptiveModeEnabled) {
14442
14725
  <kendo-resize-sensor (resize)="onResize()"></kendo-resize-sensor>
14443
14726
  }
14444
- `, isInline: true, dependencies: [{ kind: "directive", type: LocalizedMessagesDirective, selector: "\n [kendoDropDownListLocalizedMessages],\n [kendoDropDownTreeLocalizedMessages],\n [kendoComboBoxLocalizedMessages],\n [kendoMultiColumnComboBoxLocalizedMessages],\n [kendoAutoCompleteLocalizedMessages],\n [kendoMultiSelectLocalizedMessages],\n [kendoMultiSelectTreeLocalizedMessages]\n " }, { kind: "directive", type: TemplateContextDirective, selector: "[templateContext]", inputs: ["templateContext"] }, { kind: "component", type: IconWrapperComponent, selector: "kendo-icon-wrapper", inputs: ["name", "svgIcon", "innerCssClass", "customFontClass", "size"], exportAs: ["kendoIconWrapper"] }, { kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: AdaptiveRendererComponent, selector: "kendo-adaptive-renderer", inputs: ["title", "subtitle", "showTextInput", "sharedPopupActionSheetTemplate", "text", "placeholder", "searchBarValue", "filterable"], outputs: ["closePopup", "textInputChange", "navigate", "onExpand"] }, { kind: "directive", type: FilterInputDirective, selector: "[filterInput]", inputs: ["filterInput"] }, { kind: "directive", type: EventsOutsideAngularDirective, selector: "[kendoEventsOutsideAngular]", inputs: ["kendoEventsOutsideAngular", "scope"] }, { kind: "component", type: TreeViewComponent, selector: "kendo-treeview", inputs: ["filterInputPlaceholder", "expandDisabledNodes", "animate", "nodeTemplate", "loadMoreButtonTemplate", "trackBy", "nodes", "textField", "hasChildren", "isChecked", "isDisabled", "hasCheckbox", "isExpanded", "isSelected", "isVisible", "navigable", "children", "loadOnDemand", "filterable", "filter", "size", "disableParentNodesOnly"], outputs: ["childrenLoaded", "blur", "focus", "expand", "collapse", "nodeDragStart", "nodeDrag", "filterStateChange", "nodeDrop", "nodeDragEnd", "addItem", "removeItem", "checkedChange", "selectionChange", "filterChange", "nodeClick", "nodeDblClick"], exportAs: ["kendoTreeView"] }, { kind: "directive", type: SelectDirective, selector: "[kendoTreeViewSelectable]", inputs: ["isSelected", "selectBy", "kendoTreeViewSelectable", "selectedKeys"], outputs: ["selectedKeysChange"] }, { kind: "component", type: ResizeSensorComponent, selector: "kendo-resize-sensor", inputs: ["rateLimit"], outputs: ["resize"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
14727
+ `, isInline: true, dependencies: [{ kind: "directive", type: LocalizedMessagesDirective, selector: "\n [kendoDropDownListLocalizedMessages],\n [kendoDropDownTreeLocalizedMessages],\n [kendoComboBoxLocalizedMessages],\n [kendoMultiColumnComboBoxLocalizedMessages],\n [kendoAutoCompleteLocalizedMessages],\n [kendoMultiSelectLocalizedMessages],\n [kendoMultiSelectTreeLocalizedMessages]\n " }, { kind: "directive", type: TemplateContextDirective, selector: "[templateContext]", inputs: ["templateContext"] }, { kind: "component", type: IconWrapperComponent, selector: "kendo-icon-wrapper", inputs: ["name", "svgIcon", "innerCssClass", "customFontClass", "size"], exportAs: ["kendoIconWrapper"] }, { kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: AdaptiveRendererComponent, selector: "kendo-adaptive-renderer", inputs: ["title", "subtitle", "showTextInput", "sharedPopupActionSheetTemplate", "text", "placeholder", "searchBarValue", "filterable", "showListContainer"], outputs: ["closePopup", "textInputChange", "navigate", "onExpand"] }, { kind: "directive", type: FilterInputDirective, selector: "[filterInput]", inputs: ["filterInput"] }, { kind: "directive", type: EventsOutsideAngularDirective, selector: "[kendoEventsOutsideAngular]", inputs: ["kendoEventsOutsideAngular", "scope"] }, { kind: "component", type: TreeViewComponent, selector: "kendo-treeview", inputs: ["filterInputPlaceholder", "expandDisabledNodes", "animate", "nodeTemplate", "loadMoreButtonTemplate", "loadMoreButtonRole", "trackBy", "nodes", "textField", "hasChildren", "isChecked", "isDisabled", "hasCheckbox", "isExpanded", "isSelected", "isVisible", "navigable", "children", "loadOnDemand", "filterable", "filter", "size", "disableParentNodesOnly"], outputs: ["childrenLoaded", "blur", "focus", "expand", "collapse", "nodeDragStart", "nodeDrag", "filterStateChange", "nodeDrop", "nodeDragEnd", "addItem", "removeItem", "checkedChange", "selectionChange", "filterChange", "nodeClick", "nodeDblClick"], exportAs: ["kendoTreeView"] }, { kind: "directive", type: SelectDirective, selector: "[kendoTreeViewSelectable]", inputs: ["isSelected", "selectBy", "kendoTreeViewSelectable", "selectedKeys"], outputs: ["selectedKeysChange"] }, { kind: "component", type: ResizeSensorComponent, selector: "kendo-resize-sensor", inputs: ["rateLimit"], outputs: ["resize"] }, { kind: "component", type: SeparatorComponent, selector: "kendo-separator", inputs: ["orientation"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
14445
14728
  }
14446
14729
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.25", ngImport: i0, type: DropDownTreeComponent, decorators: [{
14447
14730
  type: Component,
@@ -14568,6 +14851,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.25", ngImpo
14568
14851
  [title]="adaptiveTitle"
14569
14852
  [showTextInput]="filterable"
14570
14853
  [subtitle]="adaptiveSubtitle"
14854
+ [showListContainer]="false"
14571
14855
  (closePopup)="togglePopup(false)"
14572
14856
  (textInputChange)="handleFilterInputChange($event)"
14573
14857
  [placeholder]="placeholder"
@@ -14584,14 +14868,14 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.25", ngImpo
14584
14868
  class="k-textbox k-input"
14585
14869
  [ngClass]="filterInputClasses"
14586
14870
  >
14587
- <span class="k-input-prefix">
14871
+ <span class="k-input-prefix k-input-prefix-horizontal">
14588
14872
  <kendo-icon-wrapper
14589
- class="k-icon"
14590
14873
  name="search"
14591
14874
  [svgIcon]="searchIcon"
14592
14875
  >
14593
14876
  </kendo-icon-wrapper>
14594
14877
  </span>
14878
+ <kendo-separator></kendo-separator>
14595
14879
  <input
14596
14880
  #filterInput
14597
14881
  (input)="handleFilterInputChange($event.target)"
@@ -14623,7 +14907,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.25", ngImpo
14623
14907
  <kendo-treeview
14624
14908
  #treeview
14625
14909
  [attr.id]="treeViewId"
14626
- [size]="windowSize !== 'large' ? 'large' : size"
14910
+ [size]="isAdaptive ? 'large' : size"
14627
14911
  [nodes]="data"
14628
14912
  [style.maxHeight.px]="listHeight"
14629
14913
  [animate]="false"
@@ -14679,7 +14963,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.25", ngImpo
14679
14963
  `,
14680
14964
  changeDetection: ChangeDetectionStrategy.OnPush,
14681
14965
  standalone: true,
14682
- imports: [LocalizedMessagesDirective, TemplateContextDirective, IconWrapperComponent, NgClass, NgTemplateOutlet, AdaptiveRendererComponent, FilterInputDirective, EventsOutsideAngularDirective, TreeViewComponent, SelectDirective, ResizeSensorComponent]
14966
+ imports: [LocalizedMessagesDirective, TemplateContextDirective, IconWrapperComponent, NgClass, NgTemplateOutlet, AdaptiveRendererComponent, FilterInputDirective, EventsOutsideAngularDirective, TreeViewComponent, SelectDirective, ResizeSensorComponent, SeparatorComponent]
14683
14967
  }]
14684
14968
  }], ctorParameters: () => [{ type: i0.Injector }, { type: i0.ElementRef }, { type: i2.PopupService }, { type: NavigationService }, { type: i0.Renderer2 }, { type: i0.NgZone }, { type: i0.ChangeDetectorRef }, { type: i1.LocalizationService }, { type: i7.AdaptiveService }], propDecorators: { icon: [{
14685
14969
  type: Input
@@ -15383,14 +15667,11 @@ class MultiSelectTreeComponent {
15383
15667
  return this.disabled || null;
15384
15668
  }
15385
15669
  treeViewId = `k-${guid()}`;
15386
- get hostAriaAutocomplete() {
15387
- return this.filterable ? 'list' : null;
15388
- }
15389
15670
  get isLoading() {
15390
15671
  return this.loading;
15391
15672
  }
15392
15673
  get hostAriaInvalid() {
15393
- return this.formControl?.invalid ? true : null;
15674
+ return (this.formControl?.invalid && (this.formControl?.touched || this.formControl?.dirty)) ? true : null;
15394
15675
  }
15395
15676
  get isBusy() {
15396
15677
  return this.loading ? 'true' : null;
@@ -15402,14 +15683,9 @@ class MultiSelectTreeComponent {
15402
15683
  get hostTabIndex() {
15403
15684
  return this.tabindex;
15404
15685
  }
15405
- role = 'combobox';
15406
- ariaHasPopup = 'tree';
15407
15686
  get isReadonly() {
15408
15687
  return this.readonly ? '' : null;
15409
15688
  }
15410
- get ariaDescribedBy() {
15411
- return this.tagListId;
15412
- }
15413
15689
  get ariaActiveDescendant() {
15414
15690
  return this.focusedTagId;
15415
15691
  }
@@ -16104,7 +16380,6 @@ class MultiSelectTreeComponent {
16104
16380
  this._typedValue = '';
16105
16381
  }));
16106
16382
  this.renderer.removeAttribute(this.wrapper.nativeElement, 'tabindex');
16107
- this.renderer.setAttribute(this.wrapper.nativeElement, 'aria-expanded', String(this.isOpen));
16108
16383
  this.subs.add(this.localization
16109
16384
  .changes.subscribe(({ rtl }) => {
16110
16385
  this.direction = rtl ? 'rtl' : 'ltr';
@@ -16558,9 +16833,7 @@ class MultiSelectTreeComponent {
16558
16833
  popupWrapper.style.minWidth = min;
16559
16834
  popupWrapper.style.width = max;
16560
16835
  popupWrapper.style.height = this.height;
16561
- this.renderer.setAttribute(this.wrapper.nativeElement, 'aria-controls', this.treeViewId);
16562
16836
  this.renderer.setAttribute(popupWrapper, 'dir', this.direction);
16563
- this.renderer.setAttribute(this.wrapper.nativeElement, 'aria-expanded', 'true');
16564
16837
  this.popupRef.popupOpen.subscribe(() => {
16565
16838
  this.cdr.detectChanges();
16566
16839
  this.opened.emit();
@@ -16581,8 +16854,6 @@ class MultiSelectTreeComponent {
16581
16854
  if (this.popupRef) {
16582
16855
  this.popupRef.close();
16583
16856
  this.popupRef = null;
16584
- this.renderer.setAttribute(this.wrapper.nativeElement, 'aria-expanded', 'false');
16585
- this.renderer.removeAttribute(this.wrapper.nativeElement, 'aria-controls');
16586
16857
  this.clearFilter();
16587
16858
  }
16588
16859
  }
@@ -16896,8 +17167,6 @@ class MultiSelectTreeComponent {
16896
17167
  closeActionSheet() {
16897
17168
  this.wrapper.nativeElement.focus();
16898
17169
  this.actionSheet.toggle(false);
16899
- this.renderer.removeAttribute(this.wrapper.nativeElement, 'aria-controls');
16900
- this.renderer.setAttribute(this.wrapper.nativeElement, 'aria-expanded', 'false');
16901
17170
  this.clearFilter();
16902
17171
  this.closed.emit();
16903
17172
  }
@@ -16905,13 +17174,11 @@ class MultiSelectTreeComponent {
16905
17174
  this.actionSheet.toggle(true);
16906
17175
  this.adaptiveTitle = setActionSheetTitle(this.wrapper, this.adaptiveTitle);
16907
17176
  this.cdr.detectChanges();
16908
- this.renderer.setAttribute(this.wrapper.nativeElement, 'aria-controls', this.treeViewId);
16909
- this.renderer.setAttribute(this.wrapper.nativeElement, 'aria-expanded', 'true');
16910
17177
  this.cdr.detectChanges();
16911
17178
  this.opened.emit();
16912
17179
  }
16913
17180
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.25", ngImport: i0, type: MultiSelectTreeComponent, deps: [{ token: i0.Injector }, { token: i0.ElementRef }, { token: i2.PopupService }, { token: i0.Renderer2 }, { token: NavigationService }, { token: i0.NgZone }, { token: i1.LocalizationService }, { token: i0.ChangeDetectorRef }, { token: MultiSelectTreeLookupService }, { token: i7.AdaptiveService }], target: i0.ɵɵFactoryTarget.Component });
16914
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.25", type: MultiSelectTreeComponent, isStandalone: true, selector: "kendo-multiselecttree", inputs: { adaptiveMode: "adaptiveMode", adaptiveTitle: "adaptiveTitle", adaptiveSubtitle: "adaptiveSubtitle", tabindex: "tabindex", size: "size", rounded: "rounded", fillMode: "fillMode", popupSettings: "popupSettings", checkableSettings: "checkableSettings", data: "data", value: "value", dataItems: "dataItems", textField: "textField", valueField: "valueField", valueDepth: "valueDepth", loading: "loading", placeholder: "placeholder", listHeight: "listHeight", disabled: "disabled", readonly: "readonly", valuePrimitive: "valuePrimitive", loadOnDemand: "loadOnDemand", focusableId: "focusableId", clearButton: "clearButton", filterable: "filterable", checkAll: "checkAll", hasChildren: "hasChildren", fetchChildren: "fetchChildren", isNodeExpanded: "isNodeExpanded", isNodeVisible: "isNodeVisible", itemDisabled: "itemDisabled", tagMapper: "tagMapper" }, outputs: { onFocus: "focus", onBlur: "blur", open: "open", opened: "opened", close: "close", closed: "closed", nodeExpand: "nodeExpand", nodeCollapse: "nodeCollapse", valueChange: "valueChange", removeTag: "removeTag", filterChange: "filterChange" }, host: { properties: { "class.k-disabled": "this.isDisabled", "attr.aria-disabled": "this.isDisabled", "attr.aria-autocomplete": "this.hostAriaAutocomplete", "class.k-loading": "this.isLoading", "attr.aria-invalid": "this.hostAriaInvalid", "attr.aria-busy": "this.isBusy", "attr.id": "this.id", "attr.dir": "this.direction", "attr.tabindex": "this.hostTabIndex", "attr.role": "this.role", "attr.aria-haspopup": "this.ariaHasPopup", "attr.readonly": "this.isReadonly", "attr.aria-describedby": "this.ariaDescribedBy", "attr.aria-activedescendant": "this.ariaActiveDescendant", "class.k-readonly": "this.readonly" } }, providers: [
17181
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.25", type: MultiSelectTreeComponent, isStandalone: true, selector: "kendo-multiselecttree", inputs: { adaptiveMode: "adaptiveMode", adaptiveTitle: "adaptiveTitle", adaptiveSubtitle: "adaptiveSubtitle", tabindex: "tabindex", size: "size", rounded: "rounded", fillMode: "fillMode", popupSettings: "popupSettings", checkableSettings: "checkableSettings", data: "data", value: "value", dataItems: "dataItems", textField: "textField", valueField: "valueField", valueDepth: "valueDepth", loading: "loading", placeholder: "placeholder", listHeight: "listHeight", disabled: "disabled", readonly: "readonly", valuePrimitive: "valuePrimitive", loadOnDemand: "loadOnDemand", focusableId: "focusableId", clearButton: "clearButton", filterable: "filterable", checkAll: "checkAll", hasChildren: "hasChildren", fetchChildren: "fetchChildren", isNodeExpanded: "isNodeExpanded", isNodeVisible: "isNodeVisible", itemDisabled: "itemDisabled", tagMapper: "tagMapper" }, outputs: { onFocus: "focus", onBlur: "blur", open: "open", opened: "opened", close: "close", closed: "closed", nodeExpand: "nodeExpand", nodeCollapse: "nodeCollapse", valueChange: "valueChange", removeTag: "removeTag", filterChange: "filterChange" }, host: { properties: { "class.k-disabled": "this.isDisabled", "class.k-loading": "this.isLoading", "attr.aria-invalid": "this.hostAriaInvalid", "attr.aria-busy": "this.isBusy", "attr.id": "this.id", "attr.dir": "this.direction", "attr.tabindex": "this.hostTabIndex", "attr.readonly": "this.isReadonly", "attr.aria-activedescendant": "this.ariaActiveDescendant", "class.k-readonly": "this.readonly" } }, providers: [
16915
17182
  LocalizationService,
16916
17183
  NavigationService,
16917
17184
  DataService,
@@ -16947,6 +17214,9 @@ class MultiSelectTreeComponent {
16947
17214
  i18n-clearTitle="kendo.multiselecttree.clearTitle|The title of the clear button"
16948
17215
  clearTitle="clear"
16949
17216
 
17217
+ i18n-chipListLabel="kendo.multiselecttree.chipListLabel|The accessible label of the tag list element that contains the selected items"
17218
+ chipListLabel="chip list"
17219
+
16950
17220
  i18n-checkAllText="kendo.multiselecttree.checkAllText|The text displayed for the check-all checkbox"
16951
17221
  checkAllText="Check all"
16952
17222
 
@@ -16961,6 +17231,9 @@ class MultiSelectTreeComponent {
16961
17231
 
16962
17232
  i18n-filterInputPlaceholder="kendo.multiselecttree.filterInputPlaceholder|The text for the input's placeholder when filtering is enabled"
16963
17233
  filterInputPlaceholder="Filter"
17234
+
17235
+ i18n-inputLabel="kendo.multiselecttree.inputLabel|The text set as aria-label on the combobox input element"
17236
+ inputLabel="Select items"
16964
17237
  >
16965
17238
  </ng-container>
16966
17239
  <kendo-taglist
@@ -16979,10 +17252,19 @@ class MultiSelectTreeComponent {
16979
17252
  [template]="tagTemplate"
16980
17253
  [groupTemplate]="groupTagTemplate"
16981
17254
  [disabledIndices]="disabledIndices"
17255
+ [ariaLabel]="messageFor('chipListLabel')"
16982
17256
  (removeTag)="handleRemoveTag($event)"
16983
17257
  >
16984
17258
  </kendo-taglist>
16985
- <span class="k-input-inner">
17259
+ <span class="k-input-inner"
17260
+ role="combobox"
17261
+ aria-haspopup="tree"
17262
+ [attr.aria-expanded]="isOpen"
17263
+ [attr.aria-autocomplete]="filterable ? 'list' : null"
17264
+ [attr.aria-controls]="isOpen ? treeViewId : null"
17265
+ [attr.aria-describedby]="tags?.length ? tagListId : null"
17266
+ [attr.aria-disabled]="disabled || null"
17267
+ [attr.aria-label]="messageFor('inputLabel')">
16986
17268
  @if (!tags || !tags.length) {
16987
17269
  <span
16988
17270
  class="k-input-value-text"
@@ -17000,7 +17282,6 @@ class MultiSelectTreeComponent {
17000
17282
  (click)="clearAll($event)"
17001
17283
  >
17002
17284
  <kendo-icon-wrapper
17003
- class="k-icon"
17004
17285
  name="x"
17005
17286
  [svgIcon]="xIcon"
17006
17287
  >
@@ -17023,6 +17304,7 @@ class MultiSelectTreeComponent {
17023
17304
  [title]="adaptiveTitle"
17024
17305
  [showTextInput]="filterable"
17025
17306
  [subtitle]="adaptiveSubtitle"
17307
+ [showListContainer]="false"
17026
17308
  (closePopup)="togglePopup(false)"
17027
17309
  (textInputChange)="onFilterChange($event)"
17028
17310
  [searchBarValue]="filter"
@@ -17039,7 +17321,7 @@ class MultiSelectTreeComponent {
17039
17321
  class="k-textbox k-input"
17040
17322
  [ngClass]="filterInputClasses"
17041
17323
  >
17042
- <span class="k-input-prefix">
17324
+ <span class="k-input-prefix k-input-prefix-horizontal">
17043
17325
  <kendo-icon-wrapper
17044
17326
  class="k-icon"
17045
17327
  name="search"
@@ -17047,6 +17329,7 @@ class MultiSelectTreeComponent {
17047
17329
  >
17048
17330
  </kendo-icon-wrapper>
17049
17331
  </span>
17332
+ <kendo-separator></kendo-separator>
17050
17333
  <input
17051
17334
  #filterInput
17052
17335
  (input)="handleFilterInputChange($event.target)"
@@ -17170,7 +17453,7 @@ class MultiSelectTreeComponent {
17170
17453
  @if (isOpen || isAdaptiveModeEnabled) {
17171
17454
  <kendo-resize-sensor (resize)="onResize()"></kendo-resize-sensor>
17172
17455
  }
17173
- `, isInline: true, dependencies: [{ kind: "directive", type: LocalizedMessagesDirective, selector: "\n [kendoDropDownListLocalizedMessages],\n [kendoDropDownTreeLocalizedMessages],\n [kendoComboBoxLocalizedMessages],\n [kendoMultiColumnComboBoxLocalizedMessages],\n [kendoAutoCompleteLocalizedMessages],\n [kendoMultiSelectLocalizedMessages],\n [kendoMultiSelectTreeLocalizedMessages]\n " }, { kind: "component", type: TagListComponent, selector: "kendo-taglist", inputs: ["tags", "textField", "valueField", "valueDepth", "focused", "template", "groupTemplate", "disabled", "tagPrefix", "id", "size", "rounded", "fillMode", "disabledIndices"], outputs: ["removeTag"] }, { kind: "component", type: IconWrapperComponent, selector: "kendo-icon-wrapper", inputs: ["name", "svgIcon", "innerCssClass", "customFontClass", "size"], exportAs: ["kendoIconWrapper"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: AdaptiveRendererComponent, selector: "kendo-adaptive-renderer", inputs: ["title", "subtitle", "showTextInput", "sharedPopupActionSheetTemplate", "text", "placeholder", "searchBarValue", "filterable"], outputs: ["closePopup", "textInputChange", "navigate", "onExpand"] }, { kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: FilterInputDirective, selector: "[filterInput]", inputs: ["filterInput"] }, { kind: "directive", type: EventsOutsideAngularDirective, selector: "[kendoEventsOutsideAngular]", inputs: ["kendoEventsOutsideAngular", "scope"] }, { kind: "directive", type: TemplateContextDirective, selector: "[templateContext]", inputs: ["templateContext"] }, { kind: "directive", type: CheckAllDirective, selector: "[checkAll]", inputs: ["lastAction", "treeview", "checkedItems", "valueField", "checkAll"], outputs: ["checkedItemsChange"] }, { kind: "component", type: TreeViewComponent, selector: "kendo-treeview", inputs: ["filterInputPlaceholder", "expandDisabledNodes", "animate", "nodeTemplate", "loadMoreButtonTemplate", "trackBy", "nodes", "textField", "hasChildren", "isChecked", "isDisabled", "hasCheckbox", "isExpanded", "isSelected", "isVisible", "navigable", "children", "loadOnDemand", "filterable", "filter", "size", "disableParentNodesOnly"], outputs: ["childrenLoaded", "blur", "focus", "expand", "collapse", "nodeDragStart", "nodeDrag", "filterStateChange", "nodeDrop", "nodeDragEnd", "addItem", "removeItem", "checkedChange", "selectionChange", "filterChange", "nodeClick", "nodeDblClick"], exportAs: ["kendoTreeView"] }, { kind: "directive", type: CheckDirective, selector: "[kendoMultiSelectTreeCheckable]", inputs: ["checkable", "valueField", "checkedItems"], outputs: ["checkedItemsChange"] }, { kind: "component", type: ResizeSensorComponent, selector: "kendo-resize-sensor", inputs: ["rateLimit"], outputs: ["resize"] }] });
17456
+ `, isInline: true, dependencies: [{ kind: "directive", type: LocalizedMessagesDirective, selector: "\n [kendoDropDownListLocalizedMessages],\n [kendoDropDownTreeLocalizedMessages],\n [kendoComboBoxLocalizedMessages],\n [kendoMultiColumnComboBoxLocalizedMessages],\n [kendoAutoCompleteLocalizedMessages],\n [kendoMultiSelectLocalizedMessages],\n [kendoMultiSelectTreeLocalizedMessages]\n " }, { kind: "component", type: TagListComponent, selector: "kendo-taglist", inputs: ["tags", "textField", "valueField", "valueDepth", "focused", "template", "groupTemplate", "disabled", "tagPrefix", "id", "ariaLabel", "size", "rounded", "fillMode", "disabledIndices"], outputs: ["removeTag"] }, { kind: "component", type: IconWrapperComponent, selector: "kendo-icon-wrapper", inputs: ["name", "svgIcon", "innerCssClass", "customFontClass", "size"], exportAs: ["kendoIconWrapper"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: AdaptiveRendererComponent, selector: "kendo-adaptive-renderer", inputs: ["title", "subtitle", "showTextInput", "sharedPopupActionSheetTemplate", "text", "placeholder", "searchBarValue", "filterable", "showListContainer"], outputs: ["closePopup", "textInputChange", "navigate", "onExpand"] }, { kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: FilterInputDirective, selector: "[filterInput]", inputs: ["filterInput"] }, { kind: "directive", type: EventsOutsideAngularDirective, selector: "[kendoEventsOutsideAngular]", inputs: ["kendoEventsOutsideAngular", "scope"] }, { kind: "directive", type: TemplateContextDirective, selector: "[templateContext]", inputs: ["templateContext"] }, { kind: "directive", type: CheckAllDirective, selector: "[checkAll]", inputs: ["lastAction", "treeview", "checkedItems", "valueField", "checkAll"], outputs: ["checkedItemsChange"] }, { kind: "component", type: TreeViewComponent, selector: "kendo-treeview", inputs: ["filterInputPlaceholder", "expandDisabledNodes", "animate", "nodeTemplate", "loadMoreButtonTemplate", "loadMoreButtonRole", "trackBy", "nodes", "textField", "hasChildren", "isChecked", "isDisabled", "hasCheckbox", "isExpanded", "isSelected", "isVisible", "navigable", "children", "loadOnDemand", "filterable", "filter", "size", "disableParentNodesOnly"], outputs: ["childrenLoaded", "blur", "focus", "expand", "collapse", "nodeDragStart", "nodeDrag", "filterStateChange", "nodeDrop", "nodeDragEnd", "addItem", "removeItem", "checkedChange", "selectionChange", "filterChange", "nodeClick", "nodeDblClick"], exportAs: ["kendoTreeView"] }, { kind: "directive", type: CheckDirective, selector: "[kendoMultiSelectTreeCheckable]", inputs: ["checkable", "valueField", "checkedItems"], outputs: ["checkedItemsChange"] }, { kind: "component", type: ResizeSensorComponent, selector: "kendo-resize-sensor", inputs: ["rateLimit"], outputs: ["resize"] }, { kind: "component", type: SeparatorComponent, selector: "kendo-separator", inputs: ["orientation"] }] });
17174
17457
  }
17175
17458
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.25", ngImport: i0, type: MultiSelectTreeComponent, decorators: [{
17176
17459
  type: Component,
@@ -17214,6 +17497,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.25", ngImpo
17214
17497
  i18n-clearTitle="kendo.multiselecttree.clearTitle|The title of the clear button"
17215
17498
  clearTitle="clear"
17216
17499
 
17500
+ i18n-chipListLabel="kendo.multiselecttree.chipListLabel|The accessible label of the tag list element that contains the selected items"
17501
+ chipListLabel="chip list"
17502
+
17217
17503
  i18n-checkAllText="kendo.multiselecttree.checkAllText|The text displayed for the check-all checkbox"
17218
17504
  checkAllText="Check all"
17219
17505
 
@@ -17228,6 +17514,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.25", ngImpo
17228
17514
 
17229
17515
  i18n-filterInputPlaceholder="kendo.multiselecttree.filterInputPlaceholder|The text for the input's placeholder when filtering is enabled"
17230
17516
  filterInputPlaceholder="Filter"
17517
+
17518
+ i18n-inputLabel="kendo.multiselecttree.inputLabel|The text set as aria-label on the combobox input element"
17519
+ inputLabel="Select items"
17231
17520
  >
17232
17521
  </ng-container>
17233
17522
  <kendo-taglist
@@ -17246,10 +17535,19 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.25", ngImpo
17246
17535
  [template]="tagTemplate"
17247
17536
  [groupTemplate]="groupTagTemplate"
17248
17537
  [disabledIndices]="disabledIndices"
17538
+ [ariaLabel]="messageFor('chipListLabel')"
17249
17539
  (removeTag)="handleRemoveTag($event)"
17250
17540
  >
17251
17541
  </kendo-taglist>
17252
- <span class="k-input-inner">
17542
+ <span class="k-input-inner"
17543
+ role="combobox"
17544
+ aria-haspopup="tree"
17545
+ [attr.aria-expanded]="isOpen"
17546
+ [attr.aria-autocomplete]="filterable ? 'list' : null"
17547
+ [attr.aria-controls]="isOpen ? treeViewId : null"
17548
+ [attr.aria-describedby]="tags?.length ? tagListId : null"
17549
+ [attr.aria-disabled]="disabled || null"
17550
+ [attr.aria-label]="messageFor('inputLabel')">
17253
17551
  @if (!tags || !tags.length) {
17254
17552
  <span
17255
17553
  class="k-input-value-text"
@@ -17267,7 +17565,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.25", ngImpo
17267
17565
  (click)="clearAll($event)"
17268
17566
  >
17269
17567
  <kendo-icon-wrapper
17270
- class="k-icon"
17271
17568
  name="x"
17272
17569
  [svgIcon]="xIcon"
17273
17570
  >
@@ -17290,6 +17587,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.25", ngImpo
17290
17587
  [title]="adaptiveTitle"
17291
17588
  [showTextInput]="filterable"
17292
17589
  [subtitle]="adaptiveSubtitle"
17590
+ [showListContainer]="false"
17293
17591
  (closePopup)="togglePopup(false)"
17294
17592
  (textInputChange)="onFilterChange($event)"
17295
17593
  [searchBarValue]="filter"
@@ -17306,7 +17604,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.25", ngImpo
17306
17604
  class="k-textbox k-input"
17307
17605
  [ngClass]="filterInputClasses"
17308
17606
  >
17309
- <span class="k-input-prefix">
17607
+ <span class="k-input-prefix k-input-prefix-horizontal">
17310
17608
  <kendo-icon-wrapper
17311
17609
  class="k-icon"
17312
17610
  name="search"
@@ -17314,6 +17612,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.25", ngImpo
17314
17612
  >
17315
17613
  </kendo-icon-wrapper>
17316
17614
  </span>
17615
+ <kendo-separator></kendo-separator>
17317
17616
  <input
17318
17617
  #filterInput
17319
17618
  (input)="handleFilterInputChange($event.target)"
@@ -17439,17 +17738,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.25", ngImpo
17439
17738
  }
17440
17739
  `,
17441
17740
  standalone: true,
17442
- imports: [LocalizedMessagesDirective, TagListComponent, IconWrapperComponent, NgTemplateOutlet, AdaptiveRendererComponent, NgClass, FilterInputDirective, EventsOutsideAngularDirective, TemplateContextDirective, CheckAllDirective, TreeViewComponent, CheckDirective, ResizeSensorComponent]
17741
+ imports: [LocalizedMessagesDirective, TagListComponent, IconWrapperComponent, NgTemplateOutlet, AdaptiveRendererComponent, NgClass, FilterInputDirective, EventsOutsideAngularDirective, TemplateContextDirective, CheckAllDirective, TreeViewComponent, CheckDirective, ResizeSensorComponent, SeparatorComponent]
17443
17742
  }]
17444
17743
  }], ctorParameters: () => [{ type: i0.Injector }, { type: i0.ElementRef }, { type: i2.PopupService }, { type: i0.Renderer2 }, { type: NavigationService }, { type: i0.NgZone }, { type: i1.LocalizationService }, { type: i0.ChangeDetectorRef }, { type: MultiSelectTreeLookupService }, { type: i7.AdaptiveService }], propDecorators: { isDisabled: [{
17445
17744
  type: HostBinding,
17446
17745
  args: ['class.k-disabled']
17447
- }, {
17448
- type: HostBinding,
17449
- args: ['attr.aria-disabled']
17450
- }], hostAriaAutocomplete: [{
17451
- type: HostBinding,
17452
- args: ['attr.aria-autocomplete']
17453
17746
  }], isLoading: [{
17454
17747
  type: HostBinding,
17455
17748
  args: ['class.k-loading']
@@ -17468,18 +17761,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.25", ngImpo
17468
17761
  }], hostTabIndex: [{
17469
17762
  type: HostBinding,
17470
17763
  args: ['attr.tabindex']
17471
- }], role: [{
17472
- type: HostBinding,
17473
- args: ['attr.role']
17474
- }], ariaHasPopup: [{
17475
- type: HostBinding,
17476
- args: ['attr.aria-haspopup']
17477
17764
  }], isReadonly: [{
17478
17765
  type: HostBinding,
17479
17766
  args: ['attr.readonly']
17480
- }], ariaDescribedBy: [{
17481
- type: HostBinding,
17482
- args: ['attr.aria-describedby']
17483
17767
  }], ariaActiveDescendant: [{
17484
17768
  type: HostBinding,
17485
17769
  args: ['attr.aria-activedescendant']
@@ -18043,7 +18327,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.25", ngImpo
18043
18327
  * <kendo-combobox>
18044
18328
  * <kendo-combobox-messages
18045
18329
  * noDataText="No items found"
18046
- * filterInputPlaceholder="Search items">
18330
+ * filterInputPlaceholder="Search items"
18331
+ * clearTitle="Clear selection">
18047
18332
  * </kendo-combobox-messages>
18048
18333
  * </kendo-combobox>
18049
18334
  *
@@ -18057,7 +18342,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.25", ngImpo
18057
18342
  * <kendo-autocomplete>
18058
18343
  * <kendo-autocomplete-messages
18059
18344
  * noDataText="No items found"
18060
- * filterInputPlaceholder="Type to search">
18345
+ * filterInputPlaceholder="Type to search"
18346
+ * clearTitle="Clear input">
18061
18347
  * </kendo-autocomplete-messages>
18062
18348
  * </kendo-autocomplete>
18063
18349
  *