projects/i-components/src/lib/components/loading-overlay/loading-overlay.component.ts
Loading overlay component
selector | wm-loading-overlay |
styleUrls | ./loading-overlay.component.scss |
templateUrl | ./loading-overlay.component.html |
Properties |
Inputs |
show | |
Type : boolean
|
|
Default value : true
|
|
Show/Hide the loading overlay |
show |
Default value : true
|
Decorators :
@Input()
|
Show/Hide the loading overlay |
import { Component, Input } from '@angular/core';
/**
* Loading overlay component
*
* @export
* @class LoadingOverlayComponent
*/
@Component({
selector: 'wm-loading-overlay',
templateUrl: './loading-overlay.component.html',
styleUrls: ['./loading-overlay.component.scss'],
})
export class LoadingOverlayComponent {
/**
* Show/Hide the loading overlay
*
* @memberof LoadingOverlayComponent
*/
@Input() show = true;
}
<div class="loading" *ngIf="show">
<div class="lds-roller">
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
</div>
</div>
./loading-overlay.component.scss
.lds-roller {
display: inline-block;
position: relative;
width: 80px;
height: 80px;
}
.lds-roller div {
animation: lds-roller 1.2s cubic-bezier(0.5, 0, 0.5, 1) infinite;
transform-origin: 40px 40px;
}
.lds-roller div:after {
content: ' ';
display: block;
position: absolute;
width: 7px;
height: 7px;
border-radius: 50%;
background: #fff;
margin: -4px 0 0 -4px;
}
.loading {
position: absolute;
top: 0;
left: 0;
width: 100%;
height: 100%;
justify-content: center;
align-items: center;
display: flex;
z-index: 2;
background: rgba(140, 140, 140, 0.5);
}
.lds-roller div:nth-child(1) {
animation-delay: -0.036s;
}
.lds-roller div:nth-child(1):after {
top: 63px;
left: 63px;
}
.lds-roller div:nth-child(2) {
animation-delay: -0.072s;
}
.lds-roller div:nth-child(2):after {
top: 68px;
left: 56px;
}
.lds-roller div:nth-child(3) {
animation-delay: -0.108s;
}
.lds-roller div:nth-child(3):after {
top: 71px;
left: 48px;
}
.lds-roller div:nth-child(4) {
animation-delay: -0.144s;
}
.lds-roller div:nth-child(4):after {
top: 72px;
left: 40px;
}
.lds-roller div:nth-child(5) {
animation-delay: -0.18s;
}
.lds-roller div:nth-child(5):after {
top: 71px;
left: 32px;
}
.lds-roller div:nth-child(6) {
animation-delay: -0.216s;
}
.lds-roller div:nth-child(6):after {
top: 68px;
left: 24px;
}
.lds-roller div:nth-child(7) {
animation-delay: -0.252s;
}
.lds-roller div:nth-child(7):after {
top: 63px;
left: 17px;
}
.lds-roller div:nth-child(8) {
animation-delay: -0.288s;
}
.lds-roller div:nth-child(8):after {
top: 56px;
left: 12px;
}
@keyframes lds-roller {
0% {
transform: rotate(0deg);
}
100% {
transform: rotate(360deg);
}
}