Skip to content

Commit 46664b3

Browse files
committed
feat(cdk/tree): flatten data that uses childrenAccessor
1 parent 02903e0 commit 46664b3

File tree

1 file changed

+26
-1
lines changed

1 file changed

+26
-1
lines changed

src/cdk/tree/tree.ts

Lines changed: 26 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,16 @@ import {
4343
Subject,
4444
Subscription,
4545
} from 'rxjs';
46-
import {concatMap, map, reduce, startWith, switchMap, take, takeUntil} from 'rxjs/operators';
46+
import {
47+
concatMap,
48+
map,
49+
pairwise,
50+
reduce,
51+
startWith,
52+
switchMap,
53+
take,
54+
takeUntil,
55+
} from 'rxjs/operators';
4756
import {TreeControl} from './control/tree-control';
4857
import {CdkTreeNodeDef, CdkTreeNodeOutletContext} from './node';
4958
import {CdkTreeNodeOutlet} from './outlet';
@@ -864,6 +873,22 @@ export class CdkTree<T, K = T> implements AfterContentChecked, CollectionViewer,
864873
}
865874
return null;
866875
}
876+
877+
private _flattenChildren(nodes: readonly T[]): Observable<readonly T[]> {
878+
// If we're using TreeControl or levelAccessor, we don't need to manually
879+
// flatten things here.
880+
if (!this.childrenAccessor) {
881+
return observableOf(nodes);
882+
} else {
883+
return observableOf(...nodes).pipe(
884+
concatMap(node => concat(observableOf([node]), this._getAllChildrenRecursively(node))),
885+
reduce((results, nodes) => {
886+
results.push(...nodes);
887+
return results;
888+
}, [] as T[]),
889+
);
890+
}
891+
}
867892
}
868893

869894
/**

0 commit comments

Comments
 (0)