mirror of
https://github.com/Raghu-Ch/InventoryApp.git
synced 2026-02-10 04:43:02 -05:00
add spinner
This commit is contained in:
@@ -19,6 +19,7 @@ import { PageNotFoundComponent } from './page-not-found/page-not-found.component
|
||||
import { HomeComponent } from './home/home.component';
|
||||
import { ProductComponent } from './product/product.component';
|
||||
import { ProductDetailComponent } from './product/product-detail.component';
|
||||
// import { LoadSpinnerComponent } from './load-spinner/load-spinner.component';
|
||||
|
||||
const appRoutes: Routes = [
|
||||
{ path: 'home', component: HomeComponent },
|
||||
|
||||
244
src/app/load-spinner/load-spinner.component.css
Normal file
244
src/app/load-spinner/load-spinner.component.css
Normal file
@@ -0,0 +1,244 @@
|
||||
/* .spinner {
|
||||
margin: 100px auto;
|
||||
width: 50px;
|
||||
height: 40px;
|
||||
text-align: center;
|
||||
font-size: 10px;
|
||||
}
|
||||
|
||||
.spinner>div {
|
||||
background-color: #333;
|
||||
height: 100%;
|
||||
width: 6px;
|
||||
display: inline-block;
|
||||
|
||||
-webkit-animation: sk-stretchdelay 1.2s infinite ease-in-out;
|
||||
animation: sk-stretchdelay 1.2s infinite ease-in-out;
|
||||
}
|
||||
|
||||
.spinner .rect2 {
|
||||
-webkit-animation-delay: -1.1s;
|
||||
animation-delay: -1.1s;
|
||||
}
|
||||
|
||||
.spinner .rect3 {
|
||||
-webkit-animation-delay: -1.0s;
|
||||
animation-delay: -1.0s;
|
||||
}
|
||||
|
||||
.spinner .rect4 {
|
||||
-webkit-animation-delay: -0.9s;
|
||||
animation-delay: -0.9s;
|
||||
}
|
||||
|
||||
.spinner .rect5 {
|
||||
-webkit-animation-delay: -0.8s;
|
||||
animation-delay: -0.8s;
|
||||
}
|
||||
|
||||
@-webkit-keyframes sk-stretchdelay {
|
||||
|
||||
0%,
|
||||
40%,
|
||||
100% {
|
||||
-webkit-transform: scaleY(0.4)
|
||||
}
|
||||
|
||||
20% {
|
||||
-webkit-transform: scaleY(1.0)
|
||||
}
|
||||
}
|
||||
|
||||
@keyframes sk-stretchdelay {
|
||||
|
||||
0%,
|
||||
40%,
|
||||
100% {
|
||||
transform: scaleY(0.4);
|
||||
-webkit-transform: scaleY(0.4);
|
||||
}
|
||||
|
||||
20% {
|
||||
transform: scaleY(1.0);
|
||||
-webkit-transform: scaleY(1.0);
|
||||
}
|
||||
}
|
||||
*/
|
||||
|
||||
.sk-circle {
|
||||
margin: 100px auto;
|
||||
width: 40px;
|
||||
height: 40px;
|
||||
position: relative;
|
||||
}
|
||||
|
||||
.sk-circle .sk-child {
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
position: absolute;
|
||||
left: 0;
|
||||
top: 0;
|
||||
}
|
||||
|
||||
.sk-circle .sk-child:before {
|
||||
content: '';
|
||||
display: block;
|
||||
margin: 0 auto;
|
||||
width: 15%;
|
||||
height: 15%;
|
||||
background-color: #333;
|
||||
border-radius: 100%;
|
||||
-webkit-animation: sk-circleBounceDelay 1.2s infinite ease-in-out both;
|
||||
animation: sk-circleBounceDelay 1.2s infinite ease-in-out both;
|
||||
}
|
||||
|
||||
.sk-circle .sk-circle2 {
|
||||
-webkit-transform: rotate(30deg);
|
||||
-ms-transform: rotate(30deg);
|
||||
transform: rotate(30deg);
|
||||
}
|
||||
|
||||
.sk-circle .sk-circle3 {
|
||||
-webkit-transform: rotate(60deg);
|
||||
-ms-transform: rotate(60deg);
|
||||
transform: rotate(60deg);
|
||||
}
|
||||
|
||||
.sk-circle .sk-circle4 {
|
||||
-webkit-transform: rotate(90deg);
|
||||
-ms-transform: rotate(90deg);
|
||||
transform: rotate(90deg);
|
||||
}
|
||||
|
||||
.sk-circle .sk-circle5 {
|
||||
-webkit-transform: rotate(120deg);
|
||||
-ms-transform: rotate(120deg);
|
||||
transform: rotate(120deg);
|
||||
}
|
||||
|
||||
.sk-circle .sk-circle6 {
|
||||
-webkit-transform: rotate(150deg);
|
||||
-ms-transform: rotate(150deg);
|
||||
transform: rotate(150deg);
|
||||
}
|
||||
|
||||
.sk-circle .sk-circle7 {
|
||||
-webkit-transform: rotate(180deg);
|
||||
-ms-transform: rotate(180deg);
|
||||
transform: rotate(180deg);
|
||||
}
|
||||
|
||||
.sk-circle .sk-circle8 {
|
||||
-webkit-transform: rotate(210deg);
|
||||
-ms-transform: rotate(210deg);
|
||||
transform: rotate(210deg);
|
||||
}
|
||||
|
||||
.sk-circle .sk-circle9 {
|
||||
-webkit-transform: rotate(240deg);
|
||||
-ms-transform: rotate(240deg);
|
||||
transform: rotate(240deg);
|
||||
}
|
||||
|
||||
.sk-circle .sk-circle10 {
|
||||
-webkit-transform: rotate(270deg);
|
||||
-ms-transform: rotate(270deg);
|
||||
transform: rotate(270deg);
|
||||
}
|
||||
|
||||
.sk-circle .sk-circle11 {
|
||||
-webkit-transform: rotate(300deg);
|
||||
-ms-transform: rotate(300deg);
|
||||
transform: rotate(300deg);
|
||||
}
|
||||
|
||||
.sk-circle .sk-circle12 {
|
||||
-webkit-transform: rotate(330deg);
|
||||
-ms-transform: rotate(330deg);
|
||||
transform: rotate(330deg);
|
||||
}
|
||||
|
||||
.sk-circle .sk-circle2:before {
|
||||
-webkit-animation-delay: -1.1s;
|
||||
animation-delay: -1.1s;
|
||||
}
|
||||
|
||||
.sk-circle .sk-circle3:before {
|
||||
-webkit-animation-delay: -1s;
|
||||
animation-delay: -1s;
|
||||
}
|
||||
|
||||
.sk-circle .sk-circle4:before {
|
||||
-webkit-animation-delay: -0.9s;
|
||||
animation-delay: -0.9s;
|
||||
}
|
||||
|
||||
.sk-circle .sk-circle5:before {
|
||||
-webkit-animation-delay: -0.8s;
|
||||
animation-delay: -0.8s;
|
||||
}
|
||||
|
||||
.sk-circle .sk-circle6:before {
|
||||
-webkit-animation-delay: -0.7s;
|
||||
animation-delay: -0.7s;
|
||||
}
|
||||
|
||||
.sk-circle .sk-circle7:before {
|
||||
-webkit-animation-delay: -0.6s;
|
||||
animation-delay: -0.6s;
|
||||
}
|
||||
|
||||
.sk-circle .sk-circle8:before {
|
||||
-webkit-animation-delay: -0.5s;
|
||||
animation-delay: -0.5s;
|
||||
}
|
||||
|
||||
.sk-circle .sk-circle9:before {
|
||||
-webkit-animation-delay: -0.4s;
|
||||
animation-delay: -0.4s;
|
||||
}
|
||||
|
||||
.sk-circle .sk-circle10:before {
|
||||
-webkit-animation-delay: -0.3s;
|
||||
animation-delay: -0.3s;
|
||||
}
|
||||
|
||||
.sk-circle .sk-circle11:before {
|
||||
-webkit-animation-delay: -0.2s;
|
||||
animation-delay: -0.2s;
|
||||
}
|
||||
|
||||
.sk-circle .sk-circle12:before {
|
||||
-webkit-animation-delay: -0.1s;
|
||||
animation-delay: -0.1s;
|
||||
}
|
||||
|
||||
@-webkit-keyframes sk-circleBounceDelay {
|
||||
|
||||
0%,
|
||||
80%,
|
||||
100% {
|
||||
-webkit-transform: scale(0);
|
||||
transform: scale(0);
|
||||
}
|
||||
|
||||
40% {
|
||||
-webkit-transform: scale(1);
|
||||
transform: scale(1);
|
||||
}
|
||||
}
|
||||
|
||||
@keyframes sk-circleBounceDelay {
|
||||
|
||||
0%,
|
||||
80%,
|
||||
100% {
|
||||
-webkit-transform: scale(0);
|
||||
transform: scale(0);
|
||||
}
|
||||
|
||||
40% {
|
||||
-webkit-transform: scale(1);
|
||||
transform: scale(1);
|
||||
}
|
||||
}
|
||||
22
src/app/load-spinner/load-spinner.component.html
Normal file
22
src/app/load-spinner/load-spinner.component.html
Normal file
@@ -0,0 +1,22 @@
|
||||
<!-- <div class="spinner">
|
||||
<div class="rect1"></div>
|
||||
<div class="rect2"></div>
|
||||
<div class="rect3"></div>
|
||||
<div class="rect4"></div>
|
||||
<div class="rect5"></div>
|
||||
</div> -->
|
||||
|
||||
<div class="sk-circle">
|
||||
<div class="sk-circle1 sk-child"></div>
|
||||
<div class="sk-circle2 sk-child"></div>
|
||||
<div class="sk-circle3 sk-child"></div>
|
||||
<div class="sk-circle4 sk-child"></div>
|
||||
<div class="sk-circle5 sk-child"></div>
|
||||
<div class="sk-circle6 sk-child"></div>
|
||||
<div class="sk-circle7 sk-child"></div>
|
||||
<div class="sk-circle8 sk-child"></div>
|
||||
<div class="sk-circle9 sk-child"></div>
|
||||
<div class="sk-circle10 sk-child"></div>
|
||||
<div class="sk-circle11 sk-child"></div>
|
||||
<div class="sk-circle12 sk-child"></div>
|
||||
</div>
|
||||
8
src/app/load-spinner/load-spinner.component.ts
Normal file
8
src/app/load-spinner/load-spinner.component.ts
Normal file
@@ -0,0 +1,8 @@
|
||||
import { Component } from '@angular/core';
|
||||
|
||||
@Component({
|
||||
selector: 'app-load-spinner',
|
||||
templateUrl: './load-spinner.component.html',
|
||||
styleUrls: ['./load-spinner.component.css']
|
||||
})
|
||||
export class LoadSpinnerComponent { }
|
||||
@@ -2,3 +2,6 @@ section {
|
||||
width: 60%;
|
||||
margin: 10px auto 0 auto;
|
||||
}
|
||||
.content {
|
||||
width: 50%;
|
||||
}
|
||||
@@ -1,3 +1,8 @@
|
||||
<section>
|
||||
<div class="content">
|
||||
<h3>{{currentProduct.productName}}</h3>
|
||||
<p>Brand: {{currentProduct.brand}}</p>
|
||||
<p>$ {{currentProduct.price}}</p>
|
||||
<p>{{currentProduct.category}}</p>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
@@ -20,7 +20,8 @@ export class ProductDetailComponent implements OnInit {
|
||||
|
||||
getProductDetails(): void {
|
||||
const id = this.route.snapshot.paramMap.get('id');
|
||||
// console.log(id);
|
||||
// const id$ = this.route.params.subscribe(params => console.log(params['id']));
|
||||
// console.log(id$);
|
||||
this.productService.getProduct(id).subscribe((res) => {
|
||||
this.currentProduct = res;
|
||||
console.log(this.currentProduct);
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
<app-load-spinner *ngIf="showSpinner"></app-load-spinner>
|
||||
<section fxFlex=50 class="aligner">
|
||||
<mat-card *ngFor="let product of products" [routerLink]="['/product', product._id]" routerLinkActive="router-link-active">
|
||||
{{product.productName}}</mat-card>
|
||||
</section>
|
||||
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
import { Component, OnInit } from '@angular/core';
|
||||
import { Router } from '@angular/router';
|
||||
|
||||
import { ProductService } from '../product/product.service';
|
||||
import { Product } from './product';
|
||||
|
||||
@@ -10,6 +11,7 @@ import { Product } from './product';
|
||||
})
|
||||
export class ProductComponent implements OnInit {
|
||||
products: Product[];
|
||||
showSpinner = true;
|
||||
|
||||
constructor(private productService: ProductService, private router: Router) { }
|
||||
|
||||
@@ -19,9 +21,9 @@ export class ProductComponent implements OnInit {
|
||||
|
||||
getAllProducts(): void {
|
||||
this.productService.getProducts().subscribe((res) => {
|
||||
this.showSpinner = false;
|
||||
this.products = res;
|
||||
console.log(this.products);
|
||||
});
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -10,6 +10,7 @@ import { MatGridListModule } from '@angular/material/grid-list';
|
||||
|
||||
import { ProductComponent } from '../product/product.component';
|
||||
import { ProductDetailComponent } from './product-detail.component';
|
||||
import { LoadSpinnerComponent } from '../load-spinner/load-spinner.component';
|
||||
|
||||
@NgModule({
|
||||
imports: [
|
||||
@@ -23,7 +24,8 @@ import { ProductDetailComponent } from './product-detail.component';
|
||||
],
|
||||
declarations: [
|
||||
ProductComponent,
|
||||
ProductDetailComponent
|
||||
ProductDetailComponent,
|
||||
LoadSpinnerComponent
|
||||
]
|
||||
})
|
||||
export class ProductModule { }
|
||||
|
||||
Reference in New Issue
Block a user