Skip to content

Commit edcb9ed

Browse files
committed
fix(cdk/tree): fix build errors
1 parent 07058d1 commit edcb9ed

File tree

1 file changed

+23
-18
lines changed

1 file changed

+23
-18
lines changed

src/cdk/tree/tree.ts

Lines changed: 23 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -94,10 +94,10 @@ export class CdkTree<T, K = T> implements AfterContentChecked, CollectionViewer,
9494
private _dataSubscription: Subscription | null;
9595

9696
/** Level of nodes */
97-
private _levels: Map<T, number> = new Map<T, number>();
97+
private _levels: Map<K, number> = new Map<K, number>();
9898

9999
/** The immediate parents for a node. This is `null` if there is no parent. */
100-
private _parents: Map<T, T | null> = new Map<T, T | null>();
100+
private _parents: Map<K, T | null> = new Map<K, T | null>();
101101

102102
/**
103103
* The internal node groupings for each node; we use this, primarily for flattened trees, to
@@ -210,9 +210,6 @@ export class CdkTree<T, K = T> implements AfterContentChecked, CollectionViewer,
210210
new Map<K, CdkTreeNode<T, K>>(),
211211
);
212212

213-
/** The mapping between data nodes and the parent node. `null` if no parent. */
214-
private _parents: Map<K, T | null> = new Map<K, T | null>();
215-
216213
constructor(private _differs: IterableDiffers, private _changeDetectorRef: ChangeDetectorRef) {}
217214

218215
ngOnInit() {
@@ -343,8 +340,8 @@ export class CdkTree<T, K = T> implements AfterContentChecked, CollectionViewer,
343340
} else if (currentIndex == null) {
344341
viewContainer.remove(adjustedPreviousIndex!);
345342
const group = this._getNodeGroup(item.item);
346-
this._levels.delete(item.item);
347-
this._parents.delete(item.item);
343+
this._levels.delete(this._getExpansionKey(item.item));
344+
this._parents.delete(this._getExpansionKey(item.item));
348345
group.splice(group.indexOf(item.item), 1);
349346
} else {
350347
const view = viewContainer.get(adjustedPreviousIndex!);
@@ -393,21 +390,24 @@ export class CdkTree<T, K = T> implements AfterContentChecked, CollectionViewer,
393390
const levelAccessor = this._getLevelAccessor();
394391
if (levelAccessor) {
395392
context.level = levelAccessor(nodeData);
396-
} else if (typeof parentData !== 'undefined' && this._levels.has(parentData)) {
397-
context.level = this._levels.get(parentData)! + 1;
393+
} else if (
394+
typeof parentData !== 'undefined' &&
395+
this._levels.has(this._getExpansionKey(parentData))
396+
) {
397+
context.level = this._levels.get(this._getExpansionKey(parentData))! + 1;
398398
} else {
399399
context.level = 0;
400400
}
401-
this._levels.set(nodeData, context.level);
401+
this._levels.set(this._getExpansionKey(nodeData), context.level);
402402
const parent = parentData ?? this._findParentForNode(nodeData, index);
403-
this._parents.set(nodeData, parent);
403+
this._parents.set(this._getExpansionKey(nodeData), parent);
404404

405405
// Determine where to insert this new node into the group, then insert it.
406406
// We do this by looking at the previous node in our flattened node list. If it's in the same
407407
// group, we place the current node after. Otherwise, we place it at the start of the group.
408408
const currentGroup = this._groups.get(context.level) ?? new Map<T | null, T[]>();
409409
const group = currentGroup.get(parent) ?? [];
410-
const previousNode = this._dataNodes?.[index - 1];
410+
const previousNode = this._dataNodes.value?.[index - 1];
411411
const groupInsertionIndex = (previousNode && group.indexOf(previousNode) + 1) ?? 0;
412412
group.splice(groupInsertionIndex, 0, nodeData);
413413
currentGroup.set(parent, group);
@@ -616,8 +616,13 @@ export class CdkTree<T, K = T> implements AfterContentChecked, CollectionViewer,
616616
this._nodes.next(this._nodes.value);
617617
}
618618

619+
/**
620+
* For the given node, determine the level where this node appears in the tree.
621+
*
622+
* This is intended to be used for `aria-level` but is 0-indexed.
623+
*/
619624
_getLevel(node: T) {
620-
return this._levels.get(node);
625+
return this._levels.get(this._getExpansionKey(node));
621626
}
622627

623628
/**
@@ -764,8 +769,8 @@ export class CdkTree<T, K = T> implements AfterContentChecked, CollectionViewer,
764769
}
765770

766771
private _getNodeGroup(node: T) {
767-
const level = this._levels.get(node);
768-
const parent = this._parents.get(node);
772+
const level = this._levels.get(this._getExpansionKey(node));
773+
const parent = this._parents.get(this._getExpansionKey(node));
769774
const group = this._groups.get(level ?? 0)?.get(parent ?? null);
770775
return group ?? [node];
771776
}
@@ -777,10 +782,10 @@ export class CdkTree<T, K = T> implements AfterContentChecked, CollectionViewer,
777782
if (!this._dataNodes) {
778783
return null;
779784
}
780-
const currentLevel = this._levels.get(node) ?? 0;
785+
const currentLevel = this._levels.get(this._getExpansionKey(node)) ?? 0;
781786
for (let parentIndex = index; parentIndex >= 0; parentIndex--) {
782-
const parentNode = this._dataNodes[parentIndex];
783-
const parentLevel = this._levels.get(parentNode) ?? 0;
787+
const parentNode = this._dataNodes.value[parentIndex];
788+
const parentLevel = this._levels.get(this._getExpansionKey(parentNode)) ?? 0;
784789

785790
if (parentLevel < currentLevel) {
786791
return parentNode;

0 commit comments

Comments
 (0)