11< div class ="articles ">
2- < mat-grid-list cols ="4 ">
3- < mat-grid-tile *ngFor ="let article of articles | async ">
4- < mat-card class ="example-card ">
5- < mat-card-header >
6- < mat-card-title > {{article?.title}}</ mat-card-title >
7- </ mat-card-header >
8- < mat-card-content >
9- < p >
10- {{article?.description}}
11- </ p >
12- </ mat-card-content >
13- < mat-card-actions >
14- < button mat-button (click) ="selectedArticle(article) "> READ </ button >
15- </ mat-card-actions >
16- </ mat-card >
17- </ mat-grid-tile >
18- </ mat-grid-list >
2+ < section class ="section ">
3+ < div class ="container ">
4+ < div class ="columns ">
5+ < div class ="column is-two-thirds ">
6+ < mat-card class ="article " *ngFor ="let article of articles | async ">
7+ < mat-card-header >
8+ < mat-card-title >
9+ {{article?.title}}
10+ </ mat-card-title >
11+ < mat-card-subtitle >
12+ By {{article?.author?.name}}, {{article?.datePosted | date:'longDate'}}
13+ </ mat-card-subtitle >
14+ </ mat-card-header >
15+ < img class ="cover-photo " mat-card-image *ngIf ="article?.coverPhoto " src ="{{article?.coverPhoto}} " />
16+ < mat-card-content >
17+ {{article?.description}}
18+ </ mat-card-content >
19+ < mat-card-actions align ="end ">
20+ < button mat-button (click) ="selectedArticle(article) "> Continue Reading... </ button >
21+ </ mat-card-actions >
22+ </ mat-card >
23+ </ div >
24+ < div class ="column ">
25+ < mat-card class ="card-sections ">
26+ < mat-card-header >
27+ < mat-card-title > Search Articles By Title</ mat-card-title >
28+ </ mat-card-header >
29+ < mat-card-content >
30+ < mat-input-container class ="title-search ">
31+ < input matInput type ="text " placeholder ="Articles " [matAutocomplete] ="auto " #title (keyup) ="filterArticles(title.value) "/>
32+ < mat-autocomplete #auto ="matAutocomplete ">
33+ < mat-option class ="article-option " *ngFor ="let article of filteredArticles | async " [value] ="article.title " (onSelectionChange) ="articleSelected(article) ">
34+ {{ article.title }}
35+ </ mat-option >
36+ </ mat-autocomplete >
37+ </ mat-input-container >
38+ </ mat-card-content >
39+ </ mat-card >
40+ < mat-card class ="card-sections ">
41+ < mat-card-header >
42+ < mat-card-title > About</ mat-card-title >
43+ </ mat-card-header >
44+ < mat-card-content >
45+ < p >
46+ This site was developed by < a href ="https://github.com/pastorsj " target ="_blank "> Sam Pastoriza</ a >
47+ and < a href ="https://github.com/Prescientje " target ="_blank "> James Edwards</ a > .
48+ We wanted a blog that was self sustaining and easily modifiable.
49+ We are using the Angular framework developed by Google and a combination of
50+ Angular Material and Bulma to style and layout the site respectively. An express based
51+ backend application utilizes MongoDb and Redis to store data on users and articles. The
52+ blog is completely open-sourced on GitHub and contributers are more than welcome. The end goal
53+ is a fully functional blog mainly covering technical topics, but can be reused
54+ as a base for other blogs.
55+ </ p >
56+ </ mat-card-content >
57+ < mat-card-footer >
58+ < mat-list >
59+ < mat-list-item class ="repo ">
60+ < mat-icon mat-list-icon > developer_board</ mat-icon >
61+ < a mat-list-item href ="https://github.com/LighthouseBlog/Blog "> Blog </ a >
62+ </ mat-list-item >
63+ < mat-list-item class ="repo ">
64+ < mat-icon mat-list-icon > developer_board</ mat-icon >
65+ < a mat-list-item href ="https://github.com/pastorsj/blog-api "> Backend Api </ a >
66+ </ mat-list-item >
67+ </ mat-list >
68+ </ mat-card-footer >
69+ </ mat-card >
70+ < mat-card class ="card-sections ">
71+ < mat-card-header >
72+ < mat-card-title > Tags</ mat-card-title >
73+ </ mat-card-header >
74+ < mat-card-content >
75+ < tag *ngFor ="let tag of tags | async "
76+ (click) ="getArticlesByTag(tag) "
77+ [tag] ="tag "
78+ [fontSize] ="tagData[tag] "
79+ [maxSize] ="maxSize ">
80+ </ tag >
81+ </ mat-card-content >
82+ </ mat-card >
83+ </ div >
84+ </ div >
85+ </ div >
86+ </ section >
1987</ div >
0 commit comments