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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -69,7 +69,6 @@ export declare class ComboBoxComponent implements ControlValueAccessor, OnDestro
69
69
  */
70
70
  togglePopup(open: boolean): void;
71
71
  get activeDescendant(): string;
72
- get noDataLabel(): string;
73
72
  get appendTo(): ViewContainerRef;
74
73
  dataItem: any;
75
74
  selected: any[];
@@ -432,7 +431,7 @@ export declare class ComboBoxComponent implements ControlValueAccessor, OnDestro
432
431
  /**
433
432
  * @hidden
434
433
  */
435
- clearValue(event: any): void;
434
+ clearValue(event?: any): void;
436
435
  /**
437
436
  * @hidden
438
437
  */
@@ -17,6 +17,7 @@ import { MultiSelectCheckableSettings } from './models/checkboxes-settings';
17
17
  import { DropDownSize } from './models/size';
18
18
  import { DropDownRounded } from './models/rounded';
19
19
  import { ListType } from './models/list-type';
20
+ import { NavigationAction } from './navigation/navigation-action';
20
21
  import * as i0 from "@angular/core";
21
22
  /**
22
23
  * @hidden
@@ -44,6 +45,8 @@ export declare class ListComponent implements OnChanges, OnDestroy, AfterViewIni
44
45
  virtual: VirtualizationSettings;
45
46
  type: ListType;
46
47
  checkboxes: MultiSelectCheckableSettings;
48
+ ariaLive: string;
49
+ isMultiselect: boolean;
47
50
  set data(data: any[]);
48
51
  get data(): any[];
49
52
  set size(size: DropDownSize);
@@ -100,12 +103,14 @@ export declare class ListComponent implements OnChanges, OnDestroy, AfterViewIni
100
103
  isDisabled(index: number): boolean;
101
104
  isAltRow(index: number): boolean;
102
105
  scrollToItem(index: number): void;
106
+ scrollWithOnePage(action: NavigationAction): void;
103
107
  scrollToIndex(index: number): void;
104
108
  scroll(item: ElementRef<HTMLElement>): void;
105
109
  /**
106
110
  * Indicates whether a scrollbar is currently rendered in the list.
107
111
  */
108
112
  hasScrollbar(): boolean;
113
+ isItemSelected(index: number): boolean;
109
114
  /**
110
115
  * Sets the list's content overflow (hides/shows scrollbar)
111
116
  */
@@ -121,5 +126,5 @@ export declare class ListComponent implements OnChanges, OnDestroy, AfterViewIni
121
126
  private firstGroupHeaderInTargetedPage;
122
127
  private setComponentClasses;
123
128
  static ɵfac: i0.ɵɵFactoryDeclaration<ListComponent, never>;
124
- static ɵcmp: i0.ɵɵComponentDeclaration<ListComponent, "kendo-list", never, { "selected": "selected"; "focused": "focused"; "textField": "textField"; "valueField": "valueField"; "height": "height"; "template": "template"; "groupTemplate": "groupTemplate"; "fixedGroupTemplate": "fixedGroupTemplate"; "show": "show"; "id": "id"; "optionPrefix": "optionPrefix"; "multipleSelection": "multipleSelection"; "virtual": "virtual"; "type": "type"; "checkboxes": "checkboxes"; "data": "data"; "size": "size"; "rounded": "rounded"; }, { "onClick": "onClick"; "pageChange": "pageChange"; "listResize": "listResize"; }, never, never>;
129
+ static ɵcmp: i0.ɵɵComponentDeclaration<ListComponent, "kendo-list", never, { "selected": "selected"; "focused": "focused"; "textField": "textField"; "valueField": "valueField"; "height": "height"; "template": "template"; "groupTemplate": "groupTemplate"; "fixedGroupTemplate": "fixedGroupTemplate"; "show": "show"; "id": "id"; "optionPrefix": "optionPrefix"; "multipleSelection": "multipleSelection"; "virtual": "virtual"; "type": "type"; "checkboxes": "checkboxes"; "ariaLive": "ariaLive"; "isMultiselect": "isMultiselect"; "data": "data"; "size": "size"; "rounded": "rounded"; }, { "onClick": "onClick"; "pageChange": "pageChange"; "listResize": "listResize"; }, never, never>;
125
130
  }
@@ -19,5 +19,7 @@ export declare enum NavigationAction {
19
19
  Up = 10,
20
20
  Down = 11,
21
21
  Left = 12,
22
- Right = 13
22
+ Right = 13,
23
+ PageDown = 14,
24
+ PageUp = 15
23
25
  }
@@ -37,6 +37,8 @@ export declare class NavigationService {
37
37
  backspace: EventEmitter<NavigationEvent>;
38
38
  home: EventEmitter<NavigationEvent>;
39
39
  end: EventEmitter<NavigationEvent>;
40
+ pagedown: EventEmitter<NavigationEvent>;
41
+ pageup: EventEmitter<NavigationEvent>;
40
42
  constructor(disabledItemsService: DisabledItemsService, selectionService: SelectionService);
41
43
  process(args: any): NavigationAction;
42
44
  private next;
@@ -2,26 +2,31 @@
2
2
  * Copyright © 2021 Progress Software Corporation. All rights reserved.
3
3
  * Licensed under commercial license. See LICENSE.md in the project root for more information
4
4
  *-------------------------------------------------------------------------------------------*/
5
- import { Renderer2, EventEmitter, ElementRef, OnChanges, OnInit, OnDestroy } from '@angular/core';
5
+ import { Renderer2, EventEmitter, ElementRef, OnChanges, OnInit, OnDestroy, Injector, AfterContentChecked } from '@angular/core';
6
6
  import { Direction } from './models/direction';
7
7
  import { LocalizationService } from '@progress/kendo-angular-l10n';
8
8
  import * as i0 from "@angular/core";
9
9
  /**
10
10
  * @hidden
11
11
  */
12
- export declare class SearchBarComponent implements OnChanges, OnInit, OnDestroy {
12
+ export declare class SearchBarComponent implements OnChanges, OnInit, OnDestroy, AfterContentChecked {
13
13
  private localization;
14
+ private injector;
14
15
  direction: Direction;
15
16
  id: string;
16
17
  listId: string;
17
18
  tagListId: string;
18
19
  activeDescendant: string;
19
- noDataLabel: string;
20
20
  disabled: boolean;
21
21
  readonly: boolean;
22
22
  tabIndex: number;
23
23
  popupOpen: boolean;
24
24
  role: string;
25
+ isLoading: boolean;
26
+ set isSuggestable(isSuggestable: boolean);
27
+ get isSuggestable(): boolean;
28
+ set isFilterable(isFilterable: boolean);
29
+ get isFilterable(): boolean;
25
30
  get userInput(): string;
26
31
  set userInput(userInput: string);
27
32
  suggestedText: string;
@@ -39,14 +44,20 @@ export declare class SearchBarComponent implements OnChanges, OnInit, OnDestroy
39
44
  private _userInput;
40
45
  private _previousValue;
41
46
  private _placeholder;
47
+ private _isSuggestable;
48
+ private _isFilterable;
49
+ private control?;
42
50
  private renderer;
43
- private localizationChangeSubscription;
44
- constructor(localization: LocalizationService, renderer: Renderer2);
51
+ private subs;
52
+ constructor(localization: LocalizationService, renderer: Renderer2, injector: Injector);
45
53
  ngOnInit(): void;
54
+ ngAfterContentChecked(): void;
46
55
  ngOnChanges(changes: any): void;
47
56
  ngOnDestroy(): void;
48
57
  private writeInputValue;
49
58
  private setInputSelection;
59
+ private setAriaInvalid;
60
+ private setAriaAutocomplete;
50
61
  handleInput(event: any): void;
51
62
  handleFocus(event: any): void;
52
63
  handleBlur(event: any): void;
@@ -55,5 +66,5 @@ export declare class SearchBarComponent implements OnChanges, OnInit, OnDestroy
55
66
  blur(): void;
56
67
  setInputSize(): void;
57
68
  static ɵfac: i0.ɵɵFactoryDeclaration<SearchBarComponent, never>;
58
- static ɵcmp: i0.ɵɵComponentDeclaration<SearchBarComponent, "kendo-searchbar", never, { "id": "id"; "listId": "listId"; "tagListId": "tagListId"; "activeDescendant": "activeDescendant"; "noDataLabel": "noDataLabel"; "disabled": "disabled"; "readonly": "readonly"; "tabIndex": "tabIndex"; "popupOpen": "popupOpen"; "role": "role"; "userInput": "userInput"; "suggestedText": "suggestedText"; "placeholder": "placeholder"; }, { "valueChange": "valueChange"; "onBlur": "onBlur"; "onFocus": "onFocus"; "onClick": "onClick"; "onNavigate": "onNavigate"; }, never, never>;
69
+ static ɵcmp: i0.ɵɵComponentDeclaration<SearchBarComponent, "kendo-searchbar", never, { "id": "id"; "listId": "listId"; "tagListId": "tagListId"; "activeDescendant": "activeDescendant"; "disabled": "disabled"; "readonly": "readonly"; "tabIndex": "tabIndex"; "popupOpen": "popupOpen"; "role": "role"; "isLoading": "isLoading"; "isSuggestable": "isSuggestable"; "isFilterable": "isFilterable"; "userInput": "userInput"; "suggestedText": "suggestedText"; "placeholder": "placeholder"; }, { "valueChange": "valueChange"; "onBlur": "onBlur"; "onFocus": "onFocus"; "onClick": "onClick"; "onNavigate": "onNavigate"; }, never, never>;
59
70
  }
@@ -21,6 +21,6 @@ import * as i13 from "./shared-directives.module";
21
21
  */
22
22
  export declare class SharedModule {
23
23
  static ɵfac: i0.ɵɵFactoryDeclaration<SharedModule, never>;
24
- static ɵmod: i0.ɵɵNgModuleDeclaration<SharedModule, [typeof i1.ListComponent, typeof i2.ListItemDirective, typeof i3.SelectableDirective, typeof i4.SearchBarComponent, typeof i5.TemplateContextDirective, typeof i6.TagListComponent, typeof i7.CheckDirective, typeof i8.CheckAllDirective], [typeof i9.CommonModule, typeof i10.FormsModule, typeof i11.PopupModule, typeof i12.ResizeSensorModule, typeof i13.SharedDirectivesModule, typeof i12.EventsModule], [typeof i1.ListComponent, typeof i2.ListItemDirective, typeof i3.SelectableDirective, typeof i4.SearchBarComponent, typeof i5.TemplateContextDirective, typeof i6.TagListComponent, typeof i7.CheckDirective, typeof i8.CheckAllDirective, typeof i9.CommonModule, typeof i10.FormsModule, typeof i11.PopupModule, typeof i12.ResizeSensorModule, typeof i13.SharedDirectivesModule, typeof i12.EventsModule]>;
24
+ static ɵmod: i0.ɵɵNgModuleDeclaration<SharedModule, [typeof i1.ListComponent, typeof i2.ListItemDirective, typeof i3.SelectableDirective, typeof i4.SearchBarComponent, typeof i5.TemplateContextDirective, typeof i6.TagListComponent, typeof i7.CheckDirective, typeof i8.CheckAllDirective], [typeof i9.CommonModule, typeof i10.FormsModule, typeof i10.ReactiveFormsModule, typeof i11.PopupModule, typeof i12.ResizeSensorModule, typeof i13.SharedDirectivesModule, typeof i12.EventsModule], [typeof i1.ListComponent, typeof i2.ListItemDirective, typeof i3.SelectableDirective, typeof i4.SearchBarComponent, typeof i5.TemplateContextDirective, typeof i6.TagListComponent, typeof i7.CheckDirective, typeof i8.CheckAllDirective, typeof i9.CommonModule, typeof i10.FormsModule, typeof i10.ReactiveFormsModule, typeof i11.PopupModule, typeof i12.ResizeSensorModule, typeof i13.SharedDirectivesModule, typeof i12.EventsModule]>;
25
25
  static ɵinj: i0.ɵɵInjectorDeclaration<SharedModule>;
26
26
  }
@@ -2,8 +2,8 @@
2
2
  * Copyright © 2021 Progress Software Corporation. All rights reserved.
3
3
  * Licensed under commercial license. See LICENSE.md in the project root for more information
4
4
  *-------------------------------------------------------------------------------------------*/
5
- import { Renderer2, ElementRef, EventEmitter, ViewContainerRef, OnDestroy, OnChanges, NgZone, TemplateRef, ChangeDetectorRef, OnInit, SimpleChanges, AfterContentChecked } from '@angular/core';
6
- import { ControlValueAccessor } from '@angular/forms';
5
+ import { Renderer2, ElementRef, EventEmitter, ViewContainerRef, OnDestroy, OnChanges, NgZone, TemplateRef, ChangeDetectorRef, OnInit, SimpleChanges, AfterContentChecked, Injector } from '@angular/core';
6
+ import { ControlValueAccessor, FormControl } from '@angular/forms';
7
7
  import { PopupSettings } from '../common/models/popup-settings';
8
8
  import { SelectionService } from '../common/selection/selection.service';
9
9
  import { NavigationService } from '../common/navigation/navigation.service';
@@ -62,14 +62,18 @@ export declare class DropDownListComponent implements ControlValueAccessor, OnDe
62
62
  private renderer;
63
63
  private cdr;
64
64
  touchEnabled: boolean;
65
+ private injector;
65
66
  get width(): any;
66
67
  get height(): any;
67
68
  get widgetTabIndex(): number;
68
69
  get ariaExpanded(): boolean;
69
- get ariaOwns(): string;
70
+ get ariaControls(): string;
70
71
  get ariaActivedescendant(): string;
71
- get noDataLabel(): string;
72
72
  get appendTo(): ViewContainerRef;
73
+ /**
74
+ * @hidden
75
+ */
76
+ get ariaLive(): string;
73
77
  /**
74
78
  * @hidden
75
79
  */
@@ -287,7 +291,8 @@ export declare class DropDownListComponent implements ControlValueAccessor, OnDe
287
291
  */
288
292
  onResize(): void;
289
293
  hostClasses: boolean;
290
- get isDisabled(): boolean;
294
+ get isDisabledClass(): boolean;
295
+ get isDisabledAttribute(): string;
291
296
  get isLoading(): boolean;
292
297
  /**
293
298
  * @hidden
@@ -295,12 +300,15 @@ export declare class DropDownListComponent implements ControlValueAccessor, OnDe
295
300
  focusableId: string;
296
301
  get dir(): string;
297
302
  get hostTabIndex(): number;
298
- get isReadonly(): boolean;
303
+ get readonlyClass(): boolean;
304
+ get readonlyAttr(): string;
305
+ get isBusy(): boolean;
299
306
  role: string;
307
+ haspopup: string;
300
308
  get isAriaExpanded(): boolean;
301
- get hostAriaOwns(): string;
309
+ get hostAriaControls(): string;
310
+ get hostAriaInvalid(): string;
302
311
  get hostAriaActivedescendant(): string;
303
- get hostNoDataLabel(): string;
304
312
  /**
305
313
  * @hidden
306
314
  */
@@ -318,6 +326,7 @@ export declare class DropDownListComponent implements ControlValueAccessor, OnDe
318
326
  optionPrefix: string;
319
327
  valueLabelId: string;
320
328
  filterText: string;
329
+ private subs;
321
330
  private _isFocused;
322
331
  set isFocused(isFocused: boolean);
323
332
  get isFocused(): boolean;
@@ -330,18 +339,10 @@ export declare class DropDownListComponent implements ControlValueAccessor, OnDe
330
339
  private word;
331
340
  private last;
332
341
  private typingTimeout;
333
- private navigationSubscription;
334
- private enterSubscription;
335
- private escSubscription;
336
- private openSubscription;
337
- private closeSubscription;
338
342
  private filterFocused;
339
343
  private filterBlurred;
340
344
  private hostElementFocused;
341
345
  private hostElementBlurred;
342
- private componentBlurredSubscription;
343
- private filterBlurredSubscription;
344
- private selectionSubscription;
345
346
  private touchstartDisposeHandler;
346
347
  private _value;
347
348
  private _open;
@@ -350,11 +351,10 @@ export declare class DropDownListComponent implements ControlValueAccessor, OnDe
350
351
  private text;
351
352
  private _popupSettings;
352
353
  private _virtualSettings;
353
- private localizationChangesSubscription;
354
354
  private _size;
355
355
  private _rounded;
356
356
  private _fillMode;
357
- constructor(wrapper: ElementRef, localization: LocalizationService, popupService: PopupService, selectionService: SelectionService, navigationService: NavigationService, disabledItemsService: DisabledItemsService, dataService: DataService, _zone: NgZone, renderer: Renderer2, cdr: ChangeDetectorRef, touchEnabled: boolean);
357
+ constructor(wrapper: ElementRef, localization: LocalizationService, popupService: PopupService, selectionService: SelectionService, navigationService: NavigationService, disabledItemsService: DisabledItemsService, dataService: DataService, _zone: NgZone, renderer: Renderer2, cdr: ChangeDetectorRef, touchEnabled: boolean, injector: Injector);
358
358
  ngOnInit(): void;
359
359
  /**
360
360
  * @hidden
@@ -377,6 +377,10 @@ export declare class DropDownListComponent implements ControlValueAccessor, OnDe
377
377
  * @hidden
378
378
  */
379
379
  ngAfterContentChecked(): void;
380
+ /**
381
+ * @hidden
382
+ */
383
+ get formControl(): FormControl;
380
384
  /**
381
385
  * Focuses a specific item of the DropDownList based on a provided index.
382
386
  * If there is a default item it is positioned at index -1.
@@ -477,7 +481,6 @@ export declare class DropDownListComponent implements ControlValueAccessor, OnDe
477
481
  private subscribeTouchEvents;
478
482
  private subscribeFocusEvents;
479
483
  private unSubscribeFocusEvents;
480
- private unsubscribeEvents;
481
484
  private itemFromEvent;
482
485
  private currentOrDefault;
483
486
  private firstFocusableIndex;
@@ -513,6 +516,6 @@ export declare class DropDownListComponent implements ControlValueAccessor, OnDe
513
516
  pageChange(event: PageChangeEvent): void;
514
517
  private assignAriaDescribedBy;
515
518
  private setComponentClasses;
516
- static ɵfac: i0.ɵɵFactoryDeclaration<DropDownListComponent, [null, null, null, null, null, null, null, null, null, null, { optional: true; }]>;
519
+ static ɵfac: i0.ɵɵFactoryDeclaration<DropDownListComponent, [null, null, null, null, null, null, null, null, null, null, { optional: true; }, null]>;
517
520
  static ɵcmp: i0.ɵɵComponentDeclaration<DropDownListComponent, "kendo-dropdownlist", ["kendoDropDownList"], { "iconClass": "iconClass"; "loading": "loading"; "data": "data"; "value": "value"; "textField": "textField"; "valueField": "valueField"; "popupSettings": "popupSettings"; "listHeight": "listHeight"; "defaultItem": "defaultItem"; "disabled": "disabled"; "itemDisabled": "itemDisabled"; "readonly": "readonly"; "filterable": "filterable"; "virtual": "virtual"; "ignoreCase": "ignoreCase"; "delay": "delay"; "valuePrimitive": "valuePrimitive"; "tabindex": "tabindex"; "tabIndex": "tabIndex"; "size": "size"; "rounded": "rounded"; "fillMode": "fillMode"; "focusableId": "id"; }, { "valueChange": "valueChange"; "filterChange": "filterChange"; "selectionChange": "selectionChange"; "open": "open"; "opened": "opened"; "close": "close"; "closed": "closed"; "onFocus": "focus"; "onBlur": "blur"; }, ["itemTemplate", "groupTemplate", "fixedGroupTemplate", "valueTemplate", "headerTemplate", "footerTemplate", "noDataTemplate"], never>;
518
521
  }
@@ -274,11 +274,6 @@ export class AutoCompleteComponent {
274
274
  const dataItem = this.dataService.itemAt(this.selectionService.focused);
275
275
  return this.optionPrefix + "-" + getter(dataItem, this.valueField);
276
276
  }
277
- get noDataLabel() {
278
- if (this.data.length === 0) {
279
- return this.messageFor('noDataText');
280
- }
281
- }
282
277
  /**
283
278
  * Sets the data of the AutoComplete.
284
279
  *
@@ -620,6 +615,8 @@ export class AutoCompleteComponent {
620
615
  action !== NavigationAction.End &&
621
616
  action !== NavigationAction.Left &&
622
617
  action !== NavigationAction.Right &&
618
+ action !== NavigationAction.PageDown &&
619
+ action !== NavigationAction.PageUp &&
623
620
  ((action === NavigationAction.Enter && this.isOpen) || action !== NavigationAction.Enter)) {
624
621
  event.preventDefault();
625
622
  }
@@ -646,7 +643,12 @@ export class AutoCompleteComponent {
646
643
  this.change(value);
647
644
  }
648
645
  handleEscape() {
649
- this.togglePopup(false);
646
+ if (this.isOpen) {
647
+ this.togglePopup(false);
648
+ }
649
+ else {
650
+ this.value = '';
651
+ }
650
652
  this.selectionService.focused = -1;
651
653
  this.suggestedText = null;
652
654
  }
@@ -745,8 +747,14 @@ export class AutoCompleteComponent {
745
747
  this.focusSubscription = this.selectionService.onFocus.subscribe(this.handleItemFocus.bind(this));
746
748
  this.navigationSubscription = merge(this.navigationService.up, this.navigationService.down).subscribe((event) => this.navigate(event.index));
747
749
  this.closeSubscription = this.navigationService.close.subscribe(() => this.togglePopup(false));
750
+ this.openSubscription = this.navigationService.open.subscribe(() => this.togglePopup(true));
748
751
  this.enterSubscription = this.navigationService.enter.subscribe(this.handleEnter.bind(this));
749
752
  this.escSubscription = this.navigationService.esc.subscribe(this.handleEscape.bind(this));
753
+ this.scrollSubscription = merge(this.navigationService.pagedown, this.navigationService.pageup).subscribe((event) => {
754
+ if (this.isOpen) {
755
+ this.optionsList.scrollWithOnePage(NavigationAction[event.originalEvent.code]);
756
+ }
757
+ });
750
758
  }
751
759
  subscribeTouchEvents() {
752
760
  if (!isDocumentAvailable() || !this.touchEnabled) {
@@ -768,8 +776,10 @@ export class AutoCompleteComponent {
768
776
  this.changeSubscription.unsubscribe();
769
777
  this.navigationSubscription.unsubscribe();
770
778
  this.closeSubscription.unsubscribe();
779
+ this.openSubscription.unsubscribe();
771
780
  this.enterSubscription.unsubscribe();
772
781
  this.escSubscription.unsubscribe();
782
+ this.scrollSubscription.unsubscribe();
773
783
  this.valueChangeSubscription.unsubscribe();
774
784
  this.focusSubscription.unsubscribe();
775
785
  if (this.touchstartDisposeHandler) {
@@ -816,6 +826,11 @@ export class AutoCompleteComponent {
816
826
  popupWrapper.style.width = max;
817
827
  popupWrapper.style.height = this.height;
818
828
  popupWrapper.setAttribute("dir", this.direction);
829
+ const listBox = popupWrapper.querySelector('ul.k-list-ul');
830
+ const ariaLabel = this.searchbar.input.nativeElement.getAttribute('aria-labelledby');
831
+ if (ariaLabel) {
832
+ listBox.setAttribute('aria-labelledby', ariaLabel);
833
+ }
819
834
  this.popupRef.popupOpen.subscribe(() => {
820
835
  this.cdr.detectChanges();
821
836
  this.optionsList.scrollToItem(this.selectionService.focused);
@@ -919,10 +934,12 @@ AutoCompleteComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0",
919
934
  </ng-container>
920
935
  <kendo-searchbar #searchbar
921
936
  [role]="'combobox'"
937
+ [isSuggestable]="suggest"
938
+ [isFilterable]="filterable"
939
+ [isLoading]="isLoading"
922
940
  [id]="focusableId"
923
941
  [listId]="listBoxId"
924
942
  [activeDescendant]="activeDescendant"
925
- [noDataLabel]="noDataLabel"
926
943
  [userInput]="text"
927
944
  [suggestedText]="suggestion"
928
945
  [disabled]="disabled"
@@ -996,7 +1013,7 @@ AutoCompleteComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0",
996
1013
  <kendo-resize-sensor (resize)="onResize()"></kendo-resize-sensor>
997
1014
  </ng-template>
998
1015
  <ng-container #container></ng-container>
999
- `, isInline: true, components: [{ type: i7.SearchBarComponent, selector: "kendo-searchbar", inputs: ["id", "listId", "tagListId", "activeDescendant", "noDataLabel", "disabled", "readonly", "tabIndex", "popupOpen", "role", "userInput", "suggestedText", "placeholder"], outputs: ["valueChange", "onBlur", "onFocus", "onClick", "onNavigate"] }, { type: i8.ListComponent, selector: "kendo-list", inputs: ["selected", "focused", "textField", "valueField", "height", "template", "groupTemplate", "fixedGroupTemplate", "show", "id", "optionPrefix", "multipleSelection", "virtual", "type", "checkboxes", "data", "size", "rounded"], outputs: ["onClick", "pageChange", "listResize"] }, { type: i9.ResizeSensorComponent, selector: "kendo-resize-sensor", inputs: ["rateLimit"], outputs: ["resize"] }], directives: [{ type: i10.LocalizedMessagesDirective, selector: "\n [kendoDropDownListLocalizedMessages],\n [kendoDropDownTreeLocalizedMessages],\n [kendoComboBoxLocalizedMessages],\n [kendoMultiColumnComboBoxLocalizedMessages],\n [kendoAutoCompleteLocalizedMessages],\n [kendoMultiSelectLocalizedMessages],\n [kendoMultiSelectTreeLocalizedMessages]\n " }, { type: i11.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i12.TemplateContextDirective, selector: "[templateContext]", inputs: ["templateContext"] }] });
1016
+ `, isInline: true, components: [{ type: i7.SearchBarComponent, selector: "kendo-searchbar", inputs: ["id", "listId", "tagListId", "activeDescendant", "disabled", "readonly", "tabIndex", "popupOpen", "role", "isLoading", "isSuggestable", "isFilterable", "userInput", "suggestedText", "placeholder"], outputs: ["valueChange", "onBlur", "onFocus", "onClick", "onNavigate"] }, { type: i8.ListComponent, selector: "kendo-list", inputs: ["selected", "focused", "textField", "valueField", "height", "template", "groupTemplate", "fixedGroupTemplate", "show", "id", "optionPrefix", "multipleSelection", "virtual", "type", "checkboxes", "ariaLive", "isMultiselect", "data", "size", "rounded"], outputs: ["onClick", "pageChange", "listResize"] }, { type: i9.ResizeSensorComponent, selector: "kendo-resize-sensor", inputs: ["rateLimit"], outputs: ["resize"] }], directives: [{ type: i10.LocalizedMessagesDirective, selector: "\n [kendoDropDownListLocalizedMessages],\n [kendoDropDownTreeLocalizedMessages],\n [kendoComboBoxLocalizedMessages],\n [kendoMultiColumnComboBoxLocalizedMessages],\n [kendoAutoCompleteLocalizedMessages],\n [kendoMultiSelectLocalizedMessages],\n [kendoMultiSelectTreeLocalizedMessages]\n " }, { type: i11.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i12.TemplateContextDirective, selector: "[templateContext]", inputs: ["templateContext"] }] });
1000
1017
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: AutoCompleteComponent, decorators: [{
1001
1018
  type: Component,
1002
1019
  args: [{
@@ -1033,10 +1050,12 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImpo
1033
1050
  </ng-container>
1034
1051
  <kendo-searchbar #searchbar
1035
1052
  [role]="'combobox'"
1053
+ [isSuggestable]="suggest"
1054
+ [isFilterable]="filterable"
1055
+ [isLoading]="isLoading"
1036
1056
  [id]="focusableId"
1037
1057
  [listId]="listBoxId"
1038
1058
  [activeDescendant]="activeDescendant"
1039
- [noDataLabel]="noDataLabel"
1040
1059
  [userInput]="text"
1041
1060
  [suggestedText]="suggestion"
1042
1061
  [disabled]="disabled"
@@ -281,11 +281,6 @@ export class ComboBoxComponent {
281
281
  const dataItem = this.dataService.itemAt(this.selectionService.focused);
282
282
  return this.optionPrefix + "-" + (dataItem ? getter(dataItem, this.valueField) : "");
283
283
  }
284
- get noDataLabel() {
285
- if (this.data.length === 0) {
286
- return this.messageFor('noDataText');
287
- }
288
- }
289
284
  get appendTo() {
290
285
  const { appendTo } = this.popupSettings;
291
286
  if (!appendTo || appendTo === 'root') {
@@ -619,6 +614,11 @@ export class ComboBoxComponent {
619
614
  .subscribe((event) => this.navigate(event.index)));
620
615
  this.subs.add(this.navigationService.open.subscribe(this.handleNavigationOpen.bind(this)));
621
616
  this.subs.add(this.navigationService.close.subscribe(() => this.togglePopup(false)));
617
+ this.subs.add(merge(this.navigationService.pagedown, this.navigationService.pageup).subscribe((event) => {
618
+ if (this.isOpen) {
619
+ this.optionsList.scrollWithOnePage(NavigationAction[event.originalEvent.code]);
620
+ }
621
+ }));
622
622
  this.subs.add(this.navigationService.esc.subscribe(this.handleEscape.bind(this)));
623
623
  this.subs.add(this.navigationService.enter.pipe(tap((event) => {
624
624
  if (this.isOpen) {
@@ -751,9 +751,10 @@ export class ComboBoxComponent {
751
751
  * @hidden
752
752
  */
753
753
  clearValue(event) {
754
- event.stopImmediatePropagation();
755
- this.focus();
756
- this._filtering = true;
754
+ event === null || event === void 0 ? void 0 : event.stopImmediatePropagation();
755
+ if (event) {
756
+ this.focus();
757
+ }
757
758
  this._previousDataItem = undefined;
758
759
  this.selectionService.resetSelection([]);
759
760
  this.clearValueSubject.next();
@@ -787,7 +788,7 @@ export class ComboBoxComponent {
787
788
  * @hidden
788
789
  */
789
790
  get buttonClasses() {
790
- return this.loading ? 'k-i-loading k-input-loading-icon' : this.iconClass || 'k-i-arrow-s';
791
+ return this.loading ? 'k-i-loading k-input-loading-icon' : this.iconClass || 'k-i-caret-alt-down';
791
792
  }
792
793
  /**
793
794
  * @hidden
@@ -980,6 +981,8 @@ export class ComboBoxComponent {
980
981
  action !== NavigationAction.Right &&
981
982
  action !== NavigationAction.Backspace &&
982
983
  action !== NavigationAction.Delete &&
984
+ action !== NavigationAction.PageDown &&
985
+ action !== NavigationAction.PageUp &&
983
986
  ((action === NavigationAction.Enter && this.isOpen) || action !== NavigationAction.Enter)) {
984
987
  event.preventDefault();
985
988
  }
@@ -1046,7 +1049,7 @@ export class ComboBoxComponent {
1046
1049
  * @hidden
1047
1050
  */
1048
1051
  handleEscape() {
1049
- this.togglePopup(false);
1052
+ this.isOpen ? this.togglePopup(false) : this.clearValue();
1050
1053
  // clear the focus only if the focused item is not selected
1051
1054
  const hasSelected = this.selectionService.selected.length > 0;
1052
1055
  if (!hasSelected) {
@@ -1195,6 +1198,11 @@ export class ComboBoxComponent {
1195
1198
  popupWrapper.style.width = max;
1196
1199
  popupWrapper.style.height = this.popupHeight;
1197
1200
  popupWrapper.setAttribute("dir", this.direction);
1201
+ const listBox = this.popupRef.popupElement.querySelector('ul.k-list-ul');
1202
+ const ariaLabel = this.searchbar.input.nativeElement.getAttribute('aria-labelledby');
1203
+ if (ariaLabel) {
1204
+ listBox.setAttribute('aria-labelledby', ariaLabel);
1205
+ }
1198
1206
  this.popupRef.popupOpen.subscribe(() => {
1199
1207
  this.cdr.detectChanges();
1200
1208
  this.optionsList.scrollToItem(this.selectionService.focused);
@@ -1299,8 +1307,10 @@ ComboBoxComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", vers
1299
1307
  [role]="'combobox'"
1300
1308
  [id]="focusableId"
1301
1309
  [listId]="listBoxId"
1310
+ [isLoading]="loading"
1311
+ [isSuggestable]="suggest"
1312
+ [isFilterable]="filterable"
1302
1313
  [activeDescendant]="activeDescendant"
1303
- [noDataLabel]="noDataLabel"
1304
1314
  [userInput]="text"
1305
1315
  [suggestedText]="getSuggestion()"
1306
1316
  [disabled]="disabled"
@@ -1328,6 +1338,7 @@ ComboBoxComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", vers
1328
1338
  </span>
1329
1339
  <button
1330
1340
  #select
1341
+ tabindex="-1"
1331
1342
  unselectable="on"
1332
1343
  type="button"
1333
1344
  class="k-input-button k-button k-icon-button"
@@ -1387,7 +1398,7 @@ ComboBoxComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", vers
1387
1398
  <kendo-resize-sensor (resize)="onResize()"></kendo-resize-sensor>
1388
1399
  </ng-template>
1389
1400
  <ng-container #container></ng-container>
1390
- `, isInline: true, components: [{ type: i7.SearchBarComponent, selector: "kendo-searchbar", inputs: ["id", "listId", "tagListId", "activeDescendant", "noDataLabel", "disabled", "readonly", "tabIndex", "popupOpen", "role", "userInput", "suggestedText", "placeholder"], outputs: ["valueChange", "onBlur", "onFocus", "onClick", "onNavigate"] }, { type: i8.ListComponent, selector: "kendo-list", inputs: ["selected", "focused", "textField", "valueField", "height", "template", "groupTemplate", "fixedGroupTemplate", "show", "id", "optionPrefix", "multipleSelection", "virtual", "type", "checkboxes", "data", "size", "rounded"], outputs: ["onClick", "pageChange", "listResize"] }, { type: i9.ResizeSensorComponent, selector: "kendo-resize-sensor", inputs: ["rateLimit"], outputs: ["resize"] }], directives: [{ type: i10.LocalizedMessagesDirective, selector: "\n [kendoDropDownListLocalizedMessages],\n [kendoDropDownTreeLocalizedMessages],\n [kendoComboBoxLocalizedMessages],\n [kendoMultiColumnComboBoxLocalizedMessages],\n [kendoAutoCompleteLocalizedMessages],\n [kendoMultiSelectLocalizedMessages],\n [kendoMultiSelectTreeLocalizedMessages]\n " }, { type: i11.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i9.EventsOutsideAngularDirective, selector: "[kendoEventsOutsideAngular]", inputs: ["kendoEventsOutsideAngular", "scope"] }, { type: i11.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i12.TemplateContextDirective, selector: "[templateContext]", inputs: ["templateContext"] }] });
1401
+ `, isInline: true, components: [{ type: i7.SearchBarComponent, selector: "kendo-searchbar", inputs: ["id", "listId", "tagListId", "activeDescendant", "disabled", "readonly", "tabIndex", "popupOpen", "role", "isLoading", "isSuggestable", "isFilterable", "userInput", "suggestedText", "placeholder"], outputs: ["valueChange", "onBlur", "onFocus", "onClick", "onNavigate"] }, { type: i8.ListComponent, selector: "kendo-list", inputs: ["selected", "focused", "textField", "valueField", "height", "template", "groupTemplate", "fixedGroupTemplate", "show", "id", "optionPrefix", "multipleSelection", "virtual", "type", "checkboxes", "ariaLive", "isMultiselect", "data", "size", "rounded"], outputs: ["onClick", "pageChange", "listResize"] }, { type: i9.ResizeSensorComponent, selector: "kendo-resize-sensor", inputs: ["rateLimit"], outputs: ["resize"] }], directives: [{ type: i10.LocalizedMessagesDirective, selector: "\n [kendoDropDownListLocalizedMessages],\n [kendoDropDownTreeLocalizedMessages],\n [kendoComboBoxLocalizedMessages],\n [kendoMultiColumnComboBoxLocalizedMessages],\n [kendoAutoCompleteLocalizedMessages],\n [kendoMultiSelectLocalizedMessages],\n [kendoMultiSelectTreeLocalizedMessages]\n " }, { type: i11.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i9.EventsOutsideAngularDirective, selector: "[kendoEventsOutsideAngular]", inputs: ["kendoEventsOutsideAngular", "scope"] }, { type: i11.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i12.TemplateContextDirective, selector: "[templateContext]", inputs: ["templateContext"] }] });
1391
1402
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: ComboBoxComponent, decorators: [{
1392
1403
  type: Component,
1393
1404
  args: [{
@@ -1427,8 +1438,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImpo
1427
1438
  [role]="'combobox'"
1428
1439
  [id]="focusableId"
1429
1440
  [listId]="listBoxId"
1441
+ [isLoading]="loading"
1442
+ [isSuggestable]="suggest"
1443
+ [isFilterable]="filterable"
1430
1444
  [activeDescendant]="activeDescendant"
1431
- [noDataLabel]="noDataLabel"
1432
1445
  [userInput]="text"
1433
1446
  [suggestedText]="getSuggestion()"
1434
1447
  [disabled]="disabled"
@@ -1456,6 +1469,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImpo
1456
1469
  </span>
1457
1470
  <button
1458
1471
  #select
1472
+ tabindex="-1"
1459
1473
  unselectable="on"
1460
1474
  type="button"
1461
1475
  class="k-input-button k-button k-icon-button"
@@ -183,6 +183,9 @@ MultiColumnComboBoxComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12
183
183
 
184
184
  i18n-clearTitle="kendo.multicolumncombobox.clearTitle|The title of the clear button"
185
185
  clearTitle="clear"
186
+
187
+ i18n-selectButtonText="kendo.multicolumncombobox.selectButtonText|The title of the select button"
188
+ selectButtonText="Select"
186
189
  >
187
190
  </ng-container>
188
191
  <kendo-searchbar
@@ -190,8 +193,10 @@ MultiColumnComboBoxComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12
190
193
  [role]="'combobox'"
191
194
  [id]="focusableId"
192
195
  [listId]="listBoxId"
196
+ [isLoading]="loading"
197
+ [isSuggestable]="suggest"
198
+ [isFilterable]="filterable"
193
199
  [activeDescendant]="activeDescendant"
194
- [noDataLabel]="noDataLabel"
195
200
  [userInput]="text"
196
201
  [suggestedText]="getSuggestion()"
197
202
  [disabled]="disabled"
@@ -389,7 +394,7 @@ MultiColumnComboBoxComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12
389
394
 
390
395
  <!-- when the popupSettings.appendTo value is set to 'component', this container is used -->
391
396
  <ng-container #container></ng-container>
392
- `, isInline: true, components: [{ type: i7.SearchBarComponent, selector: "kendo-searchbar", inputs: ["id", "listId", "tagListId", "activeDescendant", "noDataLabel", "disabled", "readonly", "tabIndex", "popupOpen", "role", "userInput", "suggestedText", "placeholder"], outputs: ["valueChange", "onBlur", "onFocus", "onClick", "onNavigate"] }, { type: i8.ListComponent, selector: "kendo-list", inputs: ["selected", "focused", "textField", "valueField", "height", "template", "groupTemplate", "fixedGroupTemplate", "show", "id", "optionPrefix", "multipleSelection", "virtual", "type", "checkboxes", "data", "size", "rounded"], outputs: ["onClick", "pageChange", "listResize"] }, { type: i9.ResizeSensorComponent, selector: "kendo-resize-sensor", inputs: ["rateLimit"], outputs: ["resize"] }], directives: [{ type: i10.LocalizedMessagesDirective, selector: "\n [kendoDropDownListLocalizedMessages],\n [kendoDropDownTreeLocalizedMessages],\n [kendoComboBoxLocalizedMessages],\n [kendoMultiColumnComboBoxLocalizedMessages],\n [kendoAutoCompleteLocalizedMessages],\n [kendoMultiSelectLocalizedMessages],\n [kendoMultiSelectTreeLocalizedMessages]\n " }, { type: i11.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i9.EventsOutsideAngularDirective, selector: "[kendoEventsOutsideAngular]", inputs: ["kendoEventsOutsideAngular", "scope"] }, { type: i11.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i12.TemplateContextDirective, selector: "[templateContext]", inputs: ["templateContext"] }, { type: i11.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i11.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }] });
397
+ `, isInline: true, components: [{ type: i7.SearchBarComponent, selector: "kendo-searchbar", inputs: ["id", "listId", "tagListId", "activeDescendant", "disabled", "readonly", "tabIndex", "popupOpen", "role", "isLoading", "isSuggestable", "isFilterable", "userInput", "suggestedText", "placeholder"], outputs: ["valueChange", "onBlur", "onFocus", "onClick", "onNavigate"] }, { type: i8.ListComponent, selector: "kendo-list", inputs: ["selected", "focused", "textField", "valueField", "height", "template", "groupTemplate", "fixedGroupTemplate", "show", "id", "optionPrefix", "multipleSelection", "virtual", "type", "checkboxes", "ariaLive", "isMultiselect", "data", "size", "rounded"], outputs: ["onClick", "pageChange", "listResize"] }, { type: i9.ResizeSensorComponent, selector: "kendo-resize-sensor", inputs: ["rateLimit"], outputs: ["resize"] }], directives: [{ type: i10.LocalizedMessagesDirective, selector: "\n [kendoDropDownListLocalizedMessages],\n [kendoDropDownTreeLocalizedMessages],\n [kendoComboBoxLocalizedMessages],\n [kendoMultiColumnComboBoxLocalizedMessages],\n [kendoAutoCompleteLocalizedMessages],\n [kendoMultiSelectLocalizedMessages],\n [kendoMultiSelectTreeLocalizedMessages]\n " }, { type: i11.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i9.EventsOutsideAngularDirective, selector: "[kendoEventsOutsideAngular]", inputs: ["kendoEventsOutsideAngular", "scope"] }, { type: i11.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i12.TemplateContextDirective, selector: "[templateContext]", inputs: ["templateContext"] }, { type: i11.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i11.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }] });
393
398
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: MultiColumnComboBoxComponent, decorators: [{
394
399
  type: Component,
395
400
  args: [{
@@ -427,6 +432,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImpo
427
432
 
428
433
  i18n-clearTitle="kendo.multicolumncombobox.clearTitle|The title of the clear button"
429
434
  clearTitle="clear"
435
+
436
+ i18n-selectButtonText="kendo.multicolumncombobox.selectButtonText|The title of the select button"
437
+ selectButtonText="Select"
430
438
  >
431
439
  </ng-container>
432
440
  <kendo-searchbar
@@ -434,8 +442,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImpo
434
442
  [role]="'combobox'"
435
443
  [id]="focusableId"
436
444
  [listId]="listBoxId"
445
+ [isLoading]="loading"
446
+ [isSuggestable]="suggest"
447
+ [isFilterable]="filterable"
437
448
  [activeDescendant]="activeDescendant"
438
- [noDataLabel]="noDataLabel"
439
449
  [userInput]="text"
440
450
  [suggestedText]="getSuggestion()"
441
451
  [disabled]="disabled"