Skip to content

Commit 0fa12ae

Browse files
crisbetojelbourn
authored andcommitted
docs(tree): fix example that shows empty checklists as selected (#20106)
We determine whether a node is selected in the checklist example using `Array.prototype.every`, but the problem is that `every` returns true for empty arrays which looks weird in our example. Fixes #20085. (cherry picked from commit 75e0612)
1 parent d62c70d commit 0fa12ae

File tree

1 file changed

+8
-10
lines changed

1 file changed

+8
-10
lines changed

src/components-examples/material/tree/tree-checklist/tree-checklist-example.ts

Lines changed: 8 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -162,7 +162,7 @@ export class TreeChecklistExample {
162162
: new TodoItemFlatNode();
163163
flatNode.item = node.item;
164164
flatNode.level = level;
165-
flatNode.expandable = !!node.children;
165+
flatNode.expandable = !!node.children?.length;
166166
this.flatNodeMap.set(flatNode, node);
167167
this.nestedNodeMap.set(node, flatNode);
168168
return flatNode;
@@ -171,9 +171,9 @@ export class TreeChecklistExample {
171171
/** Whether all the descendants of the node are selected. */
172172
descendantsAllSelected(node: TodoItemFlatNode): boolean {
173173
const descendants = this.treeControl.getDescendants(node);
174-
const descAllSelected = descendants.every(child =>
175-
this.checklistSelection.isSelected(child)
176-
);
174+
const descAllSelected = descendants.length > 0 && descendants.every(child => {
175+
return this.checklistSelection.isSelected(child);
176+
});
177177
return descAllSelected;
178178
}
179179

@@ -193,9 +193,7 @@ export class TreeChecklistExample {
193193
: this.checklistSelection.deselect(...descendants);
194194

195195
// Force update for the parent
196-
descendants.every(child =>
197-
this.checklistSelection.isSelected(child)
198-
);
196+
descendants.forEach(child => this.checklistSelection.isSelected(child));
199197
this.checkAllParentsSelection(node);
200198
}
201199

@@ -218,9 +216,9 @@ export class TreeChecklistExample {
218216
checkRootNodeSelection(node: TodoItemFlatNode): void {
219217
const nodeSelected = this.checklistSelection.isSelected(node);
220218
const descendants = this.treeControl.getDescendants(node);
221-
const descAllSelected = descendants.every(child =>
222-
this.checklistSelection.isSelected(child)
223-
);
219+
const descAllSelected = descendants.length > 0 && descendants.every(child => {
220+
return this.checklistSelection.isSelected(child);
221+
});
224222
if (nodeSelected && !descAllSelected) {
225223
this.checklistSelection.deselect(node);
226224
} else if (!nodeSelected && descAllSelected) {

0 commit comments

Comments
 (0)