Skip to content

Commit 120e579

Browse files
committed
fix(cdk/tree): use findIndex instead of indexOf; fixes inconsistent aria-posinset
1 parent 07f3650 commit 120e579

File tree

1 file changed

+15
-6
lines changed

1 file changed

+15
-6
lines changed

src/cdk/tree/tree.ts

Lines changed: 15 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -451,9 +451,13 @@ export class CdkTree<T, K = T>
451451
} else if (currentIndex == null) {
452452
viewContainer.remove(adjustedPreviousIndex!);
453453
const group = this._getNodeGroup(item.item);
454-
this._levels.delete(this._getExpansionKey(item.item));
455-
this._parents.delete(this._getExpansionKey(item.item));
456-
group.splice(group.indexOf(item.item), 1);
454+
const key = this._getExpansionKey(item.item);
455+
this._levels.delete(key);
456+
this._parents.delete(key);
457+
group.splice(
458+
group.findIndex(groupItem => this._getExpansionKey(groupItem) === key),
459+
1,
460+
);
457461
} else {
458462
const view = viewContainer.get(adjustedPreviousIndex!);
459463
viewContainer.move(view!, currentIndex);
@@ -690,7 +694,8 @@ export class CdkTree<T, K = T>
690694
if (!expanded) {
691695
return [];
692696
}
693-
const startIndex = flattenedNodes.indexOf(dataNode);
697+
const key = this._getExpansionKey(dataNode);
698+
const startIndex = flattenedNodes.findIndex(node => this._getExpansionKey(node) === key);
694699
const level = levelAccessor(dataNode) + 1;
695700
const results: T[] = [];
696701

@@ -762,7 +767,8 @@ export class CdkTree<T, K = T>
762767
*/
763768
_getPositionInSet(dataNode: T) {
764769
const group = this._getNodeGroup(dataNode);
765-
return group.indexOf(dataNode) + 1;
770+
const key = this._getExpansionKey(dataNode);
771+
return group.findIndex(node => this._getExpansionKey(node) === key) + 1;
766772
}
767773

768774
/** Given a CdkTreeNode, gets the node that renders that node's parent's data. */
@@ -805,7 +811,10 @@ export class CdkTree<T, K = T>
805811
return observableOf(this.treeControl.getDescendants(dataNode));
806812
}
807813
if (this.levelAccessor) {
808-
const startIndex = this._flattenedNodes.value.indexOf(dataNode);
814+
const key = this._getExpansionKey(dataNode);
815+
const startIndex = this._flattenedNodes.value.findIndex(
816+
node => this._getExpansionKey(node) === key,
817+
);
809818
const results: T[] = [];
810819

811820
// Goes through flattened tree nodes in the `dataNodes` array, and get all descendants.

0 commit comments

Comments
 (0)