blob: 1eb5fbeb206898f4081c12df16d3883a6e48f4cf [file] [log] [blame]
/**
* @license
* Copyright Google LLC All Rights Reserved.
*
* Use of this source code is governed by an MIT-style license that can be
* found in the LICENSE file at https://angular.io/license
*/
import { SelectionModel } from '@angular/cdk/collections';
import { Observable } from 'rxjs';
import { TreeControl } from './tree-control';
/** Base tree control. It has basic toggle/expand/collapse operations on a single data node. */
export declare abstract class BaseTreeControl<T> implements TreeControl<T> {
/** Gets a list of descendent data nodes of a subtree rooted at given data node recursively. */
abstract getDescendants(dataNode: T): T[];
/** Expands all data nodes in the tree. */
abstract expandAll(): void;
/** Saved data node for `expandAll` action. */
dataNodes: T[];
/** A selection model with multi-selection to track expansion status. */
expansionModel: SelectionModel<T>;
/** Get depth of a given data node, return the level number. This is for flat tree node. */
getLevel: (dataNode: T) => number;
/**
* Whether the data node is expandable. Returns true if expandable.
* This is for flat tree node.
*/
isExpandable: (dataNode: T) => boolean;
/** Gets a stream that emits whenever the given data node's children change. */
getChildren: (dataNode: T) => (Observable<T[]> | T[] | undefined | null);
/** Toggles one single data node's expanded/collapsed state. */
toggle(dataNode: T): void;
/** Expands one single data node. */
expand(dataNode: T): void;
/** Collapses one single data node. */
collapse(dataNode: T): void;
/** Whether a given data node is expanded or not. Returns true if the data node is expanded. */
isExpanded(dataNode: T): boolean;
/** Toggles a subtree rooted at `node` recursively. */
toggleDescendants(dataNode: T): void;
/** Collapse all dataNodes in the tree. */
collapseAll(): void;
/** Expands a subtree rooted at given data node recursively. */
expandDescendants(dataNode: T): void;
/** Collapses a subtree rooted at given data node recursively. */
collapseDescendants(dataNode: T): void;
}