@@ -5,72 +5,117 @@ import { Observable, switchMap } from "rxjs";
55import { Post } from "src/app/models/post" ;
66import { BlogService } from "../../services/blog.service" ;
77
8+ import { MatCardModule } from '@angular/material/card' ;
9+
810@Component ( {
911 selector : "app-series" ,
1012 standalone : true ,
11- imports : [ RouterLink , AsyncPipe , SlicePipe ] ,
13+ imports : [ RouterLink , AsyncPipe , SlicePipe , MatCardModule ] ,
1214 template : `
1315 <div class="series-view">
1416 <div class="cards-wrapper grid">
1517 @for (post of postsInSeries$ | async; track post) {
16- <a [routerLink]="['/post', post.slug]" class="card">
17- <div class="card-image">
18- <img [src]="post.coverImage.url" />
19- </div>
20- <div class="card-title">
21- <h3>
22- {{
23- post.title.length > 90
24- ? (post.title | slice : 0 : 90) + "..."
25- : post.title
26- }}
27- </h3>
28- </div>
29- </a>
18+ <mat-card>
19+ <a [routerLink]="['/post', post.slug]">
20+ <div class="card-image">
21+ <img [src]="post.coverImage.url" />
22+ </div>
23+ <div class="card-title">
24+ <h3>
25+ {{
26+ post.title.length > 90
27+ ? (post.title | slice : 0 : 90) + "..."
28+ : post.title
29+ }}
30+ </h3>
31+ </div>
32+ </a>
33+ </mat-card>
3034 }
3135 </div>
3236 </div>
3337 ` ,
34- styles : [
35- `
36- .series-view {
37- width: 80vw;
38- min-height: 67.2vh;
39- padding: 0.5rem 0;
40- margin: 0 auto 2rem;
38+ styles : [
39+ `
40+ .series-view {
41+ display: flex;
42+ align-items: center;
43+ justify-content: center;
44+ min-height: 67.2vh;
45+ padding: 0.5rem 0;
46+
47+ .layout-control {
48+ display: flex;
49+ justify-content: flex-end;
50+ }
51+
52+ .cards-wrapper {
53+ display: flex;
54+ flex-wrap: wrap;
55+ justify-content: center;
56+ margin: 2rem 1rem;
57+
58+ mat-card {
59+ width: 25rem;
60+ margin: 1rem;
61+ padding: 0;
62+ cursor: pointer;
63+
64+ &:hover {
65+ transform: scale(1.01);
66+ box-shadow: 0 4px 8px #00000033;
67+ transition: all 0.3s ease-in-out;
68+ }
4169
42- .layout-control {
43- display: flex;
44- justify-content: flex-end;
45- }
70+ a {
71+ padding: 0;
72+ margin: 0;
4673
47- .cards-wrapper {
48- display: flex;
49- flex-wrap: wrap;
50- justify-content: center;
51- margin: 2rem 1rem 1rem;
74+ .card-image {
75+ width: 25rem;
76+ border-radius: 0.3rem;
77+ overflow: hidden;
5278
53- &.grid {
54- .card {
55- &:hover {
56- transform: scale(1.1);
57- transition: all 0.3s ease-in-out;
58- }
59- }
60- }
61- }
79+ img {
80+ width: 100%;
81+ object-fit: cover;
82+ }
83+ }
6284
63- .load-more-posts {
64- display: flex;
65- justify-content: center;
66- button {
67- font-size: 1rem;
68- text-transform: uppercase;
69- }
70- }
71- }
72- ` ,
73- ] ,
85+ .card-title {
86+ padding: 0 1rem;
87+ }
88+ }
89+ }
90+ }
91+ }
92+
93+ @media (max-width: 600px) {
94+ .series-view {
95+ align-items: flex-start;
96+
97+ .cards-wrapper {
98+ width: 90vw;
99+ mat-card {
100+ width: 90%;
101+ margin: 0.5rem 0;
102+ a {
103+ .card-image {
104+ width: unset;
105+ }
106+
107+ .card-title {
108+ h3 {
109+ font-size: 1.1rem;
110+ }
111+ }
112+ }
113+ }
114+ }
115+ }
116+ }
117+ ` ,
118+ ] ,
74119} )
75120export default class SeriesComponent implements OnInit {
76121 blogURL ! : string ;
0 commit comments