Skip to content

Instantly share code, notes, and snippets.

@whisher
Created July 25, 2018 17:45
Show Gist options
  • Save whisher/947293d58051fb00b71e0a566af4b8ba to your computer and use it in GitHub Desktop.
Save whisher/947293d58051fb00b71e0a566af4b8ba to your computer and use it in GitHub Desktop.
//Component
import { Component, Input} from '@angular/core';
@Component({
selector: 'iwdf-ui-button-spinner',
template: `
<ng-container *ngIf="has; else elseTemplate">
<div class="loader">Loading...</div>
</ng-container>
<ng-template #elseTemplate>
<span>{{value}}</span>
</ng-template>
`,
styleUrls: ['./button-spinner.component.scss']
})
export class IwdfButtonSpinnerComponent {
@Input() value: string;
@Input() has: boolean;
}
//Scss
.loader,
.loader::before,
.loader::after {
width: 1.5em;
height: 1.5em;
border-radius: 50%;
animation: buttonSpinner 1.8s infinite ease-in-out;
animation-fill-mode: both;
}
.loader {
position: relative;
top: -1.6em;
margin: 0 auto;
font-size: 8px;
color: inherit;
text-indent: -9999em;
transform: translateZ(0);
animation-delay: -.16s;
}
.loader::before,
.loader::after {
position: absolute;
top: 0;
content: "";
}
.loader::before {
left: -2.5em;
animation-delay: -.32s;
}
.loader::after {
left: 2.5em;
}
@keyframes buttonSpinner {
0%,
80%,
100% {
box-shadow: 0 1.5em 0 -.8em;
}
40% {
box-shadow: 0 1.5em 0 0;
}
}
//Usage
<button class="btn btn-primary btn-lg btn-block"
type="submit" [disabled]="frm.invalid">
<iwdf-ui-button-spinner
[value]="'Login'"
[has]="hasSubmitted"></iwdf-ui-button-spinner>
</button>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment