Skip to content

Commit 3701501

Browse files
committed
feat(cdk/tree): add examples, fix bugs
1 parent 46664b3 commit 3701501

File tree

3 files changed

+19
-5
lines changed

3 files changed

+19
-5
lines changed

src/cdk/tree/tree.ts

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -931,9 +931,9 @@ export class CdkTreeNode<T, K = T> implements OnDestroy, OnInit, TreeKeyManagerI
931931
}
932932
set isExpanded(isExpanded: boolean) {
933933
if (isExpanded) {
934-
this._tree.expand(this.data);
934+
this.expand();
935935
} else {
936-
this._tree.collapse(this.data);
936+
this.collapse();
937937
}
938938
}
939939

@@ -947,6 +947,10 @@ export class CdkTreeNode<T, K = T> implements OnDestroy, OnInit, TreeKeyManagerI
947947
@Output()
948948
readonly activation: EventEmitter<T> = new EventEmitter<T>();
949949

950+
/** This emits when the node's expansion status has been changed. */
951+
@Output()
952+
readonly expandedChange: EventEmitter<boolean> = new EventEmitter<boolean>();
953+
950954
/**
951955
* The most recently created `CdkTreeNode`. We save it in static variable so we can retrieve it
952956
* in `CdkTree` and set the data to it.
@@ -1042,11 +1046,13 @@ export class CdkTreeNode<T, K = T> implements OnDestroy, OnInit, TreeKeyManagerI
10421046
/** Collapses this data node. Implemented for TreeKeyManagerItem. */
10431047
collapse(): void {
10441048
this._tree.collapse(this._data);
1049+
this.expandedChange.emit(this.isExpanded);
10451050
}
10461051

10471052
/** Expands this data node. Implemented for TreeKeyManagerItem. */
10481053
expand(): void {
10491054
this._tree.expand(this._data);
1055+
this.expandedChange.emit(this.isExpanded);
10501056
}
10511057

10521058
_setTabFocusable() {

src/components-examples/cdk/tree/cdk-tree-flat/cdk-tree-flat-example.html

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22
<!-- This is the tree node template for leaf nodes -->
33
<cdk-tree-node *cdkTreeNodeDef="let node" cdkTreeNodePadding
44
[style.display]="shouldRender(node) ? 'flex' : 'none'"
5+
[isDisabled]="!shouldRender(node)"
56
class="example-tree-node">
67
<!-- use a disabled button to provide padding for tree leaf -->
78
<button mat-icon-button disabled></button>
@@ -10,10 +11,11 @@
1011
<!-- This is the tree node template for expandable nodes -->
1112
<cdk-tree-node *cdkTreeNodeDef="let node; when: hasChild" cdkTreeNodePadding
1213
[style.display]="shouldRender(node) ? 'flex' : 'none'"
14+
[isDisabled]="!shouldRender(node)"
15+
(expandedChange)="node.isExpanded = $event"
1316
class="example-tree-node">
1417
<button mat-icon-button cdkTreeNodeToggle
1518
[attr.aria-label]="'Toggle ' + node.name"
16-
(click)="node.isExpanded = !node.isExpanded"
1719
[style.visibility]="node.expandable ? 'visible' : 'hidden'">
1820
<mat-icon class="mat-icon-rtl-mirror">
1921
{{treeControl.isExpanded(node) ? 'expand_more' : 'chevron_right'}}

src/components-examples/cdk/tree/cdk-tree-nested/cdk-tree-nested-example.html

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,18 @@
11
<cdk-tree [dataSource]="dataSource" [treeControl]="treeControl">
22
<!-- This is the tree node template for leaf nodes -->
3-
<cdk-nested-tree-node *cdkTreeNodeDef="let node" class="example-tree-node">
3+
<cdk-nested-tree-node #treeNode="cdkNestedTreeNode"
4+
*cdkTreeNodeDef="let node"
5+
[isDisabled]="!!treeNode.getParent()?.isExpanded"
6+
class="example-tree-node">
47
<!-- use a disabled button to provide padding for tree leaf -->
58
<button mat-icon-button disabled></button>
69
{{node.name}}
710
</cdk-nested-tree-node>
811
<!-- This is the tree node template for expandable nodes -->
9-
<cdk-nested-tree-node *cdkTreeNodeDef="let node; when: hasChild" class="example-tree-node">
12+
<cdk-nested-tree-node #treeNode="cdkNestedTreeNode"
13+
*cdkTreeNodeDef="let node; when: hasChild"
14+
[isDisabled]="!!treeNode.getParent()?.isExpanded"
15+
class="example-tree-node">
1016
<button mat-icon-button [attr.aria-label]="'Toggle ' + node.name" cdkTreeNodeToggle>
1117
<mat-icon class="mat-icon-rtl-mirror">
1218
{{treeControl.isExpanded(node) ? 'expand_more' : 'chevron_right'}}

0 commit comments

Comments
 (0)