ems-web-app-loader
Version:
The embedded angular.io component and service expose an interface for rendering a modal overlay and loader animation during server transactions.
117 lines (79 loc) • 4.06 kB
Markdown
# EMS Web Application Components: Loader Animation (spinner or ellipsis)
The Loader Angular.io module is authored for use within web applications developed by [Educational Media Solutions](https://educationalmediasolutions.com).
Find the [web application template source code on GitHub](https://github.com/spencech/ems-web-app-template) to review implementation in context.
Find a [working example of this component here](https://ems-web-app.educationalmediasolutions.com).
The embedded component and service expose an interface for rendering a modal overlay and loader animation during server transactions.
This library was generated with [Angular CLI](https://github.com/angular/angular-cli) version 13.2.0.
## Usage
Module Import:
import { NgModule } from '@angular/core';
import { BrowserModule } from '@angular/platform-browser';
import { CommonModule } from '@angular/common';
import { AppComponent } from './app.component';
import { LoaderModule, LoaderService } from "ems-web-app-loader"
@NgModule({
declarations: [
AppComponent
],
imports: [
BrowserModule,
CommonModule,
LoaderModule
],
providers: [ LoaderService ],
bootstrap: [ AppComponent ]
})
export class AppModule { }
Usage in component:
import { Component } from '@angular/core';
import { LoaderService, LoaderType } from "ems-web-app-loader";
@Component({
selector: 'app-root',
templateUrl: './app.component.html',
styleUrls: ['./app.component.less']
})
export class AppComponent {
public loading: boolean = false;
constructor(private loader: LoaderService) {}
toggleLoader() {
this.loading = !this.loading;
this.loader.load(this.loading, LoaderType.Ellipsis);
}
showLoader() {
this.loader.show();
}
hideLoader() {
this.loader.hide();
}
}
Note that the loader type defaults to Loader.Spinner. If you want to use the ellipsis loader, you must call the load method at least once (as pictured above.) Subsequent show/hide calls will preserve this configuration
Supported loader types:
LoaderType.Spinner
LoaderType.Ellipsis
Service interface:
load: (show: boolean, type: LoaderType = LoaderType.Spinner) => void; (initializes loader)
show: () => void; shows default or previously initialized loader
hide: () => void; hides default or previously initialized loader
Template Usage (settings for spinner):
<button click="showLoader()">Load</button>
<loader [transition-speed]="2000" [animation-duration]="1000" [z-index]="100" [size]="200" color="#0099ff" background="rgba(0,255,0,0.25)" ></loader>
Template Usage (settings for ellipsis):
<loader [transition-speed]="2000" [animation-duration]="600" [z-index]="100" [size]="13" color="#0099ff" background="rgba(0,255,0,0.25)" ></loader>
Template attributes with defaults:
"transition-speed": number = 1000; // speed of fade in / fade out
"animation-duration": number = 1000; //larger numbers slow down animation
"size": number = 200; //in px ; 200 is good for spinner, 14 good for ellipsis
"color": string = "#001F39"; //loader color
"background": string = "rgba(255,255,255,0.25)"; //modal background
"z-index": number = 10000;
## Code scaffolding
Run `ng generate component component-name --project loader` to generate a new component. You can also use `ng generate directive|pipe|service|class|guard|interface|enum|module --project loader`.
> Note: Don't forget to add `--project loader` or else it will be added to the default project in your `angular.json` file.
## Build
Run `ng build loader` to build the project. The build artifacts will be stored in the `dist/` directory.
## Publishing
After building your library with `ng build loader`, go to the dist folder `cd dist/loader` and run `npm publish`.
## Running unit tests
Run `ng test loader` to execute the unit tests via [Karma](https://karma-runner.github.io).
## Further help
To get more help on the Angular CLI use `ng help` or go check out the [Angular CLI Overview and Command Reference](https://angular.io/cli) page.