/**-----------------------------------------------------------------------------------------
* Copyright © 2026 Progress Software Corporation. All rights reserved.
* Licensed under commercial license. See LICENSE.md in the project root for more information
*-------------------------------------------------------------------------------------------*/
import { AfterContentChecked, ChangeDetectorRef, ElementRef, EventEmitter, Injector, NgZone, OnChanges, OnDestroy, OnInit, Renderer2, SimpleChanges, TemplateRef, ViewContainerRef } from '@angular/core';
import { ControlValueAccessor, FormControl } from '@angular/forms';
import { AdaptiveSize, AdaptiveService } from '@progress/kendo-angular-utils';
import { LocalizationService } from '@progress/kendo-angular-l10n';
import { NavigationService } from '../common/navigation/navigation.service';
import { PopupRef, PopupService } from '@progress/kendo-angular-popup';
import { DataBoundComponent, ExpandableComponent, NodeClickEvent, TreeItem, TreeViewComponent } from '@progress/kendo-angular-treeview';
import { PopupSettings } from '../common/models/popup-settings';
import { MultiSelectTreeCheckableSettings } from './checked-state/checkable-settings';
import { PreventableEvent } from '../common/models/preventable-event';
import { Direction } from '../common/models/direction';
import { RemoveTagEvent } from '../common/models/remove-tag-event';
import { CheckedItem } from './checked-state/checked-item';
import { AdaptiveMode } from '../common/util';
import { HeaderTemplateDirective } from '../common/templates/header-template.directive';
import { FooterTemplateDirective } from '../common/templates/footer-template.directive';
import { NodeTemplateDirective } from './templates/node-template.directive';
import { NoDataTemplateDirective } from '../common/templates/no-data-template.directive';
import { TagTemplateDirective } from '../common/templates/tag-template.directive';
import { GroupTagTemplateDirective } from '../common/templates/group-tag-template.directive';
import { Observable } from 'rxjs';
import { DropDownSize } from '../common/models/size';
import { DropDownRounded } from '../common/models/rounded';
import { DropDownFillMode } from '../common/models/fillmode';
import { MultiSelectTreeLookupService } from './lookup/lookup.service';
import { SVGIcon } from '@progress/kendo-svg-icons';
import { ActionSheetComponent } from '@progress/kendo-angular-navigation';
import { TextBoxComponent } from '@progress/kendo-angular-inputs';
import { AdaptiveRendererComponent } from '../common/adaptive-renderer.component';
import * as i0 from "@angular/core";
/**
* Represents the Kendo UI for Angular [MultiSelectTree](https://www.telerik.com/kendo-angular-ui/components/dropdowns/multiselecttree) component.
*
* The `MultiSelectTree` lets you select multiple items from hierarchical data in a tree structure.
* It provides built-in filtering, checkboxes, and adaptive rendering for mobile devices.
*
* @example
* ```typescript
* @Component({
* selector: 'my-app',
* template: `
*
*
* `
* })
* export class AppComponent {
* public data = [
* { text: 'Root', value: 1, items: [
* { text: 'Child 1', value: 2 },
* { text: 'Child 2', value: 3 }
* ]}
* ];
* public selectedValues = [2, 3];
* }
* ```
* @remarks
* Supported children components are: {@link CustomMessagesComponent}.
*/
export declare class MultiSelectTreeComponent implements OnInit, OnDestroy, OnChanges, AfterContentChecked, DataBoundComponent, ExpandableComponent, ControlValueAccessor {
private injector;
wrapper: ElementRef;
private popupService;
private renderer;
private navigationService;
private _zone;
private localization;
private cdr;
private lookup;
private adaptiveService;
/**
* @hidden
*/
touchEnabled: any;
/**
* @hidden
*/
animationDuration: number;
/**
* @hidden
*/
searchIcon: SVGIcon;
/**
* @hidden
*/
xIcon: SVGIcon;
hostClasses: boolean;
get isDisabled(): boolean | null;
treeViewId: string;
get hostAriaAutocomplete(): string;
get isLoading(): boolean;
get hostAriaInvalid(): boolean | null;
get isBusy(): string;
get id(): string;
direction: Direction;
get hostTabIndex(): number;
role: string;
ariaHasPopup: string;
get isReadonly(): string;
get ariaDescribedBy(): string;
get ariaActiveDescendant(): string;
/**
* @hidden
*/
get formControl(): FormControl;
/**
* @hidden
*/
onFilterChange(text: any): void;
/**
* Controls the adaptive mode behavior of the component.
* Set to `auto` to enable automatic adaptive rendering on small screens.
*
* @default 'none'
*/
adaptiveMode: AdaptiveMode;
/**
* Sets the title text for the ActionSheet in adaptive mode on small screens.
* Uses the component label by default if not set.
*
* @default ''
*/
adaptiveTitle: string;
/**
* Sets the subtitle text for the ActionSheet in adaptive mode on small screens.
* No subtitle appears by default.
*/
adaptiveSubtitle: string;
/**
* @hidden
*/
get isAdaptiveModeEnabled(): boolean;
/**
* @hidden
*/
windowSize: AdaptiveSize;
/**
* @hidden
*/
get isActionSheetExpanded(): boolean;
/**
* @hidden
*/
handleKeydown(event: any, input?: HTMLInputElement): void;
/**
* @hidden
*/
adaptiveRendererComponent: AdaptiveRendererComponent;
/**
* @hidden
*/
get actionSheet(): ActionSheetComponent;
/**
* @hidden
*/
get actionSheetSearchBar(): TextBoxComponent;
/**
* @hidden
*/
get isAdaptive(): boolean;
headerTemplate: HeaderTemplateDirective;
footerTemplate: FooterTemplateDirective;
nodeTemplate: NodeTemplateDirective;
noDataTemplate: NoDataTemplateDirective;
tagTemplate: TagTemplateDirective;
groupTagTemplate: GroupTagTemplateDirective;
popupTemplate: TemplateRef;
container: ViewContainerRef;
set treeview(treeview: TreeViewComponent);
get treeview(): TreeViewComponent;
private filterInput;
private checkAllInput;
/**
* Sets the tab index for keyboard navigation.
* Use `-1` to remove the component from the tab sequence.
*
* @default 0
*/
set tabindex(value: number);
get tabindex(): number;
/**
* Sets the visual size of the component. The default value is set by the Kendo theme.
*/
set size(size: DropDownSize);
get size(): DropDownSize;
/**
* Sets the border radius style of the component. The default value is set by the Kendo theme.
*/
set rounded(rounded: DropDownRounded);
get rounded(): DropDownRounded;
/**
* Sets the fill style for the component background and borders. The default value is set by the Kendo theme.
*/
set fillMode(fillMode: DropDownFillMode);
get fillMode(): DropDownFillMode;
/**
* Configures the popup container settings: animation, dimensions, styling and positioning.
*/
set popupSettings(settings: PopupSettings);
get popupSettings(): PopupSettings;
/**
* Configures the checkbox behavior for the MultiSelecTree nodes.
* Use `checkableSettings` to control parent-child selection relationships and click interactions.
*
* @default '{ checkChildren: true, checkOnClick: true }'
*/
set checkableSettings(settings: MultiSelectTreeCheckableSettings);
get checkableSettings(): MultiSelectTreeCheckableSettings;
/**
* Sets the hierarchical data source for the tree structure.
* Provide an array of objects that contain the tree data and structure.
*/
set data(data: object[]);
get data(): object[];
/**
* Sets the selected values in the component.
* Accepts primitive values if `valuePrimitive` is `true`, or objects if `false`.
*/
set value(value: any[]);
get value(): any[];
/**
* Sets the data items that correspond to the selected values.
* Required when using primitive values to resolve the full data objects.
*/
set dataItems(items: any[]);
get dataItems(): any[];
/**
* Specifies which data field provides the display text for tree nodes.
* > The `textField` property can be set to point to a nested property value - e.g. `category.name`.
*/
textField: string | string[];
/**
* Specifies which data field provides the unique values for tree nodes.
* > The `valueField` property can be set to point to a nested property value - e.g. `category.id`.
*/
valueField: string | string[];
/**
* Sets the levels in the data set where the values can be found when `valueField` is an Array.
* The field serves to correctly allocate a data item used when the MultiSelectTree is initialized with a value.
*
* @default []
*/
valueDepth: number[];
/**
* Controls the loading state visual indicator.
* Shows a loading spinner when set to `true`.
*
* @default false
*/
loading: boolean;
/**
* Sets the placeholder text shown when no items are selected.
* Helps guide users on what action to take.
*
* @default ''
*/
placeholder: string;
/**
* Sets the maximum height of the options list in the popup.
* Controls vertical scrolling when content exceeds this height.
*
* @default 200
*/
set listHeight(_listHeight: number);
get listHeight(): number;
private _listHeight;
/**
* Controls whether the component accepts user input.
* Prevents all user interactions when set to `true`.
*
* @default false
*/
disabled: boolean;
/**
* Sets the component to read-only mode.
* Displays current selections but prevents changes.
*
* @default false
*/
readonly: boolean;
/**
* Determines the data type of selected values.
* Set to `true` for primitive values, false for complex objects.
*
* @default false
*/
valuePrimitive: boolean;
/**
* Controls when child nodes load from the data source.
* Set to `true` to load children only when parent nodes expand.
*
* @default false
*/
loadOnDemand: boolean;
/**
* Sets the unique identifier for the focusable element.
* Used internally for accessibility and label association.
*/
focusableId: string;
/**
* Shows a clear button to reset all selections.
* Appears on hover when selections exist and the component is not disabled.
*
* @default true
*/
clearButton: boolean;
/**
* Enables the built-in filter input for searching tree nodes.
* Shows a search box above the tree when enabled.
*
* @default false
*/
filterable: boolean;
/**
* Shows a checkbox to select or deselect all visible tree nodes.
* Appears above the tree when checkboxes are enabled.
*
* @default false
*/
checkAll: boolean;
/**
* Determines if a tree node contains child nodes.
* Return `true` if the node has children, false otherwise.
*/
hasChildren: (node: object) => boolean;
/**
* Function that provides child nodes for a parent node.
* Return an Observable of child objects for the given parent.
*/
fetchChildren: (node: object) => Observable