Skip to content

Commit 569f034

Browse files
committed
💄 show messages when no feeds found
1 parent 350fe49 commit 569f034

File tree

11 files changed

+98
-4
lines changed

11 files changed

+98
-4
lines changed
Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
import { IMessage } from "@interfaces/message.interface";
2+
3+
const pathRelative: string = '/assets/svg';
4+
5+
export const messages: IMessage[] = [
6+
{
7+
message: 'You want to see content here, you have to follow at least one website',
8+
imagePath: `${pathRelative}/follow.svg`,
9+
},
10+
{
11+
message: 'Here you can find your news saved',
12+
imagePath: `${pathRelative}/saved.svg`,
13+
},
14+
];
Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
export interface IMessage {
2+
message: string;
3+
imagePath: string;
4+
}

src/app/features/feed/pages/saved/saved.component.html

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,8 @@
88
<app-card-new></app-card-new>
99
<app-card-new></app-card-new>
1010
</div>
11-
<app-news-container [feeds]="feeds" *ngIf="!isLoading" (moreItems)="onScroll()"></app-news-container>
11+
<app-no-feeds *ngIf="!isLoading && feeds.length < 1" [messageIndex]="1"></app-no-feeds>
12+
<app-news-container [feeds]="feeds" *ngIf="!isLoading && feeds.length > 0" (moreItems)="onScroll()">
13+
</app-news-container>
1214
</div>
1315
</section>

src/app/features/home/home.component.html

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
<section class="recently">
33
<div class="title-wrapper">
44
<span class="title-section">Latest news</span>
5-
<a class="refresh" [class.loading]="isLoading" *ngIf="getSkip >= 10" (click)="reloadData()">
5+
<a class="refresh" [class.loading]="isLoading" *ngIf="getSkip >= 10 || feeds.length < 1" (click)="reloadData()">
66
<i class="bx bx-refresh"></i>
77
</a>
88
</div>
@@ -12,7 +12,9 @@
1212
<app-card-new></app-card-new>
1313
<app-card-new></app-card-new>
1414
</div>
15-
<app-news-container [recentFeed]="recentFeed" *ngIf="!isLoading" [feeds]="feeds" (moreItems)="onScroll()">
15+
<app-no-feeds *ngIf="!isLoading && feeds.length < 1" [messageIndex]="0"></app-no-feeds>
16+
<app-news-container [recentFeed]="recentFeed" *ngIf="!isLoading && feeds.length > 0" [feeds]="feeds"
17+
(moreItems)="onScroll()">
1618
</app-news-container>
1719
</div>
1820
</section>
Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,42 @@
1+
.no-feeds-container {
2+
width: 100%;
3+
height: calc(100vh - 100px);
4+
display: flex;
5+
text-align: center;
6+
flex-direction: column;
7+
justify-content: center;
8+
align-items: center;
9+
gap: 1rem;
10+
}
11+
12+
.no-feeds-container img {
13+
max-width: 30rem;
14+
border-radius: 1rem;
15+
}
16+
17+
.no-feeds-container .description {
18+
padding: 0 1rem;
19+
font-size: 32px;
20+
font-weight: bold;
21+
color: var(--primary-color);
22+
}
23+
24+
@media (max-width: 768) {
25+
.no-feeds-container img {
26+
max-width: 25rem;
27+
}
28+
.no-feeds-container .description {
29+
font-size: 28px;
30+
padding: 0;
31+
}
32+
}
33+
34+
@media (max-width: 480px) {
35+
.no-feeds-container img {
36+
max-width: 17rem;
37+
}
38+
.no-feeds-container .description {
39+
font-size: 24px;
40+
padding: 0;
41+
}
42+
}
Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
<div class="no-feeds-container">
2+
<img [src]="messageSelected.imagePath" alt="no-feeds">
3+
<span class="description">{{messageSelected.message}}</span>
4+
</div>
Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
import { Component, Input, OnInit } from '@angular/core';
2+
import { messages } from '@constants/messages.constant';
3+
import { IMessage } from '@interfaces/message.interface';
4+
5+
@Component({
6+
selector: 'app-no-feeds',
7+
templateUrl: './no-feeds.component.html',
8+
styleUrls: ['./no-feeds.component.css']
9+
})
10+
export class NoFeedsComponent implements OnInit {
11+
@Input() messageIndex: number = 0;
12+
public messageSelected: IMessage;
13+
constructor() {
14+
}
15+
16+
ngOnInit(): void {
17+
this.messageSelected = messages[+this.messageIndex];
18+
}
19+
20+
}

src/app/shared/shared.module.ts

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,13 +7,15 @@ import { NewsContainerComponent } from './news-container/news-container.componen
77
import { ButtonTopComponent } from './button-top/button-top.component';
88
import { ToggleThemeComponent } from './toggle-theme/toggle-theme.component';
99
import { NewCardRecentComponent } from './new-card-recent/new-card-recent.component';
10+
import { NoFeedsComponent } from './no-feeds/no-feeds.component';
1011

1112
@NgModule({
1213
declarations: [
1314
NewsContainerComponent,
1415
ButtonTopComponent,
1516
ToggleThemeComponent,
16-
NewCardRecentComponent
17+
NewCardRecentComponent,
18+
NoFeedsComponent,
1719
],
1820
imports: [
1921
CommonModule,
@@ -24,6 +26,7 @@ import { NewCardRecentComponent } from './new-card-recent/new-card-recent.compon
2426
NewsContainerComponent,
2527
ButtonTopComponent,
2628
ToggleThemeComponent,
29+
NoFeedsComponent
2730
]
2831
})
2932
export class SharedModule { }

src/assets/svg/follow.svg

Lines changed: 1 addition & 0 deletions
Loading

src/assets/svg/saved.svg

Lines changed: 1 addition & 0 deletions
Loading

0 commit comments

Comments
 (0)