@hardikdabhi/ngx-spinner
Version:
Customizable loading spinner for Angular (version ng 5 and above)
63 lines (56 loc) • 2.85 kB
text/typescript
import { Directive, Input, ViewContainerRef, ComponentFactoryResolver, ComponentRef } from '@angular/core';
import { ISpinnerConfig, SPINNER_ANIMATIONS, ISpinnerAnimation } from './ngx-spinner.types';
import { BlinkComponent } from './blink/blink.component';
import { FbCardComponent } from './fb-card/fb-card.component';
import { PlateRotateComponent } from './plate-rotate/plate-rotate.component';
import { DoubleBounceComponent } from './double-bounce/double-bounce.component';
import { FoldingCubeComponent } from './folding-cube/folding-cube.component';
import { BarsComponent } from './bars/bars.component';
import { RotatingDotsComponent } from './rotating-dots/rotating-dots.component';
import { HorizontalBounceComponent } from './horizontal-bounce/horizontal-bounce.component';
import { Spin1Component } from './spin1/spin1.component';
import { Spin2Component } from './spin2/spin2.component';
import { Spin3Component } from './spin3/spin3.component';
import { Spin4Component } from './spin4/spin4.component';
({
selector: '[spinner-animation]'
})
export class SpinnerAnimationDirective {
constructor(private viewContainerRef: ViewContainerRef, private componentFactoryResolver: ComponentFactoryResolver) { }
('spinner-animation')
set config(conf: ISpinnerConfig){
this.init(conf);
}
private init(conf: ISpinnerConfig){
let componenet = BlinkComponent;
if(conf.animation==SPINNER_ANIMATIONS.blink){ // blink
componenet = BlinkComponent;
} else if(conf.animation==SPINNER_ANIMATIONS.fb_card) { // fb_card
componenet = FbCardComponent;
} else if(conf.animation==SPINNER_ANIMATIONS.plate_rotate) {
componenet = PlateRotateComponent;
} else if(conf.animation==SPINNER_ANIMATIONS.double_bounce) {
componenet = DoubleBounceComponent;
} else if(conf.animation==SPINNER_ANIMATIONS.folding_cube) {
componenet = FoldingCubeComponent;
} else if(conf.animation==SPINNER_ANIMATIONS.bars) {
componenet = BarsComponent;
} else if(conf.animation==SPINNER_ANIMATIONS.rotating_dots) {
componenet = RotatingDotsComponent;
} else if(conf.animation==SPINNER_ANIMATIONS.horizontal_bounce) {
componenet = HorizontalBounceComponent;
} else if(conf.animation==SPINNER_ANIMATIONS.spin_1) {
componenet = Spin1Component;
} else if(conf.animation==SPINNER_ANIMATIONS.spin_2) {
componenet = Spin2Component;
} else if(conf.animation==SPINNER_ANIMATIONS.spin_3) {
componenet = Spin3Component;
} /* else if(conf.animation==SPINNER_ANIMATIONS.spin_4) {
componenet = Spin4Component;
} */
let componentFactory = this.componentFactoryResolver.resolveComponentFactory(componenet);
this.viewContainerRef.clear();
let componentRef: ComponentRef<ISpinnerAnimation> = this.viewContainerRef.createComponent(componentFactory);
(componentRef.instance).config = conf;
}
}