Skip to content

Commit 6581c3d

Browse files
committed
wip: tree demo
1 parent c33b86e commit 6581c3d

File tree

6 files changed

+118
-3
lines changed

6 files changed

+118
-3
lines changed
Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
.example-tree-controls {
2+
display: flex;
3+
align-items: center;
4+
gap: 16px;
5+
margin-bottom: 16px;
6+
}
7+
8+
.example-tree-output {
9+
padding: 10px;
10+
margin-bottom: 16px;
11+
border: 1px solid var(--mat-sys-outline);
12+
border-radius: var(--mat-sys-corner-extra-small);
13+
}
14+
15+
.example-tree {
16+
padding: 10px;
17+
border: 1px solid var(--mat-sys-outline);
18+
border-radius: var(--mat-sys-corner-extra-small);
19+
}
20+
21+
.example-tree-item {
22+
cursor: pointer;
23+
user-select: none;
24+
list-style: none;
25+
}
26+
27+
.example-tree-item-content {
28+
display: flex;
29+
align-items: center;
30+
padding: 2px 0; /* Minimal padding for item itself */
31+
}
32+
33+
.example-tree-item-icon {
34+
margin-right: 8px;
35+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
<ul cdkTree>
2+
@for (node of treeData; track node) {
3+
<ng-template [ngTemplateOutlet]="treeNode" [ngTemplateOutletContext]="{node}"></ng-template>
4+
}
5+
</ul>
6+
7+
<ng-template #treeNode let-node>
8+
<li cdkTreeItem [value]="node.value">
9+
@if (node.children) {
10+
<ul cdkTreeItemGroup [value]="node.value">
11+
<ng-template cdkTreeItemGroupContent>
12+
@for (child of node.children; track child) {
13+
<ng-template
14+
[ngTemplateOutlet]="treeNode"
15+
[ngTemplateOutletContext]="{node: child}"
16+
></ng-template>
17+
}
18+
</ng-template>
19+
</ul>
20+
}
21+
</li>
22+
</ng-template>
Lines changed: 52 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,52 @@
1+
import {Component} from '@angular/core';
2+
import {NgTemplateOutlet} from '@angular/common';
3+
import {
4+
CdkTree,
5+
CdkTreeItem,
6+
CdkTreeItemGroup,
7+
CdkTreeItemGroupContent,
8+
} from '@angular/cdk-experimental/tree';
9+
10+
/** @title Tree using CdkTree and CdkTreeItem. */
11+
@Component({
12+
selector: 'cdk-tree-single-select-example',
13+
exportAs: 'cdkTreeSingleSelectExample',
14+
templateUrl: 'cdk-tree-single-select-example.html',
15+
styleUrl: 'cdk-tree-single-select-example.css',
16+
imports: [CdkTree, CdkTreeItem, CdkTreeItemGroup, CdkTreeItemGroupContent, NgTemplateOutlet],
17+
})
18+
export class CdkTreeSingleSelectExample {
19+
treeData = [
20+
{
21+
value: 'Fruits',
22+
children: [{value: 'Apple'}, {value: 'Banana'}, {value: 'Cherry'}],
23+
},
24+
{
25+
value: 'Vegetables',
26+
children: [{value: 'Asparagus'}, {value: 'Broccoli'}, {value: 'Carrot'}],
27+
},
28+
{
29+
value: 'Meat',
30+
children: [
31+
{
32+
value: 'Red Meat',
33+
children: [{value: 'Beef'}, {value: 'Goat'}, {value: 'Pork'}],
34+
},
35+
{
36+
value: 'Poultry',
37+
children: [{value: 'Chicken'}, {value: 'Turkey'}],
38+
},
39+
{
40+
value: 'Seafood',
41+
children: [
42+
{value: 'Bass'},
43+
{value: 'Crab'},
44+
{value: 'Lobster'},
45+
{value: 'Oyster'},
46+
{value: 'Shrimp'},
47+
],
48+
},
49+
],
50+
},
51+
];
52+
}
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1 +1,2 @@
11
export {CdkTreeExample} from './cdk-tree/cdk-tree-example';
2+
export {CdkTreeSingleSelectExample} from './cdk-tree-single-select/cdk-tree-single-select-example';
Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,9 @@
11
<div>
2+
<h4>Single Select</h4>
3+
<cdk-tree-single-select-example></cdk-tree-single-select-example>
4+
</div>
5+
6+
<!-- <div>
27
<h4>Tree View using UI Patterns</h4>
38
<cdk-tree-example></cdk-tree-example>
4-
</div>
9+
</div> -->

src/dev-app/cdk-experimental-tree/cdk-tree-demo.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,11 +7,11 @@
77
*/
88

99
import {ChangeDetectionStrategy, Component} from '@angular/core';
10-
import {CdkTreeExample} from '@angular/components-examples/cdk-experimental/tree';
10+
import {CdkTreeSingleSelectExample} from '@angular/components-examples/cdk-experimental/tree';
1111

1212
@Component({
1313
templateUrl: 'cdk-tree-demo.html',
14-
imports: [CdkTreeExample],
14+
imports: [CdkTreeSingleSelectExample],
1515
changeDetection: ChangeDetectionStrategy.OnPush,
1616
})
1717
export class CdkExperimentalTreeDemo {}

0 commit comments

Comments
 (0)