Skip to content

Commit 8ea3558

Browse files
authored
fix(tree): allow use of FlatTreeControl's trackBy function in MatTreeFlatDataSource and MatTreeFlattener (#19600)
* Allow use of FlatTreeControl's trackBy function in MatTreeFlatDataSource and MatTreeFlattener * Update public API goldens
1 parent e2c7e1a commit 8ea3558

File tree

2 files changed

+9
-9
lines changed

2 files changed

+9
-9
lines changed

src/material/tree/data-source/flat-data-source.ts

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,7 @@ import {map, take} from 'rxjs/operators';
4545
* }
4646
* and the output flattened type is `F` with additional information.
4747
*/
48-
export class MatTreeFlattener<T, F> {
48+
export class MatTreeFlattener<T, F, K = F> {
4949

5050
constructor(public transformFunction: (node: T, level: number) => F,
5151
public getLevel: (node: F) => number,
@@ -97,7 +97,7 @@ export class MatTreeFlattener<T, F> {
9797
* Expand flattened node with current expansion status.
9898
* The returned list may have different length.
9999
*/
100-
expandFlattenedNodes(nodes: F[], treeControl: TreeControl<F>): F[] {
100+
expandFlattenedNodes(nodes: F[], treeControl: TreeControl<F, K>): F[] {
101101
let results: F[] = [];
102102
let currentExpand: boolean[] = [];
103103
currentExpand[0] = true;
@@ -126,7 +126,7 @@ export class MatTreeFlattener<T, F> {
126126
* The nested tree nodes of type `T` are flattened through `MatTreeFlattener`, and converted
127127
* to type `F` for `MatTree` to consume.
128128
*/
129-
export class MatTreeFlatDataSource<T, F> extends DataSource<F> {
129+
export class MatTreeFlatDataSource<T, F, K = F> extends DataSource<F> {
130130
_flattenedData = new BehaviorSubject<F[]>([]);
131131

132132
_expandedData = new BehaviorSubject<F[]>([]);
@@ -139,8 +139,8 @@ export class MatTreeFlatDataSource<T, F> extends DataSource<F> {
139139
this._treeControl.dataNodes = this._flattenedData.value;
140140
}
141141

142-
constructor(private _treeControl: FlatTreeControl<F>,
143-
private _treeFlattener: MatTreeFlattener<T, F>,
142+
constructor(private _treeControl: FlatTreeControl<F, K>,
143+
private _treeFlattener: MatTreeFlattener<T, F, K>,
144144
initialData: T[] = []) {
145145
super();
146146
this._data = new BehaviorSubject<T[]>(initialData);

tools/public_api_guard/material/tree.d.ts

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -21,26 +21,26 @@ export declare class MatTree<T> extends CdkTree<T> {
2121
static ɵfac: i0.ɵɵFactoryDef<MatTree<any>, never>;
2222
}
2323

24-
export declare class MatTreeFlatDataSource<T, F> extends DataSource<F> {
24+
export declare class MatTreeFlatDataSource<T, F, K = F> extends DataSource<F> {
2525
_data: BehaviorSubject<T[]>;
2626
_expandedData: BehaviorSubject<F[]>;
2727
_flattenedData: BehaviorSubject<F[]>;
2828
get data(): T[];
2929
set data(value: T[]);
30-
constructor(_treeControl: FlatTreeControl<F>, _treeFlattener: MatTreeFlattener<T, F>, initialData?: T[]);
30+
constructor(_treeControl: FlatTreeControl<F, K>, _treeFlattener: MatTreeFlattener<T, F, K>, initialData?: T[]);
3131
connect(collectionViewer: CollectionViewer): Observable<F[]>;
3232
disconnect(): void;
3333
}
3434

35-
export declare class MatTreeFlattener<T, F> {
35+
export declare class MatTreeFlattener<T, F, K = F> {
3636
getChildren: (node: T) => Observable<T[]> | T[] | undefined | null;
3737
getLevel: (node: F) => number;
3838
isExpandable: (node: F) => boolean;
3939
transformFunction: (node: T, level: number) => F;
4040
constructor(transformFunction: (node: T, level: number) => F, getLevel: (node: F) => number, isExpandable: (node: F) => boolean, getChildren: (node: T) => Observable<T[]> | T[] | undefined | null);
4141
_flattenChildren(children: T[], level: number, resultNodes: F[], parentMap: boolean[]): void;
4242
_flattenNode(node: T, level: number, resultNodes: F[], parentMap: boolean[]): F[];
43-
expandFlattenedNodes(nodes: F[], treeControl: TreeControl<F>): F[];
43+
expandFlattenedNodes(nodes: F[], treeControl: TreeControl<F, K>): F[];
4444
flattenNodes(structuredData: T[]): F[];
4545
}
4646

0 commit comments

Comments
 (0)