Skip to content

Commit d0f9cf7

Browse files
committed
2.3 - Adding loading effect for feed list
1 parent 04dea20 commit d0f9cf7

File tree

8 files changed

+77
-21
lines changed

8 files changed

+77
-21
lines changed

src/app/app.component.html

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,9 @@ <h1><span class="favicon-app"></span>YouTube Player v2.0</h1>
1212
<button id="linux-maximize" (click)="winClose();"></button>
1313
</div>
1414
</div>
15-
<button *ngIf="!_shared.isLogged" type="button" (click)="loginGoogle()">Login</button>
15+
<ng-container *ngIf="!_shared.isLogged">
16+
<button type="button" (click)="loginGoogle()">Login</button>
17+
</ng-container>
1618
<ng-container *ngIf="_shared.isLogged">
1719
<button type="button" (click)="logout()">Logout</button>
1820
</ng-container>

src/app/app.component.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -142,7 +142,7 @@ export class AppComponent implements OnInit {
142142
this.setDefaultPlayer();
143143
}
144144
});
145-
this.setSettings();
145+
this.setSettings();
146146
}
147147

148148
// ---------------- Init player ----------------

src/app/components/category/category.component.html

Lines changed: 25 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,29 @@
11
<ng-container *ngIf="loading">
2-
<div class="loading-app">
3-
<i class="fa fa-circle-o-notch fa-spin fa-2x fa-fw"></i>
4-
<span class="sr-only">Loading...</span>
2+
<div class="video-list-featured loading-featured">
3+
<div class="video-item">
4+
<div class="video-item-info">
5+
<div class="video-item-image"></div>
6+
</div>
7+
</div>
8+
</div>
9+
<div class="categories">
10+
<ng-container *ngFor="let i of [1,2,3,4,5,6,7,8,9,10]">
11+
<div id="category-{{i}}">
12+
<span class="trigger loading-featured"></span>
13+
</div>
14+
</ng-container>
15+
</div>
16+
<div class="feed-video-list grid-list loading-list">
17+
<div *ngFor="let i of [1,2,3,4]" class="video-item loading-featured-video-item">
18+
<div class="video-item-info">
19+
<div class="video-item-image"></div>
20+
<div class="video-item-content">
21+
</div>
22+
</div>
523
</div>
24+
</div>
625
</ng-container>
7-
<ng-container *ngIf="feedVideos">
26+
<ng-container *ngIf="feedVideos && !loading">
827
<div [ngStyle]="{'background-image': 'url(' + trendingFirst.bannerURL + ')'}" class="video-list-featured">
928
<div class="video-item" [attr.data-index]="0">
1029
<div class="video-item-info">
@@ -31,13 +50,9 @@
3150
</button>
3251
</div>
3352
</div>
34-
<!--
35-
<p>{{ trendingFirst.stats.subscribers | number:'1.0' }}</p>
36-
<p>{{ trendingFirst.stats.views | number:'1.0' }}</p>
37-
<p>{{ trendingFirst.stats.videoCount | number:'1.0' }}</p>-->
3853
</div>
3954
</ng-container>
40-
<div class="categories" *ngIf="categories">
55+
<div class="categories" *ngIf="categories && !loading">
4156
<ng-container *ngFor="let category of categories.items">
4257
<div *ngIf="category.id === currentCategory">
4358
<button type="button" (click)="resetCategories()" class="trigger back">
@@ -46,7 +61,6 @@
4661
</button>
4762
</div>
4863
<div *ngIf="category.snippet.assignable && categoriesBlocked.indexOf(category.id) === -1 && category.id !== currentCategory" id="category-{{category.id}}">
49-
<!-- (click)="getCategoriesVideos(category.id)" -->
5064
<a routerLink="/category/{{category.id}}" class="trigger">
5165
<span class="tooltip">{{category.snippet.title}}</span>
5266
<ng-container *ngIf="category.snippet.title === 'Film & Animation'">
@@ -83,7 +97,7 @@
8397
</div>
8498
</ng-container>
8599
</div>
86-
<div id="feed-video-list" class="video-list" [ngClass]="{'grid-list': !listGrid }">
100+
<div *ngIf="!loading" class="feed-video-list video-list" [ngClass]="{'grid-list': !listGrid }">
87101
<div *ngFor="let feedVideo of feedVideos; let i = index" [ngClass]="{'hidden-thumbnails': !thumbnails }" [attr.data-index]="i" class="video-item">
88102
<div class="video-item-info">
89103
<div *ngIf="thumbnails" class="video-item-image" [ngStyle]="{'background-image': 'url(' + feedVideo.snippet.thumbnails.medium.url +')'}"></div>

src/assets/scss/_loading.scss

Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,39 @@
1+
@keyframes placeHolderShimmer {
2+
0% {
3+
background-position: -800px 0;
4+
}
5+
100% {
6+
background-position: 800px 0;
7+
}
8+
}
9+
10+
.loading-featured {
11+
animation-duration: 1s;
12+
animation-fill-mode: forwards;
13+
animation-iteration-count: infinite;
14+
animation-name: placeHolderShimmer;
15+
animation-timing-function: linear;
16+
background: linear-gradient(to right,rgba(0,0,0,0.6) 8%,var(--c-base) 18%,rgba(0,0,0,0.6) 33%);
17+
background-size: 800px 104px;
18+
&-video-item {
19+
animation-duration: 1s;
20+
animation-fill-mode: forwards;
21+
animation-iteration-count: infinite;
22+
animation-name: placeHolderShimmer;
23+
animation-timing-function: linear;
24+
background: linear-gradient(to right,rgba(0,0,0,0.6) 8%,var(--c-base) 18%,rgba(0,0,0,0.6) 33%);
25+
background-size: 800px 104px;
26+
height: 180px;
27+
.video-item-image {
28+
display: none;
29+
}
30+
}
31+
&:before {
32+
display: none;
33+
}
34+
}
35+
36+
.loading-list {
37+
width: 100%;
38+
height: 100%;
39+
}

src/assets/scss/_responsive.scss

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,7 @@
4040
#app-container {
4141
height: calc(100% - 45px);
4242
}
43-
#feed-video-list {
43+
.feed-video-list {
4444
width: calc(100% - 20px);
4545
}
4646

@@ -68,7 +68,7 @@
6868
}
6969
}
7070

71-
#feed-video-list {
71+
.feed-video-list {
7272
&::-webkit-scrollbar {
7373
width: 8px;
7474
}
@@ -164,7 +164,7 @@
164164
}
165165
}
166166

167-
#feed-video-list {
167+
.feed-video-list {
168168
position: relative;
169169
width: 100%;
170170
}

src/assets/scss/_videos.scss

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -413,7 +413,7 @@ iframe {
413413
}
414414
}
415415

416-
#feed-video-list {
416+
.feed-video-list {
417417
top: inherit;
418418
bottom: 0;
419419
height: calc(100% - 270px);

src/assets/scss/main.scss

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,4 +20,5 @@
2020
}
2121

2222
@import 'responsive';
23-
@import 'app';
23+
@import 'app';
24+
@import 'loading';

src/assets/scss/theme/light.scss

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -78,15 +78,15 @@ nav {
7878
}
7979
}
8080

81-
#feed-video-list {
81+
.feed-video-list {
8282
&.grid-list .hidden-thumbnails {
8383
.video-item-info {
8484
background-color: rgba(0, 0, 0, 0.8);
8585
}
8686
}
8787
}
8888

89-
#feed-video-list,
89+
.feed-video-list,
9090
#related-video-list {
9191
.video-item {
9292
background-color: var(--c-soft-gray);
@@ -156,7 +156,7 @@ nav {
156156
color: rgba(255, 255, 255, 0.6);
157157
}
158158

159-
#feed-video-list {
159+
.feed-video-list {
160160
background-color: var(--c-white);
161161
&.grid-list {
162162
.video-item {

0 commit comments

Comments
 (0)