Skip to content

Commit 555ce3e

Browse files
committed
Angular Material In Depth - preparation for the material tree section
1 parent 7c29b79 commit 555ce3e

File tree

5 files changed

+130
-2
lines changed

5 files changed

+130
-2
lines changed

src/app/app-routing.module.ts

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ import {CourseComponent} from "./course/course.component";
66
import {CourseResolver} from "./services/course.resolver";
77
import {CreateCourseComponent} from './create-course/create-course.component';
88
import {DragDropComponent} from './drag-drop/drag-drop.component';
9+
import {TreeDemoComponent} from './tree-demo/tree-demo.component';
910

1011
const routes: Routes = [
1112
{
@@ -31,6 +32,10 @@ const routes: Routes = [
3132
{
3233
path: "drag-drop-example",
3334
component: DragDropComponent
35+
},
36+
{
37+
path: "tree-demo",
38+
component: TreeDemoComponent
3439
},
3540
{
3641
path: "**",

src/app/app.module.ts

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -43,6 +43,8 @@ import {DragDropModule} from '@angular/cdk/drag-drop';
4343
import {DragDropComponent} from './drag-drop/drag-drop.component';
4444

4545
import {MatGridListModule} from '@angular/material/grid-list';
46+
import {TreeDemoComponent} from './tree-demo/tree-demo.component';
47+
import {MatTreeModule} from '@angular/material/tree';
4648

4749
@NgModule({
4850
declarations: [
@@ -55,7 +57,8 @@ import {MatGridListModule} from '@angular/material/grid-list';
5557
CreateCourseComponent,
5658
CreateCourseStep1Component,
5759
CreateCourseStep2Component,
58-
DragDropComponent
60+
DragDropComponent,
61+
TreeDemoComponent
5962
],
6063
imports: [
6164
BrowserModule,
@@ -86,7 +89,8 @@ import {MatGridListModule} from '@angular/material/grid-list';
8689
MatDatepickerModule,
8790
MatNativeDateModule,
8891
ReactiveFormsModule,
89-
MatGridListModule
92+
MatGridListModule,
93+
MatTreeModule
9094
],
9195
providers: [
9296
CoursesService,
Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
2+
<div class="tree-demo-container">
3+
4+
<h3>Nested Tree Demo</h3>
5+
6+
<h3>Flat Tree Demo</h3>
7+
8+
</div>
Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,43 @@
1+
2+
3+
.tree-demo-container {
4+
font-family: "Roboto";
5+
display: flex;
6+
flex-direction: column;
7+
justify-content: center;
8+
padding: 30px;
9+
}
10+
11+
.leaf-node {
12+
padding-left: 30px;
13+
}
14+
15+
16+
17+
18+
.example-tree-invisible {
19+
display: none;
20+
}
21+
22+
.example-tree ul,
23+
.example-tree li {
24+
margin-top: 0;
25+
margin-bottom: 0;
26+
list-style-type: none;
27+
}
28+
29+
/*
30+
* This padding sets alignment of the nested nodes.
31+
*/
32+
.example-tree .mat-nested-tree-node div[role=group] {
33+
padding-left: 40px;
34+
}
35+
36+
/*
37+
* Padding for leaf nodes.
38+
* Leaf nodes need to have padding so as to align with other non-leaf nodes
39+
* under the same parent.
40+
*/
41+
.example-tree div[role=group] > .mat-tree-node {
42+
padding-left: 40px;
43+
}
Lines changed: 68 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,68 @@
1+
import {Component, OnInit} from '@angular/core';
2+
import {MatTreeFlatDataSource, MatTreeFlattener, MatTreeNestedDataSource} from '@angular/material/tree';
3+
import {FlatTreeControl, NestedTreeControl} from '@angular/cdk/tree';
4+
5+
interface CourseNode {
6+
name: string;
7+
children?: CourseNode[];
8+
}
9+
10+
const TREE_DATA: CourseNode[] = [
11+
{
12+
name: 'Angular For Beginners',
13+
children: [
14+
{
15+
name: 'Introduction to Angular'
16+
},
17+
{
18+
name: 'Angular Component @Input()'
19+
},
20+
{
21+
name: 'Angular Component @Output()'
22+
}
23+
],
24+
},
25+
{
26+
name: 'Angular Material In Depth',
27+
children: [
28+
{
29+
name: 'Introduction to Angular Material',
30+
children: [
31+
{
32+
name: 'Form Components'
33+
},
34+
{
35+
name: 'Navigation and Containers'
36+
}
37+
],
38+
},
39+
{
40+
name: 'Advanced Angular Material',
41+
children: [
42+
{
43+
name: 'Custom Themes'
44+
},
45+
{
46+
name: 'Tree Components'
47+
}
48+
],
49+
},
50+
],
51+
},
52+
];
53+
54+
@Component({
55+
selector: 'tree-demo',
56+
templateUrl: 'tree-demo.component.html',
57+
styleUrls: ['tree-demo.component.scss']
58+
})
59+
export class TreeDemoComponent implements OnInit {
60+
61+
ngOnInit() {
62+
63+
64+
}
65+
66+
}
67+
68+

0 commit comments

Comments
 (0)