theme-lib
Version:
This is a simple example Angular Library published to npm.
125 lines • 7.36 kB
JavaScript
/**
* @fileoverview added by tsickle
* @suppress {checkTypes,extraRequire,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
*/
/*
* @license
* Copyright Akveo. All Rights Reserved.
* Licensed under the MIT License. See License.txt in the project root for license information.
*/
import { Injectable, Inject } from '@angular/core';
import { NB_DOCUMENT } from '../theme.options';
/*
* Service to control the global page spinner.
*/
export class NbSpinnerService {
/**
* @param {?} document
*/
constructor(document) {
this.document = document;
this.loaders = [];
this.selector = 'nb-global-spinner';
}
/*
* Appends new loader to the list of loader to be completed before
* spinner will be hidden
* @param method Promise<any>
*/
/**
* @param {?} method
* @return {?}
*/
registerLoader(method) {
this.loaders.push(method);
}
/*
* Clears the list of loader
*/
/**
* @return {?}
*/
clear() {
this.loaders = [];
}
/*
* Start the loader process, show spinnder and execute loaders
*/
/**
* @return {?}
*/
load() {
this.showSpinner();
this.executeAll();
}
/**
* @private
* @param {?=} done
* @return {?}
*/
executeAll(done = () => { }) {
Promise.all(this.loaders).then((values) => {
this.hideSpinner();
done.call(null, values);
})
.catch((error) => {
// TODO: Promise.reject
console.error(error);
});
}
// TODO is there any better way of doing this?
/**
* @private
* @return {?}
*/
showSpinner() {
/** @type {?} */
const el = this.getSpinnerElement();
if (el) {
el.style['display'] = 'block';
}
}
/**
* @private
* @return {?}
*/
hideSpinner() {
/** @type {?} */
const el = this.getSpinnerElement();
if (el) {
el.style['display'] = 'none';
}
}
/**
* @private
* @return {?}
*/
getSpinnerElement() {
return this.document.getElementById(this.selector);
}
}
NbSpinnerService.decorators = [
{ type: Injectable }
];
/** @nocollapse */
NbSpinnerService.ctorParameters = () => [
{ type: undefined, decorators: [{ type: Inject, args: [NB_DOCUMENT,] }] }
];
if (false) {
/**
* @type {?}
* @private
*/
NbSpinnerService.prototype.loaders;
/**
* @type {?}
* @private
*/
NbSpinnerService.prototype.selector;
/**
* @type {?}
* @private
*/
NbSpinnerService.prototype.document;
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3Bpbm5lci5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6Im5nOi8vdGhlbWUtbGliLyIsInNvdXJjZXMiOlsibGliL3NlcnZpY2VzL3NwaW5uZXIuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7QUFLQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNuRCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sa0JBQWtCLENBQUM7Ozs7QUFNL0MsTUFBTSxPQUFPLGdCQUFnQjs7OztJQUszQixZQUF5QyxRQUFRO1FBQVIsYUFBUSxHQUFSLFFBQVEsQ0FBQTtRQUh6QyxZQUFPLEdBQW1CLEVBQUUsQ0FBQztRQUM3QixhQUFRLEdBQVcsbUJBQW1CLENBQUM7SUFFSyxDQUFDOzs7Ozs7Ozs7O0lBT3JELGNBQWMsQ0FBQyxNQUFvQjtRQUNqQyxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUM1QixDQUFDOzs7Ozs7O0lBS0QsS0FBSztRQUNILElBQUksQ0FBQyxPQUFPLEdBQUcsRUFBRSxDQUFDO0lBQ3BCLENBQUM7Ozs7Ozs7SUFLRCxJQUFJO1FBQ0YsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO1FBQ25CLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQztJQUNwQixDQUFDOzs7Ozs7SUFFTyxVQUFVLENBQUMsSUFBSSxHQUFHLEdBQUcsRUFBRSxHQUFFLENBQUM7UUFDaEMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsTUFBTSxFQUFFLEVBQUU7WUFDeEMsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO1lBQ25CLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLE1BQU0sQ0FBQyxDQUFDO1FBQzFCLENBQUMsQ0FBQzthQUNDLEtBQUssQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFO1lBQ2YsdUJBQXVCO1lBQ3ZCLE9BQU8sQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDdkIsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDOzs7Ozs7SUFHTyxXQUFXOztjQUNYLEVBQUUsR0FBRyxJQUFJLENBQUMsaUJBQWlCLEVBQUU7UUFDbkMsSUFBSSxFQUFFLEVBQUU7WUFDTixFQUFFLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxHQUFHLE9BQU8sQ0FBQztTQUMvQjtJQUNILENBQUM7Ozs7O0lBRU8sV0FBVzs7Y0FDWCxFQUFFLEdBQUcsSUFBSSxDQUFDLGlCQUFpQixFQUFFO1FBQ25DLElBQUksRUFBRSxFQUFFO1lBQ04sRUFBRSxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUMsR0FBRyxNQUFNLENBQUM7U0FDOUI7SUFDSCxDQUFDOzs7OztJQUVPLGlCQUFpQjtRQUN2QixPQUFPLElBQUksQ0FBQyxRQUFRLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUNyRCxDQUFDOzs7WUE1REYsVUFBVTs7Ozs0Q0FNSSxNQUFNLFNBQUMsV0FBVzs7Ozs7OztJQUgvQixtQ0FBcUM7Ozs7O0lBQ3JDLG9DQUErQzs7Ozs7SUFFbkMsb0NBQXFDIiwic291cmNlc0NvbnRlbnQiOlsiLypcclxuICogQGxpY2Vuc2VcclxuICogQ29weXJpZ2h0IEFrdmVvLiBBbGwgUmlnaHRzIFJlc2VydmVkLlxyXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgTUlUIExpY2Vuc2UuIFNlZSBMaWNlbnNlLnR4dCBpbiB0aGUgcHJvamVjdCByb290IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLlxyXG4gKi9cclxuaW1wb3J0IHsgSW5qZWN0YWJsZSwgSW5qZWN0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IE5CX0RPQ1VNRU5UIH0gZnJvbSAnLi4vdGhlbWUub3B0aW9ucyc7XHJcblxyXG4vKlxyXG4gKiBTZXJ2aWNlIHRvIGNvbnRyb2wgdGhlIGdsb2JhbCBwYWdlIHNwaW5uZXIuXHJcbiAqL1xyXG5ASW5qZWN0YWJsZSgpXHJcbmV4cG9ydCBjbGFzcyBOYlNwaW5uZXJTZXJ2aWNlIHtcclxuXHJcbiAgcHJpdmF0ZSBsb2FkZXJzOiBQcm9taXNlPGFueT5bXSA9IFtdO1xyXG4gIHByaXZhdGUgc2VsZWN0b3I6IHN0cmluZyA9ICduYi1nbG9iYWwtc3Bpbm5lcic7XHJcblxyXG4gIGNvbnN0cnVjdG9yKEBJbmplY3QoTkJfRE9DVU1FTlQpIHByaXZhdGUgZG9jdW1lbnQpIHt9XHJcblxyXG4gIC8qXHJcbiAgICogQXBwZW5kcyBuZXcgbG9hZGVyIHRvIHRoZSBsaXN0IG9mIGxvYWRlciB0byBiZSBjb21wbGV0ZWQgYmVmb3JlXHJcbiAgICogc3Bpbm5lciB3aWxsIGJlIGhpZGRlblxyXG4gICAqIEBwYXJhbSBtZXRob2QgUHJvbWlzZTxhbnk+XHJcbiAgICovXHJcbiAgcmVnaXN0ZXJMb2FkZXIobWV0aG9kOiBQcm9taXNlPGFueT4pOiB2b2lkIHtcclxuICAgIHRoaXMubG9hZGVycy5wdXNoKG1ldGhvZCk7XHJcbiAgfVxyXG5cclxuICAvKlxyXG4gICAqIENsZWFycyB0aGUgbGlzdCBvZiBsb2FkZXJcclxuICAgKi9cclxuICBjbGVhcigpOiB2b2lkIHtcclxuICAgIHRoaXMubG9hZGVycyA9IFtdO1xyXG4gIH1cclxuXHJcbiAgLypcclxuICAgKiBTdGFydCB0aGUgbG9hZGVyIHByb2Nlc3MsIHNob3cgc3Bpbm5kZXIgYW5kIGV4ZWN1dGUgbG9hZGVyc1xyXG4gICAqL1xyXG4gIGxvYWQoKTogdm9pZCB7XHJcbiAgICB0aGlzLnNob3dTcGlubmVyKCk7XHJcbiAgICB0aGlzLmV4ZWN1dGVBbGwoKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgZXhlY3V0ZUFsbChkb25lID0gKCkgPT4ge30pOiB2b2lkIHtcclxuICAgIFByb21pc2UuYWxsKHRoaXMubG9hZGVycykudGhlbigodmFsdWVzKSA9PiB7XHJcbiAgICAgIHRoaXMuaGlkZVNwaW5uZXIoKTtcclxuICAgICAgZG9uZS5jYWxsKG51bGwsIHZhbHVlcyk7XHJcbiAgICB9KVxyXG4gICAgICAuY2F0Y2goKGVycm9yKSA9PiB7XHJcbiAgICAgICAgLy8gVE9ETzogUHJvbWlzZS5yZWplY3RcclxuICAgICAgICBjb25zb2xlLmVycm9yKGVycm9yKTtcclxuICAgICAgfSk7XHJcbiAgfVxyXG5cclxuICAvLyBUT0RPIGlzIHRoZXJlIGFueSBiZXR0ZXIgd2F5IG9mIGRvaW5nIHRoaXM/XHJcbiAgcHJpdmF0ZSBzaG93U3Bpbm5lcigpOiB2b2lkIHtcclxuICAgIGNvbnN0IGVsID0gdGhpcy5nZXRTcGlubmVyRWxlbWVudCgpO1xyXG4gICAgaWYgKGVsKSB7XHJcbiAgICAgIGVsLnN0eWxlWydkaXNwbGF5J10gPSAnYmxvY2snO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBoaWRlU3Bpbm5lcigpOiB2b2lkIHtcclxuICAgIGNvbnN0IGVsID0gdGhpcy5nZXRTcGlubmVyRWxlbWVudCgpO1xyXG4gICAgaWYgKGVsKSB7XHJcbiAgICAgIGVsLnN0eWxlWydkaXNwbGF5J10gPSAnbm9uZSc7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGdldFNwaW5uZXJFbGVtZW50KCkge1xyXG4gICAgcmV0dXJuIHRoaXMuZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGhpcy5zZWxlY3Rvcik7XHJcbiAgfVxyXG59XHJcbiJdfQ==