import * as i0 from '@angular/core'; import { QueryList, ElementRef, EventEmitter, TemplateRef, OnDestroy, OnInit, ChangeDetectorRef, AfterViewInit } from '@angular/core'; import { IBaseCancelableBrowserEventArgs, IBaseEventArgs, ITreeResourceStrings } from 'igniteui-angular/core'; import { ToggleAnimationSettings, ToggleAnimationPlayer } from 'igniteui-angular/expansion-panel'; import { Subject } from 'rxjs'; /** Comparer function that can be used when searching through IgxTreeNode[] */ type IgxTreeSearchResolver = (data: any, node: IgxTreeNode) => boolean; interface IgxTree { /** @hidden @internal */ nodes: QueryList>; /** @hidden @internal */ rootNodes: IgxTreeNode[]; singleBranchExpand: boolean; toggleNodeOnClick: boolean; selection: IgxTreeSelectionType; expandIndicator: TemplateRef; animationSettings: ToggleAnimationSettings; /** @hidden @internal */ forceSelect: IgxTreeNode[]; /** @hidden @internal */ disabledChange: EventEmitter>; /** @hidden @internal */ activeNodeBindingChange: EventEmitter>; nodeSelection: EventEmitter; nodeExpanding: EventEmitter; nodeExpanded: EventEmitter; nodeCollapsing: EventEmitter; nodeCollapsed: EventEmitter; activeNodeChanged: EventEmitter>; expandAll(nodes: IgxTreeNode[]): void; collapseAll(nodes: IgxTreeNode[]): void; deselectAll(node?: IgxTreeNode[]): void; findNodes(searchTerm: any, comparer?: IgxTreeSearchResolver): IgxTreeNode[] | null; } interface IgxTreeNode { parentNode?: IgxTreeNode | null; loading: boolean; path: IgxTreeNode[]; expanded: boolean | null; /** @hidden @internal */ indeterminate: boolean; selected: boolean | null; disabled: boolean; /** @hidden @internal */ isFocused: boolean; active: boolean; level: number; data: T; /** @hidden @internal */ nativeElement: HTMLElement; /** @hidden @internal */ header: ElementRef; /** @hidden @internal */ tabIndex: number; /** @hidden @internal */ allChildren: QueryList>; /** @hidden @internal */ _children: QueryList> | null; selectedChange: EventEmitter; expandedChange: EventEmitter; expand(): void; collapse(): void; toggle(): void; /** @hidden @internal */ addLinkChild(node: any): void; /** @hidden @internal */ removeLinkChild(node: any): void; } interface ITreeNodeSelectionEvent extends IBaseCancelableBrowserEventArgs { oldSelection: IgxTreeNode[]; newSelection: IgxTreeNode[]; added: IgxTreeNode[]; removed: IgxTreeNode[]; event?: Event; } interface ITreeNodeEditingEvent extends IBaseCancelableBrowserEventArgs { node: IgxTreeNode; value: string; } interface ITreeNodeEditedEvent extends IBaseEventArgs { node: IgxTreeNode; value: any; } interface ITreeNodeTogglingEventArgs extends IBaseEventArgs, IBaseCancelableBrowserEventArgs { node: IgxTreeNode; } interface ITreeNodeToggledEventArgs extends IBaseEventArgs { node: IgxTreeNode; } declare const IgxTreeSelectionType: { readonly None: "None"; readonly BiState: "BiState"; readonly Cascading: "Cascading"; }; type IgxTreeSelectionType = (typeof IgxTreeSelectionType)[keyof typeof IgxTreeSelectionType]; /** @hidden @internal */ declare class IgxTreeNavigationService implements OnDestroy { private treeService; private selectionService; private tree; private _focusedNode; private _lastFocusedNode; private _activeNode; private _visibleChildren; private _invisibleChildren; private _disabledChildren; private _cacheChange; constructor(); register(tree: IgxTree): void; get focusedNode(): IgxTreeNode; set focusedNode(value: IgxTreeNode); get activeNode(): IgxTreeNode; set activeNode(value: IgxTreeNode); get visibleChildren(): IgxTreeNode[]; update_disabled_cache(node: IgxTreeNode): void; init_invisible_cache(): void; update_visible_cache(node: IgxTreeNode, expanded: boolean, shouldEmit?: boolean): void; /** * Sets the node as focused (and active) * * @param node target node * @param isActive if true, sets the node as active */ setFocusedAndActiveNode(node: IgxTreeNode, isActive?: boolean): void; /** Handler for keydown events. Used in tree.component.ts */ handleKeydown(event: KeyboardEvent): void; ngOnDestroy(): void; private handleNavigation; private handleArrowLeft; private handleArrowRight; private handleUpDownArrow; private handleAsterisk; private handleSpace; /** Gets the next visible node in the given direction - 1 -> next, -1 -> previous */ private getVisibleNode; static ɵfac: i0.ɵɵFactoryDeclaration; static ɵprov: i0.ɵɵInjectableDeclaration; } /** @hidden @internal */ declare class IgxTreeSelectionService { private tree; private nodeSelection; private indeterminateNodes; private nodesToBeSelected; private nodesToBeIndeterminate; register(tree: IgxTree): void; /** Select range from last selected node to the current specified node. */ selectMultipleNodes(node: IgxTreeNode, event?: Event): void; /** Select the specified node and emit event. */ selectNode(node: IgxTreeNode, event?: Event): void; /** Deselect the specified node and emit event. */ deselectNode(node: IgxTreeNode, event?: Event): void; /** Clears node selection */ clearNodesSelection(): void; isNodeSelected(node: IgxTreeNode): boolean; isNodeIndeterminate(node: IgxTreeNode): boolean; /** Select specified nodes. No event is emitted. */ selectNodesWithNoEvent(nodes: IgxTreeNode[], clearPrevSelection?: boolean, shouldEmit?: boolean): void; /** Deselect specified nodes. No event is emitted. */ deselectNodesWithNoEvent(nodes?: IgxTreeNode[], shouldEmit?: boolean): void; /** Called on `node.ngOnDestroy` to ensure state is correct after node is removed */ ensureStateOnNodeDelete(node: IgxTreeNode): void; /** Retriggers a node's selection state */ private retriggerNodeState; /** Returns array of the selected nodes. */ private getSelectedNodes; /** Returns array of the nodes in indeterminate state. */ private getIndeterminateNodes; private emitNodeSelectionEvent; private areEqualCollections; private cascadeSelectNodesWithNoEvent; private cascadeDeselectNodesWithNoEvent; /** * populates the nodesToBeSelected and nodesToBeIndeterminate sets * with the nodes which will be eventually in selected/indeterminate state */ private calculateNodesNewSelectionState; /** Ensures proper selection state for all predescessors and descendants during a selection event */ private cascadeSelectionState; private emitCascadeNodeSelectionEvent; /** * recursively handle the selection state of the direct and indirect parents */ private handleParentSelectionState; /** * Handle the selection state of a given node based the selection states of its direct children */ private handleNodeSelectionState; /** * Get a collection of all nodes affected by the change event * * @param nodesToBeProcessed set of the nodes to be selected/deselected * @returns a collection of all affected nodes and all their parents */ private getCascadingNodeCollection; /** * retrieve the nodes which should be added/removed to/from the old selection */ private populateAddRemoveArgs; /** Emits the `selectedChange` event for each node affected by the selection */ private emitSelectedChangeEvent; static ɵfac: i0.ɵɵFactoryDeclaration; static ɵprov: i0.ɵɵInjectableDeclaration; } /** @hidden @internal */ declare class IgxTreeService { expandedNodes: Set>; collapsingNodes: Set>; private tree; /** * Adds the node to the `expandedNodes` set and fires the nodes change event * * @param node target node * @param uiTrigger is the event triggered by a ui interraction (so we know if we should animate) * @returns void */ expand(node: IgxTreeNode, uiTrigger?: boolean): void; /** * Adds a node to the `collapsing` collection * * @param node target node */ collapsing(node: IgxTreeNode): void; /** * Removes the node from the 'expandedNodes' set and emits the node's change event * * @param node target node * @returns void */ collapse(node: IgxTreeNode): void; isExpanded(node: IgxTreeNode): boolean; register(tree: IgxTree): void; private siblingComparer; static ɵfac: i0.ɵɵFactoryDeclaration; static ɵprov: i0.ɵɵInjectableDeclaration; } /** * @hidden @internal * Used for links (`a` tags) in the body of an `igx-tree-node`. Handles aria and event dispatch. */ declare class IgxTreeNodeLinkDirective implements OnDestroy { private node; private navService; elementRef: ElementRef; role: string; /** * The node's parent. Should be used only when the link is defined * in `` tag outside of its parent, as Angular DI will not properly provide a reference * * ```html * * * * * * ... * * * {{ data.label }} * * * ``` */ set parentNode(val: any); get parentNode(): any; /** A pointer to the parent node */ private get target(); private _parentNode; /** @hidden @internal */ get tabIndex(): number; /** * @hidden @internal * Clear the node's focused state */ handleBlur(): void; /** * @hidden @internal * Set the node as focused */ handleFocus(): void; ngOnDestroy(): void; static ɵfac: i0.ɵɵFactoryDeclaration; static ɵdir: i0.ɵɵDirectiveDeclaration; } /** * * The tree node component represents a child node of the tree component or another tree node. * Usage: * * ```html * * ... * * {{ data.FirstName }} {{ data.LastName }} * * ... * * ``` */ declare class IgxTreeNodeComponent extends ToggleAnimationPlayer implements IgxTreeNode, OnInit, OnDestroy { tree: IgxTree; protected selectionService: IgxTreeSelectionService; protected treeService: IgxTreeService; protected navService: IgxTreeNavigationService; protected cdr: ChangeDetectorRef; private element; parentNode: IgxTreeNode; /** * The data entry that the node is visualizing. * * @remarks * Required for searching through nodes. * * @example * ```html * * ... * * {{ data.FirstName }} {{ data.LastName }} * * ... * * ``` */ data: T; /** * To be used for load-on-demand scenarios in order to specify whether the node is loading data. * * @remarks * Loading nodes do not render children. */ loading: boolean; /** @hidden @internal */ set tabIndex(val: number); /** @hidden @internal */ get tabIndex(): number; /** @hidden @internal */ get animationSettings(): ToggleAnimationSettings; /** * Gets/Sets the resource strings. * * @remarks * Uses EN resources by default. */ set resourceStrings(value: ITreeResourceStrings); /** * An accessor that returns the resource strings. */ get resourceStrings(): ITreeResourceStrings; /** * Gets/Sets the active state of the node * * @param value: boolean */ set active(value: boolean); get active(): boolean; /** * Emitted when the node's `selected` property changes. * * ```html * * * * * ``` * * ```typescript * const node: IgxTreeNode = this.tree.findNodes(data[0])[0]; * node.selectedChange.pipe(takeUntil(this.destroy$)).subscribe((e: boolean) => console.log("Node selection changed to ", e)) * ``` */ selectedChange: EventEmitter; /** * Emitted when the node's `expanded` property changes. * * ```html * * * * * ``` * * ```typescript * const node: IgxTreeNode = this.tree.findNodes(data[0])[0]; * node.expandedChange.pipe(takeUntil(this.destroy$)).subscribe((e: boolean) => console.log("Node expansion state changed to ", e)) * ``` */ expandedChange: EventEmitter; /** @hidden @internal */ get focused(): boolean; /** * Retrieves the full path to the node incuding itself * * ```typescript * const node: IgxTreeNode = this.tree.findNodes(data[0])[0]; * const path: IgxTreeNode[] = node.path; * ``` */ get path(): IgxTreeNode[]; /** * Gets/Sets the disabled state of the node * * @param value: boolean */ get disabled(): boolean; set disabled(value: boolean); /** @hidden @internal */ cssClass: string; /** @hidden @internal */ get role(): "treeitem" | "none"; /** @hidden @internal */ linkChildren: QueryList; /** @hidden @internal */ _children: QueryList>; /** @hidden @internal */ allChildren: QueryList>; /** * Return the child nodes of the node (if any) * * @remarks * Returns `null` if node does not have children * * @example * ```typescript * const node: IgxTreeNode = this.tree.findNodes(data[0])[0]; * const children: IgxTreeNode[] = node.children; * ``` */ get children(): IgxTreeNode[]; /** @hidden @internal */ header: ElementRef; private _defaultExpandIndicatorTemplate; private childrenContainer; private get hasLinkChildren(); /** @hidden @internal */ isFocused: boolean; /** @hidden @internal */ registeredChildren: IgxTreeNodeLinkDirective[]; /** @hidden @internal */ private _resourceStrings; private _tabIndex; private _disabled; /** * @hidden @internal */ get showSelectors(): boolean; /** * @hidden @internal */ get indeterminate(): boolean; /** The depth of the node, relative to the root * * ```html * * ... * * My level is {{ node.level }} * * * ``` * * ```typescript * const node: IgxTreeNode = this.tree.findNodes(data[12])[0]; * const level: number = node.level; * ``` */ get level(): number; /** Get/set whether the node is selected. Supporst two-way binding. * * ```html * * ... * * {{ node.label }} * * * ``` * * ```typescript * const node: IgxTreeNode = this.tree.findNodes(data[0])[0]; * const selected = node.selected; * node.selected = true; * ``` */ get selected(): boolean; set selected(val: boolean); /** Get/set whether the node is expanded * * ```html * * ... * * {{ node.label }} * * * ``` * * ```typescript * const node: IgxTreeNode = this.tree.findNodes(data[0])[0]; * const expanded = node.expanded; * node.expanded = true; * ``` */ get expanded(): boolean; set expanded(val: boolean); /** @hidden @internal */ get expandIndicatorTemplate(): TemplateRef; /** * The native DOM element representing the node. Could be null in certain environments. * * ```typescript * // get the nativeElement of the second node * const node: IgxTreeNode = this.tree.nodes.first(); * const nodeElement: HTMLElement = node.nativeElement; * ``` */ /** @hidden @internal */ get nativeElement(): HTMLElement; /** @hidden @internal */ ngOnInit(): void; /** * @hidden @internal * Sets the focus to the node's child, if present * Sets the node as the tree service's focusedNode * Marks the node as the current active element */ handleFocus(): void; /** * @hidden @internal * Clear the node's focused status */ clearFocus(): void; /** * @hidden @internal */ onSelectorPointerDown(event: any): void; /** * @hidden @internal */ onSelectorClick(event: any): void; /** * Toggles the node expansion state, triggering animation * * ```html * * My Node * * * ``` * * ```typescript * const myNode: IgxTreeNode = this.tree.findNodes(data[0])[0]; * myNode.toggle(); * ``` */ toggle(): void; /** @hidden @internal */ indicatorClick(): void; /** * @hidden @internal */ onPointerDown(event: any): void; ngOnDestroy(): void; /** * Expands the node, triggering animation * * ```html * * My Node * * * ``` * * ```typescript * const myNode: IgxTreeNode = this.tree.findNodes(data[0])[0]; * myNode.expand(); * ``` */ expand(): void; /** * Collapses the node, triggering animation * * ```html * * My Node * * * ``` * * ```typescript * const myNode: IgxTreeNode = this.tree.findNodes(data[0])[0]; * myNode.collapse(); * ``` */ collapse(): void; /** @hidden @internal */ addLinkChild(link: IgxTreeNodeLinkDirective): void; /** @hidden @internal */ removeLinkChild(link: IgxTreeNodeLinkDirective): void; static ɵfac: i0.ɵɵFactoryDeclaration, never>; static ɵcmp: i0.ɵɵComponentDeclaration, "igx-tree-node", never, { "data": { "alias": "data"; "required": false; }; "loading": { "alias": "loading"; "required": false; }; "resourceStrings": { "alias": "resourceStrings"; "required": false; }; "active": { "alias": "active"; "required": false; }; "disabled": { "alias": "disabled"; "required": false; }; "selected": { "alias": "selected"; "required": false; }; "expanded": { "alias": "expanded"; "required": false; }; }, { "selectedChange": "selectedChange"; "expandedChange": "expandedChange"; }, ["linkChildren", "_children", "allChildren"], ["igx-tree-node", "*"], true, never>; static ngAcceptInputType_loading: unknown; static ngAcceptInputType_active: unknown; static ngAcceptInputType_disabled: unknown; static ngAcceptInputType_selected: unknown; static ngAcceptInputType_expanded: unknown; } /** * @hidden @internal * Used for templating the expand indicator of the tree */ declare class IgxTreeExpandIndicatorDirective { static ɵfac: i0.ɵɵFactoryDeclaration; static ɵdir: i0.ɵɵDirectiveDeclaration; } /** * IgxTreeComponent allows a developer to show a set of nodes in a hierarchical fashion. * * @igxModule IgxTreeModule * @igxKeywords tree * @igxTheme igx-tree-theme * @igxGroup Grids & Lists * * @remark * The Angular Tree Component allows users to represent hierarchical data in a tree-view structure, * maintaining parent-child relationships, as well as to define static tree-view structure without a corresponding data model. * Its primary purpose is to allow end-users to visualize and navigate within hierarchical data structures. * The Ignite UI for Angular Tree Component also provides load on demand capabilities, item activation, * bi-state and cascading selection of items through built-in checkboxes, built-in keyboard navigation and more. * * @example * ```html * * * I am a parent node 1 * * I am a child node 1 * * ... * * ... * * ``` */ declare class IgxTreeComponent implements IgxTree, OnInit, AfterViewInit, OnDestroy { private navService; private selectionService; private treeService; private element; private platform; cssClass: string; /** * Gets/Sets tree selection mode * * @remarks * By default the tree selection mode is 'None' * @param selectionMode: IgxTreeSelectionType */ get selection(): IgxTreeSelectionType; set selection(selectionMode: IgxTreeSelectionType); /** Get/Set how the tree should handle branch expansion. * If set to `true`, only a single branch can be expanded at a time, collapsing all others * * ```html * * ... * * ``` * * ```typescript * const tree: IgxTree = this.tree; * this.tree.singleBranchExpand = false; * ``` */ singleBranchExpand: boolean; /** Get/Set if nodes should be expanded/collapsed when clicking over them. * * ```html * * ... * * ``` * * ```typescript * const tree: IgxTree = this.tree; * this.tree.toggleNodeOnClick = false; * ``` */ toggleNodeOnClick: boolean; /** Get/Set the animation settings that branches should use when expanding/collpasing. * * ```html * * * ``` * * ```typescript * const animationSettings: ToggleAnimationSettings = { * openAnimation: growVerIn, * closeAnimation: growVerOut * }; * * this.tree.animationSettings = animationSettings; * ``` */ animationSettings: ToggleAnimationSettings; /** Emitted when the node selection is changed through interaction * * ```html * * * ``` * *```typescript * public handleNodeSelection(event: ITreeNodeSelectionEvent) { * const newSelection: IgxTreeNode[] = event.newSelection; * const added: IgxTreeNode[] = event.added; * console.log("New selection will be: ", newSelection); * console.log("Added nodes: ", event.added); * } *``` */ nodeSelection: EventEmitter; /** Emitted when a node is expanding, before it finishes * * ```html * * * ``` * *```typescript * public handleNodeExpanding(event: ITreeNodeTogglingEventArgs) { * const expandedNode: IgxTreeNode = event.node; * if (expandedNode.disabled) { * event.cancel = true; * } * } *``` */ nodeExpanding: EventEmitter; /** Emitted when a node is expanded, after it finishes * * ```html * * * ``` * *```typescript * public handleNodeExpanded(event: ITreeNodeToggledEventArgs) { * const expandedNode: IgxTreeNode = event.node; * console.log("Node is expanded: ", expandedNode.data); * } *``` */ nodeExpanded: EventEmitter; /** Emitted when a node is collapsing, before it finishes * * ```html * * * ``` * *```typescript * public handleNodeCollapsing(event: ITreeNodeTogglingEventArgs) { * const collapsedNode: IgxTreeNode = event.node; * if (collapsedNode.alwaysOpen) { * event.cancel = true; * } * } *``` */ nodeCollapsing: EventEmitter; /** Emitted when a node is collapsed, after it finishes * * @example * ```html * * * ``` * ```typescript * public handleNodeCollapsed(event: ITreeNodeToggledEventArgs) { * const collapsedNode: IgxTreeNode = event.node; * console.log("Node is collapsed: ", collapsedNode.data); * } * ``` */ nodeCollapsed: EventEmitter; /** * Emitted when the active node is changed. * * @example * ``` * * ``` */ activeNodeChanged: EventEmitter>; /** * A custom template to be used for the expand indicator of nodes * ```html * * * {{ expanded ? "close_fullscreen": "open_in_full"}} * * * ``` */ expandIndicator: TemplateRef; /** @hidden @internal */ nodes: QueryList>; /** @hidden @internal */ disabledChange: EventEmitter>; /** * Returns all **root level** nodes * * ```typescript * const tree: IgxTree = this.tree; * const rootNodes: IgxTreeNodeComponent[] = tree.rootNodes; * ``` */ get rootNodes(): IgxTreeNodeComponent[]; /** * Emitted when the active node is set through API * * @hidden @internal */ activeNodeBindingChange: EventEmitter>; /** @hidden @internal */ forceSelect: any[]; /** @hidden @internal */ resizeNotify: Subject; private _selection; private destroy$; private unsubChildren$; constructor(); /** @hidden @internal */ get nativeElement(): HTMLElement; /** * Expands all of the passed nodes. * If no nodes are passed, expands ALL nodes * * @param nodes nodes to be expanded * * ```typescript * const targetNodes: IgxTreeNode = this.tree.findNodes(true, (_data: any, node: IgxTreeNode) => node.data.expandable); * tree.expandAll(nodes); * ``` */ expandAll(nodes?: IgxTreeNode[]): void; /** * Collapses all of the passed nodes. * If no nodes are passed, collapses ALL nodes * * @param nodes nodes to be collapsed * * ```typescript * const targetNodes: IgxTreeNode = this.tree.findNodes(true, (_data: any, node: IgxTreeNode) => node.data.collapsible); * tree.collapseAll(nodes); * ``` */ collapseAll(nodes?: IgxTreeNode[]): void; /** * Deselect all nodes if the nodes collection is empty. Otherwise, deselect the nodes in the nodes collection. * * @example * ```typescript * const arr = [ * this.tree.nodes.toArray()[0], * this.tree.nodes.toArray()[1] * ]; * this.tree.deselectAll(arr); * ``` * @param nodes: IgxTreeNodeComponent[] */ deselectAll(nodes?: IgxTreeNodeComponent[]): void; /** * Returns all of the nodes that match the passed searchTerm. * Accepts a custom comparer function for evaluating the search term against the nodes. * * @remarks * Default search compares the passed `searchTerm` against the node's `data` Input. * When using `findNodes` w/o a `comparer`, make sure all nodes have `data` passed. * * @param searchTerm The data of the searched node * @param comparer A custom comparer function that evaluates the passed `searchTerm` against all nodes. * @returns Array of nodes that match the search. `null` if no nodes are found. * * ```html * * * {{ node.label }} * * * ``` * * ```typescript * public data: DataEntry[] = FETCHED_DATA; * ... * const matchedNodes: IgxTreeNode[] = this.tree.findNodes(searchTerm: data[5]); * ``` * * Using a custom comparer * ```typescript * public data: DataEntry[] = FETCHED_DATA; * ... * const comparer: IgxTreeSearchResolver = (data: any, node: IgxTreeNode) { * return node.data.index % 2 === 0; * } * const evenIndexNodes: IgxTreeNode[] = this.tree.findNodes(null, comparer); * ``` */ findNodes(searchTerm: any, comparer?: IgxTreeSearchResolver): IgxTreeNodeComponent[] | null; /** @hidden @internal */ handleKeydown(event: KeyboardEvent): void; /** @hidden @internal */ ngOnInit(): void; /** @hidden @internal */ ngAfterViewInit(): void; /** @hidden @internal */ ngOnDestroy(): void; private expandToNode; private subToCollapsing; private subToChanges; private scrollNodeIntoView; private _comparer; static ɵfac: i0.ɵɵFactoryDeclaration; static ɵcmp: i0.ɵɵComponentDeclaration; static ngAcceptInputType_singleBranchExpand: unknown; static ngAcceptInputType_toggleNodeOnClick: unknown; } declare const IGX_TREE_DIRECTIVES: readonly [typeof IgxTreeComponent, typeof IgxTreeNodeComponent, typeof IgxTreeNodeLinkDirective, typeof IgxTreeExpandIndicatorDirective]; /** * @hidden * IMPORTANT: The following is NgModule exported for backwards-compatibility before standalone components */ declare class IgxTreeModule { static ɵfac: i0.ɵɵFactoryDeclaration; static ɵmod: i0.ɵɵNgModuleDeclaration; static ɵinj: i0.ɵɵInjectorDeclaration; } export { IGX_TREE_DIRECTIVES, IgxTreeComponent, IgxTreeExpandIndicatorDirective, IgxTreeModule, IgxTreeNodeComponent, IgxTreeNodeLinkDirective, IgxTreeSelectionType }; export type { ITreeNodeEditedEvent, ITreeNodeEditingEvent, ITreeNodeSelectionEvent, ITreeNodeToggledEventArgs, ITreeNodeTogglingEventArgs, IgxTree, IgxTreeNode, IgxTreeSearchResolver };