@progress/kendo-angular-dropdowns 7.2.2 → 7.2.3-dev.202211091307

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.
@@ -2,14 +2,15 @@
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, Injector, AfterContentChecked } from '@angular/core';
5
+ import { Renderer2, EventEmitter, ElementRef, OnChanges, OnInit, OnDestroy, Injector } from '@angular/core';
6
6
  import { Direction } from './models/direction';
7
7
  import { LocalizationService } from '@progress/kendo-angular-l10n';
8
+ import { FormControl } from '@angular/forms';
8
9
  import * as i0 from "@angular/core";
9
10
  /**
10
11
  * @hidden
11
12
  */
12
- export declare class SearchBarComponent implements OnChanges, OnInit, OnDestroy, AfterContentChecked {
13
+ export declare class SearchBarComponent implements OnChanges, OnInit, OnDestroy {
13
14
  private localization;
14
15
  private injector;
15
16
  direction: Direction;
@@ -29,6 +30,10 @@ export declare class SearchBarComponent implements OnChanges, OnInit, OnDestroy,
29
30
  get isFilterable(): boolean;
30
31
  get userInput(): string;
31
32
  set userInput(userInput: string);
33
+ /**
34
+ * @hidden
35
+ */
36
+ get formControl(): FormControl;
32
37
  suggestedText: string;
33
38
  valueChange: EventEmitter<any>;
34
39
  onBlur: EventEmitter<any>;
@@ -46,17 +51,14 @@ export declare class SearchBarComponent implements OnChanges, OnInit, OnDestroy,
46
51
  private _placeholder;
47
52
  private _isSuggestable;
48
53
  private _isFilterable;
49
- private control;
50
54
  private renderer;
51
55
  private subs;
52
56
  constructor(localization: LocalizationService, renderer: Renderer2, injector: Injector);
53
57
  ngOnInit(): void;
54
- ngAfterContentChecked(): void;
55
58
  ngOnChanges(changes: any): void;
56
59
  ngOnDestroy(): void;
57
60
  private writeInputValue;
58
61
  private setInputSelection;
59
- private setAriaInvalid;
60
62
  private setAriaAutocomplete;
61
63
  handleInput(event: any): void;
62
64
  handleFocus(event: any): void;
@@ -9,7 +9,7 @@ import * as i3 from "./dropdownlist/dropdownlist.module";
9
9
  import * as i4 from "./multiselect/multiselect.module";
10
10
  import * as i5 from "./dropdowntrees/dropdowntrees.module";
11
11
  /**
12
- * Represents the [NgModule]({{ site.data.urls.angular['ngmoduleapi'] }})
12
+ * Represents the [NgModule](link:site.data.urls.angular['ngmoduleapi'])
13
13
  * definition for the Dropdowns components.
14
14
  *
15
15
  * @example
@@ -2,10 +2,10 @@
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 { OnInit, OnDestroy, ElementRef, EventEmitter, NgZone, Renderer2, TemplateRef, ChangeDetectorRef, SimpleChanges, OnChanges, ViewContainerRef, AfterContentChecked } from '@angular/core';
5
+ import { OnInit, OnDestroy, ElementRef, EventEmitter, NgZone, Renderer2, TemplateRef, ChangeDetectorRef, SimpleChanges, OnChanges, ViewContainerRef, AfterContentChecked, Injector } from '@angular/core';
6
6
  import { PopupRef, PopupService } from '@progress/kendo-angular-popup';
7
7
  import { TreeItem, TreeViewComponent, DataBoundComponent, ExpandableComponent } from '@progress/kendo-angular-treeview';
8
- import { ControlValueAccessor } from '@angular/forms';
8
+ import { ControlValueAccessor, FormControl } from '@angular/forms';
9
9
  import { NavigationService } from '../common/navigation/navigation.service';
10
10
  import { LocalizationService } from '@progress/kendo-angular-l10n';
11
11
  import { PreventableEvent } from '../common/models/preventable-event';
@@ -25,6 +25,7 @@ import * as i0 from "@angular/core";
25
25
  * Represents the [Kendo UI DropDownTree component for Angular]({% slug overview_ddt %}).
26
26
  */
27
27
  export declare class DropDownTreeComponent implements OnInit, OnDestroy, OnChanges, AfterContentChecked, ControlValueAccessor, DataBoundComponent, ExpandableComponent {
28
+ private injector;
28
29
  wrapper: ElementRef<HTMLElement>;
29
30
  private popupService;
30
31
  private navigationService;
@@ -34,15 +35,20 @@ export declare class DropDownTreeComponent implements OnInit, OnDestroy, OnChang
34
35
  private localization;
35
36
  touchEnabled: boolean;
36
37
  hostClasses: boolean;
38
+ get hostAriaInvalid(): string;
37
39
  get isDisabled(): boolean;
40
+ get isDisabledAttribute(): string;
38
41
  get isLoading(): boolean;
42
+ get isBusy(): string;
43
+ get hostAriaControls(): string;
39
44
  get id(): string;
40
45
  direction: Direction;
41
46
  get hostTabIndex(): number;
42
47
  role: string;
43
48
  ariaHasPopup: string;
44
49
  get isAriaExpanded(): boolean;
45
- get isReadonly(): boolean;
50
+ get hostAriaAutocomplete(): string;
51
+ get isReadonly(): string;
46
52
  /**
47
53
  * @hidden
48
54
  */
@@ -365,6 +371,10 @@ export declare class DropDownTreeComponent implements OnInit, OnDestroy, OnChang
365
371
  * Used to associate the value label with the wrapper via aria-describedby.
366
372
  */
367
373
  valueLabelId: string;
374
+ /**
375
+ * @hidden
376
+ */
377
+ get formControl(): FormControl;
368
378
  private _nodes;
369
379
  private _value;
370
380
  private _popupSettings;
@@ -372,12 +382,13 @@ export declare class DropDownTreeComponent implements OnInit, OnDestroy, OnChang
372
382
  private _isFocused;
373
383
  private _dataItem;
374
384
  private _treeview;
385
+ private _popupId;
375
386
  private _size;
376
387
  private _rounded;
377
388
  private _fillMode;
378
389
  private subscriptions;
379
390
  private touchstartDisposeHandler;
380
- constructor(wrapper: ElementRef<HTMLElement>, popupService: PopupService, navigationService: NavigationService, renderer: Renderer2, _zone: NgZone, cdr: ChangeDetectorRef, localization: LocalizationService, touchEnabled: boolean);
391
+ constructor(injector: Injector, wrapper: ElementRef<HTMLElement>, popupService: PopupService, navigationService: NavigationService, renderer: Renderer2, _zone: NgZone, cdr: ChangeDetectorRef, localization: LocalizationService, touchEnabled: boolean);
381
392
  ngOnInit(): void;
382
393
  /**
383
394
  * @hidden
@@ -518,6 +529,6 @@ export declare class DropDownTreeComponent implements OnInit, OnDestroy, OnChang
518
529
  private handleDocumentBlur;
519
530
  private assignAriaDescribedBy;
520
531
  private setComponentClasses;
521
- static ɵfac: i0.ɵɵFactoryDeclaration<DropDownTreeComponent, [null, null, null, null, null, null, null, { optional: true; }]>;
532
+ static ɵfac: i0.ɵɵFactoryDeclaration<DropDownTreeComponent, [null, null, null, null, null, null, null, null, { optional: true; }]>;
522
533
  static ɵcmp: i0.ɵɵComponentDeclaration<DropDownTreeComponent, "kendo-dropdowntree", ["kendoDropDownTree"], { "loading": "loading"; "clearButton": "clearButton"; "data": "data"; "value": "value"; "textField": "textField"; "valueField": "valueField"; "valueDepth": "valueDepth"; "hasChildren": "hasChildren"; "fetchChildren": "fetchChildren"; "placeholder": "placeholder"; "popupSettings": "popupSettings"; "dataItem": "dataItem"; "listHeight": "listHeight"; "disabled": "disabled"; "readonly": "readonly"; "valuePrimitive": "valuePrimitive"; "tabindex": "tabindex"; "size": "size"; "rounded": "rounded"; "fillMode": "fillMode"; "itemDisabled": "itemDisabled"; "isNodeExpanded": "isNodeExpanded"; "isNodeVisible": "isNodeVisible"; "loadOnDemand": "loadOnDemand"; "filterable": "filterable"; "filter": "filter"; "focusableId": "focusableId"; }, { "open": "open"; "opened": "opened"; "close": "close"; "closed": "closed"; "nodeExpand": "nodeExpand"; "nodeCollapse": "nodeCollapse"; "onFocus": "focus"; "onBlur": "blur"; "valueChange": "valueChange"; "filterChange": "filterChange"; }, ["noDataTemplate", "headerTemplate", "footerTemplate", "nodeTemplate", "valueTemplate"], never>;
523
534
  }
@@ -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 { AfterContentChecked, ChangeDetectorRef, ElementRef, EventEmitter, NgZone, OnChanges, OnDestroy, OnInit, Renderer2, SimpleChanges, TemplateRef, ViewContainerRef } from '@angular/core';
6
- import { ControlValueAccessor } from '@angular/forms';
5
+ import { AfterContentChecked, ChangeDetectorRef, ElementRef, EventEmitter, Injector, NgZone, OnChanges, OnDestroy, OnInit, Renderer2, SimpleChanges, TemplateRef, ViewContainerRef } from '@angular/core';
6
+ import { ControlValueAccessor, FormControl } from '@angular/forms';
7
7
  import { LocalizationService } from '@progress/kendo-angular-l10n';
8
8
  import { NavigationService } from '../common/navigation/navigation.service';
9
9
  import { PopupRef, PopupService } from '@progress/kendo-angular-popup';
@@ -30,6 +30,7 @@ import * as i0 from "@angular/core";
30
30
  * Represents the [Kendo UI MultiSelectTree component for Angular]({% slug overview_multiselecttree %}).
31
31
  */
32
32
  export declare class MultiSelectTreeComponent implements OnInit, OnDestroy, OnChanges, AfterContentChecked, DataBoundComponent, ExpandableComponent, ControlValueAccessor {
33
+ private injector;
33
34
  wrapper: ElementRef;
34
35
  private popupService;
35
36
  private renderer;
@@ -41,16 +42,24 @@ export declare class MultiSelectTreeComponent implements OnInit, OnDestroy, OnCh
41
42
  touchEnabled: boolean;
42
43
  hostClasses: boolean;
43
44
  get isDisabled(): boolean;
45
+ get hostAriaControls(): string;
46
+ get hostAriaAutocomplete(): string;
44
47
  get isLoading(): boolean;
48
+ get hostAriaInvalid(): string;
49
+ get isBusy(): string;
45
50
  get id(): string;
46
51
  direction: Direction;
47
52
  get hostTabIndex(): number;
48
53
  role: string;
49
54
  get isAriaExpanded(): boolean;
50
55
  ariaHasPopup: string;
51
- get isReadonly(): boolean;
56
+ get isReadonly(): string;
52
57
  get ariaDescribedBy(): string;
53
58
  get ariaActiveDescendant(): string;
59
+ /**
60
+ * @hidden
61
+ */
62
+ get formControl(): FormControl;
54
63
  /**
55
64
  * @hidden
56
65
  */
@@ -424,13 +433,14 @@ export declare class MultiSelectTreeComponent implements OnInit, OnDestroy, OnCh
424
433
  private _isFocused;
425
434
  private _treeview;
426
435
  private _dataItems;
436
+ private _popupId;
427
437
  private _size;
428
438
  private _rounded;
429
439
  private _fillMode;
430
440
  private subscriptions;
431
441
  private lastNodeOnFocus;
432
442
  private isContentInit;
433
- constructor(wrapper: ElementRef, popupService: PopupService, renderer: Renderer2, navigationService: NavigationService, _zone: NgZone, localization: LocalizationService, cdr: ChangeDetectorRef, lookup: MultiSelectTreeLookupService, touchEnabled: boolean);
443
+ constructor(injector: Injector, wrapper: ElementRef, popupService: PopupService, renderer: Renderer2, navigationService: NavigationService, _zone: NgZone, localization: LocalizationService, cdr: ChangeDetectorRef, lookup: MultiSelectTreeLookupService, touchEnabled: boolean);
434
444
  ngOnInit(): void;
435
445
  /**
436
446
  * @hidden
@@ -595,6 +605,6 @@ export declare class MultiSelectTreeComponent implements OnInit, OnDestroy, OnCh
595
605
  */
596
606
  private registerLookupItems;
597
607
  private registerChildLookupItems;
598
- static ɵfac: i0.ɵɵFactoryDeclaration<MultiSelectTreeComponent, [null, null, null, null, null, null, null, null, { optional: true; }]>;
608
+ static ɵfac: i0.ɵɵFactoryDeclaration<MultiSelectTreeComponent, [null, null, null, null, null, null, null, null, null, { optional: true; }]>;
599
609
  static ɵcmp: i0.ɵɵComponentDeclaration<MultiSelectTreeComponent, "kendo-multiselecttree", ["kendoMultiSelectTree"], { "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"; }, { "onFocus": "focus"; "onBlur": "blur"; "open": "open"; "opened": "opened"; "close": "close"; "closed": "closed"; "nodeExpand": "nodeExpand"; "nodeCollapse": "nodeCollapse"; "valueChange": "valueChange"; "removeTag": "removeTag"; "filterChange": "filterChange"; }, ["headerTemplate", "footerTemplate", "nodeTemplate", "noDataTemplate", "tagTemplate", "groupTagTemplate"], never>;
600
610
  }
@@ -57,6 +57,13 @@ export class SearchBarComponent {
57
57
  set userInput(userInput) {
58
58
  this._userInput = userInput || "";
59
59
  }
60
+ /**
61
+ * @hidden
62
+ */
63
+ get formControl() {
64
+ const ngControl = this.injector.get(NgControl, null);
65
+ return (ngControl === null || ngControl === void 0 ? void 0 : ngControl.control) || null;
66
+ }
60
67
  get value() {
61
68
  return this.input.nativeElement.value;
62
69
  }
@@ -74,17 +81,6 @@ export class SearchBarComponent {
74
81
  this.subs.add(this.localization
75
82
  .changes.subscribe(({ rtl }) => this.direction = rtl ? 'rtl' : 'ltr'));
76
83
  }
77
- ngAfterContentChecked() {
78
- var _a;
79
- const formControl = (_a = this.injector.get(NgControl, null)) === null || _a === void 0 ? void 0 : _a.control;
80
- this.control = formControl;
81
- if (formControl) {
82
- this.subs.add(formControl.valueChanges.subscribe(() => {
83
- this.control = formControl;
84
- }));
85
- }
86
- this.setAriaInvalid();
87
- }
88
84
  ngOnChanges(changes) {
89
85
  let previousUserInput;
90
86
  if (this.input && (changes.userInput || changes.suggestedText)) {
@@ -135,19 +131,6 @@ export class SearchBarComponent {
135
131
  }
136
132
  }
137
133
  }
138
- setAriaInvalid() {
139
- if (this.control) {
140
- if (this.control.invalid) {
141
- this.renderer.setAttribute(this.input.nativeElement, 'aria-invalid', 'true');
142
- }
143
- else {
144
- this.renderer.setAttribute(this.input.nativeElement, 'aria-invalid', 'false');
145
- }
146
- }
147
- else {
148
- this.renderer.removeAttribute(this.input.nativeElement, 'aria-invalid');
149
- }
150
- }
151
134
  setAriaAutocomplete() {
152
135
  if (this.isFilterable) {
153
136
  this.renderer.setAttribute(this.input.nativeElement, 'aria-autocomplete', 'list');
@@ -229,6 +212,7 @@ SearchBarComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", ver
229
212
  [attr.aria-describedby]="tagListId"
230
213
  [attr.aria-activedescendant]="activeDescendant"
231
214
  [attr.aria-busy]="isLoading"
215
+ [attr.aria-invalid]="formControl?.invalid"
232
216
  />
233
217
  `, isInline: true, directives: [{ type: i2.EventsOutsideAngularDirective, selector: "[kendoEventsOutsideAngular]", inputs: ["kendoEventsOutsideAngular", "scope"] }] });
234
218
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: SearchBarComponent, decorators: [{
@@ -259,6 +243,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImpo
259
243
  [attr.aria-describedby]="tagListId"
260
244
  [attr.aria-activedescendant]="activeDescendant"
261
245
  [attr.aria-busy]="isLoading"
246
+ [attr.aria-invalid]="formControl?.invalid"
262
247
  />
263
248
  `
264
249
  }]
@@ -524,6 +524,7 @@ export class DropDownListComponent {
524
524
  action !== NavigationAction.Delete &&
525
525
  action !== NavigationAction.PageDown &&
526
526
  action !== NavigationAction.PageUp &&
527
+ action !== NavigationAction.SelectAll &&
527
528
  !(leftRightKeys && this.filterable) &&
528
529
  action !== NavigationAction.Enter //enter when popup is opened is handled before `handleEnter`
529
530
  ) {
@@ -10,7 +10,7 @@ import { MultiSelectModule } from './multiselect/multiselect.module';
10
10
  import { DropDownTreesModule } from './dropdowntrees/dropdowntrees.module';
11
11
  import * as i0 from "@angular/core";
12
12
  /**
13
- * Represents the [NgModule]({{ site.data.urls.angular['ngmoduleapi'] }})
13
+ * Represents the [NgModule](link:site.data.urls.angular['ngmoduleapi'])
14
14
  * definition for the Dropdowns components.
15
15
  *
16
16
  * @example
@@ -6,7 +6,7 @@ import { ChangeDetectionStrategy, Component, EventEmitter, HostBinding, Input, O
6
6
  import { anyChanged, guid, hasObservers, isDocumentAvailable, KendoInput } from '@progress/kendo-angular-common';
7
7
  import { DataBoundComponent, ExpandableComponent } from '@progress/kendo-angular-treeview';
8
8
  import { getter } from '@progress/kendo-common';
9
- import { NG_VALUE_ACCESSOR } from '@angular/forms';
9
+ import { NgControl, NG_VALUE_ACCESSOR } from '@angular/forms';
10
10
  import { DataService } from '../common/data.service';
11
11
  import { DisabledItemsService } from '../common/disabled-items/disabled-items.service';
12
12
  import { NavigationService } from '../common/navigation/navigation.service';
@@ -46,7 +46,8 @@ const DEFAULT_FILL_MODE = 'solid';
46
46
  * Represents the [Kendo UI DropDownTree component for Angular]({% slug overview_ddt %}).
47
47
  */
48
48
  export class DropDownTreeComponent {
49
- constructor(wrapper, popupService, navigationService, renderer, _zone, cdr, localization, touchEnabled) {
49
+ constructor(injector, wrapper, popupService, navigationService, renderer, _zone, cdr, localization, touchEnabled) {
50
+ this.injector = injector;
50
51
  this.wrapper = wrapper;
51
52
  this.popupService = popupService;
52
53
  this.navigationService = navigationService;
@@ -56,7 +57,7 @@ export class DropDownTreeComponent {
56
57
  this.localization = localization;
57
58
  this.touchEnabled = touchEnabled;
58
59
  this.hostClasses = true;
59
- this.role = 'listbox';
60
+ this.role = 'combobox';
60
61
  this.ariaHasPopup = 'tree';
61
62
  /**
62
63
  * Fires each time the popup is about to open
@@ -192,6 +193,7 @@ export class DropDownTreeComponent {
192
193
  this._popupSettings = DEFAULT_POPUP_SETTINGS;
193
194
  this._tabindex = 0;
194
195
  this._isFocused = false;
196
+ this._popupId = guid();
195
197
  this._size = 'medium';
196
198
  this._rounded = 'medium';
197
199
  this._fillMode = 'solid';
@@ -203,12 +205,24 @@ export class DropDownTreeComponent {
203
205
  this.subscribeTouchEvents();
204
206
  this.subscribeFocusEvents();
205
207
  }
208
+ get hostAriaInvalid() {
209
+ return this.formControl ? this.formControl.invalid.toString() : null;
210
+ }
206
211
  get isDisabled() {
207
212
  return this.disabled;
208
213
  }
214
+ get isDisabledAttribute() {
215
+ return this.disabled ? '' : null;
216
+ }
209
217
  get isLoading() {
210
218
  return this.loading;
211
219
  }
220
+ get isBusy() {
221
+ return this.loading ? 'true' : null;
222
+ }
223
+ get hostAriaControls() {
224
+ return this.isOpen ? this._popupId : null;
225
+ }
212
226
  get id() {
213
227
  return this.focusableId;
214
228
  }
@@ -218,8 +232,11 @@ export class DropDownTreeComponent {
218
232
  get isAriaExpanded() {
219
233
  return this.isOpen;
220
234
  }
235
+ get hostAriaAutocomplete() {
236
+ return this.filterable ? 'list' : null;
237
+ }
221
238
  get isReadonly() {
222
- return this.readonly;
239
+ return this.readonly ? '' : null;
223
240
  }
224
241
  /**
225
242
  * @hidden
@@ -475,6 +492,13 @@ export class DropDownTreeComponent {
475
492
  get isVisible() {
476
493
  return this.isNodeVisible;
477
494
  }
495
+ /**
496
+ * @hidden
497
+ */
498
+ get formControl() {
499
+ const ngControl = this.injector.get(NgControl, null);
500
+ return (ngControl === null || ngControl === void 0 ? void 0 : ngControl.control) || null;
501
+ }
478
502
  ngOnInit() {
479
503
  this.renderer.removeAttribute(this.wrapper.nativeElement, 'tabindex');
480
504
  this.assignAriaDescribedBy();
@@ -825,10 +849,11 @@ export class DropDownTreeComponent {
825
849
  });
826
850
  const popupWrapper = this.popupRef.popupElement;
827
851
  const { min, max } = this.width;
828
- popupWrapper.style.minWidth = min;
829
- popupWrapper.style.width = max;
830
- popupWrapper.style.height = this.height;
831
- popupWrapper.setAttribute("dir", this.direction);
852
+ this.renderer.setStyle(popupWrapper, 'minWidth', min);
853
+ this.renderer.setStyle(popupWrapper, 'width', max);
854
+ this.renderer.setStyle(popupWrapper, 'height', this.height);
855
+ this.renderer.setAttribute(popupWrapper, 'dir', this.direction);
856
+ this.renderer.setAttribute(popupWrapper, 'id', this._popupId);
832
857
  this.popupRef.popupOpen.subscribe(() => {
833
858
  this.cdr.detectChanges();
834
859
  this.opened.emit();
@@ -965,8 +990,8 @@ export class DropDownTreeComponent {
965
990
  }
966
991
  }
967
992
  }
968
- DropDownTreeComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: DropDownTreeComponent, deps: [{ token: i0.ElementRef }, { token: i1.PopupService }, { token: i2.NavigationService }, { token: i0.Renderer2 }, { token: i0.NgZone }, { token: i0.ChangeDetectorRef }, { token: i3.LocalizationService }, { token: TOUCH_ENABLED, optional: true }], target: i0.ɵɵFactoryTarget.Component });
969
- DropDownTreeComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.16", type: DropDownTreeComponent, selector: "kendo-dropdowntree", inputs: { loading: "loading", clearButton: "clearButton", data: "data", value: "value", textField: "textField", valueField: "valueField", valueDepth: "valueDepth", hasChildren: "hasChildren", fetchChildren: "fetchChildren", placeholder: "placeholder", popupSettings: "popupSettings", dataItem: "dataItem", listHeight: "listHeight", disabled: "disabled", readonly: "readonly", valuePrimitive: "valuePrimitive", tabindex: "tabindex", size: "size", rounded: "rounded", fillMode: "fillMode", itemDisabled: "itemDisabled", isNodeExpanded: "isNodeExpanded", isNodeVisible: "isNodeVisible", loadOnDemand: "loadOnDemand", filterable: "filterable", filter: "filter", focusableId: "focusableId" }, outputs: { open: "open", opened: "opened", close: "close", closed: "closed", nodeExpand: "nodeExpand", nodeCollapse: "nodeCollapse", onFocus: "focus", onBlur: "blur", valueChange: "valueChange", filterChange: "filterChange" }, host: { listeners: { "click": "handleClick()", "keydown": "handleKeydown($event)" }, properties: { "class.k-dropdowntree": "this.hostClasses", "class.k-picker": "this.hostClasses", "class.k-disabled": "this.isDisabled", "attr.aria-disabled": "this.isDisabled", "class.k-loading": "this.isLoading", "attr.id": "this.id", "attr.dir": "this.direction", "attr.tabindex": "this.hostTabIndex", "attr.role": "this.role", "attr.aria-haspopup": "this.ariaHasPopup", "attr.aria-expanded": "this.isAriaExpanded", "attr.readonly": "this.isReadonly", "attr.aria-readonly": "this.isReadonly" } }, providers: [
993
+ DropDownTreeComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: DropDownTreeComponent, deps: [{ token: i0.Injector }, { token: i0.ElementRef }, { token: i1.PopupService }, { token: i2.NavigationService }, { token: i0.Renderer2 }, { token: i0.NgZone }, { token: i0.ChangeDetectorRef }, { token: i3.LocalizationService }, { token: TOUCH_ENABLED, optional: true }], target: i0.ɵɵFactoryTarget.Component });
994
+ DropDownTreeComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.16", type: DropDownTreeComponent, selector: "kendo-dropdowntree", inputs: { loading: "loading", clearButton: "clearButton", data: "data", value: "value", textField: "textField", valueField: "valueField", valueDepth: "valueDepth", hasChildren: "hasChildren", fetchChildren: "fetchChildren", placeholder: "placeholder", popupSettings: "popupSettings", dataItem: "dataItem", listHeight: "listHeight", disabled: "disabled", readonly: "readonly", valuePrimitive: "valuePrimitive", tabindex: "tabindex", size: "size", rounded: "rounded", fillMode: "fillMode", itemDisabled: "itemDisabled", isNodeExpanded: "isNodeExpanded", isNodeVisible: "isNodeVisible", loadOnDemand: "loadOnDemand", filterable: "filterable", filter: "filter", focusableId: "focusableId" }, outputs: { open: "open", opened: "opened", close: "close", closed: "closed", nodeExpand: "nodeExpand", nodeCollapse: "nodeCollapse", onFocus: "focus", onBlur: "blur", valueChange: "valueChange", filterChange: "filterChange" }, host: { listeners: { "click": "handleClick()", "keydown": "handleKeydown($event)" }, properties: { "class.k-dropdowntree": "this.hostClasses", "class.k-picker": "this.hostClasses", "attr.aria-invalid": "this.hostAriaInvalid", "class.k-disabled": "this.isDisabled", "attr.disabled": "this.isDisabledAttribute", "class.k-loading": "this.isLoading", "attr.aria-busy": "this.isBusy", "attr.aria-controls": "this.hostAriaControls", "attr.id": "this.id", "attr.dir": "this.direction", "attr.tabindex": "this.hostTabIndex", "attr.role": "this.role", "attr.aria-haspopup": "this.ariaHasPopup", "attr.aria-expanded": "this.isAriaExpanded", "attr.aria-autocomplete": "this.hostAriaAutocomplete", "attr.readonly": "this.isReadonly" } }, providers: [
970
995
  DataService,
971
996
  SelectionService,
972
997
  NavigationService,
@@ -1008,7 +1033,6 @@ DropDownTreeComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0",
1008
1033
  <span
1009
1034
  [attr.id]="valueLabelId"
1010
1035
  class="k-input-inner"
1011
- role="option"
1012
1036
  >
1013
1037
  <span class="k-input-value-text">
1014
1038
  <ng-template *ngIf="valueTemplate"
@@ -1178,7 +1202,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImpo
1178
1202
  <span
1179
1203
  [attr.id]="valueLabelId"
1180
1204
  class="k-input-inner"
1181
- role="option"
1182
1205
  >
1183
1206
  <span class="k-input-value-text">
1184
1207
  <ng-template *ngIf="valueTemplate"
@@ -1302,7 +1325,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImpo
1302
1325
  `,
1303
1326
  changeDetection: ChangeDetectionStrategy.OnPush
1304
1327
  }]
1305
- }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i1.PopupService }, { type: i2.NavigationService }, { type: i0.Renderer2 }, { type: i0.NgZone }, { type: i0.ChangeDetectorRef }, { type: i3.LocalizationService }, { type: undefined, decorators: [{
1328
+ }], ctorParameters: function () { return [{ type: i0.Injector }, { type: i0.ElementRef }, { type: i1.PopupService }, { type: i2.NavigationService }, { type: i0.Renderer2 }, { type: i0.NgZone }, { type: i0.ChangeDetectorRef }, { type: i3.LocalizationService }, { type: undefined, decorators: [{
1306
1329
  type: Optional
1307
1330
  }, {
1308
1331
  type: Inject,
@@ -1313,15 +1336,24 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImpo
1313
1336
  }, {
1314
1337
  type: HostBinding,
1315
1338
  args: ['class.k-picker']
1339
+ }], hostAriaInvalid: [{
1340
+ type: HostBinding,
1341
+ args: ['attr.aria-invalid']
1316
1342
  }], isDisabled: [{
1317
1343
  type: HostBinding,
1318
1344
  args: ['class.k-disabled']
1319
- }, {
1345
+ }], isDisabledAttribute: [{
1320
1346
  type: HostBinding,
1321
- args: ['attr.aria-disabled']
1347
+ args: ['attr.disabled']
1322
1348
  }], isLoading: [{
1323
1349
  type: HostBinding,
1324
1350
  args: ['class.k-loading']
1351
+ }], isBusy: [{
1352
+ type: HostBinding,
1353
+ args: ['attr.aria-busy']
1354
+ }], hostAriaControls: [{
1355
+ type: HostBinding,
1356
+ args: ['attr.aria-controls']
1325
1357
  }], id: [{
1326
1358
  type: HostBinding,
1327
1359
  args: ['attr.id']
@@ -1340,12 +1372,12 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImpo
1340
1372
  }], isAriaExpanded: [{
1341
1373
  type: HostBinding,
1342
1374
  args: ['attr.aria-expanded']
1375
+ }], hostAriaAutocomplete: [{
1376
+ type: HostBinding,
1377
+ args: ['attr.aria-autocomplete']
1343
1378
  }], isReadonly: [{
1344
1379
  type: HostBinding,
1345
1380
  args: ['attr.readonly']
1346
- }, {
1347
- type: HostBinding,
1348
- args: ['attr.aria-readonly']
1349
1381
  }], handleClick: [{
1350
1382
  type: HostListener,
1351
1383
  args: ['click']
@@ -3,7 +3,7 @@
3
3
  * Licensed under commercial license. See LICENSE.md in the project root for more information
4
4
  *-------------------------------------------------------------------------------------------*/
5
5
  import { Component, ContentChild, EventEmitter, forwardRef, HostBinding, HostListener, Inject, Input, isDevMode, Optional, Output, ViewChild, ViewContainerRef } from '@angular/core';
6
- import { NG_VALUE_ACCESSOR } from '@angular/forms';
6
+ import { NgControl, NG_VALUE_ACCESSOR } from '@angular/forms';
7
7
  import { anyChanged, guid, hasObservers, Keys, KendoInput, isDocumentAvailable } from '@progress/kendo-angular-common';
8
8
  import { L10N_PREFIX, LocalizationService } from '@progress/kendo-angular-l10n';
9
9
  import { NavigationService } from '../common/navigation/navigation.service';
@@ -54,7 +54,8 @@ const DEFAULT_FILL_MODE = 'solid';
54
54
  * Represents the [Kendo UI MultiSelectTree component for Angular]({% slug overview_multiselecttree %}).
55
55
  */
56
56
  export class MultiSelectTreeComponent {
57
- constructor(wrapper, popupService, renderer, navigationService, _zone, localization, cdr, lookup, touchEnabled) {
57
+ constructor(injector, wrapper, popupService, renderer, navigationService, _zone, localization, cdr, lookup, touchEnabled) {
58
+ this.injector = injector;
58
59
  this.wrapper = wrapper;
59
60
  this.popupService = popupService;
60
61
  this.renderer = renderer;
@@ -225,6 +226,7 @@ export class MultiSelectTreeComponent {
225
226
  this._popupSettings = DEFAULT_POPUP_SETTINGS;
226
227
  this._checkableSettings = DEFAULT_CHECKABLE_SETTINGS;
227
228
  this._isFocused = false;
229
+ this._popupId = guid();
228
230
  this._size = 'medium';
229
231
  this._rounded = 'medium';
230
232
  this._fillMode = 'solid';
@@ -239,9 +241,21 @@ export class MultiSelectTreeComponent {
239
241
  get isDisabled() {
240
242
  return this.disabled;
241
243
  }
244
+ get hostAriaControls() {
245
+ return this.isOpen ? this._popupId : null;
246
+ }
247
+ get hostAriaAutocomplete() {
248
+ return this.filterable ? 'list' : null;
249
+ }
242
250
  get isLoading() {
243
251
  return this.loading;
244
252
  }
253
+ get hostAriaInvalid() {
254
+ return this.formControl ? this.formControl.invalid.toString() : null;
255
+ }
256
+ get isBusy() {
257
+ return this.loading ? 'true' : null;
258
+ }
245
259
  get id() {
246
260
  return this.focusableId;
247
261
  }
@@ -252,7 +266,7 @@ export class MultiSelectTreeComponent {
252
266
  return this.isOpen;
253
267
  }
254
268
  get isReadonly() {
255
- return this.readonly;
269
+ return this.readonly ? '' : null;
256
270
  }
257
271
  get ariaDescribedBy() {
258
272
  return this.tagListId;
@@ -260,6 +274,13 @@ export class MultiSelectTreeComponent {
260
274
  get ariaActiveDescendant() {
261
275
  return this.focusedTagId;
262
276
  }
277
+ /**
278
+ * @hidden
279
+ */
280
+ get formControl() {
281
+ const ngControl = this.injector.get(NgControl, null);
282
+ return (ngControl === null || ngControl === void 0 ? void 0 : ngControl.control) || null;
283
+ }
263
284
  /**
264
285
  * @hidden
265
286
  */
@@ -1272,8 +1293,8 @@ export class MultiSelectTreeComponent {
1272
1293
  }
1273
1294
  }
1274
1295
  }
1275
- MultiSelectTreeComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: MultiSelectTreeComponent, deps: [{ token: i0.ElementRef }, { token: i1.PopupService }, { token: i0.Renderer2 }, { token: i2.NavigationService }, { token: i0.NgZone }, { token: i3.LocalizationService }, { token: i0.ChangeDetectorRef }, { token: i4.MultiSelectTreeLookupService }, { token: TOUCH_ENABLED, optional: true }], target: i0.ɵɵFactoryTarget.Component });
1276
- MultiSelectTreeComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.16", type: MultiSelectTreeComponent, selector: "kendo-multiselecttree", inputs: { 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: { listeners: { "click": "handleClick()", "keydown": "handleKeydown($event)" }, properties: { "class.k-dropdowntree": "this.hostClasses", "class.k-input": "this.hostClasses", "class.k-disabled": "this.isDisabled", "attr.aria-disabled": "this.isDisabled", "class.k-loading": "this.isLoading", "attr.id": "this.id", "attr.dir": "this.direction", "attr.tabindex": "this.hostTabIndex", "attr.role": "this.role", "attr.aria-expanded": "this.isAriaExpanded", "attr.aria-haspopup": "this.ariaHasPopup", "attr.readonly": "this.isReadonly", "attr.aria-readonly": "this.isReadonly", "attr.aria-describedby": "this.ariaDescribedBy", "attr.aria-activedescendant": "this.ariaActiveDescendant" } }, providers: [
1296
+ MultiSelectTreeComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: MultiSelectTreeComponent, deps: [{ token: i0.Injector }, { token: i0.ElementRef }, { token: i1.PopupService }, { token: i0.Renderer2 }, { token: i2.NavigationService }, { token: i0.NgZone }, { token: i3.LocalizationService }, { token: i0.ChangeDetectorRef }, { token: i4.MultiSelectTreeLookupService }, { token: TOUCH_ENABLED, optional: true }], target: i0.ɵɵFactoryTarget.Component });
1297
+ MultiSelectTreeComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.16", type: MultiSelectTreeComponent, selector: "kendo-multiselecttree", inputs: { 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: { listeners: { "click": "handleClick()", "keydown": "handleKeydown($event)" }, properties: { "class.k-multiselect-tree": "this.hostClasses", "class.k-input": "this.hostClasses", "class.k-disabled": "this.isDisabled", "attr.aria-disabled": "this.isDisabled", "attr.aria-controls": "this.hostAriaControls", "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-expanded": "this.isAriaExpanded", "attr.aria-haspopup": "this.ariaHasPopup", "attr.readonly": "this.isReadonly", "attr.aria-describedby": "this.ariaDescribedBy", "attr.aria-activedescendant": "this.ariaActiveDescendant" } }, providers: [
1277
1298
  LocalizationService,
1278
1299
  NavigationService,
1279
1300
  DataService,
@@ -1678,14 +1699,14 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImpo
1678
1699
  <ng-container #container></ng-container>
1679
1700
  `
1680
1701
  }]
1681
- }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i1.PopupService }, { type: i0.Renderer2 }, { type: i2.NavigationService }, { type: i0.NgZone }, { type: i3.LocalizationService }, { type: i0.ChangeDetectorRef }, { type: i4.MultiSelectTreeLookupService }, { type: undefined, decorators: [{
1702
+ }], ctorParameters: function () { return [{ type: i0.Injector }, { type: i0.ElementRef }, { type: i1.PopupService }, { type: i0.Renderer2 }, { type: i2.NavigationService }, { type: i0.NgZone }, { type: i3.LocalizationService }, { type: i0.ChangeDetectorRef }, { type: i4.MultiSelectTreeLookupService }, { type: undefined, decorators: [{
1682
1703
  type: Optional
1683
1704
  }, {
1684
1705
  type: Inject,
1685
1706
  args: [TOUCH_ENABLED]
1686
1707
  }] }]; }, propDecorators: { hostClasses: [{
1687
1708
  type: HostBinding,
1688
- args: ['class.k-dropdowntree']
1709
+ args: ['class.k-multiselect-tree']
1689
1710
  }, {
1690
1711
  type: HostBinding,
1691
1712
  args: ['class.k-input']
@@ -1695,9 +1716,21 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImpo
1695
1716
  }, {
1696
1717
  type: HostBinding,
1697
1718
  args: ['attr.aria-disabled']
1719
+ }], hostAriaControls: [{
1720
+ type: HostBinding,
1721
+ args: ['attr.aria-controls']
1722
+ }], hostAriaAutocomplete: [{
1723
+ type: HostBinding,
1724
+ args: ['attr.aria-autocomplete']
1698
1725
  }], isLoading: [{
1699
1726
  type: HostBinding,
1700
1727
  args: ['class.k-loading']
1728
+ }], hostAriaInvalid: [{
1729
+ type: HostBinding,
1730
+ args: ['attr.aria-invalid']
1731
+ }], isBusy: [{
1732
+ type: HostBinding,
1733
+ args: ['attr.aria-busy']
1701
1734
  }], id: [{
1702
1735
  type: HostBinding,
1703
1736
  args: ['attr.id']
@@ -1719,9 +1752,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImpo
1719
1752
  }], isReadonly: [{
1720
1753
  type: HostBinding,
1721
1754
  args: ['attr.readonly']
1722
- }, {
1723
- type: HostBinding,
1724
- args: ['attr.aria-readonly']
1725
1755
  }], ariaDescribedBy: [{
1726
1756
  type: HostBinding,
1727
1757
  args: ['attr.aria-describedby']
@@ -9,7 +9,7 @@ export const packageMetadata = {
9
9
  name: '@progress/kendo-angular-dropdowns',
10
10
  productName: 'Kendo UI for Angular',
11
11
  productCodes: ['KENDOUIANGULAR', 'KENDOUICOMPLETE'],
12
- publishDate: 1666768755,
12
+ publishDate: 1667999160,
13
13
  version: '',
14
14
  licensingDocsUrl: 'https://www.telerik.com/kendo-angular-ui/my-license/?utm_medium=product&utm_source=kendoangular&utm_campaign=kendo-ui-angular-purchase-license-keys-warning'
15
15
  };