1 | /**
|
---|
2 | * @license
|
---|
3 | * Copyright Google LLC All Rights Reserved.
|
---|
4 | *
|
---|
5 | * Use of this source code is governed by an MIT-style license that can be
|
---|
6 | * found in the LICENSE file at https://angular.io/license
|
---|
7 | */
|
---|
8 | import { SelectionModel } from '@angular/cdk/collections';
|
---|
9 | import { Observable } from 'rxjs';
|
---|
10 | /**
|
---|
11 | * Tree control interface. User can implement TreeControl to expand/collapse dataNodes in the tree.
|
---|
12 | * The CDKTree will use this TreeControl to expand/collapse a node.
|
---|
13 | * User can also use it outside the `<cdk-tree>` to control the expansion status of the tree.
|
---|
14 | */
|
---|
15 | export interface TreeControl<T, K = T> {
|
---|
16 | /** The saved tree nodes data for `expandAll` action. */
|
---|
17 | dataNodes: T[];
|
---|
18 | /** The expansion model */
|
---|
19 | expansionModel: SelectionModel<K>;
|
---|
20 | /** Whether the data node is expanded or collapsed. Return true if it's expanded. */
|
---|
21 | isExpanded(dataNode: T): boolean;
|
---|
22 | /** Get all descendants of a data node */
|
---|
23 | getDescendants(dataNode: T): any[];
|
---|
24 | /** Expand or collapse data node */
|
---|
25 | toggle(dataNode: T): void;
|
---|
26 | /** Expand one data node */
|
---|
27 | expand(dataNode: T): void;
|
---|
28 | /** Collapse one data node */
|
---|
29 | collapse(dataNode: T): void;
|
---|
30 | /** Expand all the dataNodes in the tree */
|
---|
31 | expandAll(): void;
|
---|
32 | /** Collapse all the dataNodes in the tree */
|
---|
33 | collapseAll(): void;
|
---|
34 | /** Toggle a data node by expand/collapse it and all its descendants */
|
---|
35 | toggleDescendants(dataNode: T): void;
|
---|
36 | /** Expand a data node and all its descendants */
|
---|
37 | expandDescendants(dataNode: T): void;
|
---|
38 | /** Collapse a data node and all its descendants */
|
---|
39 | collapseDescendants(dataNode: T): void;
|
---|
40 | /** Get depth of a given data node, return the level number. This is for flat tree node. */
|
---|
41 | readonly getLevel: (dataNode: T) => number;
|
---|
42 | /**
|
---|
43 | * Whether the data node is expandable. Returns true if expandable.
|
---|
44 | * This is for flat tree node.
|
---|
45 | */
|
---|
46 | readonly isExpandable: (dataNode: T) => boolean;
|
---|
47 | /** Gets a stream that emits whenever the given data node's children change. */
|
---|
48 | readonly getChildren: (dataNode: T) => Observable<T[]> | T[] | undefined | null;
|
---|
49 | }
|
---|